<?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>201655</bug_id>
          
          <creation_ts>2019-09-10 13:42:16 -0700</creation_ts>
          <short_desc>Remove unnecessary abstractions around WebsiteDataStore</short_desc>
          <delta_ts>2019-09-20 17:13:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>annulen</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1569646</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-10 13:42:16 -0700</bug_when>
    <thetext>Remove unnecessary abstractions around WebsiteDataStore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569652</commentid>
    <comment_count>1</comment_count>
      <attachid>378483</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-10 13:47:19 -0700</bug_when>
    <thetext>Created attachment 378483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569655</commentid>
    <comment_count>2</comment_count>
      <attachid>378484</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-10 13:51:46 -0700</bug_when>
    <thetext>Created attachment 378484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569656</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-09-10 13:52:20 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569657</commentid>
    <comment_count>4</comment_count>
      <attachid>378485</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-10 13:59:48 -0700</bug_when>
    <thetext>Created attachment 378485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569658</commentid>
    <comment_count>5</comment_count>
      <attachid>378486</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-10 14:04:35 -0700</bug_when>
    <thetext>Created attachment 378486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569660</commentid>
    <comment_count>6</comment_count>
      <attachid>378487</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-10 14:11:05 -0700</bug_when>
    <thetext>Created attachment 378487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569661</commentid>
    <comment_count>7</comment_count>
      <attachid>378488</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-10 14:14:14 -0700</bug_when>
    <thetext>Created attachment 378488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569667</commentid>
    <comment_count>8</comment_count>
      <attachid>378493</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-10 14:23:45 -0700</bug_when>
    <thetext>Created attachment 378493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569671</commentid>
    <comment_count>9</comment_count>
      <attachid>378494</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-10 14:40:03 -0700</bug_when>
    <thetext>Created attachment 378494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569701</commentid>
    <comment_count>10</comment_count>
      <attachid>378501</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-10 15:40:49 -0700</bug_when>
    <thetext>Created attachment 378501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569702</commentid>
    <comment_count>11</comment_count>
      <attachid>378501</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-10 15:42:48 -0700</bug_when>
    <thetext>Comment on attachment 378501
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:-314
&gt; -static inline Ref&lt;WebsiteDataStoreConfiguration&gt; websiteDataStoreConfigurationForWebProcessPoolConfiguration(const API::ProcessPoolConfiguration&amp; processPoolconfigurarion)

GTK developers:
I think this will not affect anything because the defaults should come from the WebsiteDataStore, but it would probably be worth double checking.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:1450
&gt; -void webkit_web_context_set_disk_cache_directory(WebKitWebContext* context, const char* directory)
&gt; +void webkit_web_context_set_disk_cache_directory(WebKitWebContext*, const char*)

Heads up GTK developers:
I&apos;m cutting off the functionality of this function which has been deprecated for many years, anticipating this move.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569726</commentid>
    <comment_count>12</comment_count>
      <attachid>378501</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-10 16:31:07 -0700</bug_when>
    <thetext>Comment on attachment 378501
Patch

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

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:-888
&gt; -    if (parameters.applicationCacheFlatFileSubdirectoryName.isEmpty())

This needs a default on the WebsiteDataStoreConfiguration to maintain existing behavior and continue to pass the appcache video tests.  Uploading what I believe will be the last patch needed...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569727</commentid>
    <comment_count>13</comment_count>
      <attachid>378509</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-10 16:31:55 -0700</bug_when>
    <thetext>Created attachment 378509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569806</commentid>
    <comment_count>14</comment_count>
      <attachid>378529</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-10 19:29:10 -0700</bug_when>
    <thetext>Created attachment 378529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569826</commentid>
    <comment_count>15</comment_count>
      <attachid>378537</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-10 21:24:07 -0700</bug_when>
    <thetext>Created attachment 378537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569889</commentid>
    <comment_count>16</comment_count>
      <attachid>378537</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-11 03:14:55 -0700</bug_when>
    <thetext>Comment on attachment 378537
Patch

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

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:547
&gt; +    if (!m_websiteDataStore &amp;&amp; WebsiteDataStore::defaultDataStoreExists()) {

This check seems strange given we have above an if(m_websiteDataStore) check.
Also it is IDB-support conditional.
Should we move that check at the beginning of WebProcessPool::ensureNetworkProcess?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569899</commentid>
    <comment_count>17</comment_count>
      <attachid>378554</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-11 03:41:50 -0700</bug_when>
    <thetext>Created attachment 378554
Updated patch with GLib API fixes

Updated patch to fix GTK and WPE ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569930</commentid>
    <comment_count>18</comment_count>
      <attachid>378554</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-11 08:31:47 -0700</bug_when>
    <thetext>Comment on attachment 378554
Updated patch with GLib API fixes

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

r=me

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:106
&gt; +    explicit WebsiteDataStore(Ref&lt;WebsiteDataStoreConfiguration&gt;&amp;&amp;, PAL::SessionID);

explicit is not needed.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:305
&gt; +    enum ShouldCreateDirectory { CreateDirectory, DontCreateDirectory };

Could you please use an enum class ? E.g. enum class ShouldCreateDirectory { No, Yes };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569949</commentid>
    <comment_count>19</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-11 09:37:59 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #16)
&gt; Comment on attachment 378537 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=378537&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebProcessPool.cpp:547
&gt; &gt; +    if (!m_websiteDataStore &amp;&amp; WebsiteDataStore::defaultDataStoreExists()) {
&gt; 
&gt; This check seems strange given we have above an if(m_websiteDataStore) check.
&gt; Also it is IDB-support conditional.
&gt; Should we move that check at the beginning of
&gt; WebProcessPool::ensureNetworkProcess?

All the code that uses m_websiteDataStore will be seriously refactored soon.

http://trac.webkit.org/r249768</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569950</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-11 09:38:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/55263711&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569979</commentid>
    <comment_count>21</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-09-11 14:27:24 -0700</bug_when>
    <thetext>The following API tests are failing an assertion after this change:

TestWebKitAPI.Coding.WKWebsiteDataStore_Default
TestWebKitAPI.Coding.WKWebsiteDataStore_NonPersistent
TestWebKitAPI.Coding.WKWebViewConfiguration
TestWebKitAPI.Coding.WKWebView

        ASSERTION FAILED: dataStores().contains(this)
        /Volumes/Data/slave/mojave-debug/build/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm(220) : void WebKit::WebsiteDataStore::platformDestroy()
        1   0x1094131e9 WTFCrash
        2   0x114b2539b WTFCrashWithInfo(int, char const*, char const*, int)
        3   0x11580ae8b WebKit::WebsiteDataStore::platformDestroy()
        4   0x115ac30b8 WebKit::WebsiteDataStore::~WebsiteDataStore()
        5   0x115ac3595 WebKit::WebsiteDataStore::~WebsiteDataStore()
        6   0x1154161ce -[WKWebsiteDataStore dealloc]
        7   0x11541636a -[WKWebsiteDataStore initWithCoder:]
        8   0x7fff39ac7417 _decodeObjectBinary
        9   0x7fff39ac691e _decodeObject
        10  0x7fff39ac681a -[NSKeyedUnarchiver decodeObjectForKey:]
        11  0x7fff39ac6687 -[NSKeyedUnarchiver decodeObjectOfClasses:forKey:]
        12  0x7fff39ac62a2 -[NSCoder(Exceptions) __tryDecodeObjectForKey:error:decodeBlock:]
        13  0x7fff39ac625b -[NSCoder decodeTopLevelObjectOfClasses:forKey:error:]
        14  0x7fff39ac517a +[NSKeyedUnarchiver unarchivedObjectOfClasses:fromData:error:]
        15  0x10759f36b unarchivedObjectOfClassesFromData(NSSet&lt;objc_class*&gt;*, NSData*)
        16  0x1076238bd WTF::RetainPtr&lt;WKWebsiteDataStore&gt; encodeAndDecode&lt;WKWebsiteDataStore&gt;(WKWebsiteDataStore*)
        17  0x1076236b6 Coding_WKWebsiteDataStore_Default_Test::TestBody()
        18  0x107dad45e void testing::internal::HandleSehExceptionsInMethodIfSupported&lt;testing::Test, void&gt;(testing::Test*, void (testing::Test::*)(), char const*)
        19  0x107d7ab5b void testing::internal::HandleExceptionsInMethodIfSupported&lt;testing::Test, void&gt;(testing::Test*, void (testing::Test::*)(), char const*)
        20  0x107d7aa86 testing::Test::Run()
        21  0x107d7bc95 testing::TestInfo::Run()
        22  0x107d7cb7f testing::TestCase::Run()
        23  0x107d88834 testing::internal::UnitTestImpl::RunAllTests()
        24  0x107db15ee bool testing::internal::HandleSehExceptionsInMethodIfSupported&lt;testing::internal::UnitTestImpl, bool&gt;(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*)
        25  0x107d8830b bool testing::internal::HandleExceptionsInMethodIfSupported&lt;testing::internal::UnitTestImpl, bool&gt;(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*)
        26  0x107d881e0 testing::UnitTest::Run()
        27  0x107b99011 RUN_ALL_TESTS()
        28  0x107b98fa1 TestWebKitAPI::TestsController::run(int, char**)
        29  0x107d4572e main
        30  0x7fff637b53d5 start
        31  0x2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569980</commentid>
    <comment_count>22</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-09-11 14:28:24 -0700</bug_when>
    <thetext>Also, the perf bot has 201 tests failing with this in the output:
2019-09-11 12:42:29.146 com.apple.WebKit.Networking.Development[36125:12688643] NetworkStorageDB:_openDBReadConnections: failed to open read connection to DB @ /Users/buildbot/Library/Caches/com.apple.WebKit.Networking/Cache.db.  Error=14. Cause=unable to open database file
2019-09-11 12:42:29.146 com.apple.WebKit.Networking.Development[36125:12688643] CacheRead: unable to open cache files in /Users/buildbot/Library/Caches/com.apple.WebKit.Networking
2019-09-11 12:42:29.147 com.apple.WebKit.Networking.Development[36125:12688643] Failed to obtain sandbox extension for path=/Users/buildbot/Library/Caches/com.apple.WebKit.Networking. Errno:1


https://build.webkit.org/builders/Apple%20High%20Sierra%20Release%20WK2%20%28Perf%29/builds/2400</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569991</commentid>
    <comment_count>23</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-09-11 14:44:01 -0700</bug_when>
    <thetext>Reverted r249768 for reason:

Caused 4 API tests to assert, perf test failures, and layout test crashes under ASan

Committed r249778: &lt;https://trac.webkit.org/changeset/249778&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569992</commentid>
    <comment_count>24</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-09-11 14:44:28 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #23)
&gt; Reverted r249768 for reason:
&gt; 
&gt; Caused 4 API tests to assert, perf test failures, and layout test crashes
&gt; under ASan
&gt; 
&gt; Committed r249778: &lt;https://trac.webkit.org/changeset/249778&gt;
ASan crash details in radar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572937</commentid>
    <comment_count>25</comment_count>
      <attachid>379279</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-20 16:12:16 -0700</bug_when>
    <thetext>Created attachment 379279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572938</commentid>
    <comment_count>26</comment_count>
      <attachid>379280</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-20 16:20:44 -0700</bug_when>
    <thetext>Created attachment 379280
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572944</commentid>
    <comment_count>27</comment_count>
      <attachid>379282</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-20 16:35:01 -0700</bug_when>
    <thetext>Created attachment 379282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572963</commentid>
    <comment_count>28</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-20 17:13:40 -0700</bug_when>
    <thetext>http://trac.webkit.org/r250169</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378483</attachid>
            <date>2019-09-10 13:47:19 -0700</date>
            <delta_ts>2019-09-10 13:51:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201655-20190910134718.patch</filename>
            <type>text/plain</type>
            <size>186451</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2NyBAQAorMjAxOS0wOS0xMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB1bm5l
Y2Vzc2FyeSBhYnN0cmFjdGlvbnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBmb3Vy
IHRoaW5ncyB0byBzaW1wbGlmeSBXZWJzaXRlRGF0YVN0b3JlIGNvZGU6CisgICAgICAgIDEuIEl0
IHJlbW92ZXMgQVBJOjpXZWJzaXRlRGF0YVN0b3JlLCB3aGljaCB3YXMganVzdCBhbiB1bm5lY2Vz
c2FyeSB3cmFwcGVyIGFyb3VuZCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUuCisgICAgICAgIDIu
IEl0IGRlcHJlY2F0ZXMgdGhlIHVudXNlZCBhbGlhc2VzIG9mIFdlYnNpdGVEYXRhU3RvcmUsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYW5kIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZgorICAgICAgICAzLiBJdCByZW1vdmVzIHRoZSB1bnVzZWQgQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHByb3BlcnRpZXMgdGhhdCBoYXZlIGJlZW4gbW92ZWQgdG8gV2Vic2l0ZURhdGFTdG9y
ZS4KKyAgICAgICAgNC4gSXQgbWFrZXMgV0tXZWJzaXRlRGF0YVN0b3JlLl9kZWxlZ2F0ZSB3ZWFr
IGluc3RlYWQgb2Ygc3Ryb25nLCBhcyBhbHJlYWR5IGFubm90YXRlZCBpbiBXS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZSBpbiBiZWhh
dmlvciBmcm9tIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZToKKyAg
ICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAg
ICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tp
ZVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6CisgICAg
ICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURh
dGFTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
RGF0YVN0b3JlLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
UG9saWNpZXMuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlUG9saWNpZXM6OmRhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5zKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJEZWxldGVBbGxFbnRyaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
UG9saWN5TGlzdGVuZXIuY3BwOgorICAgICAgICAodXNlV2l0aFBvbGljaWVzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCk6CisgICAgICAgIChXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KToKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAoV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLUmVzb3VyY2VDYWNo
ZU1hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENh
Y2hlT3JpZ2lucyk6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZv
ck9yaWdpbik6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFs
bE9yaWdpbnMpOgorICAgICAgICAodG9XZWJzaXRlRGF0YVR5cGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdl
dERlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlTm9u
UGVyc2lzdGVudERhdGFTdG9yZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVX
aXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29v
a2llU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZVdpdGhDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RT
ZWVuKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVBy
ZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKToKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSk6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5n
VGVzdCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hvdWxkQ2xh
c3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzTWF4U3RhdGlzdGljc0VudHJpZXMpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1BydW5lRW50cmllc0Rvd25Ubyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9u
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGb3JPcmlnaW4p
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnMpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW4pOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmln
aW5TdG9yYWdlUXVvdGEpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdKToK
KyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdKToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIGh0dHBDb29raWVTdG9yZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6bW9kaWZpZWRTaW5jZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOmZv
ckRhdGFSZWNvcmRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgX2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKToKKyAgICAgICAgKCtbV0tXZWJzaXRl
RGF0YVN0b3JlIF9kZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZ10pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3aXRoT3B0aW9u
czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Blck9yaWdpblN0b3Jh
Z2VRdW90YV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFBlck9yaWdpblN0
b3JhZ2VRdW90YTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRDYWNoZVN0
b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOl0pOgor
ICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcl0p
OgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldEFsbG93c0NlbGx1bGFyQWNjZXNz
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93c0NlbGx1bGFyQWNjZXNz
XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJveHlDb25maWd1cmF0aW9u
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFNvdXJj
ZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXI6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0QWxsb3dzVExTRmFs
bGJhY2s6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dzVExTRmFsbGJh
Y2tdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm94eUNvbmZpZ3VyYXRpb25d
KToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zv
cjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9z
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRJc1ByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERv
bWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3Jl
IF9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOl0pOgorICAgICAgICAoLVtXS1dlYnNp
dGVEYXRhU3RvcmUgX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyXSk6CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHNldF9kZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAg
ICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29y
a1Byb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ondl
YnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bV93ZWJQcm9jZXNzQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRl
bnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJt
ZWRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp0ZW1w
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxEZWZhdWx0RGF0
YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHRE
YXRhU3RvcmVGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2wgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAg
ICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6
IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRIU1RTRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Ondl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOS0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEhhbmdzIG9uIFN3aXNz
LmNvbSBkdWUgdG8gdGhlIHdlYiBwcm9jZXNzIGJlaW5nIGJsb2NrZWQgb24gU3RvcmFnZUFyZWFN
YXA6OkxvYWRWYWx1ZXNJZk5lZWRlZApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCShyZXZp
c2lvbiAyNDk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAg
ICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAotICAgIFVJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAogICAgIFVJ
UHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcApJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAyNDk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5E
IFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAot
ICAgIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKIAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVy
V2luLmNwcApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDk2NzEpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDYgQEAgVUlQcm9j
ZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVu
dFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElVc2VyU3R5bGVTaGVldC5jcHAKLVVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElXaW5kb3dGZWF0dXJlcy5jcHAKIApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2
aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yNzQsNyArMjc0LDYgQEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubQogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNv
Y29hLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCi1VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9MZWdhY3lCdW5kbGVGb3JDbGFzcy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0
dHJpYnV0ZWRTdHJpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3Qu
bW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAkocmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dl
YktpdC9Tb3VyY2VzR1RLLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw2IEBAIFVJ
UHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9n
dGsvV0tWaWV3LmNwcAogCiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVz
dC5jcHAgQG5vLXVuaWZ5CkBAIC0yMzIsNiArMjMxLDcgQEAgVUlQcm9jZXNzL2NhaXJvL0JhY2tp
bmdTdG9yZUNhaXJvLmNwcCBAbgogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcAogVUlQcm9jZXNzL2dzdHJlYW1lci9X
ZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHJldmlzaW9u
IDI0OTY3MSkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTExNCw3ICsxMTQsNiBAQCBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMu
Y3BwCiBVSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKIAogVUlQcm9jZXNzL0FQSS9nbGli
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlR0xpYi5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJ
L2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXBwbGljYXRpb25JbmZvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwIEBuby11bmlmeQpAQCAtMTkyLDYgKzE5MSw3IEBA
IFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3YKIAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5
R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5p
ZnkKIAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKIFVJ
UHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5LmNwcAkocmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJu
aW5nLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNDk2NzEpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNyAr
NDE2LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgICwg
bV9wcmVmZXJlbmNlcygqbV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpKQogICAgICwgbV91
c2VyQ29udGVudENvbnRyb2xsZXIoKm1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRl
ZExpbmtTdG9yZSgpKQotICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+
d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCisgICAgLCBtX3dlYnNpdGVE
YXRhU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKQogICAgICwgbV91
c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgeyBtX2NvbmZpZ3VyYXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5KCkgfQogICAgICwgbV90cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZp
Z3VyYXRpb24tPnRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCkBAIC0y
ODY3LDggKzI4NjcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9s
CiAgICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gZGF0YTsKICAgICBpZiAocG9saWNp
ZXMpIHsKICAgICAgICAgZGF0YSA9IHBvbGljaWVzLT5kYXRhKCk7Ci0gICAgICAgIGlmIChwb2xp
Y2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpICYmICZwb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgp
LT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSkgewotICAgICAg
ICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCktPndl
YnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAgaWYgKHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3Jl
KCkgJiYgcG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlLnB0
cigpKSB7CisgICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gKnBvbGljaWVzLT53ZWJzaXRl
RGF0YVN0b3JlKCk7CiAgICAgICAgICAgICBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24g
MjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDQsOCArMjQ0LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nl
c3NQb29sKEFQSTo6UHJvYwogICAgICAgICBQcm9jZXNzOjpzZXRJZGVudGlmaWVyKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKICAgICB9KTsKIAotICAgIGlmICghbV93
ZWJzaXRlRGF0YVN0b3JlICYmIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZUV4aXN0cygpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSAm
JiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCisgICAgICAgIG1f
d2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsK
IAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV9jb25maWd1cmF0aW9uLT5hbHdheXNSZXZhbGlk
YXRlZFVSTFNjaGVtZXMoKSkKICAgICAgICAgbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2
YWxpZGF0ZWQuYWRkKHNjaGVtZSk7CkBAIC00ODMsMTQgKzQ4MywxNCBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKLSAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZW5kaW5nQ29va2ll
cyA9IGNvcHlUb1ZlY3RvcihtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5w
ZW5kaW5nQ29va2llcygpKTsKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuY2xlYXJQZW5kaW5nQ29va2llcygpOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1
bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fd2Vi
c2l0ZURhdGFTdG9yZS0+cGVuZGluZ0Nvb2tpZXMoKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFT
dG9yZS0+Y2xlYXJQZW5kaW5nQ29va2llcygpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAg
ICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyKCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNr
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJh
Y2soKSA/IEFsbG93c1RMU0ZhbGxiYWNrOjpZZXMgOiBBbGxvd3NUTFNGYWxsYmFjazo6Tm87Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IG1fd2Vic2l0
ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9IG1fd2Vic2l0ZURh
dGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNrID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5hbGxvd3NUTFNG
YWxsYmFjaygpID8gQWxsb3dzVExTRmFsbGJhY2s6OlllcyA6IEFsbG93c1RMU0ZhbGxiYWNrOjpO
bzsKICNlbmRpZgotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5uZXR3b3JraW5nSGFzQmVndW4oKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3
b3JraW5nSGFzQmVndW4oKTsKICAgICB9CiAKICAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBj
YWNoZU1vZGVsKCk7CkBAIC01MDIsOSArNTAyLDYgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2Vi
UHJvY2Vzc1Bvb2w6OmVucwogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV91cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scykKICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVz
UmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKIAotICAgIHBhcmFt
ZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5kaXNrQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHko
KSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRpc2tDYWNo
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BF
Q1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24gPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNo
ZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQoKTsKICNlbmRpZgpAQCAtNTQxLDIzICs1Mzgs
MTEgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgIHBhcmFt
ZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkID0gY29weVRvVmVjdG9yKG1f
c2NoZW1lc1RvUmVnaXN0ZXJBc0NPUlNFbmFibGVkKTsKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVt
ZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCA9IGNvcHlUb1ZlY3Rvciht
X3NjaGVtZXNUb1JlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCk7CiAKLSNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICAvLyAqKioqKioqKioKLSAgICAvLyBJTVBPUlRB
TlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0
YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBB
cHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKLSAgICAvLyAqKioqKioqKioKLSAgICBw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeSA9IG1fY29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAg
ICBpZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygp
LmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKLSAgICAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVs
dERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU3ltTGlua0ZvckZpbGVVcGdyYWRlKHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5KTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChtX3dl
YnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJl
c29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgICAgICBwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPnJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAg
IGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAg
ICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSAgQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpOworICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkgPSAgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5LCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogCiAgICAgaWYgKCFtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZS5p
c0VtcHR5KCkpCkBAIC01NjYsMTYgKzU1MSwxNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQ
cm9jZXNzUG9vbDo6ZW5zCiAgICAgcGFyYW1ldGVycy5zaG91bGREaXNhYmxlU2VydmljZVdvcmtl
clByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclBy
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5OwogI2VuZGlmCiAKLSAgICBhdXRvIGxvY2FsU3RvcmFnZURp
cmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBudWxsU3RyaW5n
KCk7CisgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUg
PyBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBu
dWxsU3RyaW5nKCk7CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpOworICAgICAgICBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBs
b2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5k
ZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwor
ICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5yZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKICAg
ICBpZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0g
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogCiAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFt
ZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCkBAIC02MDEsMTcgKzU4NiwxNyBAQCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgfSBlbHNlIGlmICht
X3dlYnNpdGVEYXRhU3RvcmUpIHsKICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgICAgICBlbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkuaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygpOworICAgICAg
ICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5oYXNTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKCk7CiAjZW5kaWYKICAgICAg
ICAgaWYgKGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKLSAgICAgICAgICAgIGF1dG8g
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKKyAgICAgICAg
ICAgIGF1dG8gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5w
YXJhbWV0ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzOwogICAgICAgICAgICAgc2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNsdWRl
TG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgICAgICAgICAgZW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5l
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAgICAgICAgICAgbWFudWFs
UHJldmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKLSAgICAgICAg
cGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVv
dGEgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZXJPcmlnaW5TdG9y
YWdlUXVvdGEoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOworICAg
ICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlck9yaWdpblN0b3Jh
Z2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0
eU9yaWdpblN0b3JhZ2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyVGhpcmRQYXJ0eU9y
aWdpblN0b3JhZ2VRdW90YSgpOwogICAgIH0KIAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNzAyLDggKzY4
Nyw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnQKIAogICAgIGlm
ICghd2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkK
LSAgICAgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwotICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gJm1f
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICAgICAgbV93ZWJz
aXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OworICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOwog
ICAgIH0KIAogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQpAQCAt
Nzk1LDEyICs3ODAsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdl
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygp
CiB7CiAgICAgbV9yZXNvbHZlZFBhdGhzLmluamVjdGVkQnVuZGxlUGF0aCA9IHJlc29sdmVQYXRo
Rm9yU2FuZGJveEV4dGVuc2lvbihpbmplY3RlZEJ1bmRsZVBhdGgoKSk7Ci0gICAgbV9yZXNvbHZl
ZFBhdGhzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdy
aXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLndlYlNRTERhdGFiYXNl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAg
ICBtX3Jlc29sdmVkUGF0aHMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVS
ZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVk
aWFDYWNoZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwot
ICAgIG1fcmVzb2x2ZWRQYXRocy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRp
b24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOwotCiAgICAgbV9yZXNvbHZlZFBhdGhz
LmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnJlc2VydmVDYXBhY2l0
eShtX2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkuc2l6
ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBtX2NvbmZpZ3VyYXRpb24tPmFkZGl0
aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkpCiAgICAgICAgIG1fcmVzb2x2ZWRQYXRocy5h
ZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy51bmNoZWNrZWRBcHBlbmQo
cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGguZGF0YSgpKSk7CkBAIC04MjksNyAr
ODA4LDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OgogI2lmIFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIC8vIEluIHBsYXRmb3JtcyB1c2luZyBC
dWJibGV3cmFwIGZvciBzYW5kYm94aW5nLCBwcmV3YXJtZWQgcHJvY2VzcyBpcyBsYXVuY2hlZCB1
c2luZyB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlLAogICAgIC8v
IHNvIHdlIGRvbid0IHVzZSBpdCBpbiBjYXNlIG9mIHVzaW5nIGEgZGlmZmVyZW50IFdlYnNpdGVE
YXRhU3RvcmUuCi0gICAgaWYgKG1fc2FuZGJveEVuYWJsZWQgJiYgbV93ZWJzaXRlRGF0YVN0b3Jl
ICYmICZtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURh
dGFTdG9yZSkKKyAgICBpZiAobV9zYW5kYm94RW5hYmxlZCAmJiBtX3dlYnNpdGVEYXRhU3RvcmUg
JiYgbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogCkBAIC04NzcsOCArODU2LDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2VuZFdlYlByb2Nlc3NEYXRhUwogICAgIGlmICghcGFyYW1ldGVycy5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFt
ZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgcGFy
YW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gd2Vic2l0
ZURhdGFTdG9yZS5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCk7Ci0g
ICAgaWYgKHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZS5pc0VtcHR5KCkpCi0gICAgICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRG
aWxlU3ViZGlyZWN0b3J5TmFtZSgpOwogCiAgICAgcGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSgpOwog
ICAgIGlmIChwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKQEAg
LTEwOTksNyArMTA3Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRGaW5pc2hM
YXUKICAgICBtX2Nvbm5lY3Rpb25DbGllbnQuZGlkQ3JlYXRlQ29ubmVjdGlvbih0aGlzLCBwcm9j
ZXNzLT53ZWJDb25uZWN0aW9uKCkpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAg
ICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGlkQ3JlYXRlTmV0
d29ya1Byb2Nlc3MoKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kaWRDcmVhdGVOZXR3
b3JrUHJvY2VzcygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vz
cyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCkBAIC0xMTc4LDcgKzExNTUsNyBAQCBXZWJQcm9j
ZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzCiAgICAgICAgIHJldHVybiBjcmVhdGVO
ZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIGJvb2wgbXVzdE1hdGNoRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gJkFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
Ym9vbCBtdXN0TWF0Y2hEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwogI2Vsc2UKICAgICBib29sIG11c3RNYXRjaERhdGFTdG9y
ZSA9IGZhbHNlOwogI2VuZGlmCkBAIC0xMjEyLDcgKzExODksNyBAQCBSZWY8V2ViUGFnZVByb3h5
PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAgICAgIC8vIFdlIHRyeSB0byBhdm9pZCBjcmVh
dGluZyB0aGUgZGVmYXVsdCBkYXRhIHN0b3JlIGFzIGxvbmcgYXMgcG9zc2libGUuCiAgICAgICAg
IC8vIEJ1dCBpZiB0aGVyZSBpcyBhbiBhdHRlbXB0IHRvIGNyZWF0ZSBhIHdlYiBwYWdlIHdpdGhv
dXQgYW55IHNwZWNpZmllZCBkYXRhIHN0b3JlLCB0aGVuIHdlIGhhdmUgdG8gY3JlYXRlIGl0Lgog
ICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgICAgIG1fd2Vic2l0ZURh
dGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OworICAgICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwogCiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRX
ZWJzaXRlRGF0YVN0b3JlKG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSk7CiAgICAgfQpAQCAtMTIy
Myw4ICsxMjAwLDggQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZQog
ICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdl
IHZpYSB3aW5kb3cub3BlbigpLgogICAgICAgICBwcm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9u
LT5yZWxhdGVkUGFnZSgpLT5lbnN1cmVSdW5uaW5nUHJvY2VzcygpOwogICAgICAgICAvLyBXZSBk
byBub3Qgc3VwcG9ydCBzZXZlcmFsIFdlYnNpdGVEYXRhU3RvcmVzIHNoYXJpbmcgYSBzaW5nbGUg
cHJvY2Vzcy4KLSAgICAgICAgQVNTRVJUKHByb2Nlc3MuZ2V0KCkgPT0gbV9kdW1teVByb2Nlc3NQ
cm94eSB8fCAmcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURh
dGFTdG9yZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwotICAgICAgICBBU1NF
UlQoJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkg
PT0gJnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3Rv
cmUoKSk7CisgICAgICAgIEFTU0VSVChwcm9jZXNzLmdldCgpID09IG1fZHVtbXlQcm9jZXNzUHJv
eHkgfHwgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmcHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgQVNTRVJUKCZwYWdlQ29uZmlndXJhdGlvbi0+
cmVsYXRlZFBhZ2UoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHBhZ2VDb25maWd1cmF0aW9uLT53
ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIH0gZWxzZSBpZiAoIW1faXNEZWxheWVkV2ViUHJvY2Vz
c0xhdW5jaERpc2FibGVkKSB7CiAgICAgICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwgd2UgZGVs
YXkgcHJvY2VzcyBsYXVuY2ggdW50aWwgc29tZXRoaW5nIGlzIGFjdHVhbGx5IGxvYWRlZCBpbiB0
aGUgcGFnZS4KICAgICAgICAgaWYgKCFtX2R1bW15UHJvY2Vzc1Byb3h5KSB7CkBAIC0xMjM0LDcg
KzEyMTEsNyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAg
ICAgIH0KICAgICAgICAgcHJvY2VzcyA9IG1fZHVtbXlQcm9jZXNzUHJveHk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIHByb2Nlc3MgPSAmcHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHBhZ2VDb25m
aWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSwgbnVsbHB0
ciwgeyB9KTsKKyAgICAgICAgcHJvY2VzcyA9ICZwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4o
KnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCksIG51bGxwdHIsIHsgfSk7CiAK
ICAgICBBU1NFUlQocHJvY2Vzcyk7CiAKQEAgLTEyODQsNyArMTI2MSw3IEBAIGJvb2wgV2ViUHJv
Y2Vzc1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmluZyBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlv
bigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgICAgIHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KCk7CiAKICAgICByZXR1cm4gbV9tYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzLmVu
c3VyZShzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBbJl0gewogICAgICAgICAv
LyBGSVhNRTogTWFrZSB0aGlzIGNvbXB1dGF0aW9uIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI0
OTY3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJI
aWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyLmgiCkBAIC00NCw2ICs0Myw3
IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2
aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBAIC0yMDIsOCAr
MjAyLDggQEAgcHVibGljOgogICAgIC8vIERpc2Nvbm5lY3QgdGhlIHByb2Nlc3MgZnJvbSB0aGUg
Y29udGV4dC4KICAgICB2b2lkIGRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSopOwog
Ci0gICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRQcmltYXJ5RGF0
YVN0b3JlKEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKSB7IG1fd2Vic2l0ZURhdGFT
dG9yZSA9ICZkYXRhU3RvcmU7IH0KKyAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0
b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRQcmltYXJ5RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkgeyBtX3dl
YnNpdGVEYXRhU3RvcmUgPSAmZGF0YVN0b3JlOyB9CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBj
cmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CiAKQEAgLTY3Miw3ICs2NzIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tZW1vcnlTYW1wbGVy
RW5hYmxlZCB7IGZhbHNlIH07CiAgICAgZG91YmxlIG1fbWVtb3J5U2FtcGxlckludGVydmFsIHsg
MTQwMC4wIH07CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVE
YXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9y
ZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgUmVmUHRyPFdlYkNvbnRleHRT
dXBwbGVtZW50PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IFdlYkNvbnRleHRTdXBwbGVtZW50TWFw
OwogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVudHM7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAko
cmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBD
b29raWVTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKIAotI2luY2x1ZGUg
IkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVT
dG9yZS5oCShyZXZpc2lvbiAyNDk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgZW51
bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludAogbmFtZXNwYWNlIEFQSSB7CiAK
IGNsYXNzIEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyOwotY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKIAogY2xhc3MgSFRUUENvb2tpZVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cAkocmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEyICsxNTEsMTIgQEAg
dm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0VmlzaXRlZExpbmtTdAogICAgIG1fdmlzaXRlZExp
bmtTdG9yZSA9IHZpc2l0ZWRMaW5rU3RvcmU7CiB9CiAKLUFQSTo6V2Vic2l0ZURhdGFTdG9yZSog
UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQorV2Vic2l0ZURhdGFTdG9yZSog
UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIHJldHVybiBtX3dl
YnNpdGVEYXRhU3RvcmUuZ2V0KCk7CiB9CiAKLXZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFdl
YnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQor
dm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNp
dGVEYXRhU3RvcmU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDEyICs0NCwxMiBAQCBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIGNsYXNzIFdlYlByb2Nl
c3NQb29sOwogY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIH0KIAogbmFtZXNwYWNl
IEFQSSB7CiAKIGNsYXNzIEFwcGxpY2F0aW9uTWFuaWZlc3Q7Ci1jbGFzcyBXZWJzaXRlRGF0YVN0
b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogCiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbiA6
IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6UGFnZUNvbmZpZ3VyYXRpb24+IHsKQEAg
LTg0LDggKzg0LDggQEAgcHVibGljOgogICAgIFdlYktpdDo6VmlzaXRlZExpbmtTdG9yZSogdmlz
aXRlZExpbmtTdG9yZSgpOwogICAgIHZvaWQgc2V0VmlzaXRlZExpbmtTdG9yZShXZWJLaXQ6OlZp
c2l0ZWRMaW5rU3RvcmUqKTsKIAotICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3Rv
cmUoKTsKLSAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSopOwor
ICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpOworICAgIHZv
aWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUqKTsKIAogICAg
IFdlYnNpdGVQb2xpY2llcyogZGVmYXVsdFdlYnNpdGVQb2xpY2llcygpIGNvbnN0OwogICAgIHZv
aWQgc2V0RGVmYXVsdFdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXMqKTsKQEAgLTE0NSw3
ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9y
ZWxhdGVkUGFnZTsKICAgICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0
ZWRMaW5rU3RvcmU7CiAKLSAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0
YVN0b3JlOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURh
dGFTdG9yZTsKICAgICBSZWZQdHI8V2Vic2l0ZVBvbGljaWVzPiBtX2RlZmF1bHRXZWJzaXRlUG9s
aWNpZXM7CiAKICAgICBib29sIG1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmUgeyB0cnVlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjQ5Njcx
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKIAotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgor
I2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIEFQSSB7CiAKQEAgLTM2
LDM1ICszNiw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb28KICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOwogfQogCi1S
ZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNy
ZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihjb25zdCBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJiBsZWdhY3lDb25maWd1cmF0aW9uKQotewotICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0K
LSAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsK
LSAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRp
YUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5
KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGxl
Z2FjeUNvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBjb25m
aWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24u
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmRldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBs
ZWdhY3lDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0KLSAgICByZXR1
cm4gY29uZmlndXJhdGlvbjsKLX0KLQogUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKQotICAgIDogbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpCi0gICAg
LCBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkZpbGVzIikKLSAg
ICAsIG1fZGlza0NhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKSkKLSAgICAsIG1fbWVkaWFDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKQotICAgICwgbV9pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fZGV2aWNlSWRI
YXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJ
ZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fd2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkp
Ci0gICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSgpKQogewogfQogCkBAIC03NywxOCArNDksOCBAQCBSZWY8UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgYXV0byBjb3B5ID0gdGhpcy0+Y3Jl
YXRlKCk7CiAKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9kZWw7Ci0g
ICAgY29weS0+bV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX2Rpc2tDYWNoZURpcmVjdG9y
eTsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgPSB0
aGlzLT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQ7Ci0gICAgY29weS0+
bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5OwotICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZSA9IHRoaXMtPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsK
LSAgICBjb3B5LT5tX21lZGlhQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX21lZGlhQ2FjaGVEaXJl
Y3Rvcnk7Ci0gICAgY29weS0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1f
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9pbmplY3RlZEJ1bmRsZVBh
dGggPSB0aGlzLT5tX2luamVjdGVkQnVuZGxlUGF0aDsKLSAgICBjb3B5LT5tX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1f
ZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9kZXZpY2VJZEhhc2hT
YWx0c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeTsKLSAgICBjb3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gdGhp
cy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2NhY2hlUGFydGl0aW9u
ZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBj
b3B5LT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fYWx3YXlzUmV2YWxp
ZGF0ZWRVUkxTY2hlbWVzOwogICAgIGNvcHktPm1fYWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2Vk
UGF0aHMgPSB0aGlzLT5tX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24+IGNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bihjb25zdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJik7CiAKICAgICBl
eHBsaWNpdCBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKQEAgLTc5LDM4ICs3Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJL
aXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsg
fQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkg
eyBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAKLSAgICBjb25zdCBXVEY6OlN0cmluZyYg
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkgeyBtX2FwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9Ci0KLSAgICBj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXREaXNrQ2Fj
aGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSkgeyBtX2Rp
c2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeTsgfQotCi0gICAgY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ2Fj
aGVEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0g
bWVkaWFDYWNoZURpcmVjdG9yeTsgfQotICAgIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNv
bnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBtX2luZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQogICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBt
X2luamVjdGVkQnVuZGxlUGF0aDsgfQogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKGNv
bnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpIHsgbV9pbmplY3RlZEJ1bmRsZVBh
dGggPSBpbmplY3RlZEJ1bmRsZVBhdGg7IH0KIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9y
eTsgfQotICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5n
JiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpIHsgbV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBkZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkSGFzaFNh
bHRzU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnkpIHsgbV9kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBkaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6
U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViU1FM
RGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KGNvbnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkgeyBtX3dlYlNRTERh
dGFiYXNlRGlyZWN0b3J5ID0gd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0
IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
OyB9Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGNvbnN0IFdU
Rjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSB7IG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7
IH0KLQogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzKCkgeyByZXR1cm4gbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsgfQogICAgIHZv
aWQgc2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIGNh
Y2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKSB7IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMg
PSBXVEZNb3ZlKGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKTsgfQogCkBAIC0xODYsMTcgKzE1
NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlv
bkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwg
eyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlByaW1hcnlXZWJCcm93c2VyIH07CiAKLSAgICBXVEY6OlN0
cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9hcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwotICAgIFdURjo6U3RyaW5nIG1f
ZGlza0NhY2hlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fbWVkaWFDYWNoZURpcmVjdG9y
eTsKLSAgICBXVEY6OlN0cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFdU
Rjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwotICAgIFdURjo6U3RyaW5nIG1fbG9jYWxT
dG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7
Ci0gICAgV1RGOjpTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6
U3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBWZWN0b3I8V1RG
OjpTdHJpbmc+IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7CiAgICAgVmVjdG9yPFdURjo6
U3RyaW5nPiBtX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKICAgICBWZWN0b3I8V1RGOjpD
U3RyaW5nPiBtX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAko
cmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVEYXRhU3RvcmUuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTY4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCi0KLSNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgotI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmUuaCIKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLXN0YXRpYyBSZWZQdHI8V2Vic2l0
ZURhdGFTdG9yZT4mIGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKQotewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4+IGdsb2JhbERlZmF1bHREYXRhU3Rv
cmU7Ci0gICAgcmV0dXJuIGdsb2JhbERlZmF1bHREYXRhU3RvcmUuZ2V0KCk7Ci19Ci0KLQotUmVm
PFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKQot
ewotICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKLQotICAgIGF1dG8mIHN0b3JlID0g
Z2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpOwotICAgIGlmICghc3RvcmUpCi0gICAgICAgIHN0b3Jl
ID0gYWRvcHRSZWYobmV3IFdlYnNpdGVEYXRhU3RvcmUoZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwotCi0gICAgcmV0
dXJuICpzdG9yZTsKLX0KLQotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVEZWZhdWx0RGF0
YVN0b3JlRm9yVGVzdGluZygpCi17Ci0gICAgZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpID0gbnVs
bHB0cjsKLX0KLQotYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3Rz
KCkKLXsKLSAgICByZXR1cm4gISFnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCk7Ci19Ci0KLVJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0
YVN0b3JlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlKTsK
LX0KLQotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShSZWY8
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBj
b25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKSk7
Ci19Ci0KLVdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoKQotICAgIDogbV93ZWJz
aXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVu
dCgpKQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICA6IG1fd2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQp
KQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCi17Ci19Ci0K
LUhUVFBDb29raWVTdG9yZSYgV2Vic2l0ZURhdGFTdG9yZTo6aHR0cENvb2tpZVN0b3JlKCkKLXsK
LSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5jb29raWVTdG9yZSgpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjogaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPmNvbmZpZ3VyYXRpb24oKS5pbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSgpOwotfQotCi1ib29sIFdlYnNpdGVEYXRhU3RvcmU6OmlzUGVy
c2lzdGVudCgpCi17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+aXNQZXJzaXN0ZW50
KCk7Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Ci19Ci0KLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7
Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOwotfQotCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCBlbmFibGVkKQotewotICAgIG1f
d2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFi
bGVkKTsKLX0KLQotI2lmICFQTEFURk9STShDT0NPQSkKLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzY5IGFu
ZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzcwCi0gICAgcmV0
dXJuIFdURjo6U3RyaW5nKCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgLy8gRklYTUU6
IEltcGxlbWVudC4KLSAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKLX0KLSNlbmRpZgotCi0jaWYg
IVVTRShHTElCKQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgLy8gTm90IGltcGxlbWVudGVkLgot
ICAgIHJldHVybiBXVEY6OlN0cmluZygpOwotfQotI2VuZGlmCi0KLVJlZjxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0KLSAgICBjb25maWd1cmF0
aW9uLT5zZXRQZXJzaXN0ZW50KHRydWUpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsK
LSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lKCJGaWxlcyIpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVj
dG9yeShkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24t
PnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkp
OwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkoKSk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5zZXRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeShkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAg
Y29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShkZWZh
dWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0
aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGRl
ZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0RGV2aWNl
SWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0
SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoZGVmYXVsdEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5KCkpOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdl
YnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyNDk2NzEpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShub25leGlzdGVudCkKQEAg
LTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJBUElIVFRQQ29va2llU3RvcmUuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0j
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgQVBJIHsKLQotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSBmaW5hbCA6IHB1
YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6V2Vic2l0ZURhdGFTdG9yZT4gewotcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gZGVmYXVsdERhdGFTdG9yZSgpOwot
ICAgIHN0YXRpYyBib29sIGRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKLSAgICBzdGF0aWMgdm9p
ZCBkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwotCi0gICAgc3RhdGljIFJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+JiYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7Ci0gICAgc3RhdGljIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7Ci0KLSAgICBleHBs
aWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7Ci0gICAgdmlydHVhbCB+V2Vic2l0ZURhdGFTdG9y
ZSgpOwotCi0gICAgYm9vbCBpc1BlcnNpc3RlbnQoKTsKLQotICAgIGJvb2wgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdDsKLSAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGJvb2wpOwotICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShib29sKTsKLQotICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSgpIHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQotICAgIEhUVFBDb29raWVT
dG9yZSYgaHR0cENvb2tpZVN0b3JlKCk7Ci0KLSAgICBXVEY6OlN0cmluZyBpbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcg
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBk
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGlj
IFdURjo6U3RyaW5nIGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotI2lmIFVTRShH
TElCKQotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SFNUU0RpcmVjdG9yeSgpOwotI2Vu
ZGlmCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRKYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwot
Ci1wcml2YXRlOgotICAgIGVudW0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0
b3J5LCBEb250Q3JlYXRlRGlyZWN0b3J5IH07Ci0KLSAgICBXZWJzaXRlRGF0YVN0b3JlKCk7Ci0K
LSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0
b3J5ID0gQ3JlYXRlRGlyZWN0b3J5KTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSk7Ci0K
LSAgICBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7Ci19
OwotCi19CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGlj
aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZVBvbGljaWVzLmNwcAkocmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNp
ZXMuaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJz
aXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgogCiBuYW1l
c3BhY2UgQVBJIHsKQEAgLTEwOCw3ICsxMDgsNyBAQCBXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0Rh
dGEgV2Vic2l0ZVBvbGljCiAjZW5kaWYKICAgICAgICAgV1RGTW92ZShjdXN0b21IZWFkZXJGaWVs
ZHMpLAogICAgICAgICBwb3BVcFBvbGljeSgpLAotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUg
PyBPcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiB7IG1fd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKSB9IDogV1RGOjpudWxs
b3B0LAorICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPyBPcHRpb25hbDxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiB7IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGFyYW1ldGVycygp
IH0gOiBXVEY6Om51bGxvcHQsCiAgICAgICAgIG1fY3VzdG9tVXNlckFnZW50LAogICAgICAgICBt
X2N1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrcywKICAgICAgICAg
bV9jdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmgJKHJldmlzaW9uIDI0OTY3MSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtNDEsMTMgKzQxLDEyIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBzdHJ1Y3QgV2Vic2l0ZVBv
bGljaWVzRGF0YTsKIH0KIAogbmFtZXNwYWNlIEFQSSB7CiAKLWNsYXNzIFdlYnNpdGVEYXRhU3Rv
cmU7Ci0KIGNsYXNzIFdlYnNpdGVQb2xpY2llcyBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdElt
cGw8QVBJOjpPYmplY3Q6OlR5cGU6OldlYnNpdGVQb2xpY2llcz4gewogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8V2Vic2l0ZVBvbGljaWVzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYnNpdGVQb2xpY2llcyk7IH0KQEAgLTc5LDggKzc4LDggQEAgcHVibGljOgogICAgIFdlYktp
dDo6V2Vic2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9wb3BV
cFBvbGljeTsgfQogICAgIHZvaWQgc2V0UG9wVXBQb2xpY3koV2ViS2l0OjpXZWJzaXRlUG9wVXBQ
b2xpY3kgcG9saWN5KSB7IG1fcG9wVXBQb2xpY3kgPSBwb2xpY3k7IH0KIAotICAgIFdlYnNpdGVE
YXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3dlYnNpdGVEYXRh
U3RvcmUuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoUmVmUHRyPFdlYnNp
dGVEYXRhU3RvcmU+JiYpOworICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURh
dGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQorICAg
IHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
PiYmKTsKIAogICAgIFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSBkYXRhKCk7CiAKQEAgLTEx
OCw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbGxvd0NvbnRlbnRDaGFuZ2VPYnNl
cnZlclF1aXJrKGJvb2wgYWxsb3cpIHsgbV9hbGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZlclF1aXJr
ID0gYWxsb3c7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50
QmxvY2tlcnNFbmFibGVkLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4s
IFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5LCBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRl
ckZpZWxkPiYmLCBWZWN0b3I8V2ViQ29yZTo6Q3VzdG9tSGVhZGVyRmllbGRzPiYmLCBXZWJLaXQ6
OldlYnNpdGVQb3BVcFBvbGljeSwgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYpOworICAgIFdl
YnNpdGVQb2xpY2llcyhib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJL
aXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiwgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3ks
IFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYsIFZlY3RvcjxXZWJDb3JlOjpDdXN0
b21IZWFkZXJGaWVsZHM+JiYsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5LCBSZWZQdHI8V2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlPiYmKTsKIAogICAgIGJvb2wgbV9jb250ZW50QmxvY2tlcnNF
bmFibGVkIHsgdHJ1ZSB9OwogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1
aXJrPiBtX2FsbG93ZWRBdXRvcGxheVF1aXJrczsKQEAgLTEyOSw3ICsxMjgsNyBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+IG1fbGVnYWN5Q3VzdG9tSGVh
ZGVyRmllbGRzOwogICAgIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+IG1fY3Vz
dG9tSGVhZGVyRmllbGRzOwogICAgIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IG1fcG9wVXBQ
b2xpY3kgeyBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeTo6RGVmYXVsdCB9OwotICAgIFJlZlB0
cjxXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwogICAgIFdURjo6U3RyaW5n
IG1fY3VzdG9tVXNlckFnZW50OwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tSmF2YVNjcmlwdFVz
ZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzOwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tTmF2
aWdhdG9yUGxhdGZvcm07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaAkocmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDYgQEAgY2xhc3MgUGFn
ZUNvbmZpZ3VyYXRpb247CiBjbGFzcyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247CiBjbGFzcyBT
ZXNzaW9uU3RhdGU7CiBjbGFzcyBVc2VyU2NyaXB0OwotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsK
IGNsYXNzIFdlYnNpdGVQb2xpY2llczsKIGNsYXNzIFdpbmRvd0ZlYXR1cmVzOwogfQpAQCAtMTEz
LDYgKzExMiw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOwogY2xh
c3MgV2ViVGV4dENoZWNrZXI7CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsK
IGNsYXNzIFdlYlZpZXdwb3J0QXR0cmlidXRlczsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBj
bGFzcyBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKIAogV0tfQUREX0FQSV9NQVBQSU5H
KFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkpCkBAIC0xNjksNyArMTY5LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlck1lZGlhUGVy
bWlzc2lvbgogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RS
ZWYsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkpCiBXS19BRERfQVBJX01BUFBJTkco
V0tVc2VyU2NyaXB0UmVmLCBBUEk6OlVzZXJTY3JpcHQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tW
aWV3cG9ydEF0dHJpYnV0ZXNSZWYsIFdlYlZpZXdwb3J0QXR0cmlidXRlcykKLVdLX0FERF9BUElf
TUFQUElORyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSkKK1dL
X0FERF9BUElfTUFQUElORyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZSkKIFdLX0FERF9BUElfTUFQUElORyhXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uUmVmLCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKQogV0tfQUREX0FQ
SV9NQVBQSU5HKFdLV2Vic2l0ZVBvbGljaWVzUmVmLCBBUEk6OldlYnNpdGVQb2xpY2llcykKIFdL
X0FERF9BUElfTUFQUElORyhXS1dpbmRvd0ZlYXR1cmVzUmVmLCBBUEk6OldpbmRvd0ZlYXR1cmVz
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAJKHJldmlzaW9uIDI0OTY3MSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw0MiArMjYsMTkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgiCiAKLSNpbmNsdWRlICJBUElBcnJh
eS5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVJlY29yZC5oIgotCiBXS1R5cGVJRCBXS0FwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQ
SShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OkFQSVR5cGUpOworICAgIHJldHVybiAwOwogfQogCi12
b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lucyhX
S0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCB2b2lk
KiBjb250ZXh0LCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9y
aWdpbnNGdW5jdGlvbiBjYWxsYmFjaykKK3ZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdl
dEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYsIHZv
aWQqLCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNG
dW5jdGlvbikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwo
cmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGFwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLmZldGNo
RGF0YShXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUs
IHsgfSwgW2NvbnRleHQsIGNhbGxiYWNrXShhdXRvIGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIFZl
Y3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7Ci0gICAgICAgIGZvciAo
Y29uc3QgYXV0byYgZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIG9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykKLSAgICAgICAgICAgICAg
ICBzZWN1cml0eU9yaWdpbnMuYXBwZW5kKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvcmln
aW4uc2VjdXJpdHlPcmlnaW4oKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FsbGJhY2soV2Vi
S2l0Ojp0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShzZWN1cml0eU9yaWdpbnMpKS5w
dHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwotICAgIH0pOwogfQogCi12b2lkIFdLQXBwbGljYXRp
b25DYWNoZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3Jp
Z2luKQordm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdp
bihXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmKQogewot
ICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9j
YXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpOwotCi0gICAgV2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVj
b3JkOwotICAgIGRhdGFSZWNvcmQuYWRkKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5l
V2ViQXBwbGljYXRpb25DYWNoZSwgV2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmln
aW4oKS5kYXRhKCkpOwotCi0gICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1vdmVEYXRhKFdlYktpdDo6
V2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgeyBkYXRhUmVjb3Jk
IH0sIFtdIHsgfSk7CiB9CiAKLXZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFs
bEVudHJpZXMoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFu
YWdlcikKK3ZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3Jl
ID0gV2ViS2l0Ojp0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+
KGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJz
aXRlRGF0YVN0b3JlLnJlbW92ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtdIHsgfSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5oCShyZXZpc2lvbiAyNDk2NzEpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDE4ICsyNywxOSBAQAogI2RlZmluZSBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
X2gKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEZXBy
ZWNhdGVkLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAot
V0tfRVhQT1JUIFdLVHlwZUlEIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRUeXBlSUQoKTsK
K1dLX0VYUE9SVCBXS1R5cGVJRCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0VHlwZUlEKCkg
V0tfQ19BUElfREVQUkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zRnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdL
RXJyb3JSZWYsIHZvaWQqKTsKLVdLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lucyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVm
IGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0FwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbik7CitX
S19FWFBPUlQgdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNo
ZU9yaWdpbnMoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFu
YWdlciwgdm9pZCogY29udGV4dCwgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5zRnVuY3Rpb24gZnVuY3Rpb24pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAK
LVdLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9y
T3JpZ2luKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFn
ZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKTsKLVdLX0VYUE9SVCB2b2lkIFdLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpOworV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBv
cmlnaW4pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CitXS19FWFBPUlQgdm9pZCBXS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVm
IGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJh
bWVQb2xpY3lMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAkocmV2aXNpb24gMjQ5NjcxKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV0tGcmFtZVBvbGljeUxpc3RlbmVyLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRl
RGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisj
aW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0Rh
dGEuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBX
S0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VJbk5ld1Byb2Nlcwogc3RhdGljIHZvaWQgdXNlV2l0aFBv
bGljaWVzKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBwb2xpY3lMaXN0ZW5lclJlZiwgV0tXZWJz
aXRlUG9saWNpZXNSZWYgd2Vic2l0ZVBvbGljaWVzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpCiB7CiAgICAgaWYgKGF1dG8qIHdlYnNp
dGVEYXRhU3RvcmUgPSB0b0ltcGwod2Vic2l0ZVBvbGljaWVzKS0+d2Vic2l0ZURhdGFTdG9yZSgp
KSB7Ci0gICAgICAgIGF1dG8gc2Vzc2lvbklEID0gd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNlc3Npb25JRCgpOworICAgICAgICBhdXRvIHNlc3Npb25JRCA9IHdlYnNpdGVE
YXRhU3RvcmUtPnNlc3Npb25JRCgpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NB
R0Uoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgfHwgc2Vzc2lvbklEID09IFBBTDo6U2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCksICJJZiBXZWJzaXRlUG9saWNpZXMgc3BlY2lmaWVzIGEgV2Vi
c2l0ZURhdGFTdG9yZSwgdGhlIGRhdGEgc3RvcmUncyBzZXNzaW9uIG11c3QgYmUgZGVmYXVsdCBv
ciBub24tcGVyc2lzdGVudC4iKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAko
cmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOTAgKzI2LDM4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
LmgiCiAKLSNpbmNsdWRlICJBUElBcnJheS5oIgotI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIK
LSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFn
ZXIuaCIKLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVJlY29y
ZC5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OkFQSVR5cGUpOworICAgIHJldHVybiAwOwogfQogCiBXS1N0cmluZ1JlZiBXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkoKQogewotICAgIHN0YXRpYyBBUEk6OlN0
cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdl
clN0b3JhZ2VEZXRhaWxzT3JpZ2luS2V5IikubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgm
a2V5KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogV0tTdHJpbmdSZWYgV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KCkKIHsKLSAgICBzdGF0aWMgQVBJOjpTdHJp
bmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoIldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJT
dG9yYWdlRGV0YWlsc0NyZWF0aW9uVGltZUtleSIpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9B
UEkoJmtleSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFdLU3RyaW5nUmVmIFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKQogewotICAgIHN0YXRpYyBB
UEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiV2ViS2V5VmFsdWVTdG9yYWdl
TWFuYWdlclN0b3JhZ2VEZXRhaWxzTW9kaWZpY2F0aW9uVGltZUtleSIpLmxlYWtSZWYoKTsKLSAg
ICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwg
V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9u
IGNhbGxiYWNrKQotCit2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldEtleVZhbHVlU3Rv
cmFnZU9yaWdpbnMoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmLCB2b2lkKiwgV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uKQogewotICAg
IGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNp
dGVEYXRhU3RvcmVSZWY+KGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUuZmV0Y2hEYXRhKHsgV2Vic2l0ZURhdGFUeXBlOjpM
b2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UgfSwgeyB9LCBbY29u
dGV4dCwgY2FsbGJhY2tdKGF1dG8gZGF0YVJlY29yZHMpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0
cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2luczsKLSAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKQotICAgICAgICAgICAgICAgIHNlY3VyaXR5
T3JpZ2lucy5hcHBlbmQoQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0
eU9yaWdpbigpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFy
cmF5OjpjcmVhdGUoV1RGTW92ZShzZWN1cml0eU9yaWdpbnMpKS5wdHIoKSksIG51bGxwdHIsIGNv
bnRleHQpOwotICAgIH0pOwogfQogCi12b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0
b3JhZ2VEZXRhaWxzQnlPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVl
U3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdl
dFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5jdGlvbiBjYWxsYmFjaykKK3ZvaWQgV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJSZWYsIHZvaWQqLCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0
YWlsc0J5T3JpZ2luRnVuY3Rpb24pCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRv
SW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oa2V5VmFsdWVTdG9y
YWdlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5n
ZXRMb2NhbFN0b3JhZ2VEZXRhaWxzKFtjb250ZXh0LCBjYWxsYmFja10oYXV0byYmIGRldGFpbHMp
IHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHJlc3VsdDsKLSAgICAgICAg
cmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGV0YWlscy5zaXplKCkpOwotCi0gICAgICAg
IGZvciAoY29uc3QgYXV0byYgZGV0YWlsIDogZGV0YWlscykgewotICAgICAgICAgICAgSGFzaE1h
cDxTdHJpbmcsIFJlZlB0cjxBUEk6Ok9iamVjdD4+IGRldGFpbE1hcDsKLSAgICAgICAgICAgIFJl
ZlB0cjxBUEk6Ok9iamVjdD4gb3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihkZXRhaWwu
b3JpZ2luSWRlbnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCkpOwotCi0gICAgICAgICAgICBkZXRh
aWxNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkoKSkt
PnN0cmluZygpLCBvcmlnaW4pOwotICAgICAgICAgICAgaWYgKGRldGFpbC5jcmVhdGlvblRpbWUp
Ci0gICAgICAgICAgICAgICAgZGV0YWlsTWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0
ZShkZXRhaWwuY3JlYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpKTsKLSAg
ICAgICAgICAgIGlmIChkZXRhaWwubW9kaWZpY2F0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBk
ZXRhaWxNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRp
b25UaW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShkZXRhaWwubW9kaWZp
Y2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSk7Ci0KLSAgICAgICAgICAg
IHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShk
ZXRhaWxNYXApKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFy
cmF5OjpjcmVhdGUoV1RGTW92ZShyZXN1bHQpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwot
ICAgIH0pOwogfQogCi12b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNG
b3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFn
ZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKQordm9pZCBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwg
V0tTZWN1cml0eU9yaWdpblJlZikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9J
bXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihrZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICBXZWJzaXRlRGF0YVJlY29yZCBk
YXRhUmVjb3JkOwotICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9y
YWdlLCB0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotICAgIGRhdGFS
ZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UsIHRvSW1wbChvcmlnaW4p
LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1vdmVE
YXRhKHsgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6U2Vz
c2lvblN0b3JhZ2UgfSwgeyBkYXRhUmVjb3JkIH0sIFtdIHsgfSk7CiB9CiAKLXZvaWQgV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlcikKK3ZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyRGVsZXRlQWxsRW50cmllcyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYpCiB7Ci0gICAg
YXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0
ZURhdGFTdG9yZVJlZj4oa2V5VmFsdWVTdG9yYWdlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3Jl
KCk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1vdmVEYXRhKHsgV2Vic2l0ZURhdGFUeXBlOjpM
b2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UgfSwgLVdhbGxUaW1l
OjppbmZpbml0eSgpLCBbXSB7IH0pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgJKHJldmlzaW9u
IDI0OTY3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9y
YWdlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywzMCArMjcsMzEgQEAKICNkZWZpbmUg
V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyX2gKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4K
KyNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwog
ZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotV0tfRVhQT1JUIFdLVHlwZUlEIFdLS2V5VmFsdWVTdG9y
YWdlTWFuYWdlckdldFR5cGVJRCgpOworV0tfRVhQT1JUIFdLVHlwZUlEIFdLS2V5VmFsdWVTdG9y
YWdlTWFuYWdlckdldFR5cGVJRCgpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5
cGU6IFdLU2VjdXJpdHlPcmlnaW5SZWYgKi8KLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkoKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkoKSBXS19DX0FQSV9ERVBSRUNBVEVE
OwogCiAvKiBWYWx1ZSB0eXBlOiBXS0RvdWJsZVJlZiwgc2Vjb25kcyBzaW5jZSBKYW51YXJ5IDFz
dCwgMTk3MCBVVEMgKi8KLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKSBXS19DX0FQSV9ERVBSRUNBVEVE
OwogCiAvKiBWYWx1ZSB0eXBlOiBXS0RvdWJsZVJlZiwgc2Vjb25kcyBzaW5jZSBKYW51YXJ5IDFz
dCwgMTk3MCBVVEMgKi8KLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJHZXRNb2RpZmljYXRpb25UaW1lS2V5KCk7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgpIFdLX0NfQVBJX0RF
UFJFQ0FURUQ7CiAKIHR5cGVkZWYgdm9pZCAoKldLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldEtl
eVZhbHVlU3RvcmFnZU9yaWdpbnNGdW5jdGlvbikoV0tBcnJheVJlZiwgV0tFcnJvclJlZiwgdm9p
ZCopOwotV0tfRVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVT
dG9yYWdlT3JpZ2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdl
TWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFs
dWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMoV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnNGdW5jdGlvbiBm
dW5jdGlvbikgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1bmN0aW9uKShXS0FycmF5
UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
clJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24gZnVuY3Rpb24pOwor
V0tfRVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNC
eU9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdl
ciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFp
bHNCeU9yaWdpbkZ1bmN0aW9uIGZ1bmN0aW9uKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCi1XS19F
WFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2lu
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCBXS1Nl
Y3VyaXR5T3JpZ2luUmVmIG9yaWdpbik7Ci1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyKTsKK1dLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtl
eVZhbHVlU3RvcmFnZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKSBXS19DX0FQ
SV9ERVBSRUNBVEVEOworV0tfRVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVs
ZXRlQWxsRW50cmllcyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdl
TWFuYWdlcikgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291
cmNlQ2FjaGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDY3ICsyNiwxOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldLUmVz
b3VyY2VDYWNoZU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAi
QVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUg
IldlYnNpdGVEYXRhUmVjb3JkLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlw
ZUlEIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQ
SShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OkFQSVR5cGUpOwotfQotCi1zdGF0aWMgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGVzKFdLUmVzb3VyY2VDYWNoZXNUb0Ns
ZWFyIGNhY2hlc1RvQ2xlYXIpCi17Ci0gICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vi
c2l0ZURhdGFUeXBlcyB7IFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUgfTsKLQotICAgIGlm
IChjYWNoZXNUb0NsZWFyID09IFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyQWxsKQotICAgICAgICB3
ZWJzaXRlRGF0YVR5cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSk7Ci0KLSAgICBy
ZXR1cm4gd2Vic2l0ZURhdGFUeXBlczsKKyAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXS1Jlc291
cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYg
Y2FjaGVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2Fj
aGVPcmlnaW5zRnVuY3Rpb24gY2FsbGJhY2spCit2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJH
ZXRDYWNoZU9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiwgdm9pZCosIFdLUmVzb3Vy
Y2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnNGdW5jdGlvbikKIHsKLSAgICBhdXRvJiB3ZWJz
aXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3Jl
UmVmPihjYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVEYXRh
U3RvcmUuZmV0Y2hEYXRhKHRvV2Vic2l0ZURhdGFUeXBlcyhXS1Jlc291cmNlQ2FjaGVzVG9DbGVh
ckFsbCksIHsgfSwgW2NvbnRleHQsIGNhbGxiYWNrXShhdXRvIGRhdGFSZWNvcmRzKSB7Ci0gICAg
ICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7Ci0gICAgICAg
IGZvciAoY29uc3QgYXV0byYgZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykKLSAgICAgICAg
ICAgICAgICBzZWN1cml0eU9yaWdpbnMuYXBwZW5kKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShvcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FsbGJh
Y2sodG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoc2VjdXJpdHlPcmlnaW5zKSkucHRy
KCkpLCBudWxscHRyLCBjb250ZXh0KTsKLSAgICB9KTsKIH0KIAotdm9pZCBXS1Jlc291cmNlQ2Fj
aGVNYW5hZ2VyQ2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNh
Y2hlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLUmVzb3VyY2VDYWNoZXNU
b0NsZWFyIGNhY2hlc1RvQ2xlYXIpCit2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNh
Y2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYsIFdLU2VjdXJpdHlPcmlnaW5S
ZWYsIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3Rv
cmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGNhY2hl
TWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0KLSAgICBWZWN0b3I8V2Vic2l0ZURhdGFS
ZWNvcmQ+IGRhdGFSZWNvcmRzOwotCi0gICAgewotICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCBk
YXRhUmVjb3JkOwotICAgICAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok1lbW9y
eUNhY2hlLCB0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotCi0gICAg
ICAgIGRhdGFSZWNvcmRzLmFwcGVuZChkYXRhUmVjb3JkKTsKLSAgICB9Ci0KLSAgICBpZiAoY2Fj
aGVzVG9DbGVhciA9PSBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhckFsbCkgewotICAgICAgICBXZWJz
aXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgICAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRl
RGF0YVR5cGU6OkRpc2tDYWNoZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0
YSgpKTsKLQotICAgICAgICBkYXRhUmVjb3Jkcy5hcHBlbmQoZGF0YVJlY29yZCk7Ci0gICAgfQot
Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1vdmVEYXRhKHRvV2Vic2l0ZURhdGFUeXBlcyhjYWNo
ZXNUb0NsZWFyKSwgZGF0YVJlY29yZHMsIFtdIHsgfSk7CiB9CiAKLXZvaWQgV0tSZXNvdXJjZUNh
Y2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JBbGxPcmlnaW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJS
ZWYgY2FjaGVNYW5hZ2VyLCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKQor
dm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFsbE9yaWdpbnMoV0tSZXNv
dXJjZUNhY2hlTWFuYWdlclJlZiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgYXV0
byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURh
dGFTdG9yZVJlZj4oY2FjaGVNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJz
aXRlRGF0YVN0b3JlLnJlbW92ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKGNhY2hlc1RvQ2xlYXIp
LCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtdIHsgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oCShy
ZXZpc2lvbiAyNDk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291
cmNlQ2FjaGVNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZp
bmUgV0tSZXNvdXJjZUNhY2hlTWFuYWdlcl9oCiAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+
CisjaW5jbHVkZSA8V2ViS2l0L1dLRGVwcmVjYXRlZC5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMK
IGV4dGVybiAiQyIgewpAQCAtMzgsMTMgKzM5LDEzIEBAIGVudW0gewogfTsKIHR5cGVkZWYgdWlu
dDMyX3QgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXI7CiAKLVdLX0VYUE9SVCBXS1R5cGVJRCBXS1Jl
c291cmNlQ2FjaGVNYW5hZ2VyR2V0VHlwZUlEKCk7CitXS19FWFBPUlQgV0tUeXBlSUQgV0tSZXNv
dXJjZUNhY2hlTWFuYWdlckdldFR5cGVJRCgpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKIHR5cGVk
ZWYgdm9pZCAoKldLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnNGdW5jdGlvbiko
V0tBcnJheVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNv
bnRleHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9y
aWdpbnNGdW5jdGlvbiBmdW5jdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVN
YW5hZ2VyR2V0Q2FjaGVPcmlnaW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY29udGV4dFJl
Ziwgdm9pZCogY29udGV4dCwgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2luc0Z1
bmN0aW9uIGZ1bmN0aW9uKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCi1XS19FWFBPUlQgdm9pZCBX
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNlQ2FjaGVN
YW5hZ2VyUmVmIGNhY2hlTWFuZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tSZXNv
dXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcik7Ci1XS19FWFBPUlQgdm9pZCBXS1Jlc291
cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFsbE9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFu
YWdlclJlZiBjYWNoZU1hbmFnZXIsIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xl
YXIpOworV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JP
cmlnaW4oV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmdlciwgV0tTZWN1cml0eU9y
aWdpblJlZiBvcmlnaW4sIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpIFdL
X0NfQVBJX0RFUFJFQ0FURUQ7CitXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2Vy
Q2xlYXJDYWNoZUZvckFsbE9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1h
bmFnZXIsIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpIFdLX0NfQVBJX0RF
UFJFQ0FURUQ7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCShy
ZXZpc2lvbiAyNDk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5j
bHVkZSAiV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgiCiAKICNpbmNsdWRlICJBUElBcnJheS5oIgot
I2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJBUElIVFRQQ29va2ll
U3RvcmUuaCIKICNpbmNsdWRlICJNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCkBAIC00MSwyOSArNDEsMzAgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgog
I2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0
YVJlY29yZC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJz
aXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCiBXS1R5cGVJRCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRUeXBlSUQo
KQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJ
VHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpBUElUeXBlKTsKIH0KIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9y
ZUdldERlZmF1bHREYXRhU3RvcmUoKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0FQSShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUo
KS5wdHIoKSk7CiB9CiAKIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3RvcmVD
cmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQ
SSgmQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCku
bGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50KCkubGVha1JlZigpKTsKIH0KIAogV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNyZWF0ZVdpdGhDb25maWd1cmF0aW9uKFdL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbikKIHsKICAgICBh
dXRvIHNlc3Npb25JRCA9IFdlYktpdDo6dG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5pc1BlcnNpc3Rl
bnQoKSA/IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZVBlcnNpc3RlbnRTZXNzaW9uSUQoKSA6IFBB
TDo6U2Vzc2lvbklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25JRCgpOwotICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZSgqV2ViS2l0Ojp0b0lt
cGwoY29uZmlndXJhdGlvbiksIHNlc3Npb25JRCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2Vi
S2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoKldlYktpdDo6dG9J
bXBsKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQpLmxlYWtSZWYoKSk7CiB9CiAKIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUpCkBAIC04MywxMyArODQsMTMg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdAogCiBXS0hUVFBDb29r
aWVTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29va2llU3RvcmUoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgm
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aHR0cENvb2tpZVN0b3JlKCkpOworICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5jb29raWVT
dG9yZSgpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGVidWdNb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIGJvb2wgZW5hYmxlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzRGVidWdNb2RlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RlYnVnTW9kZShlbmFibGUsIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1
Z01vZGUoZW5hYmxlLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMTAwLDcgKzEwMSw3
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3QKIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9y
RGVidWdNb2RlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVm
IGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWJ1Z01v
ZGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
cl0geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFByZXZhbGVudFJlc291
cmNlRm9yRGVidWdNb2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
KSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTExMCw3ICsxMTEsNyBAQCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NMYXN0U2VlbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc0xhc3RTZWVuRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TGFzdFNlZW4oVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9
LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5zZXRMYXN0U2VlbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5z
dHJpbmcoKSksIFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
cl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsKICNlbHNl
CkBAIC0xMjEsNyArMTIyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
TGFzdAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3Vy
Y2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwg
Ym9vbCB2YWx1ZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0g
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1
dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKTsKIAog
ICAgIGlmICh2YWx1ZSkKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS5zZXRQcmV2YWxlbnRSZXNv
dXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0
LCBjb21wbGV0aW9uSGFuZGxlcl0gewpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc1ByZXYKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
LSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSAqV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKTsKIAogICAgIGlmICh2YWx1ZSkKICAgICAgICAgd2Vi
c2l0ZURhdGFTdG9yZS5zZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsK
QEAgLTE1Nyw3ICsxNTgsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NW
ZXJ5CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZUR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRnVuY3Rpb24gY2FsbGJhY2spCiB7
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1w
bChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZHVtcFJlc291cmNlTG9hZFN0YXRp
c3RpY3MoW2NvbnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZHVtcFJlc291cmNl
TG9hZFN0YXRpc3RpY3MoW2NvbnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKSB7CiAgICAgICAgIGNhbGxiYWNrKFdlYktpdDo6dG9BUEkocmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5pbXBsKCkpLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0x
NjgsNyArMTY5LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVEdW1wUmVzb3VyY2VMb2FkUwog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBj
b250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZ1
bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmlz
UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5n
KCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSkgeworICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2td
KGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSkgewogICAgICAgICBjYWxsYmFjayhpc1ByZXZhbGVu
dFJlc291cmNlLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0xNzksNyArMTgwLDcgQEAg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YQogdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiBjYWxs
YmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5pc1ZlcnlQcmV2YWxl
bnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSkgeworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzVmVyeVByZXZhbGVudFJlc291cmNlKFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNr
XShib29sIGlzVmVyeVByZXZhbGVudFJlc291cmNlKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzVmVy
eVByZXZhbGVudFJlc291cmNlLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0xOTAsNyAr
MTkxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UAogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVy
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIHN1YnJlc291
cmNlSG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNp
dGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRnVuY3Rp
b24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdp
c3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3VicmVz
b3VyY2VIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1l
SG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFz
U3VicmVzb3VyY2VVbmRlcikgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlz
UmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHN1
YnJlc291cmNlSG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BG
cmFtZUhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVy
ZWRBc1N1YnJlc291cmNlVW5kZXIpIHsKICAgICAgICAgY2FsbGJhY2soaXNSZWdpc3RlcmVkQXNT
dWJyZXNvdXJjZVVuZGVyLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yMDEsNyArMjAy
LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpcwogdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIHN1YkZyYW1lSG9zdCwg
V0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyRnVuY3Rpb24gY2FsbGJhY2sp
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdpc3RlcmVkQXNTdWJG
cmFtZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVIb3N0KS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcikgewor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVV
bmRlcihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHN1YkZyYW1lSG9zdCktPnN0cmluZygpKSwg
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtjb250
ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpIHsKICAgICAg
ICAgY2FsbGJhY2soaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyLCBjb250ZXh0KTsKICAgICB9
KTsKICNlbHNlCkBAIC0yMTIsNyArMjEzLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0
YXRpc3RpY3NSZWdpcwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3Rl
cmVkQXNSZWRpcmVjdGluZ1RvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdL
U3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRU
bywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJl
ZEFzUmVkaXJlY3RpbmdUb0Z1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2Fs
bGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKSB7CisgICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtjb250ZXh0
LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8pIHsKICAgICAgICAg
Y2FsbGJhY2soaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvLCBjb250ZXh0KTsKICAgICB9KTsK
ICNlbHNlCkBAIC0yMjMsNyArMjI0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NSZWdpcwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb25GdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIGRhdGFT
dG9yZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKTsK
KyAgICBhdXRvJiBkYXRhU3RvcmUgPSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKTsKIAog
ICAgIGlmICh2YWx1ZSkKICAgICAgICAgZGF0YVN0b3JlLmxvZ1VzZXJJbnRlcmFjdGlvbihVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0
aW9uSGFuZGxlcl0gewpAQCAtMjQxLDcgKzI0Miw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0hhc0gKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzSGFz
SGFkVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdL
U3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9v
bCBoYXNIYWRVc2VySW50ZXJhY3Rpb24pIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSGFkVXNlckludGVyYWN0
aW9uKSB7CiAgICAgICAgIGNhbGxiYWNrKGhhc0hhZFVzZXJJbnRlcmFjdGlvbiwgY29udGV4dCk7
CiAgICAgfSk7CiAjZWxzZQpAQCAtMjUyLDE0ICsyNTMsMTQgQEAgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NIYXNIYQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzR3JhbmRmYXRoZXJlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0
cmluZ1JlZiBob3N0LCBib29sIHZhbHVlKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnNldEdyYW5kZmF0aGVyZWQoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+
c3RyaW5nKCkpLCB2YWx1ZSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5zZXRHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgdmFsdWUsIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWRGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2td
KGJvb2wgaXNHcmFuZGZhdGhlcmVkKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+aGFzSGFkVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzR3JhbmRmYXRoZXJlZCkgewog
ICAgICAgICBjYWxsYmFjayhpc0dyYW5kZmF0aGVyZWQsIGNvbnRleHQpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTI3MCw0OSArMjcxLDQ5IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0
aWNzR3JhbmQKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YmZyYW1lVW5k
ZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0
cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QpCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZy
YW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVm
IGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNp
dGVEYXRhU3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oVVJMKFVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1w
bChkYXRhU3RvcmVSZWYpLT5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9z
dCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNp
dGVEYXRhU3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBs
KGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbXSB7IH0pOwogI2VuZGlmCiB9CiAK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVm
IGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBbXSB7IH0pOworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RG
cm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFtdIHsgfSk7
CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJh
bWVVbmlxdWVSZWRpcmVjdFRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdL
U3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8pCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbXSB7IH0pOworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2Vi
S2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW10geyB9KTsKICNlbmRp
ZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0RnJvbShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmlu
Z1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZyb20pCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oVVJM
KFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSwgW10geyB9KTsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJv
bShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBbXSB7IH0pOwog
I2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Nyb3NzU2l0
ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgV0tTdHJpbmdSZWYgZnJvbUhvc3QsIFdLU3RyaW5nUmVmIHRvSG9zdCwgdm9pZCogY29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0Rl
Y29yYXRpb25GdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRh
U3RvcmUoKS5zZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGZyb21Ib3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKHRvSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7Cisg
ICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5r
RGVjb3JhdGlvbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChmcm9tSG9zdCkt
PnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b0hvc3QpLT5zdHJpbmcoKSks
IFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9
KTsKICNlbHNlCkBAIC0zMjMsNyArMzI0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzQ3Jvcwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBk
b3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb25GdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9u
KFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25k
cyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNv
bnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTMzNCw3ICszMzUsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0
YVJlY29yZHNQcm9jZXNzaW5nKFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vz
c2luZyhbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAg
ICAgfSk7CiAjZWxzZQpAQCAtMzQ1LDcgKzM0Niw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc1Byb2Nlc3MKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1VwZGF0
ZUNvb2tpZUJsb2NraW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2lu
Z0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbnRleHQsIGNvbXBsZXRp
b25IYW5kbGVyXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zY2hlZHVs
ZUNvb2tpZUJsb2NraW5nVXBkYXRlKFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0oKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTM1
NiwyMSArMzU3LDIxIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUMK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeShXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnN1Ym1pdFRlbGVtZXRyeSgpOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPnN1Ym1pdFRlbGVtZXRyeSgpOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jk
c1dlcmVTY2FubmVkKHZhbHVlLCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUsIFtd
IHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
SXNSdW5uaW5nVGVzdChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIHZh
bHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5u
aW5nVGVzdEZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KHZhbHVlLCBbY29u
dGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRJ
c1J1bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdCh2YWx1ZSwgW2NvbnRleHQsIGNhbGxi
YWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTM4
MSw0OSArMzgyLDQ5IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0lzUnUK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3Vy
Y2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIGJvb2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwodmFsdWUs
IFtdKCkgeyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTaG91bGRD
bGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSwgW10oKSB7IH0p
OwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlm
eVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIGJvb2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuc2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQodmFsdWUsIFtdKCkgeyB9
KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXROb3RpZnlQYWdlc1doZW5U
ZWxlbWV0cnlXYXNDYXB0dXJlZCh2YWx1ZSwgW10oKSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNv
cmRzUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vj
b25kcykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyB7IHNlY29uZHMgfSwgW10oKSB7IH0p
OworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE1pbmltdW1UaW1lQmV0d2Vl
bkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHsgc2Vjb25kcyB9LCBbXSgpIHsgfSk7CiAjZW5k
aWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJp
bmdUaW1lKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRz
KQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEdyYW5kZmF0aGVyaW5n
VGltZShTZWNvbmRzIHsgc2Vjb25kcyB9LCBbXSgpIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBzZWNvbmRzIH0s
IFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NNYXhTdGF0aXN0aWNzRW50cmllcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCB1bnNpZ25lZCBlbnRyaWVzKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKGVudHJpZXMsIFtdKCkgeyB9KTsKKyAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRNYXhTdGF0aXN0aWNzRW50cmllcyhlbnRyaWVz
LCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzUHJ1bmVFbnRyaWVzRG93blRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIHVuc2lnbmVkIGVudHJpZXMpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuc2V0UHJ1bmVFbnRyaWVzRG93blRvKGVudHJpZXMsIFtdKCkgeyB9KTsKKyAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRQcnVuZUVudHJpZXNEb3duVG8oZW50cmllcywgW10o
KSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0Ns
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFy
SW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50KFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBj
YWxsYmFja10oKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1bGVD
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlz
dGljczo6WWVzLCBbY29udGV4dCwgY2FsbGJhY2tdKCkgewogICAgICAgICBjYWxsYmFjayhjb250
ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00MzQsNyArNDM1LDcgQEAgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3VycyhXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB1bnNpZ25lZCBob3Vycywgdm9pZCogY29u
dGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnNGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50KFdhbGxUaW1lOjpub3coKSAtIFNlY29uZHM6OmZyb21Ib3Vycyhob3VycyksIFdlYktpdDo6
U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7
CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudChXYWxsVGltZTo6bm93KCkgLSBTZWNvbmRzOjpmcm9tSG91cnMoaG91cnMp
LCBXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzLCBbY29udGV4dCwgY2Fs
bGJhY2tdKCkgewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBA
IC00NDUsNyArNDQ2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJ
bgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURh
dGFSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJl
bW92YWxGdW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRl
RGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRz
KDApLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKDApLCBb
Y29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7
CiB9CkBAIC00NTMsNyArNDU0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
Q2xlYXJUaAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0Zv
clRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYg
aG9zdCwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxs
YmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kZWxldGVDb29raWVz
Rm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIGlu
Y2x1ZGVIdHRwT25seUNvb2tpZXMsIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywg
W2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0p
OwogI2Vsc2UKQEAgLTQ2NCw3ICs0NjUsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NEZWxldGVDCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2NhbFN0
b3JhZ2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9z
dCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2FsU3Rv
cmFnZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmhhc0xvY2FsU3RvcmFnZUZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzTG9jYWxTdG9yYWdl
KSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aGFzTG9jYWxTdG9yYWdlRm9y
VGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250
ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNMb2NhbFN0b3JhZ2UpIHsKICAgICAgICAgY2FsbGJhY2so
aGFzTG9jYWxTdG9yYWdlLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00NzUsNyArNDc2
LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYQogdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9uIGNhbGxiYWNr
KQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldENhY2hlTWF4QWdlQ2Fw
Rm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjYWxs
YmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBj
YWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBA
IC00ODYsNyArNDg3LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2Fj
aAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9uKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb25G
dW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5o
YXNJc29sYXRlZFNlc3Npb25Gb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhhc0lzb2xhdGVkU2Vzc2lv
bikgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0lzb2xhdGVkU2Vzc2lv
bkZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9uKSB7CiAgICAgICAgIGNh
bGxiYWNrKGhhc0lzb2xhdGVkU2Vzc2lvbiwgY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAt
NTAxLDcgKzUwMiw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG8K
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAKLSAgICBhdXRv
JiBzdG9yZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KTsKKyAgICBhdXRvJiBzdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpOwogICAg
IHN0b3JlLmNsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljc0luV2ViUHJvY2Vzc2VzKFtjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIHN0
b3JlLnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoW2NhbGxiYWNrQWdn
cmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUu
cmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoW2NhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CkBAIC01MTYs
NyArNTE3LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUbwogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxGZXRjaENhY2hlcyhXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1v
dmVGZXRjaENhY2hlUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNldDxX
ZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU6OkRPTUNhY2hlOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBb
Y29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5y
ZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2Fs
bGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC01Mjgs
NyArNTI5LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hlRgogICAg
IFZlY3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiBkYXRhUmVjb3JkcyA9IHsgV1RGTW92
ZShkYXRhUmVjb3JkKSB9OwogCiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBl
PiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU7Ci0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEo
ZGF0YVR5cGVzLCBkYXRhUmVjb3JkcywgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0YShkYXRhVHlwZXMsIGRhdGFSZWNvcmRz
LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAg
fSk7CiB9CkBAIC01MzYsNyArNTM3LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVG
ZXRjaENhY2hlRgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRGF0YWJh
c2VzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdL
V2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFjayBjYWxsYmFj
aykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9
IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXM7Ci0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0
YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2Fs
bFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgIGlmIChjYWxsYmFj
aykKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CkBAIC01NDUsNyArNTQ2LDcg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRAogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9y
YWdlQ2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdl
OwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5y
ZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2Fs
bGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRh
dGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAg
ICAgICAgaWYgKGNhbGxiYWNrKQogICAgICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAg
fSk7CkBAIC01NTUsNyArNTU2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxT
ZXJ2aWNlVwogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBPcHRpb25TZXQ8V2Vi
S2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uczsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGlt
ZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHko
KSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAg
IH0pOwogI2Vsc2UKQEAgLTU2Niw3ICs1NjcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJl
bW92ZUFsbFNlcnZpY2VXCiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9y
aWdpbnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFjaykK
IHsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
ZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgeyB9LCBbY29udGV4
dCwgY2FsbGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+ZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwg
eyB9LCBbY29udGV4dCwgY2FsbGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CiAgICAgICAgIFZl
Y3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7CiAgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7CiAgICAgICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIG9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykKQEAgLTU4MCw3ICs1ODEs
NyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplCiB7CiAgICAgT3B0
aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zID0gV2Vi
S2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXM7CiAKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZmV0Y2hEYXRhKFdlYktp
dDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgZmV0Y2hPcHRpb25zLCBbb3JpZ2luLCBjb250
ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0YVJlY29yZHMpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hl
LCBmZXRjaE9wdGlvbnMsIFtvcmlnaW4sIGNvbnRleHQsIGNhbGxiYWNrXSAoYXV0byBkYXRhUmVj
b3JkcykgewogICAgICAgICBhdXRvIG9yaWdpbkRhdGEgPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zdHJpbmcoKSktPmRh
dGEoKTsKICAgICAgICAgZm9yIChhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKICAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjb3JkT3JpZ2luIDogZGF0YVJlY29yZC5vcmln
aW5zKSB7CkBAIC01OTcsMjMgKzU5OCwyMyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZl
dGNoQ2FjaGVTaXplCiAKIFdLU3RyaW5nUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNvcHlTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgp
KTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpCiB7Ci0gICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkoV2ViS2l0Ojp0b0ltcGwoc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSktPnN0cmluZygpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdlYktpdDo6dG9JbXBs
KHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLT5zdHJpbmcoKSk7CiB9CiAKIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVpbnQ2NF90IHF1b3RhKQogewotICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQZXJPcmlnaW5TdG9y
YWdlUXVvdGEocXVvdGEpOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFBl
ck9yaWdpblN0b3JhZ2VRdW90YShxdW90YSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
Q2xlYXJBbGxEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25zKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYpCiB7CiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGV2aWNlT3Jp
ZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKCkuY2xlYXJQZXJtaXNzaW9ucygpOwor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmRldmljZU9yaWVudGF0aW9uQW5kTW90
aW9uQWNjZXNzQ29udHJvbGxlcigpLmNsZWFyUGVybWlzc2lvbnMoKTsKICNlbmRpZgogfQogCkBA
IC03MTMsMTQgKzcxNCwxNCBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFdlYkF1dGhlbnRp
Y2F0CiAgICAgICAgIGNvbmZpZ3VyYXRpb24ubmZjID0gV1RGTW92ZShuZmMpOwogICAgIH0KIAot
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikp
OworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAjZW5kaWYKIH0KIAog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbnNUaHJvdWdoV2Vi
c2l0ZURhdGFSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91
Z2hXZWJzaXRlRGF0YVJlbW92YWxGdW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8
V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFU
eXBlOjpBZENsaWNrQXR0cmlidXRpb25zOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKDApLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1w
bChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKDApLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4
dCk7CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVQb2xpY2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwCShyZXZpc2lvbiAyNDk2NzEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDEyICsyNywxMiBAQAogI2luY2x1ZGUgIldLV2Vic2l0ZVBvbGljaWVzLmgiCiAK
ICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9y
ZS5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgogI2luY2x1ZGUgIldLQXJyYXkuaCIKICNpbmNsdWRlICJXS0RpY3Rpb25hcnkuaCIKICNp
bmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1t
CShyZXZpc2lvbiAyNDk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShub25leGlzdGVudCkKQEAgLTEsMTk3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJ
V2Vic2l0ZURhdGFTdG9yZS5oIgotCi0jaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2lu
Y2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaD4KLSNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgotCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0jZW5k
aWYKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLU5TU3RyaW5nICpXZWJEYXRhYmFzZURpcmVjdG9yeURl
ZmF1bHRzS2V5ID0gQCJXZWJEYXRhYmFzZURpcmVjdG9yeSI7Ci1OU1N0cmluZyAqV2ViU3RvcmFn
ZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQ
cmVmZXJlbmNlS2V5IjsKLU5TU3RyaW5nICpXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5RGVmYXVs
dHNLZXkgPSBAIldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnkiOwotTlNTdHJpbmcgKldlYktpdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSI7Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRB
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgIC8vIFRoaXMgcXVpcmsgdXNlZCB0byBtYWtlIHRoZXNlIGFwcHMgc2hhcmUgYXBwbGljYXRp
b24gY2FjaGUgc3RvcmFnZSwgYnV0IGRvZXNuJ3QgYWNjb21wbGlzaCB0aGF0IGFueSBtb3JlLgot
ICAgIC8vIFByZXNlcnZpbmcgaXQgYXZvaWRzIHRoZSBuZWVkIHRvIG1pZ3JhdGUgZGF0YSB3aGVu
IHVwZ3JhZGluZy4KLSAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSBzaG91bGQganVzdCBoYXZlIFNh
ZmFyaSwgV2ViQXBwLCBhbmQgd2ViYm9va21hcmtzZCBjcmVhdGUgYSBkYXRhIHN0b3JlIHdpdGgK
LSAgICAvLyB0aGlzIGFwcGxpY2F0aW9uIGNhY2hlIHBhdGgsIGJ1dCB0aGF0J3Mgbm90IHN1cHBv
cnRlZCBhcyBvZiByaWdodCBub3cuCi0gICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjpp
c01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkFwcCgpIHx8
IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkJvb2ttYXJrc0QoKSkgewotICAgICAgICBO
U1N0cmluZyAqY2FjaGVQYXRoID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJdOwot
Ci0gICAgICAgIHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgo
Y2FjaGVQYXRoLnN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGgpOwotICAgIH0KLSNlbmRpZgotCi0g
ICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZsaW5l
V2ViQXBwbGljYXRpb25DYWNoZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkNhY2hlU3RvcmFnZSIpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkK
LXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5l
dHdvcmtDYWNoZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TWVkaWFDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIk1lZGlhQ2FjaGUiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICBy
ZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4
ZWREQiIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJTZXJ2aWNlV29ya2VycyIpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkK
LXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oIkxvY2FsU3RvcmFnZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUtleXMiKTsKLX0KLQot
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oIldlYlNRTCIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRK
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHRlbXBEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkphdmFTY3JpcHRDb3JlRGVidWciLCBEb250
Q3JlYXRlRGlyZWN0b3J5KTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVt
cERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGly
ZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkK
LXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNV
UkwgKnRlbXBVUkw7Ci0gICAgCi0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAg
ICAgICBOU1VSTCAqdXJsID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpOU1RlbXBvcmFyeURpcmVj
dG9yeSgpIGlzRGlyZWN0b3J5OllFU107Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgCi0gICAgICAgIGlmICghV2Vi
S2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpidW5k
bGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVuZGxl
SWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKLSAg
ICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlk
ZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
dGVtcFVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNE
aXJlY3Rvcnk6WUVTXSByZXRhaW5dOwotICAgIH0pOwotICAgIAotICAgIE5TVVJMICp1cmwgPSBb
dGVtcFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVj
dG9yeTpZRVNdOwotCi0gICAgaWYgKHNob3VsZENyZWF0ZURpcmVjdG9yeSA9PSBDcmVhdGVEaXJl
Y3RvcnkKLSAgICAgICAgJiYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0
ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJp
YnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
Y3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7Ci0gICAgCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0
ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKLX0KLQotV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29u
Y2VfdCBvbmNlVG9rZW47Ci0gICAgc3RhdGljIE5TVVJMICpjYWNoZVVSTDsKLQotICAgIGRpc3Bh
dGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TQ2FjaGVzRGlyZWN0b3J5IGlu
RG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6
Tk8gZXJyb3I6bnVsbHB0cl07Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hh
c0NvbnRhaW5lcigpKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9
IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KCFidW5kbGVJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBb
TlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICB1cmwg
PSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGly
ZWN0b3J5OllFU107Ci0gICAgICAgIH0KLQotICAgICAgICBjYWNoZVVSTCA9IFtbdXJsIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5d
OwotICAgIH0pOwotCi0gICAgTlNVUkwgKnVybCA9IFtjYWNoZVVSTCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOwotICAgIGlmICghW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0
aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRy
XSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVy
bCk7Ci0KLSAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0
b3J5TmFtZSkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBz
dGF0aWMgTlNVUkwgKndlYnNpdGVEYXRhVVJMOwotCi0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRv
a2VuLCBeewotICAgICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNMaWJyYXJ5RGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRv
bWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0
cl07Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLQotICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXTsKLQotICAgICAgICBpZiAoIVdlYktpdDo6cHJv
Y2Vzc0hhc0NvbnRhaW5lcigpKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRp
ZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOwotICAgICAgICAg
ICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZp
ZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAg
ICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVy
IGlzRGlyZWN0b3J5OllFU107Ci0gICAgICAgIH0KLQotICAgICAgICB3ZWJzaXRlRGF0YVVSTCA9
IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0RpcmVj
dG9yeTpZRVNdIHJldGFpbl07Ci0gICAgfSk7Ci0KLSAgICBOU1VSTCAqdXJsID0gW3dlYnNpdGVE
YXRhVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0
b3J5OllFU107Ci0gICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0
ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJp
YnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBj
cmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKLQotICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwu
cGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZpc2lvbiAyNDk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDUsMTcgKzEwNSwxNyBAQCBwcml2YXRlOgogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilk
ZWZhdWx0RGF0YVN0b3JlCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkpOworICAgIHJldHVybiB3cmFwcGVyKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpKTsKIH0KIAogKyAoV0tXZWJzaXRlRGF0
YVN0b3JlICopbm9uUGVyc2lzdGVudERhdGFTdG9yZQogewotICAgIHJldHVybiB3cmFwcGVyKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpKTsKKyAg
ICByZXR1cm4gd3JhcHBlcihXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNp
c3RlbnQoKSk7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIF93ZWJzaXRlRGF0YVN0b3Jl
LT5BUEk6OldlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgX3dlYnNp
dGVEYXRhU3RvcmUtPldlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUo
KTsKIAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCArIChOU1Nl
dCAqKWFsbFdlYnNpdGVEYXRhVHlwZXMKIAogLSAoV0tIVFRQQ29va2llU3RvcmUgKilodHRwQ29v
a2llU3RvcmUKIHsKLSAgICByZXR1cm4gd3JhcHBlcihfd2Vic2l0ZURhdGFTdG9yZS0+aHR0cENv
b2tpZVN0b3JlKCkpOworICAgIHJldHVybiB3cmFwcGVyKF93ZWJzaXRlRGF0YVN0b3JlLT5jb29r
aWVTdG9yZSgpKTsKIH0KIAogc3RhdGljIFdhbGxUaW1lIHRvU3lzdGVtQ2xvY2tUaW1lKE5TRGF0
ZSAqZGF0ZSkKQEAgLTE4Niw3ICsxODYsNyBAQCAtICh2b2lkKWZldGNoRGF0YVJlY29yZHNPZlR5
cGVzOihOU1NldCAqCiAtICh2b2lkKXJlbW92ZURhdGFPZlR5cGVzOihOU1NldCAqKWRhdGFUeXBl
cyBtb2RpZmllZFNpbmNlOihOU0RhdGUgKilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJD
b3B5ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBfd2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRh
VHlwZXMoZGF0YVR5cGVzKSwgdG9TeXN0ZW1DbG9ja1RpbWUoZGF0ZSA/IGRhdGUgOiBbTlNEYXRl
IGRpc3RhbnRQYXN0XSksIFtjb21wbGV0aW9uSGFuZGxlckNvcHldIHsKKyAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+cmVtb3ZlRGF0YShXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMp
LCB0b1N5c3RlbUNsb2NrVGltZShkYXRlID8gZGF0ZSA6IFtOU0RhdGUgZGlzdGFudFBhc3RdKSwg
W2NvbXBsZXRpb25IYW5kbGVyQ29weV0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHko
KTsKICAgICB9KTsKIH0KQEAgLTIwNSw3ICsyMDUsNyBAQCAtICh2b2lkKXJlbW92ZURhdGFPZlR5
cGVzOihOU1NldCAqKWRhdGFUCiB7CiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpOwogCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUt
PndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVz
KGRhdGFUeXBlcyksIHRvV2Vic2l0ZURhdGFSZWNvcmRzKGRhdGFSZWNvcmRzKSwgW2NvbXBsZXRp
b25IYW5kbGVyQ29weV0geworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5yZW1vdmVEYXRhKFdlYktp
dDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIHRvV2Vic2l0ZURhdGFSZWNvcmRzKGRh
dGFSZWNvcmRzKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0gewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlckNvcHkoKTsKICAgICB9KTsKIH0KQEAgLTI0MCwxMiArMjQwLDEyIEBAICsgKE5TU2V0
PE5TU3RyaW5nICo+ICopX2FsbFdlYnNpdGVEYXRhVHkKIAogKyAoQk9PTClfZGVmYXVsdERhdGFT
dG9yZUV4aXN0cwogewotICAgIHJldHVybiBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmVFeGlzdHMoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCk7CiB9CiAKICsgKHZvaWQpX2RlbGV0ZURlZmF1bHREYXRh
U3RvcmVGb3JUZXN0aW5nCiB7Ci0gICAgcmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVs
ZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwogfQogCiAt
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCkBAIC0yNTMsNyArMjUzLDcgQEAgLSAoaW5z
dGFuY2V0eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRpb246KAogICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0byBjb25maWcgPSBjb25m
aWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oKSA6IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb246OmNyZWF0ZSgpOworICAgIGF1dG8gY29uZmlnID0gY29uZmlndXJhdGlvbi5pc1BlcnNp
c3RlbnQgPyBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1
cmF0aW9uKCkgOiBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUo
KTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKGNvbmZpZy0+aXNQZXJzaXN0ZW50KCkgPT0gY29uZmln
dXJhdGlvbi5pc1BlcnNpc3RlbnQpOwogCkBAIC0zMTIsNyArMzEyLDcgQEAgLSAoaW5zdGFuY2V0
eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRpb246KAogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBjb25m
aWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZVBlcnNpc3Rl
bnRTZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25J
RCgpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OldlYnNpdGVE
YXRhU3RvcmU+KHNlbGYsIFdURk1vdmUoY29uZmlnKSwgc2Vzc2lvbklEKTsKKyAgICBBUEk6Ok9i
amVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4oc2VsZiwg
V1RGTW92ZShjb25maWcpLCBzZXNzaW9uSUQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0z
MjUsNyArMzI1LDcgQEAgLSAodm9pZClfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0PAog
ICAgIGlmIChvcHRpb25zICYgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9uQ29tcHV0ZVNp
emVzKQogICAgICAgICBmZXRjaE9wdGlvbnMuYWRkKFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9w
dGlvbjo6Q29tcHV0ZVNpemVzKTsKIAotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuZmV0Y2hEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyks
IGZldGNoT3B0aW9ucywgW2NvbXBsZXRpb25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXJDb3B5KV0oYXV0byB3ZWJzaXRlRGF0YVJlY29yZHMpIHsKKyAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+ZmV0Y2hEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyks
IGZldGNoT3B0aW9ucywgW2NvbXBsZXRpb25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXJDb3B5KV0oYXV0byB3ZWJzaXRlRGF0YVJlY29yZHMpIHsKICAgICAgICAgVmVjdG9y
PFJlZlB0cjxBUEk6Ok9iamVjdD4+IGVsZW1lbnRzOwogICAgICAgICBlbGVtZW50cy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHdlYnNpdGVEYXRhUmVjb3Jkcy5zaXplKCkpOwogCkBAIC0zMzgsMTgg
KzMzOCwxOCBAQCAtICh2b2lkKV9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczooTlNTZXQ8CiAKIC0g
KEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkCiB7Ci0gICAgcmV0dXJuIF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKCk7CiB9CiAKIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkOihCT09MKWVuYWJsZWQKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOworICAg
IF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFi
bGVkKTsKIH0KIAogLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZQogewog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgcmV0dXJuIF93ZWJzaXRl
RGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RlYnVnTW9kZSgpOwogI2Vsc2UKICAgICByZXR1cm4gTk87CiAjZW5kaWYKQEAgLTM1OCw3
ICszNTgsNyBAQCAtIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlCiAtICh2
b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOihCT09MKWVuYWJsZWQKIHsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShlbmFibGVkKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RlYnVnTW9kZShlbmFibGVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQp
OwogI2VuZGlmCkBAIC0zNjYsMTA2ICszNjYsMTA2IEBAIC0gKHZvaWQpX3NldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEZWJ1Z00KIAogLSAoTlNVSW50ZWdlcilfcGVyT3JpZ2luU3RvcmFnZVF1b3Rh
CiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGVy
T3JpZ2luU3RvcmFnZVF1b3RhKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5wZXJP
cmlnaW5TdG9yYWdlUXVvdGEoKTsKIH0KIAogLSAodm9pZClfc2V0UGVyT3JpZ2luU3RvcmFnZVF1
b3RhOihOU1VJbnRlZ2VyKXNpemUKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNldFBlck9yaWdpblN0b3JhZ2VRdW90YShzaXplKTsKKyAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+c2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKHNpemUpOwogfQogCiAtIChOU1N0cmlu
ZyAqKV9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICByZXR1
cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwogfQogCiAtICh2
b2lkKV9zZXRDYWNoZVN0b3JhZ2VEaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CiB7Ci0g
ICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7CiB9CiAKIC0gKE5TU3RyaW5nICopX3NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7
CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5KCk7CiB9CiAKIC0gKHZvaWQpX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
KGRpcmVjdG9yeSk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkoZGlyZWN0b3J5KTsKIH0KIAogLSAodm9pZClfc2V0Qm91bmRJbnRl
cmZhY2VJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihp
ZGVudGlmaWVyKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Qm91bmRJbnRlcmZhY2VJZGVu
dGlmaWVyKGlkZW50aWZpZXIpOwogfQogCiAtIChOU1N0cmluZyAqKV9ib3VuZEludGVyZmFjZUlk
ZW50aWZpZXIKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3Rv
cmUoKS5ib3VuZEludGVyZmFjZUlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRh
U3RvcmUtPmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRBbGxv
d3NDZWxsdWxhckFjY2VzczooQk9PTClhbGxvd3MKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnNldEFsbG93c0NlbGx1bGFyQWNjZXNzKGFsbG93cyA/IFdlYktp
dDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6OlllcyA6IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nl
c3M6Ok5vKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0QWxsb3dzQ2VsbHVsYXJBY2Nlc3Mo
YWxsb3dzID8gV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzIDogV2ViS2l0OjpBbGxv
d3NDZWxsdWxhckFjY2Vzczo6Tm8pOwogfQogCiAtIChCT09MKV9hbGxvd3NDZWxsdWxhckFjY2Vz
cwogewotICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmFs
bG93c0NlbGx1bGFyQWNjZXNzKCkgPT0gV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVz
OworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+YWxsb3dzQ2VsbHVsYXJBY2Nlc3MoKSA9
PSBXZWJLaXQ6OkFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXM7CiB9CiAKIC0gKHZvaWQpX3NldFBy
b3h5Q29uZmlndXJhdGlvbjooTlNEaWN0aW9uYXJ5ICopY29uZmlndXJhdGlvbgogewotICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UHJveHlDb25maWd1cmF0aW9u
KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpY29uZmlndXJhdGlvbik7CisgICAgX3dlYnNpdGVE
YXRhU3RvcmUtPnNldFByb3h5Q29uZmlndXJhdGlvbigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVm
KWNvbmZpZ3VyYXRpb24pOwogfQogCiAtIChOU1N0cmluZyAqKV9zb3VyY2VBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKKyAgICByZXR1
cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigp
OwogfQogCiAtICh2b2lkKV9zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6KE5T
U3RyaW5nICopaWRlbnRpZmllcgogewotICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKS5zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoaWRlbnRp
ZmllcikpCisgICAgaWYgKCFfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyKGlkZW50aWZpZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6
TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1hdDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIgY2Fubm90IGJlIGNhbGxlZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJdOwog
fQogCiAtIChOU1N0cmluZyAqKV9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIK
IHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVE
YXRhU3RvcmUtPnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpOwogfQogCiAt
ICh2b2lkKV9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6KE5TU3RyaW5n
ICopaWRlbnRpZmllcgogewotICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRpZmll
cikpCisgICAgaWYgKCFfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRpb25TZWNv
bmRhcnlJZGVudGlmaWVyKGlkZW50aWZpZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6
TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1hdDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXIgY2Fubm90IGJlIGNhbGxlZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJd
OwogfQogCiAtICh2b2lkKV9zZXRBbGxvd3NUTFNGYWxsYmFjazooQk9PTClhbGxvd3MKIHsKLSAg
ICBpZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0QWxsb3dzVExT
RmFsbGJhY2soYWxsb3dzKSkKKyAgICBpZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRBbGxvd3NU
TFNGYWxsYmFjayhhbGxvd3MpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmlj
RXhjZXB0aW9uIGZvcm1hdDpAIl9zZXRBbGxvd3NUTFNGYWxsYmFjayBjYW5ub3QgYmUgY2FsbGVk
IGFmdGVyIG5ldHdvcmtpbmcgaGFzIGJlZ3VuIl07CiB9CiAKIC0gKEJPT0wpX2FsbG93c1RMU0Zh
bGxiYWNrCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuYWxsb3dzVExTRmFsbGJhY2soKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmFs
bG93c1RMU0ZhbGxiYWNrKCk7CiB9CiAKIC0gKE5TRGljdGlvbmFyeSAqKV9wcm94eUNvbmZpZ3Vy
YXRpb24KIHsKLSAgICByZXR1cm4gKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKV93ZWJzaXRlRGF0
YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucHJveHlDb25maWd1cmF0aW9uKCk7CisgICAgcmV0
dXJuIChfX2JyaWRnZSBOU0RpY3Rpb25hcnkgKilfd2Vic2l0ZURhdGFTdG9yZS0+cHJveHlDb25m
aWd1cmF0aW9uKCk7CiB9CiAKIC0gKE5TVVJMICopX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
CiB7Ci0gICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X3dlYnNpdGVEYXRhU3RvcmUt
PmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICByZXR1
cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfd2Vic2l0ZURhdGFTdG9yZS0+Y29uZmlndXJhdGlv
bigpLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAog
LSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFN1Ym1pdFRlbGVtZXRyeToo
Qk9PTCl2YWx1ZQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAg
YXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3Jl
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC00ODAsMTMgKzQ4MCwxMyBAQCAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGVzdGluCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjYWxsYmFjaykgewotICAg
ICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN0YXRpc3RpY3NU
ZXN0aW5nQ2FsbGJhY2soW2NhbGxiYWNrID0gbWFrZUJsb2NrUHRyKGNhbGxiYWNrKSwgc2VsZl0o
Y29uc3QgU3RyaW5nJiBldmVudCkgeworICAgICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U3Rh
dGlzdGljc1Rlc3RpbmdDYWxsYmFjayhbY2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoY2FsbGJhY2sp
LCBzZWxmXShjb25zdCBTdHJpbmcmIGV2ZW50KSB7CiAgICAgICAgICAgICBjYWxsYmFjayhzZWxm
LCBldmVudCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3dl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdGF0aXN0aWNzVGVzdGluZ0Nh
bGxiYWNrKG51bGxwdHIpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRTdGF0aXN0aWNzVGVz
dGluZ0NhbGxiYWNrKG51bGxwdHIpOwogI2VuZGlmCiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCAt
ICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooCiAgICAgfQogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHdlYlBhZ2VQcm94eS0+
aWRlbnRpZmllcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXShhdXRvIGRvbWFpbnMpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+Z2V0QWxs
U3RvcmFnZUFjY2Vzc0VudHJpZXMod2ViUGFnZVByb3h5LT5pZGVudGlmaWVyKCksIFtjb21wbGV0
aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZG9tYWlu
cykgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gYXBpRG9tYWluczsKICAg
ICAgICAgYXBpRG9tYWlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRvbWFpbnMuc2l6ZSgpKTsK
ICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKQpAQCAtNTI0LDcgKzUyNCw3IEBA
IC0gKHZvaWQpX2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOigKIC0gKHZvaWQpX3NjaGVk
dWxlQ29va2llQmxvY2tpbmdVcGRhdGU6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVy
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUo
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7
CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2Nv
bXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTM1LDcgKzUz
NSw3IEBAIC0gKHZvaWQpX3NjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGU6KHYKIC0gKHZvaWQp
X3NldFByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnNldFByZXZhbGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9y
ZS0+c2V0UHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogICAgIH0pOwogI2Vsc2UKQEAgLTU0Niw3ICs1NDYsNyBAQCAtICh2b2lkKV9z
ZXRQcmV2YWxlbnREb21haW46KE5TVVJMICopZG9tCiAtICh2b2lkKV9nZXRJc1ByZXZhbGVudERv
bWFpbjooTlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWNv
bXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
LSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmlzUHJldmFsZW50UmVz
b3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcildKGJvb2wgZW5hYmxlZCkgeworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5p
c1ByZXZhbGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGVuYWJsZWQpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZW5hYmxlZCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTU3LDcgKzU1Nyw3
IEBAIC0gKHZvaWQpX2dldElzUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWQKIC0gKHZvaWQpX2Ns
ZWFyUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3Rv
cmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxl
ciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogICAgIH0pOwogI2Vsc2UKQEAgLTU2OCw3ICs1NjgsNyBAQCAtICh2b2lk
KV9jbGVhclByZXZhbGVudERvbWFpbjooTlNVUkwgKilkCiAtICh2b2lkKV9wcm9jZXNzU3RhdGlz
dGljc0FuZERhdGFSZWNvcmRzOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1By
b2Nlc3NpbmcoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNjaGVkdWxlU3RhdGlzdGljc0FuZERh
dGFSZWNvcmRzUHJvY2Vzc2luZyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpXSgpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9
KTsKICNlbHNlCkBAIC01NzgsMTggKzU3OCwxOCBAQCAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGlj
c0FuZERhdGFSZWNvcmRzCiAKIC0gKGJvb2wpX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyCiB7
Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoV2ViQ29yZTo6c2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRhdGFiYXNlRmlsZW5hbWUoX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhXZWJDb3JlOjpzZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShfd2Vic2l0ZURhdGFTdG9yZS0+c2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CiB9CiAKIC0gKGlkIDxfV0tXZWJzaXRlRGF0YVN0b3Jl
RGVsZWdhdGU+KV9kZWxlZ2F0ZQogewotICAgIHJldHVybiBfZGVsZWdhdGUuZ2V0KCk7CisgICAg
cmV0dXJuIF9kZWxlZ2F0ZS5nZXQoKS5nZXQoKTsKIH0KIAogLSAodm9pZClzZXRfZGVsZWdhdGU6
KGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAgX2RlbGVn
YXRlID0gZGVsZWdhdGU7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5zZXRDbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PihkZWxlZ2F0
ZSkpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRDbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJz
aXRlRGF0YVN0b3JlQ2xpZW50PihkZWxlZ2F0ZSkpOwogfQogCiBAZW5kCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlSW50ZXJuYWwuaAkocmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDEyICsyNSwxMyBAQAogCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhU3RvcmVQ
cml2YXRlLmgiCiAKLSNpbXBvcnQgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQgIldL
T2JqZWN0LmgiCisjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW1wb3J0IDx3dGYvV2Vh
a09iakNQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXRlbXBsYXRlPD4gc3RydWN0IFdy
YXBwZXJUcmFpdHM8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBX
cmFwcGVyVHJhaXRzPFdlYnNpdGVEYXRhU3RvcmU+IHsKICAgICB1c2luZyBXcmFwcGVyQ2xhc3Mg
PSBXS1dlYnNpdGVEYXRhU3RvcmU7CiB9OwogCkBAIC0zOCw3ICszOSw3IEBAIHRlbXBsYXRlPD4g
c3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpXZWIKIAogQGludGVyZmFjZSBXS1dlYnNpdGVEYXRh
U3RvcmUgKCkgPFdLT2JqZWN0PiB7CiBAcGFja2FnZQotICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxB
UEk6OldlYnNpdGVEYXRhU3RvcmU+IF93ZWJzaXRlRGF0YVN0b3JlOwotICAgIFJldGFpblB0cjxp
ZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsKKyAgICBBUEk6Ok9i
amVjdFN0b3JhZ2U8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBfd2Vic2l0ZURhdGFTdG9yZTsK
KyAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiA+IF9kZWxl
Z2F0ZTsKIH0KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDI0
OTY3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRh
U3RvcmVHTGliLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgotCi0jaWYg
UExBVEZPUk0oR1RLKQotI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid2Via2l0Z3RrIgotI2VsaWYg
UExBVEZPUk0oV1BFKQotI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid3BlIgotI2VuZGlmCi0KLW5h
bWVzcGFjZSBBUEkgewotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJh
cHBsaWNhdGlvbnMiKTsKLX0KLQotLy8gRklYTUU6IFRoZSBvdGhlciBkaXJlY3RvcmllcyBpbiB0
aGlzIGZpbGUgYXJlIHNoYXJlZCBiZXR3ZWVuIGFsbCBhcHBsaWNhdGlvbnMgdXNpbmcgV2ViS2l0
R1RLLgotLy8gV2h5IGlzIG9ubHkgdGhpcyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRp
Y3VsYXIgYXBwbGljYXRpb24/Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJn
bmFtZSgpKSwgIldlYktpdENhY2hlIikpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZ19nZXRfcHJnbmFtZSgpKSwgIkNhY2hlU3RvcmFnZSIpKTsKLX0KLQotV1RGOjpTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsK
LSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
QkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIgR19ESVJfU0VQQVJB
VE9SX1MgImluZGV4ZWRkYiIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJu
IHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNU
T1JZIEdfRElSX1NFUEFSQVRPUl9TICJzZXJ2aWNld29ya2VycyIpOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAg
ICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFT
RV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImxvY2Fsc3RvcmFnZSIpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJtZWRpYWtleXMiKTsKLX0K
LQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3Jh
Z2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGV2aWNl
aWRoYXNoc2FsdHMiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJB
VE9SX1MgImRhdGFiYXNlcyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0SFNUU0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9T
KTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1Jf
UyAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6
OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwotfQotCi1X
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2Rpcigp
KSwgZGlyZWN0b3J5TmFtZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRh
U3RvcmVXaW4uY3BwCShyZXZpc2lvbiAyNDk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw2NCArMjUsMyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0
ZURhdGFTdG9yZS5oIgotCi0jaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLQotbmFtZXNwYWNl
IEFQSSB7Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
IkFwcGxpY2F0aW9uQ2FjaGUiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCksICJDYWNoZVN0b3JhZ2UiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKLX0KLQotU3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOwotfQotCi1T
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJT
ZXJ2aWNlV29ya2VycyIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExv
Y2FsU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKLX0KLQotU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOwotfQotCi1TdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5h
bWUpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChG
aWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5
TmFtZSk7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCi17
Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAJKHJl
dmlzaW9uIDI0OTY3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzU4LDcgKzEzNTgsNyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29rCiAgICAgICAgIEFTWU5D
X0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIs
ICJUaGUgcGFyYW1ldGVyICdodHRwT25seScgd2FzIG5vdCBmb3VuZC4iKTsKIAogICAgIFdlYkNv
b2tpZU1hbmFnZXJQcm94eSogY29va2llTWFuYWdlciA9IG1fcHJvY2Vzc1Bvb2wtPnN1cHBsZW1l
bnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tp
ZXMocGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpLCB7IGNvb2tpZSB9LCBbY2Fs
bGJhY2sgPSBjYWxsYmFjay5jb3B5UmVmKCldKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsK
KyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKHBhZ2UtPnNlc3Npb25JRCgpLCB7IGNvb2tp
ZSB9LCBbY2FsbGJhY2sgPSBjYWxsYmFjay5jb3B5UmVmKCldKENhbGxiYWNrQmFzZTo6RXJyb3Ig
ZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yID09IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUp
CiAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKICAgICAgICAgZWxzZQpAQCAt
MTM3OCw3ICsxMzc4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29v
awogICAgIFN0cmluZyBob3N0ID0gYWN0aXZlVVJMLmhvc3QoKS50b1N0cmluZygpOwogCiAgICAg
V2ViQ29va2llTWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+c3Vw
cGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29va2llTWFuYWdlci0+ZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lcyhwYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklE
KCksIHsgaG9zdCwgZG9tYWluQnlBZGRpbmdEb3RQcmVmaXhJZk5lZWRlZChob3N0KSB9KTsKKyAg
ICBjb29raWVNYW5hZ2VyLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKHBhZ2UtPnNlc3Npb25J
RCgpLCB7IGhvc3QsIGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZOZWVkZWQoaG9zdCkgfSk7CiB9
CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldFNlc3Npb25QZXJtaXNzaW9ucyhFcnJv
clN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlNlc3Npb25QZXJtaXNzaW9uRGF0YT4+JiBvdXRfcGVybWlzc2lvbnMpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShy
ZXZpc2lvbiAyNDk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQgIkFQ
SVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJBUElTdHJpbmcuaCIKICNpbXBvcnQgIkFQ
SVVSTC5oIgotI2ltcG9ydCAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2ltcG9ydCAiQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkRlY2lz
aW9uTGlzdGVuZXIuaCIKQEAgLTY0LDYgKzYzLDcgQEAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5o
IgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm90ZWN0aW9uU3Bh
Y2UuaCIKKyNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQgIl9XS0NvbnRlbnRS
dWxlTGlzdEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tFcnJvclJlY292ZXJ5QXR0ZW1w
dGluZy5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgpAQCAtNTk0LDcgKzU5
NCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjoKIAogICAgICAg
ICBpZiAoYXBpV2Vic2l0ZVBvbGljaWVzKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogd2Vic2l0
ZURhdGFTdG9yZSA9IGFwaVdlYnNpdGVQb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpKSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byBzZXNzaW9uSUQgPSB3ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuc2Vzc2lvbklEKCk7CisgICAgICAgICAgICAgICAgYXV0byBzZXNzaW9uSUQg
PSB3ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsKICAgICAgICAgICAgICAgICBpZiAoIXNl
c3Npb25JRC5pc0VwaGVtZXJhbCgpICYmIHNlc3Npb25JRCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpKQogICAgICAgICAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6
TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiV0tXZWJwYWdlUHJlZmVyZW5jZXMu
X3dlYnNpdGVEYXRhU3RvcmUgbXVzdCBiZSBuaWwsIGRlZmF1bHQsIG9yIG5vbi1wZXJzaXN0ZW50
LiJdOwogICAgICAgICAgICAgICAgIGlmIChzdWJmcmFtZU5hdmlnYXRpb24pCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAJKHJldmlzaW9uIDI0OTY3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3
LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29ya1Byb2Nlc3NQcm94eQogICAgIGNvbm5l
Y3QoKTsKIAogICAgIGlmIChhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gbV9wcm9jZXNzUG9vbC53
ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZXMuc2V0KHdlYnNp
dGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwgbWFrZVJlZih3ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkpKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0
YVN0b3Jlcy5zZXQod2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCksIG1ha2VSZWYoKndlYnNp
dGVEYXRhU3RvcmUpKTsKIH0KIAogTmV0d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdvcmtQcm9jZXNz
UHJveHkoKQpAQCAtMTEzNCwxNCArMTEzNCwxNCBAQCBXZWJzaXRlRGF0YVN0b3JlKiBOZXR3b3Jr
UHJvY2Vzc1Byb3h5Ojp3CiAgICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAK
ICAgICBpZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IG1fcHJvY2Vzc1Bvb2wud2Vic2l0ZURh
dGFTdG9yZSgpKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uSUQgPT0gd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKQotICAgICAgICAgICAgcmV0dXJuICZ3ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgICAgIGlmIChzZXNzaW9uSUQg
PT0gd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpCisgICAgICAgICAgICByZXR1cm4gd2Vi
c2l0ZURhdGFTdG9yZTsKICAgICB9CiAKICAgICBpZiAoc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuICZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS0+d2Vic2l0
ZURhdGFTdG9yZSgpOworICAgIHJldHVybiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlKCkucHRyKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmV0cmlldmVDYWNo
ZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCShyZXZpc2lvbiAyNDk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNs
dWRlICJBdXhpbGlhcnlQcm9jZXNzUHJveHkuaCIKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9Q
Uk9UT0NPTF9NQU5BR0VSKQogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclBy
b3h5LmgiCkBAIC0zNiw2ICszNSw3IEBACiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlckNsaWVu
dC5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8bWVt
b3J5PgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDI0OTY3MSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwxNSArMjYsMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKKyNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIK
ICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBUElX
ZWJzaXRlRGF0YVJlY29yZC5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIkRldmljZUlkSGFzaFNh
bHRTdG9yYWdlLmgiCiAjaW5jbHVkZSAiTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0
aGVyU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKKyNpbmNs
dWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NDYWNoZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5o
IgpAQCAtMTM5LDYgKzE0MCw1OCBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3Jl
KFBBTDo6CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAorc3RhdGljIFJlZlB0
cjxXZWJzaXRlRGF0YVN0b3JlPiYgZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPj4gZ2xvYmFsRGVmYXVs
dERhdGFTdG9yZTsKKyAgICByZXR1cm4gZ2xvYmFsRGVmYXVsdERhdGFTdG9yZS5nZXQoKTsKK30K
KworUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3Rv
cmUoKQoreworICAgIEluaXRpYWxpemVXZWJLaXQyKCk7CisKKyAgICBhdXRvJiBzdG9yZSA9IGds
b2JhbERlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICBzdG9yZSA9
IGFkb3B0UmVmKG5ldyBXZWJzaXRlRGF0YVN0b3JlKGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0
aW9uKCksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKTsKKworICAgIHJldHVy
biAqc3RvcmU7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGVsZXRlRGVmYXVsdERhdGFT
dG9yZUZvclRlc3RpbmcoKQoreworICAgIGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKSA9IG51bGxw
dHI7Cit9CisKK2Jvb2wgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygp
Cit7CisgICAgcmV0dXJuICEhZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpOworfQorCitSZWY8V2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKworICAgIGNvbmZpZ3Vy
YXRpb24tPnNldFBlcnNpc3RlbnQodHJ1ZSk7CisKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkp
OworICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVj
dG9yeU5hbWUoIkZpbGVzIik7CisgICAgY29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGly
ZWN0b3J5KGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlv
bi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFDYWNoZURpcmVjdG9yeShkZWZhdWx0TWVk
aWFDYWNoZURpcmVjdG9yeSgpKTsKKworICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAg
ICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRl
ZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3Vy
YXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRN
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkoZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CisgICAgY29uZmln
dXJhdGlvbi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHREZXZp
Y2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CisKKyAgICBjb25maWd1cmF0aW9uLT5z
ZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShkZWZhdWx0SmF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoKSk7CisKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK30KKwog
V2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CkBAIC0xNzI4LDcgKzE3ODEsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnJlc2V0Q2FjaGVNYXhBZ2VDCiBib29sIFdlYnNpdGVEYXRhU3RvcmU6OmlzQXNzb2NpYXRl
ZFByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkgY29uc3QKIHsKICAgICBp
ZiAoYXV0byogcHJvY2Vzc1Bvb2xEYXRhU3RvcmUgPSBwcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0
b3JlKCkpCi0gICAgICAgIHJldHVybiAmcHJvY2Vzc1Bvb2xEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKSA9PSB0aGlzOworICAgICAgICByZXR1cm4gcHJvY2Vzc1Bvb2xEYXRhU3RvcmUgPT0g
dGhpczsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE3NTQsNyArMTgwNyw3IEBAIEhhc2hT
ZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gV2Vic2l0ZUQKICAgICB9CiAKICAgICBpZiAocHJv
Y2Vzc1Bvb2xzLmlzRW1wdHkoKSAmJiBjb3VudCAmJiBlbnN1cmVBUG9vbEV4aXN0cykgewotICAg
ICAgICBhdXRvIHByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uKG1fY29uZmlndXJhdGlvbikpOworICAgICAgICBhdXRvIHByb2Nlc3NQb29sID0gV2ViUHJv
Y2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkp
OwogICAgICAgICBwcm9jZXNzUG9vbHMuYWRkKHByb2Nlc3NQb29sLnB0cigpKTsKICAgICB9CiAK
QEAgLTIwMDEsNiArMjA1NCwxNCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmFkZFNlY0tleVBy
b3h5U3RvCiB9CiAjZW5kaWYKIAorI2lmICFVU0UoR0xJQikKK1dURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQorewor
ICAgIC8vIE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKK30KKyNl
bmRpZgorCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlz
aW9uIDI0OTY3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTEgKzkyLDE5IEBAIGVudW0gY2xh
c3MgU3RvcmFnZUFjY2Vzc1Byb21wdFN0YXR1czsKIHN0cnVjdCBQbHVnaW5Nb2R1bGVJbmZvOwog
I2VuZGlmCiAKLWNsYXNzIFdlYnNpdGVEYXRhU3RvcmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJz
aXRlRGF0YVN0b3JlPiwgcHVibGljIElkZW50aWZpZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxXZWJzaXRlRGF0YVN0b3JlPiAgeworY2xhc3MgV2Vic2l0ZURhdGFT
dG9yZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OldlYnNpdGVE
YXRhU3RvcmU+LCBwdWJsaWMgSWRlbnRpZmllZDxXZWJzaXRlRGF0YVN0b3JlPiwgcHVibGljIENh
bk1ha2VXZWFrUHRyPFdlYnNpdGVEYXRhU3RvcmU+ICB7CiBwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxXZWJzaXRlRGF0YVN0b3JlPiBkZWZhdWx0RGF0YVN0b3JlKCk7CisgICAgc3RhdGljIGJvb2wg
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpOworICAgIHN0YXRpYyB2b2lkIGRlbGV0ZURlZmF1bHRE
YXRhU3RvcmVGb3JUZXN0aW5nKCk7CisgICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uPiBkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOworCiAg
ICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50KCk7CiAg
ICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoUmVmPFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7Ci0gICAgdmlydHVhbCB+V2Vic2l0
ZURhdGFTdG9yZSgpOworCisgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShQQUw6OlNlc3Np
b25JRCk7CisgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24+JiYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB+V2Vic2l0ZURhdGFTdG9y
ZSgpOwogCiAgICAgc3RhdGljIFdlYnNpdGVEYXRhU3RvcmUqIGV4aXN0aW5nTm9uRGVmYXVsdERh
dGFTdG9yZUZvclNlc3Npb25JRChQQUw6OlNlc3Npb25JRCk7CiAKQEAgLTI2NSwxMCArMjczLDEx
IEBAIHB1YmxpYzoKICAgICBTT0F1dGhvcml6YXRpb25Db29yZGluYXRvciYgc29BdXRob3JpemF0
aW9uQ29vcmRpbmF0b3IoKSB7IHJldHVybiBtX3NvQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLmdl
dCgpOyB9CiAjZW5kaWYKIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3Jl
KFBBTDo6U2Vzc2lvbklEKTsKLSAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHN0YXRp
YyBXVEY6OlN0cmluZyBkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgp
OworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7
CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KCk7CiAKK3ByaXZhdGU6CiAgICAgdm9pZCBmZXRjaERhdGFBbmRBcHBseShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBS
ZWZQdHI8V29ya1F1ZXVlPiYmLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29y
ZD4pPiYmIGFwcGx5KTsKIAogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0yNzks
NiArMjg4LDI3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0
ZXJzKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJik7CiAjZW5kaWYKIAorICAgIHN0YXRpYyBX
VEY6OlN0cmluZyBkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOworICAgIHN0YXRp
YyBXVEY6OlN0cmluZyBkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgc3RhdGlj
IFdURjo6U3RyaW5nIGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RG
OjpTdHJpbmcgZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7CisgICAgc3RhdGlj
IFdURjo6U3RyaW5nIGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgc3Rh
dGljIFdURjo6U3RyaW5nIGRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnko
KTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCk7CisjaWYgVVNFKEdMSUIpCisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRIU1RTRGly
ZWN0b3J5KCk7CisjZW5kaWYKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CisKKyAgICBlbnVtIFNob3VsZENyZWF0ZURpcmVj
dG9yeSB7IENyZWF0ZURpcmVjdG9yeSwgRG9udENyZWF0ZURpcmVjdG9yeSB9OworCisgICAgV2Vi
c2l0ZURhdGFTdG9yZSgpOworCisgICAgc3RhdGljIFdURjo6U3RyaW5nIHRlbXBEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUs
IFNob3VsZENyZWF0ZURpcmVjdG9yeSA9IENyZWF0ZURpcmVjdG9yeSk7CisgICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdU
Rjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgd2Vic2l0
ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcm
IGRpcmVjdG9yeU5hbWUpOworICAgIAogICAgIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29s
Pj4gcHJvY2Vzc1Bvb2xzKHNpemVfdCBjb3VudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCksIGJvb2wgZW5zdXJlQVBvb2xFeGlzdHMgPSB0cnVlKSBjb25zdDsKIAogI2lmIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgogCi0jaW5jbHVkZSAiQVBJV2Vi
c2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbigpCi0gICAgOiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSgpKQorICAgIDogbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkp
CiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHJldmlz
aW9uIDI0OTY3MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBA
QAogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiAjaW1wb3J0ICJDb29raWVTdG9yYWdl
VXRpbHNDRi5oIgorI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiU3RvcmFn
ZU1hbmFnZXIuaCIKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgog
I2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKQEAgLTIzMCw0ICsyMzEsMTYx
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1SZW1vdmVSZWMKICAgICBXZWJDb3Jl
OjpyZW1vdmVSZWNlbnRseU1vZGlmaWVkUmVjZW50U2VhcmNoZXMob2xkZXN0VGltZVRvUmVtb3Zl
KTsKIH0KIAorTlNTdHJpbmcgKldlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldl
YkRhdGFiYXNlRGlyZWN0b3J5IjsKK05TU3RyaW5nICpXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVs
dHNLZXkgPSBAIldlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VLZXkiOwor
TlNTdHJpbmcgKldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0
TWVkaWFDYWNoZURpcmVjdG9yeSI7CitOU1N0cmluZyAqV2ViS2l0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5IjsK
KworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkoKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gVGhpcyBxdWly
ayB1c2VkIHRvIG1ha2UgdGhlc2UgYXBwcyBzaGFyZSBhcHBsaWNhdGlvbiBjYWNoZSBzdG9yYWdl
LCBidXQgZG9lc24ndCBhY2NvbXBsaXNoIHRoYXQgYW55IG1vcmUuCisgICAgLy8gUHJlc2Vydmlu
ZyBpdCBhdm9pZHMgdGhlIG5lZWQgdG8gbWlncmF0ZSBkYXRhIHdoZW4gdXBncmFkaW5nLgorICAg
IC8vIEZJWE1FOiBJZGVhbGx5IHdlIHNob3VsZCBqdXN0IGhhdmUgU2FmYXJpLCBXZWJBcHAsIGFu
ZCB3ZWJib29rbWFya3NkIGNyZWF0ZSBhIGRhdGEgc3RvcmUgd2l0aAorICAgIC8vIHRoaXMgYXBw
bGljYXRpb24gY2FjaGUgcGF0aCwgYnV0IHRoYXQncyBub3Qgc3VwcG9ydGVkIGFzIG9mIHJpZ2h0
IG5vdy4KKyAgICBpZiAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCkg
fHwgV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViQXBwKCkgfHwgV2ViQ29yZTo6SU9TQXBw
bGljYXRpb246OmlzV2ViQm9va21hcmtzRCgpKSB7CisgICAgICAgIE5TU3RyaW5nICpjYWNoZVBh
dGggPSBbTlNIb21lRGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
TGlicmFyeS9DYWNoZXMvY29tLmFwcGxlLldlYkFwcENhY2hlIl07CisKKyAgICAgICAgcmV0dXJu
IFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChjYWNoZVBhdGguc3RyaW5n
QnlTdGFuZGFyZGl6aW5nUGF0aCk7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gY2FjaGVE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk9mZmxpbmVXZWJBcHBsaWNhdGlvbkNh
Y2hlIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0
b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbigiQ2FjaGVTdG9yYWdlIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBj
YWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTmV0d29ya0NhY2hlIik7Cit9
CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0
b3J5KCkKK3sKKyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bigiTWVkaWFDYWNoZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0
YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSW5kZXhlZERCIik7Cit9CisKK1dU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oIlNlcnZpY2VXb3JrZXJzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3
ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTG9jYWxTdG9yYWdl
Iik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhS2V5cyIpOworfQorCitXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiV2ViU1FM
Iik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKK30K
KworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbigiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIERvbnRDcmVhdGVEaXJlY3Rvcnkp
OworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBTaG91
bGRDcmVhdGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQoreworICAgIHN0YXRpYyBk
aXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBOU1VSTCAqdGVtcFVSTDsKKyAg
ICAKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIE5TVVJMICp1cmwg
PSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOk5TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgaXNEaXJlY3Rv
cnk6WUVTXTsKKyAgICAgICAgaWYgKCF1cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXND
b250YWluZXIoKSkgeworICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKKyAgICAgICAgICAgIGlmICgh
YnVuZGxlSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVyID0gW05T
UHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOworICAgICAgICAgICAgdXJsID0g
W3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBpc0RpcmVj
dG9yeTpZRVNdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0ZW1wVVJMID0gW1t1cmwg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJl
dGFpbl07CisgICAgfSk7CisgICAgCisgICAgTlNVUkwgKnVybCA9IFt0ZW1wVVJMIFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisKKyAg
ICBpZiAoc2hvdWxkQ3JlYXRlRGlyZWN0b3J5ID09IENyZWF0ZURpcmVjdG9yeQorICAgICAgICAm
JiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6
dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6
bnVsbHB0cl0pKQorICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5
ICVAIiwgdXJsKTsKKyAgICAKKyAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpj
YWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYg
ZGlyZWN0b3J5TmFtZSkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsK
KyAgICBzdGF0aWMgTlNVUkwgKmNhY2hlVVJMOworCisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRv
a2VuLCBeeworICAgICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNDYWNoZXNEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9t
YWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRy
XTsKKyAgICAgICAgaWYgKCF1cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsK
KyAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5C
dW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZp
ZXIpCisgICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHBy
b2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhY2hlVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07CisgICAgfSk7CisKKyAg
ICBOU1VSTCAqdXJsID0gW2NhY2hlVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJl
Y3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGly
ZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQorICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKKworICAgIHJldHVy
biB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Cit9CisKK1dU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAg
IHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBOU1VSTCAqd2Vi
c2l0ZURhdGFVUkw7CisKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAg
IE5TVVJMICp1cmwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVj
dG9yeTpOU0xpYnJhcnlEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3By
aWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKKyAgICAgICAgaWYg
KCF1cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAg
ICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0Rp
cmVjdG9yeTpZRVNdOworCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVy
KCkpIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxl
IG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1bmRsZUlk
ZW50aWZpZXIpCisgICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJ
bmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9IFt1cmwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVT
XTsKKyAgICAgICAgfQorCisgICAgICAgIHdlYnNpdGVEYXRhVVJMID0gW1t1cmwgVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiV2Vic2l0ZURhdGEiIGlzRGlyZWN0b3J5OllFU10gcmV0YWlu
XTsKKyAgICB9KTsKKworICAgIE5TVVJMICp1cmwgPSBbd2Vic2l0ZURhdGFVUkwgVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBp
ZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6
dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6
bnVsbHB0cl0pCisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3Rvcnkg
JUAiLCB1cmwpOworCisgICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbjsKK30KKwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNw
cAkocmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCkBAIC00NSw0ICs0Niw1OSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnBsYXRmb3JtUmVtb3ZlUmVjCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKK3sKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIp
OworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVj
dG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkNhY2hl
U3RvcmFnZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtD
YWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIk5ldHdvcmtDYWNoZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlNlcnZpY2VXb3JrZXJzIik7Cit9
CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9y
YWdlIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIk1lZGlhS2V5U3RvcmFnZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCit7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsK
K30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKK30KKworU3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRh
U3RvcmVHTGliLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGli
L1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkocmV2aXNpb24gMjQ5NjcxKQkoZnJvbSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6MjQ5
NjcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xp
Yi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorCisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisKKyNpZiBQTEFURk9S
TShHVEspCisjZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3ZWJraXRndGsiCisjZWxpZiBQTEFURk9S
TShXUEUpCisjZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCisjZW5kaWYKKworbmFtZXNwYWNl
IEFQSSB7CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImFwcGxpY2F0
aW9ucyIpOworfQorCisvLyBGSVhNRTogVGhlIG90aGVyIGRpcmVjdG9yaWVzIGluIHRoaXMgZmls
ZSBhcmUgc2hhcmVkIGJldHdlZW4gYWxsIGFwcGxpY2F0aW9ucyB1c2luZyBXZWJLaXRHVEsuCisv
LyBXaHkgaXMgb25seSB0aGlzIGRpcmVjdG9yeSBuYW1lc3BhY2VkIHRvIGEgcGFydGljdWxhciBh
cHBsaWNhdGlvbj8KK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkp
LCAiV2ViS2l0Q2FjaGUiKSk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dl
dF9wcmduYW1lKCkpLCAiQ2FjaGVTdG9yYWdlIikpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJ
UkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGF0YWJhc2VzIiBHX0RJUl9TRVBBUkFUT1JfUyAi
aW5kZXhlZGRiIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0
ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19E
SVJfU0VQQVJBVE9SX1MgInNlcnZpY2V3b3JrZXJzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVy
biB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVD
VE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAibG9jYWxzdG9yYWdlIik7Cit9CisKK1dURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKK3sK
KyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
QkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgIm1lZGlha2V5cyIpOworfQorCitTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJkZXZpY2VpZGhhc2hz
YWx0cyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAi
ZGF0YWJhc2VzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRI
U1RTRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MpOworfQor
CitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5n
JiBkaXJlY3RvcnlOYW1lKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7Cit9CisKK1dURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBkaXJl
Y3RvcnlOYW1lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkocmV2
aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0
YVN0b3JlR0xpYi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtMzUsNyArMzUsNyBAQAogI2Rl
ZmluZSBCQVNFX0RJUkVDVE9SWSAid3BlIgogI2VuZGlmCiAKLW5hbWVzcGFjZSBBUEkgeworbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRB
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQ5NjcxKQorKysgU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTc4LDcgKzE3OCw2IEBACiAJCTFBMzAwNjZFMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNw
b25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTMwMDY2QzExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5o
ICovOyB9OwogCQkxQTMzNERFRDE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKIAkJMUEzMzRERUUxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VB
cmVhTWFwTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBMzM0REVDMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2Vz
LmggKi87IH07Ci0JCTFBMzYzNUFBMUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0
b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTM2
MzVBODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oICovOyB9OwogCQkx
QTNDODg4MDE4QTVBQkFFMDBDNEM5NjIgLyogV0tQcmVmZXJlbmNlc0ludGVybmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNDODg3RjE4QTVBQkFF
MDBDNEM5NjIgLyogV0tQcmVmZXJlbmNlc0ludGVybmFsLmggKi87IH07CiAJCTFBM0NDMTY3MTg5
MDZBQ0YwMDFFNkVEOCAvKiBXS1dlYlZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0NDMTY1MTg5MDZBQ0YwMDFFNkVEOCAvKiBXS1dlYlZpZXcu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTFBM0ND
MTY5MTg5MDdFQjAwMDFFNkVEOCAvKiBXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0NDMTY4MTg5MDdFQjAwMDFF
NkVEOCAvKiBXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCAqLzsgfTsKQEAgLTE3MjUsNiArMTcyNCw4
IEBACiAJCQljb21waWxlclNwZWMgPSBjb20uYXBwbGUuY29tcGlsZXJzLnByb3h5LnNjcmlwdDsK
IAkJCWZpbGVQYXR0ZXJucyA9ICIqLmgiOwogCQkJZmlsZVR5cGUgPSBwYXR0ZXJuLnByb3h5Owor
CQkJaW5wdXRGaWxlcyA9ICgKKwkJCSk7CiAJCQlpc0VkaXRhYmxlID0gMTsKIAkJCW91dHB1dEZp
bGVzID0gKAogCQkJCSIkKEhFQURFUl9PVVRQVVRfRElSKS8kKElOUFVUX0ZJTEVfTkFNRSkiLApA
QCAtMjEyMSw5ICsyMTIyLDYgQEAKIAkJMUEzMzRERUExNkRFOEI2ODAwNkE4RTM4IC8qIFN0b3Jh
Z2VBcmVhTWFwLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTMzNERFQjE2REU4Rjg4MDA2QThFMzggLyog
U3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFBMzM0REVDMTZERThGODgw
MDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwotCQkxQTM2MzVBNzFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0
ZURhdGFTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElX
ZWJzaXRlRGF0YVN0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEzNjM1
QTgxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxQTM2MzVBQjFBMzE0NUU1MDBFRDYxOTcgLyogQVBJV2Vic2l0ZURh
dGFTdG9yZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
QVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQTNBNzNDQjFBNDhDNkQ0MDA3MjMxQjMgLyogQVBJUGFnZUdyb3VwSGFuZGxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVBhZ2VHcm91cEhhbmRsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBM0E3M0NDMUE0OEM2RDQwMDcyMzFCMyAv
KiBBUElQYWdlR3JvdXBIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QVBJUGFnZUdyb3VwSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBM0M4
ODdGMThBNUFCQUUwMEM0Qzk2MiAvKiBXS1ByZWZlcmVuY2VzSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcmVmZXJlbmNlc0ludGVybmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzY3LDcgKzYzNjUsNiBAQAogCQkJCTdDRUZBOTYwMUFD
MDk5OTMwMEI5MTBGRCAvKiBBUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tICovLAogCQkJ
CTVDQTQ2RTdBMjFGMUEyMzkwMENFODZCNCAvKiBBUElIVFRQQ29va2llU3RvcmVDb2NvYS5tbSAq
LywKIAkJCQlGRUQzQzFEQTFCNDQ3QUU4MDBFMEVCN0YgLyogQVBJU2VyaWFsaXplZFNjcmlwdFZh
bHVlQ29jb2EubW0gKi8sCi0JCQkJMUEzNjM1QUIxQTMxNDVFNTAwRUQ2MTk3IC8qIEFQSVdlYnNp
dGVEYXRhU3RvcmVDb2NvYS5tbSAqLywKIAkJCQkxQUZERTY0MzE5NTEwQjU1MDBDNDhGRkEgLyog
TGVnYWN5QnVuZGxlRm9yQ2xhc3MubW0gKi8sCiAJCQkJMUMyMDkzNUUyMjMxOENCMDAwMDI2QTM5
IC8qIE5TQXR0cmlidXRlZFN0cmluZy5oICovLAogCQkJCTFDMjA5MzVGMjIzMThDQjAwMDAyNkEz
OSAvKiBOU0F0dHJpYnV0ZWRTdHJpbmcubW0gKi8sCkBAIC03OTc3LDggKzc5NzQsNiBAQAogCQkJ
CTJEODc4NjIyMUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5oICovLAogCQkJ
CTFBRTI4NjgxMUM3RjkzODYwMDY5QUM0RiAvKiBBUElXZWJzaXRlRGF0YVJlY29yZC5jcHAgKi8s
CiAJCQkJMUFFMjg2ODIxQzdGOTM4NjAwNjlBQzRGIC8qIEFQSVdlYnNpdGVEYXRhUmVjb3JkLmgg
Ki8sCi0JCQkJMUEzNjM1QTcxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUu
Y3BwICovLAotCQkJCTFBMzYzNUE4MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0
b3JlLmggKi8sCiAJCQkJNUM4REQzN0QxRkU0NTAxMTAwRjJBNTU2IC8qIEFQSVdlYnNpdGVQb2xp
Y2llcy5jcHAgKi8sCiAJCQkJNUM4REQzN0MxRkU0NTAxMTAwRjJBNTU2IC8qIEFQSVdlYnNpdGVQ
b2xpY2llcy5oICovLAogCQkJCTFBNjU2M0UyMUI3QThDNTAwMDlDRjc4NyAvKiBBUElXaW5kb3dG
ZWF0dXJlcy5jcHAgKi8sCkBAIC05MzgyLDcgKzkzNzcsNiBAQAogCQkJCUM1RTFBRkVEMTZCMjEw
MTcwMDZDQzFGMiAvKiBBUElXZWJBcmNoaXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNUUxQUZF
RjE2QjIxMDI5MDA2Q0MxRjIgLyogQVBJV2ViQXJjaGl2ZVJlc291cmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUUyODY4NDFDN0Y5Mzg2MDA2OUFDNEYgLyogQVBJV2Vic2l0ZURhdGFSZWNvcmQu
aCBpbiBIZWFkZXJzICovLAotCQkJCTFBMzYzNUFBMUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJz
aXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTY1NjNFNTFCN0E4QzUwMDA5Q0Y3
ODcgLyogQVBJV2luZG93RmVhdHVyZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0OEQyQTg1MjE1
ODNBN0UwMEM2NzUyQiAvKiBBcHBLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDRDMTkz
MUIzOUYzMzIwMEFCQzI4RSAvKiBBcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oIGluIEhlYWRlcnMg
Ki8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378484</attachid>
            <date>2019-09-10 13:51:46 -0700</date>
            <delta_ts>2019-09-10 13:59:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201655-20190910135145.patch</filename>
            <type>text/plain</type>
            <size>185141</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2NyBAQAorMjAxOS0wOS0xMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB1bm5l
Y2Vzc2FyeSBhYnN0cmFjdGlvbnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBmb3Vy
IHRoaW5ncyB0byBzaW1wbGlmeSBXZWJzaXRlRGF0YVN0b3JlIGNvZGU6CisgICAgICAgIDEuIEl0
IHJlbW92ZXMgQVBJOjpXZWJzaXRlRGF0YVN0b3JlLCB3aGljaCB3YXMganVzdCBhbiB1bm5lY2Vz
c2FyeSB3cmFwcGVyIGFyb3VuZCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUuCisgICAgICAgIDIu
IEl0IGRlcHJlY2F0ZXMgdGhlIHVudXNlZCBhbGlhc2VzIG9mIFdlYnNpdGVEYXRhU3RvcmUsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYW5kIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZgorICAgICAgICAzLiBJdCByZW1vdmVzIHRoZSB1bnVzZWQgQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHByb3BlcnRpZXMgdGhhdCBoYXZlIGJlZW4gbW92ZWQgdG8gV2Vic2l0ZURhdGFTdG9y
ZS4KKyAgICAgICAgNC4gSXQgbWFrZXMgV0tXZWJzaXRlRGF0YVN0b3JlLl9kZWxlZ2F0ZSB3ZWFr
IGluc3RlYWQgb2Ygc3Ryb25nLCBhcyBhbHJlYWR5IGFubm90YXRlZCBpbiBXS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZSBpbiBiZWhh
dmlvciBmcm9tIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZToKKyAg
ICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAg
ICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tp
ZVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6CisgICAg
ICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURh
dGFTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
RGF0YVN0b3JlLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
UG9saWNpZXMuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlUG9saWNpZXM6OmRhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5zKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJEZWxldGVBbGxFbnRyaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
UG9saWN5TGlzdGVuZXIuY3BwOgorICAgICAgICAodXNlV2l0aFBvbGljaWVzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCk6CisgICAgICAgIChXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KToKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAoV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLUmVzb3VyY2VDYWNo
ZU1hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENh
Y2hlT3JpZ2lucyk6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZv
ck9yaWdpbik6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFs
bE9yaWdpbnMpOgorICAgICAgICAodG9XZWJzaXRlRGF0YVR5cGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdl
dERlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlTm9u
UGVyc2lzdGVudERhdGFTdG9yZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVX
aXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29v
a2llU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZVdpdGhDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RT
ZWVuKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVBy
ZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKToKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSk6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5n
VGVzdCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hvdWxkQ2xh
c3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzTWF4U3RhdGlzdGljc0VudHJpZXMpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1BydW5lRW50cmllc0Rvd25Ubyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9u
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGb3JPcmlnaW4p
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnMpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW4pOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmln
aW5TdG9yYWdlUXVvdGEpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdKToK
KyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdKToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIGh0dHBDb29raWVTdG9yZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6bW9kaWZpZWRTaW5jZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOmZv
ckRhdGFSZWNvcmRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgX2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKToKKyAgICAgICAgKCtbV0tXZWJzaXRl
RGF0YVN0b3JlIF9kZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZ10pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3aXRoT3B0aW9u
czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Blck9yaWdpblN0b3Jh
Z2VRdW90YV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFBlck9yaWdpblN0
b3JhZ2VRdW90YTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRDYWNoZVN0
b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOl0pOgor
ICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcl0p
OgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldEFsbG93c0NlbGx1bGFyQWNjZXNz
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93c0NlbGx1bGFyQWNjZXNz
XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJveHlDb25maWd1cmF0aW9u
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFNvdXJj
ZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXI6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0QWxsb3dzVExTRmFs
bGJhY2s6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dzVExTRmFsbGJh
Y2tdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm94eUNvbmZpZ3VyYXRpb25d
KToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zv
cjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9z
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRJc1ByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERv
bWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3Jl
IF9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOl0pOgorICAgICAgICAoLVtXS1dlYnNp
dGVEYXRhU3RvcmUgX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyXSk6CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHNldF9kZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAg
ICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29y
a1Byb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ondl
YnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bV93ZWJQcm9jZXNzQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRl
bnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJt
ZWRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp0ZW1w
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxEZWZhdWx0RGF0
YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHRE
YXRhU3RvcmVGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2wgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAg
ICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6
IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRIU1RTRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Ondl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOS0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEhhbmdzIG9uIFN3aXNz
LmNvbSBkdWUgdG8gdGhlIHdlYiBwcm9jZXNzIGJlaW5nIGJsb2NrZWQgb24gU3RvcmFnZUFyZWFN
YXA6OkxvYWRWYWx1ZXNJZk5lZWRlZApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAg
ICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAotICAgIFVJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAogICAgIFVJ
UHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcApJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5E
IFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAot
ICAgIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKIAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVy
V2luLmNwcApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDYgQEAgVUlQcm9j
ZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVu
dFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElVc2VyU3R5bGVTaGVldC5jcHAKLVVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElXaW5kb3dGZWF0dXJlcy5jcHAKIApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yNzQsNyArMjc0LDYgQEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubQogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNv
Y29hLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCi1VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9MZWdhY3lCdW5kbGVGb3JDbGFzcy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0
dHJpYnV0ZWRTdHJpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3Qu
bW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9Tb3VyY2VzR1RLLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw2IEBAIFVJ
UHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9n
dGsvV0tWaWV3LmNwcAogCiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVz
dC5jcHAgQG5vLXVuaWZ5CkBAIC0yMzIsNiArMjMxLDcgQEAgVUlQcm9jZXNzL2NhaXJvL0JhY2tp
bmdTdG9yZUNhaXJvLmNwcCBAbgogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcAogVUlQcm9jZXNzL2dzdHJlYW1lci9X
ZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTExNCw3ICsxMTQsNiBAQCBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMu
Y3BwCiBVSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKIAogVUlQcm9jZXNzL0FQSS9nbGli
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlR0xpYi5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJ
L2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXBwbGljYXRpb25JbmZvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwIEBuby11bmlmeQpAQCAtMTkyLDYgKzE5MSw3IEBA
IFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3YKIAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5
R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5p
ZnkKIAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKIFVJ
UHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJu
aW5nLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNyAr
NDE2LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgICwg
bV9wcmVmZXJlbmNlcygqbV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpKQogICAgICwgbV91
c2VyQ29udGVudENvbnRyb2xsZXIoKm1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRl
ZExpbmtTdG9yZSgpKQotICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+
d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCisgICAgLCBtX3dlYnNpdGVE
YXRhU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKQogICAgICwgbV91
c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgeyBtX2NvbmZpZ3VyYXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5KCkgfQogICAgICwgbV90cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZp
Z3VyYXRpb24tPnRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCkBAIC0y
ODY3LDggKzI4NjcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9s
CiAgICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gZGF0YTsKICAgICBpZiAocG9saWNp
ZXMpIHsKICAgICAgICAgZGF0YSA9IHBvbGljaWVzLT5kYXRhKCk7Ci0gICAgICAgIGlmIChwb2xp
Y2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpICYmICZwb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgp
LT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSkgewotICAgICAg
ICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCktPndl
YnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAgaWYgKHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3Jl
KCkgJiYgcG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlLnB0
cigpKSB7CisgICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gKnBvbGljaWVzLT53ZWJzaXRl
RGF0YVN0b3JlKCk7CiAgICAgICAgICAgICBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDQsOCArMjQ0LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nl
c3NQb29sKEFQSTo6UHJvYwogICAgICAgICBQcm9jZXNzOjpzZXRJZGVudGlmaWVyKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKICAgICB9KTsKIAotICAgIGlmICghbV93
ZWJzaXRlRGF0YVN0b3JlICYmIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZUV4aXN0cygpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSAm
JiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCisgICAgICAgIG1f
d2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsK
IAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV9jb25maWd1cmF0aW9uLT5hbHdheXNSZXZhbGlk
YXRlZFVSTFNjaGVtZXMoKSkKICAgICAgICAgbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2
YWxpZGF0ZWQuYWRkKHNjaGVtZSk7CkBAIC00ODMsMTQgKzQ4MywxNCBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKLSAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZW5kaW5nQ29va2ll
cyA9IGNvcHlUb1ZlY3RvcihtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5w
ZW5kaW5nQ29va2llcygpKTsKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuY2xlYXJQZW5kaW5nQ29va2llcygpOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1
bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fd2Vi
c2l0ZURhdGFTdG9yZS0+cGVuZGluZ0Nvb2tpZXMoKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFT
dG9yZS0+Y2xlYXJQZW5kaW5nQ29va2llcygpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAg
ICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyKCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNr
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJh
Y2soKSA/IEFsbG93c1RMU0ZhbGxiYWNrOjpZZXMgOiBBbGxvd3NUTFNGYWxsYmFjazo6Tm87Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IG1fd2Vic2l0
ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9IG1fd2Vic2l0ZURh
dGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNrID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5hbGxvd3NUTFNG
YWxsYmFjaygpID8gQWxsb3dzVExTRmFsbGJhY2s6OlllcyA6IEFsbG93c1RMU0ZhbGxiYWNrOjpO
bzsKICNlbmRpZgotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5uZXR3b3JraW5nSGFzQmVndW4oKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3
b3JraW5nSGFzQmVndW4oKTsKICAgICB9CiAKICAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBj
YWNoZU1vZGVsKCk7CkBAIC01MDIsOSArNTAyLDYgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2Vi
UHJvY2Vzc1Bvb2w6OmVucwogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV91cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scykKICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVz
UmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKIAotICAgIHBhcmFt
ZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5kaXNrQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHko
KSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRpc2tDYWNo
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BF
Q1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24gPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNo
ZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQoKTsKICNlbmRpZgpAQCAtNTQxLDIzICs1Mzgs
MTEgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgIHBhcmFt
ZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkID0gY29weVRvVmVjdG9yKG1f
c2NoZW1lc1RvUmVnaXN0ZXJBc0NPUlNFbmFibGVkKTsKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVt
ZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCA9IGNvcHlUb1ZlY3Rvciht
X3NjaGVtZXNUb1JlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCk7CiAKLSNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICAvLyAqKioqKioqKioKLSAgICAvLyBJTVBPUlRB
TlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0
YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBB
cHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKLSAgICAvLyAqKioqKioqKioKLSAgICBw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeSA9IG1fY29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAg
ICBpZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygp
LmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKLSAgICAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVs
dERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU3ltTGlua0ZvckZpbGVVcGdyYWRlKHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5KTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChtX3dl
YnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJl
c29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgICAgICBwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPnJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAg
IGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAg
ICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSAgQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpOworICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkgPSAgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5LCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogCiAgICAgaWYgKCFtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZS5p
c0VtcHR5KCkpCkBAIC01NjYsMTYgKzU1MSwxNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQ
cm9jZXNzUG9vbDo6ZW5zCiAgICAgcGFyYW1ldGVycy5zaG91bGREaXNhYmxlU2VydmljZVdvcmtl
clByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclBy
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5OwogI2VuZGlmCiAKLSAgICBhdXRvIGxvY2FsU3RvcmFnZURp
cmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBudWxsU3RyaW5n
KCk7CisgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUg
PyBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBu
dWxsU3RyaW5nKCk7CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpOworICAgICAgICBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBs
b2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5k
ZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwor
ICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5yZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKICAg
ICBpZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0g
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogCiAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFt
ZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCkBAIC02MDEsMTcgKzU4NiwxNyBAQCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgfSBlbHNlIGlmICht
X3dlYnNpdGVEYXRhU3RvcmUpIHsKICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgICAgICBlbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkuaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygpOworICAgICAg
ICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5oYXNTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKCk7CiAjZW5kaWYKICAgICAg
ICAgaWYgKGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKLSAgICAgICAgICAgIGF1dG8g
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKKyAgICAgICAg
ICAgIGF1dG8gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5w
YXJhbWV0ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzOwogICAgICAgICAgICAgc2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNsdWRl
TG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgICAgICAgICAgZW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5l
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAgICAgICAgICAgbWFudWFs
UHJldmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKLSAgICAgICAg
cGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVv
dGEgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZXJPcmlnaW5TdG9y
YWdlUXVvdGEoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOworICAg
ICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlck9yaWdpblN0b3Jh
Z2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0
eU9yaWdpblN0b3JhZ2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyVGhpcmRQYXJ0eU9y
aWdpblN0b3JhZ2VRdW90YSgpOwogICAgIH0KIAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNzAyLDggKzY4
Nyw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnQKIAogICAgIGlm
ICghd2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkK
LSAgICAgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwotICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gJm1f
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICAgICAgbV93ZWJz
aXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OworICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOwog
ICAgIH0KIAogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQpAQCAt
Nzk1LDEyICs3ODAsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdl
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygp
CiB7CiAgICAgbV9yZXNvbHZlZFBhdGhzLmluamVjdGVkQnVuZGxlUGF0aCA9IHJlc29sdmVQYXRo
Rm9yU2FuZGJveEV4dGVuc2lvbihpbmplY3RlZEJ1bmRsZVBhdGgoKSk7Ci0gICAgbV9yZXNvbHZl
ZFBhdGhzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdy
aXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLndlYlNRTERhdGFiYXNl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAg
ICBtX3Jlc29sdmVkUGF0aHMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVS
ZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVk
aWFDYWNoZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwot
ICAgIG1fcmVzb2x2ZWRQYXRocy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRp
b24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOwotCiAgICAgbV9yZXNvbHZlZFBhdGhz
LmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnJlc2VydmVDYXBhY2l0
eShtX2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkuc2l6
ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBtX2NvbmZpZ3VyYXRpb24tPmFkZGl0
aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkpCiAgICAgICAgIG1fcmVzb2x2ZWRQYXRocy5h
ZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy51bmNoZWNrZWRBcHBlbmQo
cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGguZGF0YSgpKSk7CkBAIC04MzcsNyAr
ODE2LDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OgogI2lmIFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIC8vIEluIHBsYXRmb3JtcyB1c2luZyBC
dWJibGV3cmFwIGZvciBzYW5kYm94aW5nLCBwcmV3YXJtZWQgcHJvY2VzcyBpcyBsYXVuY2hlZCB1
c2luZyB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlLAogICAgIC8v
IHNvIHdlIGRvbid0IHVzZSBpdCBpbiBjYXNlIG9mIHVzaW5nIGEgZGlmZmVyZW50IFdlYnNpdGVE
YXRhU3RvcmUuCi0gICAgaWYgKG1fc2FuZGJveEVuYWJsZWQgJiYgbV93ZWJzaXRlRGF0YVN0b3Jl
ICYmICZtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURh
dGFTdG9yZSkKKyAgICBpZiAobV9zYW5kYm94RW5hYmxlZCAmJiBtX3dlYnNpdGVEYXRhU3RvcmUg
JiYgbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogCkBAIC04ODUsOCArODY0LDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2VuZFdlYlByb2Nlc3NEYXRhUwogICAgIGlmICghcGFyYW1ldGVycy5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFt
ZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgcGFy
YW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gd2Vic2l0
ZURhdGFTdG9yZS5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCk7Ci0g
ICAgaWYgKHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZS5pc0VtcHR5KCkpCi0gICAgICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRG
aWxlU3ViZGlyZWN0b3J5TmFtZSgpOwogCiAgICAgcGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSgpOwog
ICAgIGlmIChwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKQEAg
LTExMDcsNyArMTA4NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRGaW5pc2hM
YXUKICAgICBtX2Nvbm5lY3Rpb25DbGllbnQuZGlkQ3JlYXRlQ29ubmVjdGlvbih0aGlzLCBwcm9j
ZXNzLT53ZWJDb25uZWN0aW9uKCkpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAg
ICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGlkQ3JlYXRlTmV0
d29ya1Byb2Nlc3MoKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kaWRDcmVhdGVOZXR3
b3JrUHJvY2VzcygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vz
cyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCkBAIC0xMTg2LDcgKzExNjMsNyBAQCBXZWJQcm9j
ZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzCiAgICAgICAgIHJldHVybiBjcmVhdGVO
ZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIGJvb2wgbXVzdE1hdGNoRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gJkFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
Ym9vbCBtdXN0TWF0Y2hEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwogI2Vsc2UKICAgICBib29sIG11c3RNYXRjaERhdGFTdG9y
ZSA9IGZhbHNlOwogI2VuZGlmCkBAIC0xMjIwLDcgKzExOTcsNyBAQCBSZWY8V2ViUGFnZVByb3h5
PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAgICAgIC8vIFdlIHRyeSB0byBhdm9pZCBjcmVh
dGluZyB0aGUgZGVmYXVsdCBkYXRhIHN0b3JlIGFzIGxvbmcgYXMgcG9zc2libGUuCiAgICAgICAg
IC8vIEJ1dCBpZiB0aGVyZSBpcyBhbiBhdHRlbXB0IHRvIGNyZWF0ZSBhIHdlYiBwYWdlIHdpdGhv
dXQgYW55IHNwZWNpZmllZCBkYXRhIHN0b3JlLCB0aGVuIHdlIGhhdmUgdG8gY3JlYXRlIGl0Lgog
ICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgICAgIG1fd2Vic2l0ZURh
dGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OworICAgICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwogCiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRX
ZWJzaXRlRGF0YVN0b3JlKG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSk7CiAgICAgfQpAQCAtMTIz
MSw4ICsxMjA4LDggQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZQog
ICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdl
IHZpYSB3aW5kb3cub3BlbigpLgogICAgICAgICBwcm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9u
LT5yZWxhdGVkUGFnZSgpLT5lbnN1cmVSdW5uaW5nUHJvY2VzcygpOwogICAgICAgICAvLyBXZSBk
byBub3Qgc3VwcG9ydCBzZXZlcmFsIFdlYnNpdGVEYXRhU3RvcmVzIHNoYXJpbmcgYSBzaW5nbGUg
cHJvY2Vzcy4KLSAgICAgICAgQVNTRVJUKHByb2Nlc3MuZ2V0KCkgPT0gbV9kdW1teVByb2Nlc3NQ
cm94eSB8fCAmcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURh
dGFTdG9yZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwotICAgICAgICBBU1NF
UlQoJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkg
PT0gJnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3Rv
cmUoKSk7CisgICAgICAgIEFTU0VSVChwcm9jZXNzLmdldCgpID09IG1fZHVtbXlQcm9jZXNzUHJv
eHkgfHwgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmcHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgQVNTRVJUKCZwYWdlQ29uZmlndXJhdGlvbi0+
cmVsYXRlZFBhZ2UoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHBhZ2VDb25maWd1cmF0aW9uLT53
ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIH0gZWxzZSBpZiAoIW1faXNEZWxheWVkV2ViUHJvY2Vz
c0xhdW5jaERpc2FibGVkKSB7CiAgICAgICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwgd2UgZGVs
YXkgcHJvY2VzcyBsYXVuY2ggdW50aWwgc29tZXRoaW5nIGlzIGFjdHVhbGx5IGxvYWRlZCBpbiB0
aGUgcGFnZS4KICAgICAgICAgaWYgKCFtX2R1bW15UHJvY2Vzc1Byb3h5KSB7CkBAIC0xMjQyLDcg
KzEyMTksNyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAg
ICAgIH0KICAgICAgICAgcHJvY2VzcyA9IG1fZHVtbXlQcm9jZXNzUHJveHk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIHByb2Nlc3MgPSAmcHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHBhZ2VDb25m
aWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSwgbnVsbHB0
ciwgeyB9KTsKKyAgICAgICAgcHJvY2VzcyA9ICZwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4o
KnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCksIG51bGxwdHIsIHsgfSk7CiAK
ICAgICBBU1NFUlQocHJvY2Vzcyk7CiAKQEAgLTEyOTIsNyArMTI2OSw3IEBAIGJvb2wgV2ViUHJv
Y2Vzc1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmluZyBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlv
bigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgICAgIHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KCk7CiAKICAgICByZXR1cm4gbV9tYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzLmVu
c3VyZShzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBbJl0gewogICAgICAgICAv
LyBGSVhNRTogTWFrZSB0aGlzIGNvbXB1dGF0aW9uIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI0
OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJI
aWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyLmgiCkBAIC00NCw2ICs0Myw3
IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2
aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBAIC0yMDIsOCAr
MjAyLDggQEAgcHVibGljOgogICAgIC8vIERpc2Nvbm5lY3QgdGhlIHByb2Nlc3MgZnJvbSB0aGUg
Y29udGV4dC4KICAgICB2b2lkIGRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSopOwog
Ci0gICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRQcmltYXJ5RGF0
YVN0b3JlKEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKSB7IG1fd2Vic2l0ZURhdGFT
dG9yZSA9ICZkYXRhU3RvcmU7IH0KKyAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0
b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRQcmltYXJ5RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkgeyBtX3dl
YnNpdGVEYXRhU3RvcmUgPSAmZGF0YVN0b3JlOyB9CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBj
cmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CiAKQEAgLTY3Niw3ICs2NzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tZW1vcnlTYW1wbGVy
RW5hYmxlZCB7IGZhbHNlIH07CiAgICAgZG91YmxlIG1fbWVtb3J5U2FtcGxlckludGVydmFsIHsg
MTQwMC4wIH07CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVE
YXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9y
ZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgUmVmUHRyPFdlYkNvbnRleHRT
dXBwbGVtZW50PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IFdlYkNvbnRleHRTdXBwbGVtZW50TWFw
OwogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVudHM7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBD
b29raWVTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKIAotI2luY2x1ZGUg
IkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVT
dG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgZW51
bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludAogbmFtZXNwYWNlIEFQSSB7CiAK
IGNsYXNzIEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyOwotY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKIAogY2xhc3MgSFRUUENvb2tpZVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEyICsxNTEsMTIgQEAg
dm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0VmlzaXRlZExpbmtTdAogICAgIG1fdmlzaXRlZExp
bmtTdG9yZSA9IHZpc2l0ZWRMaW5rU3RvcmU7CiB9CiAKLUFQSTo6V2Vic2l0ZURhdGFTdG9yZSog
UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQorV2Vic2l0ZURhdGFTdG9yZSog
UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIHJldHVybiBtX3dl
YnNpdGVEYXRhU3RvcmUuZ2V0KCk7CiB9CiAKLXZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFdl
YnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQor
dm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNp
dGVEYXRhU3RvcmU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDEyICs0NCwxMiBAQCBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIGNsYXNzIFdlYlByb2Nl
c3NQb29sOwogY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIH0KIAogbmFtZXNwYWNl
IEFQSSB7CiAKIGNsYXNzIEFwcGxpY2F0aW9uTWFuaWZlc3Q7Ci1jbGFzcyBXZWJzaXRlRGF0YVN0
b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogCiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbiA6
IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6UGFnZUNvbmZpZ3VyYXRpb24+IHsKQEAg
LTg0LDggKzg0LDggQEAgcHVibGljOgogICAgIFdlYktpdDo6VmlzaXRlZExpbmtTdG9yZSogdmlz
aXRlZExpbmtTdG9yZSgpOwogICAgIHZvaWQgc2V0VmlzaXRlZExpbmtTdG9yZShXZWJLaXQ6OlZp
c2l0ZWRMaW5rU3RvcmUqKTsKIAotICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3Rv
cmUoKTsKLSAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSopOwor
ICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpOworICAgIHZv
aWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUqKTsKIAogICAg
IFdlYnNpdGVQb2xpY2llcyogZGVmYXVsdFdlYnNpdGVQb2xpY2llcygpIGNvbnN0OwogICAgIHZv
aWQgc2V0RGVmYXVsdFdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXMqKTsKQEAgLTE0NSw3
ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9y
ZWxhdGVkUGFnZTsKICAgICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0
ZWRMaW5rU3RvcmU7CiAKLSAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0
YVN0b3JlOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURh
dGFTdG9yZTsKICAgICBSZWZQdHI8V2Vic2l0ZVBvbGljaWVzPiBtX2RlZmF1bHRXZWJzaXRlUG9s
aWNpZXM7CiAKICAgICBib29sIG1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmUgeyB0cnVlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjQ5NzMy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKIAotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgor
I2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIEFQSSB7CiAKQEAgLTM2
LDM1ICszNiw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb28KICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOwogfQogCi1S
ZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNy
ZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihjb25zdCBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJiBsZWdhY3lDb25maWd1cmF0aW9uKQotewotICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0K
LSAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsK
LSAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRp
YUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5
KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGxl
Z2FjeUNvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBjb25m
aWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24u
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmRldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBs
ZWdhY3lDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0KLSAgICByZXR1
cm4gY29uZmlndXJhdGlvbjsKLX0KLQogUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKQotICAgIDogbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpCi0gICAg
LCBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkZpbGVzIikKLSAg
ICAsIG1fZGlza0NhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKSkKLSAgICAsIG1fbWVkaWFDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKQotICAgICwgbV9pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fZGV2aWNlSWRI
YXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJ
ZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fd2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkp
Ci0gICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSgpKQogewogfQogCkBAIC03NywxOCArNDksOCBAQCBSZWY8UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgYXV0byBjb3B5ID0gdGhpcy0+Y3Jl
YXRlKCk7CiAKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9kZWw7Ci0g
ICAgY29weS0+bV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX2Rpc2tDYWNoZURpcmVjdG9y
eTsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgPSB0
aGlzLT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQ7Ci0gICAgY29weS0+
bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5OwotICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZSA9IHRoaXMtPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsK
LSAgICBjb3B5LT5tX21lZGlhQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX21lZGlhQ2FjaGVEaXJl
Y3Rvcnk7Ci0gICAgY29weS0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1f
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9pbmplY3RlZEJ1bmRsZVBh
dGggPSB0aGlzLT5tX2luamVjdGVkQnVuZGxlUGF0aDsKLSAgICBjb3B5LT5tX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1f
ZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9kZXZpY2VJZEhhc2hT
YWx0c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeTsKLSAgICBjb3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gdGhp
cy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2NhY2hlUGFydGl0aW9u
ZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBj
b3B5LT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fYWx3YXlzUmV2YWxp
ZGF0ZWRVUkxTY2hlbWVzOwogICAgIGNvcHktPm1fYWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2Vk
UGF0aHMgPSB0aGlzLT5tX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24+IGNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bihjb25zdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJik7CiAKICAgICBl
eHBsaWNpdCBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKQEAgLTc5LDM4ICs3Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJL
aXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsg
fQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkg
eyBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAKLSAgICBjb25zdCBXVEY6OlN0cmluZyYg
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkgeyBtX2FwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9Ci0KLSAgICBj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXREaXNrQ2Fj
aGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSkgeyBtX2Rp
c2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeTsgfQotCi0gICAgY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ2Fj
aGVEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0g
bWVkaWFDYWNoZURpcmVjdG9yeTsgfQotICAgIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNv
bnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBtX2luZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQogICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBt
X2luamVjdGVkQnVuZGxlUGF0aDsgfQogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKGNv
bnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpIHsgbV9pbmplY3RlZEJ1bmRsZVBh
dGggPSBpbmplY3RlZEJ1bmRsZVBhdGg7IH0KIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9y
eTsgfQotICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5n
JiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpIHsgbV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBkZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkSGFzaFNh
bHRzU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnkpIHsgbV9kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBkaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6
U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViU1FM
RGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KGNvbnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkgeyBtX3dlYlNRTERh
dGFiYXNlRGlyZWN0b3J5ID0gd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0
IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
OyB9Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGNvbnN0IFdU
Rjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSB7IG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7
IH0KLQogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzKCkgeyByZXR1cm4gbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsgfQogICAgIHZv
aWQgc2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIGNh
Y2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKSB7IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMg
PSBXVEZNb3ZlKGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKTsgfQogCkBAIC0xODYsMTcgKzE1
NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlv
bkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwg
eyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlByaW1hcnlXZWJCcm93c2VyIH07CiAKLSAgICBXVEY6OlN0
cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9hcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwotICAgIFdURjo6U3RyaW5nIG1f
ZGlza0NhY2hlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fbWVkaWFDYWNoZURpcmVjdG9y
eTsKLSAgICBXVEY6OlN0cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFdU
Rjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwotICAgIFdURjo6U3RyaW5nIG1fbG9jYWxT
dG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7
Ci0gICAgV1RGOjpTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6
U3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBWZWN0b3I8V1RG
OjpTdHJpbmc+IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7CiAgICAgVmVjdG9yPFdURjo6
U3RyaW5nPiBtX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKICAgICBWZWN0b3I8V1RGOjpD
U3RyaW5nPiBtX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVEYXRhU3RvcmUuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTY4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCi0KLSNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgotI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmUuaCIKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLXN0YXRpYyBSZWZQdHI8V2Vic2l0
ZURhdGFTdG9yZT4mIGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKQotewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4+IGdsb2JhbERlZmF1bHREYXRhU3Rv
cmU7Ci0gICAgcmV0dXJuIGdsb2JhbERlZmF1bHREYXRhU3RvcmUuZ2V0KCk7Ci19Ci0KLQotUmVm
PFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKQot
ewotICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKLQotICAgIGF1dG8mIHN0b3JlID0g
Z2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpOwotICAgIGlmICghc3RvcmUpCi0gICAgICAgIHN0b3Jl
ID0gYWRvcHRSZWYobmV3IFdlYnNpdGVEYXRhU3RvcmUoZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwotCi0gICAgcmV0
dXJuICpzdG9yZTsKLX0KLQotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVEZWZhdWx0RGF0
YVN0b3JlRm9yVGVzdGluZygpCi17Ci0gICAgZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpID0gbnVs
bHB0cjsKLX0KLQotYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3Rz
KCkKLXsKLSAgICByZXR1cm4gISFnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCk7Ci19Ci0KLVJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0
YVN0b3JlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlKTsK
LX0KLQotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShSZWY8
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBj
b25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKSk7
Ci19Ci0KLVdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoKQotICAgIDogbV93ZWJz
aXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVu
dCgpKQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICA6IG1fd2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQp
KQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCi17Ci19Ci0K
LUhUVFBDb29raWVTdG9yZSYgV2Vic2l0ZURhdGFTdG9yZTo6aHR0cENvb2tpZVN0b3JlKCkKLXsK
LSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5jb29raWVTdG9yZSgpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjogaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPmNvbmZpZ3VyYXRpb24oKS5pbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSgpOwotfQotCi1ib29sIFdlYnNpdGVEYXRhU3RvcmU6OmlzUGVy
c2lzdGVudCgpCi17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+aXNQZXJzaXN0ZW50
KCk7Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Ci19Ci0KLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7
Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOwotfQotCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCBlbmFibGVkKQotewotICAgIG1f
d2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFi
bGVkKTsKLX0KLQotI2lmICFQTEFURk9STShDT0NPQSkKLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzY5IGFu
ZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzcwCi0gICAgcmV0
dXJuIFdURjo6U3RyaW5nKCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgLy8gRklYTUU6
IEltcGxlbWVudC4KLSAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKLX0KLSNlbmRpZgotCi0jaWYg
IVVTRShHTElCKQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgLy8gTm90IGltcGxlbWVudGVkLgot
ICAgIHJldHVybiBXVEY6OlN0cmluZygpOwotfQotI2VuZGlmCi0KLVJlZjxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0KLSAgICBjb25maWd1cmF0
aW9uLT5zZXRQZXJzaXN0ZW50KHRydWUpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsK
LSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lKCJGaWxlcyIpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVj
dG9yeShkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24t
PnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkp
OwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkoKSk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5zZXRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeShkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAg
Y29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShkZWZh
dWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0
aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGRl
ZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0RGV2aWNl
SWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0
SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoZGVmYXVsdEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5KCkpOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdl
YnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShub25leGlzdGVudCkKQEAg
LTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJBUElIVFRQQ29va2llU3RvcmUuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0j
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgQVBJIHsKLQotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSBmaW5hbCA6IHB1
YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6V2Vic2l0ZURhdGFTdG9yZT4gewotcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gZGVmYXVsdERhdGFTdG9yZSgpOwot
ICAgIHN0YXRpYyBib29sIGRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKLSAgICBzdGF0aWMgdm9p
ZCBkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwotCi0gICAgc3RhdGljIFJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+JiYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7Ci0gICAgc3RhdGljIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7Ci0KLSAgICBleHBs
aWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7Ci0gICAgdmlydHVhbCB+V2Vic2l0ZURhdGFTdG9y
ZSgpOwotCi0gICAgYm9vbCBpc1BlcnNpc3RlbnQoKTsKLQotICAgIGJvb2wgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdDsKLSAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGJvb2wpOwotICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShib29sKTsKLQotICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSgpIHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQotICAgIEhUVFBDb29raWVT
dG9yZSYgaHR0cENvb2tpZVN0b3JlKCk7Ci0KLSAgICBXVEY6OlN0cmluZyBpbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcg
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBk
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGlj
IFdURjo6U3RyaW5nIGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotI2lmIFVTRShH
TElCKQotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SFNUU0RpcmVjdG9yeSgpOwotI2Vu
ZGlmCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRKYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwot
Ci1wcml2YXRlOgotICAgIGVudW0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0
b3J5LCBEb250Q3JlYXRlRGlyZWN0b3J5IH07Ci0KLSAgICBXZWJzaXRlRGF0YVN0b3JlKCk7Ci0K
LSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0
b3J5ID0gQ3JlYXRlRGlyZWN0b3J5KTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSk7Ci0K
LSAgICBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7Ci19
OwotCi19CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGlj
aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZVBvbGljaWVzLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNp
ZXMuaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJz
aXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgogCiBuYW1l
c3BhY2UgQVBJIHsKQEAgLTEwOCw3ICsxMDgsNyBAQCBXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0Rh
dGEgV2Vic2l0ZVBvbGljCiAjZW5kaWYKICAgICAgICAgV1RGTW92ZShjdXN0b21IZWFkZXJGaWVs
ZHMpLAogICAgICAgICBwb3BVcFBvbGljeSgpLAotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUg
PyBPcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiB7IG1fd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKSB9IDogV1RGOjpudWxs
b3B0LAorICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPyBPcHRpb25hbDxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiB7IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGFyYW1ldGVycygp
IH0gOiBXVEY6Om51bGxvcHQsCiAgICAgICAgIG1fY3VzdG9tVXNlckFnZW50LAogICAgICAgICBt
X2N1c3RvbUphdmFTY3JpcHRVc2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrcywKICAgICAgICAg
bV9jdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtNDEsMTMgKzQxLDEyIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBzdHJ1Y3QgV2Vic2l0ZVBv
bGljaWVzRGF0YTsKIH0KIAogbmFtZXNwYWNlIEFQSSB7CiAKLWNsYXNzIFdlYnNpdGVEYXRhU3Rv
cmU7Ci0KIGNsYXNzIFdlYnNpdGVQb2xpY2llcyBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdElt
cGw8QVBJOjpPYmplY3Q6OlR5cGU6OldlYnNpdGVQb2xpY2llcz4gewogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8V2Vic2l0ZVBvbGljaWVzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYnNpdGVQb2xpY2llcyk7IH0KQEAgLTc5LDggKzc4LDggQEAgcHVibGljOgogICAgIFdlYktp
dDo6V2Vic2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9wb3BV
cFBvbGljeTsgfQogICAgIHZvaWQgc2V0UG9wVXBQb2xpY3koV2ViS2l0OjpXZWJzaXRlUG9wVXBQ
b2xpY3kgcG9saWN5KSB7IG1fcG9wVXBQb2xpY3kgPSBwb2xpY3k7IH0KIAotICAgIFdlYnNpdGVE
YXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3dlYnNpdGVEYXRh
U3RvcmUuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoUmVmUHRyPFdlYnNp
dGVEYXRhU3RvcmU+JiYpOworICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURh
dGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQorICAg
IHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
PiYmKTsKIAogICAgIFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSBkYXRhKCk7CiAKQEAgLTEx
OCw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbGxvd0NvbnRlbnRDaGFuZ2VPYnNl
cnZlclF1aXJrKGJvb2wgYWxsb3cpIHsgbV9hbGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZlclF1aXJr
ID0gYWxsb3c7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50
QmxvY2tlcnNFbmFibGVkLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4s
IFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5LCBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRl
ckZpZWxkPiYmLCBWZWN0b3I8V2ViQ29yZTo6Q3VzdG9tSGVhZGVyRmllbGRzPiYmLCBXZWJLaXQ6
OldlYnNpdGVQb3BVcFBvbGljeSwgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYpOworICAgIFdl
YnNpdGVQb2xpY2llcyhib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJL
aXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiwgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3ks
IFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYsIFZlY3RvcjxXZWJDb3JlOjpDdXN0
b21IZWFkZXJGaWVsZHM+JiYsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5LCBSZWZQdHI8V2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlPiYmKTsKIAogICAgIGJvb2wgbV9jb250ZW50QmxvY2tlcnNF
bmFibGVkIHsgdHJ1ZSB9OwogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1
aXJrPiBtX2FsbG93ZWRBdXRvcGxheVF1aXJrczsKQEAgLTEyOSw3ICsxMjgsNyBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+IG1fbGVnYWN5Q3VzdG9tSGVh
ZGVyRmllbGRzOwogICAgIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+IG1fY3Vz
dG9tSGVhZGVyRmllbGRzOwogICAgIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IG1fcG9wVXBQ
b2xpY3kgeyBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeTo6RGVmYXVsdCB9OwotICAgIFJlZlB0
cjxXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwogICAgIFdURjo6U3RyaW5n
IG1fY3VzdG9tVXNlckFnZW50OwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tSmF2YVNjcmlwdFVz
ZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzOwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tTmF2
aWdhdG9yUGxhdGZvcm07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQ
SUNhc3QuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDYgQEAgY2xhc3MgUGFn
ZUNvbmZpZ3VyYXRpb247CiBjbGFzcyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247CiBjbGFzcyBT
ZXNzaW9uU3RhdGU7CiBjbGFzcyBVc2VyU2NyaXB0OwotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsK
IGNsYXNzIFdlYnNpdGVQb2xpY2llczsKIGNsYXNzIFdpbmRvd0ZlYXR1cmVzOwogfQpAQCAtMTEz
LDYgKzExMiw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOwogY2xh
c3MgV2ViVGV4dENoZWNrZXI7CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsK
IGNsYXNzIFdlYlZpZXdwb3J0QXR0cmlidXRlczsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBj
bGFzcyBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKIAogV0tfQUREX0FQSV9NQVBQSU5H
KFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkpCkBAIC0xNjksNyArMTY5LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlck1lZGlhUGVy
bWlzc2lvbgogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RS
ZWYsIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkpCiBXS19BRERfQVBJX01BUFBJTkco
V0tVc2VyU2NyaXB0UmVmLCBBUEk6OlVzZXJTY3JpcHQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tW
aWV3cG9ydEF0dHJpYnV0ZXNSZWYsIFdlYlZpZXdwb3J0QXR0cmlidXRlcykKLVdLX0FERF9BUElf
TUFQUElORyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSkKK1dL
X0FERF9BUElfTUFQUElORyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZSkKIFdLX0FERF9BUElfTUFQUElORyhXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uUmVmLCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKQogV0tfQUREX0FQ
SV9NQVBQSU5HKFdLV2Vic2l0ZVBvbGljaWVzUmVmLCBBUEk6OldlYnNpdGVQb2xpY2llcykKIFdL
X0FERF9BUElfTUFQUElORyhXS1dpbmRvd0ZlYXR1cmVzUmVmLCBBUEk6OldpbmRvd0ZlYXR1cmVz
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw0MiArMjYsMTkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgiCiAKLSNpbmNsdWRlICJBUElBcnJh
eS5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVJlY29yZC5oIgotCiBXS1R5cGVJRCBXS0FwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQ
SShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OkFQSVR5cGUpOworICAgIHJldHVybiAwOwogfQogCi12
b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lucyhX
S0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCB2b2lk
KiBjb250ZXh0LCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9y
aWdpbnNGdW5jdGlvbiBjYWxsYmFjaykKK3ZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdl
dEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYsIHZv
aWQqLCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNG
dW5jdGlvbikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwo
cmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGFwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLmZldGNo
RGF0YShXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUs
IHsgfSwgW2NvbnRleHQsIGNhbGxiYWNrXShhdXRvIGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIFZl
Y3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7Ci0gICAgICAgIGZvciAo
Y29uc3QgYXV0byYgZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIG9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykKLSAgICAgICAgICAgICAg
ICBzZWN1cml0eU9yaWdpbnMuYXBwZW5kKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvcmln
aW4uc2VjdXJpdHlPcmlnaW4oKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FsbGJhY2soV2Vi
S2l0Ojp0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShzZWN1cml0eU9yaWdpbnMpKS5w
dHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwotICAgIH0pOwogfQogCi12b2lkIFdLQXBwbGljYXRp
b25DYWNoZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3Jp
Z2luKQordm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdp
bihXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmKQogewot
ICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9j
YXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpOwotCi0gICAgV2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVj
b3JkOwotICAgIGRhdGFSZWNvcmQuYWRkKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5l
V2ViQXBwbGljYXRpb25DYWNoZSwgV2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmln
aW4oKS5kYXRhKCkpOwotCi0gICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1vdmVEYXRhKFdlYktpdDo6
V2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgeyBkYXRhUmVjb3Jk
IH0sIFtdIHsgfSk7CiB9CiAKLXZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFs
bEVudHJpZXMoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFu
YWdlcikKK3ZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3Jl
ID0gV2ViS2l0Ojp0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+
KGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJz
aXRlRGF0YVN0b3JlLnJlbW92ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtdIHsgfSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDE4ICsyNywxOSBAQAogI2RlZmluZSBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
X2gKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEZXBy
ZWNhdGVkLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAot
V0tfRVhQT1JUIFdLVHlwZUlEIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRUeXBlSUQoKTsK
K1dLX0VYUE9SVCBXS1R5cGVJRCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0VHlwZUlEKCkg
V0tfQ19BUElfREVQUkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zRnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdL
RXJyb3JSZWYsIHZvaWQqKTsKLVdLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lucyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVm
IGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0FwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbik7CitX
S19FWFBPUlQgdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNo
ZU9yaWdpbnMoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFu
YWdlciwgdm9pZCogY29udGV4dCwgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5zRnVuY3Rpb24gZnVuY3Rpb24pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAK
LVdLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9y
T3JpZ2luKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFn
ZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKTsKLVdLX0VYUE9SVCB2b2lkIFdLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpOworV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBv
cmlnaW4pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CitXS19FWFBPUlQgdm9pZCBXS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVm
IGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJh
bWVQb2xpY3lMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV0tGcmFtZVBvbGljeUxpc3RlbmVyLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRl
RGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisj
aW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0Rh
dGEuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNw
cAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOTAgKzI2LDM4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyLmgiCiAKLSNpbmNsdWRlICJBUElBcnJheS5oIgotI2luY2x1ZGUgIkFQSURpY3Rpb25hcnku
aCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1h
bmFnZXIuaCIKLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVJl
Y29yZC5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OkFQSVR5cGUpOworICAgIHJldHVybiAwOwogfQogCiBXS1N0cmluZ1JlZiBX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkoKQogewotICAgIHN0YXRpYyBBUEk6
OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiV2ViS2V5VmFsdWVTdG9yYWdlTWFu
YWdlclN0b3JhZ2VEZXRhaWxzT3JpZ2luS2V5IikubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQ
SSgma2V5KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogV0tTdHJpbmdSZWYgV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KCkKIHsKLSAgICBzdGF0aWMgQVBJOjpT
dHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoIldlYktleVZhbHVlU3RvcmFnZU1hbmFn
ZXJTdG9yYWdlRGV0YWlsc0NyZWF0aW9uVGltZUtleSIpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4g
dG9BUEkoJmtleSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFdLU3RyaW5nUmVmIFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKQogewotICAgIHN0YXRp
YyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiV2ViS2V5VmFsdWVTdG9y
YWdlTWFuYWdlclN0b3JhZ2VEZXRhaWxzTW9kaWZpY2F0aW9uVGltZUtleSIpLmxlYWtSZWYoKTsK
LSAgICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQg
V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4
dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0
aW9uIGNhbGxiYWNrKQotCit2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldEtleVZhbHVl
U3RvcmFnZU9yaWdpbnMoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmLCB2b2lkKiwgV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uKQogewot
ICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dl
YnNpdGVEYXRhU3RvcmVSZWY+KGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFT
dG9yZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUuZmV0Y2hEYXRhKHsgV2Vic2l0ZURhdGFUeXBl
OjpMb2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UgfSwgeyB9LCBb
Y29udGV4dCwgY2FsbGJhY2tdKGF1dG8gZGF0YVJlY29yZHMpIHsKLSAgICAgICAgVmVjdG9yPFJl
ZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2luczsKLSAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKQotICAgICAgICAgICAgICAgIHNlY3Vy
aXR5T3JpZ2lucy5hcHBlbmQoQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi5zZWN1
cml0eU9yaWdpbigpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6
OkFycmF5OjpjcmVhdGUoV1RGTW92ZShzZWN1cml0eU9yaWdpbnMpKS5wdHIoKSksIG51bGxwdHIs
IGNvbnRleHQpOwotICAgIH0pOwogfQogCi12b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdl
dFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZh
bHVlU3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5jdGlvbiBjYWxsYmFjaykKK3ZvaWQgV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJSZWYsIHZvaWQqLCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdl
RGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24pCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9
IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oa2V5VmFsdWVT
dG9yYWdlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0ZURhdGFTdG9y
ZS5nZXRMb2NhbFN0b3JhZ2VEZXRhaWxzKFtjb250ZXh0LCBjYWxsYmFja10oYXV0byYmIGRldGFp
bHMpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHJlc3VsdDsKLSAgICAg
ICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGV0YWlscy5zaXplKCkpOwotCi0gICAg
ICAgIGZvciAoY29uc3QgYXV0byYgZGV0YWlsIDogZGV0YWlscykgewotICAgICAgICAgICAgSGFz
aE1hcDxTdHJpbmcsIFJlZlB0cjxBUEk6Ok9iamVjdD4+IGRldGFpbE1hcDsKLSAgICAgICAgICAg
IFJlZlB0cjxBUEk6Ok9iamVjdD4gb3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihkZXRh
aWwub3JpZ2luSWRlbnRpZmllciktPnNlY3VyaXR5T3JpZ2luKCkpOwotCi0gICAgICAgICAgICBk
ZXRhaWxNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXko
KSktPnN0cmluZygpLCBvcmlnaW4pOwotICAgICAgICAgICAgaWYgKGRldGFpbC5jcmVhdGlvblRp
bWUpCi0gICAgICAgICAgICAgICAgZGV0YWlsTWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNy
ZWF0ZShkZXRhaWwuY3JlYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpKTsK
LSAgICAgICAgICAgIGlmIChkZXRhaWwubW9kaWZpY2F0aW9uVGltZSkKLSAgICAgICAgICAgICAg
ICBkZXRhaWxNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmlj
YXRpb25UaW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShkZXRhaWwubW9k
aWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKSk7Ci0KLSAgICAgICAg
ICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92
ZShkZXRhaWxNYXApKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6
OkFycmF5OjpjcmVhdGUoV1RGTW92ZShyZXN1bHQpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRleHQp
OwotICAgIH0pOwogfQogCi12b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJp
ZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1h
bmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKQordm9pZCBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZiwgV0tTZWN1cml0eU9yaWdpblJlZikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0g
dG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihrZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICBXZWJzaXRlRGF0YVJlY29y
ZCBkYXRhUmVjb3JkOwotICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxT
dG9yYWdlLCB0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotICAgIGRh
dGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UsIHRvSW1wbChvcmln
aW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1v
dmVEYXRhKHsgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6
U2Vzc2lvblN0b3JhZ2UgfSwgeyBkYXRhUmVjb3JkIH0sIFtdIHsgfSk7CiB9CiAKLXZvaWQgV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlcikKK3ZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYpCiB7Ci0g
ICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZj4oa2V5VmFsdWVTdG9yYWdlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0
b3JlKCk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1vdmVEYXRhKHsgV2Vic2l0ZURhdGFUeXBl
OjpMb2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UgfSwgLVdhbGxU
aW1lOjppbmZpbml0eSgpLCBbXSB7IH0pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgJKHJldmlz
aW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywzMCArMjcsMzEgQEAKICNkZWZp
bmUgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyX2gKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2Uu
aD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1
cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotV0tfRVhQT1JUIFdLVHlwZUlEIFdLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlckdldFR5cGVJRCgpOworV0tfRVhQT1JUIFdLVHlwZUlEIFdLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlckdldFR5cGVJRCgpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVl
IHR5cGU6IFdLU2VjdXJpdHlPcmlnaW5SZWYgKi8KLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkoKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1Jl
ZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkoKSBXS19DX0FQSV9ERVBSRUNB
VEVEOwogCiAvKiBWYWx1ZSB0eXBlOiBXS0RvdWJsZVJlZiwgc2Vjb25kcyBzaW5jZSBKYW51YXJ5
IDFzdCwgMTk3MCBVVEMgKi8KLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKSBXS19DX0FQSV9ERVBSRUNB
VEVEOwogCiAvKiBWYWx1ZSB0eXBlOiBXS0RvdWJsZVJlZiwgc2Vjb25kcyBzaW5jZSBKYW51YXJ5
IDFzdCwgMTk3MCBVVEMgKi8KLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1lS2V5KCk7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYg
V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgpIFdLX0NfQVBJ
X0RFUFJFQ0FURUQ7CiAKIHR5cGVkZWYgdm9pZCAoKldLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdl
dEtleVZhbHVlU3RvcmFnZU9yaWdpbnNGdW5jdGlvbikoV0tBcnJheVJlZiwgV0tFcnJvclJlZiwg
dm9pZCopOwotV0tfRVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFs
dWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9y
YWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5
VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMoV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQs
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnNGdW5jdGlv
biBmdW5jdGlvbikgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1bmN0aW9uKShXS0Fy
cmF5UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24gZnVuY3Rpb24p
OworV0tfRVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFp
bHNCeU9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFu
YWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURl
dGFpbHNCeU9yaWdpbkZ1bmN0aW9uIGZ1bmN0aW9uKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCi1X
S19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3Jp
Z2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCBX
S1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbik7Ci1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBr
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKTsKK1dLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdl
TWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVm
IGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKSBXS19D
X0FQSV9ERVBSRUNBVEVEOworV0tfRVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
RGVsZXRlQWxsRW50cmllcyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9y
YWdlTWFuYWdlcikgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jl
c291cmNlQ2FjaGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDY3ICsyNiwxOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldL
UmVzb3VyY2VDYWNoZU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVk
ZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1
ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdL
VHlwZUlEIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0
b0FQSShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OkFQSVR5cGUpOwotfQotCi1zdGF0aWMgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGVzKFdLUmVzb3VyY2VDYWNoZXNU
b0NsZWFyIGNhY2hlc1RvQ2xlYXIpCi17Ci0gICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
d2Vic2l0ZURhdGFUeXBlcyB7IFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUgfTsKLQotICAg
IGlmIChjYWNoZXNUb0NsZWFyID09IFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyQWxsKQotICAgICAg
ICB3ZWJzaXRlRGF0YVR5cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSk7Ci0KLSAg
ICByZXR1cm4gd2Vic2l0ZURhdGFUeXBlczsKKyAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXS1Jl
c291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJS
ZWYgY2FjaGVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0
Q2FjaGVPcmlnaW5zRnVuY3Rpb24gY2FsbGJhY2spCit2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFn
ZXJHZXRDYWNoZU9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiwgdm9pZCosIFdLUmVz
b3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnNGdW5jdGlvbikKIHsKLSAgICBhdXRvJiB3
ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0
b3JlUmVmPihjYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVE
YXRhU3RvcmUuZmV0Y2hEYXRhKHRvV2Vic2l0ZURhdGFUeXBlcyhXS1Jlc291cmNlQ2FjaGVzVG9D
bGVhckFsbCksIHsgfSwgW2NvbnRleHQsIGNhbGxiYWNrXShhdXRvIGRhdGFSZWNvcmRzKSB7Ci0g
ICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7Ci0gICAg
ICAgIGZvciAoY29uc3QgYXV0byYgZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7Ci0gICAgICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykKLSAgICAg
ICAgICAgICAgICBzZWN1cml0eU9yaWdpbnMuYXBwZW5kKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShvcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgY2Fs
bGJhY2sodG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoc2VjdXJpdHlPcmlnaW5zKSku
cHRyKCkpLCBudWxscHRyLCBjb250ZXh0KTsKLSAgICB9KTsKIH0KIAotdm9pZCBXS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVm
IGNhY2hlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLUmVzb3VyY2VDYWNo
ZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpCit2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVh
ckNhY2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYsIFdLU2VjdXJpdHlPcmln
aW5SZWYsIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRh
U3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGNh
Y2hlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0KLSAgICBWZWN0b3I8V2Vic2l0ZURh
dGFSZWNvcmQ+IGRhdGFSZWNvcmRzOwotCi0gICAgewotICAgICAgICBXZWJzaXRlRGF0YVJlY29y
ZCBkYXRhUmVjb3JkOwotICAgICAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok1l
bW9yeUNhY2hlLCB0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotCi0g
ICAgICAgIGRhdGFSZWNvcmRzLmFwcGVuZChkYXRhUmVjb3JkKTsKLSAgICB9Ci0KLSAgICBpZiAo
Y2FjaGVzVG9DbGVhciA9PSBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhckFsbCkgewotICAgICAgICBX
ZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgICAgICBkYXRhUmVjb3JkLmFkZChXZWJz
aXRlRGF0YVR5cGU6OkRpc2tDYWNoZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCku
ZGF0YSgpKTsKLQotICAgICAgICBkYXRhUmVjb3Jkcy5hcHBlbmQoZGF0YVJlY29yZCk7Ci0gICAg
fQotCi0gICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1vdmVEYXRhKHRvV2Vic2l0ZURhdGFUeXBlcyhj
YWNoZXNUb0NsZWFyKSwgZGF0YVJlY29yZHMsIFtdIHsgfSk7CiB9CiAKLXZvaWQgV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JBbGxPcmlnaW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFn
ZXJSZWYgY2FjaGVNYW5hZ2VyLCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFy
KQordm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFsbE9yaWdpbnMoV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlclJlZiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAg
YXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0
ZURhdGFTdG9yZVJlZj4oY2FjaGVNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3
ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKGNhY2hlc1RvQ2xl
YXIpLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtdIHsgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5o
CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jl
c291cmNlQ2FjaGVNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNk
ZWZpbmUgV0tSZXNvdXJjZUNhY2hlTWFuYWdlcl9oCiAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNl
Lmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLRGVwcmVjYXRlZC5oPgogCiAjaWZkZWYgX19jcGx1c3Bs
dXMKIGV4dGVybiAiQyIgewpAQCAtMzgsMTMgKzM5LDEzIEBAIGVudW0gewogfTsKIHR5cGVkZWYg
dWludDMyX3QgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXI7CiAKLVdLX0VYUE9SVCBXS1R5cGVJRCBX
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0VHlwZUlEKCk7CitXS19FWFBPUlQgV0tUeXBlSUQgV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlckdldFR5cGVJRCgpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKIHR5
cGVkZWYgdm9pZCAoKldLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnNGdW5jdGlv
bikoV0tBcnJheVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZvaWQgV0tSZXNv
dXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVm
IGNvbnRleHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNo
ZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2Fj
aGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY29udGV4
dFJlZiwgdm9pZCogY29udGV4dCwgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2lu
c0Z1bmN0aW9uIGZ1bmN0aW9uKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCi1XS19FWFBPUlQgdm9p
ZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNlQ2Fj
aGVNYW5hZ2VyUmVmIGNhY2hlTWFuZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tS
ZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcik7Ci1XS19FWFBPUlQgdm9pZCBXS1Jl
c291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFsbE9yaWdpbnMoV0tSZXNvdXJjZUNhY2hl
TWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1Rv
Q2xlYXIpOworV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVG
b3JPcmlnaW4oV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmdlciwgV0tTZWN1cml0
eU9yaWdpblJlZiBvcmlnaW4sIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIp
IFdLX0NfQVBJX0RFUFJFQ0FURUQ7CitXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyQ2xlYXJDYWNoZUZvckFsbE9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBjYWNo
ZU1hbmFnZXIsIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpIFdLX0NfQVBJ
X0RFUFJFQ0FURUQ7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAj
aW5jbHVkZSAiV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgiCiAKICNpbmNsdWRlICJBUElBcnJheS5o
IgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJBUElIVFRQQ29v
a2llU3RvcmUuaCIKICNpbmNsdWRlICJNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
LmgiCiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCkBAIC00MSwyOSArNDEsMzAgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRlICJXZWJzaXRl
RGF0YVJlY29yZC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgogCiBXS1R5cGVJRCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRUeXBl
SUQoKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpBUElUeXBlKTsKIH0KIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFT
dG9yZUdldERlZmF1bHREYXRhU3RvcmUoKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpKTsKKyAgICByZXR1
cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3Rv
cmUoKS5wdHIoKSk7CiB9CiAKIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3Rv
cmVDcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0
b0FQSSgmQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3Jl
KCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50KCkubGVha1JlZigpKTsKIH0KIAogV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNyZWF0ZVdpdGhDb25maWd1cmF0aW9u
KFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbikKIHsKICAg
ICBhdXRvIHNlc3Npb25JRCA9IFdlYktpdDo6dG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5pc1BlcnNp
c3RlbnQoKSA/IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZVBlcnNpc3RlbnRTZXNzaW9uSUQoKSA6
IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25JRCgpOwotICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKCZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZSgqV2ViS2l0Ojp0
b0ltcGwoY29uZmlndXJhdGlvbiksIHNlc3Npb25JRCkubGVha1JlZigpKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoKldlYktpdDo6
dG9JbXBsKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQpLmxlYWtSZWYoKSk7CiB9CiAKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUpCkBAIC04MywxMyArODQs
MTMgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdAogCiBXS0hUVFBD
b29raWVTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29va2llU3RvcmUoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQ
SSgmV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aHR0cENvb2tpZVN0b3JlKCkpOworICAg
IHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5jb29r
aWVTdG9yZSgpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGVidWdNb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wgZW5hYmxlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzRGVidWdNb2RlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1w
bChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RlYnVnTW9kZShlbmFibGUsIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
ZWJ1Z01vZGUoZW5hYmxlLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMTAwLDcgKzEw
MSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3QKIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNl
Rm9yRGVidWdNb2RlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWJ1
Z01vZGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNp
dGVEYXRhU3RvcmUoKS5zZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFu
ZGxlcl0geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFByZXZhbGVudFJl
c291cmNlRm9yRGVidWdNb2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTExMCw3ICsxMTEsNyBAQCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0CiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NMYXN0U2VlbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBXS1N0cmluZ1JlZiBob3N0LCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0xhc3RTZWVuRnVuY3Rpb24gY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TGFzdFNlZW4oVVJM
KFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25k
cyB9LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT5zZXRMYXN0U2VlbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3Qp
LT5zdHJpbmcoKSksIFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjb21wbGV0aW9uSGFu
ZGxlcl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsKICNl
bHNlCkBAIC0xMjEsNyArMTIyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzTGFzdAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9z
dCwgYm9vbCB2YWx1ZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3Jl
ID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAg
IGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKTsK
IAogICAgIGlmICh2YWx1ZSkKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS5zZXRQcmV2YWxlbnRS
ZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250
ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ByZXYKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlRnVuY3Rpb24g
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSAq
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKTsKIAogICAgIGlmICh2YWx1ZSkKICAgICAgICAg
d2Vic2l0ZURhdGFTdG9yZS5zZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJd
IHsKQEAgLTE1Nyw3ICsxNTgsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3Rp
Y3NWZXJ5CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRnVuY3Rpb24gY2FsbGJhY2sp
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZHVtcFJlc291cmNlTG9hZFN0
YXRpc3RpY3MoW2NvbnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZHVtcFJlc291
cmNlTG9hZFN0YXRpc3RpY3MoW2NvbnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKSB7CiAgICAgICAgIGNhbGxiYWNrKFdlYktpdDo6dG9BUEkocmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5pbXBsKCkpLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBA
IC0xNjgsNyArMTY5LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVEdW1wUmVzb3VyY2VMb2Fk
Uwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2b2lk
KiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgp
LmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3Ry
aW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSkgewor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzUHJldmFsZW50UmVzb3VyY2UoVVJM
KFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJh
Y2tdKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSkgewogICAgICAgICBjYWxsYmFjayhpc1ByZXZh
bGVudFJlc291cmNlLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0xNzksNyArMTgwLDcg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YQogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiBj
YWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5pc1ZlcnlQcmV2
YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSkgeworICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzVmVyeVByZXZhbGVudFJlc291cmNlKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxi
YWNrXShib29sIGlzVmVyeVByZXZhbGVudFJlc291cmNlKSB7CiAgICAgICAgIGNhbGxiYWNrKGlz
VmVyeVByZXZhbGVudFJlc291cmNlLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0xOTAs
NyArMTkxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UAogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVu
ZGVyKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIHN1YnJl
c291cmNlSG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0LCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRnVu
Y3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
LSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNS
ZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3Vi
cmVzb3VyY2VIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZy
YW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJl
ZEFzU3VicmVzb3VyY2VVbmRlcikgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBs
KHN1YnJlc291cmNlSG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0
b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lz
dGVyZWRBc1N1YnJlc291cmNlVW5kZXIpIHsKICAgICAgICAgY2FsbGJhY2soaXNSZWdpc3RlcmVk
QXNTdWJyZXNvdXJjZVVuZGVyLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yMDEsNyAr
MjAyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpcwogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIHN1YkZyYW1lSG9z
dCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyRnVuY3Rpb24gY2FsbGJh
Y2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdpc3RlcmVkQXNT
dWJGcmFtZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVIb3N0KS0+c3Ry
aW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygp
KSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcikg
eworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzUmVnaXN0ZXJlZEFzU3ViRnJh
bWVVbmRlcihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHN1YkZyYW1lSG9zdCktPnN0cmluZygp
KSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpIHsKICAg
ICAgICAgY2FsbGJhY2soaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyLCBjb250ZXh0KTsKICAg
ICB9KTsKICNlbHNlCkBAIC0yMTIsNyArMjEzLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpcwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdp
c3RlcmVkQXNSZWRpcmVjdGluZ1RvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0
ZWRUbywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0
ZXJlZEFzUmVkaXJlY3RpbmdUb0Z1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
d2Vic2l0ZURhdGFTdG9yZSgpLmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSwgVVJMKFVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbY29udGV4dCwg
Y2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKSB7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtjb250
ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8pIHsKICAgICAg
ICAgY2FsbGJhY2soaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvLCBjb250ZXh0KTsKICAgICB9
KTsKICNlbHNlCkBAIC0yMjMsNyArMjI0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0
YXRpc3RpY3NSZWdpcwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFk
VXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3Ry
aW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb25GdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIGRh
dGFTdG9yZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KTsKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKTsK
IAogICAgIGlmICh2YWx1ZSkKICAgICAgICAgZGF0YVN0b3JlLmxvZ1VzZXJJbnRlcmFjdGlvbihV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21w
bGV0aW9uSGFuZGxlcl0gewpAQCAtMjQxLDcgKzI0Miw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc0hhc0gKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNz
SGFzSGFkVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3Rh
dGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10o
Ym9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24pIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSGFkVXNlckludGVy
YWN0aW9uKSB7CiAgICAgICAgIGNhbGxiYWNrKGhhc0hhZFVzZXJJbnRlcmFjdGlvbiwgY29udGV4
dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMjUyLDE0ICsyNTMsMTQgQEAgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NIYXNIYQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzR3JhbmRmYXRoZXJlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNldEdyYW5kZmF0aGVyZWQoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCB2YWx1ZSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT5zZXRHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSwgdmFsdWUsIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURh
dGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWRGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJM
KFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJh
Y2tdKGJvb2wgaXNHcmFuZGZhdGhlcmVkKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+aGFzSGFkVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzR3JhbmRmYXRoZXJlZCkg
ewogICAgICAgICBjYWxsYmFjayhpc0dyYW5kZmF0aGVyZWQsIGNvbnRleHQpOwogICAgIH0pOwog
I2Vsc2UKQEAgLTI3MCw0OSArMjcxLDQ5IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0
aXN0aWNzR3JhbmQKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QpCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0K
IAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCkKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oVVJM
KFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQog
CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYg
aG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbXSB7IH0pOwogI2VuZGlmCiB9
CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkKIHsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2Vi
S2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBbXSB7IH0pOworICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFtdIHsg
fSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9w
RnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8pCiB7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRv
KFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbXSB7IH0pOworICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RU
byhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW10geyB9KTsKICNl
bmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0RnJvbShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0
cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZyb20pCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20o
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSwgW10geyB9KTsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
RnJvbShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBbXSB7IH0p
OwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Nyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgZnJvbUhvc3QsIFdLU3RyaW5nUmVmIHRvSG9zdCwgdm9pZCogY29u
dGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlu
a0RlY29yYXRpb25GdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGZyb21Ib3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKHRvSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7
CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0Q3Jvc3NTaXRlTG9hZFdpdGhM
aW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChmcm9tSG9z
dCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b0hvc3QpLT5zdHJpbmco
KSksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAg
ICB9KTsKICNlbHNlCkBAIC0zMjMsNyArMzI0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzQ3Jvcwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGlt
ZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb25GdW5jdGlvbiBjYWxsYmFjaykKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vj
b25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNr
KGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTMzNCw3ICszMzUsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzRnVuY3Rpb24gY2FsbGJhY2spCiB7
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1w
bChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHNQcm9jZXNzaW5nKFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJv
Y2Vzc2luZyhbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7
CiAgICAgfSk7CiAjZWxzZQpAQCAtMzQ1LDcgKzM0Niw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc1Byb2Nlc3MKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Vw
ZGF0ZUNvb2tpZUJsb2NraW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9j
a2luZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbnRleHQsIGNvbXBs
ZXRpb25IYW5kbGVyXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zY2hl
ZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0oKSB7
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAg
LTM1NiwyMSArMzU3LDIxIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1VwZGF0
ZUMKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeShXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnN1Ym1pdFRlbGVtZXRyeSgpOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPnN1Ym1pdFRlbGVtZXRyeSgpOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5u
ZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVj
b3Jkc1dlcmVTY2FubmVkKHZhbHVlLCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUs
IFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzSXNSdW5uaW5nVGVzdChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29s
IHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNS
dW5uaW5nVGVzdEZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KHZhbHVlLCBb
Y29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5z
ZXRJc1J1bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdCh2YWx1ZSwgW2NvbnRleHQsIGNh
bGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAg
LTM4MSw0OSArMzgyLDQ5IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0lz
UnUKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIGJvb2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwodmFs
dWUsIFtdKCkgeyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTaG91
bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSwgW10oKSB7
IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05v
dGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIGJvb2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkuc2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQodmFsdWUsIFtdKCkg
eyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXROb3RpZnlQYWdlc1do
ZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCh2YWx1ZSwgW10oKSB7IH0pOwogI2VuZGlmCiB9CiAKIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFS
ZWNvcmRzUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUg
c2Vjb25kcykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRNaW5pbXVt
VGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyB7IHNlY29uZHMgfSwgW10oKSB7
IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE1pbmltdW1UaW1lQmV0
d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHsgc2Vjb25kcyB9LCBbXSgpIHsgfSk7CiAj
ZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzR3JhbmRmYXRo
ZXJpbmdUaW1lKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNv
bmRzKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEdyYW5kZmF0aGVy
aW5nVGltZShTZWNvbmRzIHsgc2Vjb25kcyB9LCBbXSgpIHsgfSk7CisgICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBzZWNvbmRz
IH0sIFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NNYXhTdGF0aXN0aWNzRW50cmllcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlUmVmLCB1bnNpZ25lZCBlbnRyaWVzKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKGVudHJpZXMsIFtdKCkgeyB9KTsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRNYXhTdGF0aXN0aWNzRW50cmllcyhlbnRy
aWVzLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzUHJ1bmVFbnRyaWVzRG93blRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIHVuc2lnbmVkIGVudHJpZXMpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkuc2V0UHJ1bmVFbnRyaWVzRG93blRvKGVudHJpZXMsIFtdKCkgeyB9KTsKKyAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRQcnVuZUVudHJpZXNEb3duVG8oZW50cmllcywg
W10oKSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0Ns
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50KFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0
LCBjYWxsYmFja10oKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1
bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVyU3Rh
dGlzdGljczo6WWVzLCBbY29udGV4dCwgY2FsbGJhY2tdKCkgewogICAgICAgICBjYWxsYmFjayhj
b250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00MzQsNyArNDM1LDcgQEAgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0
aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3VycyhX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB1bnNpZ25lZCBob3Vycywgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnNGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50KFdhbGxUaW1lOjpub3coKSAtIFNlY29uZHM6OmZyb21Ib3Vycyhob3VycyksIFdlYktp
dDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10o
KSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChXYWxsVGltZTo6bm93KCkgLSBTZWNvbmRzOjpmcm9tSG91cnMoaG91
cnMpLCBXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzLCBbY29udGV4dCwg
Y2FsbGJhY2tdKCkgewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNl
CkBAIC00NDUsNyArNDQ2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xl
YXJJbgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0
ZURhdGFSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNv
bnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRlRGF0
YVJlbW92YWxGdW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNp
dGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKDApLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKDAp
LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAg
fSk7CiB9CkBAIC00NTMsNyArNDU0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzQ2xlYXJUaAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2ll
c0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgaG9zdCwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBj
YWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kZWxldGVDb29r
aWVzRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgaW5jbHVkZUh0dHBPbmx5Q29va2ll
cywgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAg
IH0pOwogI2Vsc2UKQEAgLTQ2NCw3ICs0NjUsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NEZWxldGVDCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2Nh
bFN0b3JhZ2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYg
aG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2Fs
U3RvcmFnZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFT
dG9yZSgpLmhhc0xvY2FsU3RvcmFnZUZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzTG9jYWxTdG9y
YWdlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aGFzTG9jYWxTdG9yYWdl
Rm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNMb2NhbFN0b3JhZ2UpIHsKICAgICAgICAgY2FsbGJh
Y2soaGFzTG9jYWxTdG9yYWdlLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00NzUsNyAr
NDc2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYQogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRleHQsIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9uIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBj
YWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldENhY2hlTWF4
QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0
LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNl
CkBAIC00ODYsNyArNDg3LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
Q2FjaAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9u
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Np
b25GdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KS5oYXNJc29sYXRlZFNlc3Npb25Gb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhhc0lzb2xhdGVkU2Vz
c2lvbikgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0lzb2xhdGVkU2Vz
c2lvbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkp
LCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9uKSB7CiAgICAgICAg
IGNhbGxiYWNrKGhhc0lzb2xhdGVkU2Vzc2lvbiwgY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpA
QCAtNTAxLDcgKzUwMiw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0
VG8KICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAKLSAgICBh
dXRvJiBzdG9yZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKTsKKyAgICBhdXRvJiBzdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpOwog
ICAgIHN0b3JlLmNsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljc0luV2ViUHJvY2Vzc2VzKFtjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAg
IHN0b3JlLnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoW2NhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3Rv
cmUucmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoW2NhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CkBAIC01
MTYsNyArNTE3LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUbwog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxGZXRjaENhY2hlcyhXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVS
ZW1vdmVGZXRjaENhY2hlUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNl
dDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6OkRPTUNhY2hlOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNp
dGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgp
LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwg
Y2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC01
MjgsNyArNTI5LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hlRgog
ICAgIFZlY3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiBkYXRhUmVjb3JkcyA9IHsgV1RG
TW92ZShkYXRhUmVjb3JkKSB9OwogCiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFU
eXBlPiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU7Ci0gICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURh
dGEoZGF0YVR5cGVzLCBkYXRhUmVjb3JkcywgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0YShkYXRhVHlwZXMsIGRhdGFSZWNv
cmRzLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAg
ICAgfSk7CiB9CkBAIC01MzYsNyArNTM3LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1v
dmVGZXRjaENhY2hlRgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRGF0
YWJhc2VzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFjayBjYWxs
YmFjaykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBl
cyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXM7Ci0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEo
ZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10gewor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAt
V2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgIGlmIChjYWxs
YmFjaykKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CkBAIC01NDUsNyArNTQ2
LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRAogdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxT
dG9yYWdlQ2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0
ZURhdGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9y
YWdlOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwg
Y2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRh
KGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsK
ICAgICAgICAgaWYgKGNhbGxiYWNrKQogICAgICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAg
ICAgfSk7CkBAIC01NTUsNyArNTU2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVB
bGxTZXJ2aWNlVwogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBPcHRpb25TZXQ8
V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFU
eXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uczsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxs
VGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5p
dHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwog
ICAgIH0pOwogI2Vsc2UKQEAgLTU2Niw3ICs1NjcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVJlbW92ZUFsbFNlcnZpY2VXCiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNo
ZU9yaWdpbnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFj
aykKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgeyB9LCBbY29u
dGV4dCwgY2FsbGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+ZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNo
ZSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CiAgICAgICAg
IFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7CiAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7CiAgICAgICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykKQEAgLTU4MCw3ICs1
ODEsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplCiB7CiAgICAg
T3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zID0g
V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXM7CiAKLSAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZmV0Y2hEYXRhKFdl
YktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgZmV0Y2hPcHRpb25zLCBbb3JpZ2luLCBj
b250ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0YVJlY29yZHMpIHsKKyAgICBXZWJLaXQ6OnRvSW1w
bChkYXRhU3RvcmVSZWYpLT5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNh
Y2hlLCBmZXRjaE9wdGlvbnMsIFtvcmlnaW4sIGNvbnRleHQsIGNhbGxiYWNrXSAoYXV0byBkYXRh
UmVjb3JkcykgewogICAgICAgICBhdXRvIG9yaWdpbkRhdGEgPSBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zdHJpbmcoKSkt
PmRhdGEoKTsKICAgICAgICAgZm9yIChhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsK
ICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjb3JkT3JpZ2luIDogZGF0YVJlY29yZC5v
cmlnaW5zKSB7CkBAIC01OTcsMjMgKzU5OCwyMyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdl
dEZldGNoQ2FjaGVTaXplCiAKIFdLU3RyaW5nUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNvcHlTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSgpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3Ry
aW5nUmVmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpCiB7Ci0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV2ViS2l0Ojp0b0ltcGwoc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSktPnN0cmluZygpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdlYktpdDo6dG9J
bXBsKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLT5zdHJpbmcoKSk7CiB9CiAK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVpbnQ2NF90IHF1b3RhKQogewotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQZXJPcmlnaW5T
dG9yYWdlUXVvdGEocXVvdGEpOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNl
dFBlck9yaWdpblN0b3JhZ2VRdW90YShxdW90YSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlQ2xlYXJBbGxEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25zKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYpCiB7CiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGV2aWNl
T3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKCkuY2xlYXJQZXJtaXNzaW9ucygp
OworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmRldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uQWNjZXNzQ29udHJvbGxlcigpLmNsZWFyUGVybWlzc2lvbnMoKTsKICNlbmRpZgogfQog
CkBAIC03MTMsMTQgKzcxNCwxNCBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFdlYkF1dGhl
bnRpY2F0CiAgICAgICAgIGNvbmZpZ3VyYXRpb24ubmZjID0gV1RGTW92ZShuZmMpOwogICAgIH0K
IAotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlv
bikpOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAjZW5kaWYKIH0K
IAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbnNUaHJvdWdo
V2Vic2l0ZURhdGFSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Ro
cm91Z2hXZWJzaXRlRGF0YVJlbW92YWxGdW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlOjpBZENsaWNrQXR0cmlidXRpb25zOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6
OmZyb21SYXdTZWNvbmRzKDApLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21S
YXdTZWNvbmRzKDApLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29u
dGV4dCk7CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVQb2xpY2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDEyICsyNywxMiBAQAogI2luY2x1ZGUgIldLV2Vic2l0ZVBvbGljaWVzLmgi
CiAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFT
dG9yZS5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgogI2luY2x1ZGUgIldLQXJyYXkuaCIKICNpbmNsdWRlICJXS0RpY3Rpb25hcnkuaCIK
ICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShub25leGlzdGVudCkKQEAgLTEsMTk3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
QVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotCi0jaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgot
I2luY2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5k
YXRpb24uaD4KLSNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgotCi0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0j
ZW5kaWYKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLU5TU3RyaW5nICpXZWJEYXRhYmFzZURpcmVjdG9y
eURlZmF1bHRzS2V5ID0gQCJXZWJEYXRhYmFzZURpcmVjdG9yeSI7Ci1OU1N0cmluZyAqV2ViU3Rv
cmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGhQcmVmZXJlbmNlS2V5IjsKLU5TU3RyaW5nICpXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5RGVm
YXVsdHNLZXkgPSBAIldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnkiOwotTlNTdHJpbmcgKldlYktp
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSI7Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotICAgIC8vIFRoaXMgcXVpcmsgdXNlZCB0byBtYWtlIHRoZXNlIGFwcHMgc2hhcmUgYXBwbGlj
YXRpb24gY2FjaGUgc3RvcmFnZSwgYnV0IGRvZXNuJ3QgYWNjb21wbGlzaCB0aGF0IGFueSBtb3Jl
LgotICAgIC8vIFByZXNlcnZpbmcgaXQgYXZvaWRzIHRoZSBuZWVkIHRvIG1pZ3JhdGUgZGF0YSB3
aGVuIHVwZ3JhZGluZy4KLSAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSBzaG91bGQganVzdCBoYXZl
IFNhZmFyaSwgV2ViQXBwLCBhbmQgd2ViYm9va21hcmtzZCBjcmVhdGUgYSBkYXRhIHN0b3JlIHdp
dGgKLSAgICAvLyB0aGlzIGFwcGxpY2F0aW9uIGNhY2hlIHBhdGgsIGJ1dCB0aGF0J3Mgbm90IHN1
cHBvcnRlZCBhcyBvZiByaWdodCBub3cuCi0gICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9u
Ojppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkFwcCgp
IHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkJvb2ttYXJrc0QoKSkgewotICAgICAg
ICBOU1N0cmluZyAqY2FjaGVQYXRoID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJd
OwotCi0gICAgICAgIHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBh
dGgoY2FjaGVQYXRoLnN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGgpOwotICAgIH0KLSNlbmRpZgot
Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkNhY2hlU3RvcmFnZSIpOwotfQotCi1X
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Ik5ldHdvcmtDYWNoZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhQ2FjaGUiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAg
ICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIklu
ZGV4ZWREQiIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJTZXJ2aWNlV29ya2VycyIpOwotfQotCi1X
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIkxvY2FsU3RvcmFnZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUtleXMiKTsKLX0K
LQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oIldlYlNRTCIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJu
IHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHRlbXBE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkphdmFTY3JpcHRDb3JlRGVidWciLCBE
b250Q3JlYXRlRGlyZWN0b3J5KTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYg
ZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHNob3VsZENyZWF0ZURpcmVjdG9y
eSkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMg
TlNVUkwgKnRlbXBVUkw7Ci0gICAgCi0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewot
ICAgICAgICBOU1VSTCAqdXJsID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpOU1RlbXBvcmFyeURp
cmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgCi0gICAgICAgIGlmICgh
V2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpi
dW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVu
ZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsK
LSAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRs
ZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgdGVtcFVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIg
aXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOwotICAgIH0pOwotICAgIAotICAgIE5TVVJMICp1cmwg
PSBbdGVtcFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0Rp
cmVjdG9yeTpZRVNdOwotCi0gICAgaWYgKHNob3VsZENyZWF0ZURpcmVjdG9yeSA9PSBDcmVhdGVE
aXJlY3RvcnkKLSAgICAgICAgJiYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNy
ZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0
dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7Ci0gICAgCi0gICAgcmV0dXJuIHVybC5hYnNv
bHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKLX0KLQotV1RGOjpTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Y29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNo
X29uY2VfdCBvbmNlVG9rZW47Ci0gICAgc3RhdGljIE5TVVJMICpjYWNoZVVSTDsKLQotICAgIGRp
c3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TQ2FjaGVzRGlyZWN0b3J5
IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVh
dGU6Tk8gZXJyb3I6bnVsbHB0cl07Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vz
c0hhc0NvbnRhaW5lcigpKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmll
ciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOwotICAgICAgICAgICAg
aWYgKCFidW5kbGVJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIg
PSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICB1
cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlz
RGlyZWN0b3J5OllFU107Ci0gICAgICAgIH0KLQotICAgICAgICBjYWNoZVVSTCA9IFtbdXJsIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRh
aW5dOwotICAgIH0pOwotCi0gICAgTlNVUkwgKnVybCA9IFtjYWNoZVVSTCBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOwotICAgIGlmICgh
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwg
d2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxs
cHRyXSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIs
IHVybCk7Ci0KLSAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0
YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGly
ZWN0b3J5TmFtZSkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAg
ICBzdGF0aWMgTlNVUkwgKndlYnNpdGVEYXRhVVJMOwotCi0gICAgZGlzcGF0Y2hfb25jZSgmb25j
ZVRva2VuLCBeewotICAgICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNMaWJyYXJ5RGlyZWN0b3J5IGluRG9tYWluOk5TVXNl
ckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVs
bHB0cl07Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLQotICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXTsKLQotICAgICAgICBpZiAoIVdlYktpdDo6
cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRl
bnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOwotICAgICAg
ICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50
aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7Ci0gICAgICAg
ICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlm
aWVyIGlzRGlyZWN0b3J5OllFU107Ci0gICAgICAgIH0KLQotICAgICAgICB3ZWJzaXRlRGF0YVVS
TCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0Rp
cmVjdG9yeTpZRVNdIHJldGFpbl07Ci0gICAgfSk7Ci0KLSAgICBOU1VSTCAqdXJsID0gW3dlYnNp
dGVEYXRhVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGly
ZWN0b3J5OllFU107Ci0gICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNy
ZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0
dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKLQotICAgIHJldHVybiB1cmwuYWJzb2x1dGVV
UkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQ
SQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDUsMTcgKzEwNSwxNyBAQCBwcml2YXRlOgogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUg
KilkZWZhdWx0RGF0YVN0b3JlCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkpOworICAgIHJldHVybiB3cmFwcGVyKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpKTsKIH0KIAogKyAoV0tXZWJzaXRl
RGF0YVN0b3JlICopbm9uUGVyc2lzdGVudERhdGFTdG9yZQogewotICAgIHJldHVybiB3cmFwcGVy
KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpKTsK
KyAgICByZXR1cm4gd3JhcHBlcihXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBl
cnNpc3RlbnQoKSk7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIF93ZWJzaXRlRGF0YVN0
b3JlLT5BUEk6OldlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgX3dl
YnNpdGVEYXRhU3RvcmUtPldlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3Rv
cmUoKTsKIAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCArIChO
U1NldCAqKWFsbFdlYnNpdGVEYXRhVHlwZXMKIAogLSAoV0tIVFRQQ29va2llU3RvcmUgKilodHRw
Q29va2llU3RvcmUKIHsKLSAgICByZXR1cm4gd3JhcHBlcihfd2Vic2l0ZURhdGFTdG9yZS0+aHR0
cENvb2tpZVN0b3JlKCkpOworICAgIHJldHVybiB3cmFwcGVyKF93ZWJzaXRlRGF0YVN0b3JlLT5j
b29raWVTdG9yZSgpKTsKIH0KIAogc3RhdGljIFdhbGxUaW1lIHRvU3lzdGVtQ2xvY2tUaW1lKE5T
RGF0ZSAqZGF0ZSkKQEAgLTE4Niw3ICsxODYsNyBAQCAtICh2b2lkKWZldGNoRGF0YVJlY29yZHNP
ZlR5cGVzOihOU1NldCAqCiAtICh2b2lkKXJlbW92ZURhdGFPZlR5cGVzOihOU1NldCAqKWRhdGFU
eXBlcyBtb2RpZmllZFNpbmNlOihOU0RhdGUgKilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIGF1dG8gY29tcGxldGlvbkhhbmRs
ZXJDb3B5ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoV2ViS2l0Ojp0b1dlYnNpdGVE
YXRhVHlwZXMoZGF0YVR5cGVzKSwgdG9TeXN0ZW1DbG9ja1RpbWUoZGF0ZSA/IGRhdGUgOiBbTlNE
YXRlIGRpc3RhbnRQYXN0XSksIFtjb21wbGV0aW9uSGFuZGxlckNvcHldIHsKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+cmVtb3ZlRGF0YShXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlw
ZXMpLCB0b1N5c3RlbUNsb2NrVGltZShkYXRlID8gZGF0ZSA6IFtOU0RhdGUgZGlzdGFudFBhc3Rd
KSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNv
cHkoKTsKICAgICB9KTsKIH0KQEAgLTIwNSw3ICsyMDUsNyBAQCAtICh2b2lkKXJlbW92ZURhdGFP
ZlR5cGVzOihOU1NldCAqKWRhdGFUCiB7CiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpOwogCi0gICAgX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5
cGVzKGRhdGFUeXBlcyksIHRvV2Vic2l0ZURhdGFSZWNvcmRzKGRhdGFSZWNvcmRzKSwgW2NvbXBs
ZXRpb25IYW5kbGVyQ29weV0geworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5yZW1vdmVEYXRhKFdl
YktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIHRvV2Vic2l0ZURhdGFSZWNvcmRz
KGRhdGFSZWNvcmRzKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0gewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlckNvcHkoKTsKICAgICB9KTsKIH0KQEAgLTI0MCwxMiArMjQwLDEyIEBAICsgKE5T
U2V0PE5TU3RyaW5nICo+ICopX2FsbFdlYnNpdGVEYXRhVHkKIAogKyAoQk9PTClfZGVmYXVsdERh
dGFTdG9yZUV4aXN0cwogewotICAgIHJldHVybiBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHREYXRhU3RvcmVFeGlzdHMoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCk7CiB9CiAKICsgKHZvaWQpX2RlbGV0ZURlZmF1bHRE
YXRhU3RvcmVGb3JUZXN0aW5nCiB7Ci0gICAgcmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwogfQog
CiAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCkBAIC0yNTMsNyArMjUzLDcgQEAgLSAo
aW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRpb246KAogICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0byBjb25maWcgPSBj
b25maWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKSA6IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb246OmNyZWF0ZSgpOworICAgIGF1dG8gY29uZmlnID0gY29uZmlndXJhdGlvbi5pc1Bl
cnNpc3RlbnQgPyBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25m
aWd1cmF0aW9uKCkgOiBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVh
dGUoKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKGNvbmZpZy0+aXNQZXJzaXN0ZW50KCkgPT0gY29u
ZmlndXJhdGlvbi5pc1BlcnNpc3RlbnQpOwogCkBAIC0zMTIsNyArMzEyLDcgQEAgLSAoaW5zdGFu
Y2V0eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRpb246KAogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBj
b25maWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZVBlcnNp
c3RlbnRTZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNlc3Np
b25JRCgpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OldlYnNp
dGVEYXRhU3RvcmU+KHNlbGYsIFdURk1vdmUoY29uZmlnKSwgc2Vzc2lvbklEKTsKKyAgICBBUEk6
Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4oc2Vs
ZiwgV1RGTW92ZShjb25maWcpLCBzZXNzaW9uSUQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBA
IC0zMjUsNyArMzI1LDcgQEAgLSAodm9pZClfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0
PAogICAgIGlmIChvcHRpb25zICYgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9uQ29tcHV0
ZVNpemVzKQogICAgICAgICBmZXRjaE9wdGlvbnMuYWRkKFdlYktpdDo6V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbjo6Q29tcHV0ZVNpemVzKTsKIAotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuZmV0Y2hEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBl
cyksIGZldGNoT3B0aW9ucywgW2NvbXBsZXRpb25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXJDb3B5KV0oYXV0byB3ZWJzaXRlRGF0YVJlY29yZHMpIHsKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+ZmV0Y2hEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBl
cyksIGZldGNoT3B0aW9ucywgW2NvbXBsZXRpb25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXJDb3B5KV0oYXV0byB3ZWJzaXRlRGF0YVJlY29yZHMpIHsKICAgICAgICAgVmVj
dG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGVsZW1lbnRzOwogICAgICAgICBlbGVtZW50cy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHdlYnNpdGVEYXRhUmVjb3Jkcy5zaXplKCkpOwogCkBAIC0zMzgs
MTggKzMzOCwxOCBAQCAtICh2b2lkKV9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczooTlNTZXQ8CiAK
IC0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkCiB7Ci0gICAgcmV0dXJuIF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKCk7CiB9CiAKIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkOihCT09MKWVuYWJsZWQKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOwor
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChl
bmFibGVkKTsKIH0KIAogLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZQog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgcmV0dXJuIF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rl
YnVnTW9kZSgpOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZSgpOwogI2Vsc2UKICAgICByZXR1cm4gTk87CiAjZW5kaWYKQEAgLTM1
OCw3ICszNTgsNyBAQCAtIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlCiAt
ICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOihCT09MKWVuYWJsZWQK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZShlbmFibGVkKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZShlbmFibGVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJs
ZWQpOwogI2VuZGlmCkBAIC0zNjYsMTA2ICszNjYsMTA2IEBAIC0gKHZvaWQpX3NldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEZWJ1Z00KIAogLSAoTlNVSW50ZWdlcilfcGVyT3JpZ2luU3RvcmFnZVF1
b3RhCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
cGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5w
ZXJPcmlnaW5TdG9yYWdlUXVvdGEoKTsKIH0KIAogLSAodm9pZClfc2V0UGVyT3JpZ2luU3RvcmFn
ZVF1b3RhOihOU1VJbnRlZ2VyKXNpemUKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNldFBlck9yaWdpblN0b3JhZ2VRdW90YShzaXplKTsKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKHNpemUpOwogfQogCiAtIChOU1N0
cmluZyAqKV9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBy
ZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwogfQogCiAt
ICh2b2lkKV9zZXRDYWNoZVN0b3JhZ2VEaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CiB7
Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRDYWNoZVN0b3Jh
Z2VEaXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2FjaGVT
dG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7CiB9CiAKIC0gKE5TU3RyaW5nICopX3NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
KCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KCk7CiB9CiAKIC0gKHZvaWQpX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CiB7Ci0gICAgX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KGRpcmVjdG9yeSk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkoZGlyZWN0b3J5KTsKIH0KIAogLSAodm9pZClfc2V0Qm91bmRJ
bnRlcmZhY2VJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmll
cihpZGVudGlmaWVyKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Qm91bmRJbnRlcmZhY2VJ
ZGVudGlmaWVyKGlkZW50aWZpZXIpOwogfQogCiAtIChOU1N0cmluZyAqKV9ib3VuZEludGVyZmFj
ZUlkZW50aWZpZXIKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5ib3VuZEludGVyZmFjZUlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVE
YXRhU3RvcmUtPmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRB
bGxvd3NDZWxsdWxhckFjY2VzczooQk9PTClhbGxvd3MKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEFsbG93c0NlbGx1bGFyQWNjZXNzKGFsbG93cyA/IFdl
YktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6OlllcyA6IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJB
Y2Nlc3M6Ok5vKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0QWxsb3dzQ2VsbHVsYXJBY2Nl
c3MoYWxsb3dzID8gV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzIDogV2ViS2l0OjpB
bGxvd3NDZWxsdWxhckFjY2Vzczo6Tm8pOwogfQogCiAtIChCT09MKV9hbGxvd3NDZWxsdWxhckFj
Y2VzcwogewotICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgp
LmFsbG93c0NlbGx1bGFyQWNjZXNzKCkgPT0gV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6
WWVzOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+YWxsb3dzQ2VsbHVsYXJBY2Nlc3Mo
KSA9PSBXZWJLaXQ6OkFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXM7CiB9CiAKIC0gKHZvaWQpX3Nl
dFByb3h5Q29uZmlndXJhdGlvbjooTlNEaWN0aW9uYXJ5ICopY29uZmlndXJhdGlvbgogewotICAg
IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UHJveHlDb25maWd1cmF0
aW9uKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpY29uZmlndXJhdGlvbik7CisgICAgX3dlYnNp
dGVEYXRhU3RvcmUtPnNldFByb3h5Q29uZmlndXJhdGlvbigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5
UmVmKWNvbmZpZ3VyYXRpb24pOwogfQogCiAtIChOU1N0cmluZyAqKV9zb3VyY2VBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKKyAgICBy
ZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cigpOwogfQogCiAtICh2b2lkKV9zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6
KE5TU3RyaW5nICopaWRlbnRpZmllcgogewotICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoaWRl
bnRpZmllcikpCisgICAgaWYgKCFfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKGlkZW50aWZpZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFp
c2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1hdDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIgY2Fubm90IGJlIGNhbGxlZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJd
OwogfQogCiAtIChOU1N0cmluZyAqKV9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZp
ZXIKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5z
b3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNp
dGVEYXRhU3RvcmUtPnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpOwogfQog
CiAtICh2b2lkKV9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6KE5TU3Ry
aW5nICopaWRlbnRpZmllcgogewotICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRp
ZmllcikpCisgICAgaWYgKCFfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRpb25T
ZWNvbmRhcnlJZGVudGlmaWVyKGlkZW50aWZpZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFp
c2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1hdDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29u
ZGFyeUlkZW50aWZpZXIgY2Fubm90IGJlIGNhbGxlZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1
biJdOwogfQogCiAtICh2b2lkKV9zZXRBbGxvd3NUTFNGYWxsYmFjazooQk9PTClhbGxvd3MKIHsK
LSAgICBpZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0QWxsb3dz
VExTRmFsbGJhY2soYWxsb3dzKSkKKyAgICBpZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRBbGxv
d3NUTFNGYWxsYmFjayhhbGxvd3MpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5l
cmljRXhjZXB0aW9uIGZvcm1hdDpAIl9zZXRBbGxvd3NUTFNGYWxsYmFjayBjYW5ub3QgYmUgY2Fs
bGVkIGFmdGVyIG5ldHdvcmtpbmcgaGFzIGJlZ3VuIl07CiB9CiAKIC0gKEJPT0wpX2FsbG93c1RM
U0ZhbGxiYWNrCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkuYWxsb3dzVExTRmFsbGJhY2soKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUt
PmFsbG93c1RMU0ZhbGxiYWNrKCk7CiB9CiAKIC0gKE5TRGljdGlvbmFyeSAqKV9wcm94eUNvbmZp
Z3VyYXRpb24KIHsKLSAgICByZXR1cm4gKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKV93ZWJzaXRl
RGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucHJveHlDb25maWd1cmF0aW9uKCk7CisgICAg
cmV0dXJuIChfX2JyaWRnZSBOU0RpY3Rpb25hcnkgKilfd2Vic2l0ZURhdGFTdG9yZS0+cHJveHlD
b25maWd1cmF0aW9uKCk7CiB9CiAKIC0gKE5TVVJMICopX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5CiB7Ci0gICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X3dlYnNpdGVEYXRhU3Rv
cmUtPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBy
ZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfd2Vic2l0ZURhdGFTdG9yZS0+Y29uZmlndXJh
dGlvbigpLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0K
IAogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFN1Ym1pdFRlbGVtZXRy
eTooQk9PTCl2YWx1ZQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0g
ICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0
b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC00ODAsMTMgKzQ4MCwxMyBAQCAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGVzdGluCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjYWxsYmFjaykgewot
ICAgICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN0YXRpc3Rp
Y3NUZXN0aW5nQ2FsbGJhY2soW2NhbGxiYWNrID0gbWFrZUJsb2NrUHRyKGNhbGxiYWNrKSwgc2Vs
Zl0oY29uc3QgU3RyaW5nJiBldmVudCkgeworICAgICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0
U3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhbY2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoY2FsbGJh
Y2spLCBzZWxmXShjb25zdCBTdHJpbmcmIGV2ZW50KSB7CiAgICAgICAgICAgICBjYWxsYmFjayhz
ZWxmLCBldmVudCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdGF0aXN0aWNzVGVzdGlu
Z0NhbGxiYWNrKG51bGxwdHIpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRTdGF0aXN0aWNz
VGVzdGluZ0NhbGxiYWNrKG51bGxwdHIpOwogI2VuZGlmCiB9CiAKQEAgLTUwOSw3ICs1MDksNyBA
QCAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooCiAgICAgfQogCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHdlYlBhZ2VQcm94
eS0+aWRlbnRpZmllcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXShhdXRvIGRvbWFpbnMpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+Z2V0
QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMod2ViUGFnZVByb3h5LT5pZGVudGlmaWVyKCksIFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZG9t
YWlucykgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gYXBpRG9tYWluczsK
ICAgICAgICAgYXBpRG9tYWlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRvbWFpbnMuc2l6ZSgp
KTsKICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKQpAQCAtNTI0LDcgKzUyNCw3
IEBAIC0gKHZvaWQpX2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOigKIC0gKHZvaWQpX3Nj
aGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGU6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5k
bGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRh
dGUoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUo
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTM1LDcg
KzUzNSw3IEBAIC0gKHZvaWQpX3NjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGU6KHYKIC0gKHZv
aWQpX3NldFByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldFByZXZhbGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURhdGFT
dG9yZS0+c2V0UHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxl
ciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogICAgIH0pOwogI2Vsc2UKQEAgLTU0Niw3ICs1NDYsNyBAQCAtICh2b2lk
KV9zZXRQcmV2YWxlbnREb21haW46KE5TVVJMICopZG9tCiAtICh2b2lkKV9nZXRJc1ByZXZhbGVu
dERvbWFpbjooTlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wp
KWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmlzUHJldmFsZW50
UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildKGJvb2wgZW5hYmxlZCkgeworICAgIF93ZWJzaXRlRGF0YVN0b3Jl
LT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGVuYWJsZWQpIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZW5hYmxlZCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTU3LDcgKzU1
Nyw3IEBAIC0gKHZvaWQpX2dldElzUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWQKIC0gKHZvaWQp
X2NsZWFyUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRh
U3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFu
ZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgewogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogI2Vsc2UKQEAgLTU2OCw3ICs1NjgsNyBAQCAtICh2
b2lkKV9jbGVhclByZXZhbGVudERvbWFpbjooTlNVUkwgKilkCiAtICh2b2lkKV9wcm9jZXNzU3Rh
dGlzdGljc0FuZERhdGFSZWNvcmRzOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jk
c1Byb2Nlc3NpbmcoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNjaGVkdWxlU3RhdGlzdGljc0Fu
ZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAg
ICB9KTsKICNlbHNlCkBAIC01NzgsMTggKzU3OCwxOCBAQCAtICh2b2lkKV9wcm9jZXNzU3RhdGlz
dGljc0FuZERhdGFSZWNvcmRzCiAKIC0gKGJvb2wpX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vy
CiB7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoV2ViQ29yZTo6c2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGFiYXNlRmlsZW5hbWUoX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhXZWJDb3JlOjpzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShfd2Vic2l0ZURhdGFTdG9yZS0+c2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CiB9CiAKIC0gKGlkIDxfV0tXZWJzaXRlRGF0YVN0
b3JlRGVsZWdhdGU+KV9kZWxlZ2F0ZQogewotICAgIHJldHVybiBfZGVsZWdhdGUuZ2V0KCk7Cisg
ICAgcmV0dXJuIF9kZWxlZ2F0ZS5nZXQoKS5nZXQoKTsKIH0KIAogLSAodm9pZClzZXRfZGVsZWdh
dGU6KGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAgX2Rl
bGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3Rv
cmUoKS5zZXRDbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PihkZWxl
Z2F0ZSkpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRDbGllbnQobWFrZVVuaXF1ZVJlZjxX
ZWJzaXRlRGF0YVN0b3JlQ2xpZW50PihkZWxlZ2F0ZSkpOwogfQogCiBAZW5kCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlSW50ZXJuYWwuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDEyICsyNSwxMyBAQAogCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhU3Rv
cmVQcml2YXRlLmgiCiAKLSNpbXBvcnQgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQg
IldLT2JqZWN0LmgiCisjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW1wb3J0IDx3dGYv
V2Vha09iakNQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXRlbXBsYXRlPD4gc3RydWN0
IFdyYXBwZXJUcmFpdHM8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiB7Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBXcmFwcGVyVHJhaXRzPFdlYnNpdGVEYXRhU3RvcmU+IHsKICAgICB1c2luZyBXcmFwcGVyQ2xh
c3MgPSBXS1dlYnNpdGVEYXRhU3RvcmU7CiB9OwogCkBAIC0zOCw3ICszOSw3IEBAIHRlbXBsYXRl
PD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpXZWIKIAogQGludGVyZmFjZSBXS1dlYnNpdGVE
YXRhU3RvcmUgKCkgPFdLT2JqZWN0PiB7CiBAcGFja2FnZQotICAgIEFQSTo6T2JqZWN0U3RvcmFn
ZTxBUEk6OldlYnNpdGVEYXRhU3RvcmU+IF93ZWJzaXRlRGF0YVN0b3JlOwotICAgIFJldGFpblB0
cjxpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsKKyAgICBBUEk6
Ok9iamVjdFN0b3JhZ2U8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBfd2Vic2l0ZURhdGFTdG9y
ZTsKKyAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiA+IF9k
ZWxlZ2F0ZTsKIH0KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVE
YXRhU3RvcmVHTGliLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTcgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgotCi0j
aWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid2Via2l0Z3RrIgotI2Vs
aWYgUExBVEZPUk0oV1BFKQotI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid3BlIgotI2VuZGlmCi0K
LW5hbWVzcGFjZSBBUEkgewotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9T
ICJhcHBsaWNhdGlvbnMiKTsKLX0KLQotLy8gRklYTUU6IFRoZSBvdGhlciBkaXJlY3RvcmllcyBp
biB0aGlzIGZpbGUgYXJlIHNoYXJlZCBiZXR3ZWVuIGFsbCBhcHBsaWNhdGlvbnMgdXNpbmcgV2Vi
S2l0R1RLLgotLy8gV2h5IGlzIG9ubHkgdGhpcyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBhIHBh
cnRpY3VsYXIgYXBwbGljYXRpb24/Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRf
cHJnbmFtZSgpKSwgIldlYktpdENhY2hlIikpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2Fj
aGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIkNhY2hlU3RvcmFnZSIpKTsKLX0KLQotV1RGOjpTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkK
LXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIgR19ESVJfU0VQ
QVJBVE9SX1MgImluZGV4ZWRkYiIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0
dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElS
RUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJzZXJ2aWNld29ya2VycyIpOwotfQotCi1XVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsK
LSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
QkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImxvY2Fsc3RvcmFnZSIpOwotfQotCi1X
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJtZWRpYWtleXMiKTsK
LX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0
b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGV2
aWNlaWRoYXNoc2FsdHMiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQ
QVJBVE9SX1MgImRhdGFiYXNlcyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRP
Ul9TKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFU
T1JfUyAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBX
VEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsK
LSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2Rp
cigpKSwgZGlyZWN0b3J5TmFtZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVE
YXRhU3RvcmVXaW4uY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw2NCArMjUsMyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJV2Vi
c2l0ZURhdGFTdG9yZS5oIgotCi0jaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLQotbmFtZXNw
YWNlIEFQSSB7Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJDYWNoZVN0b3JhZ2UiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKLX0KLQotU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0g
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOwotfQot
Ci1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJTZXJ2aWNlV29ya2VycyIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VE
aXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKLX0KLQotU3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0g
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOwotfQotCi1T
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNo
ZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0
b3J5TmFtZSk7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUp
Ci17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFt
ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAJ
KHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzU4LDcgKzEzNTgs
NyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29rCiAgICAgICAgIEFT
WU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0
ZXIsICJUaGUgcGFyYW1ldGVyICdodHRwT25seScgd2FzIG5vdCBmb3VuZC4iKTsKIAogICAgIFdl
YkNvb2tpZU1hbmFnZXJQcm94eSogY29va2llTWFuYWdlciA9IG1fcHJvY2Vzc1Bvb2wtPnN1cHBs
ZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotICAgIGNvb2tpZU1hbmFnZXItPnNldENv
b2tpZXMocGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpLCB7IGNvb2tpZSB9LCBb
Y2FsbGJhY2sgPSBjYWxsYmFjay5jb3B5UmVmKCldKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKHBhZ2UtPnNlc3Npb25JRCgpLCB7IGNv
b2tpZSB9LCBbY2FsbGJhY2sgPSBjYWxsYmFjay5jb3B5UmVmKCldKENhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yID09IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5v
bmUpCiAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKICAgICAgICAgZWxzZQpA
QCAtMTM3OCw3ICsxMzc4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxs
Q29vawogICAgIFN0cmluZyBob3N0ID0gYWN0aXZlVVJMLmhvc3QoKS50b1N0cmluZygpOwogCiAg
ICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+
c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29va2llTWFuYWdlci0+
ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhwYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lv
bklEKCksIHsgaG9zdCwgZG9tYWluQnlBZGRpbmdEb3RQcmVmaXhJZk5lZWRlZChob3N0KSB9KTsK
KyAgICBjb29raWVNYW5hZ2VyLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKHBhZ2UtPnNlc3Np
b25JRCgpLCB7IGhvc3QsIGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZOZWVkZWQoaG9zdCkgfSk7
CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldFNlc3Npb25QZXJtaXNzaW9ucyhF
cnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlNlc3Npb25QZXJtaXNzaW9uRGF0YT4+JiBvdXRfcGVybWlzc2lvbnMpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQg
IkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJBUElTdHJpbmcuaCIKICNpbXBvcnQg
IkFQSVVSTC5oIgotI2ltcG9ydCAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2ltcG9ydCAiQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkRl
Y2lzaW9uTGlzdGVuZXIuaCIKQEAgLTY0LDYgKzYzLDcgQEAKICNpbXBvcnQgIldlYlBhZ2VQcm94
eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm90ZWN0aW9u
U3BhY2UuaCIKKyNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQgIl9XS0NvbnRl
bnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tFcnJvclJlY292ZXJ5QXR0
ZW1wdGluZy5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4
Nyw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkKICAgICBjb25u
ZWN0KCk7CiAKICAgICBpZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IG1fcHJvY2Vzc1Bvb2wu
d2Vic2l0ZURhdGFTdG9yZSgpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmVzLnNldCh3ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCksIG1ha2VSZWYod2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpKSk7CisgICAgICAgIG1fd2Vic2l0ZURh
dGFTdG9yZXMuc2V0KHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBtYWtlUmVmKCp3ZWJz
aXRlRGF0YVN0b3JlKSk7CiB9CiAKIE5ldHdvcmtQcm9jZXNzUHJveHk6On5OZXR3b3JrUHJvY2Vz
c1Byb3h5KCkKQEAgLTExMzQsMTQgKzExMzQsMTQgQEAgV2Vic2l0ZURhdGFTdG9yZSogTmV0d29y
a1Byb2Nlc3NQcm94eTo6dwogICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlLmdldCgpOwog
CiAgICAgaWYgKGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBtX3Byb2Nlc3NQb29sLndlYnNpdGVE
YXRhU3RvcmUoKSkgewotICAgICAgICBpZiAoc2Vzc2lvbklEID09IHdlYnNpdGVEYXRhU3RvcmUt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSkKLSAgICAgICAgICAgIHJldHVybiAmd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICBpZiAoc2Vzc2lvbklE
ID09IHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKQorICAgICAgICAgICAgcmV0dXJuIHdl
YnNpdGVEYXRhU3RvcmU7CiAgICAgfQogCiAgICAgaWYgKHNlc3Npb25JRCAhPSBQQUw6OlNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiAmQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCktPndlYnNp
dGVEYXRhU3RvcmUoKTsKKyAgICByZXR1cm4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZSgpLnB0cigpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJldHJpZXZlQ2Fj
aGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5j
bHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgiCiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01f
UFJPVE9DT0xfTUFOQUdFUikKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eS5oIgpAQCAtMzYsNiArMzUsNyBAQAogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXJDbGll
bnQuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPG1l
bW9yeT4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMTUgKzI2LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCisjaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JlLmgi
CiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJ
V2Vic2l0ZURhdGFSZWNvcmQuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJEZXZpY2VJZEhhc2hT
YWx0U3RvcmFnZS5oIgogI2luY2x1ZGUgIk1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaG91bGRHcmFuZGZh
dGhlclN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCisjaW5j
bHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMu
aCIKQEAgLTEzOSw2ICsxNDAsNTggQEAgV2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9y
ZShQQUw6OgogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKK3N0YXRpYyBSZWZQ
dHI8V2Vic2l0ZURhdGFTdG9yZT4mIGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4+IGdsb2JhbERlZmF1
bHREYXRhU3RvcmU7CisgICAgcmV0dXJuIGdsb2JhbERlZmF1bHREYXRhU3RvcmUuZ2V0KCk7Cit9
CisKK1JlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlKCkKK3sKKyAgICBJbml0aWFsaXplV2ViS2l0MigpOworCisgICAgYXV0byYgc3RvcmUgPSBn
bG9iYWxEZWZhdWx0RGF0YVN0b3JlKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgc3RvcmUg
PSBhZG9wdFJlZihuZXcgV2Vic2l0ZURhdGFTdG9yZShkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJh
dGlvbigpLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSk7CisKKyAgICByZXR1
cm4gKnN0b3JlOworfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHREYXRh
U3RvcmVGb3JUZXN0aW5nKCkKK3sKKyAgICBnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCkgPSBudWxs
cHRyOworfQorCitib29sIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMo
KQoreworICAgIHJldHVybiAhIWdsb2JhbERlZmF1bHREYXRhU3RvcmUoKTsKK30KKworUmVmPFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisKKyAgICBjb25maWd1
cmF0aW9uLT5zZXRQZXJzaXN0ZW50KHRydWUpOworCisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
KTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJl
Y3RvcnlOYW1lKCJGaWxlcyIpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURp
cmVjdG9yeShkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1l
ZGlhQ2FjaGVEaXJlY3RvcnkoKSk7CisKKyAgICBjb25maWd1cmF0aW9uLT5zZXRJbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeShkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSk7Cisg
ICAgY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShk
ZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1
cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0V2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0
TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5KGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpOworICAgIGNvbmZp
Z3VyYXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0RGV2
aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOworCisgICAgY29uZmlndXJhdGlvbi0+
c2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoZGVmYXVsdEphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KCkpOworCisgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Cit9CisK
IFdlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0YVN0b3JlKCkKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwpAQCAtMTcyOCw3ICsxNzgxLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpyZXNldENhY2hlTWF4QWdlQwogYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjppc0Fzc29jaWF0
ZWRQcm9jZXNzUG9vbChXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpIGNvbnN0CiB7CiAgICAg
aWYgKGF1dG8qIHByb2Nlc3NQb29sRGF0YVN0b3JlID0gcHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFT
dG9yZSgpKQotICAgICAgICByZXR1cm4gJnByb2Nlc3NQb29sRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkgPT0gdGhpczsKKyAgICAgICAgcmV0dXJuIHByb2Nlc3NQb29sRGF0YVN0b3JlID09
IHRoaXM7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNzU0LDcgKzE4MDcsNyBAQCBIYXNo
U2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IFdlYnNpdGVECiAgICAgfQogCiAgICAgaWYgKHBy
b2Nlc3NQb29scy5pc0VtcHR5KCkgJiYgY291bnQgJiYgZW5zdXJlQVBvb2xFeGlzdHMpIHsKLSAg
ICAgICAgYXV0byBwcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbihtX2NvbmZpZ3VyYXRpb24pKTsKKyAgICAgICAgYXV0byBwcm9jZXNzUG9vbCA9IFdlYlBy
b2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgp
KTsKICAgICAgICAgcHJvY2Vzc1Bvb2xzLmFkZChwcm9jZXNzUG9vbC5wdHIoKSk7CiAgICAgfQog
CkBAIC0yMDAxLDYgKzIwNTQsMTQgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjphZGRTZWNLZXlQ
cm94eVN0bwogfQogI2VuZGlmCiAKKyNpZiAhVVNFKEdMSUIpCitXVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKK3sK
KyAgICAvLyBOb3QgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Cit9Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDExICs5MiwxOSBAQCBlbnVtIGNs
YXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXM7CiBzdHJ1Y3QgUGx1Z2luTW9kdWxlSW5mbzsK
ICNlbmRpZgogCi1jbGFzcyBXZWJzaXRlRGF0YVN0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
c2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBJZGVudGlmaWVkPFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8V2Vic2l0ZURhdGFTdG9yZT4gIHsKK2NsYXNzIFdlYnNpdGVEYXRh
U3RvcmUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpXZWJzaXRl
RGF0YVN0b3JlPiwgcHVibGljIElkZW50aWZpZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxXZWJzaXRlRGF0YVN0b3JlPiAgewogcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8V2Vic2l0ZURhdGFTdG9yZT4gZGVmYXVsdERhdGFTdG9yZSgpOworICAgIHN0YXRpYyBib29s
IGRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKKyAgICBzdGF0aWMgdm9pZCBkZWxldGVEZWZhdWx0
RGF0YVN0b3JlRm9yVGVzdGluZygpOworICAgIHN0YXRpYyBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbj4gZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKKwog
ICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlTm9uUGVyc2lzdGVudCgpOwog
ICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlKFJlZjxXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOwotICAgIHZpcnR1YWwgfldlYnNp
dGVEYXRhU3RvcmUoKTsKKworICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNz
aW9uSUQpOworICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgfldlYnNpdGVEYXRhU3Rv
cmUoKTsKIAogICAgIHN0YXRpYyBXZWJzaXRlRGF0YVN0b3JlKiBleGlzdGluZ05vbkRlZmF1bHRE
YXRhU3RvcmVGb3JTZXNzaW9uSUQoUEFMOjpTZXNzaW9uSUQpOwogCkBAIC0yNjUsMTAgKzI3Mywx
MSBAQCBwdWJsaWM6CiAgICAgU09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3ImIHNvQXV0aG9yaXph
dGlvbkNvb3JkaW5hdG9yKCkgeyByZXR1cm4gbV9zb0F1dGhvcml6YXRpb25Db29yZGluYXRvci5n
ZXQoKTsgfQogI2VuZGlmCiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9y
ZShQQUw6OlNlc3Npb25JRCk7Ci0gICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBzdGF0
aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgp
OworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSgpOwogCitwcml2YXRlOgogICAgIHZvaWQgZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwg
UmVmUHRyPFdvcmtRdWV1ZT4mJiwgRnVuY3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNv
cmQ+KT4mJiBhcHBseSk7CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjc5
LDYgKzI4OCwyNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1TZXROZXR3b3JrUGFyYW1l
dGVycyhXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYpOwogI2VuZGlmCiAKKyAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBzdGF0
aWMgV1RGOjpTdHJpbmcgZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHN0YXRp
YyBXVEY6OlN0cmluZyBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CisgICAgc3RhdGlj
IFdURjo6U3RyaW5nIGRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOworICAgIHN0YXRp
YyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHN0
YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5
KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSgpOworI2lmIFVTRShHTElCKQorICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SFNUU0Rp
cmVjdG9yeSgpOworI2VuZGlmCisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRKYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOworCisgICAgZW51bSBTaG91bGRDcmVhdGVEaXJl
Y3RvcnkgeyBDcmVhdGVEaXJlY3RvcnksIERvbnRDcmVhdGVEaXJlY3RvcnkgfTsKKworICAgIFdl
YnNpdGVEYXRhU3RvcmUoKTsKKworICAgIHN0YXRpYyBXVEY6OlN0cmluZyB0ZW1wRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1l
LCBTaG91bGRDcmVhdGVEaXJlY3RvcnkgPSBDcmVhdGVEaXJlY3RvcnkpOworICAgIHN0YXRpYyBX
VEY6OlN0cmluZyBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBX
VEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5n
JiBkaXJlY3RvcnlOYW1lKTsKKyAgICAKICAgICBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9v
bD4+IHByb2Nlc3NQb29scyhzaXplX3QgY291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpLCBib29sIGVuc3VyZUFQb29sRXhpc3RzID0gdHJ1ZSkgY29uc3Q7CiAKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKIAotI2luY2x1ZGUgIkFQSVdl
YnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oKQotICAgIDogbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKSkKKyAgICA6IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgp
KQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogI2ltcG9ydCAiQ29va2llU3RvcmFn
ZVV0aWxzQ0YuaCIKKyNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlN0b3Jh
Z2VNYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIK
ICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCkBAIC0yMzAsNCArMjMxLDE2
MSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtUmVtb3ZlUmVjCiAgICAgV2ViQ29y
ZTo6cmVtb3ZlUmVjZW50bHlNb2RpZmllZFJlY2VudFNlYXJjaGVzKG9sZGVzdFRpbWVUb1JlbW92
ZSk7CiB9CiAKK05TU3RyaW5nICpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJX
ZWJEYXRhYmFzZURpcmVjdG9yeSI7CitOU1N0cmluZyAqV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1
bHRzS2V5ID0gQCJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5IjsK
K05TU3RyaW5nICpXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktp
dE1lZGlhQ2FjaGVEaXJlY3RvcnkiOworTlNTdHJpbmcgKldlYktpdE1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSI7
CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KCkKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIFRoaXMgcXVp
cmsgdXNlZCB0byBtYWtlIHRoZXNlIGFwcHMgc2hhcmUgYXBwbGljYXRpb24gY2FjaGUgc3RvcmFn
ZSwgYnV0IGRvZXNuJ3QgYWNjb21wbGlzaCB0aGF0IGFueSBtb3JlLgorICAgIC8vIFByZXNlcnZp
bmcgaXQgYXZvaWRzIHRoZSBuZWVkIHRvIG1pZ3JhdGUgZGF0YSB3aGVuIHVwZ3JhZGluZy4KKyAg
ICAvLyBGSVhNRTogSWRlYWxseSB3ZSBzaG91bGQganVzdCBoYXZlIFNhZmFyaSwgV2ViQXBwLCBh
bmQgd2ViYm9va21hcmtzZCBjcmVhdGUgYSBkYXRhIHN0b3JlIHdpdGgKKyAgICAvLyB0aGlzIGFw
cGxpY2F0aW9uIGNhY2hlIHBhdGgsIGJ1dCB0aGF0J3Mgbm90IHN1cHBvcnRlZCBhcyBvZiByaWdo
dCBub3cuCisgICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgp
IHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkFwcCgpIHx8IFdlYkNvcmU6OklPU0Fw
cGxpY2F0aW9uOjppc1dlYkJvb2ttYXJrc0QoKSkgeworICAgICAgICBOU1N0cmluZyAqY2FjaGVQ
YXRoID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IkxpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJdOworCisgICAgICAgIHJldHVy
biBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY2FjaGVQYXRoLnN0cmlu
Z0J5U3RhbmRhcmRpemluZ1BhdGgpOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIGNhY2hl
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZsaW5lV2ViQXBwbGljYXRpb25D
YWNoZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVT
dG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oIkNhY2hlU3RvcmFnZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4g
Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSIpOwor
fQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVj
dG9yeSgpCit7CisgICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oIk1lZGlhQ2FjaGUiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4ZWREQiIpOworfQorCitX
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJTZXJ2aWNlV29ya2VycyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4g
d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkxvY2FsU3RvcmFn
ZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUtleXMiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICBy
ZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIldlYlNR
TCIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Cit9
CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oIkphdmFTY3JpcHRDb3JlRGVidWciLCBEb250Q3JlYXRlRGlyZWN0b3J5
KTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hv
dWxkQ3JlYXRlRGlyZWN0b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkKK3sKKyAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBzdGF0aWMgTlNVUkwgKnRlbXBVUkw7Cisg
ICAgCisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBOU1VSTCAqdXJs
ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpOU1RlbXBvcmFyeURpcmVjdG9yeSgpIGlzRGlyZWN0
b3J5OllFU107CisgICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFz
Q29udGFpbmVyKCkpIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0g
W05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAo
IWJ1bmRsZUlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtO
U1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9
IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJl
Y3Rvcnk6WUVTXTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGVtcFVSTCA9IFtbdXJs
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSBy
ZXRhaW5dOworICAgIH0pOworICAgIAorICAgIE5TVVJMICp1cmwgPSBbdGVtcFVSTCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOworCisg
ICAgaWYgKHNob3VsZENyZWF0ZURpcmVjdG9yeSA9PSBDcmVhdGVEaXJlY3RvcnkKKyAgICAgICAg
JiYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJM
OnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9y
Om51bGxwdHJdKSkKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9y
eSAlQCIsIHVybCk7CisgICAgCisgICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbjsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcm
IGRpcmVjdG9yeU5hbWUpCit7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47
CisgICAgc3RhdGljIE5TVVJMICpjYWNoZVVSTDsKKworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VU
b2tlbiwgXnsKKyAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TQ2FjaGVzRGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRv
bWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0
cl07CisgICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKworICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7
CisgICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWlu
QnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOworICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlm
aWVyKQorICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBw
cm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7CisgICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107Cisg
ICAgICAgIH0KKworICAgICAgICBjYWNoZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOworICAgIH0pOworCisg
ICAgTlNVUkwgKnVybCA9IFtjYWNoZVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGly
ZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURp
cmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CisKKyAgICByZXR1
cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOworfQorCitX
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAg
ICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBzdGF0aWMgTlNVUkwgKndl
YnNpdGVEYXRhVVJMOworCisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAg
ICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJl
Y3Rvcnk6TlNMaWJyYXJ5RGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9w
cmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07CisgICAgICAgIGlm
ICghdXJsKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAg
ICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNE
aXJlY3Rvcnk6WUVTXTsKKworICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5l
cigpKSB7CisgICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRs
ZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOworICAgICAgICAgICAgaWYgKCFidW5kbGVJ
ZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNz
SW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7CisgICAgICAgICAgICB1cmwgPSBbdXJsIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllF
U107CisgICAgICAgIH0KKworICAgICAgICB3ZWJzaXRlRGF0YVVSTCA9IFtbdXJsIFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0RpcmVjdG9yeTpZRVNdIHJldGFp
bl07CisgICAgfSk7CisKKyAgICBOU1VSTCAqdXJsID0gW3dlYnNpdGVEYXRhVVJMIFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisgICAg
aWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJM
OnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9y
Om51bGxwdHJdKQorICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5
ICVAIiwgdXJsKTsKKworICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVt
UmVwcmVzZW50YXRpb247Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS93aW4vV2Vic2l0ZURhdGFTdG9yZVdpbi5j
cHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogI2luY2x1ZGUgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIApAQCAtNDUsNCArNDYsNTkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpwbGF0Zm9ybVJlbW92ZVJlYwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK1N0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCit7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUi
KTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJDYWNo
ZVN0b3JhZ2UiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCksICJOZXR3b3JrQ2FjaGUiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQoreworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJTZXJ2aWNlV29ya2VycyIpOwor
fQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9y
eSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChG
aWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2FsU3Rv
cmFnZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQoreworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7
Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7Cit9CisKK1N0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0
YVN0b3JlR0xpYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xp
Yi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDI0OTczMikJKGZyb20gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwOjI0
OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdM
aWIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKworI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorCisjaWYgUExBVEZP
Uk0oR1RLKQorI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid2Via2l0Z3RrIgorI2VsaWYgUExBVEZP
Uk0oV1BFKQorI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid3BlIgorI2VuZGlmCisKK25hbWVzcGFj
ZSBBUEkgeworCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJhcHBsaWNh
dGlvbnMiKTsKK30KKworLy8gRklYTUU6IFRoZSBvdGhlciBkaXJlY3RvcmllcyBpbiB0aGlzIGZp
bGUgYXJlIHNoYXJlZCBiZXR3ZWVuIGFsbCBhcHBsaWNhdGlvbnMgdXNpbmcgV2ViS2l0R1RLLgor
Ly8gV2h5IGlzIG9ubHkgdGhpcyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRpY3VsYXIg
YXBwbGljYXRpb24/CitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29y
a0NhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgp
KSwgIldlYktpdENhY2hlIikpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19n
ZXRfcHJnbmFtZSgpKSwgIkNhY2hlU3RvcmFnZSIpKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICBy
ZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9E
SVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIgR19ESVJfU0VQQVJBVE9SX1Mg
ImluZGV4ZWRkYiIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdf
RElSX1NFUEFSQVRPUl9TICJzZXJ2aWNld29ya2VycyIpOworfQorCitXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1
cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJF
Q1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImxvY2Fsc3RvcmFnZSIpOworfQorCitXVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCit7
CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJtZWRpYWtleXMiKTsKK30KKworU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJl
Y3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGV2aWNlaWRoYXNo
c2FsdHMiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1Mg
ImRhdGFiYXNlcyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
SFNUU0RpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TKTsKK30K
KworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmlu
ZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOworfQorCitXVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGly
ZWN0b3J5TmFtZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAJKHJl
dmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURh
dGFTdG9yZUdMaWIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAog
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNp
bmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KQEAgLTM1LDcgKzM1LDcgQEAKICNk
ZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndwZSIKICNlbmRpZgogCi1uYW1lc3BhY2UgQVBJIHsKK25h
bWVzcGFjZSBXZWJLaXQgewogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI0OTczMikKKysrIFNv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTE3OCw3ICsxNzgsNiBAQAogCQkxQTMwMDY2RTExMTBGNEY3MDAzMTkzN0MgLyogUmVz
cG9uc2l2ZW5lc3NUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUEzMDA2NkMxMTEwRjRGNzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIu
aCAqLzsgfTsKIAkJMUEzMzRERUQxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBMzM0REVCMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CiAJCTFBMzM0REVFMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdl
QXJlYU1hcE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTMzNERFQzE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdl
cy5oICovOyB9OwotCQkxQTM2MzVBQTFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFT
dG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEz
NjM1QTgxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCAqLzsgfTsKIAkJ
MUEzQzg4ODAxOEE1QUJBRTAwQzRDOTYyIC8qIFdLUHJlZmVyZW5jZXNJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzQzg4N0YxOEE1QUJB
RTAwQzRDOTYyIC8qIFdLUHJlZmVyZW5jZXNJbnRlcm5hbC5oICovOyB9OwogCQkxQTNDQzE2NzE4
OTA2QUNGMDAxRTZFRDggLyogV0tXZWJWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNDQzE2NTE4OTA2QUNGMDAxRTZFRDggLyogV0tXZWJWaWV3
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkxQTND
QzE2OTE4OTA3RUIwMDAxRTZFRDggLyogV0tQcm9jZXNzUG9vbEludGVybmFsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNDQzE2ODE4OTA3RUIwMDAx
RTZFRDggLyogV0tQcm9jZXNzUG9vbEludGVybmFsLmggKi87IH07CkBAIC0xNzI1LDYgKzE3MjQs
OCBAQAogCQkJY29tcGlsZXJTcGVjID0gY29tLmFwcGxlLmNvbXBpbGVycy5wcm94eS5zY3JpcHQ7
CiAJCQlmaWxlUGF0dGVybnMgPSAiKi5oIjsKIAkJCWZpbGVUeXBlID0gcGF0dGVybi5wcm94eTsK
KwkJCWlucHV0RmlsZXMgPSAoCisJCQkpOwogCQkJaXNFZGl0YWJsZSA9IDE7CiAJCQlvdXRwdXRG
aWxlcyA9ICgKIAkJCQkiJChIRUFERVJfT1VUUFVUX0RJUikvJChJTlBVVF9GSUxFX05BTUUpIiwK
QEAgLTIxMjEsOSArMjEyMiw2IEBACiAJCTFBMzM0REVBMTZERThCNjgwMDZBOEUzOCAvKiBTdG9y
YWdlQXJlYU1hcC5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8q
IFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQTMzNERFQzE2REU4Rjg4
MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQyL1N0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKLQkJMUEzNjM1QTcxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNp
dGVEYXRhU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJ
V2Vic2l0ZURhdGFTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBMzYz
NUE4MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVdlYnNpdGVEYXRhU3RvcmUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUEzNjM1QUIxQTMxNDVFNTAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEFQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUEzQTczQ0IxQTQ4QzZENDAwNzIzMUIzIC8qIEFQSVBhZ2VHcm91cEhhbmRsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElQYWdlR3JvdXBIYW5kbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTNBNzNDQzFBNDhDNkQ0MDA3MjMxQjMg
LyogQVBJUGFnZUdyb3VwSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFQSVBhZ2VHcm91cEhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTND
ODg3RjE4QTVBQkFFMDBDNEM5NjIgLyogV0tQcmVmZXJlbmNlc0ludGVybmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJlZmVyZW5jZXNJbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjM2Nyw3ICs2MzY1LDYgQEAKIAkJCQk3Q0VGQTk2MDFB
QzA5OTkzMDBCOTEwRkQgLyogQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbSAqLywKIAkJ
CQk1Q0E0NkU3QTIxRjFBMjM5MDBDRTg2QjQgLyogQVBJSFRUUENvb2tpZVN0b3JlQ29jb2EubW0g
Ki8sCiAJCQkJRkVEM0MxREExQjQ0N0FFODAwRTBFQjdGIC8qIEFQSVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUNvY29hLm1tICovLAotCQkJCTFBMzYzNUFCMUEzMTQ1RTUwMEVENjE5NyAvKiBBUElXZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0gKi8sCiAJCQkJMUFGREU2NDMxOTUxMEI1NTAwQzQ4RkZBIC8q
IExlZ2FjeUJ1bmRsZUZvckNsYXNzLm1tICovLAogCQkJCTFDMjA5MzVFMjIzMThDQjAwMDAyNkEz
OSAvKiBOU0F0dHJpYnV0ZWRTdHJpbmcuaCAqLywKIAkJCQkxQzIwOTM1RjIyMzE4Q0IwMDAwMjZB
MzkgLyogTlNBdHRyaWJ1dGVkU3RyaW5nLm1tICovLApAQCAtNzk3Nyw4ICs3OTc0LDYgQEAKIAkJ
CQkyRDg3ODYyMjFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuaCAqLywKIAkJ
CQkxQUUyODY4MTFDN0Y5Mzg2MDA2OUFDNEYgLyogQVBJV2Vic2l0ZURhdGFSZWNvcmQuY3BwICov
LAogCQkJCTFBRTI4NjgyMUM3RjkzODYwMDY5QUM0RiAvKiBBUElXZWJzaXRlRGF0YVJlY29yZC5o
ICovLAotCQkJCTFBMzYzNUE3MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3Jl
LmNwcCAqLywKLQkJCQkxQTM2MzVBODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFT
dG9yZS5oICovLAogCQkJCTVDOEREMzdEMUZFNDUwMTEwMEYyQTU1NiAvKiBBUElXZWJzaXRlUG9s
aWNpZXMuY3BwICovLAogCQkJCTVDOEREMzdDMUZFNDUwMTEwMEYyQTU1NiAvKiBBUElXZWJzaXRl
UG9saWNpZXMuaCAqLywKIAkJCQkxQTY1NjNFMjFCN0E4QzUwMDA5Q0Y3ODcgLyogQVBJV2luZG93
RmVhdHVyZXMuY3BwICovLApAQCAtOTM4Miw3ICs5Mzc3LDYgQEAKIAkJCQlDNUUxQUZFRDE2QjIx
MDE3MDA2Q0MxRjIgLyogQVBJV2ViQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzVFMUFG
RUYxNkIyMTAyOTAwNkNDMUYyIC8qIEFQSVdlYkFyY2hpdmVSZXNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFFMjg2ODQxQzdGOTM4NjAwNjlBQzRGIC8qIEFQSVdlYnNpdGVEYXRhUmVjb3Jk
LmggaW4gSGVhZGVycyAqLywKLQkJCQkxQTM2MzVBQTFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vi
c2l0ZURhdGFTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2NTYzRTUxQjdBOEM1MDAwOUNG
Nzg3IC8qIEFQSVdpbmRvd0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDhEMkE4NTIx
NTgzQTdFMDBDNjc1MkIgLyogQXBwS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQ0QzE5
MzFCMzlGMzMyMDBBQkMyOEUgLyogQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJz
ICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378485</attachid>
            <date>2019-09-10 13:59:48 -0700</date>
            <delta_ts>2019-09-10 14:04:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201655-20190910135947.patch</filename>
            <type>text/plain</type>
            <size>186790</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2NyBAQAorMjAxOS0wOS0xMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB1bm5l
Y2Vzc2FyeSBhYnN0cmFjdGlvbnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBmb3Vy
IHRoaW5ncyB0byBzaW1wbGlmeSBXZWJzaXRlRGF0YVN0b3JlIGNvZGU6CisgICAgICAgIDEuIEl0
IHJlbW92ZXMgQVBJOjpXZWJzaXRlRGF0YVN0b3JlLCB3aGljaCB3YXMganVzdCBhbiB1bm5lY2Vz
c2FyeSB3cmFwcGVyIGFyb3VuZCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUuCisgICAgICAgIDIu
IEl0IGRlcHJlY2F0ZXMgdGhlIHVudXNlZCBhbGlhc2VzIG9mIFdlYnNpdGVEYXRhU3RvcmUsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYW5kIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZgorICAgICAgICAzLiBJdCByZW1vdmVzIHRoZSB1bnVzZWQgQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHByb3BlcnRpZXMgdGhhdCBoYXZlIGJlZW4gbW92ZWQgdG8gV2Vic2l0ZURhdGFTdG9y
ZS4KKyAgICAgICAgNC4gSXQgbWFrZXMgV0tXZWJzaXRlRGF0YVN0b3JlLl9kZWxlZ2F0ZSB3ZWFr
IGluc3RlYWQgb2Ygc3Ryb25nLCBhcyBhbHJlYWR5IGFubm90YXRlZCBpbiBXS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZSBpbiBiZWhh
dmlvciBmcm9tIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZToKKyAg
ICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAg
ICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tp
ZVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6CisgICAg
ICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURh
dGFTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
RGF0YVN0b3JlLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
UG9saWNpZXMuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlUG9saWNpZXM6OmRhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5zKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJEZWxldGVBbGxFbnRyaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
UG9saWN5TGlzdGVuZXIuY3BwOgorICAgICAgICAodXNlV2l0aFBvbGljaWVzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCk6CisgICAgICAgIChXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KToKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAoV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLUmVzb3VyY2VDYWNo
ZU1hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENh
Y2hlT3JpZ2lucyk6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZv
ck9yaWdpbik6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFs
bE9yaWdpbnMpOgorICAgICAgICAodG9XZWJzaXRlRGF0YVR5cGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdl
dERlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlTm9u
UGVyc2lzdGVudERhdGFTdG9yZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVX
aXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29v
a2llU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZVdpdGhDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RT
ZWVuKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVBy
ZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKToKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSk6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5n
VGVzdCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hvdWxkQ2xh
c3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzTWF4U3RhdGlzdGljc0VudHJpZXMpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1BydW5lRW50cmllc0Rvd25Ubyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9u
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGb3JPcmlnaW4p
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnMpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW4pOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmln
aW5TdG9yYWdlUXVvdGEpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdKToK
KyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdKToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIGh0dHBDb29raWVTdG9yZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6bW9kaWZpZWRTaW5jZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOmZv
ckRhdGFSZWNvcmRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgX2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKToKKyAgICAgICAgKCtbV0tXZWJzaXRl
RGF0YVN0b3JlIF9kZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZ10pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3aXRoT3B0aW9u
czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Blck9yaWdpblN0b3Jh
Z2VRdW90YV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFBlck9yaWdpblN0
b3JhZ2VRdW90YTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRDYWNoZVN0
b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOl0pOgor
ICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcl0p
OgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldEFsbG93c0NlbGx1bGFyQWNjZXNz
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93c0NlbGx1bGFyQWNjZXNz
XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJveHlDb25maWd1cmF0aW9u
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFNvdXJj
ZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXI6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0QWxsb3dzVExTRmFs
bGJhY2s6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dzVExTRmFsbGJh
Y2tdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm94eUNvbmZpZ3VyYXRpb25d
KToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zv
cjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9z
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRJc1ByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERv
bWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3Jl
IF9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOl0pOgorICAgICAgICAoLVtXS1dlYnNp
dGVEYXRhU3RvcmUgX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyXSk6CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHNldF9kZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAg
ICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29y
a1Byb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ondl
YnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bV93ZWJQcm9jZXNzQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRl
bnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJt
ZWRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp0ZW1w
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxEZWZhdWx0RGF0
YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHRE
YXRhU3RvcmVGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2wgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAg
ICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6
IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRIU1RTRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Ondl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOS0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEhhbmdzIG9uIFN3aXNz
LmNvbSBkdWUgdG8gdGhlIHdlYiBwcm9jZXNzIGJlaW5nIGJsb2NrZWQgb24gU3RvcmFnZUFyZWFN
YXA6OkxvYWRWYWx1ZXNJZk5lZWRlZApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAg
ICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAotICAgIFVJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAogICAgIFVJ
UHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcApJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5E
IFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAot
ICAgIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKIAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVy
V2luLmNwcApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDYgQEAgVUlQcm9j
ZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVu
dFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElVc2VyU3R5bGVTaGVldC5jcHAKLVVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElXaW5kb3dGZWF0dXJlcy5jcHAKIApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yNzQsNyArMjc0LDYgQEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubQogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNv
Y29hLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCi1VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9MZWdhY3lCdW5kbGVGb3JDbGFzcy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0
dHJpYnV0ZWRTdHJpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3Qu
bW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9Tb3VyY2VzR1RLLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw2IEBAIFVJ
UHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9n
dGsvV0tWaWV3LmNwcAogCiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVz
dC5jcHAgQG5vLXVuaWZ5CkBAIC0yMzIsNiArMjMxLDcgQEAgVUlQcm9jZXNzL2NhaXJvL0JhY2tp
bmdTdG9yZUNhaXJvLmNwcCBAbgogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcAogVUlQcm9jZXNzL2dzdHJlYW1lci9X
ZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTExNCw3ICsxMTQsNiBAQCBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMu
Y3BwCiBVSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKIAogVUlQcm9jZXNzL0FQSS9nbGli
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlR0xpYi5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJ
L2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXBwbGljYXRpb25JbmZvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwIEBuby11bmlmeQpAQCAtMTkyLDYgKzE5MSw3IEBA
IFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3YKIAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5
R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5p
ZnkKIAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKIFVJ
UHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJu
aW5nLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNyAr
NDE2LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgICwg
bV9wcmVmZXJlbmNlcygqbV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpKQogICAgICwgbV91
c2VyQ29udGVudENvbnRyb2xsZXIoKm1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRl
ZExpbmtTdG9yZSgpKQotICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+
d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCisgICAgLCBtX3dlYnNpdGVE
YXRhU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKQogICAgICwgbV91
c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgeyBtX2NvbmZpZ3VyYXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5KCkgfQogICAgICwgbV90cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZp
Z3VyYXRpb24tPnRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCkBAIC0y
ODY3LDggKzI4NjcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9s
CiAgICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gZGF0YTsKICAgICBpZiAocG9saWNp
ZXMpIHsKICAgICAgICAgZGF0YSA9IHBvbGljaWVzLT5kYXRhKCk7Ci0gICAgICAgIGlmIChwb2xp
Y2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpICYmICZwb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgp
LT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSkgewotICAgICAg
ICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCktPndl
YnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAgaWYgKHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3Jl
KCkgJiYgcG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlLnB0
cigpKSB7CisgICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gKnBvbGljaWVzLT53ZWJzaXRl
RGF0YVN0b3JlKCk7CiAgICAgICAgICAgICBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDQsOCArMjQ0LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nl
c3NQb29sKEFQSTo6UHJvYwogICAgICAgICBQcm9jZXNzOjpzZXRJZGVudGlmaWVyKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKICAgICB9KTsKIAotICAgIGlmICghbV93
ZWJzaXRlRGF0YVN0b3JlICYmIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZUV4aXN0cygpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSAm
JiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCisgICAgICAgIG1f
d2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsK
IAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV9jb25maWd1cmF0aW9uLT5hbHdheXNSZXZhbGlk
YXRlZFVSTFNjaGVtZXMoKSkKICAgICAgICAgbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2
YWxpZGF0ZWQuYWRkKHNjaGVtZSk7CkBAIC00ODMsMTQgKzQ4MywxNCBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKLSAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZW5kaW5nQ29va2ll
cyA9IGNvcHlUb1ZlY3RvcihtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5w
ZW5kaW5nQ29va2llcygpKTsKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuY2xlYXJQZW5kaW5nQ29va2llcygpOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1
bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fd2Vi
c2l0ZURhdGFTdG9yZS0+cGVuZGluZ0Nvb2tpZXMoKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFT
dG9yZS0+Y2xlYXJQZW5kaW5nQ29va2llcygpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAg
ICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyKCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNr
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJh
Y2soKSA/IEFsbG93c1RMU0ZhbGxiYWNrOjpZZXMgOiBBbGxvd3NUTFNGYWxsYmFjazo6Tm87Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IG1fd2Vic2l0
ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9IG1fd2Vic2l0ZURh
dGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNrID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5hbGxvd3NUTFNG
YWxsYmFjaygpID8gQWxsb3dzVExTRmFsbGJhY2s6OlllcyA6IEFsbG93c1RMU0ZhbGxiYWNrOjpO
bzsKICNlbmRpZgotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5uZXR3b3JraW5nSGFzQmVndW4oKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3
b3JraW5nSGFzQmVndW4oKTsKICAgICB9CiAKICAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBj
YWNoZU1vZGVsKCk7CkBAIC01MDIsOSArNTAyLDYgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2Vi
UHJvY2Vzc1Bvb2w6OmVucwogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV91cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scykKICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVz
UmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKIAotICAgIHBhcmFt
ZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5kaXNrQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHko
KSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRpc2tDYWNo
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BF
Q1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24gPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNo
ZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQoKTsKICNlbmRpZgpAQCAtNTQxLDIzICs1Mzgs
MTEgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgIHBhcmFt
ZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkID0gY29weVRvVmVjdG9yKG1f
c2NoZW1lc1RvUmVnaXN0ZXJBc0NPUlNFbmFibGVkKTsKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVt
ZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCA9IGNvcHlUb1ZlY3Rvciht
X3NjaGVtZXNUb1JlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCk7CiAKLSNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICAvLyAqKioqKioqKioKLSAgICAvLyBJTVBPUlRB
TlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0
YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBB
cHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKLSAgICAvLyAqKioqKioqKioKLSAgICBw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeSA9IG1fY29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAg
ICBpZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygp
LmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKLSAgICAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVs
dERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU3ltTGlua0ZvckZpbGVVcGdyYWRlKHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5KTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChtX3dl
YnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJl
c29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgICAgICBwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPnJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAg
IGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAg
ICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSAgQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpOworICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkgPSAgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5LCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogCiAgICAgaWYgKCFtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZS5p
c0VtcHR5KCkpCkBAIC01NjYsMTYgKzU1MSwxNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQ
cm9jZXNzUG9vbDo6ZW5zCiAgICAgcGFyYW1ldGVycy5zaG91bGREaXNhYmxlU2VydmljZVdvcmtl
clByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclBy
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5OwogI2VuZGlmCiAKLSAgICBhdXRvIGxvY2FsU3RvcmFnZURp
cmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBudWxsU3RyaW5n
KCk7CisgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUg
PyBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBu
dWxsU3RyaW5nKCk7CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpOworICAgICAgICBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBs
b2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5k
ZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwor
ICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5yZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKICAg
ICBpZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0g
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogCiAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFt
ZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCkBAIC02MDEsMTcgKzU4NiwxNyBAQCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgfSBlbHNlIGlmICht
X3dlYnNpdGVEYXRhU3RvcmUpIHsKICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgICAgICBlbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkuaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygpOworICAgICAg
ICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5oYXNTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKCk7CiAjZW5kaWYKICAgICAg
ICAgaWYgKGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKLSAgICAgICAgICAgIGF1dG8g
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKKyAgICAgICAg
ICAgIGF1dG8gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5w
YXJhbWV0ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzOwogICAgICAgICAgICAgc2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNsdWRl
TG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgICAgICAgICAgZW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5l
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAgICAgICAgICAgbWFudWFs
UHJldmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKLSAgICAgICAg
cGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVv
dGEgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZXJPcmlnaW5TdG9y
YWdlUXVvdGEoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOworICAg
ICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlck9yaWdpblN0b3Jh
Z2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0
eU9yaWdpblN0b3JhZ2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyVGhpcmRQYXJ0eU9y
aWdpblN0b3JhZ2VRdW90YSgpOwogICAgIH0KIAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNzAyLDggKzY4
Nyw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnQKIAogICAgIGlm
ICghd2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkK
LSAgICAgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwotICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gJm1f
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICAgICAgbV93ZWJz
aXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OworICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOwog
ICAgIH0KIAogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQpAQCAt
Nzk1LDEyICs3ODAsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdl
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygp
CiB7CiAgICAgbV9yZXNvbHZlZFBhdGhzLmluamVjdGVkQnVuZGxlUGF0aCA9IHJlc29sdmVQYXRo
Rm9yU2FuZGJveEV4dGVuc2lvbihpbmplY3RlZEJ1bmRsZVBhdGgoKSk7Ci0gICAgbV9yZXNvbHZl
ZFBhdGhzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdy
aXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLndlYlNRTERhdGFiYXNl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAg
ICBtX3Jlc29sdmVkUGF0aHMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVS
ZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVk
aWFDYWNoZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwot
ICAgIG1fcmVzb2x2ZWRQYXRocy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRp
b24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOwotCiAgICAgbV9yZXNvbHZlZFBhdGhz
LmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnJlc2VydmVDYXBhY2l0
eShtX2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkuc2l6
ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBtX2NvbmZpZ3VyYXRpb24tPmFkZGl0
aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkpCiAgICAgICAgIG1fcmVzb2x2ZWRQYXRocy5h
ZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy51bmNoZWNrZWRBcHBlbmQo
cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGguZGF0YSgpKSk7CkBAIC04MzcsNyAr
ODE2LDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OgogI2lmIFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIC8vIEluIHBsYXRmb3JtcyB1c2luZyBC
dWJibGV3cmFwIGZvciBzYW5kYm94aW5nLCBwcmV3YXJtZWQgcHJvY2VzcyBpcyBsYXVuY2hlZCB1
c2luZyB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlLAogICAgIC8v
IHNvIHdlIGRvbid0IHVzZSBpdCBpbiBjYXNlIG9mIHVzaW5nIGEgZGlmZmVyZW50IFdlYnNpdGVE
YXRhU3RvcmUuCi0gICAgaWYgKG1fc2FuZGJveEVuYWJsZWQgJiYgbV93ZWJzaXRlRGF0YVN0b3Jl
ICYmICZtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURh
dGFTdG9yZSkKKyAgICBpZiAobV9zYW5kYm94RW5hYmxlZCAmJiBtX3dlYnNpdGVEYXRhU3RvcmUg
JiYgbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogCkBAIC04ODUsOCArODY0LDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2VuZFdlYlByb2Nlc3NEYXRhUwogICAgIGlmICghcGFyYW1ldGVycy5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFt
ZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgcGFy
YW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gd2Vic2l0
ZURhdGFTdG9yZS5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCk7Ci0g
ICAgaWYgKHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZS5pc0VtcHR5KCkpCi0gICAgICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRG
aWxlU3ViZGlyZWN0b3J5TmFtZSgpOwogCiAgICAgcGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSgpOwog
ICAgIGlmIChwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKQEAg
LTExMDcsNyArMTA4NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRGaW5pc2hM
YXUKICAgICBtX2Nvbm5lY3Rpb25DbGllbnQuZGlkQ3JlYXRlQ29ubmVjdGlvbih0aGlzLCBwcm9j
ZXNzLT53ZWJDb25uZWN0aW9uKCkpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAg
ICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGlkQ3JlYXRlTmV0
d29ya1Byb2Nlc3MoKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kaWRDcmVhdGVOZXR3
b3JrUHJvY2VzcygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vz
cyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCkBAIC0xMTg2LDcgKzExNjMsNyBAQCBXZWJQcm9j
ZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzCiAgICAgICAgIHJldHVybiBjcmVhdGVO
ZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIGJvb2wgbXVzdE1hdGNoRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gJkFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
Ym9vbCBtdXN0TWF0Y2hEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwogI2Vsc2UKICAgICBib29sIG11c3RNYXRjaERhdGFTdG9y
ZSA9IGZhbHNlOwogI2VuZGlmCkBAIC0xMjIwLDcgKzExOTcsNyBAQCBSZWY8V2ViUGFnZVByb3h5
PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAgICAgIC8vIFdlIHRyeSB0byBhdm9pZCBjcmVh
dGluZyB0aGUgZGVmYXVsdCBkYXRhIHN0b3JlIGFzIGxvbmcgYXMgcG9zc2libGUuCiAgICAgICAg
IC8vIEJ1dCBpZiB0aGVyZSBpcyBhbiBhdHRlbXB0IHRvIGNyZWF0ZSBhIHdlYiBwYWdlIHdpdGhv
dXQgYW55IHNwZWNpZmllZCBkYXRhIHN0b3JlLCB0aGVuIHdlIGhhdmUgdG8gY3JlYXRlIGl0Lgog
ICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgICAgIG1fd2Vic2l0ZURh
dGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OworICAgICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwogCiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRX
ZWJzaXRlRGF0YVN0b3JlKG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSk7CiAgICAgfQpAQCAtMTIz
MSw4ICsxMjA4LDggQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZQog
ICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdl
IHZpYSB3aW5kb3cub3BlbigpLgogICAgICAgICBwcm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9u
LT5yZWxhdGVkUGFnZSgpLT5lbnN1cmVSdW5uaW5nUHJvY2VzcygpOwogICAgICAgICAvLyBXZSBk
byBub3Qgc3VwcG9ydCBzZXZlcmFsIFdlYnNpdGVEYXRhU3RvcmVzIHNoYXJpbmcgYSBzaW5nbGUg
cHJvY2Vzcy4KLSAgICAgICAgQVNTRVJUKHByb2Nlc3MuZ2V0KCkgPT0gbV9kdW1teVByb2Nlc3NQ
cm94eSB8fCAmcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURh
dGFTdG9yZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwotICAgICAgICBBU1NF
UlQoJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkg
PT0gJnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3Rv
cmUoKSk7CisgICAgICAgIEFTU0VSVChwcm9jZXNzLmdldCgpID09IG1fZHVtbXlQcm9jZXNzUHJv
eHkgfHwgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmcHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgQVNTRVJUKCZwYWdlQ29uZmlndXJhdGlvbi0+
cmVsYXRlZFBhZ2UoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHBhZ2VDb25maWd1cmF0aW9uLT53
ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIH0gZWxzZSBpZiAoIW1faXNEZWxheWVkV2ViUHJvY2Vz
c0xhdW5jaERpc2FibGVkKSB7CiAgICAgICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwgd2UgZGVs
YXkgcHJvY2VzcyBsYXVuY2ggdW50aWwgc29tZXRoaW5nIGlzIGFjdHVhbGx5IGxvYWRlZCBpbiB0
aGUgcGFnZS4KICAgICAgICAgaWYgKCFtX2R1bW15UHJvY2Vzc1Byb3h5KSB7CkBAIC0xMjQyLDcg
KzEyMTksNyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAg
ICAgIH0KICAgICAgICAgcHJvY2VzcyA9IG1fZHVtbXlQcm9jZXNzUHJveHk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIHByb2Nlc3MgPSAmcHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHBhZ2VDb25m
aWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSwgbnVsbHB0
ciwgeyB9KTsKKyAgICAgICAgcHJvY2VzcyA9ICZwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4o
KnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCksIG51bGxwdHIsIHsgfSk7CiAK
ICAgICBBU1NFUlQocHJvY2Vzcyk7CiAKQEAgLTEyOTIsNyArMTI2OSw3IEBAIGJvb2wgV2ViUHJv
Y2Vzc1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmluZyBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlv
bigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgICAgIHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KCk7CiAKICAgICByZXR1cm4gbV9tYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzLmVu
c3VyZShzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBbJl0gewogICAgICAgICAv
LyBGSVhNRTogTWFrZSB0aGlzIGNvbXB1dGF0aW9uIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI0
OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJI
aWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyLmgiCkBAIC00NCw2ICs0Myw3
IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2
aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBAIC0yMDIsOCAr
MjAyLDggQEAgcHVibGljOgogICAgIC8vIERpc2Nvbm5lY3QgdGhlIHByb2Nlc3MgZnJvbSB0aGUg
Y29udGV4dC4KICAgICB2b2lkIGRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSopOwog
Ci0gICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRQcmltYXJ5RGF0
YVN0b3JlKEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKSB7IG1fd2Vic2l0ZURhdGFT
dG9yZSA9ICZkYXRhU3RvcmU7IH0KKyAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0
b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRQcmltYXJ5RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkgeyBtX3dl
YnNpdGVEYXRhU3RvcmUgPSAmZGF0YVN0b3JlOyB9CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBj
cmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CiAKQEAgLTY3Niw3ICs2NzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tZW1vcnlTYW1wbGVy
RW5hYmxlZCB7IGZhbHNlIH07CiAgICAgZG91YmxlIG1fbWVtb3J5U2FtcGxlckludGVydmFsIHsg
MTQwMC4wIH07CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVE
YXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9y
ZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgUmVmUHRyPFdlYkNvbnRleHRT
dXBwbGVtZW50PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IFdlYkNvbnRleHRTdXBwbGVtZW50TWFw
OwogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVudHM7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBD
b29raWVTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKIAotI2luY2x1ZGUg
IkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVT
dG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgZW51
bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludAogbmFtZXNwYWNlIEFQSSB7CiAK
IGNsYXNzIEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyOwotY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKIAogY2xhc3MgSFRUUENvb2tpZVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEyICsxNTEsMTIgQEAg
dm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0VmlzaXRlZExpbmtTdAogICAgIG1fdmlzaXRlZExp
bmtTdG9yZSA9IHZpc2l0ZWRMaW5rU3RvcmU7CiB9CiAKLUFQSTo6V2Vic2l0ZURhdGFTdG9yZSog
UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQorV2Vic2l0ZURhdGFTdG9yZSog
UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIHJldHVybiBtX3dl
YnNpdGVEYXRhU3RvcmUuZ2V0KCk7CiB9CiAKLXZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFdl
YnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQor
dm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNp
dGVEYXRhU3RvcmU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDEyICs0NCwxMiBAQCBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIGNsYXNzIFdlYlByb2Nl
c3NQb29sOwogY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIH0KIAogbmFtZXNwYWNl
IEFQSSB7CiAKIGNsYXNzIEFwcGxpY2F0aW9uTWFuaWZlc3Q7Ci1jbGFzcyBXZWJzaXRlRGF0YVN0
b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogCiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbiA6
IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6UGFnZUNvbmZpZ3VyYXRpb24+IHsKQEAg
LTg0LDggKzg0LDggQEAgcHVibGljOgogICAgIFdlYktpdDo6VmlzaXRlZExpbmtTdG9yZSogdmlz
aXRlZExpbmtTdG9yZSgpOwogICAgIHZvaWQgc2V0VmlzaXRlZExpbmtTdG9yZShXZWJLaXQ6OlZp
c2l0ZWRMaW5rU3RvcmUqKTsKIAotICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3Rv
cmUoKTsKLSAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSopOwor
ICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpOworICAgIHZv
aWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUqKTsKIAogICAg
IFdlYnNpdGVQb2xpY2llcyogZGVmYXVsdFdlYnNpdGVQb2xpY2llcygpIGNvbnN0OwogICAgIHZv
aWQgc2V0RGVmYXVsdFdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXMqKTsKQEAgLTE0NSw3
ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9y
ZWxhdGVkUGFnZTsKICAgICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0
ZWRMaW5rU3RvcmU7CiAKLSAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0
YVN0b3JlOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURh
dGFTdG9yZTsKICAgICBSZWZQdHI8V2Vic2l0ZVBvbGljaWVzPiBtX2RlZmF1bHRXZWJzaXRlUG9s
aWNpZXM7CiAKICAgICBib29sIG1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmUgeyB0cnVlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjQ5NzMy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKIAotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgor
I2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIEFQSSB7CiAKQEAgLTM2
LDM1ICszNiw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb28KICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOwogfQogCi1S
ZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNy
ZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihjb25zdCBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJiBsZWdhY3lDb25maWd1cmF0aW9uKQotewotICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0K
LSAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsK
LSAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRp
YUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5
KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGxl
Z2FjeUNvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBjb25m
aWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24u
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmRldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBs
ZWdhY3lDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0KLSAgICByZXR1
cm4gY29uZmlndXJhdGlvbjsKLX0KLQogUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKQotICAgIDogbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpCi0gICAg
LCBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkZpbGVzIikKLSAg
ICAsIG1fZGlza0NhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKSkKLSAgICAsIG1fbWVkaWFDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKQotICAgICwgbV9pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fZGV2aWNlSWRI
YXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJ
ZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fd2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkp
Ci0gICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSgpKQogewogfQogCkBAIC03NywxOCArNDksOCBAQCBSZWY8UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgYXV0byBjb3B5ID0gdGhpcy0+Y3Jl
YXRlKCk7CiAKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9kZWw7Ci0g
ICAgY29weS0+bV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX2Rpc2tDYWNoZURpcmVjdG9y
eTsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgPSB0
aGlzLT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQ7Ci0gICAgY29weS0+
bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5OwotICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZSA9IHRoaXMtPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsK
LSAgICBjb3B5LT5tX21lZGlhQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX21lZGlhQ2FjaGVEaXJl
Y3Rvcnk7Ci0gICAgY29weS0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1f
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9pbmplY3RlZEJ1bmRsZVBh
dGggPSB0aGlzLT5tX2luamVjdGVkQnVuZGxlUGF0aDsKLSAgICBjb3B5LT5tX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1f
ZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9kZXZpY2VJZEhhc2hT
YWx0c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeTsKLSAgICBjb3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gdGhp
cy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2NhY2hlUGFydGl0aW9u
ZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBj
b3B5LT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fYWx3YXlzUmV2YWxp
ZGF0ZWRVUkxTY2hlbWVzOwogICAgIGNvcHktPm1fYWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2Vk
UGF0aHMgPSB0aGlzLT5tX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24+IGNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bihjb25zdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJik7CiAKICAgICBl
eHBsaWNpdCBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKQEAgLTc5LDM4ICs3Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJL
aXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsg
fQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkg
eyBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAKLSAgICBjb25zdCBXVEY6OlN0cmluZyYg
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkgeyBtX2FwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9Ci0KLSAgICBj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXREaXNrQ2Fj
aGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSkgeyBtX2Rp
c2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeTsgfQotCi0gICAgY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ2Fj
aGVEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0g
bWVkaWFDYWNoZURpcmVjdG9yeTsgfQotICAgIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNv
bnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBtX2luZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQogICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBt
X2luamVjdGVkQnVuZGxlUGF0aDsgfQogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKGNv
bnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpIHsgbV9pbmplY3RlZEJ1bmRsZVBh
dGggPSBpbmplY3RlZEJ1bmRsZVBhdGg7IH0KIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9y
eTsgfQotICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5n
JiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpIHsgbV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBkZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkSGFzaFNh
bHRzU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnkpIHsgbV9kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBkaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6
U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViU1FM
RGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KGNvbnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkgeyBtX3dlYlNRTERh
dGFiYXNlRGlyZWN0b3J5ID0gd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0
IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
OyB9Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGNvbnN0IFdU
Rjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSB7IG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7
IH0KLQogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzKCkgeyByZXR1cm4gbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsgfQogICAgIHZv
aWQgc2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIGNh
Y2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKSB7IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMg
PSBXVEZNb3ZlKGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKTsgfQogCkBAIC0xODYsMTcgKzE1
NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlv
bkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwg
eyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlByaW1hcnlXZWJCcm93c2VyIH07CiAKLSAgICBXVEY6OlN0
cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9hcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwotICAgIFdURjo6U3RyaW5nIG1f
ZGlza0NhY2hlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fbWVkaWFDYWNoZURpcmVjdG9y
eTsKLSAgICBXVEY6OlN0cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFdU
Rjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwotICAgIFdURjo6U3RyaW5nIG1fbG9jYWxT
dG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7
Ci0gICAgV1RGOjpTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6
U3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBWZWN0b3I8V1RG
OjpTdHJpbmc+IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7CiAgICAgVmVjdG9yPFdURjo6
U3RyaW5nPiBtX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKICAgICBWZWN0b3I8V1RGOjpD
U3RyaW5nPiBtX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVEYXRhU3RvcmUuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTY4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCi0KLSNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgotI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmUuaCIKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLXN0YXRpYyBSZWZQdHI8V2Vic2l0
ZURhdGFTdG9yZT4mIGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKQotewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4+IGdsb2JhbERlZmF1bHREYXRhU3Rv
cmU7Ci0gICAgcmV0dXJuIGdsb2JhbERlZmF1bHREYXRhU3RvcmUuZ2V0KCk7Ci19Ci0KLQotUmVm
PFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKQot
ewotICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKLQotICAgIGF1dG8mIHN0b3JlID0g
Z2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpOwotICAgIGlmICghc3RvcmUpCi0gICAgICAgIHN0b3Jl
ID0gYWRvcHRSZWYobmV3IFdlYnNpdGVEYXRhU3RvcmUoZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwotCi0gICAgcmV0
dXJuICpzdG9yZTsKLX0KLQotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVEZWZhdWx0RGF0
YVN0b3JlRm9yVGVzdGluZygpCi17Ci0gICAgZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpID0gbnVs
bHB0cjsKLX0KLQotYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3Rz
KCkKLXsKLSAgICByZXR1cm4gISFnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCk7Ci19Ci0KLVJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0
YVN0b3JlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlKTsK
LX0KLQotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShSZWY8
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBj
b25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKSk7
Ci19Ci0KLVdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoKQotICAgIDogbV93ZWJz
aXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVu
dCgpKQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICA6IG1fd2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQp
KQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCi17Ci19Ci0K
LUhUVFBDb29raWVTdG9yZSYgV2Vic2l0ZURhdGFTdG9yZTo6aHR0cENvb2tpZVN0b3JlKCkKLXsK
LSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5jb29raWVTdG9yZSgpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjogaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPmNvbmZpZ3VyYXRpb24oKS5pbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSgpOwotfQotCi1ib29sIFdlYnNpdGVEYXRhU3RvcmU6OmlzUGVy
c2lzdGVudCgpCi17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+aXNQZXJzaXN0ZW50
KCk7Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Ci19Ci0KLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7
Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOwotfQotCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCBlbmFibGVkKQotewotICAgIG1f
d2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFi
bGVkKTsKLX0KLQotI2lmICFQTEFURk9STShDT0NPQSkKLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzY5IGFu
ZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzcwCi0gICAgcmV0
dXJuIFdURjo6U3RyaW5nKCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgLy8gRklYTUU6
IEltcGxlbWVudC4KLSAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKLX0KLSNlbmRpZgotCi0jaWYg
IVVTRShHTElCKQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgLy8gTm90IGltcGxlbWVudGVkLgot
ICAgIHJldHVybiBXVEY6OlN0cmluZygpOwotfQotI2VuZGlmCi0KLVJlZjxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0KLSAgICBjb25maWd1cmF0
aW9uLT5zZXRQZXJzaXN0ZW50KHRydWUpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsK
LSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lKCJGaWxlcyIpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVj
dG9yeShkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24t
PnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkp
OwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkoKSk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5zZXRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeShkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAg
Y29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShkZWZh
dWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0
aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGRl
ZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0RGV2aWNl
SWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0
SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoZGVmYXVsdEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5KCkpOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdl
YnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShub25leGlzdGVudCkKQEAg
LTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJBUElIVFRQQ29va2llU3RvcmUuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0j
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgQVBJIHsKLQotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSBmaW5hbCA6IHB1
YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6V2Vic2l0ZURhdGFTdG9yZT4gewotcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gZGVmYXVsdERhdGFTdG9yZSgpOwot
ICAgIHN0YXRpYyBib29sIGRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKLSAgICBzdGF0aWMgdm9p
ZCBkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwotCi0gICAgc3RhdGljIFJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+JiYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7Ci0gICAgc3RhdGljIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7Ci0KLSAgICBleHBs
aWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7Ci0gICAgdmlydHVhbCB+V2Vic2l0ZURhdGFTdG9y
ZSgpOwotCi0gICAgYm9vbCBpc1BlcnNpc3RlbnQoKTsKLQotICAgIGJvb2wgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdDsKLSAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGJvb2wpOwotICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShib29sKTsKLQotICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSgpIHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQotICAgIEhUVFBDb29raWVT
dG9yZSYgaHR0cENvb2tpZVN0b3JlKCk7Ci0KLSAgICBXVEY6OlN0cmluZyBpbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcg
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBk
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGlj
IFdURjo6U3RyaW5nIGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotI2lmIFVTRShH
TElCKQotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SFNUU0RpcmVjdG9yeSgpOwotI2Vu
ZGlmCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRKYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwot
Ci1wcml2YXRlOgotICAgIGVudW0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0
b3J5LCBEb250Q3JlYXRlRGlyZWN0b3J5IH07Ci0KLSAgICBXZWJzaXRlRGF0YVN0b3JlKCk7Ci0K
LSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0
b3J5ID0gQ3JlYXRlRGlyZWN0b3J5KTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSk7Ci0K
LSAgICBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7Ci19
OwotCi19CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGlj
aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZVBvbGljaWVzLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE0
ICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xp
Y2llcy5oIgogCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgIldl
YnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCiAKIG5h
bWVzcGFjZSBBUEkgewogCiBXZWJzaXRlUG9saWNpZXM6OldlYnNpdGVQb2xpY2llcygpID0gZGVm
YXVsdDsKIAotV2Vic2l0ZVBvbGljaWVzOjpXZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxs
b3dlZEF1dG9wbGF5UXVpcmtzLCBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeSBhdXRvcGxh
eVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiBsZWdhY3lDdXN0b21I
ZWFkZXJGaWVsZHMsIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+JiYgY3VzdG9t
SGVhZGVyRmllbGRzLCBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSBwb3BVcFBvbGljeSwgUmVm
UHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKK1dlYnNpdGVQb2xpY2ll
czo6V2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgT3B0aW9uU2V0
PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IGFsbG93ZWRBdXRvcGxheVF1aXJrcywgV2Vi
S2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3kgYXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3Jl
OjpIVFRQSGVhZGVyRmllbGQ+JiYgbGVnYWN5Q3VzdG9tSGVhZGVyRmllbGRzLCBWZWN0b3I8V2Vi
Q29yZTo6Q3VzdG9tSGVhZGVyRmllbGRzPiYmIGN1c3RvbUhlYWRlckZpZWxkcywgV2ViS2l0OjpX
ZWJzaXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3ksIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKICAgICA6IG1fY29udGVudEJsb2NrZXJzRW5hYmxl
ZChjb250ZW50QmxvY2tlcnNFbmFibGVkKQogICAgICwgbV9hbGxvd2VkQXV0b3BsYXlRdWlya3Mo
YWxsb3dlZEF1dG9wbGF5UXVpcmtzKQogICAgICwgbV9hdXRvcGxheVBvbGljeShhdXRvcGxheVBv
bGljeSkKQEAgLTg0LDcgKzg0LDcgQEAgV2Vic2l0ZVBvbGljaWVzOjp+V2Vic2l0ZVBvbGljaWVz
KCkKIHsKIH0KIAotdm9pZCBXZWJzaXRlUG9saWNpZXM6OnNldFdlYnNpdGVEYXRhU3RvcmUoUmVm
UHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKK3ZvaWQgV2Vic2l0ZVBv
bGljaWVzOjpzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBXVEZN
b3ZlKHdlYnNpdGVEYXRhU3RvcmUpOwogfQpAQCAtMTA4LDcgKzEwOCw3IEBAIFdlYktpdDo6V2Vi
c2l0ZVBvbGljaWVzRGF0YSBXZWJzaXRlUG9saWMKICNlbmRpZgogICAgICAgICBXVEZNb3ZlKGN1
c3RvbUhlYWRlckZpZWxkcyksCiAgICAgICAgIHBvcFVwUG9saWN5KCksCi0gICAgICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZSA/IE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnM+IHsgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygp
IH0gOiBXVEY6Om51bGxvcHQsCisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA/IE9wdGlvbmFs
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IHsgbV93ZWJzaXRlRGF0YVN0b3Jl
LT5wYXJhbWV0ZXJzKCkgfSA6IFdURjo6bnVsbG9wdCwKICAgICAgICAgbV9jdXN0b21Vc2VyQWdl
bnQsCiAgICAgICAgIG1fY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVp
cmtzLAogICAgICAgICBtX2N1c3RvbU5hdmlnYXRvclBsYXRmb3JtLApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2ll
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMyArNDEsMTIgQEAKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIHN0
cnVjdCBXZWJzaXRlUG9saWNpZXNEYXRhOwogfQogCiBuYW1lc3BhY2UgQVBJIHsKIAotY2xhc3Mg
V2Vic2l0ZURhdGFTdG9yZTsKLQogY2xhc3MgV2Vic2l0ZVBvbGljaWVzIGZpbmFsIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6V2Vic2l0ZVBvbGljaWVzPiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlUG9saWNpZXM+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2Vic2l0ZVBvbGljaWVzKTsgfQpAQCAtNzksOCArNzgsOCBAQCBwdWJs
aWM6CiAgICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3koKSBjb25zdCB7
IHJldHVybiBtX3BvcFVwUG9saWN5OyB9CiAgICAgdm9pZCBzZXRQb3BVcFBvbGljeShXZWJLaXQ6
OldlYnNpdGVQb3BVcFBvbGljeSBwb2xpY3kpIHsgbV9wb3BVcFBvbGljeSA9IHBvbGljeTsgfQog
Ci0gICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJu
IG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9y
ZShSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJik7CisgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3Jl
LmdldCgpOyB9CisgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0cjxXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU+JiYpOwogCiAgICAgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIGRh
dGEoKTsKIApAQCAtMTE4LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFsbG93Q29u
dGVudENoYW5nZU9ic2VydmVyUXVpcmsoYm9vbCBhbGxvdykgeyBtX2FsbG93Q29udGVudENoYW5n
ZU9ic2VydmVyUXVpcmsgPSBhbGxvdzsgfQogCiBwcml2YXRlOgotICAgIFdlYnNpdGVQb2xpY2ll
cyhib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVB
dXRvcGxheVF1aXJrPiwgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJD
b3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYsIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVs
ZHM+JiYsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5LCBSZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4mJik7CisgICAgV2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwg
T3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+LCBXZWJLaXQ6OldlYnNpdGVB
dXRvcGxheVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiwgVmVjdG9y
PFdlYkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4mJiwgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xp
Y3ksIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+JiYpOwogCiAgICAgYm9vbCBtX2Nv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQgeyB0cnVlIH07CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZUF1dG9wbGF5UXVpcms+IG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtzOwpAQCAtMTI5LDcgKzEy
OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4gbV9s
ZWdhY3lDdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkN1c3RvbUhlYWRl
ckZpZWxkcz4gbV9jdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQ
b2xpY3kgbV9wb3BVcFBvbGljeSB7IFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5OjpEZWZhdWx0
IH07Ci0gICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAg
ICBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAg
ICAgV1RGOjpTdHJpbmcgbV9jdXN0b21Vc2VyQWdlbnQ7CiAgICAgV1RGOjpTdHJpbmcgbV9jdXN0
b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3M7CiAgICAgV1RGOjpTdHJp
bmcgbV9jdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjks
NiBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNzIFByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjsKIGNsYXNzIFNlc3Npb25TdGF0ZTsKIGNsYXNzIFVzZXJTY3JpcHQ7Ci1jbGFzcyBXZWJz
aXRlRGF0YVN0b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogY2xhc3MgV2luZG93RmVhdHVy
ZXM7CiB9CkBAIC0xMTMsNiArMTEyLDcgQEAgY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI7CiBjbGFzcyBXZWJUZXh0Q2hlY2tlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OwogY2xhc3MgV2ViVmlld3BvcnRBdHRyaWJ1dGVzOworY2xhc3MgV2Vic2l0
ZURhdGFTdG9yZTsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOwogCiBXS19B
RERfQVBJX01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiwgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eSkKQEAgLTE2OSw3ICsxNjksNyBAQCBXS19BRERfQVBJX01BUFBJTkco
V0tVc2VyTWVkaWFQZXJtaXNzaW9uCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFJlZiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSkKIFdLX0FE
RF9BUElfTUFQUElORyhXS1VzZXJTY3JpcHRSZWYsIEFQSTo6VXNlclNjcmlwdCkKIFdLX0FERF9B
UElfTUFQUElORyhXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZiwgV2ViVmlld3BvcnRBdHRyaWJ1dGVz
KQotV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgQVBJOjpXZWJzaXRl
RGF0YVN0b3JlKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb25SZWYsIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tXZWJzaXRlUG9saWNpZXNSZWYsIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2luZG93RmVhdHVyZXNSZWYsIEFQSTo6
V2luZG93RmVhdHVyZXMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ5
NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDQyICsyNiwxOSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCIKIAotI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCi0KIFdL
VHlwZUlEIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRUeXBlSUQoKQogewotICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CisgICAgcmV0
dXJuIDA7CiB9CiAKLXZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9uIGNhbGxiYWNrKQordm9pZCBXS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnMoV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlclJlZiwgdm9pZCosIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luc0Z1bmN0aW9uKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBX
ZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oYXBw
bGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVE
YXRhU3RvcmUuZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdKGF1dG8gZGF0YVJlY29yZHMp
IHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2luczsK
LSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKLSAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKQot
ICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy5hcHBlbmQoQVBJOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBjYWxsYmFjayhXZWJLaXQ6OnRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHNlY3Vy
aXR5T3JpZ2lucykpLnB0cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZv
aWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwgV0tTZWN1cml0
eU9yaWdpblJlZiBvcmlnaW4pCit2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVF
bnRyaWVzRm9yT3JpZ2luKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYsIFdLU2VjdXJpdHlP
cmlnaW5SZWYpCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IFdlYktpdDo6dG9JbXBs
KHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihhcHBsaWNhdGlvbkNhY2hl
TWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0KLSAgICBXZWJLaXQ6OldlYnNpdGVEYXRh
UmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCBXZWJLaXQ6OnRvSW1wbChvcmlnaW4p
LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7Ci0KLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92
ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
LCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsKIH0KIAotdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyKQordm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRl
QWxsRW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmKQogewotICAgIGF1dG8mIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0
ZURhdGFTdG9yZVJlZj4oYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YShXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwg
W10geyB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgJKHJldmlzaW9uIDI0OTczMikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTggKzI3LDE5IEBACiAjZGVmaW5lIFdLQXBwbGljYXRp
b25DYWNoZU1hbmFnZXJfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUg
PFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMi
IHsKICNlbmRpZgogCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ckdldFR5cGVJRCgpOworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJHZXRUeXBlSUQoKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiB0eXBlZGVmIHZvaWQgKCpXS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiko
V0tBcnJheVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9u
IGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRB
cHBsaWNhdGlvbkNhY2hlT3JpZ2lucyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbikgV0tfQ19BUElf
REVQUkVDQVRFRDsKIAotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRl
bGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNh
dGlvbkNhY2hlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pOwotV0tfRVhQT1JU
IHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcik7CitXS19FWFBPUlQg
dm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCBXS1NlY3Vy
aXR5T3JpZ2luUmVmIG9yaWdpbikgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lk
IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpIFdLX0NfQVBJX0RFUFJFQ0FU
RUQ7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCShyZXZpc2lv
biAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5
TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCIKIAotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMu
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZVBvbGljaWVzRGF0YS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw5MCArMjYsMzggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAi
QVBJRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNs
dWRlICJTdG9yYWdlTWFuYWdlci5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUg
IldlYnNpdGVEYXRhUmVjb3JkLmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlw
ZUlEIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRv
QVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIDA7CiB9CiAK
IFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpCiB7Ci0g
ICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJXZWJLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURldGFpbHNPcmlnaW5LZXkiKS5sZWFrUmVmKCk7Ci0g
ICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBXS1N0cmlu
Z1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKQogewotICAg
IHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiV2ViS2V5VmFs
dWVTdG9yYWdlTWFuYWdlclN0b3JhZ2VEZXRhaWxzQ3JlYXRpb25UaW1lS2V5IikubGVha1JlZigp
OwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogV0tT
dHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgp
CiB7Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJX
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURldGFpbHNNb2RpZmljYXRpb25UaW1lS2V5
IikubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VP
cmlnaW5zKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
LCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3Jh
Z2VPcmlnaW5zRnVuY3Rpb24gY2FsbGJhY2spCi0KK3ZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYs
IHZvaWQqLCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5z
RnVuY3Rpb24pCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVy
cHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oa2V5VmFsdWVTdG9yYWdlTWFuYWdlcikp
LT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5mZXRjaERhdGEoeyBX
ZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3Rv
cmFnZSB9LCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10oYXV0byBkYXRhUmVjb3JkcykgewotICAg
ICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gc2VjdXJpdHlPcmlnaW5zOwotICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVjb3JkcykgewotICAgICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBkYXRhUmVjb3JkLm9yaWdpbnMpCi0gICAgICAg
ICAgICAgICAgc2VjdXJpdHlPcmlnaW5zLmFwcGVuZChBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUob3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxi
YWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHNlY3VyaXR5T3JpZ2lucykpLnB0
cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1bmN0aW9uIGNhbGxiYWNr
KQordm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwgdm9pZCosIFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5jdGlvbikKIHsKLSAgICBhdXRvJiB3ZWJz
aXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3Jl
UmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3
ZWJzaXRlRGF0YVN0b3JlLmdldExvY2FsU3RvcmFnZURldGFpbHMoW2NvbnRleHQsIGNhbGxiYWNr
XShhdXRvJiYgZGV0YWlscykgewotICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4g
cmVzdWx0OwotICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkZXRhaWxzLnNp
emUoKSk7Ci0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkZXRhaWwgOiBkZXRhaWxzKSB7Ci0g
ICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSTo6T2JqZWN0Pj4gZGV0YWlsTWFw
OwotICAgICAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKGRldGFpbC5vcmlnaW5JZGVudGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0K
LSAgICAgICAgICAgIGRldGFpbE1hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ckdldE9yaWdpbktleSgpKS0+c3RyaW5nKCksIG9yaWdpbik7Ci0gICAgICAgICAgICBpZiAoZGV0
YWlsLmNyZWF0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxNYXAuc2V0KHRvSW1wbChX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBB
UEk6OkRvdWJsZTo6Y3JlYXRlKGRldGFpbC5jcmVhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2No
KCkudmFsdWUoKSkpOwotICAgICAgICAgICAgaWYgKGRldGFpbC5tb2RpZmljYXRpb25UaW1lKQot
ICAgICAgICAgICAgICAgIGRldGFpbE1hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3Jl
YXRlKGRldGFpbC5tb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkp
KTsKLQotICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChBUEk6OkRpY3Rpb25hcnk6
OmNyZWF0ZShXVEZNb3ZlKGRldGFpbE1hcCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxi
YWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdCkpLnB0cigpKSwgbnVs
bHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5
VmFsdWVTdG9yYWdlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pCit2b2lkIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmKQogewotICAgIGF1dG8mIHdlYnNp
dGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVS
ZWY+KGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIFdl
YnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURh
dGFUeXBlOjpMb2NhbFN0b3JhZ2UsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRh
dGEoKSk7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFn
ZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKLSAgICB3ZWJzaXRl
RGF0YVN0b3JlLnJlbW92ZURhdGEoeyBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vi
c2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSB9LCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsK
IH0KIAotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKQordm9pZCBXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlclJlZikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJw
cmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSkt
PndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEoeyBX
ZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3Rv
cmFnZSB9LCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtdIHsgfSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXIuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDMwICsy
NywzMSBAQAogI2RlZmluZSBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJfaAogCiAjaW5jbHVkZSA8
V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lm
ZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi1XS19FWFBPUlQgV0tUeXBl
SUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlEKCk7CitXS19FWFBPUlQgV0tUeXBl
SUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlEKCkgV0tfQ19BUElfREVQUkVDQVRF
RDsKIAogLyogVmFsdWUgdHlwZTogV0tTZWN1cml0eU9yaWdpblJlZiAqLwotV0tfRVhQT1JUIFdL
U3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpOworV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpIFdL
X0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5cGU6IFdLRG91YmxlUmVmLCBzZWNvbmRz
IHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpOworV0tfRVhQT1JUIFdL
U3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpIFdL
X0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5cGU6IFdLRG91YmxlUmVmLCBzZWNvbmRz
IHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKTsKK1dLX0VYUE9S
VCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1l
S2V5KCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uKShXS0FycmF5UmVm
LCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zRnVuY3Rpb24gZnVuY3Rpb24pOworV0tf
RVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3Jp
Z2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwg
dm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdl
T3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiB0eXBlZGVm
IHZvaWQgKCpXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
RnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdLRXJyb3JSZWYsIHZvaWQqKTsKLVdLX0VYUE9SVCB2b2lk
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4oV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRl
eHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5j
dGlvbiBmdW5jdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24gZnVuY3Rpb24pIFdLX0NfQVBJX0RF
UFJFQ0FURUQ7CiAKLVdLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0
ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3Rv
cmFnZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKTsKLVdLX0VYUE9SVCB2b2lk
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpOworV0tfRVhQT1JUIHZvaWQgV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJl
ZiBvcmlnaW4pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CitXS19FWFBPUlQgdm9pZCBXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVz
b3VyY2VDYWNoZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNjcgKzI2LDE5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oIgogCi0jaW5jbHVkZSAiQVBJQXJy
YXkuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSAiV0tBUElD
YXN0LmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNvcmQuaCIKLQotdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKLQogV0tUeXBlSUQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldFR5cGVJRCgpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7Ci19Ci0K
LXN0YXRpYyBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZXMoV0tS
ZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikKLXsKLSAgICBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzIHsgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlD
YWNoZSB9OwotCi0gICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gV0tSZXNvdXJjZUNhY2hlc1RvQ2xl
YXJBbGwpCi0gICAgICAgIHdlYnNpdGVEYXRhVHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlz
a0NhY2hlKTsKLQotICAgIHJldHVybiB3ZWJzaXRlRGF0YVR5cGVzOworICAgIHJldHVybiAwOwog
fQogCi12b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMoV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFjaykKK3ZvaWQgV0tSZXNv
dXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVm
LCB2b2lkKiwgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uKQog
ewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxX
S1dlYnNpdGVEYXRhU3RvcmVSZWY+KGNhY2hlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7
Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5mZXRjaERhdGEodG9XZWJzaXRlRGF0YVR5cGVzKFdLUmVz
b3VyY2VDYWNoZXNUb0NsZWFyQWxsKSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdKGF1dG8gZGF0
YVJlY29yZHMpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5
T3JpZ2luczsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29y
ZHMpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5v
cmlnaW5zKQotICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy5hcHBlbmQoQVBJOjpTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShzZWN1
cml0eU9yaWdpbnMpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwotICAgIH0pOwogfQogCi12
b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5hZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwg
V0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikKK3ZvaWQgV0tSZXNvdXJjZUNh
Y2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4oV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiwg
V0tTZWN1cml0eU9yaWdpblJlZiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgYXV0
byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURh
dGFTdG9yZVJlZj4oY2FjaGVNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLQotICAgIFZl
Y3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gZGF0YVJlY29yZHM7Ci0KLSAgICB7Ci0gICAgICAgIFdl
YnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNp
dGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigp
LmRhdGEoKSk7Ci0KLSAgICAgICAgZGF0YVJlY29yZHMuYXBwZW5kKGRhdGFSZWNvcmQpOwotICAg
IH0KLQotICAgIGlmIChjYWNoZXNUb0NsZWFyID09IFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyQWxs
KSB7Ci0gICAgICAgIFdlYnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgICAgIGRhdGFS
ZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCB0b0ltcGwob3JpZ2luKS0+c2Vj
dXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotCi0gICAgICAgIGRhdGFSZWNvcmRzLmFwcGVuZChkYXRh
UmVjb3JkKTsKLSAgICB9Ci0KLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEodG9XZWJz
aXRlRGF0YVR5cGVzKGNhY2hlc1RvQ2xlYXIpLCBkYXRhUmVjb3JkcywgW10geyB9KTsKIH0KIAot
dm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFsbE9yaWdpbnMoV0tSZXNv
dXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFy
IGNhY2hlc1RvQ2xlYXIpCit2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9y
QWxsT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmLCBXS1Jlc291cmNlQ2FjaGVzVG9D
bGVhcikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0
X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihjYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFT
dG9yZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YSh0b1dlYnNpdGVEYXRhVHlw
ZXMoY2FjaGVzVG9DbGVhciksIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW10geyB9KTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyX2gKIAogI2luY2x1ZGUg
PFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CiAKICNp
ZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0zOCwxMyArMzksMTMgQEAgZW51bSB7
CiB9OwogdHlwZWRlZiB1aW50MzJfdCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhcjsKIAotV0tfRVhQ
T1JUIFdLVHlwZUlEIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRUeXBlSUQoKTsKK1dLX0VYUE9S
VCBXS1R5cGVJRCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0VHlwZUlEKCkgV0tfQ19BUElfREVQ
UkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hl
T3JpZ2luc0Z1bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBP
UlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zKFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJSZWYgY29udGV4dFJlZiwgdm9pZCogY29udGV4dCwgV0tSZXNvdXJjZUNhY2hl
TWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lk
IFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFu
YWdlclJlZiBjb250ZXh0UmVmLCB2b2lkKiBjb250ZXh0LCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2Vy
R2V0Q2FjaGVPcmlnaW5zRnVuY3Rpb24gZnVuY3Rpb24pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAK
LVdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2lu
KFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5nZXIsIFdLU2VjdXJpdHlPcmlnaW5S
ZWYgb3JpZ2luLCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKTsKLVdLX0VY
UE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhX
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwgV0tSZXNvdXJjZUNhY2hlc1Rv
Q2xlYXIgY2FjaGVzVG9DbGVhcik7CitXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyQ2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFu
Z2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIg
Y2FjaGVzVG9DbGVhcikgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lkIFdLUmVz
b3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVN
YW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9D
bGVhcikgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAKICNpbmNsdWRlICJXS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCIKIAogI2luY2x1
ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1
ZGUgIkFQSUhUVFBDb29raWVTdG9yZS5oIgogI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mu
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKQEAgLTQxLDI5ICs0MSwzMCBAQAogI2luY2x1ZGUg
IldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0Fn
Z3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIFdLVHlwZUlEIFdLV2Vic2l0ZURh
dGFTdG9yZUdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OkFQSVR5cGUpOwogfQogCiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
V0tXZWJzaXRlRGF0YVN0b3JlR2V0RGVmYXVsdERhdGFTdG9yZSgpCiB7Ci0gICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRy
KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpKTsKIH0KIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdL
V2Vic2l0ZURhdGFTdG9yZUNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKQogewotICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNp
c3RlbnREYXRhU3RvcmUoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKS5sZWFrUmVmKCkp
OwogfQogCiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlV2l0
aENvbmZpZ3VyYXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblJlZiBjb25maWd1
cmF0aW9uKQogewogICAgIGF1dG8gc2Vzc2lvbklEID0gV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJh
dGlvbiktPmlzUGVyc2lzdGVudCgpID8gUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlUGVyc2lzdGVu
dFNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlRXBoZW1lcmFsU2Vzc2lvbklE
KCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3Jl
YXRlKCpXZWJLaXQ6OnRvSW1wbChjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKS5sZWFrUmVmKCkp
OworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNy
ZWF0ZSgqV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJhdGlvbiksIHNlc3Npb25JRCkubGVha1JlZigp
KTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZSkK
QEAgLTgzLDEzICs4NCwxMyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9h
ZFN0CiAKIFdLSFRUUENvb2tpZVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUdldEhUVFBDb29r
aWVTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKQogewotICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5odHRwQ29va2ll
U3RvcmUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPmNvb2tpZVN0b3JlKCkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVXaXRoQ29tcGxldGlvbkhhbmRsZXIoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWJ1Z01vZGVGdW5jdGlvbiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGVuYWJsZSwgW2NvbnRleHQsIGNvbXBsZXRpb25I
YW5kbGVyXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGUsIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
cl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsKICNlbHNl
CkBAIC0xMDAsNyArMTAxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc0RlYnVnTW9kZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdN
b2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQs
IGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMTEwLDcg
KzExMSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3QKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGRvdWJsZSBzZWNvbmRzLCB2b2lk
KiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzTGFzdFNlZW5GdW5jdGlvbiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXRMYXN0U2VlbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFNl
Y29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldExhc3RTZWVuKFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQs
IGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQp
OwogICAgIH0pOwogI2Vsc2UKQEAgLTEyMSw3ICsxMjIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NMYXN0CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3Rp
Y3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0
YVN0b3JlKCk7CisgICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZhbHVlKQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3Jl
LnNldFByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CkBAIC0xMzksNyArMTQwLDcg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldgogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVz
b3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byYgd2Vic2l0
ZURhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZh
bHVlKQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlLnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21w
bGV0aW9uSGFuZGxlcl0gewpAQCAtMTU3LDcgKzE1OCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1ZlcnkKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlRHVtcFJlc291cmNl
TG9hZFN0YXRpc3RpY3MoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3NGdW5j
dGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kdW1w
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbY29udGV4dCwgY2FsbGJhY2tdIChjb25zdCBTdHJpbmcm
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbY29udGV4dCwgY2FsbGJhY2tdIChjb25z
dCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKICAgICAgICAgY2FsbGJhY2soV2Vi
S2l0Ojp0b0FQSShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmltcGwoKSksIGNvbnRleHQpOwogICAg
IH0pOwogI2Vsc2UKQEAgLTE2OCw3ICsxNjksNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUR1
bXBSZXNvdXJjZUxvYWRTCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJz
aXRlRGF0YVN0b3JlKCkuaXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ByZXZhbGVu
dFJlc291cmNlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNQcmV2YWxl
bnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKSB7CiAgICAgICAgIGNh
bGxiYWNrKGlzUHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAg
LTE3OSw3ICsxODAsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZh
CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJj
ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmlzVmVyeVByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzVmVyeVByZXZhbGVudFJl
c291cmNlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsKICAgICAg
ICAgY2FsbGJhY2soaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwog
I2Vsc2UKQEAgLTE5MCw3ICsxOTEsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRB
c1N1YnJlc291cmNlVW5kZXIoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tT
dHJpbmdSZWYgc3VicmVzb3VyY2VIb3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXJGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChzdWJyZXNvdXJjZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJv
b2wgaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNr
XShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikgewogICAgICAgICBjYWxsYmFj
ayhpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIsIGNvbnRleHQpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTIwMSw3ICsyMDIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1
YkZyYW1lVW5kZXIoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgc3ViRnJhbWVIb3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXJG
dW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5p
c1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJG
cmFtZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVI
b3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNT
dWJGcmFtZVVuZGVyKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNSZWdp
c3RlcmVkQXNTdWJGcmFtZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVI
b3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJh
bWVVbmRlcikgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIs
IGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIxMiw3ICsyMTMsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlz
U3RhdGlzdGljc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tLCBXS1N0cmluZ1Jl
ZiBob3N0UmVkaXJlY3RlZFRvLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0
YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGlu
Z1RvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmco
KSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8p
IHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5pc1JlZ2lzdGVyZWRBc1JlZGly
ZWN0aW5nVG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5z
dHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbykgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8sIGNv
bnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIyMyw3ICsyMjQsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNv
bXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgYXV0byYgZGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIGRhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZhbHVlKQogICAgICAgICBkYXRhU3RvcmUubG9nVXNl
ckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CkBAIC0yNDEsNyArMjQyLDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSAogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlSXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uRnVuY3Rpb24gY2FsbGJh
Y2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaGFzSGFkVXNlckludGVy
YWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbikgeworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBo
YXNIYWRVc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSGFkVXNlckludGVy
YWN0aW9uLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yNTIsMTQgKzI1MywxNCBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hhc0hhCiB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0R3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIHZhbHVlLCBbXSB7IH0pOworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldEdyYW5kZmF0aGVyZWQoVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCB2YWx1ZSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZEZ1bmN0aW9uIGNh
bGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhhc0hhZFVzZXJJ
bnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc0dyYW5kZmF0aGVyZWQpIHsKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNH
cmFuZGZhdGhlcmVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzR3JhbmRmYXRoZXJlZCwgY29udGV4
dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMjcwLDQ5ICsyNzEsNDkgQEAgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NHcmFuZAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCkK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9
KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9
KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0KQogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbXSB7IH0pOwor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbXSB7IH0p
OwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKQogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW10geyB9KTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtdIHsg
fSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKQog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSks
IFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0U3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3Ry
aW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0
cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0
ZWRUbykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkp
LCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSks
IFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
KSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkp
LCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJv
bSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0RnJvbShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkp
LCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJp
bmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBmcm9tSG9zdCwgV0tTdHJpbmdSZWYgdG9I
b3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NT
aXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRp
b25Gb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoZnJvbUhvc3QpLT5zdHJpbmco
KSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9Ib3N0KS0+c3RyaW5nKCkpLCBbY29udGV4
dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRDcm9z
c1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGZyb21Ib3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRv
SG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNr
KGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTMyMyw3ICszMjQsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDcm9zCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNh
bGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFRpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNr
XSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0VGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbihTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAg
ICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMzM0LDcgKzMzNSw3
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWUKIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNGdW5jdGlv
biBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVs
ZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoW2NvbnRleHQsIGNhbGxiYWNrXSB7
CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1bGVTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHNQcm9jZXNzaW5nKFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxs
YmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0zNDUsNyArMzQ2LDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vzcwogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Vw
ZGF0ZUNvb2tpZUJsb2NraW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShb
Y29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdKCkgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbnRleHQsIGNvbXBsZXRp
b25IYW5kbGVyXSgpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAg
fSk7CiAjZWxzZQpAQCAtMzU2LDIxICszNTcsMjEgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzVXBkYXRlQwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzU3VibWl0
VGVsZW1ldHJ5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc3VibWl0VGVsZW1ldHJ5KCk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c3VibWl0VGVsZW1ldHJ5KCk7CiAjZW5kaWYKIH0KIAog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJl
Y29yZHNXZXJlU2Nhbm5lZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29s
IHZhbHVlKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUsIFtdIHsgfSk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZCh2YWx1ZSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Rlc3QodmFsdWUsIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KHZhbHVl
LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAg
fSk7CiAjZWxzZQpAQCAtMzgxLDQ5ICszODIsNDkgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzSXNSdQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hv
dWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNv
cmRzUmVtb3ZhbCh2YWx1ZSwgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFs
KHZhbHVlLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZCh2YWx1ZSwgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNl
dE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKHZhbHVlLCBbXSgpIHsgfSk7CiAj
ZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTWluaW11bVRp
bWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIGRvdWJsZSBzZWNvbmRzKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHsgc2Vj
b25kcyB9LCBbXSgpIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0
TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMgeyBzZWNvbmRzIH0s
IFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgZG91YmxlIHNlY29uZHMpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtdKCkgeyB9KTsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vj
b25kcyB7IHNlY29uZHMgfSwgW10oKSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc01heFN0YXRpc3RpY3NFbnRyaWVzKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVkIGVudHJpZXMpCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TWF4U3RhdGlzdGljc0VudHJpZXMoZW50cmllcywgW10o
KSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE1heFN0YXRpc3Rp
Y3NFbnRyaWVzKGVudHJpZXMsIFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcnVuZUVudHJpZXNEb3duVG8oV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgdW5zaWduZWQgZW50cmllcykKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQcnVuZUVudHJpZXNEb3duVG8oZW50cmllcywgW10oKSB7
IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFBydW5lRW50cmllc0Rv
d25UbyhlbnRyaWVzLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZUZ1bmN0aW9uIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6
OlllcywgW2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdlYktpdDo6U2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAg
ICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTQzNCw3ICs0MzUsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZp
ZWRTaW5jZUhvdXJzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVk
IGhvdXJzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vyc0Z1bmN0aW9uIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWU6Om5vdygpIC0gU2Vjb25kczo6ZnJvbUhvdXJz
KGhvdXJzKSwgV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6OlllcywgW2NvbnRl
eHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lOjpub3coKSAtIFNlY29uZHM6
OmZyb21Ib3Vycyhob3VycyksIFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZ
ZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwog
ICAgIH0pOwogI2Vsc2UKQEAgLTQ0NSw3ICs0NDYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NDbGVhckluCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVh
clRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhy
b3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNl
dDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGlt
ZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhj
b250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTQ1Myw3ICs0NTQsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NDbGVhclRoCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NEZWxldGVDb29raWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVz
dGluZ0Z1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgW2NvbnRleHQsIGNhbGxiYWNr
XSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZGVsZXRlQ29va2llc0ZvclRl
c3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBpbmNsdWRl
SHR0cE9ubHlDb29raWVzLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2so
Y29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNDY0LDcgKzQ2NSw3IEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUMKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc0hhc0xvY2FsU3RvcmFnZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0
aXN0aWNzSGFzTG9jYWxTdG9yYWdlRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuaGFzTG9jYWxTdG9yYWdlRm9yVGVzdGluZyhVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9v
bCBoYXNMb2NhbFN0b3JhZ2UpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5o
YXNMb2NhbFN0b3JhZ2VGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhhc0xvY2FsU3RvcmFnZSkgewog
ICAgICAgICBjYWxsYmFjayhoYXNMb2NhbFN0b3JhZ2UsIGNvbnRleHQpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTQ3NSw3ICs0NzYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NI
YXNMb2NhCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNh
cChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcywgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2Fw
RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29uZHMg
fSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29u
ZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwog
ICAgIH0pOwogI2Vsc2UKQEAgLTQ4Niw3ICs0ODcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NDYWNoCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJ
c29sYXRlZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJp
bmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hh
c0lzb2xhdGVkU2Vzc2lvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLmhhc0lzb2xhdGVkU2Vzc2lvbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wg
aGFzSXNvbGF0ZWRTZXNzaW9uKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
aGFzSXNvbGF0ZWRTZXNzaW9uRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNJc29sYXRlZFNlc3Np
b24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSXNvbGF0ZWRTZXNzaW9uLCBjb250ZXh0KTsKICAg
ICB9KTsKICNlbHNlCkBAIC01MDEsNyArNTAyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzUmVzZXRUbwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAg
ICB9KTsKIAotICAgIGF1dG8mIHN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHN0b3JlID0gKldlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZik7CiAgICAgc3RvcmUuY2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzSW5XZWJQ
cm9jZXNzZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVm
KCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0g
eyB9KTsKICAgICBzdG9yZS5yZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9y
VGVzdGluZyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0geyB9KTsKQEAgLTUxNiw3ICs1MTcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NSZXNldFRvCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spCiB7
CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJL
aXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRp
bWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5
KCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAg
ICB9KTsKIH0KQEAgLTUyOCw3ICs1MjksNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92
ZUZldGNoQ2FjaGVGCiAgICAgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFS
ZWNvcmRzID0geyBXVEZNb3ZlKGRhdGFSZWNvcmQpIH07CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpE
T01DYWNoZTsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIGRhdGFSZWNvcmRzLCBbY29udGV4dCwgY2FsbGJh
Y2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFU
eXBlcywgZGF0YVJlY29yZHMsIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFj
ayhjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTUzNiw3ICs1MzcsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92
ZUFsbEluZGV4ZWREYXRhYmFzZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
dm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNl
c0NhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlczsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQs
IGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0
YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7
CiAgICAgaWYgKGNhbGxiYWNrKQogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsK
QEAgLTU0NSw3ICs1NDYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4
ZWRECiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVSZW1vdmVMb2NhbFN0b3JhZ2VDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8
V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFU
eXBlOjpMb2NhbFN0b3JhZ2U7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5
KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0
LCBjYWxsYmFja10gewogICAgICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgICAgICBjYWxsYmFj
ayhjb250ZXh0KTsKICAgICB9KTsKQEAgLTU1NSw3ICs1NTYsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zOwotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRh
dGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdh
bGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJh
Y2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTY2LDcgKzU2Nyw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVcKIAogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVHZXRGZXRjaENhY2hlT3JpZ2lucyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlT3JpZ2luc0Z1
bmN0aW9uIGNhbGxiYWNrKQogewotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNh
Y2hlLCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0YVJlY29yZHMpIHsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6OkRPTUNhY2hlLCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0YVJlY29y
ZHMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2lu
czsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsK
ICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5z
KQpAQCAtNTgwLDcgKzU4MSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNo
ZVNpemUKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBm
ZXRjaE9wdGlvbnMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXpl
czsKIAotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KS5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBmZXRjaE9wdGlv
bnMsIFtvcmlnaW4sIGNvbnRleHQsIGNhbGxiYWNrXSAoYXV0byBkYXRhUmVjb3JkcykgeworICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmZldGNoRGF0YShXZWJLaXQ6OldlYnNpdGVE
YXRhVHlwZTo6RE9NQ2FjaGUsIGZldGNoT3B0aW9ucywgW29yaWdpbiwgY29udGV4dCwgY2FsbGJh
Y2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CiAgICAgICAgIGF1dG8gb3JpZ2luRGF0YSA9IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFdlYktpdDo6dG9JbXBsKG9yaWdp
biktPnN0cmluZygpKS0+ZGF0YSgpOwogICAgICAgICBmb3IgKGF1dG8mIGRhdGFSZWNvcmQgOiBk
YXRhUmVjb3JkcykgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWNvcmRPcmlnaW4g
OiBkYXRhUmVjb3JkLm9yaWdpbnMpIHsKQEAgLTU5NywyMyArNTk4LDIzIEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemUKIAogV0tTdHJpbmdSZWYgV0tXZWJzaXRlRGF0
YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQ
SShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0Nv
cGllZEFQSShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSkK
IHsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShXZWJLaXQ6OnRvSW1wbChzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KS0+c3RyaW5nKCkpOworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkoV2ViS2l0Ojp0b0ltcGwoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSktPnN0
cmluZygpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmlnaW5TdG9yYWdl
UXVvdGEoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdWludDY0X3QgcXVvdGEp
CiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnNldFBlck9yaWdpblN0b3JhZ2VRdW90YShxdW90YSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+c2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKHF1b3RhKTsKIH0KIAogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsbERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbnMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKICNpZiBFTkFCTEUoREVWSUNFX09S
SUVOVEFUSU9OKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRh
U3RvcmUoKS5kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIoKS5jbGVh
clBlcm1pc3Npb25zKCk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZGV2aWNl
T3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKCkuY2xlYXJQZXJtaXNzaW9ucygp
OwogI2VuZGlmCiB9CiAKQEAgLTcxMywxNCArNzE0LDE0IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0V2ViQXV0aGVudGljYXQKICAgICAgICAgY29uZmlndXJhdGlvbi5uZmMgPSBXVEZNb3Zl
KG5mYyk7CiAgICAgfQogCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV1RGTW92
ZShjb25maWd1cmF0aW9uKSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJp
YnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBZENsaWNr
QXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQog
ewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2Vi
S2l0OjpXZWJzaXRlRGF0YVR5cGU6OkFkQ2xpY2tBdHRyaWJ1dGlvbnM7Ci0gICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5
cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHJldmlzaW9uIDI0
OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiV0tXZWJz
aXRlUG9saWNpZXMuaCIKIAogI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJB
UElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgogI2luY2x1ZGUgIldL
RGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV2Vic2l0
ZURhdGFTdG9yZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRl
RGF0YVN0b3JlQ29jb2EubW0JKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKG5vbmV4aXN0ZW50
KQpAQCAtMSwxOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0KLSNpbmNsdWRlICJTYW5kYm94
RXh0ZW5zaW9uLmgiCi0jaW5jbHVkZSAiU2FuZGJveFV0aWxpdGllcy5oIgotI2luY2x1ZGUgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0KLSNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRp
b25DaGVja3MuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgQVBJIHsKLQotTlNTdHJpbmcgKldlYkRh
dGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYkRhdGFiYXNlRGlyZWN0b3J5IjsKLU5T
U3RyaW5nICpXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdExvY2FsU3Rv
cmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VLZXkiOwotTlNTdHJpbmcgKldlYktpdE1lZGlhQ2Fj
aGVEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVkaWFDYWNoZURpcmVjdG9yeSI7Ci1O
U1N0cmluZyAqV2ViS2l0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJX
ZWJLaXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5IjsKLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQotewotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgLy8gVGhpcyBxdWlyayB1c2VkIHRvIG1ha2UgdGhlc2UgYXBw
cyBzaGFyZSBhcHBsaWNhdGlvbiBjYWNoZSBzdG9yYWdlLCBidXQgZG9lc24ndCBhY2NvbXBsaXNo
IHRoYXQgYW55IG1vcmUuCi0gICAgLy8gUHJlc2VydmluZyBpdCBhdm9pZHMgdGhlIG5lZWQgdG8g
bWlncmF0ZSBkYXRhIHdoZW4gdXBncmFkaW5nLgotICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlIHNo
b3VsZCBqdXN0IGhhdmUgU2FmYXJpLCBXZWJBcHAsIGFuZCB3ZWJib29rbWFya3NkIGNyZWF0ZSBh
IGRhdGEgc3RvcmUgd2l0aAotICAgIC8vIHRoaXMgYXBwbGljYXRpb24gY2FjaGUgcGF0aCwgYnV0
IHRoYXQncyBub3Qgc3VwcG9ydGVkIGFzIG9mIHJpZ2h0IG5vdy4KLSAgICBpZiAoV2ViQ29yZTo6
SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCkgfHwgV2ViQ29yZTo6SU9TQXBwbGljYXRp
b246OmlzV2ViQXBwKCkgfHwgV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViQm9va21hcmtz
RCgpKSB7Ci0gICAgICAgIE5TU3RyaW5nICpjYWNoZVBhdGggPSBbTlNIb21lRGlyZWN0b3J5KCkg
c3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiTGlicmFyeS9DYWNoZXMvY29tLmFwcGxl
LldlYkFwcENhY2hlIl07Ci0KLSAgICAgICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZp
bmdTeW1saW5rc0luUGF0aChjYWNoZVBhdGguc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aCk7Ci0g
ICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oIk9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlIik7Ci19Ci0KLVdURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAg
IHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiQ2FjaGVTdG9y
YWdlIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbigiTmV0d29ya0NhY2hlIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gdGVt
cERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTWVkaWFDYWNoZSIpOwotfQotCi1X
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbigiSW5kZXhlZERCIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKLXsKLSAgICBy
ZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlNlcnZpY2VXb3Jr
ZXJzIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbigiTG9jYWxTdG9yYWdlIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAg
ICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1l
ZGlhS2V5cyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiV2ViU1FMIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkK
LXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKLXsKLSAg
ICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSmF2YVNjcmlw
dENvcmVEZWJ1ZyIsIERvbnRDcmVhdGVEaXJlY3RvcnkpOwotfQotCi1XVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnkgc2hvdWxk
Q3JlYXRlRGlyZWN0b3J5KQotewotICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2Vu
OwotICAgIHN0YXRpYyBOU1VSTCAqdGVtcFVSTDsKLSAgICAKLSAgICBkaXNwYXRjaF9vbmNlKCZv
bmNlVG9rZW4sIF57Ci0gICAgICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
Ok5TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKLSAgICAgICAgaWYgKCF1
cmwpCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAK
LSAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250YWluZXIoKSkgewotICAgICAgICAg
ICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVu
ZGxlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKLSAgICAg
ICAgICAgICAgICBidW5kbGVJZGVudGlmaWVyID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9d
LnByb2Nlc3NOYW1lOwotICAgICAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBpc0RpcmVjdG9yeTpZRVNdOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICB0ZW1wVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07Ci0gICAgfSk7Ci0gICAgCi0g
ICAgTlNVUkwgKnVybCA9IFt0ZW1wVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJl
Y3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107Ci0KLSAgICBpZiAoc2hvdWxkQ3JlYXRlRGlyZWN0
b3J5ID09IENyZWF0ZURpcmVjdG9yeQotICAgICAgICAmJiAoIVtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJl
Y3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pKQotICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKLSAgICAKLSAgICBy
ZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICBz
dGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKmNhY2hl
VVJMOwotCi0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBOU1VSTCAq
dXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlND
YWNoZXNEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0ZUZvclVS
TDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKLSAgICAgICAgaWYgKCF1cmwpCi0g
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgICAgIGlmICgh
V2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpi
dW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7
Ci0gICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVu
ZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsK
LSAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRs
ZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhY2hl
VVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVj
dG9yeTpZRVNdIHJldGFpbl07Ci0gICAgfSk7Ci0KLSAgICBOU1VSTCAqdXJsID0gW2NhY2hlVVJM
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllF
U107Ci0gICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVj
dG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6
bmlsIGVycm9yOm51bGxwdHJdKQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUg
ZGlyZWN0b3J5ICVAIiwgdXJsKTsKLQotICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5m
aWxlU3lzdGVtUmVwcmVzZW50YXRpb247Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdU
Rjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQotewotICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qg
b25jZVRva2VuOwotICAgIHN0YXRpYyBOU1VSTCAqd2Vic2l0ZURhdGFVUkw7Ci0KLSAgICBkaXNw
YXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIE5TVVJMICp1cmwgPSBbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9yeTpOU0xpYnJhcnlEaXJlY3Rvcnkg
aW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0
ZTpOTyBlcnJvcjpudWxscHRyXTsKLSAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdOwotCi0gICAgICAg
IGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKLSAgICAgICAgICAgIE5TU3Ry
aW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50
aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgICAgICAg
ICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNz
TmFtZTsKLSAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKLSAgICAgICAgfQotCi0gICAgICAg
IHdlYnNpdGVEYXRhVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2Vi
c2l0ZURhdGEiIGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsKLSAgICB9KTsKLQotICAgIE5TVVJM
ICp1cmwgPSBbd2Vic2l0ZURhdGFVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVj
dG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKLSAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJl
Y3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCi0gICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwotCi0gICAgcmV0dXJu
IHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHJldmlzaW9uIDI0OTczMikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0J
KHdvcmtpbmcgY29weSkKQEAgLTEwNSwxNyArMTA1LDE3IEBAIHByaXZhdGU6CiAKICsgKFdLV2Vi
c2l0ZURhdGFTdG9yZSAqKWRlZmF1bHREYXRhU3RvcmUKIHsKLSAgICByZXR1cm4gd3JhcHBlcihB
UEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKSk7CisgICAgcmV0dXJuIHdy
YXBwZXIoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkpOwogfQog
CiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilub25QZXJzaXN0ZW50RGF0YVN0b3JlCiB7Ci0gICAg
cmV0dXJuIHdyYXBwZXIoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50
RGF0YVN0b3JlKCkpOworICAgIHJldHVybiB3cmFwcGVyKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6Y3JlYXRlTm9uUGVyc2lzdGVudCgpKTsKIH0KIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAg
X3dlYnNpdGVEYXRhU3RvcmUtPkFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3Rv
cmUoKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp+
V2Vic2l0ZURhdGFTdG9yZSgpOwogCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtMTY5LDcg
KzE2OSw3IEBAICsgKE5TU2V0ICopYWxsV2Vic2l0ZURhdGFUeXBlcwogCiAtIChXS0hUVFBDb29r
aWVTdG9yZSAqKWh0dHBDb29raWVTdG9yZQogewotICAgIHJldHVybiB3cmFwcGVyKF93ZWJzaXRl
RGF0YVN0b3JlLT5odHRwQ29va2llU3RvcmUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXIoX3dlYnNp
dGVEYXRhU3RvcmUtPmNvb2tpZVN0b3JlKCkpOwogfQogCiBzdGF0aWMgV2FsbFRpbWUgdG9TeXN0
ZW1DbG9ja1RpbWUoTlNEYXRlICpkYXRlKQpAQCAtMTg2LDcgKzE4Niw3IEBAIC0gKHZvaWQpZmV0
Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0ICoKIC0gKHZvaWQpcmVtb3ZlRGF0YU9mVHlwZXM6
KE5TU2V0ICopZGF0YVR5cGVzIG1vZGlmaWVkU2luY2U6KE5TRGF0ZSAqKWRhdGUgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgYXV0byBj
b21wbGV0aW9uSGFuZGxlckNvcHkgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpOwot
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShXZWJL
aXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCB0b1N5c3RlbUNsb2NrVGltZShkYXRl
ID8gZGF0ZSA6IFtOU0RhdGUgZGlzdGFudFBhc3RdKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0g
eworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5yZW1vdmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0
YVR5cGVzKGRhdGFUeXBlcyksIHRvU3lzdGVtQ2xvY2tUaW1lKGRhdGUgPyBkYXRlIDogW05TRGF0
ZSBkaXN0YW50UGFzdF0pLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5XSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyQ29weSgpOwogICAgIH0pOwogfQpAQCAtMjA1LDcgKzIwNSw3IEBAIC0gKHZv
aWQpcmVtb3ZlRGF0YU9mVHlwZXM6KE5TU2V0ICopZGF0YVQKIHsKICAgICBhdXRvIGNvbXBsZXRp
b25IYW5kbGVyQ29weSA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcik7CiAKLSAgICBf
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoV2ViS2l0Ojp0
b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwgdG9XZWJzaXRlRGF0YVJlY29yZHMoZGF0YVJl
Y29yZHMpLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5XSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUt
PnJlbW92ZURhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwgdG9XZWJz
aXRlRGF0YVJlY29yZHMoZGF0YVJlY29yZHMpLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5XSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weSgpOwogICAgIH0pOwogfQpAQCAtMjQwLDEyICsy
NDAsMTIgQEAgKyAoTlNTZXQ8TlNTdHJpbmcgKj4gKilfYWxsV2Vic2l0ZURhdGFUeQogCiArIChC
T09MKV9kZWZhdWx0RGF0YVN0b3JlRXhpc3RzCiB7Ci0gICAgcmV0dXJuIEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpOworICAgIHJldHVybiBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKIH0KIAogKyAodm9pZClf
ZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcKIHsKLSAgICByZXR1cm4gQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOworICAgIHJl
dHVybiBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JU
ZXN0aW5nKCk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhDb25maWd1cmF0aW9uOihf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KQEAgLTI1Myw3
ICsyNTMsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooCiAgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBh
dXRvIGNvbmZpZyA9IGNvbmZpZ3VyYXRpb24uaXNQZXJzaXN0ZW50ID8gQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpIDogV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgYXV0byBjb25maWcgPSBjb25m
aWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKSA6IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb246OmNyZWF0ZSgpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoY29uZmlnLT5pc1BlcnNp
c3RlbnQoKSA9PSBjb25maWd1cmF0aW9uLmlzUGVyc2lzdGVudCk7CiAKQEAgLTMxMiw3ICszMTIs
NyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooCiAKICAgICBhdXRv
IHNlc3Npb25JRCA9IGNvbmZpZ3VyYXRpb24uaXNQZXJzaXN0ZW50ID8gUEFMOjpTZXNzaW9uSUQ6
OmdlbmVyYXRlUGVyc2lzdGVudFNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRl
RXBoZW1lcmFsU2Vzc2lvbklEKCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFw
cGVyPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4oc2VsZiwgV1RGTW92ZShjb25maWcpLCBzZXNzaW9u
SUQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8V2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlPihzZWxmLCBXVEZNb3ZlKGNvbmZpZyksIHNlc3Npb25JRCk7CiAKICAgICByZXR1
cm4gc2VsZjsKIH0KQEAgLTMyNSw3ICszMjUsNyBAQCAtICh2b2lkKV9mZXRjaERhdGFSZWNvcmRz
T2ZUeXBlczooTlNTZXQ8CiAgICAgaWYgKG9wdGlvbnMgJiBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0
Y2hPcHRpb25Db21wdXRlU2l6ZXMpCiAgICAgICAgIGZldGNoT3B0aW9ucy5hZGQoV2ViS2l0OjpX
ZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpOwogCi0gICAgX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRh
VHlwZXMoZGF0YVR5cGVzKSwgZmV0Y2hPcHRpb25zLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5ID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlckNvcHkpXShhdXRvIHdlYnNpdGVEYXRhUmVjb3Jkcykg
eworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5mZXRjaERhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRh
VHlwZXMoZGF0YVR5cGVzKSwgZmV0Y2hPcHRpb25zLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5ID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlckNvcHkpXShhdXRvIHdlYnNpdGVEYXRhUmVjb3Jkcykg
ewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gZWxlbWVudHM7CiAgICAgICAg
IGVsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkod2Vic2l0ZURhdGFSZWNvcmRzLnNpemUo
KSk7CiAKQEAgLTMzOCwxOCArMzM4LDE4IEBAIC0gKHZvaWQpX2ZldGNoRGF0YVJlY29yZHNPZlR5
cGVzOihOU1NldDwKIAogLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQKIHsK
LSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKIH0KIAogLSAodm9pZClfc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewotICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQoZW5hYmxlZCk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGVuYWJsZWQpOwogfQogCiAtIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGVidWdNb2RlCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAg
ICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGVidWdNb2RlKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKCk7CiAjZWxzZQogICAgIHJldHVybiBOTzsK
ICNlbmRpZgpAQCAtMzU4LDcgKzM1OCw3IEBAIC0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEZWJ1Z01vZGUKIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6
KEJPT0wpZW5hYmxlZAogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0g
ICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGVidWdNb2RlKGVuYWJsZWQpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGVuYWJsZWQpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKQEAgLTM2NiwxMDYgKzM2NiwxMDYgQEAgLSAodm9p
ZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTQogCiAtIChOU1VJbnRlZ2VyKV9wZXJP
cmlnaW5TdG9yYWdlUXVvdGEKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKS5wZXJPcmlnaW5TdG9yYWdlUXVvdGEoKTsKKyAgICByZXR1cm4gX3dlYnNp
dGVEYXRhU3RvcmUtPnBlck9yaWdpblN0b3JhZ2VRdW90YSgpOwogfQogCiAtICh2b2lkKV9zZXRQ
ZXJPcmlnaW5TdG9yYWdlUXVvdGE6KE5TVUludGVnZXIpc2l6ZQogewotICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKHNpemUp
OworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEoc2l6ZSk7
CiB9CiAKIC0gKE5TU3RyaW5nICopX2NhY2hlU3RvcmFnZURpcmVjdG9yeQogewotICAgIHJldHVy
biBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmNhY2hlU3RvcmFnZURpcmVj
dG9yeSgpOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+Y2FjaGVTdG9yYWdlRGlyZWN0
b3J5KCk7CiB9CiAKIC0gKHZvaWQpX3NldENhY2hlU3RvcmFnZURpcmVjdG9yeTooTlNTdHJpbmcg
KilkaXJlY3RvcnkKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShkaXJlY3RvcnkpOworICAgIF93ZWJzaXRlRGF0YVN0
b3JlLT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoZGlyZWN0b3J5KTsKIH0KIAogLSAoTlNTdHJp
bmcgKilfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeQogewotICAgIHJldHVybiBf
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKIH0KIAogLSAodm9pZClfc2V0U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTooTlNTdHJpbmcgKilkaXJlY3RvcnkKIHsKLSAgICBf
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShkaXJlY3RvcnkpOwogfQogCiAtICh2
b2lkKV9zZXRCb3VuZEludGVyZmFjZUlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcgog
ewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0Qm91bmRJbnRl
cmZhY2VJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRC
b3VuZEludGVyZmFjZUlkZW50aWZpZXIoaWRlbnRpZmllcik7CiB9CiAKIC0gKE5TU3RyaW5nICop
X2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcgogewotICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcigpOworICAgIHJl
dHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+Ym91bmRJbnRlcmZhY2VJZGVudGlmaWVyKCk7CiB9CiAK
IC0gKHZvaWQpX3NldEFsbG93c0NlbGx1bGFyQWNjZXNzOihCT09MKWFsbG93cwogewotICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0QWxsb3dzQ2VsbHVsYXJBY2Nl
c3MoYWxsb3dzID8gV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzIDogV2ViS2l0OjpB
bGxvd3NDZWxsdWxhckFjY2Vzczo6Tm8pOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRBbGxv
d3NDZWxsdWxhckFjY2VzcyhhbGxvd3MgPyBXZWJLaXQ6OkFsbG93c0NlbGx1bGFyQWNjZXNzOjpZ
ZXMgOiBXZWJLaXQ6OkFsbG93c0NlbGx1bGFyQWNjZXNzOjpObyk7CiB9CiAKIC0gKEJPT0wpX2Fs
bG93c0NlbGx1bGFyQWNjZXNzCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJz
aXRlRGF0YVN0b3JlKCkuYWxsb3dzQ2VsbHVsYXJBY2Nlc3MoKSA9PSBXZWJLaXQ6OkFsbG93c0Nl
bGx1bGFyQWNjZXNzOjpZZXM7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5hbGxvd3ND
ZWxsdWxhckFjY2VzcygpID09IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6OlllczsKIH0K
IAogLSAodm9pZClfc2V0UHJveHlDb25maWd1cmF0aW9uOihOU0RpY3Rpb25hcnkgKiljb25maWd1
cmF0aW9uCiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQ
cm94eUNvbmZpZ3VyYXRpb24oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZiljb25maWd1cmF0aW9u
KTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UHJveHlDb25maWd1cmF0aW9uKChfX2JyaWRn
ZSBDRkRpY3Rpb25hcnlSZWYpY29uZmlndXJhdGlvbik7CiB9CiAKIC0gKE5TU3RyaW5nICopX3Nv
dXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcgogewotICAgIHJldHVybiBfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
ZmllcigpOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyKCk7CiB9CiAKIC0gKHZvaWQpX3NldFNvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyCiB7Ci0gICAgaWYgKCFfd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICBpZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRT
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoaWRlbnRpZmllcikpCiAgICAgICAgIFtO
U0V4Y2VwdGlvbiByYWlzZTpOU0dlbmVyaWNFeGNlcHRpb24gZm9ybWF0OkAiX3NldFNvdXJjZUFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciBjYW5ub3QgYmUgY2FsbGVkIGFmdGVyIG5ldHdvcmtp
bmcgaGFzIGJlZ3VuIl07CiB9CiAKIC0gKE5TU3RyaW5nICopX3NvdXJjZUFwcGxpY2F0aW9uU2Vj
b25kYXJ5SWRlbnRpZmllcgogewotICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpOworICAg
IHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyKCk7CiB9CiAKIC0gKHZvaWQpX3NldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRl
bnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyCiB7Ci0gICAgaWYgKCFfd2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRl
bnRpZmllcihpZGVudGlmaWVyKSkKKyAgICBpZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRTb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRpZmllcikpCiAgICAgICAgIFtO
U0V4Y2VwdGlvbiByYWlzZTpOU0dlbmVyaWNFeGNlcHRpb24gZm9ybWF0OkAiX3NldFNvdXJjZUFw
cGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciBjYW5ub3QgYmUgY2FsbGVkIGFmdGVyIG5ldHdv
cmtpbmcgaGFzIGJlZ3VuIl07CiB9CiAKIC0gKHZvaWQpX3NldEFsbG93c1RMU0ZhbGxiYWNrOihC
T09MKWFsbG93cwogewotICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3Rv
cmUoKS5zZXRBbGxvd3NUTFNGYWxsYmFjayhhbGxvd3MpKQorICAgIGlmICghX3dlYnNpdGVEYXRh
U3RvcmUtPnNldEFsbG93c1RMU0ZhbGxiYWNrKGFsbG93cykpCiAgICAgICAgIFtOU0V4Y2VwdGlv
biByYWlzZTpOU0dlbmVyaWNFeGNlcHRpb24gZm9ybWF0OkAiX3NldEFsbG93c1RMU0ZhbGxiYWNr
IGNhbm5vdCBiZSBjYWxsZWQgYWZ0ZXIgbmV0d29ya2luZyBoYXMgYmVndW4iXTsKIH0KIAogLSAo
Qk9PTClfYWxsb3dzVExTRmFsbGJhY2sKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUt
PndlYnNpdGVEYXRhU3RvcmUoKS5hbGxvd3NUTFNGYWxsYmFjaygpOworICAgIHJldHVybiBfd2Vi
c2l0ZURhdGFTdG9yZS0+YWxsb3dzVExTRmFsbGJhY2soKTsKIH0KIAogLSAoTlNEaWN0aW9uYXJ5
ICopX3Byb3h5Q29uZmlndXJhdGlvbgogewotICAgIHJldHVybiAoX19icmlkZ2UgTlNEaWN0aW9u
YXJ5ICopX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wcm94eUNvbmZpZ3Vy
YXRpb24oKTsKKyAgICByZXR1cm4gKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKV93ZWJzaXRlRGF0
YVN0b3JlLT5wcm94eUNvbmZpZ3VyYXRpb24oKTsKIH0KIAogLSAoTlNVUkwgKilfaW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpf
d2Vic2l0ZURhdGFTdG9yZS0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9y
eTpZRVNdOworICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl93ZWJzaXRlRGF0YVN0
b3JlLT5jb25maWd1cmF0aW9uKCkuaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSBpc0RpcmVj
dG9yeTpZRVNdOwogfQogCiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxk
U3VibWl0VGVsZW1ldHJ5OihCT09MKXZhbHVlCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGF1dG8qIHN0b3JlID0g
X3dlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKICAgICBpZiAoIXN0
b3JlKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ4MCwxMyArNDgwLDEzIEBAIC0gKHZvaWQpX3Nl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0aW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KGNhbGxiYWNrKSB7Ci0gICAgICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuc2V0U3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhbY2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIo
Y2FsbGJhY2spLCBzZWxmXShjb25zdCBTdHJpbmcmIGV2ZW50KSB7CisgICAgICAgIF93ZWJzaXRl
RGF0YVN0b3JlLT5zZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKFtjYWxsYmFjayA9IG1ha2VC
bG9ja1B0cihjYWxsYmFjayksIHNlbGZdKGNvbnN0IFN0cmluZyYgZXZlbnQpIHsKICAgICAgICAg
ICAgIGNhbGxiYWNrKHNlbGYsIGV2ZW50KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN0
YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2sobnVsbHB0cik7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUt
PnNldFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2sobnVsbHB0cik7CiAjZW5kaWYKIH0KIApAQCAt
NTA5LDcgKzUwOSw3IEBAIC0gKHZvaWQpX2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOigK
ICAgICB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXMod2ViUGFnZVByb3h5LT5pZGVudGlmaWVyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZG9tYWlucykgeworICAgIF93ZWJzaXRl
RGF0YVN0b3JlLT5nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh3ZWJQYWdlUHJveHktPmlkZW50
aWZpZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0oYXV0byBkb21haW5zKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+
PiBhcGlEb21haW5zOwogICAgICAgICBhcGlEb21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
ZG9tYWlucy5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCkBA
IC01MjQsNyArNTI0LDcgQEAgLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6
KAogLSAodm9pZClfc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZToodm9pZCAoXikodm9pZCkp
Y29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDb29r
aWVCbG9ja2luZ1VwZGF0ZShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2NoZWR1bGVDb29raWVC
bG9ja2luZ1VwZGF0ZShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXSgpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKICNl
bHNlCkBAIC01MzUsNyArNTM1LDcgQEAgLSAodm9pZClfc2NoZWR1bGVDb29raWVCbG9ja2luZ1Vw
ZGF0ZToodgogLSAodm9pZClfc2V0UHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgeworICAg
IF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2Nv
bXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTQ2LDcgKzU0
Niw3IEBAIC0gKHZvaWQpX3NldFByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb20KIC0gKHZvaWQp
X2dldElzUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuaXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBlbmFibGVkKSB7CisgICAgX3dl
YnNpdGVEYXRhU3RvcmUtPmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0
aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZW5hYmxl
ZCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbmFibGVkKTsKICAgICB9KTsKICNlbHNl
CkBAIC01NTcsNyArNTU3LDcgQEAgLSAodm9pZClfZ2V0SXNQcmV2YWxlbnREb21haW46KE5TVVJM
ICopZAogLSAodm9pZClfY2xlYXJQcmV2YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5jbGVhclByZXZhbGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKKyAg
ICBfd2Vic2l0ZURhdGFTdG9yZS0+Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTY4LDcg
KzU2OCw3IEBAIC0gKHZvaWQpX2NsZWFyUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWQKIC0gKHZv
aWQpX3Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHM6KHZvaWQgKF4pKHZvaWQpKWNvbXBs
ZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAg
ICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlU3RhdGlzdGlj
c0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2NoZWR1
bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogICAgIH0pOwogI2Vsc2UKQEAgLTU3OCwxOCArNTc4LDE4IEBAIC0gKHZvaWQp
X3Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMKIAogLSAoYm9vbClfaGFzUmVnaXN0ZXJl
ZFNlcnZpY2VXb3JrZXIKIHsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhXZWJD
b3JlOjpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkoKSkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKFdlYkNvcmU6OnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhYmFzZUZpbGVuYW1lKF93ZWJzaXRlRGF0YVN0b3Jl
LT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKIH0KIAogLSAoaWQgPF9X
S1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4pX2RlbGVnYXRlCiB7Ci0gICAgcmV0dXJuIF9kZWxl
Z2F0ZS5nZXQoKTsKKyAgICByZXR1cm4gX2RlbGVnYXRlLmdldCgpLmdldCgpOwogfQogCiAtICh2
b2lkKXNldF9kZWxlZ2F0ZTooaWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4pZGVsZWdh
dGUKIHsKICAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnNldENsaWVudChtYWtlVW5pcXVlUmVmPFdlYnNpdGVEYXRhU3Rv
cmVDbGllbnQ+KGRlbGVnYXRlKSk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldENsaWVudCht
YWtlVW5pcXVlUmVmPFdlYnNpdGVEYXRhU3RvcmVDbGllbnQ+KGRlbGVnYXRlKSk7CiB9CiAKIEBl
bmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oCShyZXZpc2lvbiAyNDk3MzIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50
ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTIgKzI1LDEzIEBACiAKICNpbXBvcnQgIldL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCIKIAotI2ltcG9ydCAiQVBJV2Vic2l0ZURhdGFTdG9y
ZS5oIgogI2ltcG9ydCAiV0tPYmplY3QuaCIKKyNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIK
KyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdGVt
cGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OldlYnNpdGVEYXRhU3RvcmU+IHsKK3Rl
bXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8V2Vic2l0ZURhdGFTdG9yZT4gewogICAgIHVz
aW5nIFdyYXBwZXJDbGFzcyA9IFdLV2Vic2l0ZURhdGFTdG9yZTsKIH07CiAKQEAgLTM4LDcgKzM5
LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OldlYgogCiBAaW50ZXJm
YWNlIFdLV2Vic2l0ZURhdGFTdG9yZSAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCi0gICAgQVBJ
OjpPYmplY3RTdG9yYWdlPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4gX3dlYnNpdGVEYXRhU3RvcmU7
Ci0gICAgUmV0YWluUHRyPGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+ID4gX2RlbGVn
YXRlOworICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IF93
ZWJzaXRlRGF0YVN0b3JlOworICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tXZWJzaXRlRGF0YVN0b3Jl
RGVsZWdhdGU+ID4gX2RlbGVnYXRlOwogfQogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTA3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBJZ2FsaWEgUy5MLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5o
IgotCi0jaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5p
cXVlUHRyLmg+Ci0KLSNpZiBQTEFURk9STShHVEspCi0jZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3
ZWJraXRndGsiCi0jZWxpZiBQTEFURk9STShXUEUpCi0jZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3
cGUiCi0jZW5kaWYKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4g
Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19E
SVJfU0VQQVJBVE9SX1MgImFwcGxpY2F0aW9ucyIpOwotfQotCi0vLyBGSVhNRTogVGhlIG90aGVy
IGRpcmVjdG9yaWVzIGluIHRoaXMgZmlsZSBhcmUgc2hhcmVkIGJldHdlZW4gYWxsIGFwcGxpY2F0
aW9ucyB1c2luZyBXZWJLaXRHVEsuCi0vLyBXaHkgaXMgb25seSB0aGlzIGRpcmVjdG9yeSBuYW1l
c3BhY2VkIHRvIGEgcGFydGljdWxhciBhcHBsaWNhdGlvbj8KLVdURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBj
YWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAiV2ViS2l0Q2FjaGUiKSk7Ci19Ci0KLVdURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQotewot
ICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAiQ2FjaGVTdG9yYWdlIikpOwot
fQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGF0YWJh
c2VzIiBHX0RJUl9TRVBBUkFUT1JfUyAiaW5kZXhlZGRiIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgInNlcnZpY2V3b3JrZXJzIik7
Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAibG9jYWxzdG9y
YWdlIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1Mg
Im1lZGlha2V5cyIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmlj
ZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRh
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NF
UEFSQVRPUl9TICJkZXZpY2VpZGhhc2hzYWx0cyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIHJldHVy
biB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVD
VE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGF0YWJhc2VzIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RTRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkg
R19ESVJfU0VQQVJBVE9SX1MpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZ
IEdfRElSX1NFUEFSQVRPUl9TICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Ci19Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQotewotICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0
b3J5TmFtZSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRh
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJl
Y3RvcnlOYW1lKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dl
dF91c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
QVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRh
U3RvcmVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDY0ICsyNSwzIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0KLSNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgotCi1uYW1lc3BhY2UgQVBJIHsKLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkNhY2hlU3RvcmFnZSIpOwotfQotCi1TdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCi17Ci0g
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIpOwot
fQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5k
ZXhlZERCIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKSwgIlNlcnZpY2VXb3JrZXJzIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7Ci19Ci0KLVN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0g
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIp
OwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2Vi
U1FMIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6Ondl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYg
ZGlyZWN0b3J5TmFtZSkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCBkaXJlY3RvcnlOYW1lKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzNTgsNyArMTM1OCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNpbmdsZUNv
b2sKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMo
TWlzc2luZ1BhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ2h0dHBPbmx5JyB3YXMgbm90IGZvdW5k
LiIpOwogCiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0gbV9wcm9j
ZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29va2ll
TWFuYWdlci0+c2V0Q29va2llcyhwYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCks
IHsgY29va2llIH0sIFtjYWxsYmFjayA9IGNhbGxiYWNrLmNvcHlSZWYoKV0oQ2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikgeworICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMocGFnZS0+c2Vz
c2lvbklEKCksIHsgY29va2llIH0sIFtjYWxsYmFjayA9IGNhbGxiYWNrLmNvcHlSZWYoKV0oQ2Fs
bGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBpZiAoZXJyb3IgPT0gQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6Tm9uZSkKICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcygpOwog
ICAgICAgICBlbHNlCkBAIC0xMzc4LDcgKzEzNzgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpkZWxldGVBbGxDb29rCiAgICAgU3RyaW5nIGhvc3QgPSBhY3RpdmVVUkwuaG9zdCgpLnRv
U3RyaW5nKCk7CiAKICAgICBXZWJDb29raWVNYW5hZ2VyUHJveHkqIGNvb2tpZU1hbmFnZXIgPSBt
X3Byb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLSAgICBj
b29raWVNYW5hZ2VyLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKHBhZ2UtPndlYnNpdGVEYXRh
U3RvcmUoKS5zZXNzaW9uSUQoKSwgeyBob3N0LCBkb21haW5CeUFkZGluZ0RvdFByZWZpeElmTmVl
ZGVkKGhvc3QpIH0pOworICAgIGNvb2tpZU1hbmFnZXItPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFt
ZXMocGFnZS0+c2Vzc2lvbklEKCksIHsgaG9zdCwgZG9tYWluQnlBZGRpbmdEb3RQcmVmaXhJZk5l
ZWRlZChob3N0KSB9KTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0U2Vzc2lv
blBlcm1pc3Npb25zKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6U2Vzc2lvblBlcm1pc3Npb25EYXRhPj4mIG91dF9wZXJt
aXNzaW9ucykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0JKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMs
NiBAQAogI2ltcG9ydCAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIkFQSVN0cmlu
Zy5oIgogI2ltcG9ydCAiQVBJVVJMLmgiCi0jaW1wb3J0ICJBUElXZWJzaXRlRGF0YVN0b3JlLmgi
CiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW1wb3J0
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EuaCIKICNpbXBvcnQgIkF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgpAQCAtNjQsNiArNjMsNyBAQAogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQg
IldlYlByb3RlY3Rpb25TcGFjZS5oIgorI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2lt
cG9ydCAiX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0Vy
cm9yUmVjb3ZlcnlBdHRlbXB0aW5nLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFs
LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg3LDcgKzg3LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29ya1Byb2Nlc3NQ
cm94eQogICAgIGNvbm5lY3QoKTsKIAogICAgIGlmIChhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0g
bV9wcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAgICAgIG1fd2Vic2l0ZURhdGFT
dG9yZXMuc2V0KHdlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQo
KSwgbWFrZVJlZih3ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkpKTsKKyAgICAg
ICAgbV93ZWJzaXRlRGF0YVN0b3Jlcy5zZXQod2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCks
IG1ha2VSZWYoKndlYnNpdGVEYXRhU3RvcmUpKTsKIH0KIAogTmV0d29ya1Byb2Nlc3NQcm94eTo6
fk5ldHdvcmtQcm9jZXNzUHJveHkoKQpAQCAtMTEzNCwxNCArMTEzNCwxNCBAQCBXZWJzaXRlRGF0
YVN0b3JlKiBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp3CiAgICAgICAgIHJldHVybiBpdGVyYXRvci0+
dmFsdWUuZ2V0KCk7CiAKICAgICBpZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IG1fcHJvY2Vz
c1Bvb2wud2Vic2l0ZURhdGFTdG9yZSgpKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uSUQgPT0gd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKQotICAgICAgICAg
ICAgcmV0dXJuICZ3ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgICAg
IGlmIChzZXNzaW9uSUQgPT0gd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpCisgICAgICAg
ICAgICByZXR1cm4gd2Vic2l0ZURhdGFTdG9yZTsKICAgICB9CiAKICAgICBpZiAoc2Vzc2lvbklE
ICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuICZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRh
U3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIHJldHVybiBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6cmV0cmlldmVDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRh
U3RvcmUuaCIKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzUHJveHkuaCIKICNpZiBFTkFCTEUo
TEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5LmgiCkBAIC0zNiw2ICszNSw3IEBACiAjaW5jbHVkZSAiUHJvY2Vz
c1Rocm90dGxlckNsaWVudC5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzU2l0ZU5hdmlnYXRp
b25EYXRhVHJhbnNmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+
CiAjaW5jbHVkZSA8bWVtb3J5PgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDI0OTcz
MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNSArMjYsMTYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKKyNpbmNsdWRlICJBUElIVFRQ
Q29va2llU3RvcmUuaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIK
ICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVJlY29yZC5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVE
YXRhU3RvcmUuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUg
IkRldmljZUlkSGFzaFNhbHRTdG9yYWdlLmgiCiAjaW5jbHVkZSAiTW9ja0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NT
dGF0dXMuaCIKKyNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDYWNoZS5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NNZXNzYWdlcy5oIgpAQCAtMTM5LDYgKzE0MCw1OCBAQCBXZWJzaXRlRGF0YVN0b3JlOjpX
ZWJzaXRlRGF0YVN0b3JlKFBBTDo6CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIH0K
IAorc3RhdGljIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiYgZ2xvYmFsRGVmYXVsdERhdGFTdG9y
ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxXZWJzaXRlRGF0YVN0b3Jl
Pj4gZ2xvYmFsRGVmYXVsdERhdGFTdG9yZTsKKyAgICByZXR1cm4gZ2xvYmFsRGVmYXVsdERhdGFT
dG9yZS5nZXQoKTsKK30KKworUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREYXRhU3RvcmUoKQoreworICAgIEluaXRpYWxpemVXZWJLaXQyKCk7CisKKyAgICBh
dXRvJiBzdG9yZSA9IGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIXN0b3JlKQor
ICAgICAgICBzdG9yZSA9IGFkb3B0UmVmKG5ldyBXZWJzaXRlRGF0YVN0b3JlKGRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkp
KTsKKworICAgIHJldHVybiAqc3RvcmU7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGVs
ZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcoKQoreworICAgIGdsb2JhbERlZmF1bHREYXRh
U3RvcmUoKSA9IG51bGxwdHI7Cit9CisKK2Jvb2wgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERh
dGFTdG9yZUV4aXN0cygpCit7CisgICAgcmV0dXJuICEhZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgp
OworfQorCitSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQoreworICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsK
KworICAgIGNvbmZpZ3VyYXRpb24tPnNldFBlcnNpc3RlbnQodHJ1ZSk7CisKKyAgICBjb25maWd1
cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGRlZmF1bHRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVG
bGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkZpbGVzIik7CisgICAgY29uZmlndXJhdGlvbi0+c2V0
Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSk7Cisg
ICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFDYWNoZURpcmVj
dG9yeShkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKTsKKworICAgIGNvbmZpZ3VyYXRpb24t
PnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkp
OworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25m
aWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnko
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5KGRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CisKKyAgICBj
b25maWd1cmF0aW9uLT5zZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShkZWZhdWx0
SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSk7CisKKyAgICByZXR1cm4gY29uZmln
dXJhdGlvbjsKK30KKwogV2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC0xNzI4LDcgKzE3ODEsNyBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnJlc2V0Q2FjaGVNYXhBZ2VDCiBib29sIFdlYnNpdGVEYXRhU3Rv
cmU6OmlzQXNzb2NpYXRlZFByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkg
Y29uc3QKIHsKICAgICBpZiAoYXV0byogcHJvY2Vzc1Bvb2xEYXRhU3RvcmUgPSBwcm9jZXNzUG9v
bC53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAgICAgIHJldHVybiAmcHJvY2Vzc1Bvb2xEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKSA9PSB0aGlzOworICAgICAgICByZXR1cm4gcHJvY2Vzc1Bv
b2xEYXRhU3RvcmUgPT0gdGhpczsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE3NTQsNyAr
MTgwNyw3IEBAIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gV2Vic2l0ZUQKICAgICB9
CiAKICAgICBpZiAocHJvY2Vzc1Bvb2xzLmlzRW1wdHkoKSAmJiBjb3VudCAmJiBlbnN1cmVBUG9v
bEV4aXN0cykgewotICAgICAgICBhdXRvIHByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uKG1fY29uZmlndXJhdGlvbikpOworICAgICAgICBhdXRvIHByb2Nl
c3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjo6Y3JlYXRlKCkpOwogICAgICAgICBwcm9jZXNzUG9vbHMuYWRkKHByb2Nlc3NQb29sLnB0
cigpKTsKICAgICB9CiAKQEAgLTIwMDEsNiArMjA1NCwyOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OmFkZFNlY0tleVByb3h5U3RvCiB9CiAjZW5kaWYKIAorI2lmICFQTEFURk9STShDT0NPQSkK
K1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU2MzY5IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU2MzcwCisgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Cit9CisKK1dURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVj
dG9yeSgpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICByZXR1cm4gV1RGOjpTdHJp
bmcoKTsKK30KKyNlbmRpZgorCisjaWYgIVVTRShHTElCKQorV1RGOjpTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCit7Cisg
ICAgLy8gTm90IGltcGxlbWVudGVkLgorICAgIHJldHVybiBXVEY6OlN0cmluZygpOworfQorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNp
b24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMSArOTIsMTkgQEAgZW51bSBjbGFz
cyBTdG9yYWdlQWNjZXNzUHJvbXB0U3RhdHVzOwogc3RydWN0IFBsdWdpbk1vZHVsZUluZm87CiAj
ZW5kaWYKIAotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYnNp
dGVEYXRhU3RvcmU+LCBwdWJsaWMgSWRlbnRpZmllZDxXZWJzaXRlRGF0YVN0b3JlPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFdlYnNpdGVEYXRhU3RvcmU+ICB7CitjbGFzcyBXZWJzaXRlRGF0YVN0
b3JlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6V2Vic2l0ZURh
dGFTdG9yZT4sIHB1YmxpYyBJZGVudGlmaWVkPFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8V2Vic2l0ZURhdGFTdG9yZT4gIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PFdlYnNpdGVEYXRhU3RvcmU+IGRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBzdGF0aWMgYm9vbCBk
ZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCk7CisgICAgc3RhdGljIHZvaWQgZGVsZXRlRGVmYXVsdERh
dGFTdG9yZUZvclRlc3RpbmcoKTsKKyAgICBzdGF0aWMgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24+IGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CisKICAg
ICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnQoKTsKICAg
ICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZShSZWY8V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24+JiYsIFBBTDo6U2Vzc2lvbklEKTsKLSAgICB2aXJ0dWFsIH5XZWJzaXRl
RGF0YVN0b3JlKCk7CisKKyAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lv
bklEKTsKKyAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIH5XZWJzaXRlRGF0YVN0b3Jl
KCk7CiAKICAgICBzdGF0aWMgV2Vic2l0ZURhdGFTdG9yZSogZXhpc3RpbmdOb25EZWZhdWx0RGF0
YVN0b3JlRm9yU2Vzc2lvbklEKFBBTDo6U2Vzc2lvbklEKTsKIApAQCAtMjY1LDEwICsyNzMsMTEg
QEAgcHVibGljOgogICAgIFNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yJiBzb0F1dGhvcml6YXRp
b25Db29yZGluYXRvcigpIHsgcmV0dXJuIG1fc29BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IuZ2V0
KCk7IH0KICNlbmRpZgogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUo
UEFMOjpTZXNzaW9uSUQpOwotICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGlj
IFdURjo6U3RyaW5nIGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7
CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsK
KyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkoKTsKIAorcHJpdmF0ZToKICAgICB2b2lkIGZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFJl
ZlB0cjxXb3JrUXVldWU+JiYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3Jk
Pik+JiYgYXBwbHkpOwogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTI3OSw2
ICsyODgsMjYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtU2V0TmV0d29ya1BhcmFtZXRl
cnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKTsKICNlbmRpZgogCisgICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CisgICAgc3RhdGlj
IFdURjo6U3RyaW5nIGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBX
VEY6OlN0cmluZyBkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6
OlN0cmluZyBkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0
aWMgV1RGOjpTdHJpbmcgZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgp
OworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KTsKKyNpZiBVU0UoR0xJQikKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEhTVFNEaXJl
Y3RvcnkoKTsKKyNlbmRpZgorICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SmF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKKworICAgIFdlYnNpdGVEYXRhU3RvcmUoKTsKKwor
ICAgIGVudW0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0b3J5LCBEb250Q3Jl
YXRlRGlyZWN0b3J5IH07CisgICAgc3RhdGljIFdURjo6U3RyaW5nIHRlbXBEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUsIFNo
b3VsZENyZWF0ZURpcmVjdG9yeSA9IENyZWF0ZURpcmVjdG9yeSk7CisgICAgc3RhdGljIFdURjo6
U3RyaW5nIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6
U3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRp
cmVjdG9yeU5hbWUpOworICAgIAogICAgIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4g
cHJvY2Vzc1Bvb2xzKHNpemVfdCBjb3VudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCksIGJvb2wgZW5zdXJlQVBvb2xFeGlzdHMgPSB0cnVlKSBjb25zdDsKIAogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgogCi0jaW5jbHVkZSAiQVBJV2Vic2l0
ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpCi0gICAgOiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSgpKQorICAgIDogbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpCiB7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiAjaW1wb3J0ICJDb29raWVTdG9yYWdlVXRp
bHNDRi5oIgorI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiU3RvcmFnZU1h
bmFnZXIuaCIKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2lt
cG9ydCAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKQEAgLTIzMCw0ICsyMzEsMTYxIEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1SZW1vdmVSZWMKICAgICBXZWJDb3JlOjpy
ZW1vdmVSZWNlbnRseU1vZGlmaWVkUmVjZW50U2VhcmNoZXMob2xkZXN0VGltZVRvUmVtb3ZlKTsK
IH0KIAorTlNTdHJpbmcgKldlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYkRh
dGFiYXNlRGlyZWN0b3J5IjsKK05TU3RyaW5nICpXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNL
ZXkgPSBAIldlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VLZXkiOworTlNT
dHJpbmcgKldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVk
aWFDYWNoZURpcmVjdG9yeSI7CitOU1N0cmluZyAqV2ViS2l0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5IjsKKwor
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gVGhpcyBxdWlyayB1
c2VkIHRvIG1ha2UgdGhlc2UgYXBwcyBzaGFyZSBhcHBsaWNhdGlvbiBjYWNoZSBzdG9yYWdlLCBi
dXQgZG9lc24ndCBhY2NvbXBsaXNoIHRoYXQgYW55IG1vcmUuCisgICAgLy8gUHJlc2VydmluZyBp
dCBhdm9pZHMgdGhlIG5lZWQgdG8gbWlncmF0ZSBkYXRhIHdoZW4gdXBncmFkaW5nLgorICAgIC8v
IEZJWE1FOiBJZGVhbGx5IHdlIHNob3VsZCBqdXN0IGhhdmUgU2FmYXJpLCBXZWJBcHAsIGFuZCB3
ZWJib29rbWFya3NkIGNyZWF0ZSBhIGRhdGEgc3RvcmUgd2l0aAorICAgIC8vIHRoaXMgYXBwbGlj
YXRpb24gY2FjaGUgcGF0aCwgYnV0IHRoYXQncyBub3Qgc3VwcG9ydGVkIGFzIG9mIHJpZ2h0IG5v
dy4KKyAgICBpZiAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCkgfHwg
V2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViQXBwKCkgfHwgV2ViQ29yZTo6SU9TQXBwbGlj
YXRpb246OmlzV2ViQm9va21hcmtzRCgpKSB7CisgICAgICAgIE5TU3RyaW5nICpjYWNoZVBhdGgg
PSBbTlNIb21lRGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiTGli
cmFyeS9DYWNoZXMvY29tLmFwcGxlLldlYkFwcENhY2hlIl07CisKKyAgICAgICAgcmV0dXJuIFdl
YktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChjYWNoZVBhdGguc3RyaW5nQnlT
dGFuZGFyZGl6aW5nUGF0aCk7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
Iik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3Jh
Z2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbigiQ2FjaGVTdG9yYWdlIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNo
ZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTmV0d29ya0NhY2hlIik7Cit9CisK
K1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KCkKK3sKKyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigi
TWVkaWFDYWNoZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSW5kZXhlZERCIik7Cit9CisKK1dURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oIlNlcnZpY2VXb3JrZXJzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJz
aXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTG9jYWxTdG9yYWdlIik7
Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIk1lZGlhS2V5cyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJldHVy
biB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiV2ViU1FMIik7
Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKK30KKwor
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbigiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIERvbnRDcmVhdGVEaXJlY3RvcnkpOwor
fQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBTaG91bGRD
cmVhdGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQoreworICAgIHN0YXRpYyBkaXNw
YXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBOU1VSTCAqdGVtcFVSTDsKKyAgICAK
KyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIE5TVVJMICp1cmwgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOk5TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6
WUVTXTsKKyAgICAgICAgaWYgKCF1cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250
YWluZXIoKSkgeworICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKKyAgICAgICAgICAgIGlmICghYnVu
ZGxlSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVyID0gW05TUHJv
Y2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOworICAgICAgICAgICAgdXJsID0gW3Vy
bCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBpc0RpcmVjdG9y
eTpZRVNdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0ZW1wVVJMID0gW1t1cmwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJldGFp
bl07CisgICAgfSk7CisgICAgCisgICAgTlNVUkwgKnVybCA9IFt0ZW1wVVJMIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisKKyAgICBp
ZiAoc2hvdWxkQ3JlYXRlRGlyZWN0b3J5ID09IENyZWF0ZURpcmVjdG9yeQorICAgICAgICAmJiAo
IVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJs
IHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVs
bHB0cl0pKQorICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVA
IiwgdXJsKTsKKyAgICAKKyAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNo
ZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGly
ZWN0b3J5TmFtZSkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAg
ICBzdGF0aWMgTlNVUkwgKmNhY2hlVVJMOworCisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2Vu
LCBeeworICAgICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBVUkxGb3JEaXJlY3Rvcnk6TlNDYWNoZXNEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWlu
TWFzayBhcHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsK
KyAgICAgICAgaWYgKCF1cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKKyAg
ICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5k
bGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIp
CisgICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nl
c3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICAg
ICAgfQorCisgICAgICAgIGNhY2hlVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07CisgICAgfSk7CisKKyAgICBO
U1VSTCAqdXJsID0gW2NhY2hlVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3Rv
cnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0
b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQorICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKKworICAgIHJldHVybiB1
cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Cit9CisKK1dURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAgIHN0
YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBOU1VSTCAqd2Vic2l0
ZURhdGFVUkw7CisKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIE5T
VVJMICp1cmwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9y
eTpOU0xpYnJhcnlEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0
ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKKyAgICAgICAgaWYgKCF1
cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgICAg
IHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVj
dG9yeTpZRVNdOworCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkp
IHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1h
aW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50
aWZpZXIpCisgICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZv
IHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsK
KyAgICAgICAgfQorCisgICAgICAgIHdlYnNpdGVEYXRhVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiV2Vic2l0ZURhdGEiIGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsK
KyAgICB9KTsKKworICAgIE5TVVJMICp1cmwgPSBbd2Vic2l0ZURhdGFVUkwgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBpZiAo
IVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJs
IHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVs
bHB0cl0pCisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAi
LCB1cmwpOworCisgICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbjsKK30KKwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcAko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
d2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCkBAIC00NSw0ICs0Niw1OSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBs
YXRmb3JtUmVtb3ZlUmVjCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorU3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOwor
fQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9y
eSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChG
aWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkNhY2hlU3Rv
cmFnZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNo
ZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
Ik5ldHdvcmtDYWNoZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdElu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlNlcnZpY2VXb3JrZXJzIik7Cit9CisK
K1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkK
K3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdl
Iik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
Ik1lZGlhS2V5U3RvcmFnZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKK30K
KworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKK30KKworU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dl
YnNpdGVEYXRhU3RvcmVHTGliLmNwcAkocmV2aXNpb24gMjQ5NzMyKQkoZnJvbSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6MjQ5NzMy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisKKyNpZiBQTEFURk9STShH
VEspCisjZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3ZWJraXRndGsiCisjZWxpZiBQTEFURk9STShX
UEUpCisjZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCisjZW5kaWYKKworbmFtZXNwYWNlIEFQ
SSB7CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImFwcGxpY2F0aW9u
cyIpOworfQorCisvLyBGSVhNRTogVGhlIG90aGVyIGRpcmVjdG9yaWVzIGluIHRoaXMgZmlsZSBh
cmUgc2hhcmVkIGJldHdlZW4gYWxsIGFwcGxpY2F0aW9ucyB1c2luZyBXZWJLaXRHVEsuCisvLyBX
aHkgaXMgb25seSB0aGlzIGRpcmVjdG9yeSBuYW1lc3BhY2VkIHRvIGEgcGFydGljdWxhciBhcHBs
aWNhdGlvbj8KK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2Fj
aGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAi
V2ViS2l0Q2FjaGUiKSk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9w
cmduYW1lKCkpLCAiQ2FjaGVTdG9yYWdlIikpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJldHVy
biB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVD
VE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGF0YWJhc2VzIiBHX0RJUl9TRVBBUkFUT1JfUyAiaW5k
ZXhlZGRiIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJf
U0VQQVJBVE9SX1MgInNlcnZpY2V3b3JrZXJzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3
ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9S
WSBHX0RJUl9TRVBBUkFUT1JfUyAibG9jYWxzdG9yYWdlIik7Cit9CisKK1dURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAg
ICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFT
RV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgIm1lZGlha2V5cyIpOworfQorCitTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9y
eSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJkZXZpY2VpZGhhc2hzYWx0
cyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGF0
YWJhc2VzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RT
RGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MpOworfQorCitX
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNh
Y2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBk
aXJlY3RvcnlOYW1lKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihn
X2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7Cit9CisKK1dURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3Rv
cnlOYW1lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkocmV2aXNp
b24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1
ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtMzUsNyArMzUsNyBAQAogI2RlZmlu
ZSBCQVNFX0RJUkVDVE9SWSAid3BlIgogI2VuZGlmCiAKLW5hbWVzcGFjZSBBUEkgeworbmFtZXNw
YWNlIFdlYktpdCB7CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTc4LDcgKzE3OCw2IEBACiAJCTFBMzAwNjZFMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25z
aXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTMwMDY2QzExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oICov
OyB9OwogCQkxQTMzNERFRDE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLzsgfTsKIAkJMUEzMzRERUUxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVh
TWFwTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBMzM0REVDMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgg
Ki87IH07Ci0JCTFBMzYzNUFBMUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3Jl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTM2MzVB
ODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oICovOyB9OwogCQkxQTND
ODg4MDE4QTVBQkFFMDBDNEM5NjIgLyogV0tQcmVmZXJlbmNlc0ludGVybmFsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNDODg3RjE4QTVBQkFFMDBD
NEM5NjIgLyogV0tQcmVmZXJlbmNlc0ludGVybmFsLmggKi87IH07CiAJCTFBM0NDMTY3MTg5MDZB
Q0YwMDFFNkVEOCAvKiBXS1dlYlZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBM0NDMTY1MTg5MDZBQ0YwMDFFNkVEOCAvKiBXS1dlYlZpZXcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTFBM0NDMTY5
MTg5MDdFQjAwMDFFNkVEOCAvKiBXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0NDMTY4MTg5MDdFQjAwMDFFNkVE
OCAvKiBXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCAqLzsgfTsKQEAgLTE3MjUsNiArMTcyNCw4IEBA
CiAJCQljb21waWxlclNwZWMgPSBjb20uYXBwbGUuY29tcGlsZXJzLnByb3h5LnNjcmlwdDsKIAkJ
CWZpbGVQYXR0ZXJucyA9ICIqLmgiOwogCQkJZmlsZVR5cGUgPSBwYXR0ZXJuLnByb3h5OworCQkJ
aW5wdXRGaWxlcyA9ICgKKwkJCSk7CiAJCQlpc0VkaXRhYmxlID0gMTsKIAkJCW91dHB1dEZpbGVz
ID0gKAogCQkJCSIkKEhFQURFUl9PVVRQVVRfRElSKS8kKElOUFVUX0ZJTEVfTkFNRSkiLApAQCAt
MjEyMSw5ICsyMTIyLDYgQEAKIAkJMUEzMzRERUExNkRFOEI2ODAwNkE4RTM4IC8qIFN0b3JhZ2VB
cmVhTWFwLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTMzNERFQjE2REU4Rjg4MDA2QThFMzggLyogU3Rv
cmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHA7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFBMzM0REVDMTZERThGODgwMDZB
OEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwotCQkxQTM2MzVBNzFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURh
dGFTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElXZWJz
aXRlRGF0YVN0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEzNjM1QTgx
QTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQVBJV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkxQTM2MzVBQjFBMzE0NUU1MDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVBJ
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QTNBNzNDQjFBNDhDNkQ0MDA3MjMxQjMgLyogQVBJUGFnZUdyb3VwSGFuZGxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVBhZ2VHcm91cEhhbmRsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBM0E3M0NDMUE0OEM2RDQwMDcyMzFCMyAvKiBB
UElQYWdlR3JvdXBIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJ
UGFnZUdyb3VwSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBM0M4ODdG
MThBNUFCQUUwMEM0Qzk2MiAvKiBXS1ByZWZlcmVuY2VzSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcmVmZXJlbmNlc0ludGVybmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02MzY3LDcgKzYzNjUsNiBAQAogCQkJCTdDRUZBOTYwMUFDMDk5
OTMwMEI5MTBGRCAvKiBBUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tICovLAogCQkJCTVD
QTQ2RTdBMjFGMUEyMzkwMENFODZCNCAvKiBBUElIVFRQQ29va2llU3RvcmVDb2NvYS5tbSAqLywK
IAkJCQlGRUQzQzFEQTFCNDQ3QUU4MDBFMEVCN0YgLyogQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVl
Q29jb2EubW0gKi8sCi0JCQkJMUEzNjM1QUIxQTMxNDVFNTAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbSAqLywKIAkJCQkxQUZERTY0MzE5NTEwQjU1MDBDNDhGRkEgLyogTGVn
YWN5QnVuZGxlRm9yQ2xhc3MubW0gKi8sCiAJCQkJMUMyMDkzNUUyMjMxOENCMDAwMDI2QTM5IC8q
IE5TQXR0cmlidXRlZFN0cmluZy5oICovLAogCQkJCTFDMjA5MzVGMjIzMThDQjAwMDAyNkEzOSAv
KiBOU0F0dHJpYnV0ZWRTdHJpbmcubW0gKi8sCkBAIC03OTc3LDggKzc5NzQsNiBAQAogCQkJCTJE
ODc4NjIyMUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5oICovLAogCQkJCTFB
RTI4NjgxMUM3RjkzODYwMDY5QUM0RiAvKiBBUElXZWJzaXRlRGF0YVJlY29yZC5jcHAgKi8sCiAJ
CQkJMUFFMjg2ODIxQzdGOTM4NjAwNjlBQzRGIC8qIEFQSVdlYnNpdGVEYXRhUmVjb3JkLmggKi8s
Ci0JCQkJMUEzNjM1QTcxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuY3Bw
ICovLAotCQkJCTFBMzYzNUE4MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3Jl
LmggKi8sCiAJCQkJNUM4REQzN0QxRkU0NTAxMTAwRjJBNTU2IC8qIEFQSVdlYnNpdGVQb2xpY2ll
cy5jcHAgKi8sCiAJCQkJNUM4REQzN0MxRkU0NTAxMTAwRjJBNTU2IC8qIEFQSVdlYnNpdGVQb2xp
Y2llcy5oICovLAogCQkJCTFBNjU2M0UyMUI3QThDNTAwMDlDRjc4NyAvKiBBUElXaW5kb3dGZWF0
dXJlcy5jcHAgKi8sCkBAIC05MzgyLDcgKzkzNzcsNiBAQAogCQkJCUM1RTFBRkVEMTZCMjEwMTcw
MDZDQzFGMiAvKiBBUElXZWJBcmNoaXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNUUxQUZFRjE2
QjIxMDI5MDA2Q0MxRjIgLyogQVBJV2ViQXJjaGl2ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUUyODY4NDFDN0Y5Mzg2MDA2OUFDNEYgLyogQVBJV2Vic2l0ZURhdGFSZWNvcmQuaCBp
biBIZWFkZXJzICovLAotCQkJCTFBMzYzNUFBMUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRl
RGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTY1NjNFNTFCN0E4QzUwMDA5Q0Y3ODcg
LyogQVBJV2luZG93RmVhdHVyZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0OEQyQTg1MjE1ODNB
N0UwMEM2NzUyQiAvKiBBcHBLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDRDMTkzMUIz
OUYzMzIwMEFCQzI4RSAvKiBBcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8s
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378486</attachid>
            <date>2019-09-10 14:04:35 -0700</date>
            <delta_ts>2019-09-10 14:11:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201655-20190910140435.patch</filename>
            <type>text/plain</type>
            <size>189931</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2NyBAQAorMjAxOS0wOS0xMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB1bm5l
Y2Vzc2FyeSBhYnN0cmFjdGlvbnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBmb3Vy
IHRoaW5ncyB0byBzaW1wbGlmeSBXZWJzaXRlRGF0YVN0b3JlIGNvZGU6CisgICAgICAgIDEuIEl0
IHJlbW92ZXMgQVBJOjpXZWJzaXRlRGF0YVN0b3JlLCB3aGljaCB3YXMganVzdCBhbiB1bm5lY2Vz
c2FyeSB3cmFwcGVyIGFyb3VuZCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUuCisgICAgICAgIDIu
IEl0IGRlcHJlY2F0ZXMgdGhlIHVudXNlZCBhbGlhc2VzIG9mIFdlYnNpdGVEYXRhU3RvcmUsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYW5kIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZgorICAgICAgICAzLiBJdCByZW1vdmVzIHRoZSB1bnVzZWQgQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHByb3BlcnRpZXMgdGhhdCBoYXZlIGJlZW4gbW92ZWQgdG8gV2Vic2l0ZURhdGFTdG9y
ZS4KKyAgICAgICAgNC4gSXQgbWFrZXMgV0tXZWJzaXRlRGF0YVN0b3JlLl9kZWxlZ2F0ZSB3ZWFr
IGluc3RlYWQgb2Ygc3Ryb25nLCBhcyBhbHJlYWR5IGFubm90YXRlZCBpbiBXS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZSBpbiBiZWhh
dmlvciBmcm9tIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZToKKyAg
ICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAg
ICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tp
ZVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6CisgICAg
ICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURh
dGFTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
RGF0YVN0b3JlLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
UG9saWNpZXMuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlUG9saWNpZXM6OmRhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5zKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJEZWxldGVBbGxFbnRyaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
UG9saWN5TGlzdGVuZXIuY3BwOgorICAgICAgICAodXNlV2l0aFBvbGljaWVzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCk6CisgICAgICAgIChXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KToKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAoV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLUmVzb3VyY2VDYWNo
ZU1hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENh
Y2hlT3JpZ2lucyk6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZv
ck9yaWdpbik6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFs
bE9yaWdpbnMpOgorICAgICAgICAodG9XZWJzaXRlRGF0YVR5cGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdl
dERlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlTm9u
UGVyc2lzdGVudERhdGFTdG9yZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVX
aXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29v
a2llU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZVdpdGhDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RT
ZWVuKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVBy
ZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKToKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSk6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5n
VGVzdCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hvdWxkQ2xh
c3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzTWF4U3RhdGlzdGljc0VudHJpZXMpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1BydW5lRW50cmllc0Rvd25Ubyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9u
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGb3JPcmlnaW4p
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnMpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW4pOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmln
aW5TdG9yYWdlUXVvdGEpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdKToK
KyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdKToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIGh0dHBDb29raWVTdG9yZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6bW9kaWZpZWRTaW5jZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOmZv
ckRhdGFSZWNvcmRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgX2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKToKKyAgICAgICAgKCtbV0tXZWJzaXRl
RGF0YVN0b3JlIF9kZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZ10pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3aXRoT3B0aW9u
czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Blck9yaWdpblN0b3Jh
Z2VRdW90YV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFBlck9yaWdpblN0
b3JhZ2VRdW90YTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRDYWNoZVN0
b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOl0pOgor
ICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcl0p
OgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldEFsbG93c0NlbGx1bGFyQWNjZXNz
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93c0NlbGx1bGFyQWNjZXNz
XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJveHlDb25maWd1cmF0aW9u
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFNvdXJj
ZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXI6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0QWxsb3dzVExTRmFs
bGJhY2s6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dzVExTRmFsbGJh
Y2tdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm94eUNvbmZpZ3VyYXRpb25d
KToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zv
cjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9z
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRJc1ByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERv
bWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3Jl
IF9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOl0pOgorICAgICAgICAoLVtXS1dlYnNp
dGVEYXRhU3RvcmUgX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyXSk6CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHNldF9kZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAg
ICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29y
a1Byb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ondl
YnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bV93ZWJQcm9jZXNzQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRl
bnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJt
ZWRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp0ZW1w
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxEZWZhdWx0RGF0
YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHRE
YXRhU3RvcmVGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2wgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAg
ICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6
IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRIU1RTRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Ondl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOS0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEhhbmdzIG9uIFN3aXNz
LmNvbSBkdWUgdG8gdGhlIHdlYiBwcm9jZXNzIGJlaW5nIGJsb2NrZWQgb24gU3RvcmFnZUFyZWFN
YXA6OkxvYWRWYWx1ZXNJZk5lZWRlZApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAg
ICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAotICAgIFVJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAogICAgIFVJ
UHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcApJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5E
IFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAot
ICAgIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKIAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVy
V2luLmNwcApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDYgQEAgVUlQcm9j
ZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVu
dFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElVc2VyU3R5bGVTaGVldC5jcHAKLVVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElXaW5kb3dGZWF0dXJlcy5jcHAKIApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yNzQsNyArMjc0LDYgQEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubQogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNv
Y29hLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCi1VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9MZWdhY3lCdW5kbGVGb3JDbGFzcy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0
dHJpYnV0ZWRTdHJpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3Qu
bW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9Tb3VyY2VzR1RLLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw2IEBAIFVJ
UHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9n
dGsvV0tWaWV3LmNwcAogCiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVz
dC5jcHAgQG5vLXVuaWZ5CkBAIC0yMzIsNiArMjMxLDcgQEAgVUlQcm9jZXNzL2NhaXJvL0JhY2tp
bmdTdG9yZUNhaXJvLmNwcCBAbgogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcAogVUlQcm9jZXNzL2dzdHJlYW1lci9X
ZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTExNCw3ICsxMTQsNiBAQCBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMu
Y3BwCiBVSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKIAogVUlQcm9jZXNzL0FQSS9nbGli
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlR0xpYi5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJ
L2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXBwbGljYXRpb25JbmZvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwIEBuby11bmlmeQpAQCAtMTkyLDYgKzE5MSw3IEBA
IFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3YKIAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5
R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5p
ZnkKIAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKIFVJ
UHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJu
aW5nLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNyAr
NDE2LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgICwg
bV9wcmVmZXJlbmNlcygqbV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpKQogICAgICwgbV91
c2VyQ29udGVudENvbnRyb2xsZXIoKm1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRl
ZExpbmtTdG9yZSgpKQotICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+
d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCisgICAgLCBtX3dlYnNpdGVE
YXRhU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKQogICAgICwgbV91
c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgeyBtX2NvbmZpZ3VyYXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5KCkgfQogICAgICwgbV90cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZp
Z3VyYXRpb24tPnRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCkBAIC0y
ODY3LDggKzI4NjcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9s
CiAgICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gZGF0YTsKICAgICBpZiAocG9saWNp
ZXMpIHsKICAgICAgICAgZGF0YSA9IHBvbGljaWVzLT5kYXRhKCk7Ci0gICAgICAgIGlmIChwb2xp
Y2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpICYmICZwb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgp
LT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSkgewotICAgICAg
ICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCktPndl
YnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAgaWYgKHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3Jl
KCkgJiYgcG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlLnB0
cigpKSB7CisgICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gKnBvbGljaWVzLT53ZWJzaXRl
RGF0YVN0b3JlKCk7CiAgICAgICAgICAgICBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDQsOCArMjQ0LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nl
c3NQb29sKEFQSTo6UHJvYwogICAgICAgICBQcm9jZXNzOjpzZXRJZGVudGlmaWVyKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKICAgICB9KTsKIAotICAgIGlmICghbV93
ZWJzaXRlRGF0YVN0b3JlICYmIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZUV4aXN0cygpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSAm
JiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCisgICAgICAgIG1f
d2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsK
IAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV9jb25maWd1cmF0aW9uLT5hbHdheXNSZXZhbGlk
YXRlZFVSTFNjaGVtZXMoKSkKICAgICAgICAgbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2
YWxpZGF0ZWQuYWRkKHNjaGVtZSk7CkBAIC00ODMsMTQgKzQ4MywxNCBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKLSAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZW5kaW5nQ29va2ll
cyA9IGNvcHlUb1ZlY3RvcihtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5w
ZW5kaW5nQ29va2llcygpKTsKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuY2xlYXJQZW5kaW5nQ29va2llcygpOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1
bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fd2Vi
c2l0ZURhdGFTdG9yZS0+cGVuZGluZ0Nvb2tpZXMoKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFT
dG9yZS0+Y2xlYXJQZW5kaW5nQ29va2llcygpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAg
ICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyKCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNr
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJh
Y2soKSA/IEFsbG93c1RMU0ZhbGxiYWNrOjpZZXMgOiBBbGxvd3NUTFNGYWxsYmFjazo6Tm87Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IG1fd2Vic2l0
ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9IG1fd2Vic2l0ZURh
dGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNrID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5hbGxvd3NUTFNG
YWxsYmFjaygpID8gQWxsb3dzVExTRmFsbGJhY2s6OlllcyA6IEFsbG93c1RMU0ZhbGxiYWNrOjpO
bzsKICNlbmRpZgotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5uZXR3b3JraW5nSGFzQmVndW4oKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3
b3JraW5nSGFzQmVndW4oKTsKICAgICB9CiAKICAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBj
YWNoZU1vZGVsKCk7CkBAIC01MDIsOSArNTAyLDYgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2Vi
UHJvY2Vzc1Bvb2w6OmVucwogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV91cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scykKICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVz
UmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKIAotICAgIHBhcmFt
ZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5kaXNrQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHko
KSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRpc2tDYWNo
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BF
Q1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24gPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNo
ZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQoKTsKICNlbmRpZgpAQCAtNTQxLDIzICs1Mzgs
MTEgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgIHBhcmFt
ZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkID0gY29weVRvVmVjdG9yKG1f
c2NoZW1lc1RvUmVnaXN0ZXJBc0NPUlNFbmFibGVkKTsKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVt
ZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCA9IGNvcHlUb1ZlY3Rvciht
X3NjaGVtZXNUb1JlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCk7CiAKLSNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICAvLyAqKioqKioqKioKLSAgICAvLyBJTVBPUlRB
TlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0
YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBB
cHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKLSAgICAvLyAqKioqKioqKioKLSAgICBw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeSA9IG1fY29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAg
ICBpZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygp
LmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKLSAgICAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVs
dERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU3ltTGlua0ZvckZpbGVVcGdyYWRlKHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5KTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChtX3dl
YnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJl
c29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgICAgICBwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPnJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAg
IGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAg
ICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSAgQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpOworICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkgPSAgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5LCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogCiAgICAgaWYgKCFtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZS5p
c0VtcHR5KCkpCkBAIC01NjYsMTYgKzU1MSwxNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQ
cm9jZXNzUG9vbDo6ZW5zCiAgICAgcGFyYW1ldGVycy5zaG91bGREaXNhYmxlU2VydmljZVdvcmtl
clByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclBy
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5OwogI2VuZGlmCiAKLSAgICBhdXRvIGxvY2FsU3RvcmFnZURp
cmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBudWxsU3RyaW5n
KCk7CisgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUg
PyBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBu
dWxsU3RyaW5nKCk7CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpOworICAgICAgICBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBs
b2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5k
ZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwor
ICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5yZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKICAg
ICBpZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0g
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogCiAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFt
ZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCkBAIC02MDEsMTcgKzU4NiwxNyBAQCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgfSBlbHNlIGlmICht
X3dlYnNpdGVEYXRhU3RvcmUpIHsKICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgICAgICBlbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkuaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygpOworICAgICAg
ICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5oYXNTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKCk7CiAjZW5kaWYKICAgICAg
ICAgaWYgKGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKLSAgICAgICAgICAgIGF1dG8g
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKKyAgICAgICAg
ICAgIGF1dG8gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5w
YXJhbWV0ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzOwogICAgICAgICAgICAgc2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNsdWRl
TG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgICAgICAgICAgZW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5l
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAgICAgICAgICAgbWFudWFs
UHJldmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKLSAgICAgICAg
cGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVv
dGEgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZXJPcmlnaW5TdG9y
YWdlUXVvdGEoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOworICAg
ICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlck9yaWdpblN0b3Jh
Z2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0
eU9yaWdpblN0b3JhZ2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyVGhpcmRQYXJ0eU9y
aWdpblN0b3JhZ2VRdW90YSgpOwogICAgIH0KIAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNzAyLDggKzY4
Nyw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnQKIAogICAgIGlm
ICghd2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkK
LSAgICAgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwotICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gJm1f
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICAgICAgbV93ZWJz
aXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OworICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOwog
ICAgIH0KIAogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQpAQCAt
Nzk1LDEyICs3ODAsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdl
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygp
CiB7CiAgICAgbV9yZXNvbHZlZFBhdGhzLmluamVjdGVkQnVuZGxlUGF0aCA9IHJlc29sdmVQYXRo
Rm9yU2FuZGJveEV4dGVuc2lvbihpbmplY3RlZEJ1bmRsZVBhdGgoKSk7Ci0gICAgbV9yZXNvbHZl
ZFBhdGhzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdy
aXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLndlYlNRTERhdGFiYXNl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAg
ICBtX3Jlc29sdmVkUGF0aHMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVS
ZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVk
aWFDYWNoZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwot
ICAgIG1fcmVzb2x2ZWRQYXRocy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRp
b24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOwotCiAgICAgbV9yZXNvbHZlZFBhdGhz
LmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnJlc2VydmVDYXBhY2l0
eShtX2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkuc2l6
ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBtX2NvbmZpZ3VyYXRpb24tPmFkZGl0
aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkpCiAgICAgICAgIG1fcmVzb2x2ZWRQYXRocy5h
ZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy51bmNoZWNrZWRBcHBlbmQo
cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGguZGF0YSgpKSk7CkBAIC04MzcsNyAr
ODE2LDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OgogI2lmIFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIC8vIEluIHBsYXRmb3JtcyB1c2luZyBC
dWJibGV3cmFwIGZvciBzYW5kYm94aW5nLCBwcmV3YXJtZWQgcHJvY2VzcyBpcyBsYXVuY2hlZCB1
c2luZyB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlLAogICAgIC8v
IHNvIHdlIGRvbid0IHVzZSBpdCBpbiBjYXNlIG9mIHVzaW5nIGEgZGlmZmVyZW50IFdlYnNpdGVE
YXRhU3RvcmUuCi0gICAgaWYgKG1fc2FuZGJveEVuYWJsZWQgJiYgbV93ZWJzaXRlRGF0YVN0b3Jl
ICYmICZtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURh
dGFTdG9yZSkKKyAgICBpZiAobV9zYW5kYm94RW5hYmxlZCAmJiBtX3dlYnNpdGVEYXRhU3RvcmUg
JiYgbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogCkBAIC04ODUsOCArODY0LDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2VuZFdlYlByb2Nlc3NEYXRhUwogICAgIGlmICghcGFyYW1ldGVycy5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFt
ZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgcGFy
YW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gd2Vic2l0
ZURhdGFTdG9yZS5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCk7Ci0g
ICAgaWYgKHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZS5pc0VtcHR5KCkpCi0gICAgICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRG
aWxlU3ViZGlyZWN0b3J5TmFtZSgpOwogCiAgICAgcGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSgpOwog
ICAgIGlmIChwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKQEAg
LTExMDcsNyArMTA4NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRGaW5pc2hM
YXUKICAgICBtX2Nvbm5lY3Rpb25DbGllbnQuZGlkQ3JlYXRlQ29ubmVjdGlvbih0aGlzLCBwcm9j
ZXNzLT53ZWJDb25uZWN0aW9uKCkpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAg
ICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGlkQ3JlYXRlTmV0
d29ya1Byb2Nlc3MoKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kaWRDcmVhdGVOZXR3
b3JrUHJvY2VzcygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vz
cyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCkBAIC0xMTg2LDcgKzExNjMsNyBAQCBXZWJQcm9j
ZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzCiAgICAgICAgIHJldHVybiBjcmVhdGVO
ZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIGJvb2wgbXVzdE1hdGNoRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gJkFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
Ym9vbCBtdXN0TWF0Y2hEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwogI2Vsc2UKICAgICBib29sIG11c3RNYXRjaERhdGFTdG9y
ZSA9IGZhbHNlOwogI2VuZGlmCkBAIC0xMjIwLDcgKzExOTcsNyBAQCBSZWY8V2ViUGFnZVByb3h5
PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAgICAgIC8vIFdlIHRyeSB0byBhdm9pZCBjcmVh
dGluZyB0aGUgZGVmYXVsdCBkYXRhIHN0b3JlIGFzIGxvbmcgYXMgcG9zc2libGUuCiAgICAgICAg
IC8vIEJ1dCBpZiB0aGVyZSBpcyBhbiBhdHRlbXB0IHRvIGNyZWF0ZSBhIHdlYiBwYWdlIHdpdGhv
dXQgYW55IHNwZWNpZmllZCBkYXRhIHN0b3JlLCB0aGVuIHdlIGhhdmUgdG8gY3JlYXRlIGl0Lgog
ICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgICAgIG1fd2Vic2l0ZURh
dGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OworICAgICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwogCiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRX
ZWJzaXRlRGF0YVN0b3JlKG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSk7CiAgICAgfQpAQCAtMTIz
MSw4ICsxMjA4LDggQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZQog
ICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdl
IHZpYSB3aW5kb3cub3BlbigpLgogICAgICAgICBwcm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9u
LT5yZWxhdGVkUGFnZSgpLT5lbnN1cmVSdW5uaW5nUHJvY2VzcygpOwogICAgICAgICAvLyBXZSBk
byBub3Qgc3VwcG9ydCBzZXZlcmFsIFdlYnNpdGVEYXRhU3RvcmVzIHNoYXJpbmcgYSBzaW5nbGUg
cHJvY2Vzcy4KLSAgICAgICAgQVNTRVJUKHByb2Nlc3MuZ2V0KCkgPT0gbV9kdW1teVByb2Nlc3NQ
cm94eSB8fCAmcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURh
dGFTdG9yZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwotICAgICAgICBBU1NF
UlQoJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkg
PT0gJnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3Rv
cmUoKSk7CisgICAgICAgIEFTU0VSVChwcm9jZXNzLmdldCgpID09IG1fZHVtbXlQcm9jZXNzUHJv
eHkgfHwgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmcHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgQVNTRVJUKCZwYWdlQ29uZmlndXJhdGlvbi0+
cmVsYXRlZFBhZ2UoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHBhZ2VDb25maWd1cmF0aW9uLT53
ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIH0gZWxzZSBpZiAoIW1faXNEZWxheWVkV2ViUHJvY2Vz
c0xhdW5jaERpc2FibGVkKSB7CiAgICAgICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwgd2UgZGVs
YXkgcHJvY2VzcyBsYXVuY2ggdW50aWwgc29tZXRoaW5nIGlzIGFjdHVhbGx5IGxvYWRlZCBpbiB0
aGUgcGFnZS4KICAgICAgICAgaWYgKCFtX2R1bW15UHJvY2Vzc1Byb3h5KSB7CkBAIC0xMjQyLDcg
KzEyMTksNyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAg
ICAgIH0KICAgICAgICAgcHJvY2VzcyA9IG1fZHVtbXlQcm9jZXNzUHJveHk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIHByb2Nlc3MgPSAmcHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHBhZ2VDb25m
aWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSwgbnVsbHB0
ciwgeyB9KTsKKyAgICAgICAgcHJvY2VzcyA9ICZwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4o
KnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCksIG51bGxwdHIsIHsgfSk7CiAK
ICAgICBBU1NFUlQocHJvY2Vzcyk7CiAKQEAgLTEyOTIsNyArMTI2OSw3IEBAIGJvb2wgV2ViUHJv
Y2Vzc1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmluZyBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlv
bigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgICAgIHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KCk7CiAKICAgICByZXR1cm4gbV9tYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzLmVu
c3VyZShzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBbJl0gewogICAgICAgICAv
LyBGSVhNRTogTWFrZSB0aGlzIGNvbXB1dGF0aW9uIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI0
OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJI
aWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyLmgiCkBAIC00NCw2ICs0Myw3
IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2
aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBAIC0yMDIsOCAr
MjAyLDggQEAgcHVibGljOgogICAgIC8vIERpc2Nvbm5lY3QgdGhlIHByb2Nlc3MgZnJvbSB0aGUg
Y29udGV4dC4KICAgICB2b2lkIGRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSopOwog
Ci0gICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRQcmltYXJ5RGF0
YVN0b3JlKEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKSB7IG1fd2Vic2l0ZURhdGFT
dG9yZSA9ICZkYXRhU3RvcmU7IH0KKyAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0
b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRQcmltYXJ5RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkgeyBtX3dl
YnNpdGVEYXRhU3RvcmUgPSAmZGF0YVN0b3JlOyB9CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBj
cmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CiAKQEAgLTY3Niw3ICs2NzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tZW1vcnlTYW1wbGVy
RW5hYmxlZCB7IGZhbHNlIH07CiAgICAgZG91YmxlIG1fbWVtb3J5U2FtcGxlckludGVydmFsIHsg
MTQwMC4wIH07CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVE
YXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9y
ZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgUmVmUHRyPFdlYkNvbnRleHRT
dXBwbGVtZW50PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IFdlYkNvbnRleHRTdXBwbGVtZW50TWFw
OwogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVudHM7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBD
b29raWVTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKIAotI2luY2x1ZGUg
IkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVT
dG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgZW51
bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludAogbmFtZXNwYWNlIEFQSSB7CiAK
IGNsYXNzIEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyOwotY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKIAogY2xhc3MgSFRUUENvb2tpZVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEyICsxNTEsMTIgQEAg
dm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0VmlzaXRlZExpbmtTdAogICAgIG1fdmlzaXRlZExp
bmtTdG9yZSA9IHZpc2l0ZWRMaW5rU3RvcmU7CiB9CiAKLUFQSTo6V2Vic2l0ZURhdGFTdG9yZSog
UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQorV2Vic2l0ZURhdGFTdG9yZSog
UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIHJldHVybiBtX3dl
YnNpdGVEYXRhU3RvcmUuZ2V0KCk7CiB9CiAKLXZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFdl
YnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQor
dm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNp
dGVEYXRhU3RvcmU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDEyICs0NCwxMiBAQCBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIGNsYXNzIFdlYlByb2Nl
c3NQb29sOwogY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIH0KIAogbmFtZXNwYWNl
IEFQSSB7CiAKIGNsYXNzIEFwcGxpY2F0aW9uTWFuaWZlc3Q7Ci1jbGFzcyBXZWJzaXRlRGF0YVN0
b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogCiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbiA6
IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6UGFnZUNvbmZpZ3VyYXRpb24+IHsKQEAg
LTg0LDggKzg0LDggQEAgcHVibGljOgogICAgIFdlYktpdDo6VmlzaXRlZExpbmtTdG9yZSogdmlz
aXRlZExpbmtTdG9yZSgpOwogICAgIHZvaWQgc2V0VmlzaXRlZExpbmtTdG9yZShXZWJLaXQ6OlZp
c2l0ZWRMaW5rU3RvcmUqKTsKIAotICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3Rv
cmUoKTsKLSAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSopOwor
ICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpOworICAgIHZv
aWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUqKTsKIAogICAg
IFdlYnNpdGVQb2xpY2llcyogZGVmYXVsdFdlYnNpdGVQb2xpY2llcygpIGNvbnN0OwogICAgIHZv
aWQgc2V0RGVmYXVsdFdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXMqKTsKQEAgLTE0NSw3
ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9y
ZWxhdGVkUGFnZTsKICAgICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0
ZWRMaW5rU3RvcmU7CiAKLSAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0
YVN0b3JlOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURh
dGFTdG9yZTsKICAgICBSZWZQdHI8V2Vic2l0ZVBvbGljaWVzPiBtX2RlZmF1bHRXZWJzaXRlUG9s
aWNpZXM7CiAKICAgICBib29sIG1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmUgeyB0cnVlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjQ5NzMy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKIAotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgor
I2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIEFQSSB7CiAKQEAgLTM2
LDM1ICszNiw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb28KICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOwogfQogCi1S
ZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNy
ZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihjb25zdCBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJiBsZWdhY3lDb25maWd1cmF0aW9uKQotewotICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0K
LSAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsK
LSAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRp
YUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5
KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGxl
Z2FjeUNvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBjb25m
aWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24u
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmRldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBs
ZWdhY3lDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0KLSAgICByZXR1
cm4gY29uZmlndXJhdGlvbjsKLX0KLQogUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKQotICAgIDogbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpCi0gICAg
LCBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkZpbGVzIikKLSAg
ICAsIG1fZGlza0NhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKSkKLSAgICAsIG1fbWVkaWFDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKQotICAgICwgbV9pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fZGV2aWNlSWRI
YXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJ
ZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fd2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkp
Ci0gICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSgpKQogewogfQogCkBAIC03NywxOCArNDksOCBAQCBSZWY8UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgYXV0byBjb3B5ID0gdGhpcy0+Y3Jl
YXRlKCk7CiAKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9kZWw7Ci0g
ICAgY29weS0+bV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX2Rpc2tDYWNoZURpcmVjdG9y
eTsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgPSB0
aGlzLT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQ7Ci0gICAgY29weS0+
bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5OwotICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZSA9IHRoaXMtPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsK
LSAgICBjb3B5LT5tX21lZGlhQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX21lZGlhQ2FjaGVEaXJl
Y3Rvcnk7Ci0gICAgY29weS0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1f
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9pbmplY3RlZEJ1bmRsZVBh
dGggPSB0aGlzLT5tX2luamVjdGVkQnVuZGxlUGF0aDsKLSAgICBjb3B5LT5tX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1f
ZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9kZXZpY2VJZEhhc2hT
YWx0c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeTsKLSAgICBjb3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gdGhp
cy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2NhY2hlUGFydGl0aW9u
ZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBj
b3B5LT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fYWx3YXlzUmV2YWxp
ZGF0ZWRVUkxTY2hlbWVzOwogICAgIGNvcHktPm1fYWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2Vk
UGF0aHMgPSB0aGlzLT5tX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24+IGNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bihjb25zdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJik7CiAKICAgICBl
eHBsaWNpdCBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKQEAgLTc5LDM4ICs3Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJL
aXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsg
fQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkg
eyBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAKLSAgICBjb25zdCBXVEY6OlN0cmluZyYg
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkgeyBtX2FwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9Ci0KLSAgICBj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXREaXNrQ2Fj
aGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSkgeyBtX2Rp
c2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeTsgfQotCi0gICAgY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ2Fj
aGVEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0g
bWVkaWFDYWNoZURpcmVjdG9yeTsgfQotICAgIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNv
bnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBtX2luZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQogICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBt
X2luamVjdGVkQnVuZGxlUGF0aDsgfQogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKGNv
bnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpIHsgbV9pbmplY3RlZEJ1bmRsZVBh
dGggPSBpbmplY3RlZEJ1bmRsZVBhdGg7IH0KIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9y
eTsgfQotICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5n
JiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpIHsgbV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBkZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkSGFzaFNh
bHRzU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnkpIHsgbV9kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBkaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6
U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViU1FM
RGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KGNvbnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkgeyBtX3dlYlNRTERh
dGFiYXNlRGlyZWN0b3J5ID0gd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0
IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
OyB9Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGNvbnN0IFdU
Rjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSB7IG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7
IH0KLQogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzKCkgeyByZXR1cm4gbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsgfQogICAgIHZv
aWQgc2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIGNh
Y2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKSB7IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMg
PSBXVEZNb3ZlKGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKTsgfQogCkBAIC0xODYsMTcgKzE1
NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlv
bkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwg
eyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlByaW1hcnlXZWJCcm93c2VyIH07CiAKLSAgICBXVEY6OlN0
cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9hcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwotICAgIFdURjo6U3RyaW5nIG1f
ZGlza0NhY2hlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fbWVkaWFDYWNoZURpcmVjdG9y
eTsKLSAgICBXVEY6OlN0cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFdU
Rjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwotICAgIFdURjo6U3RyaW5nIG1fbG9jYWxT
dG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7
Ci0gICAgV1RGOjpTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6
U3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBWZWN0b3I8V1RG
OjpTdHJpbmc+IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7CiAgICAgVmVjdG9yPFdURjo6
U3RyaW5nPiBtX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKICAgICBWZWN0b3I8V1RGOjpD
U3RyaW5nPiBtX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVEYXRhU3RvcmUuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTY4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCi0KLSNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgotI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmUuaCIKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLXN0YXRpYyBSZWZQdHI8V2Vic2l0
ZURhdGFTdG9yZT4mIGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKQotewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4+IGdsb2JhbERlZmF1bHREYXRhU3Rv
cmU7Ci0gICAgcmV0dXJuIGdsb2JhbERlZmF1bHREYXRhU3RvcmUuZ2V0KCk7Ci19Ci0KLQotUmVm
PFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKQot
ewotICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKLQotICAgIGF1dG8mIHN0b3JlID0g
Z2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpOwotICAgIGlmICghc3RvcmUpCi0gICAgICAgIHN0b3Jl
ID0gYWRvcHRSZWYobmV3IFdlYnNpdGVEYXRhU3RvcmUoZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwotCi0gICAgcmV0
dXJuICpzdG9yZTsKLX0KLQotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVEZWZhdWx0RGF0
YVN0b3JlRm9yVGVzdGluZygpCi17Ci0gICAgZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpID0gbnVs
bHB0cjsKLX0KLQotYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3Rz
KCkKLXsKLSAgICByZXR1cm4gISFnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCk7Ci19Ci0KLVJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0
YVN0b3JlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlKTsK
LX0KLQotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShSZWY8
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBj
b25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKSk7
Ci19Ci0KLVdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoKQotICAgIDogbV93ZWJz
aXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVu
dCgpKQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICA6IG1fd2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQp
KQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCi17Ci19Ci0K
LUhUVFBDb29raWVTdG9yZSYgV2Vic2l0ZURhdGFTdG9yZTo6aHR0cENvb2tpZVN0b3JlKCkKLXsK
LSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5jb29raWVTdG9yZSgpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjogaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPmNvbmZpZ3VyYXRpb24oKS5pbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSgpOwotfQotCi1ib29sIFdlYnNpdGVEYXRhU3RvcmU6OmlzUGVy
c2lzdGVudCgpCi17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+aXNQZXJzaXN0ZW50
KCk7Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Ci19Ci0KLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7
Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOwotfQotCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCBlbmFibGVkKQotewotICAgIG1f
d2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFi
bGVkKTsKLX0KLQotI2lmICFQTEFURk9STShDT0NPQSkKLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzY5IGFu
ZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzcwCi0gICAgcmV0
dXJuIFdURjo6U3RyaW5nKCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgLy8gRklYTUU6
IEltcGxlbWVudC4KLSAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKLX0KLSNlbmRpZgotCi0jaWYg
IVVTRShHTElCKQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgLy8gTm90IGltcGxlbWVudGVkLgot
ICAgIHJldHVybiBXVEY6OlN0cmluZygpOwotfQotI2VuZGlmCi0KLVJlZjxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0KLSAgICBjb25maWd1cmF0
aW9uLT5zZXRQZXJzaXN0ZW50KHRydWUpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsK
LSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lKCJGaWxlcyIpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVj
dG9yeShkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24t
PnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkp
OwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkoKSk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5zZXRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeShkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAg
Y29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShkZWZh
dWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0
aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGRl
ZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0RGV2aWNl
SWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0
SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoZGVmYXVsdEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5KCkpOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdl
YnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShub25leGlzdGVudCkKQEAg
LTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJBUElIVFRQQ29va2llU3RvcmUuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0j
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgQVBJIHsKLQotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSBmaW5hbCA6IHB1
YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6V2Vic2l0ZURhdGFTdG9yZT4gewotcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gZGVmYXVsdERhdGFTdG9yZSgpOwot
ICAgIHN0YXRpYyBib29sIGRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKLSAgICBzdGF0aWMgdm9p
ZCBkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwotCi0gICAgc3RhdGljIFJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+JiYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7Ci0gICAgc3RhdGljIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7Ci0KLSAgICBleHBs
aWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7Ci0gICAgdmlydHVhbCB+V2Vic2l0ZURhdGFTdG9y
ZSgpOwotCi0gICAgYm9vbCBpc1BlcnNpc3RlbnQoKTsKLQotICAgIGJvb2wgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdDsKLSAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGJvb2wpOwotICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShib29sKTsKLQotICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSgpIHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQotICAgIEhUVFBDb29raWVT
dG9yZSYgaHR0cENvb2tpZVN0b3JlKCk7Ci0KLSAgICBXVEY6OlN0cmluZyBpbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcg
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBk
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGlj
IFdURjo6U3RyaW5nIGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotI2lmIFVTRShH
TElCKQotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SFNUU0RpcmVjdG9yeSgpOwotI2Vu
ZGlmCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRKYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwot
Ci1wcml2YXRlOgotICAgIGVudW0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0
b3J5LCBEb250Q3JlYXRlRGlyZWN0b3J5IH07Ci0KLSAgICBXZWJzaXRlRGF0YVN0b3JlKCk7Ci0K
LSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0
b3J5ID0gQ3JlYXRlRGlyZWN0b3J5KTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSk7Ci0K
LSAgICBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7Ci19
OwotCi19CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGlj
aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZVBvbGljaWVzLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE0
ICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xp
Y2llcy5oIgogCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgIldl
YnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCiAKIG5h
bWVzcGFjZSBBUEkgewogCiBXZWJzaXRlUG9saWNpZXM6OldlYnNpdGVQb2xpY2llcygpID0gZGVm
YXVsdDsKIAotV2Vic2l0ZVBvbGljaWVzOjpXZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxs
b3dlZEF1dG9wbGF5UXVpcmtzLCBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeSBhdXRvcGxh
eVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiBsZWdhY3lDdXN0b21I
ZWFkZXJGaWVsZHMsIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+JiYgY3VzdG9t
SGVhZGVyRmllbGRzLCBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSBwb3BVcFBvbGljeSwgUmVm
UHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKK1dlYnNpdGVQb2xpY2ll
czo6V2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgT3B0aW9uU2V0
PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IGFsbG93ZWRBdXRvcGxheVF1aXJrcywgV2Vi
S2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3kgYXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3Jl
OjpIVFRQSGVhZGVyRmllbGQ+JiYgbGVnYWN5Q3VzdG9tSGVhZGVyRmllbGRzLCBWZWN0b3I8V2Vi
Q29yZTo6Q3VzdG9tSGVhZGVyRmllbGRzPiYmIGN1c3RvbUhlYWRlckZpZWxkcywgV2ViS2l0OjpX
ZWJzaXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3ksIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKICAgICA6IG1fY29udGVudEJsb2NrZXJzRW5hYmxl
ZChjb250ZW50QmxvY2tlcnNFbmFibGVkKQogICAgICwgbV9hbGxvd2VkQXV0b3BsYXlRdWlya3Mo
YWxsb3dlZEF1dG9wbGF5UXVpcmtzKQogICAgICwgbV9hdXRvcGxheVBvbGljeShhdXRvcGxheVBv
bGljeSkKQEAgLTg0LDcgKzg0LDcgQEAgV2Vic2l0ZVBvbGljaWVzOjp+V2Vic2l0ZVBvbGljaWVz
KCkKIHsKIH0KIAotdm9pZCBXZWJzaXRlUG9saWNpZXM6OnNldFdlYnNpdGVEYXRhU3RvcmUoUmVm
UHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKK3ZvaWQgV2Vic2l0ZVBv
bGljaWVzOjpzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBXVEZN
b3ZlKHdlYnNpdGVEYXRhU3RvcmUpOwogfQpAQCAtMTA4LDcgKzEwOCw3IEBAIFdlYktpdDo6V2Vi
c2l0ZVBvbGljaWVzRGF0YSBXZWJzaXRlUG9saWMKICNlbmRpZgogICAgICAgICBXVEZNb3ZlKGN1
c3RvbUhlYWRlckZpZWxkcyksCiAgICAgICAgIHBvcFVwUG9saWN5KCksCi0gICAgICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZSA/IE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnM+IHsgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygp
IH0gOiBXVEY6Om51bGxvcHQsCisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA/IE9wdGlvbmFs
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IHsgbV93ZWJzaXRlRGF0YVN0b3Jl
LT5wYXJhbWV0ZXJzKCkgfSA6IFdURjo6bnVsbG9wdCwKICAgICAgICAgbV9jdXN0b21Vc2VyQWdl
bnQsCiAgICAgICAgIG1fY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVp
cmtzLAogICAgICAgICBtX2N1c3RvbU5hdmlnYXRvclBsYXRmb3JtLApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2ll
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMyArNDEsMTIgQEAKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIHN0
cnVjdCBXZWJzaXRlUG9saWNpZXNEYXRhOwogfQogCiBuYW1lc3BhY2UgQVBJIHsKIAotY2xhc3Mg
V2Vic2l0ZURhdGFTdG9yZTsKLQogY2xhc3MgV2Vic2l0ZVBvbGljaWVzIGZpbmFsIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6V2Vic2l0ZVBvbGljaWVzPiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlUG9saWNpZXM+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2Vic2l0ZVBvbGljaWVzKTsgfQpAQCAtNzksOCArNzgsOCBAQCBwdWJs
aWM6CiAgICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3koKSBjb25zdCB7
IHJldHVybiBtX3BvcFVwUG9saWN5OyB9CiAgICAgdm9pZCBzZXRQb3BVcFBvbGljeShXZWJLaXQ6
OldlYnNpdGVQb3BVcFBvbGljeSBwb2xpY3kpIHsgbV9wb3BVcFBvbGljeSA9IHBvbGljeTsgfQog
Ci0gICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJu
IG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9y
ZShSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJik7CisgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3Jl
LmdldCgpOyB9CisgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0cjxXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU+JiYpOwogCiAgICAgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIGRh
dGEoKTsKIApAQCAtMTE4LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFsbG93Q29u
dGVudENoYW5nZU9ic2VydmVyUXVpcmsoYm9vbCBhbGxvdykgeyBtX2FsbG93Q29udGVudENoYW5n
ZU9ic2VydmVyUXVpcmsgPSBhbGxvdzsgfQogCiBwcml2YXRlOgotICAgIFdlYnNpdGVQb2xpY2ll
cyhib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVB
dXRvcGxheVF1aXJrPiwgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJD
b3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYsIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVs
ZHM+JiYsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5LCBSZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4mJik7CisgICAgV2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwg
T3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+LCBXZWJLaXQ6OldlYnNpdGVB
dXRvcGxheVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiwgVmVjdG9y
PFdlYkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4mJiwgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xp
Y3ksIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+JiYpOwogCiAgICAgYm9vbCBtX2Nv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQgeyB0cnVlIH07CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZUF1dG9wbGF5UXVpcms+IG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtzOwpAQCAtMTI5LDcgKzEy
OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4gbV9s
ZWdhY3lDdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkN1c3RvbUhlYWRl
ckZpZWxkcz4gbV9jdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQ
b2xpY3kgbV9wb3BVcFBvbGljeSB7IFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5OjpEZWZhdWx0
IH07Ci0gICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAg
ICBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAg
ICAgV1RGOjpTdHJpbmcgbV9jdXN0b21Vc2VyQWdlbnQ7CiAgICAgV1RGOjpTdHJpbmcgbV9jdXN0
b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3M7CiAgICAgV1RGOjpTdHJp
bmcgbV9jdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjks
NiBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNzIFByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjsKIGNsYXNzIFNlc3Npb25TdGF0ZTsKIGNsYXNzIFVzZXJTY3JpcHQ7Ci1jbGFzcyBXZWJz
aXRlRGF0YVN0b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogY2xhc3MgV2luZG93RmVhdHVy
ZXM7CiB9CkBAIC0xMTMsNiArMTEyLDcgQEAgY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI7CiBjbGFzcyBXZWJUZXh0Q2hlY2tlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OwogY2xhc3MgV2ViVmlld3BvcnRBdHRyaWJ1dGVzOworY2xhc3MgV2Vic2l0
ZURhdGFTdG9yZTsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOwogCiBXS19B
RERfQVBJX01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiwgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eSkKQEAgLTE2OSw3ICsxNjksNyBAQCBXS19BRERfQVBJX01BUFBJTkco
V0tVc2VyTWVkaWFQZXJtaXNzaW9uCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFJlZiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSkKIFdLX0FE
RF9BUElfTUFQUElORyhXS1VzZXJTY3JpcHRSZWYsIEFQSTo6VXNlclNjcmlwdCkKIFdLX0FERF9B
UElfTUFQUElORyhXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZiwgV2ViVmlld3BvcnRBdHRyaWJ1dGVz
KQotV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgQVBJOjpXZWJzaXRl
RGF0YVN0b3JlKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb25SZWYsIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tXZWJzaXRlUG9saWNpZXNSZWYsIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2luZG93RmVhdHVyZXNSZWYsIEFQSTo6
V2luZG93RmVhdHVyZXMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ5
NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDQyICsyNiwxOSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCIKIAotI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCi0KIFdL
VHlwZUlEIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRUeXBlSUQoKQogewotICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CisgICAgcmV0
dXJuIDA7CiB9CiAKLXZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9uIGNhbGxiYWNrKQordm9pZCBXS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnMoV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlclJlZiwgdm9pZCosIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luc0Z1bmN0aW9uKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBX
ZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oYXBw
bGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVE
YXRhU3RvcmUuZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdKGF1dG8gZGF0YVJlY29yZHMp
IHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2luczsK
LSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKLSAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKQot
ICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy5hcHBlbmQoQVBJOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBjYWxsYmFjayhXZWJLaXQ6OnRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHNlY3Vy
aXR5T3JpZ2lucykpLnB0cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZv
aWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwgV0tTZWN1cml0
eU9yaWdpblJlZiBvcmlnaW4pCit2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVF
bnRyaWVzRm9yT3JpZ2luKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYsIFdLU2VjdXJpdHlP
cmlnaW5SZWYpCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IFdlYktpdDo6dG9JbXBs
KHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihhcHBsaWNhdGlvbkNhY2hl
TWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0KLSAgICBXZWJLaXQ6OldlYnNpdGVEYXRh
UmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCBXZWJLaXQ6OnRvSW1wbChvcmlnaW4p
LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7Ci0KLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92
ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
LCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsKIH0KIAotdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyKQordm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRl
QWxsRW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmKQogewotICAgIGF1dG8mIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0
ZURhdGFTdG9yZVJlZj4oYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YShXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwg
W10geyB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgJKHJldmlzaW9uIDI0OTczMikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTggKzI3LDE5IEBACiAjZGVmaW5lIFdLQXBwbGljYXRp
b25DYWNoZU1hbmFnZXJfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUg
PFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMi
IHsKICNlbmRpZgogCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ckdldFR5cGVJRCgpOworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJHZXRUeXBlSUQoKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiB0eXBlZGVmIHZvaWQgKCpXS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiko
V0tBcnJheVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9u
IGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRB
cHBsaWNhdGlvbkNhY2hlT3JpZ2lucyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbikgV0tfQ19BUElf
REVQUkVDQVRFRDsKIAotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRl
bGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNh
dGlvbkNhY2hlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pOwotV0tfRVhQT1JU
IHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcik7CitXS19FWFBPUlQg
dm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCBXS1NlY3Vy
aXR5T3JpZ2luUmVmIG9yaWdpbikgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lk
IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpIFdLX0NfQVBJX0RFUFJFQ0FU
RUQ7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCShyZXZpc2lv
biAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5
TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCIKIAotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMu
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZVBvbGljaWVzRGF0YS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw5MCArMjYsMzggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAi
QVBJRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNs
dWRlICJTdG9yYWdlTWFuYWdlci5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUg
IldlYnNpdGVEYXRhUmVjb3JkLmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlw
ZUlEIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRv
QVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIDA7CiB9CiAK
IFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpCiB7Ci0g
ICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJXZWJLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURldGFpbHNPcmlnaW5LZXkiKS5sZWFrUmVmKCk7Ci0g
ICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBXS1N0cmlu
Z1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKQogewotICAg
IHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiV2ViS2V5VmFs
dWVTdG9yYWdlTWFuYWdlclN0b3JhZ2VEZXRhaWxzQ3JlYXRpb25UaW1lS2V5IikubGVha1JlZigp
OwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogV0tT
dHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgp
CiB7Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJX
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURldGFpbHNNb2RpZmljYXRpb25UaW1lS2V5
IikubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VP
cmlnaW5zKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
LCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3Jh
Z2VPcmlnaW5zRnVuY3Rpb24gY2FsbGJhY2spCi0KK3ZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYs
IHZvaWQqLCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5z
RnVuY3Rpb24pCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVy
cHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oa2V5VmFsdWVTdG9yYWdlTWFuYWdlcikp
LT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5mZXRjaERhdGEoeyBX
ZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3Rv
cmFnZSB9LCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10oYXV0byBkYXRhUmVjb3JkcykgewotICAg
ICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gc2VjdXJpdHlPcmlnaW5zOwotICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVjb3JkcykgewotICAgICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBkYXRhUmVjb3JkLm9yaWdpbnMpCi0gICAgICAg
ICAgICAgICAgc2VjdXJpdHlPcmlnaW5zLmFwcGVuZChBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUob3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxi
YWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHNlY3VyaXR5T3JpZ2lucykpLnB0
cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1bmN0aW9uIGNhbGxiYWNr
KQordm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwgdm9pZCosIFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5jdGlvbikKIHsKLSAgICBhdXRvJiB3ZWJz
aXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3Jl
UmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3
ZWJzaXRlRGF0YVN0b3JlLmdldExvY2FsU3RvcmFnZURldGFpbHMoW2NvbnRleHQsIGNhbGxiYWNr
XShhdXRvJiYgZGV0YWlscykgewotICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4g
cmVzdWx0OwotICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkZXRhaWxzLnNp
emUoKSk7Ci0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkZXRhaWwgOiBkZXRhaWxzKSB7Ci0g
ICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSTo6T2JqZWN0Pj4gZGV0YWlsTWFw
OwotICAgICAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKGRldGFpbC5vcmlnaW5JZGVudGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0K
LSAgICAgICAgICAgIGRldGFpbE1hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ckdldE9yaWdpbktleSgpKS0+c3RyaW5nKCksIG9yaWdpbik7Ci0gICAgICAgICAgICBpZiAoZGV0
YWlsLmNyZWF0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxNYXAuc2V0KHRvSW1wbChX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBB
UEk6OkRvdWJsZTo6Y3JlYXRlKGRldGFpbC5jcmVhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2No
KCkudmFsdWUoKSkpOwotICAgICAgICAgICAgaWYgKGRldGFpbC5tb2RpZmljYXRpb25UaW1lKQot
ICAgICAgICAgICAgICAgIGRldGFpbE1hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3Jl
YXRlKGRldGFpbC5tb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkp
KTsKLQotICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChBUEk6OkRpY3Rpb25hcnk6
OmNyZWF0ZShXVEZNb3ZlKGRldGFpbE1hcCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxi
YWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdCkpLnB0cigpKSwgbnVs
bHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5
VmFsdWVTdG9yYWdlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pCit2b2lkIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmKQogewotICAgIGF1dG8mIHdlYnNp
dGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVS
ZWY+KGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIFdl
YnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURh
dGFUeXBlOjpMb2NhbFN0b3JhZ2UsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRh
dGEoKSk7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFn
ZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKLSAgICB3ZWJzaXRl
RGF0YVN0b3JlLnJlbW92ZURhdGEoeyBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vi
c2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSB9LCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsK
IH0KIAotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKQordm9pZCBXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlclJlZikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJw
cmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSkt
PndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEoeyBX
ZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3Rv
cmFnZSB9LCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtdIHsgfSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXIuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDMwICsy
NywzMSBAQAogI2RlZmluZSBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJfaAogCiAjaW5jbHVkZSA8
V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lm
ZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi1XS19FWFBPUlQgV0tUeXBl
SUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlEKCk7CitXS19FWFBPUlQgV0tUeXBl
SUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlEKCkgV0tfQ19BUElfREVQUkVDQVRF
RDsKIAogLyogVmFsdWUgdHlwZTogV0tTZWN1cml0eU9yaWdpblJlZiAqLwotV0tfRVhQT1JUIFdL
U3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpOworV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpIFdL
X0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5cGU6IFdLRG91YmxlUmVmLCBzZWNvbmRz
IHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpOworV0tfRVhQT1JUIFdL
U3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpIFdL
X0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5cGU6IFdLRG91YmxlUmVmLCBzZWNvbmRz
IHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKTsKK1dLX0VYUE9S
VCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1l
S2V5KCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uKShXS0FycmF5UmVm
LCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zRnVuY3Rpb24gZnVuY3Rpb24pOworV0tf
RVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3Jp
Z2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwg
dm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdl
T3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiB0eXBlZGVm
IHZvaWQgKCpXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
RnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdLRXJyb3JSZWYsIHZvaWQqKTsKLVdLX0VYUE9SVCB2b2lk
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4oV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRl
eHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5j
dGlvbiBmdW5jdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24gZnVuY3Rpb24pIFdLX0NfQVBJX0RF
UFJFQ0FURUQ7CiAKLVdLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0
ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3Rv
cmFnZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKTsKLVdLX0VYUE9SVCB2b2lk
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpOworV0tfRVhQT1JUIHZvaWQgV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJl
ZiBvcmlnaW4pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CitXS19FWFBPUlQgdm9pZCBXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVz
b3VyY2VDYWNoZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNjcgKzI2LDE5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oIgogCi0jaW5jbHVkZSAiQVBJQXJy
YXkuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSAiV0tBUElD
YXN0LmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNvcmQuaCIKLQotdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKLQogV0tUeXBlSUQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldFR5cGVJRCgpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7Ci19Ci0K
LXN0YXRpYyBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZXMoV0tS
ZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikKLXsKLSAgICBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzIHsgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlD
YWNoZSB9OwotCi0gICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gV0tSZXNvdXJjZUNhY2hlc1RvQ2xl
YXJBbGwpCi0gICAgICAgIHdlYnNpdGVEYXRhVHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlz
a0NhY2hlKTsKLQotICAgIHJldHVybiB3ZWJzaXRlRGF0YVR5cGVzOworICAgIHJldHVybiAwOwog
fQogCi12b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMoV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFjaykKK3ZvaWQgV0tSZXNv
dXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVm
LCB2b2lkKiwgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uKQog
ewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxX
S1dlYnNpdGVEYXRhU3RvcmVSZWY+KGNhY2hlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7
Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5mZXRjaERhdGEodG9XZWJzaXRlRGF0YVR5cGVzKFdLUmVz
b3VyY2VDYWNoZXNUb0NsZWFyQWxsKSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdKGF1dG8gZGF0
YVJlY29yZHMpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5
T3JpZ2luczsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29y
ZHMpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5v
cmlnaW5zKQotICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy5hcHBlbmQoQVBJOjpTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShzZWN1
cml0eU9yaWdpbnMpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwotICAgIH0pOwogfQogCi12
b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5hZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwg
V0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikKK3ZvaWQgV0tSZXNvdXJjZUNh
Y2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4oV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiwg
V0tTZWN1cml0eU9yaWdpblJlZiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgYXV0
byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURh
dGFTdG9yZVJlZj4oY2FjaGVNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLQotICAgIFZl
Y3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gZGF0YVJlY29yZHM7Ci0KLSAgICB7Ci0gICAgICAgIFdl
YnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNp
dGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigp
LmRhdGEoKSk7Ci0KLSAgICAgICAgZGF0YVJlY29yZHMuYXBwZW5kKGRhdGFSZWNvcmQpOwotICAg
IH0KLQotICAgIGlmIChjYWNoZXNUb0NsZWFyID09IFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyQWxs
KSB7Ci0gICAgICAgIFdlYnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgICAgIGRhdGFS
ZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCB0b0ltcGwob3JpZ2luKS0+c2Vj
dXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotCi0gICAgICAgIGRhdGFSZWNvcmRzLmFwcGVuZChkYXRh
UmVjb3JkKTsKLSAgICB9Ci0KLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEodG9XZWJz
aXRlRGF0YVR5cGVzKGNhY2hlc1RvQ2xlYXIpLCBkYXRhUmVjb3JkcywgW10geyB9KTsKIH0KIAot
dm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFsbE9yaWdpbnMoV0tSZXNv
dXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFy
IGNhY2hlc1RvQ2xlYXIpCit2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9y
QWxsT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmLCBXS1Jlc291cmNlQ2FjaGVzVG9D
bGVhcikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0
X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihjYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFT
dG9yZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YSh0b1dlYnNpdGVEYXRhVHlw
ZXMoY2FjaGVzVG9DbGVhciksIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW10geyB9KTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyX2gKIAogI2luY2x1ZGUg
PFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CiAKICNp
ZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0zOCwxMyArMzksMTMgQEAgZW51bSB7
CiB9OwogdHlwZWRlZiB1aW50MzJfdCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhcjsKIAotV0tfRVhQ
T1JUIFdLVHlwZUlEIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRUeXBlSUQoKTsKK1dLX0VYUE9S
VCBXS1R5cGVJRCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0VHlwZUlEKCkgV0tfQ19BUElfREVQ
UkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hl
T3JpZ2luc0Z1bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBP
UlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zKFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJSZWYgY29udGV4dFJlZiwgdm9pZCogY29udGV4dCwgV0tSZXNvdXJjZUNhY2hl
TWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lk
IFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFu
YWdlclJlZiBjb250ZXh0UmVmLCB2b2lkKiBjb250ZXh0LCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2Vy
R2V0Q2FjaGVPcmlnaW5zRnVuY3Rpb24gZnVuY3Rpb24pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAK
LVdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2lu
KFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5nZXIsIFdLU2VjdXJpdHlPcmlnaW5S
ZWYgb3JpZ2luLCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKTsKLVdLX0VY
UE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhX
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwgV0tSZXNvdXJjZUNhY2hlc1Rv
Q2xlYXIgY2FjaGVzVG9DbGVhcik7CitXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyQ2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFu
Z2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIg
Y2FjaGVzVG9DbGVhcikgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lkIFdLUmVz
b3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVN
YW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9D
bGVhcikgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAKICNpbmNsdWRlICJXS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCIKIAogI2luY2x1
ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1
ZGUgIkFQSUhUVFBDb29raWVTdG9yZS5oIgogI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mu
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKQEAgLTQxLDI5ICs0MSwzMCBAQAogI2luY2x1ZGUg
IldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0Fn
Z3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIFdLVHlwZUlEIFdLV2Vic2l0ZURh
dGFTdG9yZUdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OkFQSVR5cGUpOwogfQogCiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
V0tXZWJzaXRlRGF0YVN0b3JlR2V0RGVmYXVsdERhdGFTdG9yZSgpCiB7Ci0gICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRy
KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpKTsKIH0KIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdL
V2Vic2l0ZURhdGFTdG9yZUNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKQogewotICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNp
c3RlbnREYXRhU3RvcmUoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKS5sZWFrUmVmKCkp
OwogfQogCiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlV2l0
aENvbmZpZ3VyYXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblJlZiBjb25maWd1
cmF0aW9uKQogewogICAgIGF1dG8gc2Vzc2lvbklEID0gV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJh
dGlvbiktPmlzUGVyc2lzdGVudCgpID8gUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlUGVyc2lzdGVu
dFNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlRXBoZW1lcmFsU2Vzc2lvbklE
KCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3Jl
YXRlKCpXZWJLaXQ6OnRvSW1wbChjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKS5sZWFrUmVmKCkp
OworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNy
ZWF0ZSgqV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJhdGlvbiksIHNlc3Npb25JRCkubGVha1JlZigp
KTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZSkK
QEAgLTgzLDEzICs4NCwxMyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9h
ZFN0CiAKIFdLSFRUUENvb2tpZVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUdldEhUVFBDb29r
aWVTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKQogewotICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5odHRwQ29va2ll
U3RvcmUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPmNvb2tpZVN0b3JlKCkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVXaXRoQ29tcGxldGlvbkhhbmRsZXIoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWJ1Z01vZGVGdW5jdGlvbiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGVuYWJsZSwgW2NvbnRleHQsIGNvbXBsZXRpb25I
YW5kbGVyXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGUsIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
cl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsKICNlbHNl
CkBAIC0xMDAsNyArMTAxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc0RlYnVnTW9kZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdN
b2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQs
IGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMTEwLDcg
KzExMSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3QKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGRvdWJsZSBzZWNvbmRzLCB2b2lk
KiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzTGFzdFNlZW5GdW5jdGlvbiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXRMYXN0U2VlbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFNl
Y29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldExhc3RTZWVuKFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQs
IGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQp
OwogICAgIH0pOwogI2Vsc2UKQEAgLTEyMSw3ICsxMjIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NMYXN0CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3Rp
Y3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0
YVN0b3JlKCk7CisgICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZhbHVlKQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3Jl
LnNldFByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CkBAIC0xMzksNyArMTQwLDcg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldgogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVz
b3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byYgd2Vic2l0
ZURhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZh
bHVlKQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlLnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21w
bGV0aW9uSGFuZGxlcl0gewpAQCAtMTU3LDcgKzE1OCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1ZlcnkKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlRHVtcFJlc291cmNl
TG9hZFN0YXRpc3RpY3MoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3NGdW5j
dGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kdW1w
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbY29udGV4dCwgY2FsbGJhY2tdIChjb25zdCBTdHJpbmcm
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbY29udGV4dCwgY2FsbGJhY2tdIChjb25z
dCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKICAgICAgICAgY2FsbGJhY2soV2Vi
S2l0Ojp0b0FQSShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmltcGwoKSksIGNvbnRleHQpOwogICAg
IH0pOwogI2Vsc2UKQEAgLTE2OCw3ICsxNjksNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUR1
bXBSZXNvdXJjZUxvYWRTCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJz
aXRlRGF0YVN0b3JlKCkuaXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ByZXZhbGVu
dFJlc291cmNlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNQcmV2YWxl
bnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKSB7CiAgICAgICAgIGNh
bGxiYWNrKGlzUHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAg
LTE3OSw3ICsxODAsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZh
CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJj
ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmlzVmVyeVByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzVmVyeVByZXZhbGVudFJl
c291cmNlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsKICAgICAg
ICAgY2FsbGJhY2soaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwog
I2Vsc2UKQEAgLTE5MCw3ICsxOTEsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRB
c1N1YnJlc291cmNlVW5kZXIoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tT
dHJpbmdSZWYgc3VicmVzb3VyY2VIb3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXJGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChzdWJyZXNvdXJjZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJv
b2wgaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNr
XShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikgewogICAgICAgICBjYWxsYmFj
ayhpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIsIGNvbnRleHQpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTIwMSw3ICsyMDIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1
YkZyYW1lVW5kZXIoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgc3ViRnJhbWVIb3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXJG
dW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5p
c1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJG
cmFtZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVI
b3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNT
dWJGcmFtZVVuZGVyKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNSZWdp
c3RlcmVkQXNTdWJGcmFtZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVI
b3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJh
bWVVbmRlcikgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIs
IGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIxMiw3ICsyMTMsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlz
U3RhdGlzdGljc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tLCBXS1N0cmluZ1Jl
ZiBob3N0UmVkaXJlY3RlZFRvLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0
YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGlu
Z1RvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmco
KSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8p
IHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5pc1JlZ2lzdGVyZWRBc1JlZGly
ZWN0aW5nVG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5z
dHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbykgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8sIGNv
bnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIyMyw3ICsyMjQsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNv
bXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgYXV0byYgZGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIGRhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZhbHVlKQogICAgICAgICBkYXRhU3RvcmUubG9nVXNl
ckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CkBAIC0yNDEsNyArMjQyLDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSAogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlSXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uRnVuY3Rpb24gY2FsbGJh
Y2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaGFzSGFkVXNlckludGVy
YWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbikgeworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBo
YXNIYWRVc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSGFkVXNlckludGVy
YWN0aW9uLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yNTIsMTQgKzI1MywxNCBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hhc0hhCiB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0R3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIHZhbHVlLCBbXSB7IH0pOworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldEdyYW5kZmF0aGVyZWQoVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCB2YWx1ZSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZEZ1bmN0aW9uIGNh
bGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhhc0hhZFVzZXJJ
bnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc0dyYW5kZmF0aGVyZWQpIHsKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNH
cmFuZGZhdGhlcmVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzR3JhbmRmYXRoZXJlZCwgY29udGV4
dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMjcwLDQ5ICsyNzEsNDkgQEAgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NHcmFuZAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCkK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9
KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9
KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0KQogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbXSB7IH0pOwor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbXSB7IH0p
OwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKQogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW10geyB9KTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtdIHsg
fSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKQog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSks
IFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0U3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3Ry
aW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0
cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0
ZWRUbykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkp
LCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSks
IFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
KSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkp
LCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJv
bSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0RnJvbShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkp
LCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJp
bmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBmcm9tSG9zdCwgV0tTdHJpbmdSZWYgdG9I
b3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NT
aXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRp
b25Gb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoZnJvbUhvc3QpLT5zdHJpbmco
KSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9Ib3N0KS0+c3RyaW5nKCkpLCBbY29udGV4
dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRDcm9z
c1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGZyb21Ib3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRv
SG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNr
KGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTMyMyw3ICszMjQsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDcm9zCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNh
bGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFRpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNr
XSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0VGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbihTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAg
ICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMzM0LDcgKzMzNSw3
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWUKIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNGdW5jdGlv
biBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVs
ZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoW2NvbnRleHQsIGNhbGxiYWNrXSB7
CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1bGVTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHNQcm9jZXNzaW5nKFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxs
YmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0zNDUsNyArMzQ2LDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vzcwogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Vw
ZGF0ZUNvb2tpZUJsb2NraW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShb
Y29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdKCkgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbnRleHQsIGNvbXBsZXRp
b25IYW5kbGVyXSgpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAg
fSk7CiAjZWxzZQpAQCAtMzU2LDIxICszNTcsMjEgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzVXBkYXRlQwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzU3VibWl0
VGVsZW1ldHJ5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc3VibWl0VGVsZW1ldHJ5KCk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c3VibWl0VGVsZW1ldHJ5KCk7CiAjZW5kaWYKIH0KIAog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJl
Y29yZHNXZXJlU2Nhbm5lZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29s
IHZhbHVlKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUsIFtdIHsgfSk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZCh2YWx1ZSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Rlc3QodmFsdWUsIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KHZhbHVl
LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAg
fSk7CiAjZWxzZQpAQCAtMzgxLDQ5ICszODIsNDkgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzSXNSdQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hv
dWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNv
cmRzUmVtb3ZhbCh2YWx1ZSwgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFs
KHZhbHVlLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZCh2YWx1ZSwgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNl
dE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKHZhbHVlLCBbXSgpIHsgfSk7CiAj
ZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTWluaW11bVRp
bWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIGRvdWJsZSBzZWNvbmRzKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHsgc2Vj
b25kcyB9LCBbXSgpIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0
TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMgeyBzZWNvbmRzIH0s
IFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgZG91YmxlIHNlY29uZHMpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtdKCkgeyB9KTsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vj
b25kcyB7IHNlY29uZHMgfSwgW10oKSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc01heFN0YXRpc3RpY3NFbnRyaWVzKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVkIGVudHJpZXMpCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TWF4U3RhdGlzdGljc0VudHJpZXMoZW50cmllcywgW10o
KSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE1heFN0YXRpc3Rp
Y3NFbnRyaWVzKGVudHJpZXMsIFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcnVuZUVudHJpZXNEb3duVG8oV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgdW5zaWduZWQgZW50cmllcykKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQcnVuZUVudHJpZXNEb3duVG8oZW50cmllcywgW10oKSB7
IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFBydW5lRW50cmllc0Rv
d25UbyhlbnRyaWVzLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZUZ1bmN0aW9uIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6
OlllcywgW2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdlYktpdDo6U2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAg
ICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTQzNCw3ICs0MzUsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZp
ZWRTaW5jZUhvdXJzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVk
IGhvdXJzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vyc0Z1bmN0aW9uIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWU6Om5vdygpIC0gU2Vjb25kczo6ZnJvbUhvdXJz
KGhvdXJzKSwgV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6OlllcywgW2NvbnRl
eHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lOjpub3coKSAtIFNlY29uZHM6
OmZyb21Ib3Vycyhob3VycyksIFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZ
ZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwog
ICAgIH0pOwogI2Vsc2UKQEAgLTQ0NSw3ICs0NDYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NDbGVhckluCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVh
clRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhy
b3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNl
dDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGlt
ZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhj
b250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTQ1Myw3ICs0NTQsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NDbGVhclRoCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NEZWxldGVDb29raWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVz
dGluZ0Z1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgW2NvbnRleHQsIGNhbGxiYWNr
XSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZGVsZXRlQ29va2llc0ZvclRl
c3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBpbmNsdWRl
SHR0cE9ubHlDb29raWVzLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2so
Y29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNDY0LDcgKzQ2NSw3IEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUMKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc0hhc0xvY2FsU3RvcmFnZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0
aXN0aWNzSGFzTG9jYWxTdG9yYWdlRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuaGFzTG9jYWxTdG9yYWdlRm9yVGVzdGluZyhVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9v
bCBoYXNMb2NhbFN0b3JhZ2UpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5o
YXNMb2NhbFN0b3JhZ2VGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhhc0xvY2FsU3RvcmFnZSkgewog
ICAgICAgICBjYWxsYmFjayhoYXNMb2NhbFN0b3JhZ2UsIGNvbnRleHQpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTQ3NSw3ICs0NzYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NI
YXNMb2NhCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNh
cChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcywgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2Fw
RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29uZHMg
fSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29u
ZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwog
ICAgIH0pOwogI2Vsc2UKQEAgLTQ4Niw3ICs0ODcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NDYWNoCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJ
c29sYXRlZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJp
bmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hh
c0lzb2xhdGVkU2Vzc2lvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLmhhc0lzb2xhdGVkU2Vzc2lvbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wg
aGFzSXNvbGF0ZWRTZXNzaW9uKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
aGFzSXNvbGF0ZWRTZXNzaW9uRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNJc29sYXRlZFNlc3Np
b24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSXNvbGF0ZWRTZXNzaW9uLCBjb250ZXh0KTsKICAg
ICB9KTsKICNlbHNlCkBAIC01MDEsNyArNTAyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzUmVzZXRUbwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAg
ICB9KTsKIAotICAgIGF1dG8mIHN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHN0b3JlID0gKldlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZik7CiAgICAgc3RvcmUuY2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzSW5XZWJQ
cm9jZXNzZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVm
KCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0g
eyB9KTsKICAgICBzdG9yZS5yZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9y
VGVzdGluZyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0geyB9KTsKQEAgLTUxNiw3ICs1MTcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NSZXNldFRvCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spCiB7
CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJL
aXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRp
bWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5
KCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAg
ICB9KTsKIH0KQEAgLTUyOCw3ICs1MjksNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92
ZUZldGNoQ2FjaGVGCiAgICAgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFS
ZWNvcmRzID0geyBXVEZNb3ZlKGRhdGFSZWNvcmQpIH07CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpE
T01DYWNoZTsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIGRhdGFSZWNvcmRzLCBbY29udGV4dCwgY2FsbGJh
Y2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFU
eXBlcywgZGF0YVJlY29yZHMsIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFj
ayhjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTUzNiw3ICs1MzcsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92
ZUFsbEluZGV4ZWREYXRhYmFzZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
dm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNl
c0NhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlczsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQs
IGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0
YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7
CiAgICAgaWYgKGNhbGxiYWNrKQogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsK
QEAgLTU0NSw3ICs1NDYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4
ZWRECiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVSZW1vdmVMb2NhbFN0b3JhZ2VDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8
V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFU
eXBlOjpMb2NhbFN0b3JhZ2U7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5
KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0
LCBjYWxsYmFja10gewogICAgICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgICAgICBjYWxsYmFj
ayhjb250ZXh0KTsKICAgICB9KTsKQEAgLTU1NSw3ICs1NTYsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zOwotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRh
dGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdh
bGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJh
Y2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTY2LDcgKzU2Nyw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVcKIAogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVHZXRGZXRjaENhY2hlT3JpZ2lucyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlT3JpZ2luc0Z1
bmN0aW9uIGNhbGxiYWNrKQogewotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNh
Y2hlLCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0YVJlY29yZHMpIHsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6OkRPTUNhY2hlLCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0YVJlY29y
ZHMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2lu
czsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsK
ICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5z
KQpAQCAtNTgwLDcgKzU4MSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNo
ZVNpemUKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBm
ZXRjaE9wdGlvbnMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXpl
czsKIAotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KS5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBmZXRjaE9wdGlv
bnMsIFtvcmlnaW4sIGNvbnRleHQsIGNhbGxiYWNrXSAoYXV0byBkYXRhUmVjb3JkcykgeworICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmZldGNoRGF0YShXZWJLaXQ6OldlYnNpdGVE
YXRhVHlwZTo6RE9NQ2FjaGUsIGZldGNoT3B0aW9ucywgW29yaWdpbiwgY29udGV4dCwgY2FsbGJh
Y2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CiAgICAgICAgIGF1dG8gb3JpZ2luRGF0YSA9IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFdlYktpdDo6dG9JbXBsKG9yaWdp
biktPnN0cmluZygpKS0+ZGF0YSgpOwogICAgICAgICBmb3IgKGF1dG8mIGRhdGFSZWNvcmQgOiBk
YXRhUmVjb3JkcykgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWNvcmRPcmlnaW4g
OiBkYXRhUmVjb3JkLm9yaWdpbnMpIHsKQEAgLTU5NywyMyArNTk4LDIzIEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemUKIAogV0tTdHJpbmdSZWYgV0tXZWJzaXRlRGF0
YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQ
SShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0Nv
cGllZEFQSShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSkK
IHsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShXZWJLaXQ6OnRvSW1wbChzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KS0+c3RyaW5nKCkpOworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkoV2ViS2l0Ojp0b0ltcGwoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSktPnN0
cmluZygpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmlnaW5TdG9yYWdl
UXVvdGEoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdWludDY0X3QgcXVvdGEp
CiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnNldFBlck9yaWdpblN0b3JhZ2VRdW90YShxdW90YSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+c2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKHF1b3RhKTsKIH0KIAogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsbERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbnMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKICNpZiBFTkFCTEUoREVWSUNFX09S
SUVOVEFUSU9OKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRh
U3RvcmUoKS5kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIoKS5jbGVh
clBlcm1pc3Npb25zKCk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZGV2aWNl
T3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKCkuY2xlYXJQZXJtaXNzaW9ucygp
OwogI2VuZGlmCiB9CiAKQEAgLTcxMywxNCArNzE0LDE0IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0V2ViQXV0aGVudGljYXQKICAgICAgICAgY29uZmlndXJhdGlvbi5uZmMgPSBXVEZNb3Zl
KG5mYyk7CiAgICAgfQogCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV1RGTW92
ZShjb25maWd1cmF0aW9uKSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJp
YnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBZENsaWNr
QXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQog
ewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2Vi
S2l0OjpXZWJzaXRlRGF0YVR5cGU6OkFkQ2xpY2tBdHRyaWJ1dGlvbnM7Ci0gICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5
cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHJldmlzaW9uIDI0
OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiV0tXZWJz
aXRlUG9saWNpZXMuaCIKIAogI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJB
UElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgogI2luY2x1ZGUgIldL
RGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV2Vic2l0
ZURhdGFTdG9yZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRl
RGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2Vic2l0ZURh
dGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3VybFByb3h5U2V0dGluZ3MuaD4KICNpbmNs
dWRlIDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5o
PgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRh
U3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShyZXZpc2lvbiAyNDk3MzIpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCShub25leGlzdGVudCkKQEAgLTEsMTk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotCi0j
aW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2luY2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMu
aCIKLSNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLSNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbXBvcnQgPFdlYkNvcmUv
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIEFQSSB7Ci0K
LU5TU3RyaW5nICpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJEYXRhYmFz
ZURpcmVjdG9yeSI7Ci1OU1N0cmluZyAqV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0g
QCJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5IjsKLU5TU3RyaW5n
ICpXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdE1lZGlhQ2Fj
aGVEaXJlY3RvcnkiOwotTlNTdHJpbmcgKldlYktpdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlE
ZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSI7Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KCkKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIC8vIFRoaXMgcXVpcmsgdXNlZCB0
byBtYWtlIHRoZXNlIGFwcHMgc2hhcmUgYXBwbGljYXRpb24gY2FjaGUgc3RvcmFnZSwgYnV0IGRv
ZXNuJ3QgYWNjb21wbGlzaCB0aGF0IGFueSBtb3JlLgotICAgIC8vIFByZXNlcnZpbmcgaXQgYXZv
aWRzIHRoZSBuZWVkIHRvIG1pZ3JhdGUgZGF0YSB3aGVuIHVwZ3JhZGluZy4KLSAgICAvLyBGSVhN
RTogSWRlYWxseSB3ZSBzaG91bGQganVzdCBoYXZlIFNhZmFyaSwgV2ViQXBwLCBhbmQgd2ViYm9v
a21hcmtzZCBjcmVhdGUgYSBkYXRhIHN0b3JlIHdpdGgKLSAgICAvLyB0aGlzIGFwcGxpY2F0aW9u
IGNhY2hlIHBhdGgsIGJ1dCB0aGF0J3Mgbm90IHN1cHBvcnRlZCBhcyBvZiByaWdodCBub3cuCi0g
ICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNv
cmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkFwcCgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9u
Ojppc1dlYkJvb2ttYXJrc0QoKSkgewotICAgICAgICBOU1N0cmluZyAqY2FjaGVQYXRoID0gW05T
SG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkv
Q2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJdOwotCi0gICAgICAgIHJldHVybiBXZWJLaXQ6
OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY2FjaGVQYXRoLnN0cmluZ0J5U3RhbmRh
cmRpemluZ1BhdGgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSIpOwot
fQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGly
ZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIkNhY2hlU3RvcmFnZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSIpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCi17
Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlh
Q2FjaGUiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4ZWREQiIpOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKCJTZXJ2aWNlV29ya2VycyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkxvY2FsU3RvcmFnZSIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJNZWRpYUtleXMiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIldlYlNRTCIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Ci19Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIkphdmFTY3JpcHRDb3JlRGVidWciLCBEb250Q3JlYXRlRGlyZWN0b3J5KTsKLX0KLQot
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRl
RGlyZWN0b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hf
b25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKnRlbXBVUkw7Ci0gICAgCi0gICAg
ZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBOU1VSTCAqdXJsID0gW05TVVJM
IGZpbGVVUkxXaXRoUGF0aDpOU1RlbXBvcmFyeURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107
Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgCi0gICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVy
KCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxl
IG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWJ1bmRsZUlk
ZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJ
bmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKLSAgICAgICAgICAgIHVybCA9IFt1cmwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVT
XTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcFVSTCA9IFtbdXJsIFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOwot
ICAgIH0pOwotICAgIAotICAgIE5TVVJMICp1cmwgPSBbdGVtcFVSTCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOwotCi0gICAgaWYgKHNo
b3VsZENyZWF0ZURpcmVjdG9yeSA9PSBDcmVhdGVEaXJlY3RvcnkKLSAgICAgICAgJiYgKCFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRo
SW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJd
KSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVy
bCk7Ci0gICAgCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbjsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgc3Rh
dGljIE5TVVJMICpjYWNoZVVSTDsKLQotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsK
LSAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gVVJM
Rm9yRGlyZWN0b3J5Ok5TQ2FjaGVzRGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sg
YXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07Ci0gICAg
ICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LQotICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7Ci0gICAgICAg
ICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5i
dW5kbGVJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQotICAg
ICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5m
b10ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107Ci0gICAgICAgIH0K
LQotICAgICAgICBjYWNoZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOwotICAgIH0pOwotCi0gICAgTlNVUkwg
KnVybCA9IFtjYWNoZVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFt
ZSBpc0RpcmVjdG9yeTpZRVNdOwotICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVz
OllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKLSAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7Ci0KLSAgICByZXR1cm4gdXJsLmFi
c29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKndlYnNpdGVEYXRh
VVJMOwotCi0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBOU1VSTCAq
dXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNM
aWJyYXJ5RGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JV
Ukw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07Ci0gICAgICAgIGlmICghdXJsKQot
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgICAgICB1cmwg
PSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6
WUVTXTsKLQotICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7Ci0g
ICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVu
ZGxlXS5idW5kbGVJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVy
KQotICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9j
ZXNzSW5mb10ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107Ci0gICAg
ICAgIH0KLQotICAgICAgICB3ZWJzaXRlRGF0YVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07Ci0gICAg
fSk7Ci0KLSAgICBOU1VSTCAqdXJsID0gW3dlYnNpdGVEYXRhVVJMIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107Ci0gICAgaWYgKCFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRo
SW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJd
KQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJs
KTsKLQotICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50
YXRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsMTcgKzEwNSwxNyBAQCBwcml2
YXRlOgogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilkZWZhdWx0RGF0YVN0b3JlCiB7Ci0gICAg
cmV0dXJuIHdyYXBwZXIoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkp
OworICAgIHJldHVybiB3cmFwcGVyKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERh
dGFTdG9yZSgpKTsKIH0KIAogKyAoV0tXZWJzaXRlRGF0YVN0b3JlICopbm9uUGVyc2lzdGVudERh
dGFTdG9yZQogewotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3Jl
YXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcihXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKSk7CiB9CiAKIC0gKHZvaWQp
ZGVhbGxvYwogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5BUEk6OldlYnNpdGVEYXRhU3RvcmU6
On5XZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPldlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKTsKIAogICAgIFtzdXBlciBkZWFsbG9j
XTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCArIChOU1NldCAqKWFsbFdlYnNpdGVEYXRhVHlwZXMK
IAogLSAoV0tIVFRQQ29va2llU3RvcmUgKilodHRwQ29va2llU3RvcmUKIHsKLSAgICByZXR1cm4g
d3JhcHBlcihfd2Vic2l0ZURhdGFTdG9yZS0+aHR0cENvb2tpZVN0b3JlKCkpOworICAgIHJldHVy
biB3cmFwcGVyKF93ZWJzaXRlRGF0YVN0b3JlLT5jb29raWVTdG9yZSgpKTsKIH0KIAogc3RhdGlj
IFdhbGxUaW1lIHRvU3lzdGVtQ2xvY2tUaW1lKE5TRGF0ZSAqZGF0ZSkKQEAgLTE4Niw3ICsxODYs
NyBAQCAtICh2b2lkKWZldGNoRGF0YVJlY29yZHNPZlR5cGVzOihOU1NldCAqCiAtICh2b2lkKXJl
bW92ZURhdGFPZlR5cGVzOihOU1NldCAqKWRhdGFUeXBlcyBtb2RpZmllZFNpbmNlOihOU0RhdGUg
KilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxl
cgogewogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKTsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnJlbW92ZURhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwgdG9TeXN0
ZW1DbG9ja1RpbWUoZGF0ZSA/IGRhdGUgOiBbTlNEYXRlIGRpc3RhbnRQYXN0XSksIFtjb21wbGV0
aW9uSGFuZGxlckNvcHldIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+cmVtb3ZlRGF0YShXZWJL
aXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCB0b1N5c3RlbUNsb2NrVGltZShkYXRl
ID8gZGF0ZSA6IFtOU0RhdGUgZGlzdGFudFBhc3RdKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0g
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkoKTsKICAgICB9KTsKIH0KQEAgLTIwNSw3
ICsyMDUsNyBAQCAtICh2b2lkKXJlbW92ZURhdGFPZlR5cGVzOihOU1NldCAqKWRhdGFUCiB7CiAg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpOwogCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1v
dmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIHRvV2Vic2l0ZURh
dGFSZWNvcmRzKGRhdGFSZWNvcmRzKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0geworICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT5yZW1vdmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRh
dGFUeXBlcyksIHRvV2Vic2l0ZURhdGFSZWNvcmRzKGRhdGFSZWNvcmRzKSwgW2NvbXBsZXRpb25I
YW5kbGVyQ29weV0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkoKTsKICAgICB9KTsK
IH0KQEAgLTI0MCwxMiArMjQwLDEyIEBAICsgKE5TU2V0PE5TU3RyaW5nICo+ICopX2FsbFdlYnNp
dGVEYXRhVHkKIAogKyAoQk9PTClfZGVmYXVsdERhdGFTdG9yZUV4aXN0cwogewotICAgIHJldHVy
biBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCk7
CiB9CiAKICsgKHZvaWQpX2RlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nCiB7Ci0gICAg
cmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRl
c3RpbmcoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVEZWZh
dWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwogfQogCiAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRo
Q29uZmlndXJhdGlvbjooX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKiljb25maWd1
cmF0aW9uCkBAIC0yNTMsNyArMjUzLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZp
Z3VyYXRpb246KAogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgYXV0byBjb25maWcgPSBjb25maWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKSA6
IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOworICAgIGF1
dG8gY29uZmlnID0gY29uZmlndXJhdGlvbi5pc1BlcnNpc3RlbnQgPyBXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkgOiBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKIAogICAgIFJFTEVBU0VfQVNTRVJU
KGNvbmZpZy0+aXNQZXJzaXN0ZW50KCkgPT0gY29uZmlndXJhdGlvbi5pc1BlcnNpc3RlbnQpOwog
CkBAIC0zMTIsNyArMzEyLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRp
b246KAogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBjb25maWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/
IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZVBlcnNpc3RlbnRTZXNzaW9uSUQoKSA6IFBBTDo6U2Vz
c2lvbklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25JRCgpOwogCi0gICAgQVBJOjpPYmplY3Q6
OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OldlYnNpdGVEYXRhU3RvcmU+KHNlbGYsIFdURk1vdmUo
Y29uZmlnKSwgc2Vzc2lvbklEKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVy
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4oc2VsZiwgV1RGTW92ZShjb25maWcpLCBzZXNzaW9u
SUQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0zMjUsNyArMzI1LDcgQEAgLSAodm9pZClf
ZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0PAogICAgIGlmIChvcHRpb25zICYgX1dLV2Vi
c2l0ZURhdGFTdG9yZUZldGNoT3B0aW9uQ29tcHV0ZVNpemVzKQogICAgICAgICBmZXRjaE9wdGlv
bnMuYWRkKFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKTsKIAot
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZmV0Y2hEYXRhKFdlYktp
dDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIGZldGNoT3B0aW9ucywgW2NvbXBsZXRp
b25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXJDb3B5KV0oYXV0byB3ZWJz
aXRlRGF0YVJlY29yZHMpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+ZmV0Y2hEYXRhKFdlYktp
dDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIGZldGNoT3B0aW9ucywgW2NvbXBsZXRp
b25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXJDb3B5KV0oYXV0byB3ZWJz
aXRlRGF0YVJlY29yZHMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGVs
ZW1lbnRzOwogICAgICAgICBlbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHdlYnNpdGVE
YXRhUmVjb3Jkcy5zaXplKCkpOwogCkBAIC0zMzgsMTggKzMzOCwxOCBAQCAtICh2b2lkKV9mZXRj
aERhdGFSZWNvcmRzT2ZUeXBlczooTlNTZXQ8CiAKIC0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gX3dl
YnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7CiB9CiAKIC0g
KHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKIHsK
LSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKIH0KIAogLSAoQk9PTClfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOworICAgIHJldHVybiBfd2Vi
c2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOwogI2Vsc2UK
ICAgICByZXR1cm4gTk87CiAjZW5kaWYKQEAgLTM1OCw3ICszNTgsNyBAQCAtIChCT09MKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlCiAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGVidWdNb2RlOihCT09MKWVuYWJsZWQKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGVkKTsKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGVkKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBAIC0zNjYsMTA2ICsz
NjYsMTA2IEBAIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z00KIAogLSAo
TlNVSW50ZWdlcilfcGVyT3JpZ2luU3RvcmFnZVF1b3RhCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRl
RGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7Cisg
ICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5wZXJPcmlnaW5TdG9yYWdlUXVvdGEoKTsKIH0K
IAogLSAodm9pZClfc2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhOihOU1VJbnRlZ2VyKXNpemUKIHsK
LSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFBlck9yaWdpblN0
b3JhZ2VRdW90YShzaXplKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UGVyT3JpZ2luU3Rv
cmFnZVF1b3RhKHNpemUpOwogfQogCiAtIChOU1N0cmluZyAqKV9jYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5j
YWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmNh
Y2hlU3RvcmFnZURpcmVjdG9yeSgpOwogfQogCiAtICh2b2lkKV9zZXRDYWNoZVN0b3JhZ2VEaXJl
Y3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAg
ICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7
CiB9CiAKIC0gKE5TU3RyaW5nICopX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkK
IHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0
YVN0b3JlLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CiB9CiAKIC0gKHZv
aWQpX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6KE5TU3RyaW5nICopZGly
ZWN0b3J5CiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgX3dlYnNp
dGVEYXRhU3RvcmUtPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoZGlyZWN0
b3J5KTsKIH0KIAogLSAodm9pZClfc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOihOU1N0cmlu
ZyAqKWlkZW50aWZpZXIKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKGlkZW50aWZpZXIpOwogfQog
CiAtIChOU1N0cmluZyAqKV9ib3VuZEludGVyZmFjZUlkZW50aWZpZXIKIHsKLSAgICByZXR1cm4g
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5ib3VuZEludGVyZmFjZUlkZW50
aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmJvdW5kSW50ZXJmYWNlSWRl
bnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRBbGxvd3NDZWxsdWxhckFjY2VzczooQk9PTClh
bGxvd3MKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEFs
bG93c0NlbGx1bGFyQWNjZXNzKGFsbG93cyA/IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6
OlllcyA6IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6Ok5vKTsKKyAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+c2V0QWxsb3dzQ2VsbHVsYXJBY2Nlc3MoYWxsb3dzID8gV2ViS2l0OjpBbGxvd3ND
ZWxsdWxhckFjY2Vzczo6WWVzIDogV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6Tm8pOwog
fQogCiAtIChCT09MKV9hbGxvd3NDZWxsdWxhckFjY2VzcwogewotICAgIHJldHVybiBfd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmFsbG93c0NlbGx1bGFyQWNjZXNzKCkgPT0g
V2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzOworICAgIHJldHVybiBfd2Vic2l0ZURh
dGFTdG9yZS0+YWxsb3dzQ2VsbHVsYXJBY2Nlc3MoKSA9PSBXZWJLaXQ6OkFsbG93c0NlbGx1bGFy
QWNjZXNzOjpZZXM7CiB9CiAKIC0gKHZvaWQpX3NldFByb3h5Q29uZmlndXJhdGlvbjooTlNEaWN0
aW9uYXJ5ICopY29uZmlndXJhdGlvbgogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuc2V0UHJveHlDb25maWd1cmF0aW9uKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlS
ZWYpY29uZmlndXJhdGlvbik7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFByb3h5Q29uZmln
dXJhdGlvbigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNvbmZpZ3VyYXRpb24pOwogfQogCiAt
IChOU1N0cmluZyAqKV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIKIHsKLSAgICBy
ZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnNv
dXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRTb3Vy
Y2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcgogewot
ICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTb3VyY2VB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgaWYgKCFfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGlkZW50aWZp
ZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1h
dDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgY2Fubm90IGJlIGNhbGxl
ZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJdOwogfQogCiAtIChOU1N0cmluZyAqKV9zb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVE
YXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlk
ZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnNvdXJjZUFwcGxpY2F0
aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRTb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcgogewotICAgIGlm
ICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgaWYgKCFfd2Vic2l0ZURh
dGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKGlkZW50aWZp
ZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1h
dDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgY2Fubm90IGJlIGNh
bGxlZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJdOwogfQogCiAtICh2b2lkKV9zZXRBbGxv
d3NUTFNGYWxsYmFjazooQk9PTClhbGxvd3MKIHsKLSAgICBpZiAoIV93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0QWxsb3dzVExTRmFsbGJhY2soYWxsb3dzKSkKKyAgICBp
ZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRBbGxvd3NUTFNGYWxsYmFjayhhbGxvd3MpKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1hdDpAIl9zZXRB
bGxvd3NUTFNGYWxsYmFjayBjYW5ub3QgYmUgY2FsbGVkIGFmdGVyIG5ldHdvcmtpbmcgaGFzIGJl
Z3VuIl07CiB9CiAKIC0gKEJPT0wpX2FsbG93c1RMU0ZhbGxiYWNrCiB7Ci0gICAgcmV0dXJuIF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJhY2soKTsK
KyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmFsbG93c1RMU0ZhbGxiYWNrKCk7CiB9CiAK
IC0gKE5TRGljdGlvbmFyeSAqKV9wcm94eUNvbmZpZ3VyYXRpb24KIHsKLSAgICByZXR1cm4gKF9f
YnJpZGdlIE5TRGljdGlvbmFyeSAqKV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucHJveHlDb25maWd1cmF0aW9uKCk7CisgICAgcmV0dXJuIChfX2JyaWRnZSBOU0RpY3Rpb25h
cnkgKilfd2Vic2l0ZURhdGFTdG9yZS0+cHJveHlDb25maWd1cmF0aW9uKCk7CiB9CiAKIC0gKE5T
VVJMICopX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5CiB7Ci0gICAgcmV0dXJuIFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6X3dlYnNpdGVEYXRhU3RvcmUtPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpfd2Vic2l0ZURhdGFTdG9yZS0+Y29uZmlndXJhdGlvbigpLmluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAogLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NldFNob3VsZFN1Ym1pdFRlbGVtZXRyeTooQk9PTCl2YWx1ZQogewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAg
ICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCk7CiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00ODAsMTMgKzQ4MCwx
MyBAQCAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChjYWxsYmFjaykgewotICAgICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soW2NhbGxiYWNr
ID0gbWFrZUJsb2NrUHRyKGNhbGxiYWNrKSwgc2VsZl0oY29uc3QgU3RyaW5nJiBldmVudCkgewor
ICAgICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhb
Y2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoY2FsbGJhY2spLCBzZWxmXShjb25zdCBTdHJpbmcmIGV2
ZW50KSB7CiAgICAgICAgICAgICBjYWxsYmFjayhzZWxmLCBldmVudCk7CiAgICAgICAgIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKG51bGxwdHIpOworICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT5zZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKG51bGxwdHIpOwog
I2VuZGlmCiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNj
ZXNzRW50cmllc0ZvcjooCiAgICAgfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKHdlYlBhZ2VQcm94eS0+aWRlbnRpZmllcigpLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGRvbWFpbnMp
IHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMod2Vi
UGFnZVByb3h5LT5pZGVudGlmaWVyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZG9tYWlucykgewogICAgICAgICBWZWN0b3I8UmVm
UHRyPEFQSTo6T2JqZWN0Pj4gYXBpRG9tYWluczsKICAgICAgICAgYXBpRG9tYWlucy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGRvbWFpbnMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBkb21h
aW4gOiBkb21haW5zKQpAQCAtNTI0LDcgKzUyNCw3IEBAIC0gKHZvaWQpX2dldEFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzRm9yOigKIC0gKHZvaWQpX3NjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGU6
KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUt
PnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTM1LDcgKzUzNSw3IEBAIC0gKHZvaWQpX3NjaGVkdWxl
Q29va2llQmxvY2tpbmdVcGRhdGU6KHYKIC0gKHZvaWQpX3NldFByZXZhbGVudERvbWFpbjooTlNV
UkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25I
YW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFByZXZhbGVudFJlc291cmNlKFVS
TChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UHJldmFsZW50UmVzb3VyY2Uo
VVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTU0Niw3ICs1NDYsNyBAQCAtICh2b2lkKV9zZXRQcmV2YWxlbnREb21haW46KE5TVVJM
ICopZG9tCiAtICh2b2lkKV9nZXRJc1ByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb21haW4gY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZW5h
YmxlZCkgeworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChk
b21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXShib29sIGVuYWJsZWQpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW5hYmxlZCk7
CiAgICAgfSk7CiAjZWxzZQpAQCAtNTU3LDcgKzU1Nyw3IEBAIC0gKHZvaWQpX2dldElzUHJldmFs
ZW50RG9tYWluOihOU1VSTCAqKWQKIC0gKHZvaWQpX2NsZWFyUHJldmFsZW50RG9tYWluOihOU1VS
TCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhh
bmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShV
UkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3Vy
Y2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwog
I2Vsc2UKQEAgLTU2OCw3ICs1NjgsNyBAQCAtICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbjoo
TlNVUkwgKilkCiAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOih2b2lk
ICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5z
Y2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVE
YXRhU3RvcmUtPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhbY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKICNlbHNlCkBAIC01NzgsMTggKzU3
OCwxOCBAQCAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzCiAKIC0gKGJv
b2wpX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyCiB7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMoV2ViQ29yZTo6c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGFiYXNlRmls
ZW5hbWUoX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhXZWJDb3JlOjpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShf
d2Vic2l0ZURhdGFTdG9yZS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7
CiB9CiAKIC0gKGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+KV9kZWxlZ2F0ZQogewot
ICAgIHJldHVybiBfZGVsZWdhdGUuZ2V0KCk7CisgICAgcmV0dXJuIF9kZWxlZ2F0ZS5nZXQoKS5n
ZXQoKTsKIH0KIAogLSAodm9pZClzZXRfZGVsZWdhdGU6KGlkIDxfV0tXZWJzaXRlRGF0YVN0b3Jl
RGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgX3dl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRDbGllbnQobWFrZVVuaXF1ZVJl
ZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PihkZWxlZ2F0ZSkpOworICAgIF93ZWJzaXRlRGF0YVN0
b3JlLT5zZXRDbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PihkZWxl
Z2F0ZSkpOwogfQogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEyICsyNSwxMyBA
QAogCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgiCiAKLSNpbXBvcnQgIkFQ
SVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0ICJXZWJz
aXRlRGF0YVN0b3JlLmgiCisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpXZWJzaXRl
RGF0YVN0b3JlPiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPFdlYnNpdGVEYXRh
U3RvcmU+IHsKICAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBXS1dlYnNpdGVEYXRhU3RvcmU7CiB9
OwogCkBAIC0zOCw3ICszOSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJ
OjpXZWIKIAogQGludGVyZmFjZSBXS1dlYnNpdGVEYXRhU3RvcmUgKCkgPFdLT2JqZWN0PiB7CiBA
cGFja2FnZQotICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OldlYnNpdGVEYXRhU3RvcmU+IF93
ZWJzaXRlRGF0YVN0b3JlOwotICAgIFJldGFpblB0cjxpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURl
bGVnYXRlPiA+IF9kZWxlZ2F0ZTsKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8V2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlPiBfd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBXZWFrT2JqQ1B0cjxpZCA8X1dL
V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsKIH0KIEBlbmQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJz
aXRlRGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgSWdh
bGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFQSVdl
YnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVk
ZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgotCi0jaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBC
QVNFX0RJUkVDVE9SWSAid2Via2l0Z3RrIgotI2VsaWYgUExBVEZPUk0oV1BFKQotI2RlZmluZSBC
QVNFX0RJUkVDVE9SWSAid3BlIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBBUEkgewotCi1XVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
Ci17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJB
U0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJhcHBsaWNhdGlvbnMiKTsKLX0KLQotLy8g
RklYTUU6IFRoZSBvdGhlciBkaXJlY3RvcmllcyBpbiB0aGlzIGZpbGUgYXJlIHNoYXJlZCBiZXR3
ZWVuIGFsbCBhcHBsaWNhdGlvbnMgdXNpbmcgV2ViS2l0R1RLLgotLy8gV2h5IGlzIG9ubHkgdGhp
cyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24/Ci1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkK
LXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hlIikp
OwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdl
RGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIkNh
Y2hlU3RvcmFnZSIpKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQ
QVJBVE9SX1MgImRhdGFiYXNlcyIgR19ESVJfU0VQQVJBVE9SX1MgImluZGV4ZWRkYiIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJz
ZXJ2aWNld29ya2VycyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJB
VE9SX1MgImxvY2Fsc3RvcmFnZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdf
RElSX1NFUEFSQVRPUl9TICJtZWRpYWtleXMiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJ
UkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGV2aWNlaWRoYXNoc2FsdHMiKTsKLX0KLQotV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpCi17
Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkK
LXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNo
ZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBX
VEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxMiArMjAsMTIgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIu
aCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJLaXRD
b29raWVNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2Vic2l0ZURhdGFQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5o
IgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxnbGliL2dpMThuLWxp
Yi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw2IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVX
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJ
V2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAJKG5vbmV4aXN0
ZW50KQpAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50
ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0KLSNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgotCi1uYW1lc3BhY2UgQVBJIHsKLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOwotfQotCi1TdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkNhY2hlU3RvcmFnZSIpOwotfQot
Ci1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgp
Ci17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdvcmtDYWNo
ZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiSW5kZXhlZERCIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlNlcnZpY2VXb3JrZXJzIik7Ci19Ci0KLVN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7Ci19Ci0KLVN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
Ci17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3Rv
cmFnZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiV2ViU1FMIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKSwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKLX0KLQotU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNTgsNyArMTM1OCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNp
bmdsZUNvb2sKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RF
VEFJTFMoTWlzc2luZ1BhcmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ2h0dHBPbmx5JyB3YXMgbm90
IGZvdW5kLiIpOwogCiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0g
bV9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAg
Y29va2llTWFuYWdlci0+c2V0Q29va2llcyhwYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lv
bklEKCksIHsgY29va2llIH0sIFtjYWxsYmFjayA9IGNhbGxiYWNrLmNvcHlSZWYoKV0oQ2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMocGFn
ZS0+c2Vzc2lvbklEKCksIHsgY29va2llIH0sIFtjYWxsYmFjayA9IGNhbGxiYWNrLmNvcHlSZWYo
KV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBpZiAoZXJyb3IgPT0gQ2Fs
bGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2Vz
cygpOwogICAgICAgICBlbHNlCkBAIC0xMzc4LDcgKzEzNzgsNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpkZWxldGVBbGxDb29rCiAgICAgU3RyaW5nIGhvc3QgPSBhY3RpdmVVUkwuaG9z
dCgpLnRvU3RyaW5nKCk7CiAKICAgICBXZWJDb29raWVNYW5hZ2VyUHJveHkqIGNvb2tpZU1hbmFn
ZXIgPSBtX3Byb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsK
LSAgICBjb29raWVNYW5hZ2VyLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKHBhZ2UtPndlYnNp
dGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwgeyBob3N0LCBkb21haW5CeUFkZGluZ0RvdFByZWZp
eElmTmVlZGVkKGhvc3QpIH0pOworICAgIGNvb2tpZU1hbmFnZXItPmRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZXMocGFnZS0+c2Vzc2lvbklEKCksIHsgaG9zdCwgZG9tYWluQnlBZGRpbmdEb3RQcmVm
aXhJZk5lZWRlZChob3N0KSB9KTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0
U2Vzc2lvblBlcm1pc3Npb25zKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6U2Vzc2lvblBlcm1pc3Npb25EYXRhPj4mIG91
dF9wZXJtaXNzaW9ucykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUubW0JKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsNiBAQAogI2ltcG9ydCAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIkFQ
SVN0cmluZy5oIgogI2ltcG9ydCAiQVBJVVJMLmgiCi0jaW1wb3J0ICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAj
aW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EuaCIKICNpbXBv
cnQgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgpAQCAtNjQsNiArNjMsNyBAQAog
I2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNp
bXBvcnQgIldlYlByb3RlY3Rpb25TcGFjZS5oIgorI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5o
IgogI2ltcG9ydCAiX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQg
Il9XS0Vycm9yUmVjb3ZlcnlBdHRlbXB0aW5nLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUlu
dGVybmFsLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29ya1By
b2Nlc3NQcm94eQogICAgIGNvbm5lY3QoKTsKIAogICAgIGlmIChhdXRvKiB3ZWJzaXRlRGF0YVN0
b3JlID0gbV9wcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAgICAgIG1fd2Vic2l0
ZURhdGFTdG9yZXMuc2V0KHdlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNz
aW9uSUQoKSwgbWFrZVJlZih3ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkpKTsK
KyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3Jlcy5zZXQod2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lv
bklEKCksIG1ha2VSZWYoKndlYnNpdGVEYXRhU3RvcmUpKTsKIH0KIAogTmV0d29ya1Byb2Nlc3NQ
cm94eTo6fk5ldHdvcmtQcm9jZXNzUHJveHkoKQpAQCAtMTEzNCwxNCArMTEzNCwxNCBAQCBXZWJz
aXRlRGF0YVN0b3JlKiBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp3CiAgICAgICAgIHJldHVybiBpdGVy
YXRvci0+dmFsdWUuZ2V0KCk7CiAKICAgICBpZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IG1f
cHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFTdG9yZSgpKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uSUQg
PT0gd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKQotICAg
ICAgICAgICAgcmV0dXJuICZ3ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCk7Cisg
ICAgICAgIGlmIChzZXNzaW9uSUQgPT0gd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpCisg
ICAgICAgICAgICByZXR1cm4gd2Vic2l0ZURhdGFTdG9yZTsKICAgICB9CiAKICAgICBpZiAoc2Vz
c2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuICZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHREYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIHJldHVybiBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6cmV0cmlldmVDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFQSVdlYnNp
dGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzUHJveHkuaCIKICNpZiBF
TkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogI2luY2x1ZGUgIkxlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCkBAIC0zNiw2ICszNSw3IEBACiAjaW5jbHVkZSAi
UHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzU2l0ZU5h
dmlnYXRpb25EYXRhVHJhbnNmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9t
YWluLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNSArMjYsMTYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKKyNpbmNsdWRlICJB
UElIVFRQQ29va2llU3RvcmUuaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uaCIKICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVJlY29yZC5oIgotI2luY2x1ZGUgIkFQSVdl
YnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIkRldmljZUlkSGFzaFNhbHRTdG9yYWdlLmgiCiAjaW5jbHVkZSAiTW9ja0F1dGhlbnRp
Y2F0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VB
Y2Nlc3NTdGF0dXMuaCIKKyNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDYWNoZS5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtMTM5LDYgKzE0MCw1OCBAQCBXZWJzaXRlRGF0YVN0
b3JlOjpXZWJzaXRlRGF0YVN0b3JlKFBBTDo6CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKIH0KIAorc3RhdGljIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiYgZ2xvYmFsRGVmYXVsdERh
dGFTdG9yZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxXZWJzaXRlRGF0
YVN0b3JlPj4gZ2xvYmFsRGVmYXVsdERhdGFTdG9yZTsKKyAgICByZXR1cm4gZ2xvYmFsRGVmYXVs
dERhdGFTdG9yZS5nZXQoKTsKK30KKworUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKQoreworICAgIEluaXRpYWxpemVXZWJLaXQyKCk7CisK
KyAgICBhdXRvJiBzdG9yZSA9IGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIXN0
b3JlKQorICAgICAgICBzdG9yZSA9IGFkb3B0UmVmKG5ldyBXZWJzaXRlRGF0YVN0b3JlKGRlZmF1
bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCkpKTsKKworICAgIHJldHVybiAqc3RvcmU7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcoKQoreworICAgIGdsb2JhbERlZmF1
bHREYXRhU3RvcmUoKSA9IG51bGxwdHI7Cit9CisKK2Jvb2wgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZUV4aXN0cygpCit7CisgICAgcmV0dXJuICEhZ2xvYmFsRGVmYXVsdERhdGFT
dG9yZSgpOworfQorCitSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4g
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQoreworICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVh
dGUoKTsKKworICAgIGNvbmZpZ3VyYXRpb24tPnNldFBlcnNpc3RlbnQodHJ1ZSk7CisKKyAgICBj
b25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9u
Q2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkZpbGVzIik7CisgICAgY29uZmlndXJhdGlv
bi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3Rvcnko
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1bHRO
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFDYWNo
ZURpcmVjdG9yeShkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKTsKKworICAgIGNvbmZpZ3Vy
YXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGRl
ZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRM
b2NhbFN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAg
ICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KGRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CisK
KyAgICBjb25maWd1cmF0aW9uLT5zZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShk
ZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSk7CisKKyAgICByZXR1cm4g
Y29uZmlndXJhdGlvbjsKK30KKwogV2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUo
KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC0xNzI4LDcgKzE3ODEsNyBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc2V0Q2FjaGVNYXhBZ2VDCiBib29sIFdlYnNpdGVE
YXRhU3RvcmU6OmlzQXNzb2NpYXRlZFByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNz
UG9vbCkgY29uc3QKIHsKICAgICBpZiAoYXV0byogcHJvY2Vzc1Bvb2xEYXRhU3RvcmUgPSBwcm9j
ZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAgICAgIHJldHVybiAmcHJvY2Vzc1Bvb2xE
YXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKSA9PSB0aGlzOworICAgICAgICByZXR1cm4gcHJv
Y2Vzc1Bvb2xEYXRhU3RvcmUgPT0gdGhpczsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE3
NTQsNyArMTgwNyw3IEBAIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gV2Vic2l0ZUQK
ICAgICB9CiAKICAgICBpZiAocHJvY2Vzc1Bvb2xzLmlzRW1wdHkoKSAmJiBjb3VudCAmJiBlbnN1
cmVBUG9vbEV4aXN0cykgewotICAgICAgICBhdXRvIHByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKG1fY29uZmlndXJhdGlvbikpOworICAgICAgICBhdXRv
IHByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjo6Y3JlYXRlKCkpOwogICAgICAgICBwcm9jZXNzUG9vbHMuYWRkKHByb2Nlc3NQ
b29sLnB0cigpKTsKICAgICB9CiAKQEAgLTIwMDEsNiArMjA1NCwyOCBAQCB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OmFkZFNlY0tleVByb3h5U3RvCiB9CiAjZW5kaWYKIAorI2lmICFQTEFURk9STShD
T0NPQSkKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzY5IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU2MzcwCisgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Cit9CisKK1dU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkRpcmVjdG9yeSgpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICByZXR1cm4gV1RG
OjpTdHJpbmcoKTsKK30KKyNlbmRpZgorCisjaWYgIVVTRShHTElCKQorV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgp
Cit7CisgICAgLy8gTm90IGltcGxlbWVudGVkLgorICAgIHJldHVybiBXVEY6OlN0cmluZygpOwor
fQorI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpzZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMSArOTIsMTkgQEAgZW51
bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0U3RhdHVzOwogc3RydWN0IFBsdWdpbk1vZHVsZUlu
Zm87CiAjZW5kaWYKIAotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMgSWRlbnRpZmllZDxXZWJzaXRlRGF0YVN0b3JlPiwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFdlYnNpdGVEYXRhU3RvcmU+ICB7CitjbGFzcyBXZWJzaXRl
RGF0YVN0b3JlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6V2Vi
c2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBJZGVudGlmaWVkPFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8V2Vic2l0ZURhdGFTdG9yZT4gIHsKIHB1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCk7CisgICAgc3RhdGljIHZvaWQgZGVsZXRlRGVm
YXVsdERhdGFTdG9yZUZvclRlc3RpbmcoKTsKKyAgICBzdGF0aWMgUmVmPFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7
CisKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnQo
KTsKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZShSZWY8V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYsIFBBTDo6U2Vzc2lvbklEKTsKLSAgICB2aXJ0dWFsIH5X
ZWJzaXRlRGF0YVN0b3JlKCk7CisKKyAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFBBTDo6
U2Vzc2lvbklEKTsKKyAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIH5XZWJzaXRlRGF0
YVN0b3JlKCk7CiAKICAgICBzdGF0aWMgV2Vic2l0ZURhdGFTdG9yZSogZXhpc3RpbmdOb25EZWZh
dWx0RGF0YVN0b3JlRm9yU2Vzc2lvbklEKFBBTDo6U2Vzc2lvbklEKTsKIApAQCAtMjY1LDEwICsy
NzMsMTEgQEAgcHVibGljOgogICAgIFNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yJiBzb0F1dGhv
cml6YXRpb25Db29yZGluYXRvcigpIHsgcmV0dXJuIG1fc29BdXRob3JpemF0aW9uQ29vcmRpbmF0
b3IuZ2V0KCk7IH0KICNlbmRpZgogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRh
U3RvcmUoUEFMOjpTZXNzaW9uSUQpOwotICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUmVm
PFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7CisgICAg
c3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKTsKIAorcHJpdmF0ZToKICAgICB2b2lkIGZldGNoRGF0YUFuZEFwcGx5KE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlv
bj4sIFJlZlB0cjxXb3JrUXVldWU+JiYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRh
UmVjb3JkPik+JiYgYXBwbHkpOwogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAg
LTI3OSw2ICsyODgsMjYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtU2V0TmV0d29ya1Bh
cmFtZXRlcnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKTsKICNlbmRpZgogCisgICAgc3Rh
dGljIFdURjo6U3RyaW5nIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CisgICAg
c3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBz
dGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOworICAgIHN0
YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOworICAgIHN0YXRp
YyBXVEY6OlN0cmluZyBkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKKyAgICBz
dGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAg
ICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKTsKKyNpZiBVU0UoR0xJQikKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEhT
VFNEaXJlY3RvcnkoKTsKKyNlbmRpZgorICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SmF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKKworICAgIFdlYnNpdGVEYXRhU3RvcmUo
KTsKKworICAgIGVudW0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0b3J5LCBE
b250Q3JlYXRlRGlyZWN0b3J5IH07CisgICAgc3RhdGljIFdURjo6U3RyaW5nIHRlbXBEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5h
bWUsIFNob3VsZENyZWF0ZURpcmVjdG9yeSA9IENyZWF0ZURpcmVjdG9yeSk7CisgICAgc3RhdGlj
IFdURjo6U3RyaW5nIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJp
bmcmIGRpcmVjdG9yeU5hbWUpOworICAgIAogICAgIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQ
b29sPj4gcHJvY2Vzc1Bvb2xzKHNpemVfdCBjb3VudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCksIGJvb2wgZW5zdXJlQVBvb2xFeGlzdHMgPSB0cnVlKSBjb25zdDsKIAogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgogCi0jaW5jbHVkZSAiQVBJ
V2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCi0gICAgOiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSgpKQorICAgIDogbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KCkpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHJl
dmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiAjaW1wb3J0ICJDb29raWVTdG9y
YWdlVXRpbHNDRi5oIgorI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiU3Rv
cmFnZU1hbmFnZXIuaCIKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
IgogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKQEAgLTIzMCw0ICsyMzEs
MTYxIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1SZW1vdmVSZWMKICAgICBXZWJD
b3JlOjpyZW1vdmVSZWNlbnRseU1vZGlmaWVkUmVjZW50U2VhcmNoZXMob2xkZXN0VGltZVRvUmVt
b3ZlKTsKIH0KIAorTlNTdHJpbmcgKldlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBA
IldlYkRhdGFiYXNlRGlyZWN0b3J5IjsKK05TU3RyaW5nICpXZWJTdG9yYWdlRGlyZWN0b3J5RGVm
YXVsdHNLZXkgPSBAIldlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VLZXki
OworTlNTdHJpbmcgKldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2Vi
S2l0TWVkaWFDYWNoZURpcmVjdG9yeSI7CitOU1N0cmluZyAqV2ViS2l0TWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
IjsKKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gVGhpcyBx
dWlyayB1c2VkIHRvIG1ha2UgdGhlc2UgYXBwcyBzaGFyZSBhcHBsaWNhdGlvbiBjYWNoZSBzdG9y
YWdlLCBidXQgZG9lc24ndCBhY2NvbXBsaXNoIHRoYXQgYW55IG1vcmUuCisgICAgLy8gUHJlc2Vy
dmluZyBpdCBhdm9pZHMgdGhlIG5lZWQgdG8gbWlncmF0ZSBkYXRhIHdoZW4gdXBncmFkaW5nLgor
ICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlIHNob3VsZCBqdXN0IGhhdmUgU2FmYXJpLCBXZWJBcHAs
IGFuZCB3ZWJib29rbWFya3NkIGNyZWF0ZSBhIGRhdGEgc3RvcmUgd2l0aAorICAgIC8vIHRoaXMg
YXBwbGljYXRpb24gY2FjaGUgcGF0aCwgYnV0IHRoYXQncyBub3Qgc3VwcG9ydGVkIGFzIG9mIHJp
Z2h0IG5vdy4KKyAgICBpZiAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJp
KCkgfHwgV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViQXBwKCkgfHwgV2ViQ29yZTo6SU9T
QXBwbGljYXRpb246OmlzV2ViQm9va21hcmtzRCgpKSB7CisgICAgICAgIE5TU3RyaW5nICpjYWNo
ZVBhdGggPSBbTlNIb21lRGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiTGlicmFyeS9DYWNoZXMvY29tLmFwcGxlLldlYkFwcENhY2hlIl07CisKKyAgICAgICAgcmV0
dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChjYWNoZVBhdGguc3Ry
aW5nQnlTdGFuZGFyZGl6aW5nUGF0aCk7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gY2Fj
aGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk9mZmxpbmVXZWJBcHBsaWNhdGlv
bkNhY2hlIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbigiQ2FjaGVTdG9yYWdlIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVy
biBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTmV0d29ya0NhY2hlIik7
Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbigiTWVkaWFDYWNoZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRl
RGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSW5kZXhlZERCIik7Cit9CisK
K1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oIlNlcnZpY2VXb3JrZXJzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVy
biB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTG9jYWxTdG9y
YWdlIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhS2V5cyIpOworfQorCitXVEY6OlN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAg
IHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiV2Vi
U1FMIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsK
K30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbigiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIERvbnRDcmVhdGVEaXJlY3Rv
cnkpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBT
aG91bGRDcmVhdGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQoreworICAgIHN0YXRp
YyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBOU1VSTCAqdGVtcFVSTDsK
KyAgICAKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIE5TVVJMICp1
cmwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOk5TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgaXNEaXJl
Y3Rvcnk6WUVTXTsKKyAgICAgICAgaWYgKCF1cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NI
YXNDb250YWluZXIoKSkgeworICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIg
PSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKKyAgICAgICAgICAgIGlm
ICghYnVuZGxlSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVyID0g
W05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOworICAgICAgICAgICAgdXJs
ID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBpc0Rp
cmVjdG9yeTpZRVNdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0ZW1wVVJMID0gW1t1
cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNd
IHJldGFpbl07CisgICAgfSk7CisgICAgCisgICAgTlNVUkwgKnVybCA9IFt0ZW1wVVJMIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisK
KyAgICBpZiAoc2hvdWxkQ3JlYXRlRGlyZWN0b3J5ID09IENyZWF0ZURpcmVjdG9yeQorICAgICAg
ICAmJiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRV
Ukw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJy
b3I6bnVsbHB0cl0pKQorICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0
b3J5ICVAIiwgdXJsKTsKKyAgICAKKyAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmlu
ZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tl
bjsKKyAgICBzdGF0aWMgTlNVUkwgKmNhY2hlVVJMOworCisgICAgZGlzcGF0Y2hfb25jZSgmb25j
ZVRva2VuLCBeeworICAgICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNDYWNoZXNEaXJlY3RvcnkgaW5Eb21haW46TlNVc2Vy
RG9tYWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxs
cHRyXTsKKyAgICAgICAgaWYgKCF1cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkp
IHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1h
aW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50
aWZpZXIpCisgICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZv
IHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsK
KyAgICAgICAgfQorCisgICAgICAgIGNhY2hlVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07CisgICAgfSk7CisK
KyAgICBOU1VSTCAqdXJsID0gW2NhY2hlVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpk
aXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRl
RGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQorICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKKworICAgIHJl
dHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Cit9CisK
K1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQorewor
ICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBOU1VSTCAq
d2Vic2l0ZURhdGFVUkw7CisKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAg
ICAgIE5TVVJMICp1cmwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRp
cmVjdG9yeTpOU0xpYnJhcnlEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHBy
b3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKKyAgICAgICAg
aWYgKCF1cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisg
ICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBp
c0RpcmVjdG9yeTpZRVNdOworCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFp
bmVyKCkpIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVu
ZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1bmRs
ZUlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nl
c3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9IFt1cmwg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6
WUVTXTsKKyAgICAgICAgfQorCisgICAgICAgIHdlYnNpdGVEYXRhVVJMID0gW1t1cmwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2Vic2l0ZURhdGEiIGlzRGlyZWN0b3J5OllFU10gcmV0
YWluXTsKKyAgICB9KTsKKworICAgIE5TVVJMICp1cmwgPSBbd2Vic2l0ZURhdGFVUkwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKKyAg
ICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRV
Ukw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJy
b3I6bnVsbHB0cl0pCisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3Rv
cnkgJUAiLCB1cmwpOworCisgICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbjsKK30KKwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2lu
LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCkBAIC00NSw0ICs0Niw1OSBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnBsYXRmb3JtUmVtb3ZlUmVjCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorU3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKK3sK
KyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0
ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNo
ZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURp
cmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkNh
Y2hlU3RvcmFnZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIk5ldHdvcmtDYWNoZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCit7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlNlcnZpY2VXb3JrZXJzIik7
Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0
b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxT
dG9yYWdlIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCit7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3Mi
KTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKK30KKworU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVE
YXRhU3RvcmVHTGliLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
bGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkocmV2aXNpb24gMjQ5NzMyKQkoZnJvbSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3Jl
R0xpYi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorCisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisKKyNpZiBQTEFU
Rk9STShHVEspCisjZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3ZWJraXRndGsiCisjZWxpZiBQTEFU
Rk9STShXUEUpCisjZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCisjZW5kaWYKKworbmFtZXNw
YWNlIEFQSSB7CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImFwcGxp
Y2F0aW9ucyIpOworfQorCisvLyBGSVhNRTogVGhlIG90aGVyIGRpcmVjdG9yaWVzIGluIHRoaXMg
ZmlsZSBhcmUgc2hhcmVkIGJldHdlZW4gYWxsIGFwcGxpY2F0aW9ucyB1c2luZyBXZWJLaXRHVEsu
CisvLyBXaHkgaXMgb25seSB0aGlzIGRpcmVjdG9yeSBuYW1lc3BhY2VkIHRvIGEgcGFydGljdWxh
ciBhcHBsaWNhdGlvbj8KK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3
b3JrQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1l
KCkpLCAiV2ViS2l0Q2FjaGUiKSk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihn
X2dldF9wcmduYW1lKCkpLCAiQ2FjaGVTdG9yYWdlIikpOworfQorCitXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAg
IHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNF
X0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGF0YWJhc2VzIiBHX0RJUl9TRVBBUkFUT1Jf
UyAiaW5kZXhlZGRiIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkg
R19ESVJfU0VQQVJBVE9SX1MgInNlcnZpY2V3b3JrZXJzIik7Cit9CisKK1dURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJ
UkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAibG9jYWxzdG9yYWdlIik7Cit9CisKK1dURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkK
K3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgIm1lZGlha2V5cyIpOworfQorCitT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURp
cmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJkZXZpY2VpZGhh
c2hzYWx0cyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1Jf
UyAiZGF0YWJhc2VzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRIU1RTRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MpOwor
fQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3Ry
aW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7Cit9CisKK1dURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBk
aXJlY3RvcnlOYW1lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRl
RGF0YVN0b3JlR0xpYi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgor
I2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtMzUsNyArMzUsNyBAQAog
I2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid3BlIgogI2VuZGlmCiAKLW5hbWVzcGFjZSBBUEkgewor
bmFtZXNwYWNlIFdlYktpdCB7CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQ5NzMyKQorKysg
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMTc4LDcgKzE3OCw2IEBACiAJCTFBMzAwNjZFMTExMEY0RjcwMDMxOTM3QyAvKiBS
ZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQTMwMDY2QzExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1l
ci5oICovOyB9OwogCQkxQTMzNERFRDE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUEzMzRERUUxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3Jh
Z2VBcmVhTWFwTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBMzM0REVDMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3Nh
Z2VzLmggKi87IH07Ci0JCTFBMzYzNUFBMUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0
YVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTM2MzVBODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oICovOyB9Owog
CQkxQTNDODg4MDE4QTVBQkFFMDBDNEM5NjIgLyogV0tQcmVmZXJlbmNlc0ludGVybmFsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNDODg3RjE4QTVB
QkFFMDBDNEM5NjIgLyogV0tQcmVmZXJlbmNlc0ludGVybmFsLmggKi87IH07CiAJCTFBM0NDMTY3
MTg5MDZBQ0YwMDFFNkVEOCAvKiBXS1dlYlZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0NDMTY1MTg5MDZBQ0YwMDFFNkVEOCAvKiBXS1dlYlZp
ZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTFB
M0NDMTY5MTg5MDdFQjAwMDFFNkVEOCAvKiBXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0NDMTY4MTg5MDdFQjAw
MDFFNkVEOCAvKiBXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCAqLzsgfTsKQEAgLTE3MjUsNiArMTcy
NCw4IEBACiAJCQljb21waWxlclNwZWMgPSBjb20uYXBwbGUuY29tcGlsZXJzLnByb3h5LnNjcmlw
dDsKIAkJCWZpbGVQYXR0ZXJucyA9ICIqLmgiOwogCQkJZmlsZVR5cGUgPSBwYXR0ZXJuLnByb3h5
OworCQkJaW5wdXRGaWxlcyA9ICgKKwkJCSk7CiAJCQlpc0VkaXRhYmxlID0gMTsKIAkJCW91dHB1
dEZpbGVzID0gKAogCQkJCSIkKEhFQURFUl9PVVRQVVRfRElSKS8kKElOUFVUX0ZJTEVfTkFNRSki
LApAQCAtMjEyMSw5ICsyMTIyLDYgQEAKIAkJMUEzMzRERUExNkRFOEI2ODAwNkE4RTM4IC8qIFN0
b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTMzNERFQjE2REU4Rjg4MDA2QThFMzgg
LyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5j
cHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFBMzM0REVDMTZERThG
ODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRT
b3VyY2VzL1dlYktpdDIvU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwotCQkxQTM2MzVBNzFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vi
c2l0ZURhdGFTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
UElXZWJzaXRlRGF0YVN0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEz
NjM1QTgxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkxQTM2MzVBQjFBMzE0NUU1MDBFRDYxOTcgLyogQVBJV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQTNBNzNDQjFBNDhDNkQ0MDA3MjMxQjMgLyogQVBJUGFnZUdyb3VwSGFuZGxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVBhZ2VHcm91cEhhbmRsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBM0E3M0NDMUE0OEM2RDQwMDcyMzFC
MyAvKiBBUElQYWdlR3JvdXBIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQVBJUGFnZUdyb3VwSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
M0M4ODdGMThBNUFCQUUwMEM0Qzk2MiAvKiBXS1ByZWZlcmVuY2VzSW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcmVmZXJlbmNlc0ludGVybmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzY3LDcgKzYzNjUsNiBAQAogCQkJCTdDRUZBOTYw
MUFDMDk5OTMwMEI5MTBGRCAvKiBBUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tICovLAog
CQkJCTVDQTQ2RTdBMjFGMUEyMzkwMENFODZCNCAvKiBBUElIVFRQQ29va2llU3RvcmVDb2NvYS5t
bSAqLywKIAkJCQlGRUQzQzFEQTFCNDQ3QUU4MDBFMEVCN0YgLyogQVBJU2VyaWFsaXplZFNjcmlw
dFZhbHVlQ29jb2EubW0gKi8sCi0JCQkJMUEzNjM1QUIxQTMxNDVFNTAwRUQ2MTk3IC8qIEFQSVdl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbSAqLywKIAkJCQkxQUZERTY0MzE5NTEwQjU1MDBDNDhGRkEg
LyogTGVnYWN5QnVuZGxlRm9yQ2xhc3MubW0gKi8sCiAJCQkJMUMyMDkzNUUyMjMxOENCMDAwMDI2
QTM5IC8qIE5TQXR0cmlidXRlZFN0cmluZy5oICovLAogCQkJCTFDMjA5MzVGMjIzMThDQjAwMDAy
NkEzOSAvKiBOU0F0dHJpYnV0ZWRTdHJpbmcubW0gKi8sCkBAIC03OTc3LDggKzc5NzQsNiBAQAog
CQkJCTJEODc4NjIyMUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5oICovLAog
CQkJCTFBRTI4NjgxMUM3RjkzODYwMDY5QUM0RiAvKiBBUElXZWJzaXRlRGF0YVJlY29yZC5jcHAg
Ki8sCiAJCQkJMUFFMjg2ODIxQzdGOTM4NjAwNjlBQzRGIC8qIEFQSVdlYnNpdGVEYXRhUmVjb3Jk
LmggKi8sCi0JCQkJMUEzNjM1QTcxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3Rv
cmUuY3BwICovLAotCQkJCTFBMzYzNUE4MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0
YVN0b3JlLmggKi8sCiAJCQkJNUM4REQzN0QxRkU0NTAxMTAwRjJBNTU2IC8qIEFQSVdlYnNpdGVQ
b2xpY2llcy5jcHAgKi8sCiAJCQkJNUM4REQzN0MxRkU0NTAxMTAwRjJBNTU2IC8qIEFQSVdlYnNp
dGVQb2xpY2llcy5oICovLAogCQkJCTFBNjU2M0UyMUI3QThDNTAwMDlDRjc4NyAvKiBBUElXaW5k
b3dGZWF0dXJlcy5jcHAgKi8sCkBAIC05MzgyLDcgKzkzNzcsNiBAQAogCQkJCUM1RTFBRkVEMTZC
MjEwMTcwMDZDQzFGMiAvKiBBUElXZWJBcmNoaXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNUUx
QUZFRjE2QjIxMDI5MDA2Q0MxRjIgLyogQVBJV2ViQXJjaGl2ZVJlc291cmNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUUyODY4NDFDN0Y5Mzg2MDA2OUFDNEYgLyogQVBJV2Vic2l0ZURhdGFSZWNv
cmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBMzYzNUFBMUEzMTQ0QTMwMEVENjE5NyAvKiBBUElX
ZWJzaXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTY1NjNFNTFCN0E4QzUwMDA5
Q0Y3ODcgLyogQVBJV2luZG93RmVhdHVyZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0OEQyQTg1
MjE1ODNBN0UwMEM2NzUyQiAvKiBBcHBLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDRD
MTkzMUIzOUYzMzIwMEFCQzI4RSAvKiBBcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oIGluIEhlYWRl
cnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378487</attachid>
            <date>2019-09-10 14:11:05 -0700</date>
            <delta_ts>2019-09-10 14:14:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201655-20190910141104.patch</filename>
            <type>text/plain</type>
            <size>197483</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2NyBAQAorMjAxOS0wOS0xMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB1bm5l
Y2Vzc2FyeSBhYnN0cmFjdGlvbnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBmb3Vy
IHRoaW5ncyB0byBzaW1wbGlmeSBXZWJzaXRlRGF0YVN0b3JlIGNvZGU6CisgICAgICAgIDEuIEl0
IHJlbW92ZXMgQVBJOjpXZWJzaXRlRGF0YVN0b3JlLCB3aGljaCB3YXMganVzdCBhbiB1bm5lY2Vz
c2FyeSB3cmFwcGVyIGFyb3VuZCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUuCisgICAgICAgIDIu
IEl0IGRlcHJlY2F0ZXMgdGhlIHVudXNlZCBhbGlhc2VzIG9mIFdlYnNpdGVEYXRhU3RvcmUsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYW5kIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZgorICAgICAgICAzLiBJdCByZW1vdmVzIHRoZSB1bnVzZWQgQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHByb3BlcnRpZXMgdGhhdCBoYXZlIGJlZW4gbW92ZWQgdG8gV2Vic2l0ZURhdGFTdG9y
ZS4KKyAgICAgICAgNC4gSXQgbWFrZXMgV0tXZWJzaXRlRGF0YVN0b3JlLl9kZWxlZ2F0ZSB3ZWFr
IGluc3RlYWQgb2Ygc3Ryb25nLCBhcyBhbHJlYWR5IGFubm90YXRlZCBpbiBXS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZSBpbiBiZWhh
dmlvciBmcm9tIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZToKKyAg
ICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAg
ICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tp
ZVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6CisgICAg
ICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURh
dGFTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
RGF0YVN0b3JlLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
UG9saWNpZXMuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlUG9saWNpZXM6OmRhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5zKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJEZWxldGVBbGxFbnRyaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
UG9saWN5TGlzdGVuZXIuY3BwOgorICAgICAgICAodXNlV2l0aFBvbGljaWVzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCk6CisgICAgICAgIChXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KToKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAoV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLUmVzb3VyY2VDYWNo
ZU1hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENh
Y2hlT3JpZ2lucyk6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZv
ck9yaWdpbik6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFs
bE9yaWdpbnMpOgorICAgICAgICAodG9XZWJzaXRlRGF0YVR5cGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdl
dERlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlTm9u
UGVyc2lzdGVudERhdGFTdG9yZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVX
aXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29v
a2llU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZVdpdGhDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RT
ZWVuKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVBy
ZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKToKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSk6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5n
VGVzdCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hvdWxkQ2xh
c3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzTWF4U3RhdGlzdGljc0VudHJpZXMpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1BydW5lRW50cmllc0Rvd25Ubyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9u
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGb3JPcmlnaW4p
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnMpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW4pOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmln
aW5TdG9yYWdlUXVvdGEpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdKToK
KyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdKToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIGh0dHBDb29raWVTdG9yZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6bW9kaWZpZWRTaW5jZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOmZv
ckRhdGFSZWNvcmRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgX2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKToKKyAgICAgICAgKCtbV0tXZWJzaXRl
RGF0YVN0b3JlIF9kZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZ10pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3aXRoT3B0aW9u
czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Blck9yaWdpblN0b3Jh
Z2VRdW90YV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFBlck9yaWdpblN0
b3JhZ2VRdW90YTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRDYWNoZVN0
b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOl0pOgor
ICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcl0p
OgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldEFsbG93c0NlbGx1bGFyQWNjZXNz
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93c0NlbGx1bGFyQWNjZXNz
XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJveHlDb25maWd1cmF0aW9u
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFNvdXJj
ZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXI6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0QWxsb3dzVExTRmFs
bGJhY2s6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dzVExTRmFsbGJh
Y2tdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm94eUNvbmZpZ3VyYXRpb25d
KToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zv
cjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9z
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRJc1ByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERv
bWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3Jl
IF9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOl0pOgorICAgICAgICAoLVtXS1dlYnNp
dGVEYXRhU3RvcmUgX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyXSk6CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHNldF9kZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAg
ICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29y
a1Byb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ondl
YnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bV93ZWJQcm9jZXNzQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRl
bnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJt
ZWRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp0ZW1w
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxEZWZhdWx0RGF0
YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHRE
YXRhU3RvcmVGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2wgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAg
ICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6
IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRIU1RTRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Ondl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOS0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEhhbmdzIG9uIFN3aXNz
LmNvbSBkdWUgdG8gdGhlIHdlYiBwcm9jZXNzIGJlaW5nIGJsb2NrZWQgb24gU3RvcmFnZUFyZWFN
YXA6OkxvYWRWYWx1ZXNJZk5lZWRlZApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAg
ICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAotICAgIFVJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAogICAgIFVJ
UHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcApJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5E
IFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAot
ICAgIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKIAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVy
V2luLmNwcApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDYgQEAgVUlQcm9j
ZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVu
dFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElVc2VyU3R5bGVTaGVldC5jcHAKLVVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElXaW5kb3dGZWF0dXJlcy5jcHAKIApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yNzQsNyArMjc0LDYgQEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubQogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNv
Y29hLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCi1VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9MZWdhY3lCdW5kbGVGb3JDbGFzcy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0
dHJpYnV0ZWRTdHJpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3Qu
bW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9Tb3VyY2VzR1RLLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw2IEBAIFVJ
UHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9n
dGsvV0tWaWV3LmNwcAogCiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVz
dC5jcHAgQG5vLXVuaWZ5CkBAIC0yMzIsNiArMjMxLDcgQEAgVUlQcm9jZXNzL2NhaXJvL0JhY2tp
bmdTdG9yZUNhaXJvLmNwcCBAbgogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcAogVUlQcm9jZXNzL2dzdHJlYW1lci9X
ZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTExNCw3ICsxMTQsNiBAQCBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMu
Y3BwCiBVSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKIAogVUlQcm9jZXNzL0FQSS9nbGli
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlR0xpYi5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJ
L2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXBwbGljYXRpb25JbmZvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwIEBuby11bmlmeQpAQCAtMTkyLDYgKzE5MSw3IEBA
IFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3YKIAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5
R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5p
ZnkKIAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKIFVJ
UHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJu
aW5nLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNyAr
NDE2LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgICwg
bV9wcmVmZXJlbmNlcygqbV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpKQogICAgICwgbV91
c2VyQ29udGVudENvbnRyb2xsZXIoKm1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRl
ZExpbmtTdG9yZSgpKQotICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+
d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCisgICAgLCBtX3dlYnNpdGVE
YXRhU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKQogICAgICwgbV91
c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgeyBtX2NvbmZpZ3VyYXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5KCkgfQogICAgICwgbV90cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZp
Z3VyYXRpb24tPnRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCkBAIC0y
ODY3LDggKzI4NjcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9s
CiAgICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gZGF0YTsKICAgICBpZiAocG9saWNp
ZXMpIHsKICAgICAgICAgZGF0YSA9IHBvbGljaWVzLT5kYXRhKCk7Ci0gICAgICAgIGlmIChwb2xp
Y2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpICYmICZwb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgp
LT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSkgewotICAgICAg
ICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCktPndl
YnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAgaWYgKHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3Jl
KCkgJiYgcG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlLnB0
cigpKSB7CisgICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gKnBvbGljaWVzLT53ZWJzaXRl
RGF0YVN0b3JlKCk7CiAgICAgICAgICAgICBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDQsOCArMjQ0LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nl
c3NQb29sKEFQSTo6UHJvYwogICAgICAgICBQcm9jZXNzOjpzZXRJZGVudGlmaWVyKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKICAgICB9KTsKIAotICAgIGlmICghbV93
ZWJzaXRlRGF0YVN0b3JlICYmIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZUV4aXN0cygpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSAm
JiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCisgICAgICAgIG1f
d2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsK
IAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV9jb25maWd1cmF0aW9uLT5hbHdheXNSZXZhbGlk
YXRlZFVSTFNjaGVtZXMoKSkKICAgICAgICAgbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2
YWxpZGF0ZWQuYWRkKHNjaGVtZSk7CkBAIC00ODMsMTQgKzQ4MywxNCBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKLSAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZW5kaW5nQ29va2ll
cyA9IGNvcHlUb1ZlY3RvcihtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5w
ZW5kaW5nQ29va2llcygpKTsKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuY2xlYXJQZW5kaW5nQ29va2llcygpOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1
bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fd2Vi
c2l0ZURhdGFTdG9yZS0+cGVuZGluZ0Nvb2tpZXMoKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFT
dG9yZS0+Y2xlYXJQZW5kaW5nQ29va2llcygpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAg
ICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyKCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNr
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJh
Y2soKSA/IEFsbG93c1RMU0ZhbGxiYWNrOjpZZXMgOiBBbGxvd3NUTFNGYWxsYmFjazo6Tm87Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IG1fd2Vic2l0
ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9IG1fd2Vic2l0ZURh
dGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNrID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5hbGxvd3NUTFNG
YWxsYmFjaygpID8gQWxsb3dzVExTRmFsbGJhY2s6OlllcyA6IEFsbG93c1RMU0ZhbGxiYWNrOjpO
bzsKICNlbmRpZgotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5uZXR3b3JraW5nSGFzQmVndW4oKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3
b3JraW5nSGFzQmVndW4oKTsKICAgICB9CiAKICAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBj
YWNoZU1vZGVsKCk7CkBAIC01MDIsOSArNTAyLDYgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2Vi
UHJvY2Vzc1Bvb2w6OmVucwogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV91cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scykKICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVz
UmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKIAotICAgIHBhcmFt
ZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5kaXNrQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHko
KSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRpc2tDYWNo
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BF
Q1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24gPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNo
ZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQoKTsKICNlbmRpZgpAQCAtNTQxLDIzICs1Mzgs
MTEgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgIHBhcmFt
ZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkID0gY29weVRvVmVjdG9yKG1f
c2NoZW1lc1RvUmVnaXN0ZXJBc0NPUlNFbmFibGVkKTsKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVt
ZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCA9IGNvcHlUb1ZlY3Rvciht
X3NjaGVtZXNUb1JlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCk7CiAKLSNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICAvLyAqKioqKioqKioKLSAgICAvLyBJTVBPUlRB
TlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0
YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBB
cHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKLSAgICAvLyAqKioqKioqKioKLSAgICBw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeSA9IG1fY29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAg
ICBpZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygp
LmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKLSAgICAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVs
dERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU3ltTGlua0ZvckZpbGVVcGdyYWRlKHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5KTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChtX3dl
YnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJl
c29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgICAgICBwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPnJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAg
IGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAg
ICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSAgQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpOworICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkgPSAgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5LCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogCiAgICAgaWYgKCFtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZS5p
c0VtcHR5KCkpCkBAIC01NjYsMTYgKzU1MSwxNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQ
cm9jZXNzUG9vbDo6ZW5zCiAgICAgcGFyYW1ldGVycy5zaG91bGREaXNhYmxlU2VydmljZVdvcmtl
clByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclBy
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5OwogI2VuZGlmCiAKLSAgICBhdXRvIGxvY2FsU3RvcmFnZURp
cmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBudWxsU3RyaW5n
KCk7CisgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUg
PyBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBu
dWxsU3RyaW5nKCk7CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpOworICAgICAgICBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBs
b2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5k
ZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwor
ICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5yZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKICAg
ICBpZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0g
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogCiAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFt
ZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCkBAIC02MDEsMTcgKzU4NiwxNyBAQCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgfSBlbHNlIGlmICht
X3dlYnNpdGVEYXRhU3RvcmUpIHsKICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgICAgICBlbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkuaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygpOworICAgICAg
ICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5oYXNTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKCk7CiAjZW5kaWYKICAgICAg
ICAgaWYgKGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKLSAgICAgICAgICAgIGF1dG8g
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKKyAgICAgICAg
ICAgIGF1dG8gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5w
YXJhbWV0ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzOwogICAgICAgICAgICAgc2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNsdWRl
TG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgICAgICAgICAgZW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5l
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAgICAgICAgICAgbWFudWFs
UHJldmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKLSAgICAgICAg
cGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVv
dGEgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZXJPcmlnaW5TdG9y
YWdlUXVvdGEoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOworICAg
ICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlck9yaWdpblN0b3Jh
Z2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0
eU9yaWdpblN0b3JhZ2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyVGhpcmRQYXJ0eU9y
aWdpblN0b3JhZ2VRdW90YSgpOwogICAgIH0KIAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNzAyLDggKzY4
Nyw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnQKIAogICAgIGlm
ICghd2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkK
LSAgICAgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwotICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gJm1f
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICAgICAgbV93ZWJz
aXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OworICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOwog
ICAgIH0KIAogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQpAQCAt
Nzk1LDEyICs3ODAsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdl
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygp
CiB7CiAgICAgbV9yZXNvbHZlZFBhdGhzLmluamVjdGVkQnVuZGxlUGF0aCA9IHJlc29sdmVQYXRo
Rm9yU2FuZGJveEV4dGVuc2lvbihpbmplY3RlZEJ1bmRsZVBhdGgoKSk7Ci0gICAgbV9yZXNvbHZl
ZFBhdGhzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdy
aXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLndlYlNRTERhdGFiYXNl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAg
ICBtX3Jlc29sdmVkUGF0aHMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVS
ZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVk
aWFDYWNoZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwot
ICAgIG1fcmVzb2x2ZWRQYXRocy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRp
b24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOwotCiAgICAgbV9yZXNvbHZlZFBhdGhz
LmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnJlc2VydmVDYXBhY2l0
eShtX2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkuc2l6
ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBtX2NvbmZpZ3VyYXRpb24tPmFkZGl0
aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkpCiAgICAgICAgIG1fcmVzb2x2ZWRQYXRocy5h
ZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy51bmNoZWNrZWRBcHBlbmQo
cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGguZGF0YSgpKSk7CkBAIC04MzcsNyAr
ODE2LDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OgogI2lmIFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIC8vIEluIHBsYXRmb3JtcyB1c2luZyBC
dWJibGV3cmFwIGZvciBzYW5kYm94aW5nLCBwcmV3YXJtZWQgcHJvY2VzcyBpcyBsYXVuY2hlZCB1
c2luZyB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlLAogICAgIC8v
IHNvIHdlIGRvbid0IHVzZSBpdCBpbiBjYXNlIG9mIHVzaW5nIGEgZGlmZmVyZW50IFdlYnNpdGVE
YXRhU3RvcmUuCi0gICAgaWYgKG1fc2FuZGJveEVuYWJsZWQgJiYgbV93ZWJzaXRlRGF0YVN0b3Jl
ICYmICZtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURh
dGFTdG9yZSkKKyAgICBpZiAobV9zYW5kYm94RW5hYmxlZCAmJiBtX3dlYnNpdGVEYXRhU3RvcmUg
JiYgbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogCkBAIC04ODUsOCArODY0LDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2VuZFdlYlByb2Nlc3NEYXRhUwogICAgIGlmICghcGFyYW1ldGVycy5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFt
ZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgcGFy
YW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gd2Vic2l0
ZURhdGFTdG9yZS5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCk7Ci0g
ICAgaWYgKHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZS5pc0VtcHR5KCkpCi0gICAgICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRG
aWxlU3ViZGlyZWN0b3J5TmFtZSgpOwogCiAgICAgcGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSgpOwog
ICAgIGlmIChwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKQEAg
LTExMDcsNyArMTA4NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRGaW5pc2hM
YXUKICAgICBtX2Nvbm5lY3Rpb25DbGllbnQuZGlkQ3JlYXRlQ29ubmVjdGlvbih0aGlzLCBwcm9j
ZXNzLT53ZWJDb25uZWN0aW9uKCkpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAg
ICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGlkQ3JlYXRlTmV0
d29ya1Byb2Nlc3MoKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kaWRDcmVhdGVOZXR3
b3JrUHJvY2VzcygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vz
cyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCkBAIC0xMTg2LDcgKzExNjMsNyBAQCBXZWJQcm9j
ZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzCiAgICAgICAgIHJldHVybiBjcmVhdGVO
ZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIGJvb2wgbXVzdE1hdGNoRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gJkFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
Ym9vbCBtdXN0TWF0Y2hEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwogI2Vsc2UKICAgICBib29sIG11c3RNYXRjaERhdGFTdG9y
ZSA9IGZhbHNlOwogI2VuZGlmCkBAIC0xMjIwLDcgKzExOTcsNyBAQCBSZWY8V2ViUGFnZVByb3h5
PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAgICAgIC8vIFdlIHRyeSB0byBhdm9pZCBjcmVh
dGluZyB0aGUgZGVmYXVsdCBkYXRhIHN0b3JlIGFzIGxvbmcgYXMgcG9zc2libGUuCiAgICAgICAg
IC8vIEJ1dCBpZiB0aGVyZSBpcyBhbiBhdHRlbXB0IHRvIGNyZWF0ZSBhIHdlYiBwYWdlIHdpdGhv
dXQgYW55IHNwZWNpZmllZCBkYXRhIHN0b3JlLCB0aGVuIHdlIGhhdmUgdG8gY3JlYXRlIGl0Lgog
ICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgICAgIG1fd2Vic2l0ZURh
dGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OworICAgICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwogCiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRX
ZWJzaXRlRGF0YVN0b3JlKG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSk7CiAgICAgfQpAQCAtMTIz
MSw4ICsxMjA4LDggQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZQog
ICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdl
IHZpYSB3aW5kb3cub3BlbigpLgogICAgICAgICBwcm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9u
LT5yZWxhdGVkUGFnZSgpLT5lbnN1cmVSdW5uaW5nUHJvY2VzcygpOwogICAgICAgICAvLyBXZSBk
byBub3Qgc3VwcG9ydCBzZXZlcmFsIFdlYnNpdGVEYXRhU3RvcmVzIHNoYXJpbmcgYSBzaW5nbGUg
cHJvY2Vzcy4KLSAgICAgICAgQVNTRVJUKHByb2Nlc3MuZ2V0KCkgPT0gbV9kdW1teVByb2Nlc3NQ
cm94eSB8fCAmcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURh
dGFTdG9yZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwotICAgICAgICBBU1NF
UlQoJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkg
PT0gJnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3Rv
cmUoKSk7CisgICAgICAgIEFTU0VSVChwcm9jZXNzLmdldCgpID09IG1fZHVtbXlQcm9jZXNzUHJv
eHkgfHwgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmcHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgQVNTRVJUKCZwYWdlQ29uZmlndXJhdGlvbi0+
cmVsYXRlZFBhZ2UoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHBhZ2VDb25maWd1cmF0aW9uLT53
ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIH0gZWxzZSBpZiAoIW1faXNEZWxheWVkV2ViUHJvY2Vz
c0xhdW5jaERpc2FibGVkKSB7CiAgICAgICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwgd2UgZGVs
YXkgcHJvY2VzcyBsYXVuY2ggdW50aWwgc29tZXRoaW5nIGlzIGFjdHVhbGx5IGxvYWRlZCBpbiB0
aGUgcGFnZS4KICAgICAgICAgaWYgKCFtX2R1bW15UHJvY2Vzc1Byb3h5KSB7CkBAIC0xMjQyLDcg
KzEyMTksNyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAg
ICAgIH0KICAgICAgICAgcHJvY2VzcyA9IG1fZHVtbXlQcm9jZXNzUHJveHk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIHByb2Nlc3MgPSAmcHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHBhZ2VDb25m
aWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSwgbnVsbHB0
ciwgeyB9KTsKKyAgICAgICAgcHJvY2VzcyA9ICZwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4o
KnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCksIG51bGxwdHIsIHsgfSk7CiAK
ICAgICBBU1NFUlQocHJvY2Vzcyk7CiAKQEAgLTEyOTIsNyArMTI2OSw3IEBAIGJvb2wgV2ViUHJv
Y2Vzc1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmluZyBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlv
bigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgICAgIHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KCk7CiAKICAgICByZXR1cm4gbV9tYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzLmVu
c3VyZShzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBbJl0gewogICAgICAgICAv
LyBGSVhNRTogTWFrZSB0aGlzIGNvbXB1dGF0aW9uIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI0
OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJI
aWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyLmgiCkBAIC00NCw2ICs0Myw3
IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2
aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBAIC0yMDIsOCAr
MjAyLDggQEAgcHVibGljOgogICAgIC8vIERpc2Nvbm5lY3QgdGhlIHByb2Nlc3MgZnJvbSB0aGUg
Y29udGV4dC4KICAgICB2b2lkIGRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSopOwog
Ci0gICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRQcmltYXJ5RGF0
YVN0b3JlKEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKSB7IG1fd2Vic2l0ZURhdGFT
dG9yZSA9ICZkYXRhU3RvcmU7IH0KKyAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0
b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRQcmltYXJ5RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkgeyBtX3dl
YnNpdGVEYXRhU3RvcmUgPSAmZGF0YVN0b3JlOyB9CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBj
cmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CiAKQEAgLTY3Niw3ICs2NzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tZW1vcnlTYW1wbGVy
RW5hYmxlZCB7IGZhbHNlIH07CiAgICAgZG91YmxlIG1fbWVtb3J5U2FtcGxlckludGVydmFsIHsg
MTQwMC4wIH07CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVE
YXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9y
ZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgUmVmUHRyPFdlYkNvbnRleHRT
dXBwbGVtZW50PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IFdlYkNvbnRleHRTdXBwbGVtZW50TWFw
OwogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVudHM7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBD
b29raWVTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKIAotI2luY2x1ZGUg
IkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVT
dG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgZW51
bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludAogbmFtZXNwYWNlIEFQSSB7CiAK
IGNsYXNzIEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyOwotY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKIAogY2xhc3MgSFRUUENvb2tpZVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEyICsxNTEsMTIgQEAg
dm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0VmlzaXRlZExpbmtTdAogICAgIG1fdmlzaXRlZExp
bmtTdG9yZSA9IHZpc2l0ZWRMaW5rU3RvcmU7CiB9CiAKLUFQSTo6V2Vic2l0ZURhdGFTdG9yZSog
UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQorV2Vic2l0ZURhdGFTdG9yZSog
UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIHJldHVybiBtX3dl
YnNpdGVEYXRhU3RvcmUuZ2V0KCk7CiB9CiAKLXZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFdl
YnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQor
dm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNp
dGVEYXRhU3RvcmU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDEyICs0NCwxMiBAQCBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIGNsYXNzIFdlYlByb2Nl
c3NQb29sOwogY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIH0KIAogbmFtZXNwYWNl
IEFQSSB7CiAKIGNsYXNzIEFwcGxpY2F0aW9uTWFuaWZlc3Q7Ci1jbGFzcyBXZWJzaXRlRGF0YVN0
b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogCiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbiA6
IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6UGFnZUNvbmZpZ3VyYXRpb24+IHsKQEAg
LTg0LDggKzg0LDggQEAgcHVibGljOgogICAgIFdlYktpdDo6VmlzaXRlZExpbmtTdG9yZSogdmlz
aXRlZExpbmtTdG9yZSgpOwogICAgIHZvaWQgc2V0VmlzaXRlZExpbmtTdG9yZShXZWJLaXQ6OlZp
c2l0ZWRMaW5rU3RvcmUqKTsKIAotICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3Rv
cmUoKTsKLSAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSopOwor
ICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpOworICAgIHZv
aWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUqKTsKIAogICAg
IFdlYnNpdGVQb2xpY2llcyogZGVmYXVsdFdlYnNpdGVQb2xpY2llcygpIGNvbnN0OwogICAgIHZv
aWQgc2V0RGVmYXVsdFdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXMqKTsKQEAgLTE0NSw3
ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9y
ZWxhdGVkUGFnZTsKICAgICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0
ZWRMaW5rU3RvcmU7CiAKLSAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0
YVN0b3JlOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURh
dGFTdG9yZTsKICAgICBSZWZQdHI8V2Vic2l0ZVBvbGljaWVzPiBtX2RlZmF1bHRXZWJzaXRlUG9s
aWNpZXM7CiAKICAgICBib29sIG1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmUgeyB0cnVlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjQ5NzMy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKIAotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgor
I2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIEFQSSB7CiAKQEAgLTM2
LDM1ICszNiw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb28KICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOwogfQogCi1S
ZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNy
ZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihjb25zdCBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJiBsZWdhY3lDb25maWd1cmF0aW9uKQotewotICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0K
LSAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsK
LSAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRp
YUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5
KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGxl
Z2FjeUNvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBjb25m
aWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24u
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmRldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBs
ZWdhY3lDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0KLSAgICByZXR1
cm4gY29uZmlndXJhdGlvbjsKLX0KLQogUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKQotICAgIDogbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpCi0gICAg
LCBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkZpbGVzIikKLSAg
ICAsIG1fZGlza0NhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKSkKLSAgICAsIG1fbWVkaWFDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKQotICAgICwgbV9pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fZGV2aWNlSWRI
YXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJ
ZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fd2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkp
Ci0gICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSgpKQogewogfQogCkBAIC03NywxOCArNDksOCBAQCBSZWY8UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgYXV0byBjb3B5ID0gdGhpcy0+Y3Jl
YXRlKCk7CiAKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9kZWw7Ci0g
ICAgY29weS0+bV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX2Rpc2tDYWNoZURpcmVjdG9y
eTsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgPSB0
aGlzLT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQ7Ci0gICAgY29weS0+
bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5OwotICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZSA9IHRoaXMtPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsK
LSAgICBjb3B5LT5tX21lZGlhQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX21lZGlhQ2FjaGVEaXJl
Y3Rvcnk7Ci0gICAgY29weS0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1f
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9pbmplY3RlZEJ1bmRsZVBh
dGggPSB0aGlzLT5tX2luamVjdGVkQnVuZGxlUGF0aDsKLSAgICBjb3B5LT5tX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1f
ZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9kZXZpY2VJZEhhc2hT
YWx0c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeTsKLSAgICBjb3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gdGhp
cy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2NhY2hlUGFydGl0aW9u
ZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBj
b3B5LT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fYWx3YXlzUmV2YWxp
ZGF0ZWRVUkxTY2hlbWVzOwogICAgIGNvcHktPm1fYWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2Vk
UGF0aHMgPSB0aGlzLT5tX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24+IGNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bihjb25zdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJik7CiAKICAgICBl
eHBsaWNpdCBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKQEAgLTc5LDM4ICs3Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJL
aXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsg
fQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkg
eyBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAKLSAgICBjb25zdCBXVEY6OlN0cmluZyYg
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkgeyBtX2FwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9Ci0KLSAgICBj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXREaXNrQ2Fj
aGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSkgeyBtX2Rp
c2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeTsgfQotCi0gICAgY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ2Fj
aGVEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0g
bWVkaWFDYWNoZURpcmVjdG9yeTsgfQotICAgIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNv
bnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBtX2luZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQogICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBt
X2luamVjdGVkQnVuZGxlUGF0aDsgfQogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKGNv
bnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpIHsgbV9pbmplY3RlZEJ1bmRsZVBh
dGggPSBpbmplY3RlZEJ1bmRsZVBhdGg7IH0KIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9y
eTsgfQotICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5n
JiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpIHsgbV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBkZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkSGFzaFNh
bHRzU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnkpIHsgbV9kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBkaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6
U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViU1FM
RGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KGNvbnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkgeyBtX3dlYlNRTERh
dGFiYXNlRGlyZWN0b3J5ID0gd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0
IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
OyB9Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGNvbnN0IFdU
Rjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSB7IG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7
IH0KLQogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzKCkgeyByZXR1cm4gbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsgfQogICAgIHZv
aWQgc2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIGNh
Y2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKSB7IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMg
PSBXVEZNb3ZlKGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKTsgfQogCkBAIC0xODYsMTcgKzE1
NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlv
bkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwg
eyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlByaW1hcnlXZWJCcm93c2VyIH07CiAKLSAgICBXVEY6OlN0
cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9hcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwotICAgIFdURjo6U3RyaW5nIG1f
ZGlza0NhY2hlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fbWVkaWFDYWNoZURpcmVjdG9y
eTsKLSAgICBXVEY6OlN0cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFdU
Rjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwotICAgIFdURjo6U3RyaW5nIG1fbG9jYWxT
dG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7
Ci0gICAgV1RGOjpTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6
U3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBWZWN0b3I8V1RG
OjpTdHJpbmc+IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7CiAgICAgVmVjdG9yPFdURjo6
U3RyaW5nPiBtX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKICAgICBWZWN0b3I8V1RGOjpD
U3RyaW5nPiBtX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVEYXRhU3RvcmUuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTY4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCi0KLSNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgotI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmUuaCIKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLXN0YXRpYyBSZWZQdHI8V2Vic2l0
ZURhdGFTdG9yZT4mIGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKQotewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4+IGdsb2JhbERlZmF1bHREYXRhU3Rv
cmU7Ci0gICAgcmV0dXJuIGdsb2JhbERlZmF1bHREYXRhU3RvcmUuZ2V0KCk7Ci19Ci0KLQotUmVm
PFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKQot
ewotICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKLQotICAgIGF1dG8mIHN0b3JlID0g
Z2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpOwotICAgIGlmICghc3RvcmUpCi0gICAgICAgIHN0b3Jl
ID0gYWRvcHRSZWYobmV3IFdlYnNpdGVEYXRhU3RvcmUoZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwotCi0gICAgcmV0
dXJuICpzdG9yZTsKLX0KLQotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVEZWZhdWx0RGF0
YVN0b3JlRm9yVGVzdGluZygpCi17Ci0gICAgZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpID0gbnVs
bHB0cjsKLX0KLQotYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3Rz
KCkKLXsKLSAgICByZXR1cm4gISFnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCk7Ci19Ci0KLVJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0
YVN0b3JlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlKTsK
LX0KLQotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShSZWY8
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBj
b25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKSk7
Ci19Ci0KLVdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoKQotICAgIDogbV93ZWJz
aXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVu
dCgpKQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICA6IG1fd2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQp
KQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCi17Ci19Ci0K
LUhUVFBDb29raWVTdG9yZSYgV2Vic2l0ZURhdGFTdG9yZTo6aHR0cENvb2tpZVN0b3JlKCkKLXsK
LSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5jb29raWVTdG9yZSgpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjogaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPmNvbmZpZ3VyYXRpb24oKS5pbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSgpOwotfQotCi1ib29sIFdlYnNpdGVEYXRhU3RvcmU6OmlzUGVy
c2lzdGVudCgpCi17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+aXNQZXJzaXN0ZW50
KCk7Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Ci19Ci0KLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7
Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOwotfQotCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCBlbmFibGVkKQotewotICAgIG1f
d2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFi
bGVkKTsKLX0KLQotI2lmICFQTEFURk9STShDT0NPQSkKLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzY5IGFu
ZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzcwCi0gICAgcmV0
dXJuIFdURjo6U3RyaW5nKCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgLy8gRklYTUU6
IEltcGxlbWVudC4KLSAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKLX0KLSNlbmRpZgotCi0jaWYg
IVVTRShHTElCKQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgLy8gTm90IGltcGxlbWVudGVkLgot
ICAgIHJldHVybiBXVEY6OlN0cmluZygpOwotfQotI2VuZGlmCi0KLVJlZjxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0KLSAgICBjb25maWd1cmF0
aW9uLT5zZXRQZXJzaXN0ZW50KHRydWUpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsK
LSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lKCJGaWxlcyIpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVj
dG9yeShkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24t
PnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkp
OwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkoKSk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5zZXRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeShkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAg
Y29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShkZWZh
dWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0
aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGRl
ZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0RGV2aWNl
SWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0
SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoZGVmYXVsdEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5KCkpOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdl
YnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShub25leGlzdGVudCkKQEAg
LTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJBUElIVFRQQ29va2llU3RvcmUuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0j
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgQVBJIHsKLQotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSBmaW5hbCA6IHB1
YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6V2Vic2l0ZURhdGFTdG9yZT4gewotcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gZGVmYXVsdERhdGFTdG9yZSgpOwot
ICAgIHN0YXRpYyBib29sIGRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKLSAgICBzdGF0aWMgdm9p
ZCBkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwotCi0gICAgc3RhdGljIFJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+JiYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7Ci0gICAgc3RhdGljIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7Ci0KLSAgICBleHBs
aWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7Ci0gICAgdmlydHVhbCB+V2Vic2l0ZURhdGFTdG9y
ZSgpOwotCi0gICAgYm9vbCBpc1BlcnNpc3RlbnQoKTsKLQotICAgIGJvb2wgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdDsKLSAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGJvb2wpOwotICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShib29sKTsKLQotICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSgpIHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQotICAgIEhUVFBDb29raWVT
dG9yZSYgaHR0cENvb2tpZVN0b3JlKCk7Ci0KLSAgICBXVEY6OlN0cmluZyBpbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcg
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBk
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGlj
IFdURjo6U3RyaW5nIGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotI2lmIFVTRShH
TElCKQotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SFNUU0RpcmVjdG9yeSgpOwotI2Vu
ZGlmCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRKYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwot
Ci1wcml2YXRlOgotICAgIGVudW0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0
b3J5LCBEb250Q3JlYXRlRGlyZWN0b3J5IH07Ci0KLSAgICBXZWJzaXRlRGF0YVN0b3JlKCk7Ci0K
LSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0
b3J5ID0gQ3JlYXRlRGlyZWN0b3J5KTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSk7Ci0K
LSAgICBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7Ci19
OwotCi19CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGlj
aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZVBvbGljaWVzLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE0
ICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xp
Y2llcy5oIgogCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgIldl
YnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCiAKIG5h
bWVzcGFjZSBBUEkgewogCiBXZWJzaXRlUG9saWNpZXM6OldlYnNpdGVQb2xpY2llcygpID0gZGVm
YXVsdDsKIAotV2Vic2l0ZVBvbGljaWVzOjpXZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxs
b3dlZEF1dG9wbGF5UXVpcmtzLCBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeSBhdXRvcGxh
eVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiBsZWdhY3lDdXN0b21I
ZWFkZXJGaWVsZHMsIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+JiYgY3VzdG9t
SGVhZGVyRmllbGRzLCBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSBwb3BVcFBvbGljeSwgUmVm
UHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKK1dlYnNpdGVQb2xpY2ll
czo6V2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgT3B0aW9uU2V0
PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IGFsbG93ZWRBdXRvcGxheVF1aXJrcywgV2Vi
S2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3kgYXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3Jl
OjpIVFRQSGVhZGVyRmllbGQ+JiYgbGVnYWN5Q3VzdG9tSGVhZGVyRmllbGRzLCBWZWN0b3I8V2Vi
Q29yZTo6Q3VzdG9tSGVhZGVyRmllbGRzPiYmIGN1c3RvbUhlYWRlckZpZWxkcywgV2ViS2l0OjpX
ZWJzaXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3ksIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKICAgICA6IG1fY29udGVudEJsb2NrZXJzRW5hYmxl
ZChjb250ZW50QmxvY2tlcnNFbmFibGVkKQogICAgICwgbV9hbGxvd2VkQXV0b3BsYXlRdWlya3Mo
YWxsb3dlZEF1dG9wbGF5UXVpcmtzKQogICAgICwgbV9hdXRvcGxheVBvbGljeShhdXRvcGxheVBv
bGljeSkKQEAgLTg0LDcgKzg0LDcgQEAgV2Vic2l0ZVBvbGljaWVzOjp+V2Vic2l0ZVBvbGljaWVz
KCkKIHsKIH0KIAotdm9pZCBXZWJzaXRlUG9saWNpZXM6OnNldFdlYnNpdGVEYXRhU3RvcmUoUmVm
UHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKK3ZvaWQgV2Vic2l0ZVBv
bGljaWVzOjpzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBXVEZN
b3ZlKHdlYnNpdGVEYXRhU3RvcmUpOwogfQpAQCAtMTA4LDcgKzEwOCw3IEBAIFdlYktpdDo6V2Vi
c2l0ZVBvbGljaWVzRGF0YSBXZWJzaXRlUG9saWMKICNlbmRpZgogICAgICAgICBXVEZNb3ZlKGN1
c3RvbUhlYWRlckZpZWxkcyksCiAgICAgICAgIHBvcFVwUG9saWN5KCksCi0gICAgICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZSA/IE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnM+IHsgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygp
IH0gOiBXVEY6Om51bGxvcHQsCisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA/IE9wdGlvbmFs
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IHsgbV93ZWJzaXRlRGF0YVN0b3Jl
LT5wYXJhbWV0ZXJzKCkgfSA6IFdURjo6bnVsbG9wdCwKICAgICAgICAgbV9jdXN0b21Vc2VyQWdl
bnQsCiAgICAgICAgIG1fY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVp
cmtzLAogICAgICAgICBtX2N1c3RvbU5hdmlnYXRvclBsYXRmb3JtLApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2ll
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMyArNDEsMTIgQEAKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIHN0
cnVjdCBXZWJzaXRlUG9saWNpZXNEYXRhOwogfQogCiBuYW1lc3BhY2UgQVBJIHsKIAotY2xhc3Mg
V2Vic2l0ZURhdGFTdG9yZTsKLQogY2xhc3MgV2Vic2l0ZVBvbGljaWVzIGZpbmFsIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6V2Vic2l0ZVBvbGljaWVzPiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlUG9saWNpZXM+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2Vic2l0ZVBvbGljaWVzKTsgfQpAQCAtNzksOCArNzgsOCBAQCBwdWJs
aWM6CiAgICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3koKSBjb25zdCB7
IHJldHVybiBtX3BvcFVwUG9saWN5OyB9CiAgICAgdm9pZCBzZXRQb3BVcFBvbGljeShXZWJLaXQ6
OldlYnNpdGVQb3BVcFBvbGljeSBwb2xpY3kpIHsgbV9wb3BVcFBvbGljeSA9IHBvbGljeTsgfQog
Ci0gICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJu
IG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9y
ZShSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJik7CisgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3Jl
LmdldCgpOyB9CisgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0cjxXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU+JiYpOwogCiAgICAgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIGRh
dGEoKTsKIApAQCAtMTE4LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFsbG93Q29u
dGVudENoYW5nZU9ic2VydmVyUXVpcmsoYm9vbCBhbGxvdykgeyBtX2FsbG93Q29udGVudENoYW5n
ZU9ic2VydmVyUXVpcmsgPSBhbGxvdzsgfQogCiBwcml2YXRlOgotICAgIFdlYnNpdGVQb2xpY2ll
cyhib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVB
dXRvcGxheVF1aXJrPiwgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJD
b3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYsIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVs
ZHM+JiYsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5LCBSZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4mJik7CisgICAgV2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwg
T3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+LCBXZWJLaXQ6OldlYnNpdGVB
dXRvcGxheVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiwgVmVjdG9y
PFdlYkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4mJiwgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xp
Y3ksIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+JiYpOwogCiAgICAgYm9vbCBtX2Nv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQgeyB0cnVlIH07CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZUF1dG9wbGF5UXVpcms+IG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtzOwpAQCAtMTI5LDcgKzEy
OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4gbV9s
ZWdhY3lDdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkN1c3RvbUhlYWRl
ckZpZWxkcz4gbV9jdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQ
b2xpY3kgbV9wb3BVcFBvbGljeSB7IFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5OjpEZWZhdWx0
IH07Ci0gICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAg
ICBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAg
ICAgV1RGOjpTdHJpbmcgbV9jdXN0b21Vc2VyQWdlbnQ7CiAgICAgV1RGOjpTdHJpbmcgbV9jdXN0
b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3M7CiAgICAgV1RGOjpTdHJp
bmcgbV9jdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjks
NiBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNzIFByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjsKIGNsYXNzIFNlc3Npb25TdGF0ZTsKIGNsYXNzIFVzZXJTY3JpcHQ7Ci1jbGFzcyBXZWJz
aXRlRGF0YVN0b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogY2xhc3MgV2luZG93RmVhdHVy
ZXM7CiB9CkBAIC0xMTMsNiArMTEyLDcgQEAgY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI7CiBjbGFzcyBXZWJUZXh0Q2hlY2tlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OwogY2xhc3MgV2ViVmlld3BvcnRBdHRyaWJ1dGVzOworY2xhc3MgV2Vic2l0
ZURhdGFTdG9yZTsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOwogCiBXS19B
RERfQVBJX01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiwgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eSkKQEAgLTE2OSw3ICsxNjksNyBAQCBXS19BRERfQVBJX01BUFBJTkco
V0tVc2VyTWVkaWFQZXJtaXNzaW9uCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFJlZiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSkKIFdLX0FE
RF9BUElfTUFQUElORyhXS1VzZXJTY3JpcHRSZWYsIEFQSTo6VXNlclNjcmlwdCkKIFdLX0FERF9B
UElfTUFQUElORyhXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZiwgV2ViVmlld3BvcnRBdHRyaWJ1dGVz
KQotV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgQVBJOjpXZWJzaXRl
RGF0YVN0b3JlKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb25SZWYsIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tXZWJzaXRlUG9saWNpZXNSZWYsIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2luZG93RmVhdHVyZXNSZWYsIEFQSTo6
V2luZG93RmVhdHVyZXMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ5
NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDQyICsyNiwxOSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCIKIAotI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCi0KIFdL
VHlwZUlEIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRUeXBlSUQoKQogewotICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CisgICAgcmV0
dXJuIDA7CiB9CiAKLXZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9uIGNhbGxiYWNrKQordm9pZCBXS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnMoV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlclJlZiwgdm9pZCosIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luc0Z1bmN0aW9uKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBX
ZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oYXBw
bGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVE
YXRhU3RvcmUuZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdKGF1dG8gZGF0YVJlY29yZHMp
IHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2luczsK
LSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKLSAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKQot
ICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy5hcHBlbmQoQVBJOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBjYWxsYmFjayhXZWJLaXQ6OnRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHNlY3Vy
aXR5T3JpZ2lucykpLnB0cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZv
aWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwgV0tTZWN1cml0
eU9yaWdpblJlZiBvcmlnaW4pCit2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVF
bnRyaWVzRm9yT3JpZ2luKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYsIFdLU2VjdXJpdHlP
cmlnaW5SZWYpCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IFdlYktpdDo6dG9JbXBs
KHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihhcHBsaWNhdGlvbkNhY2hl
TWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0KLSAgICBXZWJLaXQ6OldlYnNpdGVEYXRh
UmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCBXZWJLaXQ6OnRvSW1wbChvcmlnaW4p
LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7Ci0KLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92
ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
LCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsKIH0KIAotdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyKQordm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRl
QWxsRW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmKQogewotICAgIGF1dG8mIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0
ZURhdGFTdG9yZVJlZj4oYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YShXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwg
W10geyB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgJKHJldmlzaW9uIDI0OTczMikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTggKzI3LDE5IEBACiAjZGVmaW5lIFdLQXBwbGljYXRp
b25DYWNoZU1hbmFnZXJfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUg
PFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMi
IHsKICNlbmRpZgogCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ckdldFR5cGVJRCgpOworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJHZXRUeXBlSUQoKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiB0eXBlZGVmIHZvaWQgKCpXS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiko
V0tBcnJheVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9u
IGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRB
cHBsaWNhdGlvbkNhY2hlT3JpZ2lucyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbikgV0tfQ19BUElf
REVQUkVDQVRFRDsKIAotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRl
bGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNh
dGlvbkNhY2hlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pOwotV0tfRVhQT1JU
IHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcik7CitXS19FWFBPUlQg
dm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCBXS1NlY3Vy
aXR5T3JpZ2luUmVmIG9yaWdpbikgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lk
IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpIFdLX0NfQVBJX0RFUFJFQ0FU
RUQ7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCShyZXZpc2lv
biAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5
TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCIKIAotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMu
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZVBvbGljaWVzRGF0YS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw5MCArMjYsMzggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAi
QVBJRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNs
dWRlICJTdG9yYWdlTWFuYWdlci5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUg
IldlYnNpdGVEYXRhUmVjb3JkLmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlw
ZUlEIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRv
QVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIDA7CiB9CiAK
IFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpCiB7Ci0g
ICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJXZWJLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURldGFpbHNPcmlnaW5LZXkiKS5sZWFrUmVmKCk7Ci0g
ICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBXS1N0cmlu
Z1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKQogewotICAg
IHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiV2ViS2V5VmFs
dWVTdG9yYWdlTWFuYWdlclN0b3JhZ2VEZXRhaWxzQ3JlYXRpb25UaW1lS2V5IikubGVha1JlZigp
OwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogV0tT
dHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgp
CiB7Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJX
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURldGFpbHNNb2RpZmljYXRpb25UaW1lS2V5
IikubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VP
cmlnaW5zKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
LCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3Jh
Z2VPcmlnaW5zRnVuY3Rpb24gY2FsbGJhY2spCi0KK3ZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYs
IHZvaWQqLCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5z
RnVuY3Rpb24pCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVy
cHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oa2V5VmFsdWVTdG9yYWdlTWFuYWdlcikp
LT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5mZXRjaERhdGEoeyBX
ZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3Rv
cmFnZSB9LCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10oYXV0byBkYXRhUmVjb3JkcykgewotICAg
ICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gc2VjdXJpdHlPcmlnaW5zOwotICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVjb3JkcykgewotICAgICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBkYXRhUmVjb3JkLm9yaWdpbnMpCi0gICAgICAg
ICAgICAgICAgc2VjdXJpdHlPcmlnaW5zLmFwcGVuZChBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUob3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxi
YWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHNlY3VyaXR5T3JpZ2lucykpLnB0
cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1bmN0aW9uIGNhbGxiYWNr
KQordm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwgdm9pZCosIFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5jdGlvbikKIHsKLSAgICBhdXRvJiB3ZWJz
aXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3Jl
UmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3
ZWJzaXRlRGF0YVN0b3JlLmdldExvY2FsU3RvcmFnZURldGFpbHMoW2NvbnRleHQsIGNhbGxiYWNr
XShhdXRvJiYgZGV0YWlscykgewotICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4g
cmVzdWx0OwotICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkZXRhaWxzLnNp
emUoKSk7Ci0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkZXRhaWwgOiBkZXRhaWxzKSB7Ci0g
ICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSTo6T2JqZWN0Pj4gZGV0YWlsTWFw
OwotICAgICAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKGRldGFpbC5vcmlnaW5JZGVudGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0K
LSAgICAgICAgICAgIGRldGFpbE1hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ckdldE9yaWdpbktleSgpKS0+c3RyaW5nKCksIG9yaWdpbik7Ci0gICAgICAgICAgICBpZiAoZGV0
YWlsLmNyZWF0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxNYXAuc2V0KHRvSW1wbChX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBB
UEk6OkRvdWJsZTo6Y3JlYXRlKGRldGFpbC5jcmVhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2No
KCkudmFsdWUoKSkpOwotICAgICAgICAgICAgaWYgKGRldGFpbC5tb2RpZmljYXRpb25UaW1lKQot
ICAgICAgICAgICAgICAgIGRldGFpbE1hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3Jl
YXRlKGRldGFpbC5tb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkp
KTsKLQotICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChBUEk6OkRpY3Rpb25hcnk6
OmNyZWF0ZShXVEZNb3ZlKGRldGFpbE1hcCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxi
YWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdCkpLnB0cigpKSwgbnVs
bHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5
VmFsdWVTdG9yYWdlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pCit2b2lkIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmKQogewotICAgIGF1dG8mIHdlYnNp
dGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVS
ZWY+KGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIFdl
YnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURh
dGFUeXBlOjpMb2NhbFN0b3JhZ2UsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRh
dGEoKSk7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFn
ZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKLSAgICB3ZWJzaXRl
RGF0YVN0b3JlLnJlbW92ZURhdGEoeyBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vi
c2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSB9LCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsK
IH0KIAotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKQordm9pZCBXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlclJlZikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJw
cmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSkt
PndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEoeyBX
ZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3Rv
cmFnZSB9LCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtdIHsgfSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXIuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDMwICsy
NywzMSBAQAogI2RlZmluZSBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJfaAogCiAjaW5jbHVkZSA8
V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lm
ZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi1XS19FWFBPUlQgV0tUeXBl
SUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlEKCk7CitXS19FWFBPUlQgV0tUeXBl
SUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlEKCkgV0tfQ19BUElfREVQUkVDQVRF
RDsKIAogLyogVmFsdWUgdHlwZTogV0tTZWN1cml0eU9yaWdpblJlZiAqLwotV0tfRVhQT1JUIFdL
U3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpOworV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpIFdL
X0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5cGU6IFdLRG91YmxlUmVmLCBzZWNvbmRz
IHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpOworV0tfRVhQT1JUIFdL
U3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpIFdL
X0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5cGU6IFdLRG91YmxlUmVmLCBzZWNvbmRz
IHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKTsKK1dLX0VYUE9S
VCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1l
S2V5KCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uKShXS0FycmF5UmVm
LCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zRnVuY3Rpb24gZnVuY3Rpb24pOworV0tf
RVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3Jp
Z2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwg
dm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdl
T3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiB0eXBlZGVm
IHZvaWQgKCpXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
RnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdLRXJyb3JSZWYsIHZvaWQqKTsKLVdLX0VYUE9SVCB2b2lk
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4oV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRl
eHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5j
dGlvbiBmdW5jdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24gZnVuY3Rpb24pIFdLX0NfQVBJX0RF
UFJFQ0FURUQ7CiAKLVdLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0
ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3Rv
cmFnZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKTsKLVdLX0VYUE9SVCB2b2lk
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpOworV0tfRVhQT1JUIHZvaWQgV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJl
ZiBvcmlnaW4pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CitXS19FWFBPUlQgdm9pZCBXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVz
b3VyY2VDYWNoZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNjcgKzI2LDE5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oIgogCi0jaW5jbHVkZSAiQVBJQXJy
YXkuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSAiV0tBUElD
YXN0LmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNvcmQuaCIKLQotdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKLQogV0tUeXBlSUQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldFR5cGVJRCgpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7Ci19Ci0K
LXN0YXRpYyBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZXMoV0tS
ZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikKLXsKLSAgICBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzIHsgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlD
YWNoZSB9OwotCi0gICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gV0tSZXNvdXJjZUNhY2hlc1RvQ2xl
YXJBbGwpCi0gICAgICAgIHdlYnNpdGVEYXRhVHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlz
a0NhY2hlKTsKLQotICAgIHJldHVybiB3ZWJzaXRlRGF0YVR5cGVzOworICAgIHJldHVybiAwOwog
fQogCi12b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMoV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFjaykKK3ZvaWQgV0tSZXNv
dXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVm
LCB2b2lkKiwgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uKQog
ewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxX
S1dlYnNpdGVEYXRhU3RvcmVSZWY+KGNhY2hlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7
Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5mZXRjaERhdGEodG9XZWJzaXRlRGF0YVR5cGVzKFdLUmVz
b3VyY2VDYWNoZXNUb0NsZWFyQWxsKSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdKGF1dG8gZGF0
YVJlY29yZHMpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5
T3JpZ2luczsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29y
ZHMpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5v
cmlnaW5zKQotICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy5hcHBlbmQoQVBJOjpTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShzZWN1
cml0eU9yaWdpbnMpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwotICAgIH0pOwogfQogCi12
b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5hZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwg
V0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikKK3ZvaWQgV0tSZXNvdXJjZUNh
Y2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4oV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiwg
V0tTZWN1cml0eU9yaWdpblJlZiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgYXV0
byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURh
dGFTdG9yZVJlZj4oY2FjaGVNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLQotICAgIFZl
Y3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gZGF0YVJlY29yZHM7Ci0KLSAgICB7Ci0gICAgICAgIFdl
YnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNp
dGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigp
LmRhdGEoKSk7Ci0KLSAgICAgICAgZGF0YVJlY29yZHMuYXBwZW5kKGRhdGFSZWNvcmQpOwotICAg
IH0KLQotICAgIGlmIChjYWNoZXNUb0NsZWFyID09IFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyQWxs
KSB7Ci0gICAgICAgIFdlYnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgICAgIGRhdGFS
ZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCB0b0ltcGwob3JpZ2luKS0+c2Vj
dXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotCi0gICAgICAgIGRhdGFSZWNvcmRzLmFwcGVuZChkYXRh
UmVjb3JkKTsKLSAgICB9Ci0KLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEodG9XZWJz
aXRlRGF0YVR5cGVzKGNhY2hlc1RvQ2xlYXIpLCBkYXRhUmVjb3JkcywgW10geyB9KTsKIH0KIAot
dm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFsbE9yaWdpbnMoV0tSZXNv
dXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFy
IGNhY2hlc1RvQ2xlYXIpCit2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9y
QWxsT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmLCBXS1Jlc291cmNlQ2FjaGVzVG9D
bGVhcikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0
X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihjYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFT
dG9yZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YSh0b1dlYnNpdGVEYXRhVHlw
ZXMoY2FjaGVzVG9DbGVhciksIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW10geyB9KTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyX2gKIAogI2luY2x1ZGUg
PFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CiAKICNp
ZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0zOCwxMyArMzksMTMgQEAgZW51bSB7
CiB9OwogdHlwZWRlZiB1aW50MzJfdCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhcjsKIAotV0tfRVhQ
T1JUIFdLVHlwZUlEIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRUeXBlSUQoKTsKK1dLX0VYUE9S
VCBXS1R5cGVJRCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0VHlwZUlEKCkgV0tfQ19BUElfREVQ
UkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hl
T3JpZ2luc0Z1bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBP
UlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zKFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJSZWYgY29udGV4dFJlZiwgdm9pZCogY29udGV4dCwgV0tSZXNvdXJjZUNhY2hl
TWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lk
IFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFu
YWdlclJlZiBjb250ZXh0UmVmLCB2b2lkKiBjb250ZXh0LCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2Vy
R2V0Q2FjaGVPcmlnaW5zRnVuY3Rpb24gZnVuY3Rpb24pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAK
LVdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2lu
KFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5nZXIsIFdLU2VjdXJpdHlPcmlnaW5S
ZWYgb3JpZ2luLCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKTsKLVdLX0VY
UE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhX
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwgV0tSZXNvdXJjZUNhY2hlc1Rv
Q2xlYXIgY2FjaGVzVG9DbGVhcik7CitXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyQ2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFu
Z2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIg
Y2FjaGVzVG9DbGVhcikgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lkIFdLUmVz
b3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVN
YW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9D
bGVhcikgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAKICNpbmNsdWRlICJXS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCIKIAogI2luY2x1
ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1
ZGUgIkFQSUhUVFBDb29raWVTdG9yZS5oIgogI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mu
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKQEAgLTQxLDI5ICs0MSwzMCBAQAogI2luY2x1ZGUg
IldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0Fn
Z3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIFdLVHlwZUlEIFdLV2Vic2l0ZURh
dGFTdG9yZUdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OkFQSVR5cGUpOwogfQogCiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
V0tXZWJzaXRlRGF0YVN0b3JlR2V0RGVmYXVsdERhdGFTdG9yZSgpCiB7Ci0gICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRy
KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpKTsKIH0KIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdL
V2Vic2l0ZURhdGFTdG9yZUNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKQogewotICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNp
c3RlbnREYXRhU3RvcmUoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKS5sZWFrUmVmKCkp
OwogfQogCiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlV2l0
aENvbmZpZ3VyYXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblJlZiBjb25maWd1
cmF0aW9uKQogewogICAgIGF1dG8gc2Vzc2lvbklEID0gV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJh
dGlvbiktPmlzUGVyc2lzdGVudCgpID8gUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlUGVyc2lzdGVu
dFNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlRXBoZW1lcmFsU2Vzc2lvbklE
KCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3Jl
YXRlKCpXZWJLaXQ6OnRvSW1wbChjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKS5sZWFrUmVmKCkp
OworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNy
ZWF0ZSgqV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJhdGlvbiksIHNlc3Npb25JRCkubGVha1JlZigp
KTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZSkK
QEAgLTgzLDEzICs4NCwxMyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9h
ZFN0CiAKIFdLSFRUUENvb2tpZVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUdldEhUVFBDb29r
aWVTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKQogewotICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5odHRwQ29va2ll
U3RvcmUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPmNvb2tpZVN0b3JlKCkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVXaXRoQ29tcGxldGlvbkhhbmRsZXIoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWJ1Z01vZGVGdW5jdGlvbiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGVuYWJsZSwgW2NvbnRleHQsIGNvbXBsZXRpb25I
YW5kbGVyXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGUsIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
cl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsKICNlbHNl
CkBAIC0xMDAsNyArMTAxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc0RlYnVnTW9kZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdN
b2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQs
IGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMTEwLDcg
KzExMSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3QKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGRvdWJsZSBzZWNvbmRzLCB2b2lk
KiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzTGFzdFNlZW5GdW5jdGlvbiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXRMYXN0U2VlbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFNl
Y29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldExhc3RTZWVuKFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQs
IGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQp
OwogICAgIH0pOwogI2Vsc2UKQEAgLTEyMSw3ICsxMjIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NMYXN0CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3Rp
Y3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0
YVN0b3JlKCk7CisgICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZhbHVlKQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3Jl
LnNldFByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CkBAIC0xMzksNyArMTQwLDcg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldgogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVz
b3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byYgd2Vic2l0
ZURhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZh
bHVlKQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlLnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21w
bGV0aW9uSGFuZGxlcl0gewpAQCAtMTU3LDcgKzE1OCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1ZlcnkKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlRHVtcFJlc291cmNl
TG9hZFN0YXRpc3RpY3MoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3NGdW5j
dGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kdW1w
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbY29udGV4dCwgY2FsbGJhY2tdIChjb25zdCBTdHJpbmcm
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbY29udGV4dCwgY2FsbGJhY2tdIChjb25z
dCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKICAgICAgICAgY2FsbGJhY2soV2Vi
S2l0Ojp0b0FQSShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmltcGwoKSksIGNvbnRleHQpOwogICAg
IH0pOwogI2Vsc2UKQEAgLTE2OCw3ICsxNjksNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUR1
bXBSZXNvdXJjZUxvYWRTCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJz
aXRlRGF0YVN0b3JlKCkuaXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ByZXZhbGVu
dFJlc291cmNlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNQcmV2YWxl
bnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKSB7CiAgICAgICAgIGNh
bGxiYWNrKGlzUHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAg
LTE3OSw3ICsxODAsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZh
CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJj
ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmlzVmVyeVByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzVmVyeVByZXZhbGVudFJl
c291cmNlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsKICAgICAg
ICAgY2FsbGJhY2soaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwog
I2Vsc2UKQEAgLTE5MCw3ICsxOTEsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRB
c1N1YnJlc291cmNlVW5kZXIoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tT
dHJpbmdSZWYgc3VicmVzb3VyY2VIb3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXJGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChzdWJyZXNvdXJjZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJv
b2wgaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNr
XShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikgewogICAgICAgICBjYWxsYmFj
ayhpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIsIGNvbnRleHQpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTIwMSw3ICsyMDIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1
YkZyYW1lVW5kZXIoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgc3ViRnJhbWVIb3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXJG
dW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5p
c1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJG
cmFtZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVI
b3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNT
dWJGcmFtZVVuZGVyKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNSZWdp
c3RlcmVkQXNTdWJGcmFtZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVI
b3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJh
bWVVbmRlcikgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIs
IGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIxMiw3ICsyMTMsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlz
U3RhdGlzdGljc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tLCBXS1N0cmluZ1Jl
ZiBob3N0UmVkaXJlY3RlZFRvLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0
YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGlu
Z1RvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmco
KSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8p
IHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5pc1JlZ2lzdGVyZWRBc1JlZGly
ZWN0aW5nVG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5z
dHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbykgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8sIGNv
bnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIyMyw3ICsyMjQsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNv
bXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgYXV0byYgZGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIGRhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZhbHVlKQogICAgICAgICBkYXRhU3RvcmUubG9nVXNl
ckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CkBAIC0yNDEsNyArMjQyLDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSAogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlSXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uRnVuY3Rpb24gY2FsbGJh
Y2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaGFzSGFkVXNlckludGVy
YWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbikgeworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBo
YXNIYWRVc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSGFkVXNlckludGVy
YWN0aW9uLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yNTIsMTQgKzI1MywxNCBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hhc0hhCiB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0R3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIHZhbHVlLCBbXSB7IH0pOworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldEdyYW5kZmF0aGVyZWQoVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCB2YWx1ZSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZEZ1bmN0aW9uIGNh
bGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhhc0hhZFVzZXJJ
bnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc0dyYW5kZmF0aGVyZWQpIHsKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNH
cmFuZGZhdGhlcmVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzR3JhbmRmYXRoZXJlZCwgY29udGV4
dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMjcwLDQ5ICsyNzEsNDkgQEAgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NHcmFuZAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCkK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9
KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9
KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0KQogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbXSB7IH0pOwor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbXSB7IH0p
OwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKQogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW10geyB9KTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtdIHsg
fSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKQog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSks
IFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0U3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3Ry
aW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0
cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0
ZWRUbykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkp
LCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSks
IFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
KSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkp
LCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJv
bSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0RnJvbShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkp
LCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJp
bmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBmcm9tSG9zdCwgV0tTdHJpbmdSZWYgdG9I
b3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NT
aXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRp
b25Gb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoZnJvbUhvc3QpLT5zdHJpbmco
KSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9Ib3N0KS0+c3RyaW5nKCkpLCBbY29udGV4
dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRDcm9z
c1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGZyb21Ib3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRv
SG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNr
KGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTMyMyw3ICszMjQsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDcm9zCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNh
bGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFRpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNr
XSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0VGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbihTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAg
ICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMzM0LDcgKzMzNSw3
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWUKIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNGdW5jdGlv
biBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVs
ZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoW2NvbnRleHQsIGNhbGxiYWNrXSB7
CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1bGVTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHNQcm9jZXNzaW5nKFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxs
YmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0zNDUsNyArMzQ2LDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vzcwogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Vw
ZGF0ZUNvb2tpZUJsb2NraW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShb
Y29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdKCkgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbnRleHQsIGNvbXBsZXRp
b25IYW5kbGVyXSgpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAg
fSk7CiAjZWxzZQpAQCAtMzU2LDIxICszNTcsMjEgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzVXBkYXRlQwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzU3VibWl0
VGVsZW1ldHJ5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc3VibWl0VGVsZW1ldHJ5KCk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c3VibWl0VGVsZW1ldHJ5KCk7CiAjZW5kaWYKIH0KIAog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJl
Y29yZHNXZXJlU2Nhbm5lZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29s
IHZhbHVlKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUsIFtdIHsgfSk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZCh2YWx1ZSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Rlc3QodmFsdWUsIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KHZhbHVl
LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAg
fSk7CiAjZWxzZQpAQCAtMzgxLDQ5ICszODIsNDkgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzSXNSdQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hv
dWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNv
cmRzUmVtb3ZhbCh2YWx1ZSwgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFs
KHZhbHVlLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZCh2YWx1ZSwgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNl
dE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKHZhbHVlLCBbXSgpIHsgfSk7CiAj
ZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTWluaW11bVRp
bWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIGRvdWJsZSBzZWNvbmRzKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHsgc2Vj
b25kcyB9LCBbXSgpIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0
TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMgeyBzZWNvbmRzIH0s
IFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgZG91YmxlIHNlY29uZHMpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtdKCkgeyB9KTsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vj
b25kcyB7IHNlY29uZHMgfSwgW10oKSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc01heFN0YXRpc3RpY3NFbnRyaWVzKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVkIGVudHJpZXMpCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TWF4U3RhdGlzdGljc0VudHJpZXMoZW50cmllcywgW10o
KSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE1heFN0YXRpc3Rp
Y3NFbnRyaWVzKGVudHJpZXMsIFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcnVuZUVudHJpZXNEb3duVG8oV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgdW5zaWduZWQgZW50cmllcykKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQcnVuZUVudHJpZXNEb3duVG8oZW50cmllcywgW10oKSB7
IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFBydW5lRW50cmllc0Rv
d25UbyhlbnRyaWVzLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZUZ1bmN0aW9uIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6
OlllcywgW2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdlYktpdDo6U2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAg
ICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTQzNCw3ICs0MzUsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZp
ZWRTaW5jZUhvdXJzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVk
IGhvdXJzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vyc0Z1bmN0aW9uIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWU6Om5vdygpIC0gU2Vjb25kczo6ZnJvbUhvdXJz
KGhvdXJzKSwgV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6OlllcywgW2NvbnRl
eHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lOjpub3coKSAtIFNlY29uZHM6
OmZyb21Ib3Vycyhob3VycyksIFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZ
ZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwog
ICAgIH0pOwogI2Vsc2UKQEAgLTQ0NSw3ICs0NDYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NDbGVhckluCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVh
clRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhy
b3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNl
dDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGlt
ZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhj
b250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTQ1Myw3ICs0NTQsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NDbGVhclRoCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NEZWxldGVDb29raWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVz
dGluZ0Z1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgW2NvbnRleHQsIGNhbGxiYWNr
XSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZGVsZXRlQ29va2llc0ZvclRl
c3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBpbmNsdWRl
SHR0cE9ubHlDb29raWVzLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2so
Y29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNDY0LDcgKzQ2NSw3IEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUMKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc0hhc0xvY2FsU3RvcmFnZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0
aXN0aWNzSGFzTG9jYWxTdG9yYWdlRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuaGFzTG9jYWxTdG9yYWdlRm9yVGVzdGluZyhVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9v
bCBoYXNMb2NhbFN0b3JhZ2UpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5o
YXNMb2NhbFN0b3JhZ2VGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhhc0xvY2FsU3RvcmFnZSkgewog
ICAgICAgICBjYWxsYmFjayhoYXNMb2NhbFN0b3JhZ2UsIGNvbnRleHQpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTQ3NSw3ICs0NzYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NI
YXNMb2NhCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNh
cChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcywgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2Fw
RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29uZHMg
fSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29u
ZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwog
ICAgIH0pOwogI2Vsc2UKQEAgLTQ4Niw3ICs0ODcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NDYWNoCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJ
c29sYXRlZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJp
bmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hh
c0lzb2xhdGVkU2Vzc2lvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLmhhc0lzb2xhdGVkU2Vzc2lvbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wg
aGFzSXNvbGF0ZWRTZXNzaW9uKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
aGFzSXNvbGF0ZWRTZXNzaW9uRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNJc29sYXRlZFNlc3Np
b24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSXNvbGF0ZWRTZXNzaW9uLCBjb250ZXh0KTsKICAg
ICB9KTsKICNlbHNlCkBAIC01MDEsNyArNTAyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzUmVzZXRUbwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAg
ICB9KTsKIAotICAgIGF1dG8mIHN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHN0b3JlID0gKldlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZik7CiAgICAgc3RvcmUuY2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzSW5XZWJQ
cm9jZXNzZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVm
KCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0g
eyB9KTsKICAgICBzdG9yZS5yZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9y
VGVzdGluZyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0geyB9KTsKQEAgLTUxNiw3ICs1MTcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NSZXNldFRvCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spCiB7
CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJL
aXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRp
bWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5
KCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAg
ICB9KTsKIH0KQEAgLTUyOCw3ICs1MjksNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92
ZUZldGNoQ2FjaGVGCiAgICAgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFS
ZWNvcmRzID0geyBXVEZNb3ZlKGRhdGFSZWNvcmQpIH07CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpE
T01DYWNoZTsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIGRhdGFSZWNvcmRzLCBbY29udGV4dCwgY2FsbGJh
Y2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFU
eXBlcywgZGF0YVJlY29yZHMsIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFj
ayhjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTUzNiw3ICs1MzcsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92
ZUFsbEluZGV4ZWREYXRhYmFzZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
dm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNl
c0NhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlczsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQs
IGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0
YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7
CiAgICAgaWYgKGNhbGxiYWNrKQogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsK
QEAgLTU0NSw3ICs1NDYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4
ZWRECiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVSZW1vdmVMb2NhbFN0b3JhZ2VDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8
V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFU
eXBlOjpMb2NhbFN0b3JhZ2U7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5
KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0
LCBjYWxsYmFja10gewogICAgICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgICAgICBjYWxsYmFj
ayhjb250ZXh0KTsKICAgICB9KTsKQEAgLTU1NSw3ICs1NTYsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zOwotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRh
dGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdh
bGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJh
Y2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTY2LDcgKzU2Nyw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVcKIAogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVHZXRGZXRjaENhY2hlT3JpZ2lucyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlT3JpZ2luc0Z1
bmN0aW9uIGNhbGxiYWNrKQogewotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNh
Y2hlLCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0YVJlY29yZHMpIHsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6OkRPTUNhY2hlLCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0YVJlY29y
ZHMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2lu
czsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsK
ICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5z
KQpAQCAtNTgwLDcgKzU4MSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNo
ZVNpemUKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBm
ZXRjaE9wdGlvbnMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXpl
czsKIAotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KS5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBmZXRjaE9wdGlv
bnMsIFtvcmlnaW4sIGNvbnRleHQsIGNhbGxiYWNrXSAoYXV0byBkYXRhUmVjb3JkcykgeworICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmZldGNoRGF0YShXZWJLaXQ6OldlYnNpdGVE
YXRhVHlwZTo6RE9NQ2FjaGUsIGZldGNoT3B0aW9ucywgW29yaWdpbiwgY29udGV4dCwgY2FsbGJh
Y2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CiAgICAgICAgIGF1dG8gb3JpZ2luRGF0YSA9IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFdlYktpdDo6dG9JbXBsKG9yaWdp
biktPnN0cmluZygpKS0+ZGF0YSgpOwogICAgICAgICBmb3IgKGF1dG8mIGRhdGFSZWNvcmQgOiBk
YXRhUmVjb3JkcykgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWNvcmRPcmlnaW4g
OiBkYXRhUmVjb3JkLm9yaWdpbnMpIHsKQEAgLTU5NywyMyArNTk4LDIzIEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemUKIAogV0tTdHJpbmdSZWYgV0tXZWJzaXRlRGF0
YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQ
SShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0Nv
cGllZEFQSShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSkK
IHsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShXZWJLaXQ6OnRvSW1wbChzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KS0+c3RyaW5nKCkpOworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkoV2ViS2l0Ojp0b0ltcGwoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSktPnN0
cmluZygpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmlnaW5TdG9yYWdl
UXVvdGEoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdWludDY0X3QgcXVvdGEp
CiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnNldFBlck9yaWdpblN0b3JhZ2VRdW90YShxdW90YSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+c2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKHF1b3RhKTsKIH0KIAogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsbERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbnMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKICNpZiBFTkFCTEUoREVWSUNFX09S
SUVOVEFUSU9OKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRh
U3RvcmUoKS5kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIoKS5jbGVh
clBlcm1pc3Npb25zKCk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZGV2aWNl
T3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKCkuY2xlYXJQZXJtaXNzaW9ucygp
OwogI2VuZGlmCiB9CiAKQEAgLTcxMywxNCArNzE0LDE0IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0V2ViQXV0aGVudGljYXQKICAgICAgICAgY29uZmlndXJhdGlvbi5uZmMgPSBXVEZNb3Zl
KG5mYyk7CiAgICAgfQogCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV1RGTW92
ZShjb25maWd1cmF0aW9uKSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJp
YnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBZENsaWNr
QXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQog
ewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2Vi
S2l0OjpXZWJzaXRlRGF0YVR5cGU6OkFkQ2xpY2tBdHRyaWJ1dGlvbnM7Ci0gICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5
cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHJldmlzaW9uIDI0
OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiV0tXZWJz
aXRlUG9saWNpZXMuaCIKIAogI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJB
UElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgogI2luY2x1ZGUgIldL
RGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV2Vic2l0
ZURhdGFTdG9yZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRl
RGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2Vic2l0ZURh
dGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3VybFByb3h5U2V0dGluZ3MuaD4KICNpbmNs
dWRlIDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5o
PgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRh
U3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShyZXZpc2lvbiAyNDk3MzIpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCShub25leGlzdGVudCkKQEAgLTEsMTk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotCi0j
aW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2luY2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMu
aCIKLSNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLSNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbXBvcnQgPFdlYkNvcmUv
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIEFQSSB7Ci0K
LU5TU3RyaW5nICpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJEYXRhYmFz
ZURpcmVjdG9yeSI7Ci1OU1N0cmluZyAqV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0g
QCJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5IjsKLU5TU3RyaW5n
ICpXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdE1lZGlhQ2Fj
aGVEaXJlY3RvcnkiOwotTlNTdHJpbmcgKldlYktpdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlE
ZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSI7Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KCkKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIC8vIFRoaXMgcXVpcmsgdXNlZCB0
byBtYWtlIHRoZXNlIGFwcHMgc2hhcmUgYXBwbGljYXRpb24gY2FjaGUgc3RvcmFnZSwgYnV0IGRv
ZXNuJ3QgYWNjb21wbGlzaCB0aGF0IGFueSBtb3JlLgotICAgIC8vIFByZXNlcnZpbmcgaXQgYXZv
aWRzIHRoZSBuZWVkIHRvIG1pZ3JhdGUgZGF0YSB3aGVuIHVwZ3JhZGluZy4KLSAgICAvLyBGSVhN
RTogSWRlYWxseSB3ZSBzaG91bGQganVzdCBoYXZlIFNhZmFyaSwgV2ViQXBwLCBhbmQgd2ViYm9v
a21hcmtzZCBjcmVhdGUgYSBkYXRhIHN0b3JlIHdpdGgKLSAgICAvLyB0aGlzIGFwcGxpY2F0aW9u
IGNhY2hlIHBhdGgsIGJ1dCB0aGF0J3Mgbm90IHN1cHBvcnRlZCBhcyBvZiByaWdodCBub3cuCi0g
ICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNv
cmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkFwcCgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9u
Ojppc1dlYkJvb2ttYXJrc0QoKSkgewotICAgICAgICBOU1N0cmluZyAqY2FjaGVQYXRoID0gW05T
SG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkv
Q2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJdOwotCi0gICAgICAgIHJldHVybiBXZWJLaXQ6
OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY2FjaGVQYXRoLnN0cmluZ0J5U3RhbmRh
cmRpemluZ1BhdGgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSIpOwot
fQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGly
ZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIkNhY2hlU3RvcmFnZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSIpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCi17
Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlh
Q2FjaGUiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4ZWREQiIpOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKCJTZXJ2aWNlV29ya2VycyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkxvY2FsU3RvcmFnZSIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJNZWRpYUtleXMiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIldlYlNRTCIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Ci19Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIkphdmFTY3JpcHRDb3JlRGVidWciLCBEb250Q3JlYXRlRGlyZWN0b3J5KTsKLX0KLQot
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRl
RGlyZWN0b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hf
b25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKnRlbXBVUkw7Ci0gICAgCi0gICAg
ZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBOU1VSTCAqdXJsID0gW05TVVJM
IGZpbGVVUkxXaXRoUGF0aDpOU1RlbXBvcmFyeURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107
Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgCi0gICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVy
KCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxl
IG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWJ1bmRsZUlk
ZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJ
bmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKLSAgICAgICAgICAgIHVybCA9IFt1cmwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVT
XTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcFVSTCA9IFtbdXJsIFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOwot
ICAgIH0pOwotICAgIAotICAgIE5TVVJMICp1cmwgPSBbdGVtcFVSTCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOwotCi0gICAgaWYgKHNo
b3VsZENyZWF0ZURpcmVjdG9yeSA9PSBDcmVhdGVEaXJlY3RvcnkKLSAgICAgICAgJiYgKCFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRo
SW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJd
KSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVy
bCk7Ci0gICAgCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbjsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgc3Rh
dGljIE5TVVJMICpjYWNoZVVSTDsKLQotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsK
LSAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gVVJM
Rm9yRGlyZWN0b3J5Ok5TQ2FjaGVzRGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sg
YXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07Ci0gICAg
ICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LQotICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7Ci0gICAgICAg
ICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5i
dW5kbGVJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQotICAg
ICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5m
b10ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107Ci0gICAgICAgIH0K
LQotICAgICAgICBjYWNoZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOwotICAgIH0pOwotCi0gICAgTlNVUkwg
KnVybCA9IFtjYWNoZVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFt
ZSBpc0RpcmVjdG9yeTpZRVNdOwotICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVz
OllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKLSAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7Ci0KLSAgICByZXR1cm4gdXJsLmFi
c29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKndlYnNpdGVEYXRh
VVJMOwotCi0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBOU1VSTCAq
dXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNM
aWJyYXJ5RGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JV
Ukw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07Ci0gICAgICAgIGlmICghdXJsKQot
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgICAgICB1cmwg
PSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6
WUVTXTsKLQotICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7Ci0g
ICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVu
ZGxlXS5idW5kbGVJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVy
KQotICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9j
ZXNzSW5mb10ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107Ci0gICAg
ICAgIH0KLQotICAgICAgICB3ZWJzaXRlRGF0YVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07Ci0gICAg
fSk7Ci0KLSAgICBOU1VSTCAqdXJsID0gW3dlYnNpdGVEYXRhVVJMIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107Ci0gICAgaWYgKCFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRo
SW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJd
KQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJs
KTsKLQotICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50
YXRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsMTcgKzEwNSwxNyBAQCBwcml2
YXRlOgogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilkZWZhdWx0RGF0YVN0b3JlCiB7Ci0gICAg
cmV0dXJuIHdyYXBwZXIoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkp
OworICAgIHJldHVybiB3cmFwcGVyKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERh
dGFTdG9yZSgpKTsKIH0KIAogKyAoV0tXZWJzaXRlRGF0YVN0b3JlICopbm9uUGVyc2lzdGVudERh
dGFTdG9yZQogewotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3Jl
YXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcihXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKSk7CiB9CiAKIC0gKHZvaWQp
ZGVhbGxvYwogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5BUEk6OldlYnNpdGVEYXRhU3RvcmU6
On5XZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPldlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKTsKIAogICAgIFtzdXBlciBkZWFsbG9j
XTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCArIChOU1NldCAqKWFsbFdlYnNpdGVEYXRhVHlwZXMK
IAogLSAoV0tIVFRQQ29va2llU3RvcmUgKilodHRwQ29va2llU3RvcmUKIHsKLSAgICByZXR1cm4g
d3JhcHBlcihfd2Vic2l0ZURhdGFTdG9yZS0+aHR0cENvb2tpZVN0b3JlKCkpOworICAgIHJldHVy
biB3cmFwcGVyKF93ZWJzaXRlRGF0YVN0b3JlLT5jb29raWVTdG9yZSgpKTsKIH0KIAogc3RhdGlj
IFdhbGxUaW1lIHRvU3lzdGVtQ2xvY2tUaW1lKE5TRGF0ZSAqZGF0ZSkKQEAgLTE4Niw3ICsxODYs
NyBAQCAtICh2b2lkKWZldGNoRGF0YVJlY29yZHNPZlR5cGVzOihOU1NldCAqCiAtICh2b2lkKXJl
bW92ZURhdGFPZlR5cGVzOihOU1NldCAqKWRhdGFUeXBlcyBtb2RpZmllZFNpbmNlOihOU0RhdGUg
KilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxl
cgogewogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKTsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnJlbW92ZURhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwgdG9TeXN0
ZW1DbG9ja1RpbWUoZGF0ZSA/IGRhdGUgOiBbTlNEYXRlIGRpc3RhbnRQYXN0XSksIFtjb21wbGV0
aW9uSGFuZGxlckNvcHldIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+cmVtb3ZlRGF0YShXZWJL
aXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCB0b1N5c3RlbUNsb2NrVGltZShkYXRl
ID8gZGF0ZSA6IFtOU0RhdGUgZGlzdGFudFBhc3RdKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0g
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkoKTsKICAgICB9KTsKIH0KQEAgLTIwNSw3
ICsyMDUsNyBAQCAtICh2b2lkKXJlbW92ZURhdGFPZlR5cGVzOihOU1NldCAqKWRhdGFUCiB7CiAg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpOwogCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1v
dmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIHRvV2Vic2l0ZURh
dGFSZWNvcmRzKGRhdGFSZWNvcmRzKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0geworICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT5yZW1vdmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRh
dGFUeXBlcyksIHRvV2Vic2l0ZURhdGFSZWNvcmRzKGRhdGFSZWNvcmRzKSwgW2NvbXBsZXRpb25I
YW5kbGVyQ29weV0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkoKTsKICAgICB9KTsK
IH0KQEAgLTI0MCwxMiArMjQwLDEyIEBAICsgKE5TU2V0PE5TU3RyaW5nICo+ICopX2FsbFdlYnNp
dGVEYXRhVHkKIAogKyAoQk9PTClfZGVmYXVsdERhdGFTdG9yZUV4aXN0cwogewotICAgIHJldHVy
biBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCk7
CiB9CiAKICsgKHZvaWQpX2RlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nCiB7Ci0gICAg
cmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRl
c3RpbmcoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVEZWZh
dWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwogfQogCiAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRo
Q29uZmlndXJhdGlvbjooX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKiljb25maWd1
cmF0aW9uCkBAIC0yNTMsNyArMjUzLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZp
Z3VyYXRpb246KAogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgYXV0byBjb25maWcgPSBjb25maWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKSA6
IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOworICAgIGF1
dG8gY29uZmlnID0gY29uZmlndXJhdGlvbi5pc1BlcnNpc3RlbnQgPyBXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkgOiBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKIAogICAgIFJFTEVBU0VfQVNTRVJU
KGNvbmZpZy0+aXNQZXJzaXN0ZW50KCkgPT0gY29uZmlndXJhdGlvbi5pc1BlcnNpc3RlbnQpOwog
CkBAIC0zMTIsNyArMzEyLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRp
b246KAogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBjb25maWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/
IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZVBlcnNpc3RlbnRTZXNzaW9uSUQoKSA6IFBBTDo6U2Vz
c2lvbklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25JRCgpOwogCi0gICAgQVBJOjpPYmplY3Q6
OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OldlYnNpdGVEYXRhU3RvcmU+KHNlbGYsIFdURk1vdmUo
Y29uZmlnKSwgc2Vzc2lvbklEKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVy
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4oc2VsZiwgV1RGTW92ZShjb25maWcpLCBzZXNzaW9u
SUQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0zMjUsNyArMzI1LDcgQEAgLSAodm9pZClf
ZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0PAogICAgIGlmIChvcHRpb25zICYgX1dLV2Vi
c2l0ZURhdGFTdG9yZUZldGNoT3B0aW9uQ29tcHV0ZVNpemVzKQogICAgICAgICBmZXRjaE9wdGlv
bnMuYWRkKFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKTsKIAot
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZmV0Y2hEYXRhKFdlYktp
dDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIGZldGNoT3B0aW9ucywgW2NvbXBsZXRp
b25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXJDb3B5KV0oYXV0byB3ZWJz
aXRlRGF0YVJlY29yZHMpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+ZmV0Y2hEYXRhKFdlYktp
dDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIGZldGNoT3B0aW9ucywgW2NvbXBsZXRp
b25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXJDb3B5KV0oYXV0byB3ZWJz
aXRlRGF0YVJlY29yZHMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGVs
ZW1lbnRzOwogICAgICAgICBlbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHdlYnNpdGVE
YXRhUmVjb3Jkcy5zaXplKCkpOwogCkBAIC0zMzgsMTggKzMzOCwxOCBAQCAtICh2b2lkKV9mZXRj
aERhdGFSZWNvcmRzT2ZUeXBlczooTlNTZXQ8CiAKIC0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gX3dl
YnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7CiB9CiAKIC0g
KHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKIHsK
LSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKIH0KIAogLSAoQk9PTClfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOworICAgIHJldHVybiBfd2Vi
c2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOwogI2Vsc2UK
ICAgICByZXR1cm4gTk87CiAjZW5kaWYKQEAgLTM1OCw3ICszNTgsNyBAQCAtIChCT09MKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlCiAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGVidWdNb2RlOihCT09MKWVuYWJsZWQKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGVkKTsKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGVkKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBAIC0zNjYsMTA2ICsz
NjYsMTA2IEBAIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z00KIAogLSAo
TlNVSW50ZWdlcilfcGVyT3JpZ2luU3RvcmFnZVF1b3RhCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRl
RGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7Cisg
ICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5wZXJPcmlnaW5TdG9yYWdlUXVvdGEoKTsKIH0K
IAogLSAodm9pZClfc2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhOihOU1VJbnRlZ2VyKXNpemUKIHsK
LSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFBlck9yaWdpblN0
b3JhZ2VRdW90YShzaXplKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UGVyT3JpZ2luU3Rv
cmFnZVF1b3RhKHNpemUpOwogfQogCiAtIChOU1N0cmluZyAqKV9jYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5j
YWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmNh
Y2hlU3RvcmFnZURpcmVjdG9yeSgpOwogfQogCiAtICh2b2lkKV9zZXRDYWNoZVN0b3JhZ2VEaXJl
Y3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAg
ICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7
CiB9CiAKIC0gKE5TU3RyaW5nICopX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkK
IHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0
YVN0b3JlLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CiB9CiAKIC0gKHZv
aWQpX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6KE5TU3RyaW5nICopZGly
ZWN0b3J5CiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgX3dlYnNp
dGVEYXRhU3RvcmUtPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoZGlyZWN0
b3J5KTsKIH0KIAogLSAodm9pZClfc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOihOU1N0cmlu
ZyAqKWlkZW50aWZpZXIKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKGlkZW50aWZpZXIpOwogfQog
CiAtIChOU1N0cmluZyAqKV9ib3VuZEludGVyZmFjZUlkZW50aWZpZXIKIHsKLSAgICByZXR1cm4g
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5ib3VuZEludGVyZmFjZUlkZW50
aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmJvdW5kSW50ZXJmYWNlSWRl
bnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRBbGxvd3NDZWxsdWxhckFjY2VzczooQk9PTClh
bGxvd3MKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEFs
bG93c0NlbGx1bGFyQWNjZXNzKGFsbG93cyA/IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6
OlllcyA6IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6Ok5vKTsKKyAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+c2V0QWxsb3dzQ2VsbHVsYXJBY2Nlc3MoYWxsb3dzID8gV2ViS2l0OjpBbGxvd3ND
ZWxsdWxhckFjY2Vzczo6WWVzIDogV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6Tm8pOwog
fQogCiAtIChCT09MKV9hbGxvd3NDZWxsdWxhckFjY2VzcwogewotICAgIHJldHVybiBfd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmFsbG93c0NlbGx1bGFyQWNjZXNzKCkgPT0g
V2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzOworICAgIHJldHVybiBfd2Vic2l0ZURh
dGFTdG9yZS0+YWxsb3dzQ2VsbHVsYXJBY2Nlc3MoKSA9PSBXZWJLaXQ6OkFsbG93c0NlbGx1bGFy
QWNjZXNzOjpZZXM7CiB9CiAKIC0gKHZvaWQpX3NldFByb3h5Q29uZmlndXJhdGlvbjooTlNEaWN0
aW9uYXJ5ICopY29uZmlndXJhdGlvbgogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuc2V0UHJveHlDb25maWd1cmF0aW9uKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlS
ZWYpY29uZmlndXJhdGlvbik7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFByb3h5Q29uZmln
dXJhdGlvbigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNvbmZpZ3VyYXRpb24pOwogfQogCiAt
IChOU1N0cmluZyAqKV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIKIHsKLSAgICBy
ZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnNv
dXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRTb3Vy
Y2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcgogewot
ICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTb3VyY2VB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgaWYgKCFfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGlkZW50aWZp
ZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1h
dDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgY2Fubm90IGJlIGNhbGxl
ZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJdOwogfQogCiAtIChOU1N0cmluZyAqKV9zb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVE
YXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlk
ZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnNvdXJjZUFwcGxpY2F0
aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRTb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcgogewotICAgIGlm
ICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgaWYgKCFfd2Vic2l0ZURh
dGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKGlkZW50aWZp
ZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1h
dDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgY2Fubm90IGJlIGNh
bGxlZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJdOwogfQogCiAtICh2b2lkKV9zZXRBbGxv
d3NUTFNGYWxsYmFjazooQk9PTClhbGxvd3MKIHsKLSAgICBpZiAoIV93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0QWxsb3dzVExTRmFsbGJhY2soYWxsb3dzKSkKKyAgICBp
ZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRBbGxvd3NUTFNGYWxsYmFjayhhbGxvd3MpKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1hdDpAIl9zZXRB
bGxvd3NUTFNGYWxsYmFjayBjYW5ub3QgYmUgY2FsbGVkIGFmdGVyIG5ldHdvcmtpbmcgaGFzIGJl
Z3VuIl07CiB9CiAKIC0gKEJPT0wpX2FsbG93c1RMU0ZhbGxiYWNrCiB7Ci0gICAgcmV0dXJuIF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJhY2soKTsK
KyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmFsbG93c1RMU0ZhbGxiYWNrKCk7CiB9CiAK
IC0gKE5TRGljdGlvbmFyeSAqKV9wcm94eUNvbmZpZ3VyYXRpb24KIHsKLSAgICByZXR1cm4gKF9f
YnJpZGdlIE5TRGljdGlvbmFyeSAqKV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucHJveHlDb25maWd1cmF0aW9uKCk7CisgICAgcmV0dXJuIChfX2JyaWRnZSBOU0RpY3Rpb25h
cnkgKilfd2Vic2l0ZURhdGFTdG9yZS0+cHJveHlDb25maWd1cmF0aW9uKCk7CiB9CiAKIC0gKE5T
VVJMICopX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5CiB7Ci0gICAgcmV0dXJuIFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6X3dlYnNpdGVEYXRhU3RvcmUtPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpfd2Vic2l0ZURhdGFTdG9yZS0+Y29uZmlndXJhdGlvbigpLmluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAogLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NldFNob3VsZFN1Ym1pdFRlbGVtZXRyeTooQk9PTCl2YWx1ZQogewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAg
ICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCk7CiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00ODAsMTMgKzQ4MCwx
MyBAQCAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChjYWxsYmFjaykgewotICAgICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soW2NhbGxiYWNr
ID0gbWFrZUJsb2NrUHRyKGNhbGxiYWNrKSwgc2VsZl0oY29uc3QgU3RyaW5nJiBldmVudCkgewor
ICAgICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhb
Y2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoY2FsbGJhY2spLCBzZWxmXShjb25zdCBTdHJpbmcmIGV2
ZW50KSB7CiAgICAgICAgICAgICBjYWxsYmFjayhzZWxmLCBldmVudCk7CiAgICAgICAgIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKG51bGxwdHIpOworICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT5zZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKG51bGxwdHIpOwog
I2VuZGlmCiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNj
ZXNzRW50cmllc0ZvcjooCiAgICAgfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKHdlYlBhZ2VQcm94eS0+aWRlbnRpZmllcigpLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGRvbWFpbnMp
IHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMod2Vi
UGFnZVByb3h5LT5pZGVudGlmaWVyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZG9tYWlucykgewogICAgICAgICBWZWN0b3I8UmVm
UHRyPEFQSTo6T2JqZWN0Pj4gYXBpRG9tYWluczsKICAgICAgICAgYXBpRG9tYWlucy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGRvbWFpbnMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBkb21h
aW4gOiBkb21haW5zKQpAQCAtNTI0LDcgKzUyNCw3IEBAIC0gKHZvaWQpX2dldEFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzRm9yOigKIC0gKHZvaWQpX3NjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGU6
KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUt
PnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTM1LDcgKzUzNSw3IEBAIC0gKHZvaWQpX3NjaGVkdWxl
Q29va2llQmxvY2tpbmdVcGRhdGU6KHYKIC0gKHZvaWQpX3NldFByZXZhbGVudERvbWFpbjooTlNV
UkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25I
YW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFByZXZhbGVudFJlc291cmNlKFVS
TChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UHJldmFsZW50UmVzb3VyY2Uo
VVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTU0Niw3ICs1NDYsNyBAQCAtICh2b2lkKV9zZXRQcmV2YWxlbnREb21haW46KE5TVVJM
ICopZG9tCiAtICh2b2lkKV9nZXRJc1ByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb21haW4gY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZW5h
YmxlZCkgeworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChk
b21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXShib29sIGVuYWJsZWQpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW5hYmxlZCk7
CiAgICAgfSk7CiAjZWxzZQpAQCAtNTU3LDcgKzU1Nyw3IEBAIC0gKHZvaWQpX2dldElzUHJldmFs
ZW50RG9tYWluOihOU1VSTCAqKWQKIC0gKHZvaWQpX2NsZWFyUHJldmFsZW50RG9tYWluOihOU1VS
TCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhh
bmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShV
UkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3Vy
Y2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwog
I2Vsc2UKQEAgLTU2OCw3ICs1NjgsNyBAQCAtICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbjoo
TlNVUkwgKilkCiAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOih2b2lk
ICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5z
Y2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVE
YXRhU3RvcmUtPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhbY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKICNlbHNlCkBAIC01NzgsMTggKzU3
OCwxOCBAQCAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzCiAKIC0gKGJv
b2wpX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyCiB7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMoV2ViQ29yZTo6c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGFiYXNlRmls
ZW5hbWUoX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhXZWJDb3JlOjpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShf
d2Vic2l0ZURhdGFTdG9yZS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7
CiB9CiAKIC0gKGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+KV9kZWxlZ2F0ZQogewot
ICAgIHJldHVybiBfZGVsZWdhdGUuZ2V0KCk7CisgICAgcmV0dXJuIF9kZWxlZ2F0ZS5nZXQoKS5n
ZXQoKTsKIH0KIAogLSAodm9pZClzZXRfZGVsZWdhdGU6KGlkIDxfV0tXZWJzaXRlRGF0YVN0b3Jl
RGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgX3dl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRDbGllbnQobWFrZVVuaXF1ZVJl
ZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PihkZWxlZ2F0ZSkpOworICAgIF93ZWJzaXRlRGF0YVN0
b3JlLT5zZXRDbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PihkZWxl
Z2F0ZSkpOwogfQogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEyICsyNSwxMyBA
QAogCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgiCiAKLSNpbXBvcnQgIkFQ
SVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0ICJXZWJz
aXRlRGF0YVN0b3JlLmgiCisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpXZWJzaXRl
RGF0YVN0b3JlPiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPFdlYnNpdGVEYXRh
U3RvcmU+IHsKICAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBXS1dlYnNpdGVEYXRhU3RvcmU7CiB9
OwogCkBAIC0zOCw3ICszOSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJ
OjpXZWIKIAogQGludGVyZmFjZSBXS1dlYnNpdGVEYXRhU3RvcmUgKCkgPFdLT2JqZWN0PiB7CiBA
cGFja2FnZQotICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OldlYnNpdGVEYXRhU3RvcmU+IF93
ZWJzaXRlRGF0YVN0b3JlOwotICAgIFJldGFpblB0cjxpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURl
bGVnYXRlPiA+IF9kZWxlZ2F0ZTsKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8V2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlPiBfd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBXZWFrT2JqQ1B0cjxpZCA8X1dL
V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsKIH0KIEBlbmQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJz
aXRlRGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgSWdh
bGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFQSVdl
YnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVk
ZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgotCi0jaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBC
QVNFX0RJUkVDVE9SWSAid2Via2l0Z3RrIgotI2VsaWYgUExBVEZPUk0oV1BFKQotI2RlZmluZSBC
QVNFX0RJUkVDVE9SWSAid3BlIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBBUEkgewotCi1XVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
Ci17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJB
U0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJhcHBsaWNhdGlvbnMiKTsKLX0KLQotLy8g
RklYTUU6IFRoZSBvdGhlciBkaXJlY3RvcmllcyBpbiB0aGlzIGZpbGUgYXJlIHNoYXJlZCBiZXR3
ZWVuIGFsbCBhcHBsaWNhdGlvbnMgdXNpbmcgV2ViS2l0R1RLLgotLy8gV2h5IGlzIG9ubHkgdGhp
cyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24/Ci1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkK
LXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hlIikp
OwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdl
RGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIkNh
Y2hlU3RvcmFnZSIpKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQ
QVJBVE9SX1MgImRhdGFiYXNlcyIgR19ESVJfU0VQQVJBVE9SX1MgImluZGV4ZWRkYiIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJz
ZXJ2aWNld29ya2VycyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJB
VE9SX1MgImxvY2Fsc3RvcmFnZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdf
RElSX1NFUEFSQVRPUl9TICJtZWRpYWtleXMiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJ
UkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGV2aWNlaWRoYXNoc2FsdHMiKTsKLX0KLQotV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpCi17
Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkK
LXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNo
ZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBX
VEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxMiArMjAsMTIgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIu
aCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJLaXRD
b29raWVNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2Vic2l0ZURhdGFQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5o
IgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxnbGliL2dpMThuLWxp
Yi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3Rl
bS5oPgpAQCAtOTUsNyArOTUsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclBy
aXZhdGUgCiAgICAgICAgIEFTU0VSVChwcm9jZXNzUG9vbHMuaXNFbXB0eSgpKTsKICAgICB9CiAK
LSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiB3ZWJzaXRlRGF0YVN0b3JlOworICAg
IFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IHdlYnNpdGVEYXRhU3RvcmU7CiAgICAg
R1VuaXF1ZVB0cjxjaGFyPiBiYXNlRGF0YURpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRyPGNoYXI+
IGJhc2VDYWNoZURpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGxvY2FsU3RvcmFnZURp
cmVjdG9yeTsKQEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJzaXRlRGF0
YU1hbmFnZXJTZXRQCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9JU19FUEhFTUVSQUw6
CiAgICAgICAgIGlmIChnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSkKLSAgICAgICAgICAgIG1h
bmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNy
ZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKKyAgICAgICAgICAgIG1hbmFnZXItPnByaXYt
PndlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBl
cnNpc3RlbnQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpF
Q1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMpOwpA
QCAtMzg0LDI4ICszODQsMjggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyXwogV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJD
cmVhdGUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24p
CiB7CiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0gV0VCS0lUX1dFQlNJ
VEVfREFUQV9NQU5BR0VSKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJTSVRFX0RBVEFfTUFO
QUdFUiwgbnVsbHB0cikpOwotICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBB
UEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICBtYW5hZ2VyLT5wcml2LT53ZWJz
aXRlRGF0YVN0b3JlID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGTW92ZShj
b25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAKICAg
ICByZXR1cm4gbWFuYWdlcjsKIH0KIAotQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5h
Z2VyKQorV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJH
ZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyKQogewogICAgIFdl
YktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUqIHByaXYgPSBtYW5hZ2VyLT5wcml2OwogICAg
IGlmICghcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIGNv
bmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVjdG9yeSghcHJpdi0+bG9jYWxTdG9yYWdl
RGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExv
Y2FsU3RvcmFnZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAg
ICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
cml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAgY29uZmlndXJhdGlv
bi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCFwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkgPwot
ICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGly
ZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5kaXNrQ2FjaGVEaXJl
Y3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAgICAgICAgICAgIFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIDog
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgp
KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNl
dEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoIXByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmdldCgpKSk7CisgICAg
ICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAgY29u
ZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoIXByaXYtPndlYlNRTERpcmVj
dG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgICAgIFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkg
OiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPndl
YlNRTERpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRIU1RTU3Rv
cmFnZURpcmVjdG9yeSghcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+aHN0c0NhY2hlRGlyZWN0
b3J5LmdldCgpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpKTsKLSAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIFBBTDo6U2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgICAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKKyAg
ICAgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwor
ICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuICpwcml2LT53ZWJzaXRlRGF0YVN0b3Jl
OwpAQCAtNTQyLDcgKzU0Miw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIXByaXYtPmxvY2FsU3Rv
cmFnZURpcmVjdG9yeSkKLSAgICAgICAgcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LnJlc2V0
KGdfc3RyZHVwKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0
b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1cm4gcHJpdi0+bG9j
YWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpOwogfQogCkBAIC01NjYsNyArNTY2LDcgQEAgY29uc3Qg
Z2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgogCiAgICAgaWYgKCFwcml2LT5kaXNr
Q2FjaGVEaXJlY3RvcnkpIHsKICAgICAgICAgLy8gVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGFscmVh
ZHkgaGFzIHRoZSBzdWJkaXJlY3RvcnkuCi0gICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9y
eS5yZXNldChnX3N0cmR1cChGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7
CisgICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChGaWxlU3lz
dGVtOjpkaXJlY3RvcnlOYW1lKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQogICAgIHJldHVybiBw
cml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CkBAIC01OTAsNyArNTkwLDcgQEAgY29u
c3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGlmICghcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkKLSAgICAg
ICAgcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkudXRmOCgp
LmRhdGEoKSkpOworICAgICAgICBwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LnJlc2V0
KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgcmV0dXJuIHByaXYtPmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CiAKQEAgLTYxMyw3ICs2MTMsNyBAQCBjb25zdCBn
Y2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgaWYgKCFwcml2LT5pbmRleGVkREJEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPmlu
ZGV4ZWREQkRpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAg
ICAgcHJpdi0+aW5kZXhlZERCRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkudXRmOCgpLmRh
dGEoKSkpOwogICAgIHJldHVybiBwcml2LT5pbmRleGVkREJEaXJlY3RvcnkuZ2V0KCk7CiB9CiAK
QEAgLTYzOCw3ICs2MzgsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFwcml2LT53ZWJTUUxEaXJl
Y3RvcnkpCi0gICAgICAgIHByaXYtPndlYlNRTERpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLnV0Zjgo
KS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+d2ViU1FMRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVw
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCkudXRmOCgpLmRhdGEoKSkpOwogICAgIHJldHVybiBwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0
KCk7CiB9CiAKQEAgLTY2MSw3ICs2NjEsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFwcml2LT5o
c3RzQ2FjaGVEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPmhzdHNDYWNoZURpcmVjdG9yeS5yZXNl
dChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RTRGlyZWN0b3J5KCku
dXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkucmVzZXQo
Z19zdHJkdXAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgp
LnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1cm4gcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5Lmdl
dCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5LDEyICsxOSwx
MSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUu
aCIKIAogV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJD
cmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYpOwotQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUo
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKik7CitXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIHdl
YmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIqKTsKIHZvaWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQWRkUHJvY2Vzc1Bvb2woV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyKiwgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpOwogdm9pZCB3ZWJr
aXRXZWJzaXRlRGF0YU1hbmFnZXJSZW1vdmVQcm9jZXNzUG9vbChXZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIqLCBXZWJLaXQ6OldlYlByb2Nlc3NQb29sJik7CiBjb25zdCBWZWN0b3I8V2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCo+JiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9jZXNzUG9vbHMo
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAJKHJl
dmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vi
c2l0ZURhdGFTdG9yZVdpbi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw4OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0
YVN0b3JlLmgiCi0KLSNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgotCi1uYW1lc3BhY2UgQVBJ
IHsKLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBw
bGljYXRpb25DYWNoZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENh
Y2hlU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIkNhY2hlU3RvcmFnZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7Ci19Ci0KLVN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlNlcnZp
Y2VXb3JrZXJzIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxT
dG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9y
eSgpLCAiTG9jYWxTdG9yYWdlIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7Ci19Ci0KLVN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgp
Ci17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlJlc291cmNlTG9h
ZFN0YXRpc3RpY3MiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkK
LXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1l
KTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAkocmV2aXNp
b24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNTgsNyArMTM1OCw3IEBAIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNpbmdsZUNvb2sKICAgICAgICAgQVNZTkNfRkFJ
TF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1BhcmFtZXRlciwgIlRo
ZSBwYXJhbWV0ZXIgJ2h0dHBPbmx5JyB3YXMgbm90IGZvdW5kLiIpOwogCiAgICAgV2ViQ29va2ll
TWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxX
ZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29va2llTWFuYWdlci0+c2V0Q29va2llcyhw
YWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCksIHsgY29va2llIH0sIFtjYWxsYmFj
ayA9IGNhbGxiYWNrLmNvcHlSZWYoKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAg
IGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMocGFnZS0+c2Vzc2lvbklEKCksIHsgY29va2llIH0s
IFtjYWxsYmFjayA9IGNhbGxiYWNrLmNvcHlSZWYoKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJv
cikgewogICAgICAgICBpZiAoZXJyb3IgPT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKICAg
ICAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcygpOwogICAgICAgICBlbHNlCkBAIC0xMzc4
LDcgKzEzNzgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkZWxldGVBbGxDb29rCiAg
ICAgU3RyaW5nIGhvc3QgPSBhY3RpdmVVUkwuaG9zdCgpLnRvU3RyaW5nKCk7CiAKICAgICBXZWJD
b29raWVNYW5hZ2VyUHJveHkqIGNvb2tpZU1hbmFnZXIgPSBtX3Byb2Nlc3NQb29sLT5zdXBwbGVt
ZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLSAgICBjb29raWVNYW5hZ2VyLT5kZWxldGVD
b29raWVzRm9ySG9zdG5hbWVzKHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwg
eyBob3N0LCBkb21haW5CeUFkZGluZ0RvdFByZWZpeElmTmVlZGVkKGhvc3QpIH0pOworICAgIGNv
b2tpZU1hbmFnZXItPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMocGFnZS0+c2Vzc2lvbklEKCks
IHsgaG9zdCwgZG9tYWluQnlBZGRpbmdEb3RQcmVmaXhJZk5lZWRlZChob3N0KSB9KTsKIH0KIAog
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0U2Vzc2lvblBlcm1pc3Npb25zKEVycm9yU3Ry
aW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6U2Vzc2lvblBlcm1pc3Npb25EYXRhPj4mIG91dF9wZXJtaXNzaW9ucykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHJldmlz
aW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogI2ltcG9ydCAiQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIkFQSVN0cmluZy5oIgogI2ltcG9ydCAiQVBJVVJM
LmgiCi0jaW1wb3J0ICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uQ29jb2EuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25M
aXN0ZW5lci5oIgpAQCAtNjQsNiArNjMsNyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAj
aW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIldlYlByb3RlY3Rpb25TcGFjZS5o
IgorI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2ltcG9ydCAiX1dLQ29udGVudFJ1bGVM
aXN0QWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0Vycm9yUmVjb3ZlcnlBdHRlbXB0aW5n
LmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAg
TmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29ya1Byb2Nlc3NQcm94eQogICAgIGNvbm5lY3QoKTsK
IAogICAgIGlmIChhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gbV9wcm9jZXNzUG9vbC53ZWJzaXRl
RGF0YVN0b3JlKCkpCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZXMuc2V0KHdlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwgbWFrZVJlZih3ZWJzaXRlRGF0
YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkpKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3Jl
cy5zZXQod2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCksIG1ha2VSZWYoKndlYnNpdGVEYXRh
U3RvcmUpKTsKIH0KIAogTmV0d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdvcmtQcm9jZXNzUHJveHko
KQpAQCAtMTEzNCwxNCArMTEzNCwxNCBAQCBXZWJzaXRlRGF0YVN0b3JlKiBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp3CiAgICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAKICAgICBp
ZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IG1fcHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFTdG9y
ZSgpKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uSUQgPT0gd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKQotICAgICAgICAgICAgcmV0dXJuICZ3ZWJzaXRlRGF0
YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgICAgIGlmIChzZXNzaW9uSUQgPT0gd2Vi
c2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpCisgICAgICAgICAgICByZXR1cm4gd2Vic2l0ZURh
dGFTdG9yZTsKICAgICB9CiAKICAgICBpZiAoc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
ICZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFT
dG9yZSgpOworICAgIHJldHVybiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCku
cHRyKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmV0cmlldmVDYWNoZVN0b3Jh
Z2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShy
ZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJB
dXhpbGlhcnlQcm9jZXNzUHJveHkuaCIKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NP
TF9NQU5BR0VSKQogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmgi
CkBAIC0zNiw2ICszNSw3IEBACiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIgog
I2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiwxNSArMjYsMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJz
aXRlRGF0YVN0b3JlLmgiCiAKKyNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKICNpbmNs
dWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBUElXZWJzaXRl
RGF0YVJlY29yZC5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRl
ICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIkRldmljZUlkSGFzaFNhbHRTdG9y
YWdlLmgiCiAjaW5jbHVkZSAiTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3Rh
dGlzdGljcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKKyNpbmNsdWRlICJX
ZWJLaXQySW5pdGlhbGl6ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NDYWNoZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAt
MTM5LDYgKzE0MCw1OCBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKFBBTDo6
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAorc3RhdGljIFJlZlB0cjxXZWJz
aXRlRGF0YVN0b3JlPiYgZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPj4gZ2xvYmFsRGVmYXVsdERhdGFT
dG9yZTsKKyAgICByZXR1cm4gZ2xvYmFsRGVmYXVsdERhdGFTdG9yZS5nZXQoKTsKK30KKworUmVm
PFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKQor
eworICAgIEluaXRpYWxpemVXZWJLaXQyKCk7CisKKyAgICBhdXRvJiBzdG9yZSA9IGdsb2JhbERl
ZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICBzdG9yZSA9IGFkb3B0
UmVmKG5ldyBXZWJzaXRlRGF0YVN0b3JlKGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCks
IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKTsKKworICAgIHJldHVybiAqc3Rv
cmU7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZv
clRlc3RpbmcoKQoreworICAgIGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKSA9IG51bGxwdHI7Cit9
CisKK2Jvb2wgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpCit7Cisg
ICAgcmV0dXJuICEhZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpOworfQorCitSZWY8V2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKworICAgIGNvbmZpZ3VyYXRpb24t
PnNldFBlcnNpc3RlbnQodHJ1ZSk7CisKKyAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAg
IGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5h
bWUoIkZpbGVzIik7CisgICAgY29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5
KGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7Cisg
ICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFDYWNoZURpcmVjdG9yeShkZWZhdWx0TWVkaWFDYWNo
ZURpcmVjdG9yeSgpKTsKKworICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25m
aWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24t
PnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVs
dExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwor
ICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlv
bi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHREZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CisKKyAgICBjb25maWd1cmF0aW9uLT5zZXRKYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnkoKSk7CisKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK30KKwogV2Vic2l0
ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CkBAIC0xNzI4LDcgKzE3ODEsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJl
c2V0Q2FjaGVNYXhBZ2VDCiBib29sIFdlYnNpdGVEYXRhU3RvcmU6OmlzQXNzb2NpYXRlZFByb2Nl
c3NQb29sKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkgY29uc3QKIHsKICAgICBpZiAoYXV0
byogcHJvY2Vzc1Bvb2xEYXRhU3RvcmUgPSBwcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3JlKCkp
Ci0gICAgICAgIHJldHVybiAmcHJvY2Vzc1Bvb2xEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KSA9PSB0aGlzOworICAgICAgICByZXR1cm4gcHJvY2Vzc1Bvb2xEYXRhU3RvcmUgPT0gdGhpczsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE3NTQsNyArMTgwNyw3IEBAIEhhc2hTZXQ8UmVm
UHRyPFdlYlByb2Nlc3NQb29sPj4gV2Vic2l0ZUQKICAgICB9CiAKICAgICBpZiAocHJvY2Vzc1Bv
b2xzLmlzRW1wdHkoKSAmJiBjb3VudCAmJiBlbnN1cmVBUG9vbEV4aXN0cykgewotICAgICAgICBh
dXRvIHByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKG1f
Y29uZmlndXJhdGlvbikpOworICAgICAgICBhdXRvIHByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkpOwogICAg
ICAgICBwcm9jZXNzUG9vbHMuYWRkKHByb2Nlc3NQb29sLnB0cigpKTsKICAgICB9CiAKQEAgLTIw
MDEsNiArMjA1NCwyOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmFkZFNlY0tleVByb3h5U3Rv
CiB9CiAjZW5kaWYKIAorI2lmICFQTEFURk9STShDT0NPQSkKK1dURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICAvLyBGSVhNRTog
SW1wbGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzY5
IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzcwCisgICAg
cmV0dXJuIFdURjo6U3RyaW5nKCk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudC4KKyAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKK30KKyNlbmRpZgorCisj
aWYgIVVTRShHTElCKQorV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmlj
ZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgLy8gTm90IGltcGxlbWVudGVk
LgorICAgIHJldHVybiBXVEY6OlN0cmluZygpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoV0VC
X0FVVEhOKQogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uKE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJiBjb25maWd1
cmF0aW9uKQogewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC05MiwxMSArOTIsMTkgQEAgZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0
U3RhdHVzOwogc3RydWN0IFBsdWdpbk1vZHVsZUluZm87CiAjZW5kaWYKIAotY2xhc3MgV2Vic2l0
ZURhdGFTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMg
SWRlbnRpZmllZDxXZWJzaXRlRGF0YVN0b3JlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYnNp
dGVEYXRhU3RvcmU+ICB7CitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlIDogcHVibGljIEFQSTo6T2Jq
ZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6V2Vic2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBJZGVu
dGlmaWVkPFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2Vic2l0ZURh
dGFTdG9yZT4gIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGRl
ZmF1bHREYXRhU3RvcmUoKTsKKyAgICBzdGF0aWMgYm9vbCBkZWZhdWx0RGF0YVN0b3JlRXhpc3Rz
KCk7CisgICAgc3RhdGljIHZvaWQgZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcoKTsK
KyAgICBzdGF0aWMgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IGRl
ZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CisKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVE
YXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnQoKTsKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVE
YXRhU3RvcmU+IGNyZWF0ZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYsIFBB
TDo6U2Vzc2lvbklEKTsKLSAgICB2aXJ0dWFsIH5XZWJzaXRlRGF0YVN0b3JlKCk7CisKKyAgICBl
eHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBleHBsaWNpdCBX
ZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFM
OjpTZXNzaW9uSUQpOworICAgIH5XZWJzaXRlRGF0YVN0b3JlKCk7CiAKICAgICBzdGF0aWMgV2Vi
c2l0ZURhdGFTdG9yZSogZXhpc3RpbmdOb25EZWZhdWx0RGF0YVN0b3JlRm9yU2Vzc2lvbklEKFBB
TDo6U2Vzc2lvbklEKTsKIApAQCAtMjY1LDEwICsyNzMsMjMgQEAgcHVibGljOgogICAgIFNPQXV0
aG9yaXphdGlvbkNvb3JkaW5hdG9yJiBzb0F1dGhvcml6YXRpb25Db29yZGluYXRvcigpIHsgcmV0
dXJuIG1fc29BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IuZ2V0KCk7IH0KICNlbmRpZgogCi1wcml2
YXRlOgotICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQpOwotICAg
IGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3Ry
aW5nIGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJp
bmcgZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBX
VEY6OlN0cmluZyBkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOworICAgIHN0YXRp
YyBXVEY6OlN0cmluZyBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKKyNpZiBVU0Uo
R0xJQikKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEhTVFNEaXJlY3RvcnkoKTsKKyNl
bmRpZgorICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdENhY2hlU3RvcmFnZURpcmVj
dG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9y
eSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNT
dG9yYWdlRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRKYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOwogCitwcml2YXRlOgogICAgIHZvaWQgZmV0Y2hE
YXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRl
RGF0YUZldGNoT3B0aW9uPiwgUmVmUHRyPFdvcmtRdWV1ZT4mJiwgRnVuY3Rpb248dm9pZChWZWN0
b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4mJiBhcHBseSk7CiAKICAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZSgpOwpAQCAtMjc5LDYgKzMwMCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZv
cm1TZXROZXR3b3JrUGFyYW1ldGVycyhXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYpOwogI2Vu
ZGlmCiAKKyAgICBXZWJzaXRlRGF0YVN0b3JlKCk7CisKKyAgICBlbnVtIFNob3VsZENyZWF0ZURp
cmVjdG9yeSB7IENyZWF0ZURpcmVjdG9yeSwgRG9udENyZWF0ZURpcmVjdG9yeSB9OworICAgIHN0
YXRpYyBXVEY6OlN0cmluZyB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNv
bnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBTaG91bGRDcmVhdGVEaXJlY3RvcnkgPSBD
cmVhdGVEaXJlY3RvcnkpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSk7
CisgICAgc3RhdGljIFdURjo6U3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKKyAgICAKICAg
ICBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IHByb2Nlc3NQb29scyhzaXplX3QgY291
bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBib29sIGVuc3VyZUFQb29s
RXhpc3RzID0gdHJ1ZSkgY29uc3Q7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTIgKzI2LDEy
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQotICAg
IDogbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkKKyAgICA6IG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQogewogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKIAogI2ltcG9ydCAiQ29va2llU3RvcmFnZVV0aWxzQ0YuaCIKKyNpbXBvcnQgIlNhbmRi
b3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmgiCkBAIC0yMzAsNCArMjMxLDE2MSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnBsYXRmb3JtUmVtb3ZlUmVjCiAgICAgV2ViQ29yZTo6cmVtb3ZlUmVjZW50bHlNb2RpZmllZFJl
Y2VudFNlYXJjaGVzKG9sZGVzdFRpbWVUb1JlbW92ZSk7CiB9CiAKK05TU3RyaW5nICpXZWJEYXRh
YmFzZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJEYXRhYmFzZURpcmVjdG9yeSI7CitOU1N0
cmluZyAqV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRMb2NhbFN0b3Jh
Z2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5IjsKK05TU3RyaW5nICpXZWJLaXRNZWRpYUNhY2hl
RGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnkiOworTlNT
dHJpbmcgKldlYktpdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2Vi
S2l0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSI7CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKK3sKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgIC8vIFRoaXMgcXVpcmsgdXNlZCB0byBtYWtlIHRoZXNlIGFwcHMg
c2hhcmUgYXBwbGljYXRpb24gY2FjaGUgc3RvcmFnZSwgYnV0IGRvZXNuJ3QgYWNjb21wbGlzaCB0
aGF0IGFueSBtb3JlLgorICAgIC8vIFByZXNlcnZpbmcgaXQgYXZvaWRzIHRoZSBuZWVkIHRvIG1p
Z3JhdGUgZGF0YSB3aGVuIHVwZ3JhZGluZy4KKyAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSBzaG91
bGQganVzdCBoYXZlIFNhZmFyaSwgV2ViQXBwLCBhbmQgd2ViYm9va21hcmtzZCBjcmVhdGUgYSBk
YXRhIHN0b3JlIHdpdGgKKyAgICAvLyB0aGlzIGFwcGxpY2F0aW9uIGNhY2hlIHBhdGgsIGJ1dCB0
aGF0J3Mgbm90IHN1cHBvcnRlZCBhcyBvZiByaWdodCBub3cuCisgICAgaWYgKFdlYkNvcmU6OklP
U0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9u
Ojppc1dlYkFwcCgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkJvb2ttYXJrc0Qo
KSkgeworICAgICAgICBOU1N0cmluZyAqY2FjaGVQYXRoID0gW05TSG9tZURpcmVjdG9yeSgpIHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5X
ZWJBcHBDYWNoZSJdOworCisgICAgICAgIHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5n
U3ltbGlua3NJblBhdGgoY2FjaGVQYXRoLnN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGgpOworICAg
IH0KKyNlbmRpZgorCisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKCJPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSIpOworfQorCitXVEY6OlN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICBy
ZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkNhY2hlU3RvcmFn
ZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0Nh
Y2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHRlbXBE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhQ2FjaGUiKTsKK30KKworV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oIkluZGV4ZWREQiIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAgcmV0
dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJTZXJ2aWNlV29ya2Vy
cyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9y
YWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIkxvY2FsU3RvcmFnZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAg
cmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRp
YUtleXMiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIldlYlNRTCIpOworfQorCitXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCit7
CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAg
cmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkphdmFTY3JpcHRD
b3JlRGVidWciLCBEb250Q3JlYXRlRGlyZWN0b3J5KTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBX
VEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHNob3VsZENy
ZWF0ZURpcmVjdG9yeSkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsK
KyAgICBzdGF0aWMgTlNVUkwgKnRlbXBVUkw7CisgICAgCisgICAgZGlzcGF0Y2hfb25jZSgmb25j
ZVRva2VuLCBeeworICAgICAgICBOU1VSTCAqdXJsID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpO
U1RlbXBvcmFyeURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CisgICAgICAgIGlmICghdXJs
KQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgCisg
ICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKKyAgICAgICAgICAg
IE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRs
ZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCisgICAgICAg
ICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5w
cm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgdGVtcFVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOworICAgIH0pOworICAgIAorICAg
IE5TVVJMICp1cmwgPSBbdGVtcFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0
b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOworCisgICAgaWYgKHNob3VsZENyZWF0ZURpcmVjdG9y
eSA9PSBDcmVhdGVEaXJlY3RvcnkKKyAgICAgICAgJiYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0
b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKSkKKyAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CisgICAgCisgICAgcmV0
dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKK30KKwor
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgc3Rh
dGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgc3RhdGljIE5TVVJMICpjYWNoZVVS
TDsKKworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgTlNVUkwgKnVy
bCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TQ2Fj
aGVzRGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6
bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07CisgICAgICAgIGlmICghdXJsKQorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICBpZiAoIVdl
YktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7CisgICAgICAgICAgICBOU1N0cmluZyAqYnVu
ZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOwor
ICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIGJ1bmRs
ZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7Cisg
ICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJ
ZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107CisgICAgICAgIH0KKworICAgICAgICBjYWNoZVVS
TCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rv
cnk6WUVTXSByZXRhaW5dOworICAgIH0pOworCisgICAgTlNVUkwgKnVybCA9IFtjYWNoZVVSTCBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNd
OworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3Rv
cnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5p
bCBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRp
cmVjdG9yeSAlQCIsIHVybCk7CisKKyAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
Ojp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6
OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9u
Y2VUb2tlbjsKKyAgICBzdGF0aWMgTlNVUkwgKndlYnNpdGVEYXRhVVJMOworCisgICAgZGlzcGF0
Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNMaWJyYXJ5RGlyZWN0b3J5IGlu
RG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6
Tk8gZXJyb3I6bnVsbHB0cl07CisgICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXTsKKworICAgICAgICBp
ZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7CisgICAgICAgICAgICBOU1N0cmlu
ZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlm
aWVyOworICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAg
IGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05h
bWU7CisgICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpi
dW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107CisgICAgICAgIH0KKworICAgICAgICB3
ZWJzaXRlRGF0YVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYnNp
dGVEYXRhIiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07CisgICAgfSk7CisKKyAgICBOU1VSTCAq
dXJsID0gW3dlYnNpdGVEYXRhVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3Rv
cnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0
b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQorICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKKworICAgIHJldHVybiB1
cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Cit9CisKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0
b3JlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS93aW4vV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDUsNCAr
NDYsNTkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVJlbW92ZVJlYwogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VE
aXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJDYWNoZVN0b3JhZ2UiKTsKK30KKworU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKK30KKwor
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChG
aWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWRE
QiIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksICJTZXJ2aWNlV29ya2VycyIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOworfQorCitTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKK30K
KworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChG
aWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIp
OworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCksICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeU5hbWUpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgZGlyZWN0b3J5TmFtZSk7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRl
RGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVj
dG9yeU5hbWUpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGly
ZWN0b3J5TmFtZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAJ
KHJldmlzaW9uIDI0OTczMikJKGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
QVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwOjI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRh
U3RvcmUuaCIKKworI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL2ds
aWIvR1VuaXF1ZVB0ci5oPgorCisjaWYgUExBVEZPUk0oR1RLKQorI2RlZmluZSBCQVNFX0RJUkVD
VE9SWSAid2Via2l0Z3RrIgorI2VsaWYgUExBVEZPUk0oV1BFKQorI2RlZmluZSBCQVNFX0RJUkVD
VE9SWSAid3BlIgorI2VuZGlmCisKK25hbWVzcGFjZSBBUEkgeworCitXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCit7CisgICAg
cmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNU
T1JZIEdfRElSX1NFUEFSQVRPUl9TICJhcHBsaWNhdGlvbnMiKTsKK30KKworLy8gRklYTUU6IFRo
ZSBvdGhlciBkaXJlY3RvcmllcyBpbiB0aGlzIGZpbGUgYXJlIHNoYXJlZCBiZXR3ZWVuIGFsbCBh
cHBsaWNhdGlvbnMgdXNpbmcgV2ViS2l0R1RLLgorLy8gV2h5IGlzIG9ubHkgdGhpcyBkaXJlY3Rv
cnkgbmFtZXNwYWNlZCB0byBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24/CitXVEY6OlN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICBy
ZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hlIikpOworfQorCitX
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5
KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIkNhY2hlU3RvcmFn
ZSIpKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1Mg
ImRhdGFiYXNlcyIgR19ESVJfU0VQQVJBVE9SX1MgImluZGV4ZWRkYiIpOworfQorCitXVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJzZXJ2aWNld29y
a2VycyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxT
dG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImxv
Y2Fsc3RvcmFnZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFS
QVRPUl9TICJtZWRpYWtleXMiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJz
aXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBH
X0RJUl9TRVBBUkFUT1JfUyAiZGV2aWNlaWRoYXNoc2FsdHMiKTsKK30KKworV1RGOjpTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAg
ICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFT
RV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIpOworfQorCitXVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpCit7CisgICAgcmV0
dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElS
RUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJ
UkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOworfQor
CitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSks
IGRpcmVjdG9yeU5hbWUpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJz
aXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmlu
ZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0
YVN0b3JlR0xpYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xp
Yi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgi
CiAKICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlx
dWVQdHIuaD4KQEAgLTM1LDcgKzM1LDcgQEAKICNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndwZSIK
ICNlbmRpZgogCi1uYW1lc3BhY2UgQVBJIHsKK25hbWVzcGFjZSBXZWJLaXQgewogCiBXVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNiBAQAogCQkx
QTMwMDY2RTExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzMDA2NkMxMTEwRjRGNzAw
MzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKIAkJMUEzMzRERUQxNkRFOEY4
ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzM0REVCMTZERThGODgwMDZB
OEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTFBMzM0
REVFMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTMzNERFQzE2REU4Rjg4MDA2
QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oICovOyB9OwotCQkxQTM2MzVBQTFBMzE0
NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzNjM1QTgxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQ
SVdlYnNpdGVEYXRhU3RvcmUuaCAqLzsgfTsKIAkJMUEzQzg4ODAxOEE1QUJBRTAwQzRDOTYyIC8q
IFdLUHJlZmVyZW5jZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUEzQzg4N0YxOEE1QUJBRTAwQzRDOTYyIC8qIFdLUHJlZmVyZW5jZXNJ
bnRlcm5hbC5oICovOyB9OwogCQkxQTNDQzE2NzE4OTA2QUNGMDAxRTZFRDggLyogV0tXZWJWaWV3
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNDQzE2
NTE4OTA2QUNGMDAxRTZFRDggLyogV0tXZWJWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkxQTNDQzE2OTE4OTA3RUIwMDAxRTZFRDggLyogV0tQ
cm9jZXNzUG9vbEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQTNDQzE2ODE4OTA3RUIwMDAxRTZFRDggLyogV0tQcm9jZXNzUG9vbEludGVy
bmFsLmggKi87IH07CkBAIC0xNzI1LDYgKzE3MjQsOCBAQAogCQkJY29tcGlsZXJTcGVjID0gY29t
LmFwcGxlLmNvbXBpbGVycy5wcm94eS5zY3JpcHQ7CiAJCQlmaWxlUGF0dGVybnMgPSAiKi5oIjsK
IAkJCWZpbGVUeXBlID0gcGF0dGVybi5wcm94eTsKKwkJCWlucHV0RmlsZXMgPSAoCisJCQkpOwog
CQkJaXNFZGl0YWJsZSA9IDE7CiAJCQlvdXRwdXRGaWxlcyA9ICgKIAkJCQkiJChIRUFERVJfT1VU
UFVUX0RJUikvJChJTlBVVF9GSUxFX05BTUUpIiwKQEAgLTIxMjEsOSArMjEyMiw2IEBACiAJCTFB
MzM0REVBMTZERThCNjgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBTdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0b3JhZ2VBcmVh
TWFwTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3Rv
cmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQkxQTMzNERFQzE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBN
ZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdG9yYWdlQXJlYU1h
cE1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VBcmVhTWFw
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJMUEzNjM1
QTcxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBMzYzNUE4MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElX
ZWJzaXRlRGF0YVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVdl
YnNpdGVEYXRhU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEzNjM1QUIx
QTMxNDVFNTAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEzQTczQ0IxQTQ4QzZENDAwNzIzMUIz
IC8qIEFQSVBhZ2VHcm91cEhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBUElQYWdlR3JvdXBIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQTNBNzNDQzFBNDhDNkQ0MDA3MjMxQjMgLyogQVBJUGFnZUdyb3VwSGFuZGxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVBhZ2VHcm91cEhhbmRsZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTNDODg3RjE4QTVBQkFFMDBDNEM5NjIgLyogV0tQ
cmVmZXJlbmNlc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
UHJlZmVyZW5jZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjM2
Nyw3ICs2MzY1LDYgQEAKIAkJCQk3Q0VGQTk2MDFBQzA5OTkzMDBCOTEwRkQgLyogQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmVDb2NvYS5tbSAqLywKIAkJCQk1Q0E0NkU3QTIxRjFBMjM5MDBDRTg2QjQg
LyogQVBJSFRUUENvb2tpZVN0b3JlQ29jb2EubW0gKi8sCiAJCQkJRkVEM0MxREExQjQ0N0FFODAw
RTBFQjdGIC8qIEFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tICovLAotCQkJCTFBMzYz
NUFCMUEzMTQ1RTUwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gKi8sCiAJ
CQkJMUFGREU2NDMxOTUxMEI1NTAwQzQ4RkZBIC8qIExlZ2FjeUJ1bmRsZUZvckNsYXNzLm1tICov
LAogCQkJCTFDMjA5MzVFMjIzMThDQjAwMDAyNkEzOSAvKiBOU0F0dHJpYnV0ZWRTdHJpbmcuaCAq
LywKIAkJCQkxQzIwOTM1RjIyMzE4Q0IwMDAwMjZBMzkgLyogTlNBdHRyaWJ1dGVkU3RyaW5nLm1t
ICovLApAQCAtNzk3Nyw4ICs3OTc0LDYgQEAKIAkJCQkyRDg3ODYyMjFCREI1OEZGMDBEMDJBQkIg
LyogQVBJVXNlclN0eWxlU2hlZXQuaCAqLywKIAkJCQkxQUUyODY4MTFDN0Y5Mzg2MDA2OUFDNEYg
LyogQVBJV2Vic2l0ZURhdGFSZWNvcmQuY3BwICovLAogCQkJCTFBRTI4NjgyMUM3RjkzODYwMDY5
QUM0RiAvKiBBUElXZWJzaXRlRGF0YVJlY29yZC5oICovLAotCQkJCTFBMzYzNUE3MUEzMTQ0QTMw
MEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmNwcCAqLywKLQkJCQkxQTM2MzVBODFBMzE0
NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oICovLAogCQkJCTVDOEREMzdEMUZF
NDUwMTEwMEYyQTU1NiAvKiBBUElXZWJzaXRlUG9saWNpZXMuY3BwICovLAogCQkJCTVDOEREMzdD
MUZFNDUwMTEwMEYyQTU1NiAvKiBBUElXZWJzaXRlUG9saWNpZXMuaCAqLywKIAkJCQkxQTY1NjNF
MjFCN0E4QzUwMDA5Q0Y3ODcgLyogQVBJV2luZG93RmVhdHVyZXMuY3BwICovLApAQCAtOTM4Miw3
ICs5Mzc3LDYgQEAKIAkJCQlDNUUxQUZFRDE2QjIxMDE3MDA2Q0MxRjIgLyogQVBJV2ViQXJjaGl2
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzVFMUFGRUYxNkIyMTAyOTAwNkNDMUYyIC8qIEFQSVdl
YkFyY2hpdmVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMjg2ODQxQzdGOTM4NjAw
NjlBQzRGIC8qIEFQSVdlYnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAqLywKLQkJCQkxQTM2
MzVBQTFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE2NTYzRTUxQjdBOEM1MDAwOUNGNzg3IC8qIEFQSVdpbmRvd0ZlYXR1cmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNDhEMkE4NTIxNTgzQTdFMDBDNjc1MkIgLyogQXBwS2l0U1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQ0QzE5MzFCMzlGMzMyMDBBQkMyOEUgLyogQXBwbGlj
YXRpb25TdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378488</attachid>
            <date>2019-09-10 14:14:14 -0700</date>
            <delta_ts>2019-09-10 14:23:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201655-20190910141413.patch</filename>
            <type>text/plain</type>
            <size>198122</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2NyBAQAorMjAxOS0wOS0xMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB1bm5l
Y2Vzc2FyeSBhYnN0cmFjdGlvbnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBmb3Vy
IHRoaW5ncyB0byBzaW1wbGlmeSBXZWJzaXRlRGF0YVN0b3JlIGNvZGU6CisgICAgICAgIDEuIEl0
IHJlbW92ZXMgQVBJOjpXZWJzaXRlRGF0YVN0b3JlLCB3aGljaCB3YXMganVzdCBhbiB1bm5lY2Vz
c2FyeSB3cmFwcGVyIGFyb3VuZCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUuCisgICAgICAgIDIu
IEl0IGRlcHJlY2F0ZXMgdGhlIHVudXNlZCBhbGlhc2VzIG9mIFdlYnNpdGVEYXRhU3RvcmUsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYW5kIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZgorICAgICAgICAzLiBJdCByZW1vdmVzIHRoZSB1bnVzZWQgQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHByb3BlcnRpZXMgdGhhdCBoYXZlIGJlZW4gbW92ZWQgdG8gV2Vic2l0ZURhdGFTdG9y
ZS4KKyAgICAgICAgNC4gSXQgbWFrZXMgV0tXZWJzaXRlRGF0YVN0b3JlLl9kZWxlZ2F0ZSB3ZWFr
IGluc3RlYWQgb2Ygc3Ryb25nLCBhcyBhbHJlYWR5IGFubm90YXRlZCBpbiBXS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZSBpbiBiZWhh
dmlvciBmcm9tIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZToKKyAg
ICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAg
ICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tp
ZVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6CisgICAg
ICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURh
dGFTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
RGF0YVN0b3JlLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
UG9saWNpZXMuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlUG9saWNpZXM6OmRhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5zKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJEZWxldGVBbGxFbnRyaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
UG9saWN5TGlzdGVuZXIuY3BwOgorICAgICAgICAodXNlV2l0aFBvbGljaWVzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCk6CisgICAgICAgIChXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KToKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAoV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLUmVzb3VyY2VDYWNo
ZU1hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENh
Y2hlT3JpZ2lucyk6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZv
ck9yaWdpbik6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFs
bE9yaWdpbnMpOgorICAgICAgICAodG9XZWJzaXRlRGF0YVR5cGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdl
dERlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlTm9u
UGVyc2lzdGVudERhdGFTdG9yZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVX
aXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29v
a2llU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZVdpdGhDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RT
ZWVuKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVBy
ZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKToKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSk6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5n
VGVzdCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hvdWxkQ2xh
c3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzTWF4U3RhdGlzdGljc0VudHJpZXMpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1BydW5lRW50cmllc0Rvd25Ubyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9u
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGb3JPcmlnaW4p
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnMpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW4pOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmln
aW5TdG9yYWdlUXVvdGEpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdKToK
KyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdKToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIGh0dHBDb29raWVTdG9yZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6bW9kaWZpZWRTaW5jZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOmZv
ckRhdGFSZWNvcmRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgX2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKToKKyAgICAgICAgKCtbV0tXZWJzaXRl
RGF0YVN0b3JlIF9kZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZ10pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3aXRoT3B0aW9u
czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Blck9yaWdpblN0b3Jh
Z2VRdW90YV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFBlck9yaWdpblN0
b3JhZ2VRdW90YTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRDYWNoZVN0
b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOl0pOgor
ICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcl0p
OgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldEFsbG93c0NlbGx1bGFyQWNjZXNz
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93c0NlbGx1bGFyQWNjZXNz
XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJveHlDb25maWd1cmF0aW9u
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFNvdXJj
ZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXI6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0QWxsb3dzVExTRmFs
bGJhY2s6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dzVExTRmFsbGJh
Y2tdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm94eUNvbmZpZ3VyYXRpb25d
KToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zv
cjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9z
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRJc1ByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERv
bWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3Jl
IF9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOl0pOgorICAgICAgICAoLVtXS1dlYnNp
dGVEYXRhU3RvcmUgX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyXSk6CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHNldF9kZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAg
ICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29y
a1Byb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ondl
YnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bV93ZWJQcm9jZXNzQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRl
bnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJt
ZWRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp0ZW1w
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxEZWZhdWx0RGF0
YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHRE
YXRhU3RvcmVGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2wgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAg
ICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6
IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRIU1RTRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Ondl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOS0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEhhbmdzIG9uIFN3aXNz
LmNvbSBkdWUgdG8gdGhlIHdlYiBwcm9jZXNzIGJlaW5nIGJsb2NrZWQgb24gU3RvcmFnZUFyZWFN
YXA6OkxvYWRWYWx1ZXNJZk5lZWRlZApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAg
ICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAotICAgIFVJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAogICAgIFVJ
UHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcApJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5E
IFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAot
ICAgIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKIAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVy
V2luLmNwcApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDYgQEAgVUlQcm9j
ZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVu
dFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElVc2VyU3R5bGVTaGVldC5jcHAKLVVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElXaW5kb3dGZWF0dXJlcy5jcHAKIApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yNzQsNyArMjc0LDYgQEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubQogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNv
Y29hLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCi1VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9MZWdhY3lCdW5kbGVGb3JDbGFzcy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0
dHJpYnV0ZWRTdHJpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3Qu
bW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9Tb3VyY2VzR1RLLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw2IEBAIFVJ
UHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9n
dGsvV0tWaWV3LmNwcAogCiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVz
dC5jcHAgQG5vLXVuaWZ5CkBAIC0yMzIsNiArMjMxLDcgQEAgVUlQcm9jZXNzL2NhaXJvL0JhY2tp
bmdTdG9yZUNhaXJvLmNwcCBAbgogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcAogVUlQcm9jZXNzL2dzdHJlYW1lci9X
ZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTExNCw3ICsxMTQsNiBAQCBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMu
Y3BwCiBVSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKIAogVUlQcm9jZXNzL0FQSS9nbGli
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlR0xpYi5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJ
L2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXBwbGljYXRpb25JbmZvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwIEBuby11bmlmeQpAQCAtMTkyLDYgKzE5MSw3IEBA
IFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3YKIAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5
R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5p
ZnkKIAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKIFVJ
UHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJu
aW5nLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNyAr
NDE2LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgICwg
bV9wcmVmZXJlbmNlcygqbV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpKQogICAgICwgbV91
c2VyQ29udGVudENvbnRyb2xsZXIoKm1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRl
ZExpbmtTdG9yZSgpKQotICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+
d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCisgICAgLCBtX3dlYnNpdGVE
YXRhU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKQogICAgICwgbV91
c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgeyBtX2NvbmZpZ3VyYXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5KCkgfQogICAgICwgbV90cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZp
Z3VyYXRpb24tPnRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCkBAIC0y
ODY3LDggKzI4NjcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9s
CiAgICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gZGF0YTsKICAgICBpZiAocG9saWNp
ZXMpIHsKICAgICAgICAgZGF0YSA9IHBvbGljaWVzLT5kYXRhKCk7Ci0gICAgICAgIGlmIChwb2xp
Y2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpICYmICZwb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgp
LT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSkgewotICAgICAg
ICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCktPndl
YnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAgaWYgKHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3Jl
KCkgJiYgcG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlLnB0
cigpKSB7CisgICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gKnBvbGljaWVzLT53ZWJzaXRl
RGF0YVN0b3JlKCk7CiAgICAgICAgICAgICBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDQsOCArMjQ0LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nl
c3NQb29sKEFQSTo6UHJvYwogICAgICAgICBQcm9jZXNzOjpzZXRJZGVudGlmaWVyKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKICAgICB9KTsKIAotICAgIGlmICghbV93
ZWJzaXRlRGF0YVN0b3JlICYmIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZUV4aXN0cygpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSAm
JiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCisgICAgICAgIG1f
d2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsK
IAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV9jb25maWd1cmF0aW9uLT5hbHdheXNSZXZhbGlk
YXRlZFVSTFNjaGVtZXMoKSkKICAgICAgICAgbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2
YWxpZGF0ZWQuYWRkKHNjaGVtZSk7CkBAIC00ODMsMTQgKzQ4MywxNCBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKLSAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZW5kaW5nQ29va2ll
cyA9IGNvcHlUb1ZlY3RvcihtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5w
ZW5kaW5nQ29va2llcygpKTsKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuY2xlYXJQZW5kaW5nQ29va2llcygpOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1
bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fd2Vi
c2l0ZURhdGFTdG9yZS0+cGVuZGluZ0Nvb2tpZXMoKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFT
dG9yZS0+Y2xlYXJQZW5kaW5nQ29va2llcygpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAg
ICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyKCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNr
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJh
Y2soKSA/IEFsbG93c1RMU0ZhbGxiYWNrOjpZZXMgOiBBbGxvd3NUTFNGYWxsYmFjazo6Tm87Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IG1fd2Vic2l0
ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9IG1fd2Vic2l0ZURh
dGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNrID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5hbGxvd3NUTFNG
YWxsYmFjaygpID8gQWxsb3dzVExTRmFsbGJhY2s6OlllcyA6IEFsbG93c1RMU0ZhbGxiYWNrOjpO
bzsKICNlbmRpZgotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5uZXR3b3JraW5nSGFzQmVndW4oKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3
b3JraW5nSGFzQmVndW4oKTsKICAgICB9CiAKICAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBj
YWNoZU1vZGVsKCk7CkBAIC01MDIsOSArNTAyLDYgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2Vi
UHJvY2Vzc1Bvb2w6OmVucwogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV91cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scykKICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVz
UmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKIAotICAgIHBhcmFt
ZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5kaXNrQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHko
KSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRpc2tDYWNo
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BF
Q1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24gPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNo
ZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQoKTsKICNlbmRpZgpAQCAtNTQxLDIzICs1Mzgs
MTEgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgIHBhcmFt
ZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkID0gY29weVRvVmVjdG9yKG1f
c2NoZW1lc1RvUmVnaXN0ZXJBc0NPUlNFbmFibGVkKTsKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVt
ZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCA9IGNvcHlUb1ZlY3Rvciht
X3NjaGVtZXNUb1JlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCk7CiAKLSNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICAvLyAqKioqKioqKioKLSAgICAvLyBJTVBPUlRB
TlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0
YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBB
cHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKLSAgICAvLyAqKioqKioqKioKLSAgICBw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeSA9IG1fY29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAg
ICBpZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygp
LmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKLSAgICAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVs
dERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU3ltTGlua0ZvckZpbGVVcGdyYWRlKHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5KTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChtX3dl
YnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJl
c29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgICAgICBwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPnJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAg
IGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAg
ICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSAgQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpOworICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkgPSAgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5LCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogCiAgICAgaWYgKCFtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZS5p
c0VtcHR5KCkpCkBAIC01NjYsMTYgKzU1MSwxNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQ
cm9jZXNzUG9vbDo6ZW5zCiAgICAgcGFyYW1ldGVycy5zaG91bGREaXNhYmxlU2VydmljZVdvcmtl
clByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclBy
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5OwogI2VuZGlmCiAKLSAgICBhdXRvIGxvY2FsU3RvcmFnZURp
cmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBudWxsU3RyaW5n
KCk7CisgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUg
PyBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBu
dWxsU3RyaW5nKCk7CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpOworICAgICAgICBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBs
b2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5k
ZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwor
ICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5yZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKICAg
ICBpZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0g
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogCiAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFt
ZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCkBAIC02MDEsMTcgKzU4NiwxNyBAQCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgfSBlbHNlIGlmICht
X3dlYnNpdGVEYXRhU3RvcmUpIHsKICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgICAgICBlbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkuaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygpOworICAgICAg
ICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5oYXNTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKCk7CiAjZW5kaWYKICAgICAg
ICAgaWYgKGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKLSAgICAgICAgICAgIGF1dG8g
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKKyAgICAgICAg
ICAgIGF1dG8gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5w
YXJhbWV0ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzOwogICAgICAgICAgICAgc2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNsdWRl
TG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgICAgICAgICAgZW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5l
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAgICAgICAgICAgbWFudWFs
UHJldmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKLSAgICAgICAg
cGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVv
dGEgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZXJPcmlnaW5TdG9y
YWdlUXVvdGEoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOworICAg
ICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlck9yaWdpblN0b3Jh
Z2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0
eU9yaWdpblN0b3JhZ2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyVGhpcmRQYXJ0eU9y
aWdpblN0b3JhZ2VRdW90YSgpOwogICAgIH0KIAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNzAyLDggKzY4
Nyw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnQKIAogICAgIGlm
ICghd2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkK
LSAgICAgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwotICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gJm1f
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICAgICAgbV93ZWJz
aXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OworICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOwog
ICAgIH0KIAogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQpAQCAt
Nzk1LDEyICs3ODAsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdl
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygp
CiB7CiAgICAgbV9yZXNvbHZlZFBhdGhzLmluamVjdGVkQnVuZGxlUGF0aCA9IHJlc29sdmVQYXRo
Rm9yU2FuZGJveEV4dGVuc2lvbihpbmplY3RlZEJ1bmRsZVBhdGgoKSk7Ci0gICAgbV9yZXNvbHZl
ZFBhdGhzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdy
aXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLndlYlNRTERhdGFiYXNl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAg
ICBtX3Jlc29sdmVkUGF0aHMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVS
ZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVk
aWFDYWNoZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwot
ICAgIG1fcmVzb2x2ZWRQYXRocy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRp
b24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOwotCiAgICAgbV9yZXNvbHZlZFBhdGhz
LmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnJlc2VydmVDYXBhY2l0
eShtX2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkuc2l6
ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBtX2NvbmZpZ3VyYXRpb24tPmFkZGl0
aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkpCiAgICAgICAgIG1fcmVzb2x2ZWRQYXRocy5h
ZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy51bmNoZWNrZWRBcHBlbmQo
cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGguZGF0YSgpKSk7CkBAIC04MzcsNyAr
ODE2LDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OgogI2lmIFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIC8vIEluIHBsYXRmb3JtcyB1c2luZyBC
dWJibGV3cmFwIGZvciBzYW5kYm94aW5nLCBwcmV3YXJtZWQgcHJvY2VzcyBpcyBsYXVuY2hlZCB1
c2luZyB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlLAogICAgIC8v
IHNvIHdlIGRvbid0IHVzZSBpdCBpbiBjYXNlIG9mIHVzaW5nIGEgZGlmZmVyZW50IFdlYnNpdGVE
YXRhU3RvcmUuCi0gICAgaWYgKG1fc2FuZGJveEVuYWJsZWQgJiYgbV93ZWJzaXRlRGF0YVN0b3Jl
ICYmICZtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURh
dGFTdG9yZSkKKyAgICBpZiAobV9zYW5kYm94RW5hYmxlZCAmJiBtX3dlYnNpdGVEYXRhU3RvcmUg
JiYgbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogCkBAIC04ODUsOCArODY0LDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2VuZFdlYlByb2Nlc3NEYXRhUwogICAgIGlmICghcGFyYW1ldGVycy5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFt
ZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgcGFy
YW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gd2Vic2l0
ZURhdGFTdG9yZS5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCk7Ci0g
ICAgaWYgKHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZS5pc0VtcHR5KCkpCi0gICAgICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRG
aWxlU3ViZGlyZWN0b3J5TmFtZSgpOwogCiAgICAgcGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSgpOwog
ICAgIGlmIChwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKQEAg
LTExMDcsNyArMTA4NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRGaW5pc2hM
YXUKICAgICBtX2Nvbm5lY3Rpb25DbGllbnQuZGlkQ3JlYXRlQ29ubmVjdGlvbih0aGlzLCBwcm9j
ZXNzLT53ZWJDb25uZWN0aW9uKCkpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAg
ICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGlkQ3JlYXRlTmV0
d29ya1Byb2Nlc3MoKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kaWRDcmVhdGVOZXR3
b3JrUHJvY2VzcygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vz
cyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCkBAIC0xMTg2LDcgKzExNjMsNyBAQCBXZWJQcm9j
ZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzCiAgICAgICAgIHJldHVybiBjcmVhdGVO
ZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIGJvb2wgbXVzdE1hdGNoRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gJkFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
Ym9vbCBtdXN0TWF0Y2hEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwogI2Vsc2UKICAgICBib29sIG11c3RNYXRjaERhdGFTdG9y
ZSA9IGZhbHNlOwogI2VuZGlmCkBAIC0xMjIwLDcgKzExOTcsNyBAQCBSZWY8V2ViUGFnZVByb3h5
PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAgICAgIC8vIFdlIHRyeSB0byBhdm9pZCBjcmVh
dGluZyB0aGUgZGVmYXVsdCBkYXRhIHN0b3JlIGFzIGxvbmcgYXMgcG9zc2libGUuCiAgICAgICAg
IC8vIEJ1dCBpZiB0aGVyZSBpcyBhbiBhdHRlbXB0IHRvIGNyZWF0ZSBhIHdlYiBwYWdlIHdpdGhv
dXQgYW55IHNwZWNpZmllZCBkYXRhIHN0b3JlLCB0aGVuIHdlIGhhdmUgdG8gY3JlYXRlIGl0Lgog
ICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgICAgIG1fd2Vic2l0ZURh
dGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OworICAgICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwogCiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRX
ZWJzaXRlRGF0YVN0b3JlKG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSk7CiAgICAgfQpAQCAtMTIz
MSw4ICsxMjA4LDggQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZQog
ICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdl
IHZpYSB3aW5kb3cub3BlbigpLgogICAgICAgICBwcm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9u
LT5yZWxhdGVkUGFnZSgpLT5lbnN1cmVSdW5uaW5nUHJvY2VzcygpOwogICAgICAgICAvLyBXZSBk
byBub3Qgc3VwcG9ydCBzZXZlcmFsIFdlYnNpdGVEYXRhU3RvcmVzIHNoYXJpbmcgYSBzaW5nbGUg
cHJvY2Vzcy4KLSAgICAgICAgQVNTRVJUKHByb2Nlc3MuZ2V0KCkgPT0gbV9kdW1teVByb2Nlc3NQ
cm94eSB8fCAmcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURh
dGFTdG9yZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwotICAgICAgICBBU1NF
UlQoJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkg
PT0gJnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3Rv
cmUoKSk7CisgICAgICAgIEFTU0VSVChwcm9jZXNzLmdldCgpID09IG1fZHVtbXlQcm9jZXNzUHJv
eHkgfHwgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmcHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgQVNTRVJUKCZwYWdlQ29uZmlndXJhdGlvbi0+
cmVsYXRlZFBhZ2UoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHBhZ2VDb25maWd1cmF0aW9uLT53
ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIH0gZWxzZSBpZiAoIW1faXNEZWxheWVkV2ViUHJvY2Vz
c0xhdW5jaERpc2FibGVkKSB7CiAgICAgICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwgd2UgZGVs
YXkgcHJvY2VzcyBsYXVuY2ggdW50aWwgc29tZXRoaW5nIGlzIGFjdHVhbGx5IGxvYWRlZCBpbiB0
aGUgcGFnZS4KICAgICAgICAgaWYgKCFtX2R1bW15UHJvY2Vzc1Byb3h5KSB7CkBAIC0xMjQyLDcg
KzEyMTksNyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAg
ICAgIH0KICAgICAgICAgcHJvY2VzcyA9IG1fZHVtbXlQcm9jZXNzUHJveHk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIHByb2Nlc3MgPSAmcHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHBhZ2VDb25m
aWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSwgbnVsbHB0
ciwgeyB9KTsKKyAgICAgICAgcHJvY2VzcyA9ICZwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4o
KnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCksIG51bGxwdHIsIHsgfSk7CiAK
ICAgICBBU1NFUlQocHJvY2Vzcyk7CiAKQEAgLTEyOTIsNyArMTI2OSw3IEBAIGJvb2wgV2ViUHJv
Y2Vzc1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmluZyBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlv
bigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgICAgIHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KCk7CiAKICAgICByZXR1cm4gbV9tYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzLmVu
c3VyZShzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBbJl0gewogICAgICAgICAv
LyBGSVhNRTogTWFrZSB0aGlzIGNvbXB1dGF0aW9uIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI0
OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJI
aWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyLmgiCkBAIC00NCw2ICs0Myw3
IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2
aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBAIC0yMDIsOCAr
MjAyLDggQEAgcHVibGljOgogICAgIC8vIERpc2Nvbm5lY3QgdGhlIHByb2Nlc3MgZnJvbSB0aGUg
Y29udGV4dC4KICAgICB2b2lkIGRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSopOwog
Ci0gICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRQcmltYXJ5RGF0
YVN0b3JlKEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKSB7IG1fd2Vic2l0ZURhdGFT
dG9yZSA9ICZkYXRhU3RvcmU7IH0KKyAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0
b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRQcmltYXJ5RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkgeyBtX3dl
YnNpdGVEYXRhU3RvcmUgPSAmZGF0YVN0b3JlOyB9CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBj
cmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CiAKQEAgLTY3Niw3ICs2NzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tZW1vcnlTYW1wbGVy
RW5hYmxlZCB7IGZhbHNlIH07CiAgICAgZG91YmxlIG1fbWVtb3J5U2FtcGxlckludGVydmFsIHsg
MTQwMC4wIH07CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVE
YXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9y
ZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgUmVmUHRyPFdlYkNvbnRleHRT
dXBwbGVtZW50PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IFdlYkNvbnRleHRTdXBwbGVtZW50TWFw
OwogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVudHM7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBD
b29raWVTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKIAotI2luY2x1ZGUg
IkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVT
dG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgZW51
bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludAogbmFtZXNwYWNlIEFQSSB7CiAK
IGNsYXNzIEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyOwotY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKIAogY2xhc3MgSFRUUENvb2tpZVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEyICsxNTEsMTIgQEAg
dm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0VmlzaXRlZExpbmtTdAogICAgIG1fdmlzaXRlZExp
bmtTdG9yZSA9IHZpc2l0ZWRMaW5rU3RvcmU7CiB9CiAKLUFQSTo6V2Vic2l0ZURhdGFTdG9yZSog
UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQorV2Vic2l0ZURhdGFTdG9yZSog
UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIHJldHVybiBtX3dl
YnNpdGVEYXRhU3RvcmUuZ2V0KCk7CiB9CiAKLXZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFdl
YnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQor
dm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNp
dGVEYXRhU3RvcmU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDEyICs0NCwxMiBAQCBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIGNsYXNzIFdlYlByb2Nl
c3NQb29sOwogY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIH0KIAogbmFtZXNwYWNl
IEFQSSB7CiAKIGNsYXNzIEFwcGxpY2F0aW9uTWFuaWZlc3Q7Ci1jbGFzcyBXZWJzaXRlRGF0YVN0
b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogCiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbiA6
IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6UGFnZUNvbmZpZ3VyYXRpb24+IHsKQEAg
LTg0LDggKzg0LDggQEAgcHVibGljOgogICAgIFdlYktpdDo6VmlzaXRlZExpbmtTdG9yZSogdmlz
aXRlZExpbmtTdG9yZSgpOwogICAgIHZvaWQgc2V0VmlzaXRlZExpbmtTdG9yZShXZWJLaXQ6OlZp
c2l0ZWRMaW5rU3RvcmUqKTsKIAotICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3Rv
cmUoKTsKLSAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSopOwor
ICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpOworICAgIHZv
aWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUqKTsKIAogICAg
IFdlYnNpdGVQb2xpY2llcyogZGVmYXVsdFdlYnNpdGVQb2xpY2llcygpIGNvbnN0OwogICAgIHZv
aWQgc2V0RGVmYXVsdFdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXMqKTsKQEAgLTE0NSw3
ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9y
ZWxhdGVkUGFnZTsKICAgICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0
ZWRMaW5rU3RvcmU7CiAKLSAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0
YVN0b3JlOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURh
dGFTdG9yZTsKICAgICBSZWZQdHI8V2Vic2l0ZVBvbGljaWVzPiBtX2RlZmF1bHRXZWJzaXRlUG9s
aWNpZXM7CiAKICAgICBib29sIG1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmUgeyB0cnVlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjQ5NzMy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKIAotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgor
I2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIEFQSSB7CiAKQEAgLTM2
LDM1ICszNiw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb28KICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOwogfQogCi1S
ZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNy
ZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihjb25zdCBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJiBsZWdhY3lDb25maWd1cmF0aW9uKQotewotICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0K
LSAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsK
LSAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRp
YUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5
KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGxl
Z2FjeUNvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBjb25m
aWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24u
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmRldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBs
ZWdhY3lDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0KLSAgICByZXR1
cm4gY29uZmlndXJhdGlvbjsKLX0KLQogUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKQotICAgIDogbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpCi0gICAg
LCBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkZpbGVzIikKLSAg
ICAsIG1fZGlza0NhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKSkKLSAgICAsIG1fbWVkaWFDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKQotICAgICwgbV9pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fZGV2aWNlSWRI
YXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJ
ZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fd2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkp
Ci0gICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSgpKQogewogfQogCkBAIC03NywxOCArNDksOCBAQCBSZWY8UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgYXV0byBjb3B5ID0gdGhpcy0+Y3Jl
YXRlKCk7CiAKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9kZWw7Ci0g
ICAgY29weS0+bV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX2Rpc2tDYWNoZURpcmVjdG9y
eTsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgPSB0
aGlzLT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQ7Ci0gICAgY29weS0+
bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5OwotICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZSA9IHRoaXMtPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsK
LSAgICBjb3B5LT5tX21lZGlhQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX21lZGlhQ2FjaGVEaXJl
Y3Rvcnk7Ci0gICAgY29weS0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1f
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9pbmplY3RlZEJ1bmRsZVBh
dGggPSB0aGlzLT5tX2luamVjdGVkQnVuZGxlUGF0aDsKLSAgICBjb3B5LT5tX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1f
ZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9kZXZpY2VJZEhhc2hT
YWx0c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeTsKLSAgICBjb3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gdGhp
cy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2NhY2hlUGFydGl0aW9u
ZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBj
b3B5LT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fYWx3YXlzUmV2YWxp
ZGF0ZWRVUkxTY2hlbWVzOwogICAgIGNvcHktPm1fYWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2Vk
UGF0aHMgPSB0aGlzLT5tX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24+IGNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bihjb25zdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJik7CiAKICAgICBl
eHBsaWNpdCBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKQEAgLTc5LDM4ICs3Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJL
aXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsg
fQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkg
eyBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAKLSAgICBjb25zdCBXVEY6OlN0cmluZyYg
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkgeyBtX2FwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9Ci0KLSAgICBj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXREaXNrQ2Fj
aGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSkgeyBtX2Rp
c2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeTsgfQotCi0gICAgY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ2Fj
aGVEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0g
bWVkaWFDYWNoZURpcmVjdG9yeTsgfQotICAgIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNv
bnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBtX2luZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQogICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBt
X2luamVjdGVkQnVuZGxlUGF0aDsgfQogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKGNv
bnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpIHsgbV9pbmplY3RlZEJ1bmRsZVBh
dGggPSBpbmplY3RlZEJ1bmRsZVBhdGg7IH0KIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9y
eTsgfQotICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5n
JiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpIHsgbV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBkZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkSGFzaFNh
bHRzU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnkpIHsgbV9kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBkaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6
U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViU1FM
RGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KGNvbnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkgeyBtX3dlYlNRTERh
dGFiYXNlRGlyZWN0b3J5ID0gd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0
IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
OyB9Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGNvbnN0IFdU
Rjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSB7IG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7
IH0KLQogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzKCkgeyByZXR1cm4gbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsgfQogICAgIHZv
aWQgc2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIGNh
Y2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKSB7IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMg
PSBXVEZNb3ZlKGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKTsgfQogCkBAIC0xODYsMTcgKzE1
NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlv
bkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwg
eyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlByaW1hcnlXZWJCcm93c2VyIH07CiAKLSAgICBXVEY6OlN0
cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9hcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwotICAgIFdURjo6U3RyaW5nIG1f
ZGlza0NhY2hlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fbWVkaWFDYWNoZURpcmVjdG9y
eTsKLSAgICBXVEY6OlN0cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFdU
Rjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwotICAgIFdURjo6U3RyaW5nIG1fbG9jYWxT
dG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7
Ci0gICAgV1RGOjpTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6
U3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBWZWN0b3I8V1RG
OjpTdHJpbmc+IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7CiAgICAgVmVjdG9yPFdURjo6
U3RyaW5nPiBtX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKICAgICBWZWN0b3I8V1RGOjpD
U3RyaW5nPiBtX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVEYXRhU3RvcmUuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTY4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCi0KLSNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgotI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmUuaCIKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLXN0YXRpYyBSZWZQdHI8V2Vic2l0
ZURhdGFTdG9yZT4mIGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKQotewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4+IGdsb2JhbERlZmF1bHREYXRhU3Rv
cmU7Ci0gICAgcmV0dXJuIGdsb2JhbERlZmF1bHREYXRhU3RvcmUuZ2V0KCk7Ci19Ci0KLQotUmVm
PFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKQot
ewotICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKLQotICAgIGF1dG8mIHN0b3JlID0g
Z2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpOwotICAgIGlmICghc3RvcmUpCi0gICAgICAgIHN0b3Jl
ID0gYWRvcHRSZWYobmV3IFdlYnNpdGVEYXRhU3RvcmUoZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwotCi0gICAgcmV0
dXJuICpzdG9yZTsKLX0KLQotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVEZWZhdWx0RGF0
YVN0b3JlRm9yVGVzdGluZygpCi17Ci0gICAgZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpID0gbnVs
bHB0cjsKLX0KLQotYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3Rz
KCkKLXsKLSAgICByZXR1cm4gISFnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCk7Ci19Ci0KLVJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0
YVN0b3JlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlKTsK
LX0KLQotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShSZWY8
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBj
b25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKSk7
Ci19Ci0KLVdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoKQotICAgIDogbV93ZWJz
aXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVu
dCgpKQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICA6IG1fd2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQp
KQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCi17Ci19Ci0K
LUhUVFBDb29raWVTdG9yZSYgV2Vic2l0ZURhdGFTdG9yZTo6aHR0cENvb2tpZVN0b3JlKCkKLXsK
LSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5jb29raWVTdG9yZSgpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjogaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPmNvbmZpZ3VyYXRpb24oKS5pbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSgpOwotfQotCi1ib29sIFdlYnNpdGVEYXRhU3RvcmU6OmlzUGVy
c2lzdGVudCgpCi17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+aXNQZXJzaXN0ZW50
KCk7Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Ci19Ci0KLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7
Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOwotfQotCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCBlbmFibGVkKQotewotICAgIG1f
d2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFi
bGVkKTsKLX0KLQotI2lmICFQTEFURk9STShDT0NPQSkKLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzY5IGFu
ZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzcwCi0gICAgcmV0
dXJuIFdURjo6U3RyaW5nKCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgLy8gRklYTUU6
IEltcGxlbWVudC4KLSAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKLX0KLSNlbmRpZgotCi0jaWYg
IVVTRShHTElCKQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgLy8gTm90IGltcGxlbWVudGVkLgot
ICAgIHJldHVybiBXVEY6OlN0cmluZygpOwotfQotI2VuZGlmCi0KLVJlZjxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0KLSAgICBjb25maWd1cmF0
aW9uLT5zZXRQZXJzaXN0ZW50KHRydWUpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsK
LSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lKCJGaWxlcyIpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVj
dG9yeShkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24t
PnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkp
OwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkoKSk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5zZXRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeShkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAg
Y29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShkZWZh
dWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0
aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGRl
ZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0RGV2aWNl
SWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0
SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoZGVmYXVsdEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5KCkpOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdl
YnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShub25leGlzdGVudCkKQEAg
LTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJBUElIVFRQQ29va2llU3RvcmUuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0j
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgQVBJIHsKLQotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSBmaW5hbCA6IHB1
YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6V2Vic2l0ZURhdGFTdG9yZT4gewotcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gZGVmYXVsdERhdGFTdG9yZSgpOwot
ICAgIHN0YXRpYyBib29sIGRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKLSAgICBzdGF0aWMgdm9p
ZCBkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwotCi0gICAgc3RhdGljIFJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+JiYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7Ci0gICAgc3RhdGljIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7Ci0KLSAgICBleHBs
aWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7Ci0gICAgdmlydHVhbCB+V2Vic2l0ZURhdGFTdG9y
ZSgpOwotCi0gICAgYm9vbCBpc1BlcnNpc3RlbnQoKTsKLQotICAgIGJvb2wgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdDsKLSAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGJvb2wpOwotICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShib29sKTsKLQotICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSgpIHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQotICAgIEhUVFBDb29raWVT
dG9yZSYgaHR0cENvb2tpZVN0b3JlKCk7Ci0KLSAgICBXVEY6OlN0cmluZyBpbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcg
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBk
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGlj
IFdURjo6U3RyaW5nIGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotI2lmIFVTRShH
TElCKQotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SFNUU0RpcmVjdG9yeSgpOwotI2Vu
ZGlmCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRKYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwot
Ci1wcml2YXRlOgotICAgIGVudW0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0
b3J5LCBEb250Q3JlYXRlRGlyZWN0b3J5IH07Ci0KLSAgICBXZWJzaXRlRGF0YVN0b3JlKCk7Ci0K
LSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0
b3J5ID0gQ3JlYXRlRGlyZWN0b3J5KTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSk7Ci0K
LSAgICBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7Ci19
OwotCi19CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGlj
aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZVBvbGljaWVzLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE0
ICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xp
Y2llcy5oIgogCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgIldl
YnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCiAKIG5h
bWVzcGFjZSBBUEkgewogCiBXZWJzaXRlUG9saWNpZXM6OldlYnNpdGVQb2xpY2llcygpID0gZGVm
YXVsdDsKIAotV2Vic2l0ZVBvbGljaWVzOjpXZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxs
b3dlZEF1dG9wbGF5UXVpcmtzLCBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeSBhdXRvcGxh
eVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiBsZWdhY3lDdXN0b21I
ZWFkZXJGaWVsZHMsIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+JiYgY3VzdG9t
SGVhZGVyRmllbGRzLCBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSBwb3BVcFBvbGljeSwgUmVm
UHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKK1dlYnNpdGVQb2xpY2ll
czo6V2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgT3B0aW9uU2V0
PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IGFsbG93ZWRBdXRvcGxheVF1aXJrcywgV2Vi
S2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3kgYXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3Jl
OjpIVFRQSGVhZGVyRmllbGQ+JiYgbGVnYWN5Q3VzdG9tSGVhZGVyRmllbGRzLCBWZWN0b3I8V2Vi
Q29yZTo6Q3VzdG9tSGVhZGVyRmllbGRzPiYmIGN1c3RvbUhlYWRlckZpZWxkcywgV2ViS2l0OjpX
ZWJzaXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3ksIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKICAgICA6IG1fY29udGVudEJsb2NrZXJzRW5hYmxl
ZChjb250ZW50QmxvY2tlcnNFbmFibGVkKQogICAgICwgbV9hbGxvd2VkQXV0b3BsYXlRdWlya3Mo
YWxsb3dlZEF1dG9wbGF5UXVpcmtzKQogICAgICwgbV9hdXRvcGxheVBvbGljeShhdXRvcGxheVBv
bGljeSkKQEAgLTg0LDcgKzg0LDcgQEAgV2Vic2l0ZVBvbGljaWVzOjp+V2Vic2l0ZVBvbGljaWVz
KCkKIHsKIH0KIAotdm9pZCBXZWJzaXRlUG9saWNpZXM6OnNldFdlYnNpdGVEYXRhU3RvcmUoUmVm
UHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKK3ZvaWQgV2Vic2l0ZVBv
bGljaWVzOjpzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBXVEZN
b3ZlKHdlYnNpdGVEYXRhU3RvcmUpOwogfQpAQCAtMTA4LDcgKzEwOCw3IEBAIFdlYktpdDo6V2Vi
c2l0ZVBvbGljaWVzRGF0YSBXZWJzaXRlUG9saWMKICNlbmRpZgogICAgICAgICBXVEZNb3ZlKGN1
c3RvbUhlYWRlckZpZWxkcyksCiAgICAgICAgIHBvcFVwUG9saWN5KCksCi0gICAgICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZSA/IE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnM+IHsgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygp
IH0gOiBXVEY6Om51bGxvcHQsCisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA/IE9wdGlvbmFs
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IHsgbV93ZWJzaXRlRGF0YVN0b3Jl
LT5wYXJhbWV0ZXJzKCkgfSA6IFdURjo6bnVsbG9wdCwKICAgICAgICAgbV9jdXN0b21Vc2VyQWdl
bnQsCiAgICAgICAgIG1fY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVp
cmtzLAogICAgICAgICBtX2N1c3RvbU5hdmlnYXRvclBsYXRmb3JtLApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2ll
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMyArNDEsMTIgQEAKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIHN0
cnVjdCBXZWJzaXRlUG9saWNpZXNEYXRhOwogfQogCiBuYW1lc3BhY2UgQVBJIHsKIAotY2xhc3Mg
V2Vic2l0ZURhdGFTdG9yZTsKLQogY2xhc3MgV2Vic2l0ZVBvbGljaWVzIGZpbmFsIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6V2Vic2l0ZVBvbGljaWVzPiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlUG9saWNpZXM+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2Vic2l0ZVBvbGljaWVzKTsgfQpAQCAtNzksOCArNzgsOCBAQCBwdWJs
aWM6CiAgICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3koKSBjb25zdCB7
IHJldHVybiBtX3BvcFVwUG9saWN5OyB9CiAgICAgdm9pZCBzZXRQb3BVcFBvbGljeShXZWJLaXQ6
OldlYnNpdGVQb3BVcFBvbGljeSBwb2xpY3kpIHsgbV9wb3BVcFBvbGljeSA9IHBvbGljeTsgfQog
Ci0gICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJu
IG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9y
ZShSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJik7CisgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3Jl
LmdldCgpOyB9CisgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0cjxXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU+JiYpOwogCiAgICAgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIGRh
dGEoKTsKIApAQCAtMTE4LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFsbG93Q29u
dGVudENoYW5nZU9ic2VydmVyUXVpcmsoYm9vbCBhbGxvdykgeyBtX2FsbG93Q29udGVudENoYW5n
ZU9ic2VydmVyUXVpcmsgPSBhbGxvdzsgfQogCiBwcml2YXRlOgotICAgIFdlYnNpdGVQb2xpY2ll
cyhib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVB
dXRvcGxheVF1aXJrPiwgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJD
b3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYsIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVs
ZHM+JiYsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5LCBSZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4mJik7CisgICAgV2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwg
T3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+LCBXZWJLaXQ6OldlYnNpdGVB
dXRvcGxheVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiwgVmVjdG9y
PFdlYkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4mJiwgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xp
Y3ksIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+JiYpOwogCiAgICAgYm9vbCBtX2Nv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQgeyB0cnVlIH07CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZUF1dG9wbGF5UXVpcms+IG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtzOwpAQCAtMTI5LDcgKzEy
OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4gbV9s
ZWdhY3lDdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkN1c3RvbUhlYWRl
ckZpZWxkcz4gbV9jdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQ
b2xpY3kgbV9wb3BVcFBvbGljeSB7IFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5OjpEZWZhdWx0
IH07Ci0gICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAg
ICBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAg
ICAgV1RGOjpTdHJpbmcgbV9jdXN0b21Vc2VyQWdlbnQ7CiAgICAgV1RGOjpTdHJpbmcgbV9jdXN0
b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3M7CiAgICAgV1RGOjpTdHJp
bmcgbV9jdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjks
NiBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNzIFByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjsKIGNsYXNzIFNlc3Npb25TdGF0ZTsKIGNsYXNzIFVzZXJTY3JpcHQ7Ci1jbGFzcyBXZWJz
aXRlRGF0YVN0b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogY2xhc3MgV2luZG93RmVhdHVy
ZXM7CiB9CkBAIC0xMTMsNiArMTEyLDcgQEAgY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI7CiBjbGFzcyBXZWJUZXh0Q2hlY2tlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OwogY2xhc3MgV2ViVmlld3BvcnRBdHRyaWJ1dGVzOworY2xhc3MgV2Vic2l0
ZURhdGFTdG9yZTsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOwogCiBXS19B
RERfQVBJX01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiwgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eSkKQEAgLTE2OSw3ICsxNjksNyBAQCBXS19BRERfQVBJX01BUFBJTkco
V0tVc2VyTWVkaWFQZXJtaXNzaW9uCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFJlZiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSkKIFdLX0FE
RF9BUElfTUFQUElORyhXS1VzZXJTY3JpcHRSZWYsIEFQSTo6VXNlclNjcmlwdCkKIFdLX0FERF9B
UElfTUFQUElORyhXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZiwgV2ViVmlld3BvcnRBdHRyaWJ1dGVz
KQotV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgQVBJOjpXZWJzaXRl
RGF0YVN0b3JlKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb25SZWYsIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tXZWJzaXRlUG9saWNpZXNSZWYsIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2luZG93RmVhdHVyZXNSZWYsIEFQSTo6
V2luZG93RmVhdHVyZXMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ5
NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDQyICsyNiwxOSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCIKIAotI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCi0KIFdL
VHlwZUlEIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRUeXBlSUQoKQogewotICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CisgICAgcmV0
dXJuIDA7CiB9CiAKLXZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9uIGNhbGxiYWNrKQordm9pZCBXS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnMoV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlclJlZiwgdm9pZCosIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luc0Z1bmN0aW9uKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBX
ZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oYXBw
bGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVE
YXRhU3RvcmUuZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdKGF1dG8gZGF0YVJlY29yZHMp
IHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2luczsK
LSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKLSAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKQot
ICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy5hcHBlbmQoQVBJOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBjYWxsYmFjayhXZWJLaXQ6OnRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHNlY3Vy
aXR5T3JpZ2lucykpLnB0cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZv
aWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwgV0tTZWN1cml0
eU9yaWdpblJlZiBvcmlnaW4pCit2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVF
bnRyaWVzRm9yT3JpZ2luKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYsIFdLU2VjdXJpdHlP
cmlnaW5SZWYpCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IFdlYktpdDo6dG9JbXBs
KHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihhcHBsaWNhdGlvbkNhY2hl
TWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0KLSAgICBXZWJLaXQ6OldlYnNpdGVEYXRh
UmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCBXZWJLaXQ6OnRvSW1wbChvcmlnaW4p
LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7Ci0KLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92
ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
LCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsKIH0KIAotdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyKQordm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRl
QWxsRW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmKQogewotICAgIGF1dG8mIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0
ZURhdGFTdG9yZVJlZj4oYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YShXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwg
W10geyB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgJKHJldmlzaW9uIDI0OTczMikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTggKzI3LDE5IEBACiAjZGVmaW5lIFdLQXBwbGljYXRp
b25DYWNoZU1hbmFnZXJfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUg
PFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMi
IHsKICNlbmRpZgogCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ckdldFR5cGVJRCgpOworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJHZXRUeXBlSUQoKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiB0eXBlZGVmIHZvaWQgKCpXS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiko
V0tBcnJheVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9u
IGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRB
cHBsaWNhdGlvbkNhY2hlT3JpZ2lucyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbikgV0tfQ19BUElf
REVQUkVDQVRFRDsKIAotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRl
bGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNh
dGlvbkNhY2hlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pOwotV0tfRVhQT1JU
IHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcik7CitXS19FWFBPUlQg
dm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCBXS1NlY3Vy
aXR5T3JpZ2luUmVmIG9yaWdpbikgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lk
IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpIFdLX0NfQVBJX0RFUFJFQ0FU
RUQ7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCShyZXZpc2lv
biAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5
TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCIKIAotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMu
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZVBvbGljaWVzRGF0YS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw5MCArMjYsMzggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAi
QVBJRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNs
dWRlICJTdG9yYWdlTWFuYWdlci5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUg
IldlYnNpdGVEYXRhUmVjb3JkLmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlw
ZUlEIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRv
QVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIDA7CiB9CiAK
IFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpCiB7Ci0g
ICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJXZWJLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURldGFpbHNPcmlnaW5LZXkiKS5sZWFrUmVmKCk7Ci0g
ICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBXS1N0cmlu
Z1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKQogewotICAg
IHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiV2ViS2V5VmFs
dWVTdG9yYWdlTWFuYWdlclN0b3JhZ2VEZXRhaWxzQ3JlYXRpb25UaW1lS2V5IikubGVha1JlZigp
OwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogV0tT
dHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgp
CiB7Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJX
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURldGFpbHNNb2RpZmljYXRpb25UaW1lS2V5
IikubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VP
cmlnaW5zKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
LCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3Jh
Z2VPcmlnaW5zRnVuY3Rpb24gY2FsbGJhY2spCi0KK3ZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYs
IHZvaWQqLCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5z
RnVuY3Rpb24pCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVy
cHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oa2V5VmFsdWVTdG9yYWdlTWFuYWdlcikp
LT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5mZXRjaERhdGEoeyBX
ZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3Rv
cmFnZSB9LCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10oYXV0byBkYXRhUmVjb3JkcykgewotICAg
ICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gc2VjdXJpdHlPcmlnaW5zOwotICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVjb3JkcykgewotICAgICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBkYXRhUmVjb3JkLm9yaWdpbnMpCi0gICAgICAg
ICAgICAgICAgc2VjdXJpdHlPcmlnaW5zLmFwcGVuZChBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUob3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxi
YWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHNlY3VyaXR5T3JpZ2lucykpLnB0
cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1bmN0aW9uIGNhbGxiYWNr
KQordm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwgdm9pZCosIFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5jdGlvbikKIHsKLSAgICBhdXRvJiB3ZWJz
aXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3Jl
UmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3
ZWJzaXRlRGF0YVN0b3JlLmdldExvY2FsU3RvcmFnZURldGFpbHMoW2NvbnRleHQsIGNhbGxiYWNr
XShhdXRvJiYgZGV0YWlscykgewotICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4g
cmVzdWx0OwotICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkZXRhaWxzLnNp
emUoKSk7Ci0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkZXRhaWwgOiBkZXRhaWxzKSB7Ci0g
ICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSTo6T2JqZWN0Pj4gZGV0YWlsTWFw
OwotICAgICAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKGRldGFpbC5vcmlnaW5JZGVudGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0K
LSAgICAgICAgICAgIGRldGFpbE1hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ckdldE9yaWdpbktleSgpKS0+c3RyaW5nKCksIG9yaWdpbik7Ci0gICAgICAgICAgICBpZiAoZGV0
YWlsLmNyZWF0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxNYXAuc2V0KHRvSW1wbChX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBB
UEk6OkRvdWJsZTo6Y3JlYXRlKGRldGFpbC5jcmVhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2No
KCkudmFsdWUoKSkpOwotICAgICAgICAgICAgaWYgKGRldGFpbC5tb2RpZmljYXRpb25UaW1lKQot
ICAgICAgICAgICAgICAgIGRldGFpbE1hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3Jl
YXRlKGRldGFpbC5tb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkp
KTsKLQotICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChBUEk6OkRpY3Rpb25hcnk6
OmNyZWF0ZShXVEZNb3ZlKGRldGFpbE1hcCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxi
YWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdCkpLnB0cigpKSwgbnVs
bHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5
VmFsdWVTdG9yYWdlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pCit2b2lkIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmKQogewotICAgIGF1dG8mIHdlYnNp
dGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVS
ZWY+KGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIFdl
YnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURh
dGFUeXBlOjpMb2NhbFN0b3JhZ2UsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRh
dGEoKSk7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFn
ZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKLSAgICB3ZWJzaXRl
RGF0YVN0b3JlLnJlbW92ZURhdGEoeyBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vi
c2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSB9LCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsK
IH0KIAotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKQordm9pZCBXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlclJlZikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJw
cmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSkt
PndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEoeyBX
ZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3Rv
cmFnZSB9LCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtdIHsgfSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXIuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDMwICsy
NywzMSBAQAogI2RlZmluZSBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJfaAogCiAjaW5jbHVkZSA8
V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lm
ZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi1XS19FWFBPUlQgV0tUeXBl
SUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlEKCk7CitXS19FWFBPUlQgV0tUeXBl
SUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlEKCkgV0tfQ19BUElfREVQUkVDQVRF
RDsKIAogLyogVmFsdWUgdHlwZTogV0tTZWN1cml0eU9yaWdpblJlZiAqLwotV0tfRVhQT1JUIFdL
U3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpOworV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpIFdL
X0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5cGU6IFdLRG91YmxlUmVmLCBzZWNvbmRz
IHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpOworV0tfRVhQT1JUIFdL
U3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpIFdL
X0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5cGU6IFdLRG91YmxlUmVmLCBzZWNvbmRz
IHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKTsKK1dLX0VYUE9S
VCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1l
S2V5KCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uKShXS0FycmF5UmVm
LCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zRnVuY3Rpb24gZnVuY3Rpb24pOworV0tf
RVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3Jp
Z2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwg
dm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdl
T3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiB0eXBlZGVm
IHZvaWQgKCpXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
RnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdLRXJyb3JSZWYsIHZvaWQqKTsKLVdLX0VYUE9SVCB2b2lk
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4oV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRl
eHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5j
dGlvbiBmdW5jdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24gZnVuY3Rpb24pIFdLX0NfQVBJX0RF
UFJFQ0FURUQ7CiAKLVdLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0
ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3Rv
cmFnZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKTsKLVdLX0VYUE9SVCB2b2lk
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpOworV0tfRVhQT1JUIHZvaWQgV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJl
ZiBvcmlnaW4pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CitXS19FWFBPUlQgdm9pZCBXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVz
b3VyY2VDYWNoZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNjcgKzI2LDE5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oIgogCi0jaW5jbHVkZSAiQVBJQXJy
YXkuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSAiV0tBUElD
YXN0LmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNvcmQuaCIKLQotdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKLQogV0tUeXBlSUQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldFR5cGVJRCgpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7Ci19Ci0K
LXN0YXRpYyBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZXMoV0tS
ZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikKLXsKLSAgICBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzIHsgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlD
YWNoZSB9OwotCi0gICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gV0tSZXNvdXJjZUNhY2hlc1RvQ2xl
YXJBbGwpCi0gICAgICAgIHdlYnNpdGVEYXRhVHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlz
a0NhY2hlKTsKLQotICAgIHJldHVybiB3ZWJzaXRlRGF0YVR5cGVzOworICAgIHJldHVybiAwOwog
fQogCi12b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMoV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFjaykKK3ZvaWQgV0tSZXNv
dXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVm
LCB2b2lkKiwgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uKQog
ewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxX
S1dlYnNpdGVEYXRhU3RvcmVSZWY+KGNhY2hlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7
Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5mZXRjaERhdGEodG9XZWJzaXRlRGF0YVR5cGVzKFdLUmVz
b3VyY2VDYWNoZXNUb0NsZWFyQWxsKSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdKGF1dG8gZGF0
YVJlY29yZHMpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5
T3JpZ2luczsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29y
ZHMpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5v
cmlnaW5zKQotICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy5hcHBlbmQoQVBJOjpTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShzZWN1
cml0eU9yaWdpbnMpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwotICAgIH0pOwogfQogCi12
b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5hZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwg
V0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikKK3ZvaWQgV0tSZXNvdXJjZUNh
Y2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4oV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiwg
V0tTZWN1cml0eU9yaWdpblJlZiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgYXV0
byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURh
dGFTdG9yZVJlZj4oY2FjaGVNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLQotICAgIFZl
Y3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gZGF0YVJlY29yZHM7Ci0KLSAgICB7Ci0gICAgICAgIFdl
YnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNp
dGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigp
LmRhdGEoKSk7Ci0KLSAgICAgICAgZGF0YVJlY29yZHMuYXBwZW5kKGRhdGFSZWNvcmQpOwotICAg
IH0KLQotICAgIGlmIChjYWNoZXNUb0NsZWFyID09IFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyQWxs
KSB7Ci0gICAgICAgIFdlYnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgICAgIGRhdGFS
ZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCB0b0ltcGwob3JpZ2luKS0+c2Vj
dXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotCi0gICAgICAgIGRhdGFSZWNvcmRzLmFwcGVuZChkYXRh
UmVjb3JkKTsKLSAgICB9Ci0KLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEodG9XZWJz
aXRlRGF0YVR5cGVzKGNhY2hlc1RvQ2xlYXIpLCBkYXRhUmVjb3JkcywgW10geyB9KTsKIH0KIAot
dm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFsbE9yaWdpbnMoV0tSZXNv
dXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFy
IGNhY2hlc1RvQ2xlYXIpCit2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9y
QWxsT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmLCBXS1Jlc291cmNlQ2FjaGVzVG9D
bGVhcikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0
X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihjYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFT
dG9yZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YSh0b1dlYnNpdGVEYXRhVHlw
ZXMoY2FjaGVzVG9DbGVhciksIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW10geyB9KTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyX2gKIAogI2luY2x1ZGUg
PFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CiAKICNp
ZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0zOCwxMyArMzksMTMgQEAgZW51bSB7
CiB9OwogdHlwZWRlZiB1aW50MzJfdCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhcjsKIAotV0tfRVhQ
T1JUIFdLVHlwZUlEIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRUeXBlSUQoKTsKK1dLX0VYUE9S
VCBXS1R5cGVJRCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0VHlwZUlEKCkgV0tfQ19BUElfREVQ
UkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hl
T3JpZ2luc0Z1bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBP
UlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zKFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJSZWYgY29udGV4dFJlZiwgdm9pZCogY29udGV4dCwgV0tSZXNvdXJjZUNhY2hl
TWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lk
IFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFu
YWdlclJlZiBjb250ZXh0UmVmLCB2b2lkKiBjb250ZXh0LCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2Vy
R2V0Q2FjaGVPcmlnaW5zRnVuY3Rpb24gZnVuY3Rpb24pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAK
LVdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2lu
KFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5nZXIsIFdLU2VjdXJpdHlPcmlnaW5S
ZWYgb3JpZ2luLCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKTsKLVdLX0VY
UE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhX
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwgV0tSZXNvdXJjZUNhY2hlc1Rv
Q2xlYXIgY2FjaGVzVG9DbGVhcik7CitXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyQ2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFu
Z2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIg
Y2FjaGVzVG9DbGVhcikgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lkIFdLUmVz
b3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVN
YW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9D
bGVhcikgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAKICNpbmNsdWRlICJXS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCIKIAogI2luY2x1
ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1
ZGUgIkFQSUhUVFBDb29raWVTdG9yZS5oIgogI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mu
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKQEAgLTQxLDI5ICs0MSwzMCBAQAogI2luY2x1ZGUg
IldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0Fn
Z3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIFdLVHlwZUlEIFdLV2Vic2l0ZURh
dGFTdG9yZUdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OkFQSVR5cGUpOwogfQogCiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
V0tXZWJzaXRlRGF0YVN0b3JlR2V0RGVmYXVsdERhdGFTdG9yZSgpCiB7Ci0gICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRy
KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpKTsKIH0KIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdL
V2Vic2l0ZURhdGFTdG9yZUNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKQogewotICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNp
c3RlbnREYXRhU3RvcmUoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKS5sZWFrUmVmKCkp
OwogfQogCiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlV2l0
aENvbmZpZ3VyYXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblJlZiBjb25maWd1
cmF0aW9uKQogewogICAgIGF1dG8gc2Vzc2lvbklEID0gV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJh
dGlvbiktPmlzUGVyc2lzdGVudCgpID8gUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlUGVyc2lzdGVu
dFNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlRXBoZW1lcmFsU2Vzc2lvbklE
KCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3Jl
YXRlKCpXZWJLaXQ6OnRvSW1wbChjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKS5sZWFrUmVmKCkp
OworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNy
ZWF0ZSgqV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJhdGlvbiksIHNlc3Npb25JRCkubGVha1JlZigp
KTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZSkK
QEAgLTgzLDEzICs4NCwxMyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9h
ZFN0CiAKIFdLSFRUUENvb2tpZVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUdldEhUVFBDb29r
aWVTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKQogewotICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5odHRwQ29va2ll
U3RvcmUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPmNvb2tpZVN0b3JlKCkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVXaXRoQ29tcGxldGlvbkhhbmRsZXIoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWJ1Z01vZGVGdW5jdGlvbiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGVuYWJsZSwgW2NvbnRleHQsIGNvbXBsZXRpb25I
YW5kbGVyXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGUsIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
cl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsKICNlbHNl
CkBAIC0xMDAsNyArMTAxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc0RlYnVnTW9kZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdN
b2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQs
IGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMTEwLDcg
KzExMSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3QKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGRvdWJsZSBzZWNvbmRzLCB2b2lk
KiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzTGFzdFNlZW5GdW5jdGlvbiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXRMYXN0U2VlbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFNl
Y29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldExhc3RTZWVuKFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQs
IGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQp
OwogICAgIH0pOwogI2Vsc2UKQEAgLTEyMSw3ICsxMjIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NMYXN0CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3Rp
Y3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0
YVN0b3JlKCk7CisgICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZhbHVlKQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3Jl
LnNldFByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CkBAIC0xMzksNyArMTQwLDcg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldgogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVz
b3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byYgd2Vic2l0
ZURhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZh
bHVlKQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlLnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21w
bGV0aW9uSGFuZGxlcl0gewpAQCAtMTU3LDcgKzE1OCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1ZlcnkKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlRHVtcFJlc291cmNl
TG9hZFN0YXRpc3RpY3MoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3NGdW5j
dGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kdW1w
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbY29udGV4dCwgY2FsbGJhY2tdIChjb25zdCBTdHJpbmcm
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbY29udGV4dCwgY2FsbGJhY2tdIChjb25z
dCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKICAgICAgICAgY2FsbGJhY2soV2Vi
S2l0Ojp0b0FQSShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmltcGwoKSksIGNvbnRleHQpOwogICAg
IH0pOwogI2Vsc2UKQEAgLTE2OCw3ICsxNjksNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUR1
bXBSZXNvdXJjZUxvYWRTCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJz
aXRlRGF0YVN0b3JlKCkuaXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ByZXZhbGVu
dFJlc291cmNlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNQcmV2YWxl
bnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKSB7CiAgICAgICAgIGNh
bGxiYWNrKGlzUHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAg
LTE3OSw3ICsxODAsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZh
CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJj
ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmlzVmVyeVByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzVmVyeVByZXZhbGVudFJl
c291cmNlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsKICAgICAg
ICAgY2FsbGJhY2soaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwog
I2Vsc2UKQEAgLTE5MCw3ICsxOTEsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRB
c1N1YnJlc291cmNlVW5kZXIoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tT
dHJpbmdSZWYgc3VicmVzb3VyY2VIb3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXJGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChzdWJyZXNvdXJjZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJv
b2wgaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNr
XShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikgewogICAgICAgICBjYWxsYmFj
ayhpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIsIGNvbnRleHQpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTIwMSw3ICsyMDIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1
YkZyYW1lVW5kZXIoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgc3ViRnJhbWVIb3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXJG
dW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5p
c1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJG
cmFtZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVI
b3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNT
dWJGcmFtZVVuZGVyKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNSZWdp
c3RlcmVkQXNTdWJGcmFtZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVI
b3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJh
bWVVbmRlcikgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIs
IGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIxMiw3ICsyMTMsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlz
U3RhdGlzdGljc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tLCBXS1N0cmluZ1Jl
ZiBob3N0UmVkaXJlY3RlZFRvLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0
YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGlu
Z1RvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmco
KSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8p
IHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5pc1JlZ2lzdGVyZWRBc1JlZGly
ZWN0aW5nVG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5z
dHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbykgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8sIGNv
bnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIyMyw3ICsyMjQsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNv
bXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgYXV0byYgZGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIGRhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZhbHVlKQogICAgICAgICBkYXRhU3RvcmUubG9nVXNl
ckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CkBAIC0yNDEsNyArMjQyLDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSAogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlSXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uRnVuY3Rpb24gY2FsbGJh
Y2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaGFzSGFkVXNlckludGVy
YWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbikgeworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBo
YXNIYWRVc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSGFkVXNlckludGVy
YWN0aW9uLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yNTIsMTQgKzI1MywxNCBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hhc0hhCiB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0R3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIHZhbHVlLCBbXSB7IH0pOworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldEdyYW5kZmF0aGVyZWQoVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCB2YWx1ZSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZEZ1bmN0aW9uIGNh
bGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhhc0hhZFVzZXJJ
bnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc0dyYW5kZmF0aGVyZWQpIHsKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNH
cmFuZGZhdGhlcmVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzR3JhbmRmYXRoZXJlZCwgY29udGV4
dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMjcwLDQ5ICsyNzEsNDkgQEAgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NHcmFuZAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCkK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9
KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9
KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0KQogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbXSB7IH0pOwor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbXSB7IH0p
OwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKQogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW10geyB9KTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtdIHsg
fSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKQog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSks
IFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0U3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3Ry
aW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0
cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0
ZWRUbykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkp
LCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSks
IFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
KSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkp
LCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJv
bSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0RnJvbShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkp
LCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJp
bmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBmcm9tSG9zdCwgV0tTdHJpbmdSZWYgdG9I
b3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NT
aXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRp
b25Gb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoZnJvbUhvc3QpLT5zdHJpbmco
KSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9Ib3N0KS0+c3RyaW5nKCkpLCBbY29udGV4
dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRDcm9z
c1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGZyb21Ib3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRv
SG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNr
KGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTMyMyw3ICszMjQsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDcm9zCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNh
bGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFRpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNr
XSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0VGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbihTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAg
ICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMzM0LDcgKzMzNSw3
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWUKIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNGdW5jdGlv
biBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVs
ZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoW2NvbnRleHQsIGNhbGxiYWNrXSB7
CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1bGVTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHNQcm9jZXNzaW5nKFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxs
YmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0zNDUsNyArMzQ2LDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vzcwogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Vw
ZGF0ZUNvb2tpZUJsb2NraW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShb
Y29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdKCkgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbnRleHQsIGNvbXBsZXRp
b25IYW5kbGVyXSgpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAg
fSk7CiAjZWxzZQpAQCAtMzU2LDIxICszNTcsMjEgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzVXBkYXRlQwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzU3VibWl0
VGVsZW1ldHJ5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc3VibWl0VGVsZW1ldHJ5KCk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c3VibWl0VGVsZW1ldHJ5KCk7CiAjZW5kaWYKIH0KIAog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJl
Y29yZHNXZXJlU2Nhbm5lZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29s
IHZhbHVlKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUsIFtdIHsgfSk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZCh2YWx1ZSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Rlc3QodmFsdWUsIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KHZhbHVl
LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAg
fSk7CiAjZWxzZQpAQCAtMzgxLDQ5ICszODIsNDkgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzSXNSdQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hv
dWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNv
cmRzUmVtb3ZhbCh2YWx1ZSwgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFs
KHZhbHVlLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZCh2YWx1ZSwgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNl
dE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKHZhbHVlLCBbXSgpIHsgfSk7CiAj
ZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTWluaW11bVRp
bWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIGRvdWJsZSBzZWNvbmRzKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHsgc2Vj
b25kcyB9LCBbXSgpIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0
TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMgeyBzZWNvbmRzIH0s
IFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgZG91YmxlIHNlY29uZHMpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtdKCkgeyB9KTsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vj
b25kcyB7IHNlY29uZHMgfSwgW10oKSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc01heFN0YXRpc3RpY3NFbnRyaWVzKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVkIGVudHJpZXMpCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TWF4U3RhdGlzdGljc0VudHJpZXMoZW50cmllcywgW10o
KSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE1heFN0YXRpc3Rp
Y3NFbnRyaWVzKGVudHJpZXMsIFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcnVuZUVudHJpZXNEb3duVG8oV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgdW5zaWduZWQgZW50cmllcykKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQcnVuZUVudHJpZXNEb3duVG8oZW50cmllcywgW10oKSB7
IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFBydW5lRW50cmllc0Rv
d25UbyhlbnRyaWVzLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZUZ1bmN0aW9uIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6
OlllcywgW2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdlYktpdDo6U2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAg
ICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTQzNCw3ICs0MzUsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZp
ZWRTaW5jZUhvdXJzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVk
IGhvdXJzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vyc0Z1bmN0aW9uIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWU6Om5vdygpIC0gU2Vjb25kczo6ZnJvbUhvdXJz
KGhvdXJzKSwgV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6OlllcywgW2NvbnRl
eHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lOjpub3coKSAtIFNlY29uZHM6
OmZyb21Ib3Vycyhob3VycyksIFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZ
ZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwog
ICAgIH0pOwogI2Vsc2UKQEAgLTQ0NSw3ICs0NDYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NDbGVhckluCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVh
clRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhy
b3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNl
dDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGlt
ZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhj
b250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTQ1Myw3ICs0NTQsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NDbGVhclRoCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NEZWxldGVDb29raWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVz
dGluZ0Z1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgW2NvbnRleHQsIGNhbGxiYWNr
XSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZGVsZXRlQ29va2llc0ZvclRl
c3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBpbmNsdWRl
SHR0cE9ubHlDb29raWVzLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2so
Y29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNDY0LDcgKzQ2NSw3IEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUMKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc0hhc0xvY2FsU3RvcmFnZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0
aXN0aWNzSGFzTG9jYWxTdG9yYWdlRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuaGFzTG9jYWxTdG9yYWdlRm9yVGVzdGluZyhVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9v
bCBoYXNMb2NhbFN0b3JhZ2UpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5o
YXNMb2NhbFN0b3JhZ2VGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhhc0xvY2FsU3RvcmFnZSkgewog
ICAgICAgICBjYWxsYmFjayhoYXNMb2NhbFN0b3JhZ2UsIGNvbnRleHQpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTQ3NSw3ICs0NzYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NI
YXNMb2NhCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNh
cChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcywgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2Fw
RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29uZHMg
fSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29u
ZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwog
ICAgIH0pOwogI2Vsc2UKQEAgLTQ4Niw3ICs0ODcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NDYWNoCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJ
c29sYXRlZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJp
bmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hh
c0lzb2xhdGVkU2Vzc2lvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLmhhc0lzb2xhdGVkU2Vzc2lvbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wg
aGFzSXNvbGF0ZWRTZXNzaW9uKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
aGFzSXNvbGF0ZWRTZXNzaW9uRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNJc29sYXRlZFNlc3Np
b24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSXNvbGF0ZWRTZXNzaW9uLCBjb250ZXh0KTsKICAg
ICB9KTsKICNlbHNlCkBAIC01MDEsNyArNTAyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzUmVzZXRUbwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAg
ICB9KTsKIAotICAgIGF1dG8mIHN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHN0b3JlID0gKldlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZik7CiAgICAgc3RvcmUuY2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzSW5XZWJQ
cm9jZXNzZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVm
KCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0g
eyB9KTsKICAgICBzdG9yZS5yZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9y
VGVzdGluZyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0geyB9KTsKQEAgLTUxNiw3ICs1MTcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NSZXNldFRvCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spCiB7
CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJL
aXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRp
bWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5
KCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAg
ICB9KTsKIH0KQEAgLTUyOCw3ICs1MjksNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92
ZUZldGNoQ2FjaGVGCiAgICAgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFS
ZWNvcmRzID0geyBXVEZNb3ZlKGRhdGFSZWNvcmQpIH07CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpE
T01DYWNoZTsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIGRhdGFSZWNvcmRzLCBbY29udGV4dCwgY2FsbGJh
Y2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFU
eXBlcywgZGF0YVJlY29yZHMsIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFj
ayhjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTUzNiw3ICs1MzcsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92
ZUFsbEluZGV4ZWREYXRhYmFzZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
dm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNl
c0NhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlczsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQs
IGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0
YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7
CiAgICAgaWYgKGNhbGxiYWNrKQogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsK
QEAgLTU0NSw3ICs1NDYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4
ZWRECiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVSZW1vdmVMb2NhbFN0b3JhZ2VDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8
V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFU
eXBlOjpMb2NhbFN0b3JhZ2U7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5
KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0
LCBjYWxsYmFja10gewogICAgICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgICAgICBjYWxsYmFj
ayhjb250ZXh0KTsKICAgICB9KTsKQEAgLTU1NSw3ICs1NTYsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zOwotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRh
dGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdh
bGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJh
Y2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTY2LDcgKzU2Nyw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVcKIAogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVHZXRGZXRjaENhY2hlT3JpZ2lucyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlT3JpZ2luc0Z1
bmN0aW9uIGNhbGxiYWNrKQogewotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNh
Y2hlLCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0YVJlY29yZHMpIHsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6OkRPTUNhY2hlLCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0YVJlY29y
ZHMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2lu
czsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsK
ICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5z
KQpAQCAtNTgwLDcgKzU4MSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNo
ZVNpemUKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBm
ZXRjaE9wdGlvbnMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXpl
czsKIAotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KS5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBmZXRjaE9wdGlv
bnMsIFtvcmlnaW4sIGNvbnRleHQsIGNhbGxiYWNrXSAoYXV0byBkYXRhUmVjb3JkcykgeworICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmZldGNoRGF0YShXZWJLaXQ6OldlYnNpdGVE
YXRhVHlwZTo6RE9NQ2FjaGUsIGZldGNoT3B0aW9ucywgW29yaWdpbiwgY29udGV4dCwgY2FsbGJh
Y2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CiAgICAgICAgIGF1dG8gb3JpZ2luRGF0YSA9IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFdlYktpdDo6dG9JbXBsKG9yaWdp
biktPnN0cmluZygpKS0+ZGF0YSgpOwogICAgICAgICBmb3IgKGF1dG8mIGRhdGFSZWNvcmQgOiBk
YXRhUmVjb3JkcykgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWNvcmRPcmlnaW4g
OiBkYXRhUmVjb3JkLm9yaWdpbnMpIHsKQEAgLTU5NywyMyArNTk4LDIzIEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemUKIAogV0tTdHJpbmdSZWYgV0tXZWJzaXRlRGF0
YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQ
SShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0Nv
cGllZEFQSShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSkK
IHsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShXZWJLaXQ6OnRvSW1wbChzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KS0+c3RyaW5nKCkpOworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkoV2ViS2l0Ojp0b0ltcGwoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSktPnN0
cmluZygpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmlnaW5TdG9yYWdl
UXVvdGEoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdWludDY0X3QgcXVvdGEp
CiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnNldFBlck9yaWdpblN0b3JhZ2VRdW90YShxdW90YSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+c2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKHF1b3RhKTsKIH0KIAogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsbERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbnMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKICNpZiBFTkFCTEUoREVWSUNFX09S
SUVOVEFUSU9OKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRh
U3RvcmUoKS5kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIoKS5jbGVh
clBlcm1pc3Npb25zKCk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZGV2aWNl
T3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKCkuY2xlYXJQZXJtaXNzaW9ucygp
OwogI2VuZGlmCiB9CiAKQEAgLTcxMywxNCArNzE0LDE0IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0V2ViQXV0aGVudGljYXQKICAgICAgICAgY29uZmlndXJhdGlvbi5uZmMgPSBXVEZNb3Zl
KG5mYyk7CiAgICAgfQogCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV1RGTW92
ZShjb25maWd1cmF0aW9uKSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJp
YnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBZENsaWNr
QXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQog
ewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2Vi
S2l0OjpXZWJzaXRlRGF0YVR5cGU6OkFkQ2xpY2tBdHRyaWJ1dGlvbnM7Ci0gICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5
cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHJldmlzaW9uIDI0
OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiV0tXZWJz
aXRlUG9saWNpZXMuaCIKIAogI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJB
UElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgogI2luY2x1ZGUgIldL
RGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV2Vic2l0
ZURhdGFTdG9yZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRl
RGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2Vic2l0ZURh
dGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3VybFByb3h5U2V0dGluZ3MuaD4KICNpbmNs
dWRlIDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5o
PgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRh
U3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShyZXZpc2lvbiAyNDk3MzIpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCShub25leGlzdGVudCkKQEAgLTEsMTk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotCi0j
aW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2luY2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMu
aCIKLSNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLSNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbXBvcnQgPFdlYkNvcmUv
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIEFQSSB7Ci0K
LU5TU3RyaW5nICpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJEYXRhYmFz
ZURpcmVjdG9yeSI7Ci1OU1N0cmluZyAqV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0g
QCJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5IjsKLU5TU3RyaW5n
ICpXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdE1lZGlhQ2Fj
aGVEaXJlY3RvcnkiOwotTlNTdHJpbmcgKldlYktpdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlE
ZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSI7Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KCkKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIC8vIFRoaXMgcXVpcmsgdXNlZCB0
byBtYWtlIHRoZXNlIGFwcHMgc2hhcmUgYXBwbGljYXRpb24gY2FjaGUgc3RvcmFnZSwgYnV0IGRv
ZXNuJ3QgYWNjb21wbGlzaCB0aGF0IGFueSBtb3JlLgotICAgIC8vIFByZXNlcnZpbmcgaXQgYXZv
aWRzIHRoZSBuZWVkIHRvIG1pZ3JhdGUgZGF0YSB3aGVuIHVwZ3JhZGluZy4KLSAgICAvLyBGSVhN
RTogSWRlYWxseSB3ZSBzaG91bGQganVzdCBoYXZlIFNhZmFyaSwgV2ViQXBwLCBhbmQgd2ViYm9v
a21hcmtzZCBjcmVhdGUgYSBkYXRhIHN0b3JlIHdpdGgKLSAgICAvLyB0aGlzIGFwcGxpY2F0aW9u
IGNhY2hlIHBhdGgsIGJ1dCB0aGF0J3Mgbm90IHN1cHBvcnRlZCBhcyBvZiByaWdodCBub3cuCi0g
ICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNv
cmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkFwcCgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9u
Ojppc1dlYkJvb2ttYXJrc0QoKSkgewotICAgICAgICBOU1N0cmluZyAqY2FjaGVQYXRoID0gW05T
SG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkv
Q2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJdOwotCi0gICAgICAgIHJldHVybiBXZWJLaXQ6
OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY2FjaGVQYXRoLnN0cmluZ0J5U3RhbmRh
cmRpemluZ1BhdGgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSIpOwot
fQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGly
ZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIkNhY2hlU3RvcmFnZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSIpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCi17
Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlh
Q2FjaGUiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4ZWREQiIpOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKCJTZXJ2aWNlV29ya2VycyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkxvY2FsU3RvcmFnZSIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJNZWRpYUtleXMiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIldlYlNRTCIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Ci19Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIkphdmFTY3JpcHRDb3JlRGVidWciLCBEb250Q3JlYXRlRGlyZWN0b3J5KTsKLX0KLQot
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRl
RGlyZWN0b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hf
b25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKnRlbXBVUkw7Ci0gICAgCi0gICAg
ZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBOU1VSTCAqdXJsID0gW05TVVJM
IGZpbGVVUkxXaXRoUGF0aDpOU1RlbXBvcmFyeURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107
Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgCi0gICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVy
KCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxl
IG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWJ1bmRsZUlk
ZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJ
bmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKLSAgICAgICAgICAgIHVybCA9IFt1cmwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVT
XTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcFVSTCA9IFtbdXJsIFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOwot
ICAgIH0pOwotICAgIAotICAgIE5TVVJMICp1cmwgPSBbdGVtcFVSTCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOwotCi0gICAgaWYgKHNo
b3VsZENyZWF0ZURpcmVjdG9yeSA9PSBDcmVhdGVEaXJlY3RvcnkKLSAgICAgICAgJiYgKCFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRo
SW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJd
KSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVy
bCk7Ci0gICAgCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbjsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgc3Rh
dGljIE5TVVJMICpjYWNoZVVSTDsKLQotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsK
LSAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gVVJM
Rm9yRGlyZWN0b3J5Ok5TQ2FjaGVzRGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sg
YXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07Ci0gICAg
ICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LQotICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7Ci0gICAgICAg
ICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5i
dW5kbGVJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQotICAg
ICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5m
b10ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107Ci0gICAgICAgIH0K
LQotICAgICAgICBjYWNoZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOwotICAgIH0pOwotCi0gICAgTlNVUkwg
KnVybCA9IFtjYWNoZVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFt
ZSBpc0RpcmVjdG9yeTpZRVNdOwotICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVz
OllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKLSAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7Ci0KLSAgICByZXR1cm4gdXJsLmFi
c29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKndlYnNpdGVEYXRh
VVJMOwotCi0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBOU1VSTCAq
dXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNM
aWJyYXJ5RGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JV
Ukw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07Ci0gICAgICAgIGlmICghdXJsKQot
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgICAgICB1cmwg
PSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6
WUVTXTsKLQotICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7Ci0g
ICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVu
ZGxlXS5idW5kbGVJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVy
KQotICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9j
ZXNzSW5mb10ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107Ci0gICAg
ICAgIH0KLQotICAgICAgICB3ZWJzaXRlRGF0YVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07Ci0gICAg
fSk7Ci0KLSAgICBOU1VSTCAqdXJsID0gW3dlYnNpdGVEYXRhVVJMIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107Ci0gICAgaWYgKCFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRo
SW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJd
KQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJs
KTsKLQotICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50
YXRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsMTcgKzEwNSwxNyBAQCBwcml2
YXRlOgogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilkZWZhdWx0RGF0YVN0b3JlCiB7Ci0gICAg
cmV0dXJuIHdyYXBwZXIoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkp
OworICAgIHJldHVybiB3cmFwcGVyKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERh
dGFTdG9yZSgpKTsKIH0KIAogKyAoV0tXZWJzaXRlRGF0YVN0b3JlICopbm9uUGVyc2lzdGVudERh
dGFTdG9yZQogewotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3Jl
YXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcihXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKSk7CiB9CiAKIC0gKHZvaWQp
ZGVhbGxvYwogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5BUEk6OldlYnNpdGVEYXRhU3RvcmU6
On5XZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPldlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKTsKIAogICAgIFtzdXBlciBkZWFsbG9j
XTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCArIChOU1NldCAqKWFsbFdlYnNpdGVEYXRhVHlwZXMK
IAogLSAoV0tIVFRQQ29va2llU3RvcmUgKilodHRwQ29va2llU3RvcmUKIHsKLSAgICByZXR1cm4g
d3JhcHBlcihfd2Vic2l0ZURhdGFTdG9yZS0+aHR0cENvb2tpZVN0b3JlKCkpOworICAgIHJldHVy
biB3cmFwcGVyKF93ZWJzaXRlRGF0YVN0b3JlLT5jb29raWVTdG9yZSgpKTsKIH0KIAogc3RhdGlj
IFdhbGxUaW1lIHRvU3lzdGVtQ2xvY2tUaW1lKE5TRGF0ZSAqZGF0ZSkKQEAgLTE4Niw3ICsxODYs
NyBAQCAtICh2b2lkKWZldGNoRGF0YVJlY29yZHNPZlR5cGVzOihOU1NldCAqCiAtICh2b2lkKXJl
bW92ZURhdGFPZlR5cGVzOihOU1NldCAqKWRhdGFUeXBlcyBtb2RpZmllZFNpbmNlOihOU0RhdGUg
KilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxl
cgogewogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKTsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnJlbW92ZURhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwgdG9TeXN0
ZW1DbG9ja1RpbWUoZGF0ZSA/IGRhdGUgOiBbTlNEYXRlIGRpc3RhbnRQYXN0XSksIFtjb21wbGV0
aW9uSGFuZGxlckNvcHldIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+cmVtb3ZlRGF0YShXZWJL
aXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCB0b1N5c3RlbUNsb2NrVGltZShkYXRl
ID8gZGF0ZSA6IFtOU0RhdGUgZGlzdGFudFBhc3RdKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0g
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkoKTsKICAgICB9KTsKIH0KQEAgLTIwNSw3
ICsyMDUsNyBAQCAtICh2b2lkKXJlbW92ZURhdGFPZlR5cGVzOihOU1NldCAqKWRhdGFUCiB7CiAg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpOwogCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1v
dmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIHRvV2Vic2l0ZURh
dGFSZWNvcmRzKGRhdGFSZWNvcmRzKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0geworICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT5yZW1vdmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRh
dGFUeXBlcyksIHRvV2Vic2l0ZURhdGFSZWNvcmRzKGRhdGFSZWNvcmRzKSwgW2NvbXBsZXRpb25I
YW5kbGVyQ29weV0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkoKTsKICAgICB9KTsK
IH0KQEAgLTI0MCwxMiArMjQwLDEyIEBAICsgKE5TU2V0PE5TU3RyaW5nICo+ICopX2FsbFdlYnNp
dGVEYXRhVHkKIAogKyAoQk9PTClfZGVmYXVsdERhdGFTdG9yZUV4aXN0cwogewotICAgIHJldHVy
biBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCk7
CiB9CiAKICsgKHZvaWQpX2RlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nCiB7Ci0gICAg
cmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRl
c3RpbmcoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVEZWZh
dWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwogfQogCiAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRo
Q29uZmlndXJhdGlvbjooX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKiljb25maWd1
cmF0aW9uCkBAIC0yNTMsNyArMjUzLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZp
Z3VyYXRpb246KAogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgYXV0byBjb25maWcgPSBjb25maWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKSA6
IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOworICAgIGF1
dG8gY29uZmlnID0gY29uZmlndXJhdGlvbi5pc1BlcnNpc3RlbnQgPyBXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkgOiBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKIAogICAgIFJFTEVBU0VfQVNTRVJU
KGNvbmZpZy0+aXNQZXJzaXN0ZW50KCkgPT0gY29uZmlndXJhdGlvbi5pc1BlcnNpc3RlbnQpOwog
CkBAIC0zMTIsNyArMzEyLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRp
b246KAogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBjb25maWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/
IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZVBlcnNpc3RlbnRTZXNzaW9uSUQoKSA6IFBBTDo6U2Vz
c2lvbklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25JRCgpOwogCi0gICAgQVBJOjpPYmplY3Q6
OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OldlYnNpdGVEYXRhU3RvcmU+KHNlbGYsIFdURk1vdmUo
Y29uZmlnKSwgc2Vzc2lvbklEKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVy
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4oc2VsZiwgV1RGTW92ZShjb25maWcpLCBzZXNzaW9u
SUQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0zMjUsNyArMzI1LDcgQEAgLSAodm9pZClf
ZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0PAogICAgIGlmIChvcHRpb25zICYgX1dLV2Vi
c2l0ZURhdGFTdG9yZUZldGNoT3B0aW9uQ29tcHV0ZVNpemVzKQogICAgICAgICBmZXRjaE9wdGlv
bnMuYWRkKFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKTsKIAot
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZmV0Y2hEYXRhKFdlYktp
dDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIGZldGNoT3B0aW9ucywgW2NvbXBsZXRp
b25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXJDb3B5KV0oYXV0byB3ZWJz
aXRlRGF0YVJlY29yZHMpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+ZmV0Y2hEYXRhKFdlYktp
dDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIGZldGNoT3B0aW9ucywgW2NvbXBsZXRp
b25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXJDb3B5KV0oYXV0byB3ZWJz
aXRlRGF0YVJlY29yZHMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGVs
ZW1lbnRzOwogICAgICAgICBlbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHdlYnNpdGVE
YXRhUmVjb3Jkcy5zaXplKCkpOwogCkBAIC0zMzgsMTggKzMzOCwxOCBAQCAtICh2b2lkKV9mZXRj
aERhdGFSZWNvcmRzT2ZUeXBlczooTlNTZXQ8CiAKIC0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gX3dl
YnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7CiB9CiAKIC0g
KHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKIHsK
LSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKIH0KIAogLSAoQk9PTClfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOworICAgIHJldHVybiBfd2Vi
c2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOwogI2Vsc2UK
ICAgICByZXR1cm4gTk87CiAjZW5kaWYKQEAgLTM1OCw3ICszNTgsNyBAQCAtIChCT09MKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlCiAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGVidWdNb2RlOihCT09MKWVuYWJsZWQKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGVkKTsKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGVkKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBAIC0zNjYsMTA2ICsz
NjYsMTA2IEBAIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z00KIAogLSAo
TlNVSW50ZWdlcilfcGVyT3JpZ2luU3RvcmFnZVF1b3RhCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRl
RGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7Cisg
ICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5wZXJPcmlnaW5TdG9yYWdlUXVvdGEoKTsKIH0K
IAogLSAodm9pZClfc2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhOihOU1VJbnRlZ2VyKXNpemUKIHsK
LSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFBlck9yaWdpblN0
b3JhZ2VRdW90YShzaXplKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UGVyT3JpZ2luU3Rv
cmFnZVF1b3RhKHNpemUpOwogfQogCiAtIChOU1N0cmluZyAqKV9jYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5j
YWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmNh
Y2hlU3RvcmFnZURpcmVjdG9yeSgpOwogfQogCiAtICh2b2lkKV9zZXRDYWNoZVN0b3JhZ2VEaXJl
Y3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAg
ICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7
CiB9CiAKIC0gKE5TU3RyaW5nICopX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkK
IHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0
YVN0b3JlLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CiB9CiAKIC0gKHZv
aWQpX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6KE5TU3RyaW5nICopZGly
ZWN0b3J5CiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgX3dlYnNp
dGVEYXRhU3RvcmUtPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoZGlyZWN0
b3J5KTsKIH0KIAogLSAodm9pZClfc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOihOU1N0cmlu
ZyAqKWlkZW50aWZpZXIKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKGlkZW50aWZpZXIpOwogfQog
CiAtIChOU1N0cmluZyAqKV9ib3VuZEludGVyZmFjZUlkZW50aWZpZXIKIHsKLSAgICByZXR1cm4g
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5ib3VuZEludGVyZmFjZUlkZW50
aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmJvdW5kSW50ZXJmYWNlSWRl
bnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRBbGxvd3NDZWxsdWxhckFjY2VzczooQk9PTClh
bGxvd3MKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEFs
bG93c0NlbGx1bGFyQWNjZXNzKGFsbG93cyA/IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6
OlllcyA6IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6Ok5vKTsKKyAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+c2V0QWxsb3dzQ2VsbHVsYXJBY2Nlc3MoYWxsb3dzID8gV2ViS2l0OjpBbGxvd3ND
ZWxsdWxhckFjY2Vzczo6WWVzIDogV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6Tm8pOwog
fQogCiAtIChCT09MKV9hbGxvd3NDZWxsdWxhckFjY2VzcwogewotICAgIHJldHVybiBfd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmFsbG93c0NlbGx1bGFyQWNjZXNzKCkgPT0g
V2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzOworICAgIHJldHVybiBfd2Vic2l0ZURh
dGFTdG9yZS0+YWxsb3dzQ2VsbHVsYXJBY2Nlc3MoKSA9PSBXZWJLaXQ6OkFsbG93c0NlbGx1bGFy
QWNjZXNzOjpZZXM7CiB9CiAKIC0gKHZvaWQpX3NldFByb3h5Q29uZmlndXJhdGlvbjooTlNEaWN0
aW9uYXJ5ICopY29uZmlndXJhdGlvbgogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuc2V0UHJveHlDb25maWd1cmF0aW9uKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlS
ZWYpY29uZmlndXJhdGlvbik7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFByb3h5Q29uZmln
dXJhdGlvbigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNvbmZpZ3VyYXRpb24pOwogfQogCiAt
IChOU1N0cmluZyAqKV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIKIHsKLSAgICBy
ZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnNv
dXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRTb3Vy
Y2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcgogewot
ICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTb3VyY2VB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgaWYgKCFfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGlkZW50aWZp
ZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1h
dDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgY2Fubm90IGJlIGNhbGxl
ZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJdOwogfQogCiAtIChOU1N0cmluZyAqKV9zb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVE
YXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlk
ZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnNvdXJjZUFwcGxpY2F0
aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRTb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcgogewotICAgIGlm
ICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgaWYgKCFfd2Vic2l0ZURh
dGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKGlkZW50aWZp
ZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1h
dDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgY2Fubm90IGJlIGNh
bGxlZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJdOwogfQogCiAtICh2b2lkKV9zZXRBbGxv
d3NUTFNGYWxsYmFjazooQk9PTClhbGxvd3MKIHsKLSAgICBpZiAoIV93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0QWxsb3dzVExTRmFsbGJhY2soYWxsb3dzKSkKKyAgICBp
ZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRBbGxvd3NUTFNGYWxsYmFjayhhbGxvd3MpKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1hdDpAIl9zZXRB
bGxvd3NUTFNGYWxsYmFjayBjYW5ub3QgYmUgY2FsbGVkIGFmdGVyIG5ldHdvcmtpbmcgaGFzIGJl
Z3VuIl07CiB9CiAKIC0gKEJPT0wpX2FsbG93c1RMU0ZhbGxiYWNrCiB7Ci0gICAgcmV0dXJuIF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJhY2soKTsK
KyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmFsbG93c1RMU0ZhbGxiYWNrKCk7CiB9CiAK
IC0gKE5TRGljdGlvbmFyeSAqKV9wcm94eUNvbmZpZ3VyYXRpb24KIHsKLSAgICByZXR1cm4gKF9f
YnJpZGdlIE5TRGljdGlvbmFyeSAqKV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucHJveHlDb25maWd1cmF0aW9uKCk7CisgICAgcmV0dXJuIChfX2JyaWRnZSBOU0RpY3Rpb25h
cnkgKilfd2Vic2l0ZURhdGFTdG9yZS0+cHJveHlDb25maWd1cmF0aW9uKCk7CiB9CiAKIC0gKE5T
VVJMICopX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5CiB7Ci0gICAgcmV0dXJuIFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6X3dlYnNpdGVEYXRhU3RvcmUtPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpfd2Vic2l0ZURhdGFTdG9yZS0+Y29uZmlndXJhdGlvbigpLmluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAogLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NldFNob3VsZFN1Ym1pdFRlbGVtZXRyeTooQk9PTCl2YWx1ZQogewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAg
ICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCk7CiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00ODAsMTMgKzQ4MCwx
MyBAQCAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChjYWxsYmFjaykgewotICAgICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soW2NhbGxiYWNr
ID0gbWFrZUJsb2NrUHRyKGNhbGxiYWNrKSwgc2VsZl0oY29uc3QgU3RyaW5nJiBldmVudCkgewor
ICAgICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhb
Y2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoY2FsbGJhY2spLCBzZWxmXShjb25zdCBTdHJpbmcmIGV2
ZW50KSB7CiAgICAgICAgICAgICBjYWxsYmFjayhzZWxmLCBldmVudCk7CiAgICAgICAgIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKG51bGxwdHIpOworICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT5zZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKG51bGxwdHIpOwog
I2VuZGlmCiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNj
ZXNzRW50cmllc0ZvcjooCiAgICAgfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKHdlYlBhZ2VQcm94eS0+aWRlbnRpZmllcigpLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGRvbWFpbnMp
IHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMod2Vi
UGFnZVByb3h5LT5pZGVudGlmaWVyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZG9tYWlucykgewogICAgICAgICBWZWN0b3I8UmVm
UHRyPEFQSTo6T2JqZWN0Pj4gYXBpRG9tYWluczsKICAgICAgICAgYXBpRG9tYWlucy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGRvbWFpbnMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBkb21h
aW4gOiBkb21haW5zKQpAQCAtNTI0LDcgKzUyNCw3IEBAIC0gKHZvaWQpX2dldEFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzRm9yOigKIC0gKHZvaWQpX3NjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGU6
KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUt
PnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTM1LDcgKzUzNSw3IEBAIC0gKHZvaWQpX3NjaGVkdWxl
Q29va2llQmxvY2tpbmdVcGRhdGU6KHYKIC0gKHZvaWQpX3NldFByZXZhbGVudERvbWFpbjooTlNV
UkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25I
YW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFByZXZhbGVudFJlc291cmNlKFVS
TChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UHJldmFsZW50UmVzb3VyY2Uo
VVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTU0Niw3ICs1NDYsNyBAQCAtICh2b2lkKV9zZXRQcmV2YWxlbnREb21haW46KE5TVVJM
ICopZG9tCiAtICh2b2lkKV9nZXRJc1ByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb21haW4gY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZW5h
YmxlZCkgeworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChk
b21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXShib29sIGVuYWJsZWQpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW5hYmxlZCk7
CiAgICAgfSk7CiAjZWxzZQpAQCAtNTU3LDcgKzU1Nyw3IEBAIC0gKHZvaWQpX2dldElzUHJldmFs
ZW50RG9tYWluOihOU1VSTCAqKWQKIC0gKHZvaWQpX2NsZWFyUHJldmFsZW50RG9tYWluOihOU1VS
TCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhh
bmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShV
UkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3Vy
Y2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwog
I2Vsc2UKQEAgLTU2OCw3ICs1NjgsNyBAQCAtICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbjoo
TlNVUkwgKilkCiAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOih2b2lk
ICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5z
Y2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVE
YXRhU3RvcmUtPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhbY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKICNlbHNlCkBAIC01NzgsMTggKzU3
OCwxOCBAQCAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzCiAKIC0gKGJv
b2wpX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyCiB7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMoV2ViQ29yZTo6c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGFiYXNlRmls
ZW5hbWUoX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhXZWJDb3JlOjpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShf
d2Vic2l0ZURhdGFTdG9yZS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7
CiB9CiAKIC0gKGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+KV9kZWxlZ2F0ZQogewot
ICAgIHJldHVybiBfZGVsZWdhdGUuZ2V0KCk7CisgICAgcmV0dXJuIF9kZWxlZ2F0ZS5nZXQoKS5n
ZXQoKTsKIH0KIAogLSAodm9pZClzZXRfZGVsZWdhdGU6KGlkIDxfV0tXZWJzaXRlRGF0YVN0b3Jl
RGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgX3dl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRDbGllbnQobWFrZVVuaXF1ZVJl
ZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PihkZWxlZ2F0ZSkpOworICAgIF93ZWJzaXRlRGF0YVN0
b3JlLT5zZXRDbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PihkZWxl
Z2F0ZSkpOwogfQogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEyICsyNSwxMyBA
QAogCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgiCiAKLSNpbXBvcnQgIkFQ
SVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0ICJXZWJz
aXRlRGF0YVN0b3JlLmgiCisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpXZWJzaXRl
RGF0YVN0b3JlPiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPFdlYnNpdGVEYXRh
U3RvcmU+IHsKICAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBXS1dlYnNpdGVEYXRhU3RvcmU7CiB9
OwogCkBAIC0zOCw3ICszOSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJ
OjpXZWIKIAogQGludGVyZmFjZSBXS1dlYnNpdGVEYXRhU3RvcmUgKCkgPFdLT2JqZWN0PiB7CiBA
cGFja2FnZQotICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OldlYnNpdGVEYXRhU3RvcmU+IF93
ZWJzaXRlRGF0YVN0b3JlOwotICAgIFJldGFpblB0cjxpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURl
bGVnYXRlPiA+IF9kZWxlZ2F0ZTsKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8V2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlPiBfd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBXZWFrT2JqQ1B0cjxpZCA8X1dL
V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsKIH0KIEBlbmQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJz
aXRlRGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgSWdh
bGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFQSVdl
YnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVk
ZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgotCi0jaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBC
QVNFX0RJUkVDVE9SWSAid2Via2l0Z3RrIgotI2VsaWYgUExBVEZPUk0oV1BFKQotI2RlZmluZSBC
QVNFX0RJUkVDVE9SWSAid3BlIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBBUEkgewotCi1XVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
Ci17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJB
U0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJhcHBsaWNhdGlvbnMiKTsKLX0KLQotLy8g
RklYTUU6IFRoZSBvdGhlciBkaXJlY3RvcmllcyBpbiB0aGlzIGZpbGUgYXJlIHNoYXJlZCBiZXR3
ZWVuIGFsbCBhcHBsaWNhdGlvbnMgdXNpbmcgV2ViS2l0R1RLLgotLy8gV2h5IGlzIG9ubHkgdGhp
cyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24/Ci1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkK
LXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hlIikp
OwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdl
RGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIkNh
Y2hlU3RvcmFnZSIpKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQ
QVJBVE9SX1MgImRhdGFiYXNlcyIgR19ESVJfU0VQQVJBVE9SX1MgImluZGV4ZWRkYiIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJz
ZXJ2aWNld29ya2VycyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJB
VE9SX1MgImxvY2Fsc3RvcmFnZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdf
RElSX1NFUEFSQVRPUl9TICJtZWRpYWtleXMiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJ
UkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGV2aWNlaWRoYXNoc2FsdHMiKTsKLX0KLQotV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpCi17
Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkK
LXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNo
ZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBX
VEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDI0OTcz
MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHN0cnVjdCBfV2ViS2l0Q29v
a2llTWFuYWdlclByaXZhdGUgewogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0
CiAgICAgewogICAgICAgICBBU1NFUlQoZGF0YU1hbmFnZXIpOwotICAgICAgICByZXR1cm4gd2Vi
a2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKGRhdGFNYW5hZ2VyKS53ZWJzaXRlRGF0
YVN0b3JlKCkuc2Vzc2lvbklEKCk7CisgICAgICAgIHJldHVybiB3ZWJraXRXZWJzaXRlRGF0YU1h
bmFnZXJHZXREYXRhU3RvcmUoZGF0YU1hbmFnZXIpLnNlc3Npb25JRCgpOwogICAgIH0KIAogICAg
IH5fV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGUoKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwx
MiArMjAsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNs
dWRlICJXZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZh
dGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFG
ZXRjaE9wdGlvbi5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxn
bGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3
dGYvRmlsZVN5c3RlbS5oPgpAQCAtOTUsNyArOTUsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVE
YXRhTWFuYWdlclByaXZhdGUgCiAgICAgICAgIEFTU0VSVChwcm9jZXNzUG9vbHMuaXNFbXB0eSgp
KTsKICAgICB9CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiB3ZWJzaXRlRGF0
YVN0b3JlOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IHdlYnNpdGVEYXRh
U3RvcmU7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBiYXNlRGF0YURpcmVjdG9yeTsKICAgICBHVW5p
cXVlUHRyPGNoYXI+IGJhc2VDYWNoZURpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGxv
Y2FsU3RvcmFnZURpcmVjdG9yeTsKQEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJzaXRlRGF0YU1hbmFnZXJTZXRQCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9J
U19FUEhFTUVSQUw6CiAgICAgICAgIGlmIChnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSkKLSAg
ICAgICAgICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKKyAgICAgICAgICAgIG1h
bmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OmNyZWF0ZU5vblBlcnNpc3RlbnQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBw
YXJhbVNwZWMpOwpAQCAtMzg0LDI4ICszODQsMjggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyXwogV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJzaXRl
RGF0YU1hbmFnZXJDcmVhdGUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNv
bmZpZ3VyYXRpb24pCiB7CiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0g
V0VCS0lUX1dFQlNJVEVfREFUQV9NQU5BR0VSKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJT
SVRFX0RBVEFfTUFOQUdFUiwgbnVsbHB0cikpOwotICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVE
YXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3Vy
YXRpb24pLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICBtYW5hZ2Vy
LT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVh
dGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSk7CiAKICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIAotQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
JiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyKiBtYW5hZ2VyKQorV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRl
RGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2Vy
KQogewogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUqIHByaXYgPSBtYW5hZ2Vy
LT5wcml2OwogICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7
CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVjdG9yeSghcHJpdi0+
bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0
KCkpKTsKKyAgICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAg
Y29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCFwcml2LT5kaXNrQ2FjaGVE
aXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0
d29ya0NhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5k
aXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAg
ICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURp
cmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+ZGlza0NhY2hlRGly
ZWN0b3J5LmdldCgpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CiAgICAgICAgIGNvbmZp
Z3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoIXByaXYtPmFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Lmdl
dCgpKSk7CisgICAgICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsK
ICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoIXByaXYt
PndlYlNRTERpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpKTsKKyAg
ICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9u
LT5zZXRIU1RTU3RvcmFnZURpcmVjdG9yeSghcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5ID8KLSAg
ICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKSA6
IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+aHN0
c0NhY2hlRGlyZWN0b3J5LmdldCgpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIFBB
TDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgICAgICAgICAgV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5oc3RzQ2FjaGVEaXJlY3Rvcnku
Z2V0KCkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkpOworICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuICpwcml2LT53ZWJz
aXRlRGF0YVN0b3JlOwpAQCAtNTQyLDcgKzU0Miw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIXBy
aXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgcHJpdi0+bG9jYWxTdG9yYWdlRGly
ZWN0b3J5LnJlc2V0KGdfc3RyZHVwKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+bG9jYWxT
dG9yYWdlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1
cm4gcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpOwogfQogCkBAIC01NjYsNyArNTY2
LDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgogCiAgICAgaWYg
KCFwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkpIHsKICAgICAgICAgLy8gVGhlIGRlZmF1bHQgZGly
ZWN0b3J5IGFscmVhZHkgaGFzIHRoZSBzdWJkaXJlY3RvcnkuCi0gICAgICAgIHByaXYtPmRpc2tD
YWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4
KCkuZGF0YSgpKSk7CisgICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0
cmR1cChGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQog
ICAgIHJldHVybiBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CkBAIC01OTAsNyAr
NTkwLDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSkKLSAgICAgICAgcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5yZXNldChnX3N0
cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgcmV0dXJuIHBy
aXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CiAKQEAgLTYxMyw3ICs2MTMs
NyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgaWYgKCFwcml2LT5pbmRleGVkREJEaXJlY3RvcnkpCi0gICAg
ICAgIHByaXYtPmluZGV4ZWREQkRpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRh
KCkpKTsKKyAgICAgICAgcHJpdi0+aW5kZXhlZERCRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KCkudXRmOCgpLmRhdGEoKSkpOwogICAgIHJldHVybiBwcml2LT5pbmRleGVkREJEaXJlY3Rvcnku
Z2V0KCk7CiB9CiAKQEAgLTYzOCw3ICs2MzgsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFwcml2
LT53ZWJTUUxEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPndlYlNRTERpcmVjdG9yeS5yZXNldChn
X3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVj
dG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+d2ViU1FMRGlyZWN0b3J5LnJl
c2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOwogICAgIHJldHVybiBwcml2LT53ZWJTUUxE
aXJlY3RvcnkuZ2V0KCk7CiB9CiAKQEAgLTY2MSw3ICs2NjEsNyBAQCBjb25zdCBnY2hhciogd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
aWYgKCFwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPmhzdHNDYWNoZURp
cmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RT
RGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5oc3RzQ2FjaGVEaXJl
Y3RvcnkucmVzZXQoZ19zdHJkdXAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNU
U0RpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1cm4gcHJpdi0+aHN0c0NhY2hl
RGlyZWN0b3J5LmdldCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJp
dmF0ZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE5LDEyICsxOSwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVE
YXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmUuaCIKIAogV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJzaXRl
RGF0YU1hbmFnZXJDcmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24+JiYpOwotQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJH
ZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKik7CitXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIqKTsKIHZvaWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQWRkUHJvY2Vz
c1Bvb2woV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiwgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYp
Owogdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJSZW1vdmVQcm9jZXNzUG9vbChXZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIqLCBXZWJLaXQ6OldlYlByb2Nlc3NQb29sJik7CiBjb25zdCBWZWN0
b3I8V2ViS2l0OjpXZWJQcm9jZXNzUG9vbCo+JiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRQ
cm9jZXNzUG9vbHMoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKik7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9y
ZVdpbi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw4OCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0
YWlubWVudCBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJB
UElXZWJzaXRlRGF0YVN0b3JlLmgiCi0KLSNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgotCi1u
YW1lc3BhY2UgQVBJIHsKLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkNhY2hlU3RvcmFnZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIpOwotfQotCi1TdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkK
LXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7
Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIlNlcnZpY2VXb3JrZXJzIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOwotfQotCi1T
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkK
LXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7Ci19
Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
IlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5TmFtZSkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBk
aXJlY3RvcnlOYW1lKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRh
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5
TmFtZSkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3Rv
cnlOYW1lKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNTgsNyAr
MTM1OCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmFkZFNpbmdsZUNvb2sKICAgICAg
ICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1JfQU5EX0RFVEFJTFMoTWlzc2luZ1Bh
cmFtZXRlciwgIlRoZSBwYXJhbWV0ZXIgJ2h0dHBPbmx5JyB3YXMgbm90IGZvdW5kLiIpOwogCiAg
ICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+
c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29va2llTWFuYWdlci0+
c2V0Q29va2llcyhwYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCksIHsgY29va2ll
IH0sIFtjYWxsYmFjayA9IGNhbGxiYWNrLmNvcHlSZWYoKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgeworICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMocGFnZS0+c2Vzc2lvbklEKCks
IHsgY29va2llIH0sIFtjYWxsYmFjayA9IGNhbGxiYWNrLmNvcHlSZWYoKV0oQ2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikgewogICAgICAgICBpZiAoZXJyb3IgPT0gQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6Tm9uZSkKICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcygpOwogICAgICAgICBl
bHNlCkBAIC0xMzc4LDcgKzEzNzgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkZWxl
dGVBbGxDb29rCiAgICAgU3RyaW5nIGhvc3QgPSBhY3RpdmVVUkwuaG9zdCgpLnRvU3RyaW5nKCk7
CiAKICAgICBXZWJDb29raWVNYW5hZ2VyUHJveHkqIGNvb2tpZU1hbmFnZXIgPSBtX3Byb2Nlc3NQ
b29sLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLSAgICBjb29raWVNYW5h
Z2VyLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXNzaW9uSUQoKSwgeyBob3N0LCBkb21haW5CeUFkZGluZ0RvdFByZWZpeElmTmVlZGVkKGhvc3Qp
IH0pOworICAgIGNvb2tpZU1hbmFnZXItPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMocGFnZS0+
c2Vzc2lvbklEKCksIHsgaG9zdCwgZG9tYWluQnlBZGRpbmdEb3RQcmVmaXhJZk5lZWRlZChob3N0
KSB9KTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0U2Vzc2lvblBlcm1pc3Np
b25zKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6U2Vzc2lvblBlcm1pc3Npb25EYXRhPj4mIG91dF9wZXJtaXNzaW9ucykK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0JKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogI2lt
cG9ydCAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIkFQSVN0cmluZy5oIgogI2lt
cG9ydCAiQVBJVVJMLmgiCi0jaW1wb3J0ICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW1wb3J0
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW1wb3J0ICJBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0
aW9uRGVjaXNpb25MaXN0ZW5lci5oIgpAQCAtNjQsNiArNjMsNyBAQAogI2ltcG9ydCAiV2ViUGFn
ZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIldlYlByb3Rl
Y3Rpb25TcGFjZS5oIgorI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2ltcG9ydCAiX1dL
Q29udGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0Vycm9yUmVjb3Zl
cnlBdHRlbXB0aW5nLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3
LDcgKzg3LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29ya1Byb2Nlc3NQcm94eQogICAg
IGNvbm5lY3QoKTsKIAogICAgIGlmIChhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gbV9wcm9jZXNz
UG9vbC53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZXMuc2V0
KHdlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwgbWFrZVJl
Zih3ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkpKTsKKyAgICAgICAgbV93ZWJz
aXRlRGF0YVN0b3Jlcy5zZXQod2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCksIG1ha2VSZWYo
KndlYnNpdGVEYXRhU3RvcmUpKTsKIH0KIAogTmV0d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdvcmtQ
cm9jZXNzUHJveHkoKQpAQCAtMTEzNCwxNCArMTEzNCwxNCBAQCBXZWJzaXRlRGF0YVN0b3JlKiBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp3CiAgICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWUuZ2V0
KCk7CiAKICAgICBpZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IG1fcHJvY2Vzc1Bvb2wud2Vi
c2l0ZURhdGFTdG9yZSgpKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uSUQgPT0gd2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKQotICAgICAgICAgICAgcmV0dXJu
ICZ3ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgICAgIGlmIChzZXNz
aW9uSUQgPT0gd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpCisgICAgICAgICAgICByZXR1
cm4gd2Vic2l0ZURhdGFTdG9yZTsKICAgICB9CiAKICAgICBpZiAoc2Vzc2lvbklEICE9IFBBTDo6
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuICZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS0+
d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIHJldHVybiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlKCkucHRyKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmV0cmll
dmVDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUs
NiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIK
ICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzUHJveHkuaCIKICNpZiBFTkFCTEUoTEVHQUNZX0NV
U1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5LmgiCkBAIC0zNiw2ICszNSw3IEBACiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxl
ckNsaWVudC5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJh
bnNmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVk
ZSA8bWVtb3J5PgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiwxNSArMjYsMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKKyNpbmNsdWRlICJBUElIVFRQQ29va2llU3Rv
cmUuaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRl
ICJBUElXZWJzaXRlRGF0YVJlY29yZC5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUu
aCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIkRldmljZUlk
SGFzaFNhbHRTdG9yYWdlLmgiCiAjaW5jbHVkZSAiTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNob3VsZEdy
YW5kZmF0aGVyU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIK
KyNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NDYWNoZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNz
YWdlcy5oIgpAQCAtMTM5LDYgKzE0MCw1OCBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0
YVN0b3JlKFBBTDo6CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAorc3RhdGlj
IFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiYgZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPj4gZ2xvYmFs
RGVmYXVsdERhdGFTdG9yZTsKKyAgICByZXR1cm4gZ2xvYmFsRGVmYXVsdERhdGFTdG9yZS5nZXQo
KTsKK30KKworUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmUoKQoreworICAgIEluaXRpYWxpemVXZWJLaXQyKCk7CisKKyAgICBhdXRvJiBzdG9y
ZSA9IGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIXN0b3JlKQorICAgICAgICBz
dG9yZSA9IGFkb3B0UmVmKG5ldyBXZWJzaXRlRGF0YVN0b3JlKGRlZmF1bHREYXRhU3RvcmVDb25m
aWd1cmF0aW9uKCksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKTsKKworICAg
IHJldHVybiAqc3RvcmU7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGVsZXRlRGVmYXVs
dERhdGFTdG9yZUZvclRlc3RpbmcoKQoreworICAgIGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKSA9
IG51bGxwdHI7Cit9CisKK2Jvb2wgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUV4
aXN0cygpCit7CisgICAgcmV0dXJuICEhZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpOworfQorCitS
ZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQoreworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKworICAgIGNv
bmZpZ3VyYXRpb24tPnNldFBlcnNpc3RlbnQodHJ1ZSk7CisKKyAgICBjb25maWd1cmF0aW9uLT5z
ZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1
YmRpcmVjdG9yeU5hbWUoIkZpbGVzIik7CisgICAgY29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmln
dXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFDYWNoZURpcmVjdG9yeShkZWZh
dWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKTsKKworICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgp
KTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAgIGNv
bmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkoZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CisgICAg
Y29uZmlndXJhdGlvbi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1
bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CisKKyAgICBjb25maWd1cmF0
aW9uLT5zZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShkZWZhdWx0SmF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSk7CisKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbjsK
K30KKwogV2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CkBAIC0xNzI4LDcgKzE3ODEsNyBAQCB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnJlc2V0Q2FjaGVNYXhBZ2VDCiBib29sIFdlYnNpdGVEYXRhU3RvcmU6OmlzQXNz
b2NpYXRlZFByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkgY29uc3QKIHsK
ICAgICBpZiAoYXV0byogcHJvY2Vzc1Bvb2xEYXRhU3RvcmUgPSBwcm9jZXNzUG9vbC53ZWJzaXRl
RGF0YVN0b3JlKCkpCi0gICAgICAgIHJldHVybiAmcHJvY2Vzc1Bvb2xEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKSA9PSB0aGlzOworICAgICAgICByZXR1cm4gcHJvY2Vzc1Bvb2xEYXRhU3Rv
cmUgPT0gdGhpczsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE3NTQsNyArMTgwNyw3IEBA
IEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gV2Vic2l0ZUQKICAgICB9CiAKICAgICBp
ZiAocHJvY2Vzc1Bvb2xzLmlzRW1wdHkoKSAmJiBjb3VudCAmJiBlbnN1cmVBUG9vbEV4aXN0cykg
ewotICAgICAgICBhdXRvIHByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uKG1fY29uZmlndXJhdGlvbikpOworICAgICAgICBhdXRvIHByb2Nlc3NQb29sID0g
V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCkpOwogICAgICAgICBwcm9jZXNzUG9vbHMuYWRkKHByb2Nlc3NQb29sLnB0cigpKTsKICAg
ICB9CiAKQEAgLTIwMDEsNiArMjA1NCwyOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmFkZFNl
Y0tleVByb3h5U3RvCiB9CiAjZW5kaWYKIAorI2lmICFQTEFURk9STShDT0NPQSkKK1dURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKK3sKKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU2MzY5IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU2MzcwCisgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKK30K
KyNlbmRpZgorCisjaWYgIVVTRShHTElCKQorV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgLy8gTm90
IGltcGxlbWVudGVkLgorICAgIHJldHVybiBXVEY6OlN0cmluZygpOworfQorI2VuZGlmCisKICNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24mJiBjb25maWd1cmF0aW9uKQogewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjQ5NzMy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMSArOTIsMTkgQEAgZW51bSBjbGFzcyBTdG9yYWdl
QWNjZXNzUHJvbXB0U3RhdHVzOwogc3RydWN0IFBsdWdpbk1vZHVsZUluZm87CiAjZW5kaWYKIAot
Y2xhc3MgV2Vic2l0ZURhdGFTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYnNpdGVEYXRhU3Rv
cmU+LCBwdWJsaWMgSWRlbnRpZmllZDxXZWJzaXRlRGF0YVN0b3JlPiwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFdlYnNpdGVEYXRhU3RvcmU+ICB7CitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlIDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6V2Vic2l0ZURhdGFTdG9yZT4s
IHB1YmxpYyBJZGVudGlmaWVkPFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8V2Vic2l0ZURhdGFTdG9yZT4gIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYnNpdGVE
YXRhU3RvcmU+IGRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBzdGF0aWMgYm9vbCBkZWZhdWx0RGF0
YVN0b3JlRXhpc3RzKCk7CisgICAgc3RhdGljIHZvaWQgZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZv
clRlc3RpbmcoKTsKKyAgICBzdGF0aWMgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+IGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CisKICAgICBzdGF0aWMg
UmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnQoKTsKICAgICBzdGF0aWMg
UmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24+JiYsIFBBTDo6U2Vzc2lvbklEKTsKLSAgICB2aXJ0dWFsIH5XZWJzaXRlRGF0YVN0b3Jl
KCk7CisKKyAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEKTsKKyAg
ICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIH5XZWJzaXRlRGF0YVN0b3JlKCk7CiAKICAg
ICBzdGF0aWMgV2Vic2l0ZURhdGFTdG9yZSogZXhpc3RpbmdOb25EZWZhdWx0RGF0YVN0b3JlRm9y
U2Vzc2lvbklEKFBBTDo6U2Vzc2lvbklEKTsKIApAQCAtMjY1LDEwICsyNzMsMjMgQEAgcHVibGlj
OgogICAgIFNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yJiBzb0F1dGhvcml6YXRpb25Db29yZGlu
YXRvcigpIHsgcmV0dXJuIG1fc29BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IuZ2V0KCk7IH0KICNl
bmRpZgogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNz
aW9uSUQpOwotICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIFdURjo6U3Ry
aW5nIGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgc3Rh
dGljIFdURjo6U3RyaW5nIGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0
aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsK
KyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwor
ICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
OworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KTsKKyNpZiBVU0UoR0xJQikKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEhTVFNEaXJl
Y3RvcnkoKTsKKyNlbmRpZgorICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdENhY2hl
U3RvcmFnZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0RGV2aWNl
SWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOwogCitwcml2YXRlOgogICAg
IHZvaWQgZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlv
blNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgUmVmUHRyPFdvcmtRdWV1ZT4mJiwgRnVuY3Rp
b248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4mJiBhcHBseSk7CiAKICAgICB2b2lk
IHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjc5LDYgKzMwMCwxMyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcGxhdGZvcm1TZXROZXR3b3JrUGFyYW1ldGVycyhXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycyYpOwogI2VuZGlmCiAKKyAgICBXZWJzaXRlRGF0YVN0b3JlKCk7CisKKyAgICBlbnVtIFNo
b3VsZENyZWF0ZURpcmVjdG9yeSB7IENyZWF0ZURpcmVjdG9yeSwgRG9udENyZWF0ZURpcmVjdG9y
eSB9OworICAgIHN0YXRpYyBXVEY6OlN0cmluZyB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBTaG91bGRDcmVhdGVE
aXJlY3RvcnkgPSBDcmVhdGVEaXJlY3RvcnkpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBjYWNo
ZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGly
ZWN0b3J5TmFtZSk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1l
KTsKKyAgICAKICAgICBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IHByb2Nlc3NQb29s
cyhzaXplX3QgY291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBib29s
IGVuc3VyZUFQb29sRXhpc3RzID0gdHJ1ZSkgY29uc3Q7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5j
cHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUu
aCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKQotICAgIDogbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkK
KyAgICA6IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQogewogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShyZXZpc2lvbiAyNDk3MzIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIldl
YnNpdGVEYXRhU3RvcmUuaCIKIAogI2ltcG9ydCAiQ29va2llU3RvcmFnZVV0aWxzQ0YuaCIKKyNp
bXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlN0b3JhZ2VNYW5hZ2VyLmgiCiAj
aW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbXBvcnQgIldlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCkBAIC0yMzAsNCArMjMxLDE2MSBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnBsYXRmb3JtUmVtb3ZlUmVjCiAgICAgV2ViQ29yZTo6cmVtb3ZlUmVjZW50
bHlNb2RpZmllZFJlY2VudFNlYXJjaGVzKG9sZGVzdFRpbWVUb1JlbW92ZSk7CiB9CiAKK05TU3Ry
aW5nICpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJEYXRhYmFzZURpcmVj
dG9yeSI7CitOU1N0cmluZyAqV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJL
aXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5IjsKK05TU3RyaW5nICpXZWJL
aXRNZWRpYUNhY2hlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdE1lZGlhQ2FjaGVEaXJl
Y3RvcnkiOworTlNTdHJpbmcgKldlYktpdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0
c0tleSA9IEAiV2ViS2l0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSI7CisKK1dURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKK3sK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIFRoaXMgcXVpcmsgdXNlZCB0byBtYWtl
IHRoZXNlIGFwcHMgc2hhcmUgYXBwbGljYXRpb24gY2FjaGUgc3RvcmFnZSwgYnV0IGRvZXNuJ3Qg
YWNjb21wbGlzaCB0aGF0IGFueSBtb3JlLgorICAgIC8vIFByZXNlcnZpbmcgaXQgYXZvaWRzIHRo
ZSBuZWVkIHRvIG1pZ3JhdGUgZGF0YSB3aGVuIHVwZ3JhZGluZy4KKyAgICAvLyBGSVhNRTogSWRl
YWxseSB3ZSBzaG91bGQganVzdCBoYXZlIFNhZmFyaSwgV2ViQXBwLCBhbmQgd2ViYm9va21hcmtz
ZCBjcmVhdGUgYSBkYXRhIHN0b3JlIHdpdGgKKyAgICAvLyB0aGlzIGFwcGxpY2F0aW9uIGNhY2hl
IHBhdGgsIGJ1dCB0aGF0J3Mgbm90IHN1cHBvcnRlZCBhcyBvZiByaWdodCBub3cuCisgICAgaWYg
KFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklP
U0FwcGxpY2F0aW9uOjppc1dlYkFwcCgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dl
YkJvb2ttYXJrc0QoKSkgeworICAgICAgICBOU1N0cmluZyAqY2FjaGVQYXRoID0gW05TSG9tZURp
cmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVz
L2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJdOworCisgICAgICAgIHJldHVybiBXZWJLaXQ6OnN0cmlu
Z0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY2FjaGVQYXRoLnN0cmluZ0J5U3RhbmRhcmRpemlu
Z1BhdGgpOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSIpOworfQorCitX
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5
KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
IkNhY2hlU3RvcmFnZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSIpOworfQorCitXVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCit7CisgICAg
cmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhQ2FjaGUi
KTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4ZWREQiIpOworfQorCitXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgp
Cit7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJT
ZXJ2aWNlV29ya2VycyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkxvY2FsU3RvcmFnZSIpOworfQorCitXVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKCJNZWRpYUtleXMiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIldlYlNRTCIpOworfQorCitXVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Cit9CisKK1dURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9y
eSgpCit7CisgICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
IkphdmFTY3JpcHRDb3JlRGVidWciLCBEb250Q3JlYXRlRGlyZWN0b3J5KTsKK30KKworV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0
b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90
IG9uY2VUb2tlbjsKKyAgICBzdGF0aWMgTlNVUkwgKnRlbXBVUkw7CisgICAgCisgICAgZGlzcGF0
Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBOU1VSTCAqdXJsID0gW05TVVJMIGZpbGVV
UkxXaXRoUGF0aDpOU1RlbXBvcmFyeURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CisgICAg
ICAgIGlmICghdXJsKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsK
KyAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5C
dW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZp
ZXIpCisgICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHBy
b2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGVtcFVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOworICAgIH0p
OworICAgIAorICAgIE5TVVJMICp1cmwgPSBbdGVtcFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOworCisgICAgaWYgKHNob3VsZENy
ZWF0ZURpcmVjdG9yeSA9PSBDcmVhdGVEaXJlY3RvcnkKKyAgICAgICAgJiYgKCFbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJt
ZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKSkKKyAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7Cisg
ICAgCisgICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbjsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUp
Cit7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgc3RhdGljIE5T
VVJMICpjYWNoZVVSTDsKKworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAg
ICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGly
ZWN0b3J5Ok5TQ2FjaGVzRGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9w
cmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07CisgICAgICAgIGlm
ICghdXJsKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAg
ICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7CisgICAgICAgICAgICBO
U1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJ
ZGVudGlmaWVyOworICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQorICAgICAgICAg
ICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJv
Y2Vzc05hbWU7CisgICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107CisgICAgICAgIH0KKworICAg
ICAgICBjYWNoZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktp
dCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOworICAgIH0pOworCisgICAgTlNVUkwgKnVybCA9
IFtjYWNoZVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0Rp
cmVjdG9yeTpZRVNdOworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBj
cmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBh
dHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CisKKyAgICByZXR1cm4gdXJsLmFic29sdXRl
VVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOworfQorCitXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICBzdGF0aWMgZGlzcGF0
Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBzdGF0aWMgTlNVUkwgKndlYnNpdGVEYXRhVVJMOwor
CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBOU1VSTCAqdXJsID0g
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNMaWJyYXJ5
RGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6bnVs
bHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07CisgICAgICAgIGlmICghdXJsKQorICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICB1cmwgPSBbdXJs
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXTsK
KworICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7CisgICAgICAg
ICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5i
dW5kbGVJZGVudGlmaWVyOworICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQorICAg
ICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5m
b10ucHJvY2Vzc05hbWU7CisgICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107CisgICAgICAgIH0K
KworICAgICAgICB3ZWJzaXRlRGF0YVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAIldlYnNpdGVEYXRhIiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07CisgICAgfSk7CisK
KyAgICBOU1VSTCAqdXJsID0gW3dlYnNpdGVEYXRhVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisgICAgaWYgKCFbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJt
ZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQorICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKKwor
ICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247
Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9X
ZWJzaXRlRGF0YVN0b3JlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS93aW4vV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAJKHJldmlzaW9uIDI0
OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRl
RGF0YVN0b3JlV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IApAQCAtNDUsNCArNDYsNTkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVJlbW92
ZVJlYwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsKK30KKworU3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJDYWNoZVN0b3JhZ2UiKTsKK30K
KworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
KQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2Fj
aGUiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIkluZGV4ZWREQiIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCksICJTZXJ2aWNlV29ya2VycyIpOworfQorCitTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOworfQorCitT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0
b3JhZ2UiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIldlYlNRTCIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Cit9CisKK1N0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAJKHJldmlzaW9uIDI0OTczMikJKGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwOjI0OTczMikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcg
SWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQ
SVdlYnNpdGVEYXRhU3RvcmUuaCIKKworI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5j
bHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorCisjaWYgUExBVEZPUk0oR1RLKQorI2RlZmlu
ZSBCQVNFX0RJUkVDVE9SWSAid2Via2l0Z3RrIgorI2VsaWYgUExBVEZPUk0oV1BFKQorI2RlZmlu
ZSBCQVNFX0RJUkVDVE9SWSAid3BlIgorI2VuZGlmCisKK25hbWVzcGFjZSBBUEkgeworCitXVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSgpCit7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJhcHBsaWNhdGlvbnMiKTsKK30KKwor
Ly8gRklYTUU6IFRoZSBvdGhlciBkaXJlY3RvcmllcyBpbiB0aGlzIGZpbGUgYXJlIHNoYXJlZCBi
ZXR3ZWVuIGFsbCBhcHBsaWNhdGlvbnMgdXNpbmcgV2ViS2l0R1RLLgorLy8gV2h5IGlzIG9ubHkg
dGhpcyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24/CitX
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hl
IikpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwg
IkNhY2hlU3RvcmFnZSIpKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJf
U0VQQVJBVE9SX1MgImRhdGFiYXNlcyIgR19ESVJfU0VQQVJBVE9SX1MgImluZGV4ZWRkYiIpOwor
fQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9T
ICJzZXJ2aWNld29ya2VycyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQ
QVJBVE9SX1MgImxvY2Fsc3RvcmFnZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZ
IEdfRElSX1NFUEFSQVRPUl9TICJtZWRpYWtleXMiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAg
IHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNF
X0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGV2aWNlaWRoYXNoc2FsdHMiKTsKK30KKwor
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIpOwor
fQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgp
Cit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TKTsKK30KKworV1RGOjpTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnko
KQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFt
ZSkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9j
YWNoZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xp
Yi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDI0OTczMikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJzaXRl
RGF0YVN0b3JlLmgiCiAKICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL0dVbmlxdWVQdHIuaD4KQEAgLTM1LDcgKzM1LDcgQEAKICNkZWZpbmUgQkFTRV9ESVJF
Q1RPUlkgIndwZSIKICNlbmRpZgogCi1uYW1lc3BhY2UgQVBJIHsKK25hbWVzcGFjZSBXZWJLaXQg
ewogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsx
NzgsNiBAQAogCQkxQTMwMDY2RTExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1l
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzMDA2
NkMxMTEwRjRGNzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKIAkJMUEz
MzRERUQxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzM0REVC
MTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgKi87
IH07CiAJCTFBMzM0REVFMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTMzNERF
QzE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oICovOyB9OwotCQkx
QTM2MzVBQTFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzNjM1QTgxQTMxNDRBMzAw
RUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCAqLzsgfTsKIAkJMUEzQzg4ODAxOEE1QUJB
RTAwQzRDOTYyIC8qIFdLUHJlZmVyZW5jZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzQzg4N0YxOEE1QUJBRTAwQzRDOTYyIC8qIFdL
UHJlZmVyZW5jZXNJbnRlcm5hbC5oICovOyB9OwogCQkxQTNDQzE2NzE4OTA2QUNGMDAxRTZFRDgg
LyogV0tXZWJWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTNDQzE2NTE4OTA2QUNGMDAxRTZFRDggLyogV0tXZWJWaWV3LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkxQTNDQzE2OTE4OTA3RUIwMDAx
RTZFRDggLyogV0tQcm9jZXNzUG9vbEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNDQzE2ODE4OTA3RUIwMDAxRTZFRDggLyogV0tQcm9j
ZXNzUG9vbEludGVybmFsLmggKi87IH07CkBAIC0xNzI1LDYgKzE3MjQsOCBAQAogCQkJY29tcGls
ZXJTcGVjID0gY29tLmFwcGxlLmNvbXBpbGVycy5wcm94eS5zY3JpcHQ7CiAJCQlmaWxlUGF0dGVy
bnMgPSAiKi5oIjsKIAkJCWZpbGVUeXBlID0gcGF0dGVybi5wcm94eTsKKwkJCWlucHV0RmlsZXMg
PSAoCisJCQkpOwogCQkJaXNFZGl0YWJsZSA9IDE7CiAJCQlvdXRwdXRGaWxlcyA9ICgKIAkJCQki
JChIRUFERVJfT1VUUFVUX0RJUikvJChJTlBVVF9GSUxFX05BTUUpIiwKQEAgLTIxMjEsOSArMjEy
Miw2IEBACiAJCTFBMzM0REVBMTZERThCNjgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcC5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBTdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFw
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQTMzNERFQzE2REU4Rjg4MDA2QThFMzggLyogU3Rv
cmFnZUFyZWFNYXBNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBT
dG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0
b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKLQkJMUEzNjM1QTcxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBMzYzNUE4MUEzMTQ0QTMwMEVE
NjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFQSVdlYnNpdGVEYXRhU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUEzNjM1QUIxQTMxNDVFNTAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFQSVdlYnNpdGVEYXRh
U3RvcmVDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEzQTczQ0IxQTQ4
QzZENDAwNzIzMUIzIC8qIEFQSVBhZ2VHcm91cEhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBUElQYWdlR3JvdXBIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQTNBNzNDQzFBNDhDNkQ0MDA3MjMxQjMgLyogQVBJUGFnZUdyb3Vw
SGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVBhZ2VHcm91cEhh
bmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTNDODg3RjE4QTVBQkFFMDBD
NEM5NjIgLyogV0tQcmVmZXJlbmNlc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLUHJlZmVyZW5jZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjM2Nyw3ICs2MzY1LDYgQEAKIAkJCQk3Q0VGQTk2MDFBQzA5OTkzMDBCOTEwRkQg
LyogQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbSAqLywKIAkJCQk1Q0E0NkU3QTIxRjFB
MjM5MDBDRTg2QjQgLyogQVBJSFRUUENvb2tpZVN0b3JlQ29jb2EubW0gKi8sCiAJCQkJRkVEM0Mx
REExQjQ0N0FFODAwRTBFQjdGIC8qIEFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tICov
LAotCQkJCTFBMzYzNUFCMUEzMTQ1RTUwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0gKi8sCiAJCQkJMUFGREU2NDMxOTUxMEI1NTAwQzQ4RkZBIC8qIExlZ2FjeUJ1bmRsZUZv
ckNsYXNzLm1tICovLAogCQkJCTFDMjA5MzVFMjIzMThDQjAwMDAyNkEzOSAvKiBOU0F0dHJpYnV0
ZWRTdHJpbmcuaCAqLywKIAkJCQkxQzIwOTM1RjIyMzE4Q0IwMDAwMjZBMzkgLyogTlNBdHRyaWJ1
dGVkU3RyaW5nLm1tICovLApAQCAtNzk3Nyw4ICs3OTc0LDYgQEAKIAkJCQkyRDg3ODYyMjFCREI1
OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuaCAqLywKIAkJCQkxQUUyODY4MTFDN0Y5
Mzg2MDA2OUFDNEYgLyogQVBJV2Vic2l0ZURhdGFSZWNvcmQuY3BwICovLAogCQkJCTFBRTI4Njgy
MUM3RjkzODYwMDY5QUM0RiAvKiBBUElXZWJzaXRlRGF0YVJlY29yZC5oICovLAotCQkJCTFBMzYz
NUE3MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmNwcCAqLywKLQkJCQkx
QTM2MzVBODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oICovLAogCQkJ
CTVDOEREMzdEMUZFNDUwMTEwMEYyQTU1NiAvKiBBUElXZWJzaXRlUG9saWNpZXMuY3BwICovLAog
CQkJCTVDOEREMzdDMUZFNDUwMTEwMEYyQTU1NiAvKiBBUElXZWJzaXRlUG9saWNpZXMuaCAqLywK
IAkJCQkxQTY1NjNFMjFCN0E4QzUwMDA5Q0Y3ODcgLyogQVBJV2luZG93RmVhdHVyZXMuY3BwICov
LApAQCAtOTM4Miw3ICs5Mzc3LDYgQEAKIAkJCQlDNUUxQUZFRDE2QjIxMDE3MDA2Q0MxRjIgLyog
QVBJV2ViQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzVFMUFGRUYxNkIyMTAyOTAwNkND
MUYyIC8qIEFQSVdlYkFyY2hpdmVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMjg2
ODQxQzdGOTM4NjAwNjlBQzRGIC8qIEFQSVdlYnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAq
LywKLQkJCQkxQTM2MzVBQTFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2NTYzRTUxQjdBOEM1MDAwOUNGNzg3IC8qIEFQSVdpbmRv
d0ZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDhEMkE4NTIxNTgzQTdFMDBDNjc1MkIg
LyogQXBwS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQ0QzE5MzFCMzlGMzMyMDBBQkMy
OEUgLyogQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378493</attachid>
            <date>2019-09-10 14:23:45 -0700</date>
            <delta_ts>2019-09-10 14:40:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201655-20190910142344.patch</filename>
            <type>text/plain</type>
            <size>204720</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2NyBAQAorMjAxOS0wOS0xMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB1bm5l
Y2Vzc2FyeSBhYnN0cmFjdGlvbnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBmb3Vy
IHRoaW5ncyB0byBzaW1wbGlmeSBXZWJzaXRlRGF0YVN0b3JlIGNvZGU6CisgICAgICAgIDEuIEl0
IHJlbW92ZXMgQVBJOjpXZWJzaXRlRGF0YVN0b3JlLCB3aGljaCB3YXMganVzdCBhbiB1bm5lY2Vz
c2FyeSB3cmFwcGVyIGFyb3VuZCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUuCisgICAgICAgIDIu
IEl0IGRlcHJlY2F0ZXMgdGhlIHVudXNlZCBhbGlhc2VzIG9mIFdlYnNpdGVEYXRhU3RvcmUsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYW5kIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZgorICAgICAgICAzLiBJdCByZW1vdmVzIHRoZSB1bnVzZWQgQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHByb3BlcnRpZXMgdGhhdCBoYXZlIGJlZW4gbW92ZWQgdG8gV2Vic2l0ZURhdGFTdG9y
ZS4KKyAgICAgICAgNC4gSXQgbWFrZXMgV0tXZWJzaXRlRGF0YVN0b3JlLl9kZWxlZ2F0ZSB3ZWFr
IGluc3RlYWQgb2Ygc3Ryb25nLCBhcyBhbHJlYWR5IGFubm90YXRlZCBpbiBXS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZSBpbiBiZWhh
dmlvciBmcm9tIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZToKKyAg
ICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAg
ICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tp
ZVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6CisgICAg
ICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURh
dGFTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
RGF0YVN0b3JlLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
UG9saWNpZXMuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlUG9saWNpZXM6OmRhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5zKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJEZWxldGVBbGxFbnRyaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
UG9saWN5TGlzdGVuZXIuY3BwOgorICAgICAgICAodXNlV2l0aFBvbGljaWVzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCk6CisgICAgICAgIChXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KToKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAoV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLUmVzb3VyY2VDYWNo
ZU1hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENh
Y2hlT3JpZ2lucyk6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZv
ck9yaWdpbik6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFs
bE9yaWdpbnMpOgorICAgICAgICAodG9XZWJzaXRlRGF0YVR5cGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdl
dERlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlTm9u
UGVyc2lzdGVudERhdGFTdG9yZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVX
aXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29v
a2llU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZVdpdGhDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RT
ZWVuKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVBy
ZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKToKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSk6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5n
VGVzdCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hvdWxkQ2xh
c3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzTWF4U3RhdGlzdGljc0VudHJpZXMpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1BydW5lRW50cmllc0Rvd25Ubyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9u
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGb3JPcmlnaW4p
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnMpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW4pOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmln
aW5TdG9yYWdlUXVvdGEpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdKToK
KyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdKToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIGh0dHBDb29raWVTdG9yZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6bW9kaWZpZWRTaW5jZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOmZv
ckRhdGFSZWNvcmRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgX2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKToKKyAgICAgICAgKCtbV0tXZWJzaXRl
RGF0YVN0b3JlIF9kZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZ10pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3aXRoT3B0aW9u
czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Blck9yaWdpblN0b3Jh
Z2VRdW90YV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFBlck9yaWdpblN0
b3JhZ2VRdW90YTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRDYWNoZVN0
b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOl0pOgor
ICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcl0p
OgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldEFsbG93c0NlbGx1bGFyQWNjZXNz
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93c0NlbGx1bGFyQWNjZXNz
XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJveHlDb25maWd1cmF0aW9u
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFNvdXJj
ZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXI6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0QWxsb3dzVExTRmFs
bGJhY2s6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dzVExTRmFsbGJh
Y2tdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm94eUNvbmZpZ3VyYXRpb25d
KToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zv
cjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9z
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRJc1ByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERv
bWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3Jl
IF9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOl0pOgorICAgICAgICAoLVtXS1dlYnNp
dGVEYXRhU3RvcmUgX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyXSk6CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHNldF9kZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAg
ICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29y
a1Byb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ondl
YnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bV93ZWJQcm9jZXNzQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRl
bnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJt
ZWRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp0ZW1w
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxEZWZhdWx0RGF0
YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHRE
YXRhU3RvcmVGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2wgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAg
ICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6
IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRIU1RTRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Ondl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOS0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEhhbmdzIG9uIFN3aXNz
LmNvbSBkdWUgdG8gdGhlIHdlYiBwcm9jZXNzIGJlaW5nIGJsb2NrZWQgb24gU3RvcmFnZUFyZWFN
YXA6OkxvYWRWYWx1ZXNJZk5lZWRlZApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAg
ICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAotICAgIFVJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAogICAgIFVJ
UHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcApJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5E
IFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAot
ICAgIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKIAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVy
V2luLmNwcApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDYgQEAgVUlQcm9j
ZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVu
dFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElVc2VyU3R5bGVTaGVldC5jcHAKLVVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElXaW5kb3dGZWF0dXJlcy5jcHAKIApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yNzQsNyArMjc0LDYgQEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubQogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNv
Y29hLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCi1VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9MZWdhY3lCdW5kbGVGb3JDbGFzcy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0
dHJpYnV0ZWRTdHJpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3Qu
bW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9Tb3VyY2VzR1RLLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw2IEBAIFVJ
UHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9n
dGsvV0tWaWV3LmNwcAogCiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVz
dC5jcHAgQG5vLXVuaWZ5CkBAIC0yMzIsNiArMjMxLDcgQEAgVUlQcm9jZXNzL2NhaXJvL0JhY2tp
bmdTdG9yZUNhaXJvLmNwcCBAbgogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcAogVUlQcm9jZXNzL2dzdHJlYW1lci9X
ZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTExNCw3ICsxMTQsNiBAQCBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMu
Y3BwCiBVSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKIAogVUlQcm9jZXNzL0FQSS9nbGli
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlR0xpYi5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJ
L2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXBwbGljYXRpb25JbmZvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwIEBuby11bmlmeQpAQCAtMTkyLDYgKzE5MSw3IEBA
IFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3YKIAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5
R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5p
ZnkKIAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKIFVJ
UHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJu
aW5nLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNyAr
NDE2LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgICwg
bV9wcmVmZXJlbmNlcygqbV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpKQogICAgICwgbV91
c2VyQ29udGVudENvbnRyb2xsZXIoKm1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRl
ZExpbmtTdG9yZSgpKQotICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+
d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCisgICAgLCBtX3dlYnNpdGVE
YXRhU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKQogICAgICwgbV91
c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgeyBtX2NvbmZpZ3VyYXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5KCkgfQogICAgICwgbV90cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZp
Z3VyYXRpb24tPnRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCkBAIC0y
ODY3LDggKzI4NjcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9s
CiAgICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gZGF0YTsKICAgICBpZiAocG9saWNp
ZXMpIHsKICAgICAgICAgZGF0YSA9IHBvbGljaWVzLT5kYXRhKCk7Ci0gICAgICAgIGlmIChwb2xp
Y2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpICYmICZwb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgp
LT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSkgewotICAgICAg
ICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCktPndl
YnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAgaWYgKHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3Jl
KCkgJiYgcG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlLnB0
cigpKSB7CisgICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gKnBvbGljaWVzLT53ZWJzaXRl
RGF0YVN0b3JlKCk7CiAgICAgICAgICAgICBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDQsOCArMjQ0LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nl
c3NQb29sKEFQSTo6UHJvYwogICAgICAgICBQcm9jZXNzOjpzZXRJZGVudGlmaWVyKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKICAgICB9KTsKIAotICAgIGlmICghbV93
ZWJzaXRlRGF0YVN0b3JlICYmIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZUV4aXN0cygpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSAm
JiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCisgICAgICAgIG1f
d2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsK
IAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV9jb25maWd1cmF0aW9uLT5hbHdheXNSZXZhbGlk
YXRlZFVSTFNjaGVtZXMoKSkKICAgICAgICAgbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2
YWxpZGF0ZWQuYWRkKHNjaGVtZSk7CkBAIC00ODMsMTQgKzQ4MywxNCBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKLSAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZW5kaW5nQ29va2ll
cyA9IGNvcHlUb1ZlY3RvcihtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5w
ZW5kaW5nQ29va2llcygpKTsKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuY2xlYXJQZW5kaW5nQ29va2llcygpOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1
bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fd2Vi
c2l0ZURhdGFTdG9yZS0+cGVuZGluZ0Nvb2tpZXMoKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFT
dG9yZS0+Y2xlYXJQZW5kaW5nQ29va2llcygpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAg
ICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyKCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNr
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJh
Y2soKSA/IEFsbG93c1RMU0ZhbGxiYWNrOjpZZXMgOiBBbGxvd3NUTFNGYWxsYmFjazo6Tm87Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IG1fd2Vic2l0
ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9IG1fd2Vic2l0ZURh
dGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNrID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5hbGxvd3NUTFNG
YWxsYmFjaygpID8gQWxsb3dzVExTRmFsbGJhY2s6OlllcyA6IEFsbG93c1RMU0ZhbGxiYWNrOjpO
bzsKICNlbmRpZgotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5uZXR3b3JraW5nSGFzQmVndW4oKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3
b3JraW5nSGFzQmVndW4oKTsKICAgICB9CiAKICAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBj
YWNoZU1vZGVsKCk7CkBAIC01MDIsOSArNTAyLDYgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2Vi
UHJvY2Vzc1Bvb2w6OmVucwogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV91cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scykKICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVz
UmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKIAotICAgIHBhcmFt
ZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5kaXNrQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHko
KSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRpc2tDYWNo
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BF
Q1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24gPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNo
ZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQoKTsKICNlbmRpZgpAQCAtNTQxLDIzICs1Mzgs
MTEgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgIHBhcmFt
ZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkID0gY29weVRvVmVjdG9yKG1f
c2NoZW1lc1RvUmVnaXN0ZXJBc0NPUlNFbmFibGVkKTsKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVt
ZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCA9IGNvcHlUb1ZlY3Rvciht
X3NjaGVtZXNUb1JlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCk7CiAKLSNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICAvLyAqKioqKioqKioKLSAgICAvLyBJTVBPUlRB
TlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0
YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBB
cHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKLSAgICAvLyAqKioqKioqKioKLSAgICBw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeSA9IG1fY29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAg
ICBpZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygp
LmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKLSAgICAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVs
dERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU3ltTGlua0ZvckZpbGVVcGdyYWRlKHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5KTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChtX3dl
YnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJl
c29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgICAgICBwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPnJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAg
IGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAg
ICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSAgQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpOworICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkgPSAgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5LCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogCiAgICAgaWYgKCFtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZS5p
c0VtcHR5KCkpCkBAIC01NjYsMTYgKzU1MSwxNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQ
cm9jZXNzUG9vbDo6ZW5zCiAgICAgcGFyYW1ldGVycy5zaG91bGREaXNhYmxlU2VydmljZVdvcmtl
clByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclBy
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5OwogI2VuZGlmCiAKLSAgICBhdXRvIGxvY2FsU3RvcmFnZURp
cmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBudWxsU3RyaW5n
KCk7CisgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUg
PyBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBu
dWxsU3RyaW5nKCk7CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpOworICAgICAgICBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBs
b2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5k
ZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwor
ICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5yZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKICAg
ICBpZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0g
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogCiAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFt
ZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCkBAIC02MDEsMTcgKzU4NiwxNyBAQCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgfSBlbHNlIGlmICht
X3dlYnNpdGVEYXRhU3RvcmUpIHsKICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgICAgICBlbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkuaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygpOworICAgICAg
ICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5oYXNTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKCk7CiAjZW5kaWYKICAgICAg
ICAgaWYgKGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKLSAgICAgICAgICAgIGF1dG8g
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKKyAgICAgICAg
ICAgIGF1dG8gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5w
YXJhbWV0ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzOwogICAgICAgICAgICAgc2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNsdWRl
TG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgICAgICAgICAgZW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5l
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAgICAgICAgICAgbWFudWFs
UHJldmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKLSAgICAgICAg
cGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVv
dGEgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZXJPcmlnaW5TdG9y
YWdlUXVvdGEoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOworICAg
ICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlck9yaWdpblN0b3Jh
Z2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0
eU9yaWdpblN0b3JhZ2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyVGhpcmRQYXJ0eU9y
aWdpblN0b3JhZ2VRdW90YSgpOwogICAgIH0KIAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNzAyLDggKzY4
Nyw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnQKIAogICAgIGlm
ICghd2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkK
LSAgICAgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwotICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gJm1f
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICAgICAgbV93ZWJz
aXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OworICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOwog
ICAgIH0KIAogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQpAQCAt
Nzk1LDEyICs3ODAsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdl
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygp
CiB7CiAgICAgbV9yZXNvbHZlZFBhdGhzLmluamVjdGVkQnVuZGxlUGF0aCA9IHJlc29sdmVQYXRo
Rm9yU2FuZGJveEV4dGVuc2lvbihpbmplY3RlZEJ1bmRsZVBhdGgoKSk7Ci0gICAgbV9yZXNvbHZl
ZFBhdGhzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdy
aXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLndlYlNRTERhdGFiYXNl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAg
ICBtX3Jlc29sdmVkUGF0aHMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVS
ZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVk
aWFDYWNoZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwot
ICAgIG1fcmVzb2x2ZWRQYXRocy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRp
b24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOwotCiAgICAgbV9yZXNvbHZlZFBhdGhz
LmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnJlc2VydmVDYXBhY2l0
eShtX2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkuc2l6
ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBtX2NvbmZpZ3VyYXRpb24tPmFkZGl0
aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkpCiAgICAgICAgIG1fcmVzb2x2ZWRQYXRocy5h
ZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy51bmNoZWNrZWRBcHBlbmQo
cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGguZGF0YSgpKSk7CkBAIC04MzcsNyAr
ODE2LDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OgogI2lmIFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIC8vIEluIHBsYXRmb3JtcyB1c2luZyBC
dWJibGV3cmFwIGZvciBzYW5kYm94aW5nLCBwcmV3YXJtZWQgcHJvY2VzcyBpcyBsYXVuY2hlZCB1
c2luZyB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlLAogICAgIC8v
IHNvIHdlIGRvbid0IHVzZSBpdCBpbiBjYXNlIG9mIHVzaW5nIGEgZGlmZmVyZW50IFdlYnNpdGVE
YXRhU3RvcmUuCi0gICAgaWYgKG1fc2FuZGJveEVuYWJsZWQgJiYgbV93ZWJzaXRlRGF0YVN0b3Jl
ICYmICZtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURh
dGFTdG9yZSkKKyAgICBpZiAobV9zYW5kYm94RW5hYmxlZCAmJiBtX3dlYnNpdGVEYXRhU3RvcmUg
JiYgbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogCkBAIC04ODUsOCArODY0LDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2VuZFdlYlByb2Nlc3NEYXRhUwogICAgIGlmICghcGFyYW1ldGVycy5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFt
ZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgcGFy
YW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gd2Vic2l0
ZURhdGFTdG9yZS5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCk7Ci0g
ICAgaWYgKHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZS5pc0VtcHR5KCkpCi0gICAgICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRG
aWxlU3ViZGlyZWN0b3J5TmFtZSgpOwogCiAgICAgcGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSgpOwog
ICAgIGlmIChwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKQEAg
LTExMDcsNyArMTA4NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRGaW5pc2hM
YXUKICAgICBtX2Nvbm5lY3Rpb25DbGllbnQuZGlkQ3JlYXRlQ29ubmVjdGlvbih0aGlzLCBwcm9j
ZXNzLT53ZWJDb25uZWN0aW9uKCkpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAg
ICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGlkQ3JlYXRlTmV0
d29ya1Byb2Nlc3MoKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kaWRDcmVhdGVOZXR3
b3JrUHJvY2VzcygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vz
cyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCkBAIC0xMTg2LDcgKzExNjMsNyBAQCBXZWJQcm9j
ZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzCiAgICAgICAgIHJldHVybiBjcmVhdGVO
ZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIGJvb2wgbXVzdE1hdGNoRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gJkFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
Ym9vbCBtdXN0TWF0Y2hEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwogI2Vsc2UKICAgICBib29sIG11c3RNYXRjaERhdGFTdG9y
ZSA9IGZhbHNlOwogI2VuZGlmCkBAIC0xMjIwLDcgKzExOTcsNyBAQCBSZWY8V2ViUGFnZVByb3h5
PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAgICAgIC8vIFdlIHRyeSB0byBhdm9pZCBjcmVh
dGluZyB0aGUgZGVmYXVsdCBkYXRhIHN0b3JlIGFzIGxvbmcgYXMgcG9zc2libGUuCiAgICAgICAg
IC8vIEJ1dCBpZiB0aGVyZSBpcyBhbiBhdHRlbXB0IHRvIGNyZWF0ZSBhIHdlYiBwYWdlIHdpdGhv
dXQgYW55IHNwZWNpZmllZCBkYXRhIHN0b3JlLCB0aGVuIHdlIGhhdmUgdG8gY3JlYXRlIGl0Lgog
ICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgICAgIG1fd2Vic2l0ZURh
dGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OworICAgICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwogCiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRX
ZWJzaXRlRGF0YVN0b3JlKG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSk7CiAgICAgfQpAQCAtMTIz
MSw4ICsxMjA4LDggQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZQog
ICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdl
IHZpYSB3aW5kb3cub3BlbigpLgogICAgICAgICBwcm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9u
LT5yZWxhdGVkUGFnZSgpLT5lbnN1cmVSdW5uaW5nUHJvY2VzcygpOwogICAgICAgICAvLyBXZSBk
byBub3Qgc3VwcG9ydCBzZXZlcmFsIFdlYnNpdGVEYXRhU3RvcmVzIHNoYXJpbmcgYSBzaW5nbGUg
cHJvY2Vzcy4KLSAgICAgICAgQVNTRVJUKHByb2Nlc3MuZ2V0KCkgPT0gbV9kdW1teVByb2Nlc3NQ
cm94eSB8fCAmcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURh
dGFTdG9yZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwotICAgICAgICBBU1NF
UlQoJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkg
PT0gJnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3Rv
cmUoKSk7CisgICAgICAgIEFTU0VSVChwcm9jZXNzLmdldCgpID09IG1fZHVtbXlQcm9jZXNzUHJv
eHkgfHwgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmcHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgQVNTRVJUKCZwYWdlQ29uZmlndXJhdGlvbi0+
cmVsYXRlZFBhZ2UoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHBhZ2VDb25maWd1cmF0aW9uLT53
ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIH0gZWxzZSBpZiAoIW1faXNEZWxheWVkV2ViUHJvY2Vz
c0xhdW5jaERpc2FibGVkKSB7CiAgICAgICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwgd2UgZGVs
YXkgcHJvY2VzcyBsYXVuY2ggdW50aWwgc29tZXRoaW5nIGlzIGFjdHVhbGx5IGxvYWRlZCBpbiB0
aGUgcGFnZS4KICAgICAgICAgaWYgKCFtX2R1bW15UHJvY2Vzc1Byb3h5KSB7CkBAIC0xMjQyLDcg
KzEyMTksNyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAg
ICAgIH0KICAgICAgICAgcHJvY2VzcyA9IG1fZHVtbXlQcm9jZXNzUHJveHk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIHByb2Nlc3MgPSAmcHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHBhZ2VDb25m
aWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSwgbnVsbHB0
ciwgeyB9KTsKKyAgICAgICAgcHJvY2VzcyA9ICZwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4o
KnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCksIG51bGxwdHIsIHsgfSk7CiAK
ICAgICBBU1NFUlQocHJvY2Vzcyk7CiAKQEAgLTEyOTIsNyArMTI2OSw3IEBAIGJvb2wgV2ViUHJv
Y2Vzc1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmluZyBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlv
bigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgICAgIHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KCk7CiAKICAgICByZXR1cm4gbV9tYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzLmVu
c3VyZShzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBbJl0gewogICAgICAgICAv
LyBGSVhNRTogTWFrZSB0aGlzIGNvbXB1dGF0aW9uIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI0
OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJI
aWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyLmgiCkBAIC00NCw2ICs0Myw3
IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2
aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBAIC0yMDIsOCAr
MjAyLDggQEAgcHVibGljOgogICAgIC8vIERpc2Nvbm5lY3QgdGhlIHByb2Nlc3MgZnJvbSB0aGUg
Y29udGV4dC4KICAgICB2b2lkIGRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSopOwog
Ci0gICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRQcmltYXJ5RGF0
YVN0b3JlKEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKSB7IG1fd2Vic2l0ZURhdGFT
dG9yZSA9ICZkYXRhU3RvcmU7IH0KKyAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0
b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRQcmltYXJ5RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkgeyBtX3dl
YnNpdGVEYXRhU3RvcmUgPSAmZGF0YVN0b3JlOyB9CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBj
cmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CiAKQEAgLTY3Niw3ICs2NzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tZW1vcnlTYW1wbGVy
RW5hYmxlZCB7IGZhbHNlIH07CiAgICAgZG91YmxlIG1fbWVtb3J5U2FtcGxlckludGVydmFsIHsg
MTQwMC4wIH07CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVE
YXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9y
ZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgUmVmUHRyPFdlYkNvbnRleHRT
dXBwbGVtZW50PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IFdlYkNvbnRleHRTdXBwbGVtZW50TWFw
OwogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVudHM7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBD
b29raWVTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKIAotI2luY2x1ZGUg
IkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVT
dG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgZW51
bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludAogbmFtZXNwYWNlIEFQSSB7CiAK
IGNsYXNzIEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyOwotY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKIAogY2xhc3MgSFRUUENvb2tpZVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEyICsxNTEsMTIgQEAg
dm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0VmlzaXRlZExpbmtTdAogICAgIG1fdmlzaXRlZExp
bmtTdG9yZSA9IHZpc2l0ZWRMaW5rU3RvcmU7CiB9CiAKLUFQSTo6V2Vic2l0ZURhdGFTdG9yZSog
UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQorV2Vic2l0ZURhdGFTdG9yZSog
UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIHJldHVybiBtX3dl
YnNpdGVEYXRhU3RvcmUuZ2V0KCk7CiB9CiAKLXZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFdl
YnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQor
dm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNp
dGVEYXRhU3RvcmU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDEyICs0NCwxMiBAQCBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIGNsYXNzIFdlYlByb2Nl
c3NQb29sOwogY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIH0KIAogbmFtZXNwYWNl
IEFQSSB7CiAKIGNsYXNzIEFwcGxpY2F0aW9uTWFuaWZlc3Q7Ci1jbGFzcyBXZWJzaXRlRGF0YVN0
b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogCiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbiA6
IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6UGFnZUNvbmZpZ3VyYXRpb24+IHsKQEAg
LTg0LDggKzg0LDggQEAgcHVibGljOgogICAgIFdlYktpdDo6VmlzaXRlZExpbmtTdG9yZSogdmlz
aXRlZExpbmtTdG9yZSgpOwogICAgIHZvaWQgc2V0VmlzaXRlZExpbmtTdG9yZShXZWJLaXQ6OlZp
c2l0ZWRMaW5rU3RvcmUqKTsKIAotICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3Rv
cmUoKTsKLSAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSopOwor
ICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpOworICAgIHZv
aWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUqKTsKIAogICAg
IFdlYnNpdGVQb2xpY2llcyogZGVmYXVsdFdlYnNpdGVQb2xpY2llcygpIGNvbnN0OwogICAgIHZv
aWQgc2V0RGVmYXVsdFdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXMqKTsKQEAgLTE0NSw3
ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9y
ZWxhdGVkUGFnZTsKICAgICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0
ZWRMaW5rU3RvcmU7CiAKLSAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0
YVN0b3JlOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURh
dGFTdG9yZTsKICAgICBSZWZQdHI8V2Vic2l0ZVBvbGljaWVzPiBtX2RlZmF1bHRXZWJzaXRlUG9s
aWNpZXM7CiAKICAgICBib29sIG1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmUgeyB0cnVlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjQ5NzMy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKIAotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgor
I2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIEFQSSB7CiAKQEAgLTM2
LDM1ICszNiw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb28KICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOwogfQogCi1S
ZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNy
ZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihjb25zdCBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJiBsZWdhY3lDb25maWd1cmF0aW9uKQotewotICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0K
LSAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsK
LSAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRp
YUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5
KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGxl
Z2FjeUNvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBjb25m
aWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24u
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmRldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBs
ZWdhY3lDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0KLSAgICByZXR1
cm4gY29uZmlndXJhdGlvbjsKLX0KLQogUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKQotICAgIDogbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpCi0gICAg
LCBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkZpbGVzIikKLSAg
ICAsIG1fZGlza0NhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKSkKLSAgICAsIG1fbWVkaWFDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKQotICAgICwgbV9pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fZGV2aWNlSWRI
YXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJ
ZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fd2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkp
Ci0gICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSgpKQogewogfQogCkBAIC03NywxOCArNDksOCBAQCBSZWY8UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgYXV0byBjb3B5ID0gdGhpcy0+Y3Jl
YXRlKCk7CiAKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9kZWw7Ci0g
ICAgY29weS0+bV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX2Rpc2tDYWNoZURpcmVjdG9y
eTsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgPSB0
aGlzLT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQ7Ci0gICAgY29weS0+
bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5OwotICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZSA9IHRoaXMtPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsK
LSAgICBjb3B5LT5tX21lZGlhQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX21lZGlhQ2FjaGVEaXJl
Y3Rvcnk7Ci0gICAgY29weS0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1f
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9pbmplY3RlZEJ1bmRsZVBh
dGggPSB0aGlzLT5tX2luamVjdGVkQnVuZGxlUGF0aDsKLSAgICBjb3B5LT5tX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1f
ZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9kZXZpY2VJZEhhc2hT
YWx0c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeTsKLSAgICBjb3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gdGhp
cy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2NhY2hlUGFydGl0aW9u
ZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBj
b3B5LT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fYWx3YXlzUmV2YWxp
ZGF0ZWRVUkxTY2hlbWVzOwogICAgIGNvcHktPm1fYWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2Vk
UGF0aHMgPSB0aGlzLT5tX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24+IGNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bihjb25zdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJik7CiAKICAgICBl
eHBsaWNpdCBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKQEAgLTc5LDM4ICs3Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJL
aXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsg
fQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkg
eyBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAKLSAgICBjb25zdCBXVEY6OlN0cmluZyYg
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkgeyBtX2FwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9Ci0KLSAgICBj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXREaXNrQ2Fj
aGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSkgeyBtX2Rp
c2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeTsgfQotCi0gICAgY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ2Fj
aGVEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0g
bWVkaWFDYWNoZURpcmVjdG9yeTsgfQotICAgIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNv
bnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBtX2luZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQogICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBt
X2luamVjdGVkQnVuZGxlUGF0aDsgfQogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKGNv
bnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpIHsgbV9pbmplY3RlZEJ1bmRsZVBh
dGggPSBpbmplY3RlZEJ1bmRsZVBhdGg7IH0KIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9y
eTsgfQotICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5n
JiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpIHsgbV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBkZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkSGFzaFNh
bHRzU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnkpIHsgbV9kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBkaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6
U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViU1FM
RGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KGNvbnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkgeyBtX3dlYlNRTERh
dGFiYXNlRGlyZWN0b3J5ID0gd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0
IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
OyB9Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGNvbnN0IFdU
Rjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSB7IG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7
IH0KLQogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzKCkgeyByZXR1cm4gbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsgfQogICAgIHZv
aWQgc2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIGNh
Y2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKSB7IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMg
PSBXVEZNb3ZlKGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKTsgfQogCkBAIC0xODYsMTcgKzE1
NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlv
bkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwg
eyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlByaW1hcnlXZWJCcm93c2VyIH07CiAKLSAgICBXVEY6OlN0
cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9hcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwotICAgIFdURjo6U3RyaW5nIG1f
ZGlza0NhY2hlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fbWVkaWFDYWNoZURpcmVjdG9y
eTsKLSAgICBXVEY6OlN0cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFdU
Rjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwotICAgIFdURjo6U3RyaW5nIG1fbG9jYWxT
dG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7
Ci0gICAgV1RGOjpTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6
U3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBWZWN0b3I8V1RG
OjpTdHJpbmc+IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7CiAgICAgVmVjdG9yPFdURjo6
U3RyaW5nPiBtX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKICAgICBWZWN0b3I8V1RGOjpD
U3RyaW5nPiBtX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVEYXRhU3RvcmUuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTY4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCi0KLSNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgotI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmUuaCIKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLXN0YXRpYyBSZWZQdHI8V2Vic2l0
ZURhdGFTdG9yZT4mIGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKQotewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4+IGdsb2JhbERlZmF1bHREYXRhU3Rv
cmU7Ci0gICAgcmV0dXJuIGdsb2JhbERlZmF1bHREYXRhU3RvcmUuZ2V0KCk7Ci19Ci0KLQotUmVm
PFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKQot
ewotICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKLQotICAgIGF1dG8mIHN0b3JlID0g
Z2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpOwotICAgIGlmICghc3RvcmUpCi0gICAgICAgIHN0b3Jl
ID0gYWRvcHRSZWYobmV3IFdlYnNpdGVEYXRhU3RvcmUoZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwotCi0gICAgcmV0
dXJuICpzdG9yZTsKLX0KLQotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVEZWZhdWx0RGF0
YVN0b3JlRm9yVGVzdGluZygpCi17Ci0gICAgZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpID0gbnVs
bHB0cjsKLX0KLQotYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3Rz
KCkKLXsKLSAgICByZXR1cm4gISFnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCk7Ci19Ci0KLVJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0
YVN0b3JlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlKTsK
LX0KLQotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShSZWY8
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBj
b25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKSk7
Ci19Ci0KLVdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoKQotICAgIDogbV93ZWJz
aXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVu
dCgpKQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICA6IG1fd2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQp
KQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCi17Ci19Ci0K
LUhUVFBDb29raWVTdG9yZSYgV2Vic2l0ZURhdGFTdG9yZTo6aHR0cENvb2tpZVN0b3JlKCkKLXsK
LSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5jb29raWVTdG9yZSgpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjogaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPmNvbmZpZ3VyYXRpb24oKS5pbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSgpOwotfQotCi1ib29sIFdlYnNpdGVEYXRhU3RvcmU6OmlzUGVy
c2lzdGVudCgpCi17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+aXNQZXJzaXN0ZW50
KCk7Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Ci19Ci0KLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7
Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOwotfQotCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCBlbmFibGVkKQotewotICAgIG1f
d2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFi
bGVkKTsKLX0KLQotI2lmICFQTEFURk9STShDT0NPQSkKLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzY5IGFu
ZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzcwCi0gICAgcmV0
dXJuIFdURjo6U3RyaW5nKCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgLy8gRklYTUU6
IEltcGxlbWVudC4KLSAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKLX0KLSNlbmRpZgotCi0jaWYg
IVVTRShHTElCKQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgLy8gTm90IGltcGxlbWVudGVkLgot
ICAgIHJldHVybiBXVEY6OlN0cmluZygpOwotfQotI2VuZGlmCi0KLVJlZjxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0KLSAgICBjb25maWd1cmF0
aW9uLT5zZXRQZXJzaXN0ZW50KHRydWUpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsK
LSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lKCJGaWxlcyIpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVj
dG9yeShkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24t
PnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkp
OwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkoKSk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5zZXRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeShkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAg
Y29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShkZWZh
dWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0
aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGRl
ZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0RGV2aWNl
SWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0
SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoZGVmYXVsdEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5KCkpOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdl
YnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShub25leGlzdGVudCkKQEAg
LTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJBUElIVFRQQ29va2llU3RvcmUuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0j
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgQVBJIHsKLQotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSBmaW5hbCA6IHB1
YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6V2Vic2l0ZURhdGFTdG9yZT4gewotcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gZGVmYXVsdERhdGFTdG9yZSgpOwot
ICAgIHN0YXRpYyBib29sIGRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKLSAgICBzdGF0aWMgdm9p
ZCBkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwotCi0gICAgc3RhdGljIFJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+JiYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7Ci0gICAgc3RhdGljIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7Ci0KLSAgICBleHBs
aWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7Ci0gICAgdmlydHVhbCB+V2Vic2l0ZURhdGFTdG9y
ZSgpOwotCi0gICAgYm9vbCBpc1BlcnNpc3RlbnQoKTsKLQotICAgIGJvb2wgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdDsKLSAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGJvb2wpOwotICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShib29sKTsKLQotICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSgpIHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQotICAgIEhUVFBDb29raWVT
dG9yZSYgaHR0cENvb2tpZVN0b3JlKCk7Ci0KLSAgICBXVEY6OlN0cmluZyBpbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcg
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBk
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGlj
IFdURjo6U3RyaW5nIGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotI2lmIFVTRShH
TElCKQotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SFNUU0RpcmVjdG9yeSgpOwotI2Vu
ZGlmCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRKYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwot
Ci1wcml2YXRlOgotICAgIGVudW0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0
b3J5LCBEb250Q3JlYXRlRGlyZWN0b3J5IH07Ci0KLSAgICBXZWJzaXRlRGF0YVN0b3JlKCk7Ci0K
LSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0
b3J5ID0gQ3JlYXRlRGlyZWN0b3J5KTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSk7Ci0K
LSAgICBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7Ci19
OwotCi19CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGlj
aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZVBvbGljaWVzLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE0
ICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xp
Y2llcy5oIgogCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgIldl
YnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCiAKIG5h
bWVzcGFjZSBBUEkgewogCiBXZWJzaXRlUG9saWNpZXM6OldlYnNpdGVQb2xpY2llcygpID0gZGVm
YXVsdDsKIAotV2Vic2l0ZVBvbGljaWVzOjpXZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxs
b3dlZEF1dG9wbGF5UXVpcmtzLCBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeSBhdXRvcGxh
eVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiBsZWdhY3lDdXN0b21I
ZWFkZXJGaWVsZHMsIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+JiYgY3VzdG9t
SGVhZGVyRmllbGRzLCBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSBwb3BVcFBvbGljeSwgUmVm
UHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKK1dlYnNpdGVQb2xpY2ll
czo6V2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgT3B0aW9uU2V0
PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IGFsbG93ZWRBdXRvcGxheVF1aXJrcywgV2Vi
S2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3kgYXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3Jl
OjpIVFRQSGVhZGVyRmllbGQ+JiYgbGVnYWN5Q3VzdG9tSGVhZGVyRmllbGRzLCBWZWN0b3I8V2Vi
Q29yZTo6Q3VzdG9tSGVhZGVyRmllbGRzPiYmIGN1c3RvbUhlYWRlckZpZWxkcywgV2ViS2l0OjpX
ZWJzaXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3ksIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKICAgICA6IG1fY29udGVudEJsb2NrZXJzRW5hYmxl
ZChjb250ZW50QmxvY2tlcnNFbmFibGVkKQogICAgICwgbV9hbGxvd2VkQXV0b3BsYXlRdWlya3Mo
YWxsb3dlZEF1dG9wbGF5UXVpcmtzKQogICAgICwgbV9hdXRvcGxheVBvbGljeShhdXRvcGxheVBv
bGljeSkKQEAgLTg0LDcgKzg0LDcgQEAgV2Vic2l0ZVBvbGljaWVzOjp+V2Vic2l0ZVBvbGljaWVz
KCkKIHsKIH0KIAotdm9pZCBXZWJzaXRlUG9saWNpZXM6OnNldFdlYnNpdGVEYXRhU3RvcmUoUmVm
UHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKK3ZvaWQgV2Vic2l0ZVBv
bGljaWVzOjpzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBXVEZN
b3ZlKHdlYnNpdGVEYXRhU3RvcmUpOwogfQpAQCAtMTA4LDcgKzEwOCw3IEBAIFdlYktpdDo6V2Vi
c2l0ZVBvbGljaWVzRGF0YSBXZWJzaXRlUG9saWMKICNlbmRpZgogICAgICAgICBXVEZNb3ZlKGN1
c3RvbUhlYWRlckZpZWxkcyksCiAgICAgICAgIHBvcFVwUG9saWN5KCksCi0gICAgICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZSA/IE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnM+IHsgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygp
IH0gOiBXVEY6Om51bGxvcHQsCisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA/IE9wdGlvbmFs
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IHsgbV93ZWJzaXRlRGF0YVN0b3Jl
LT5wYXJhbWV0ZXJzKCkgfSA6IFdURjo6bnVsbG9wdCwKICAgICAgICAgbV9jdXN0b21Vc2VyQWdl
bnQsCiAgICAgICAgIG1fY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVp
cmtzLAogICAgICAgICBtX2N1c3RvbU5hdmlnYXRvclBsYXRmb3JtLApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2ll
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMyArNDEsMTIgQEAKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIHN0
cnVjdCBXZWJzaXRlUG9saWNpZXNEYXRhOwogfQogCiBuYW1lc3BhY2UgQVBJIHsKIAotY2xhc3Mg
V2Vic2l0ZURhdGFTdG9yZTsKLQogY2xhc3MgV2Vic2l0ZVBvbGljaWVzIGZpbmFsIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6V2Vic2l0ZVBvbGljaWVzPiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlUG9saWNpZXM+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2Vic2l0ZVBvbGljaWVzKTsgfQpAQCAtNzksOCArNzgsOCBAQCBwdWJs
aWM6CiAgICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3koKSBjb25zdCB7
IHJldHVybiBtX3BvcFVwUG9saWN5OyB9CiAgICAgdm9pZCBzZXRQb3BVcFBvbGljeShXZWJLaXQ6
OldlYnNpdGVQb3BVcFBvbGljeSBwb2xpY3kpIHsgbV9wb3BVcFBvbGljeSA9IHBvbGljeTsgfQog
Ci0gICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJu
IG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9y
ZShSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJik7CisgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3Jl
LmdldCgpOyB9CisgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0cjxXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU+JiYpOwogCiAgICAgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIGRh
dGEoKTsKIApAQCAtMTE4LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFsbG93Q29u
dGVudENoYW5nZU9ic2VydmVyUXVpcmsoYm9vbCBhbGxvdykgeyBtX2FsbG93Q29udGVudENoYW5n
ZU9ic2VydmVyUXVpcmsgPSBhbGxvdzsgfQogCiBwcml2YXRlOgotICAgIFdlYnNpdGVQb2xpY2ll
cyhib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVB
dXRvcGxheVF1aXJrPiwgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJD
b3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYsIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVs
ZHM+JiYsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5LCBSZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4mJik7CisgICAgV2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwg
T3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+LCBXZWJLaXQ6OldlYnNpdGVB
dXRvcGxheVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiwgVmVjdG9y
PFdlYkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4mJiwgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xp
Y3ksIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+JiYpOwogCiAgICAgYm9vbCBtX2Nv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQgeyB0cnVlIH07CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZUF1dG9wbGF5UXVpcms+IG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtzOwpAQCAtMTI5LDcgKzEy
OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4gbV9s
ZWdhY3lDdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkN1c3RvbUhlYWRl
ckZpZWxkcz4gbV9jdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQ
b2xpY3kgbV9wb3BVcFBvbGljeSB7IFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5OjpEZWZhdWx0
IH07Ci0gICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAg
ICBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAg
ICAgV1RGOjpTdHJpbmcgbV9jdXN0b21Vc2VyQWdlbnQ7CiAgICAgV1RGOjpTdHJpbmcgbV9jdXN0
b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3M7CiAgICAgV1RGOjpTdHJp
bmcgbV9jdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjks
NiBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNzIFByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjsKIGNsYXNzIFNlc3Npb25TdGF0ZTsKIGNsYXNzIFVzZXJTY3JpcHQ7Ci1jbGFzcyBXZWJz
aXRlRGF0YVN0b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogY2xhc3MgV2luZG93RmVhdHVy
ZXM7CiB9CkBAIC0xMTMsNiArMTEyLDcgQEAgY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI7CiBjbGFzcyBXZWJUZXh0Q2hlY2tlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OwogY2xhc3MgV2ViVmlld3BvcnRBdHRyaWJ1dGVzOworY2xhc3MgV2Vic2l0
ZURhdGFTdG9yZTsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOwogCiBXS19B
RERfQVBJX01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiwgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eSkKQEAgLTE2OSw3ICsxNjksNyBAQCBXS19BRERfQVBJX01BUFBJTkco
V0tVc2VyTWVkaWFQZXJtaXNzaW9uCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFJlZiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSkKIFdLX0FE
RF9BUElfTUFQUElORyhXS1VzZXJTY3JpcHRSZWYsIEFQSTo6VXNlclNjcmlwdCkKIFdLX0FERF9B
UElfTUFQUElORyhXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZiwgV2ViVmlld3BvcnRBdHRyaWJ1dGVz
KQotV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgQVBJOjpXZWJzaXRl
RGF0YVN0b3JlKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb25SZWYsIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tXZWJzaXRlUG9saWNpZXNSZWYsIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2luZG93RmVhdHVyZXNSZWYsIEFQSTo6
V2luZG93RmVhdHVyZXMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ5
NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDQyICsyNiwxOSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCIKIAotI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCi0KIFdL
VHlwZUlEIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRUeXBlSUQoKQogewotICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CisgICAgcmV0
dXJuIDA7CiB9CiAKLXZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9uIGNhbGxiYWNrKQordm9pZCBXS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnMoV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlclJlZiwgdm9pZCosIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luc0Z1bmN0aW9uKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBX
ZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oYXBw
bGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVE
YXRhU3RvcmUuZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdKGF1dG8gZGF0YVJlY29yZHMp
IHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2luczsK
LSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKLSAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKQot
ICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy5hcHBlbmQoQVBJOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBjYWxsYmFjayhXZWJLaXQ6OnRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHNlY3Vy
aXR5T3JpZ2lucykpLnB0cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZv
aWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwgV0tTZWN1cml0
eU9yaWdpblJlZiBvcmlnaW4pCit2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVF
bnRyaWVzRm9yT3JpZ2luKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYsIFdLU2VjdXJpdHlP
cmlnaW5SZWYpCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IFdlYktpdDo6dG9JbXBs
KHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihhcHBsaWNhdGlvbkNhY2hl
TWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0KLSAgICBXZWJLaXQ6OldlYnNpdGVEYXRh
UmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCBXZWJLaXQ6OnRvSW1wbChvcmlnaW4p
LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7Ci0KLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92
ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
LCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsKIH0KIAotdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyKQordm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRl
QWxsRW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmKQogewotICAgIGF1dG8mIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0
ZURhdGFTdG9yZVJlZj4oYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YShXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwg
W10geyB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgJKHJldmlzaW9uIDI0OTczMikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTggKzI3LDE5IEBACiAjZGVmaW5lIFdLQXBwbGljYXRp
b25DYWNoZU1hbmFnZXJfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUg
PFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMi
IHsKICNlbmRpZgogCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ckdldFR5cGVJRCgpOworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJHZXRUeXBlSUQoKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiB0eXBlZGVmIHZvaWQgKCpXS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiko
V0tBcnJheVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9u
IGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRB
cHBsaWNhdGlvbkNhY2hlT3JpZ2lucyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbikgV0tfQ19BUElf
REVQUkVDQVRFRDsKIAotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRl
bGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNh
dGlvbkNhY2hlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pOwotV0tfRVhQT1JU
IHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcik7CitXS19FWFBPUlQg
dm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCBXS1NlY3Vy
aXR5T3JpZ2luUmVmIG9yaWdpbikgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lk
IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpIFdLX0NfQVBJX0RFUFJFQ0FU
RUQ7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCShyZXZpc2lv
biAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5
TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCIKIAotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMu
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZVBvbGljaWVzRGF0YS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw5MCArMjYsMzggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAi
QVBJRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNs
dWRlICJTdG9yYWdlTWFuYWdlci5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUg
IldlYnNpdGVEYXRhUmVjb3JkLmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlw
ZUlEIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRv
QVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIDA7CiB9CiAK
IFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpCiB7Ci0g
ICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJXZWJLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURldGFpbHNPcmlnaW5LZXkiKS5sZWFrUmVmKCk7Ci0g
ICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBXS1N0cmlu
Z1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKQogewotICAg
IHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiV2ViS2V5VmFs
dWVTdG9yYWdlTWFuYWdlclN0b3JhZ2VEZXRhaWxzQ3JlYXRpb25UaW1lS2V5IikubGVha1JlZigp
OwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogV0tT
dHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgp
CiB7Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJX
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURldGFpbHNNb2RpZmljYXRpb25UaW1lS2V5
IikubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VP
cmlnaW5zKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
LCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3Jh
Z2VPcmlnaW5zRnVuY3Rpb24gY2FsbGJhY2spCi0KK3ZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYs
IHZvaWQqLCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5z
RnVuY3Rpb24pCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVy
cHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oa2V5VmFsdWVTdG9yYWdlTWFuYWdlcikp
LT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5mZXRjaERhdGEoeyBX
ZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3Rv
cmFnZSB9LCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10oYXV0byBkYXRhUmVjb3JkcykgewotICAg
ICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gc2VjdXJpdHlPcmlnaW5zOwotICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVjb3JkcykgewotICAgICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBkYXRhUmVjb3JkLm9yaWdpbnMpCi0gICAgICAg
ICAgICAgICAgc2VjdXJpdHlPcmlnaW5zLmFwcGVuZChBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUob3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxi
YWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHNlY3VyaXR5T3JpZ2lucykpLnB0
cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1bmN0aW9uIGNhbGxiYWNr
KQordm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwgdm9pZCosIFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5jdGlvbikKIHsKLSAgICBhdXRvJiB3ZWJz
aXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3Jl
UmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3
ZWJzaXRlRGF0YVN0b3JlLmdldExvY2FsU3RvcmFnZURldGFpbHMoW2NvbnRleHQsIGNhbGxiYWNr
XShhdXRvJiYgZGV0YWlscykgewotICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4g
cmVzdWx0OwotICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkZXRhaWxzLnNp
emUoKSk7Ci0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkZXRhaWwgOiBkZXRhaWxzKSB7Ci0g
ICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSTo6T2JqZWN0Pj4gZGV0YWlsTWFw
OwotICAgICAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKGRldGFpbC5vcmlnaW5JZGVudGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0K
LSAgICAgICAgICAgIGRldGFpbE1hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ckdldE9yaWdpbktleSgpKS0+c3RyaW5nKCksIG9yaWdpbik7Ci0gICAgICAgICAgICBpZiAoZGV0
YWlsLmNyZWF0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxNYXAuc2V0KHRvSW1wbChX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBB
UEk6OkRvdWJsZTo6Y3JlYXRlKGRldGFpbC5jcmVhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2No
KCkudmFsdWUoKSkpOwotICAgICAgICAgICAgaWYgKGRldGFpbC5tb2RpZmljYXRpb25UaW1lKQot
ICAgICAgICAgICAgICAgIGRldGFpbE1hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3Jl
YXRlKGRldGFpbC5tb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkp
KTsKLQotICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChBUEk6OkRpY3Rpb25hcnk6
OmNyZWF0ZShXVEZNb3ZlKGRldGFpbE1hcCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxi
YWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdCkpLnB0cigpKSwgbnVs
bHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5
VmFsdWVTdG9yYWdlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pCit2b2lkIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmKQogewotICAgIGF1dG8mIHdlYnNp
dGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVS
ZWY+KGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIFdl
YnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURh
dGFUeXBlOjpMb2NhbFN0b3JhZ2UsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRh
dGEoKSk7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFn
ZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKLSAgICB3ZWJzaXRl
RGF0YVN0b3JlLnJlbW92ZURhdGEoeyBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vi
c2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSB9LCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsK
IH0KIAotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKQordm9pZCBXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlclJlZikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJw
cmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSkt
PndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEoeyBX
ZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3Rv
cmFnZSB9LCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtdIHsgfSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXIuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDMwICsy
NywzMSBAQAogI2RlZmluZSBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJfaAogCiAjaW5jbHVkZSA8
V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lm
ZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi1XS19FWFBPUlQgV0tUeXBl
SUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlEKCk7CitXS19FWFBPUlQgV0tUeXBl
SUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlEKCkgV0tfQ19BUElfREVQUkVDQVRF
RDsKIAogLyogVmFsdWUgdHlwZTogV0tTZWN1cml0eU9yaWdpblJlZiAqLwotV0tfRVhQT1JUIFdL
U3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpOworV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpIFdL
X0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5cGU6IFdLRG91YmxlUmVmLCBzZWNvbmRz
IHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpOworV0tfRVhQT1JUIFdL
U3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpIFdL
X0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5cGU6IFdLRG91YmxlUmVmLCBzZWNvbmRz
IHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKTsKK1dLX0VYUE9S
VCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1l
S2V5KCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uKShXS0FycmF5UmVm
LCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zRnVuY3Rpb24gZnVuY3Rpb24pOworV0tf
RVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3Jp
Z2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwg
dm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdl
T3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiB0eXBlZGVm
IHZvaWQgKCpXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
RnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdLRXJyb3JSZWYsIHZvaWQqKTsKLVdLX0VYUE9SVCB2b2lk
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4oV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRl
eHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5j
dGlvbiBmdW5jdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24gZnVuY3Rpb24pIFdLX0NfQVBJX0RF
UFJFQ0FURUQ7CiAKLVdLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0
ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3Rv
cmFnZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKTsKLVdLX0VYUE9SVCB2b2lk
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpOworV0tfRVhQT1JUIHZvaWQgV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJl
ZiBvcmlnaW4pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CitXS19FWFBPUlQgdm9pZCBXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVz
b3VyY2VDYWNoZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNjcgKzI2LDE5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oIgogCi0jaW5jbHVkZSAiQVBJQXJy
YXkuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSAiV0tBUElD
YXN0LmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNvcmQuaCIKLQotdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKLQogV0tUeXBlSUQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldFR5cGVJRCgpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7Ci19Ci0K
LXN0YXRpYyBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZXMoV0tS
ZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikKLXsKLSAgICBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzIHsgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlD
YWNoZSB9OwotCi0gICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gV0tSZXNvdXJjZUNhY2hlc1RvQ2xl
YXJBbGwpCi0gICAgICAgIHdlYnNpdGVEYXRhVHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlz
a0NhY2hlKTsKLQotICAgIHJldHVybiB3ZWJzaXRlRGF0YVR5cGVzOworICAgIHJldHVybiAwOwog
fQogCi12b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMoV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFjaykKK3ZvaWQgV0tSZXNv
dXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVm
LCB2b2lkKiwgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uKQog
ewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxX
S1dlYnNpdGVEYXRhU3RvcmVSZWY+KGNhY2hlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7
Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5mZXRjaERhdGEodG9XZWJzaXRlRGF0YVR5cGVzKFdLUmVz
b3VyY2VDYWNoZXNUb0NsZWFyQWxsKSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdKGF1dG8gZGF0
YVJlY29yZHMpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5
T3JpZ2luczsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29y
ZHMpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5v
cmlnaW5zKQotICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy5hcHBlbmQoQVBJOjpTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShzZWN1
cml0eU9yaWdpbnMpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwotICAgIH0pOwogfQogCi12
b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5hZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwg
V0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikKK3ZvaWQgV0tSZXNvdXJjZUNh
Y2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4oV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiwg
V0tTZWN1cml0eU9yaWdpblJlZiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgYXV0
byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURh
dGFTdG9yZVJlZj4oY2FjaGVNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLQotICAgIFZl
Y3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gZGF0YVJlY29yZHM7Ci0KLSAgICB7Ci0gICAgICAgIFdl
YnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNp
dGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigp
LmRhdGEoKSk7Ci0KLSAgICAgICAgZGF0YVJlY29yZHMuYXBwZW5kKGRhdGFSZWNvcmQpOwotICAg
IH0KLQotICAgIGlmIChjYWNoZXNUb0NsZWFyID09IFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyQWxs
KSB7Ci0gICAgICAgIFdlYnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgICAgIGRhdGFS
ZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCB0b0ltcGwob3JpZ2luKS0+c2Vj
dXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotCi0gICAgICAgIGRhdGFSZWNvcmRzLmFwcGVuZChkYXRh
UmVjb3JkKTsKLSAgICB9Ci0KLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEodG9XZWJz
aXRlRGF0YVR5cGVzKGNhY2hlc1RvQ2xlYXIpLCBkYXRhUmVjb3JkcywgW10geyB9KTsKIH0KIAot
dm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFsbE9yaWdpbnMoV0tSZXNv
dXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFy
IGNhY2hlc1RvQ2xlYXIpCit2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9y
QWxsT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmLCBXS1Jlc291cmNlQ2FjaGVzVG9D
bGVhcikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0
X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihjYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFT
dG9yZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YSh0b1dlYnNpdGVEYXRhVHlw
ZXMoY2FjaGVzVG9DbGVhciksIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW10geyB9KTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyX2gKIAogI2luY2x1ZGUg
PFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CiAKICNp
ZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0zOCwxMyArMzksMTMgQEAgZW51bSB7
CiB9OwogdHlwZWRlZiB1aW50MzJfdCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhcjsKIAotV0tfRVhQ
T1JUIFdLVHlwZUlEIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRUeXBlSUQoKTsKK1dLX0VYUE9S
VCBXS1R5cGVJRCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0VHlwZUlEKCkgV0tfQ19BUElfREVQ
UkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hl
T3JpZ2luc0Z1bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBP
UlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zKFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJSZWYgY29udGV4dFJlZiwgdm9pZCogY29udGV4dCwgV0tSZXNvdXJjZUNhY2hl
TWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lk
IFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFu
YWdlclJlZiBjb250ZXh0UmVmLCB2b2lkKiBjb250ZXh0LCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2Vy
R2V0Q2FjaGVPcmlnaW5zRnVuY3Rpb24gZnVuY3Rpb24pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAK
LVdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2lu
KFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5nZXIsIFdLU2VjdXJpdHlPcmlnaW5S
ZWYgb3JpZ2luLCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKTsKLVdLX0VY
UE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhX
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwgV0tSZXNvdXJjZUNhY2hlc1Rv
Q2xlYXIgY2FjaGVzVG9DbGVhcik7CitXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyQ2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFu
Z2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIg
Y2FjaGVzVG9DbGVhcikgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lkIFdLUmVz
b3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVN
YW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9D
bGVhcikgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAKICNpbmNsdWRlICJXS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCIKIAogI2luY2x1
ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1
ZGUgIkFQSUhUVFBDb29raWVTdG9yZS5oIgogI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mu
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKQEAgLTQxLDI5ICs0MSwzMCBAQAogI2luY2x1ZGUg
IldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0Fn
Z3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIFdLVHlwZUlEIFdLV2Vic2l0ZURh
dGFTdG9yZUdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OkFQSVR5cGUpOwogfQogCiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
V0tXZWJzaXRlRGF0YVN0b3JlR2V0RGVmYXVsdERhdGFTdG9yZSgpCiB7Ci0gICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRy
KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpKTsKIH0KIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdL
V2Vic2l0ZURhdGFTdG9yZUNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKQogewotICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNp
c3RlbnREYXRhU3RvcmUoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKS5sZWFrUmVmKCkp
OwogfQogCiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlV2l0
aENvbmZpZ3VyYXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblJlZiBjb25maWd1
cmF0aW9uKQogewogICAgIGF1dG8gc2Vzc2lvbklEID0gV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJh
dGlvbiktPmlzUGVyc2lzdGVudCgpID8gUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlUGVyc2lzdGVu
dFNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlRXBoZW1lcmFsU2Vzc2lvbklE
KCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3Jl
YXRlKCpXZWJLaXQ6OnRvSW1wbChjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKS5sZWFrUmVmKCkp
OworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNy
ZWF0ZSgqV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJhdGlvbiksIHNlc3Npb25JRCkubGVha1JlZigp
KTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZSkK
QEAgLTgzLDEzICs4NCwxMyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9h
ZFN0CiAKIFdLSFRUUENvb2tpZVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUdldEhUVFBDb29r
aWVTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKQogewotICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5odHRwQ29va2ll
U3RvcmUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPmNvb2tpZVN0b3JlKCkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVXaXRoQ29tcGxldGlvbkhhbmRsZXIoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWJ1Z01vZGVGdW5jdGlvbiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGVuYWJsZSwgW2NvbnRleHQsIGNvbXBsZXRpb25I
YW5kbGVyXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGUsIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
cl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsKICNlbHNl
CkBAIC0xMDAsNyArMTAxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc0RlYnVnTW9kZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdN
b2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQs
IGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMTEwLDcg
KzExMSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3QKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGRvdWJsZSBzZWNvbmRzLCB2b2lk
KiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzTGFzdFNlZW5GdW5jdGlvbiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXRMYXN0U2VlbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFNl
Y29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldExhc3RTZWVuKFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQs
IGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQp
OwogICAgIH0pOwogI2Vsc2UKQEAgLTEyMSw3ICsxMjIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NMYXN0CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3Rp
Y3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0
YVN0b3JlKCk7CisgICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZhbHVlKQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3Jl
LnNldFByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CkBAIC0xMzksNyArMTQwLDcg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldgogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVz
b3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byYgd2Vic2l0
ZURhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZh
bHVlKQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlLnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21w
bGV0aW9uSGFuZGxlcl0gewpAQCAtMTU3LDcgKzE1OCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1ZlcnkKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlRHVtcFJlc291cmNl
TG9hZFN0YXRpc3RpY3MoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3NGdW5j
dGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kdW1w
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbY29udGV4dCwgY2FsbGJhY2tdIChjb25zdCBTdHJpbmcm
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbY29udGV4dCwgY2FsbGJhY2tdIChjb25z
dCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKICAgICAgICAgY2FsbGJhY2soV2Vi
S2l0Ojp0b0FQSShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmltcGwoKSksIGNvbnRleHQpOwogICAg
IH0pOwogI2Vsc2UKQEAgLTE2OCw3ICsxNjksNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUR1
bXBSZXNvdXJjZUxvYWRTCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJz
aXRlRGF0YVN0b3JlKCkuaXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ByZXZhbGVu
dFJlc291cmNlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNQcmV2YWxl
bnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKSB7CiAgICAgICAgIGNh
bGxiYWNrKGlzUHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAg
LTE3OSw3ICsxODAsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZh
CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJj
ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmlzVmVyeVByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzVmVyeVByZXZhbGVudFJl
c291cmNlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsKICAgICAg
ICAgY2FsbGJhY2soaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwog
I2Vsc2UKQEAgLTE5MCw3ICsxOTEsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRB
c1N1YnJlc291cmNlVW5kZXIoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tT
dHJpbmdSZWYgc3VicmVzb3VyY2VIb3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXJGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChzdWJyZXNvdXJjZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJv
b2wgaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNr
XShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikgewogICAgICAgICBjYWxsYmFj
ayhpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIsIGNvbnRleHQpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTIwMSw3ICsyMDIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1
YkZyYW1lVW5kZXIoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgc3ViRnJhbWVIb3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXJG
dW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5p
c1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJG
cmFtZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVI
b3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNT
dWJGcmFtZVVuZGVyKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNSZWdp
c3RlcmVkQXNTdWJGcmFtZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVI
b3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJh
bWVVbmRlcikgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIs
IGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIxMiw3ICsyMTMsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlz
U3RhdGlzdGljc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tLCBXS1N0cmluZ1Jl
ZiBob3N0UmVkaXJlY3RlZFRvLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0
YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGlu
Z1RvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmco
KSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8p
IHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5pc1JlZ2lzdGVyZWRBc1JlZGly
ZWN0aW5nVG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5z
dHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbykgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8sIGNv
bnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIyMyw3ICsyMjQsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNv
bXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgYXV0byYgZGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIGRhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZhbHVlKQogICAgICAgICBkYXRhU3RvcmUubG9nVXNl
ckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CkBAIC0yNDEsNyArMjQyLDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSAogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlSXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uRnVuY3Rpb24gY2FsbGJh
Y2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaGFzSGFkVXNlckludGVy
YWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbikgeworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBo
YXNIYWRVc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSGFkVXNlckludGVy
YWN0aW9uLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yNTIsMTQgKzI1MywxNCBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hhc0hhCiB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0R3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIHZhbHVlLCBbXSB7IH0pOworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldEdyYW5kZmF0aGVyZWQoVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCB2YWx1ZSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZEZ1bmN0aW9uIGNh
bGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhhc0hhZFVzZXJJ
bnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc0dyYW5kZmF0aGVyZWQpIHsKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNH
cmFuZGZhdGhlcmVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzR3JhbmRmYXRoZXJlZCwgY29udGV4
dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMjcwLDQ5ICsyNzEsNDkgQEAgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NHcmFuZAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCkK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9
KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9
KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0KQogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbXSB7IH0pOwor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbXSB7IH0p
OwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKQogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW10geyB9KTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtdIHsg
fSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKQog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSks
IFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0U3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3Ry
aW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0
cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0
ZWRUbykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkp
LCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSks
IFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
KSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkp
LCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJv
bSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0RnJvbShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkp
LCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJp
bmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBmcm9tSG9zdCwgV0tTdHJpbmdSZWYgdG9I
b3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NT
aXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRp
b25Gb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoZnJvbUhvc3QpLT5zdHJpbmco
KSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9Ib3N0KS0+c3RyaW5nKCkpLCBbY29udGV4
dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRDcm9z
c1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGZyb21Ib3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRv
SG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNr
KGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTMyMyw3ICszMjQsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDcm9zCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNh
bGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFRpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNr
XSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0VGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbihTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAg
ICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMzM0LDcgKzMzNSw3
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWUKIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNGdW5jdGlv
biBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVs
ZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoW2NvbnRleHQsIGNhbGxiYWNrXSB7
CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1bGVTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHNQcm9jZXNzaW5nKFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxs
YmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0zNDUsNyArMzQ2LDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vzcwogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Vw
ZGF0ZUNvb2tpZUJsb2NraW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShb
Y29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdKCkgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbnRleHQsIGNvbXBsZXRp
b25IYW5kbGVyXSgpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAg
fSk7CiAjZWxzZQpAQCAtMzU2LDIxICszNTcsMjEgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzVXBkYXRlQwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzU3VibWl0
VGVsZW1ldHJ5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc3VibWl0VGVsZW1ldHJ5KCk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c3VibWl0VGVsZW1ldHJ5KCk7CiAjZW5kaWYKIH0KIAog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJl
Y29yZHNXZXJlU2Nhbm5lZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29s
IHZhbHVlKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUsIFtdIHsgfSk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZCh2YWx1ZSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Rlc3QodmFsdWUsIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KHZhbHVl
LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAg
fSk7CiAjZWxzZQpAQCAtMzgxLDQ5ICszODIsNDkgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzSXNSdQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hv
dWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNv
cmRzUmVtb3ZhbCh2YWx1ZSwgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFs
KHZhbHVlLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZCh2YWx1ZSwgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNl
dE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKHZhbHVlLCBbXSgpIHsgfSk7CiAj
ZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTWluaW11bVRp
bWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIGRvdWJsZSBzZWNvbmRzKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHsgc2Vj
b25kcyB9LCBbXSgpIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0
TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMgeyBzZWNvbmRzIH0s
IFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgZG91YmxlIHNlY29uZHMpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtdKCkgeyB9KTsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vj
b25kcyB7IHNlY29uZHMgfSwgW10oKSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc01heFN0YXRpc3RpY3NFbnRyaWVzKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVkIGVudHJpZXMpCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TWF4U3RhdGlzdGljc0VudHJpZXMoZW50cmllcywgW10o
KSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE1heFN0YXRpc3Rp
Y3NFbnRyaWVzKGVudHJpZXMsIFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcnVuZUVudHJpZXNEb3duVG8oV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgdW5zaWduZWQgZW50cmllcykKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQcnVuZUVudHJpZXNEb3duVG8oZW50cmllcywgW10oKSB7
IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFBydW5lRW50cmllc0Rv
d25UbyhlbnRyaWVzLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZUZ1bmN0aW9uIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6
OlllcywgW2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdlYktpdDo6U2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAg
ICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTQzNCw3ICs0MzUsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZp
ZWRTaW5jZUhvdXJzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVk
IGhvdXJzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vyc0Z1bmN0aW9uIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWU6Om5vdygpIC0gU2Vjb25kczo6ZnJvbUhvdXJz
KGhvdXJzKSwgV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6OlllcywgW2NvbnRl
eHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lOjpub3coKSAtIFNlY29uZHM6
OmZyb21Ib3Vycyhob3VycyksIFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZ
ZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwog
ICAgIH0pOwogI2Vsc2UKQEAgLTQ0NSw3ICs0NDYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NDbGVhckluCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVh
clRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhy
b3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNl
dDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGlt
ZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhj
b250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTQ1Myw3ICs0NTQsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NDbGVhclRoCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NEZWxldGVDb29raWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVz
dGluZ0Z1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgW2NvbnRleHQsIGNhbGxiYWNr
XSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZGVsZXRlQ29va2llc0ZvclRl
c3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBpbmNsdWRl
SHR0cE9ubHlDb29raWVzLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2so
Y29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNDY0LDcgKzQ2NSw3IEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUMKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc0hhc0xvY2FsU3RvcmFnZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0
aXN0aWNzSGFzTG9jYWxTdG9yYWdlRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuaGFzTG9jYWxTdG9yYWdlRm9yVGVzdGluZyhVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9v
bCBoYXNMb2NhbFN0b3JhZ2UpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5o
YXNMb2NhbFN0b3JhZ2VGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhhc0xvY2FsU3RvcmFnZSkgewog
ICAgICAgICBjYWxsYmFjayhoYXNMb2NhbFN0b3JhZ2UsIGNvbnRleHQpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTQ3NSw3ICs0NzYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NI
YXNMb2NhCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNh
cChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcywgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2Fw
RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29uZHMg
fSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29u
ZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwog
ICAgIH0pOwogI2Vsc2UKQEAgLTQ4Niw3ICs0ODcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NDYWNoCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJ
c29sYXRlZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJp
bmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hh
c0lzb2xhdGVkU2Vzc2lvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLmhhc0lzb2xhdGVkU2Vzc2lvbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wg
aGFzSXNvbGF0ZWRTZXNzaW9uKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
aGFzSXNvbGF0ZWRTZXNzaW9uRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNJc29sYXRlZFNlc3Np
b24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSXNvbGF0ZWRTZXNzaW9uLCBjb250ZXh0KTsKICAg
ICB9KTsKICNlbHNlCkBAIC01MDEsNyArNTAyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzUmVzZXRUbwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAg
ICB9KTsKIAotICAgIGF1dG8mIHN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHN0b3JlID0gKldlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZik7CiAgICAgc3RvcmUuY2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzSW5XZWJQ
cm9jZXNzZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVm
KCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0g
eyB9KTsKICAgICBzdG9yZS5yZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9y
VGVzdGluZyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0geyB9KTsKQEAgLTUxNiw3ICs1MTcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NSZXNldFRvCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spCiB7
CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJL
aXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRp
bWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5
KCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAg
ICB9KTsKIH0KQEAgLTUyOCw3ICs1MjksNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92
ZUZldGNoQ2FjaGVGCiAgICAgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFS
ZWNvcmRzID0geyBXVEZNb3ZlKGRhdGFSZWNvcmQpIH07CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpE
T01DYWNoZTsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIGRhdGFSZWNvcmRzLCBbY29udGV4dCwgY2FsbGJh
Y2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFU
eXBlcywgZGF0YVJlY29yZHMsIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFj
ayhjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTUzNiw3ICs1MzcsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92
ZUFsbEluZGV4ZWREYXRhYmFzZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
dm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNl
c0NhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlczsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQs
IGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0
YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7
CiAgICAgaWYgKGNhbGxiYWNrKQogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsK
QEAgLTU0NSw3ICs1NDYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4
ZWRECiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVSZW1vdmVMb2NhbFN0b3JhZ2VDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8
V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFU
eXBlOjpMb2NhbFN0b3JhZ2U7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5
KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0
LCBjYWxsYmFja10gewogICAgICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgICAgICBjYWxsYmFj
ayhjb250ZXh0KTsKICAgICB9KTsKQEAgLTU1NSw3ICs1NTYsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zOwotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRh
dGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdh
bGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJh
Y2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTY2LDcgKzU2Nyw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVcKIAogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVHZXRGZXRjaENhY2hlT3JpZ2lucyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlT3JpZ2luc0Z1
bmN0aW9uIGNhbGxiYWNrKQogewotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNh
Y2hlLCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0YVJlY29yZHMpIHsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6OkRPTUNhY2hlLCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0YVJlY29y
ZHMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2lu
czsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsK
ICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5z
KQpAQCAtNTgwLDcgKzU4MSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNo
ZVNpemUKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBm
ZXRjaE9wdGlvbnMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXpl
czsKIAotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KS5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBmZXRjaE9wdGlv
bnMsIFtvcmlnaW4sIGNvbnRleHQsIGNhbGxiYWNrXSAoYXV0byBkYXRhUmVjb3JkcykgeworICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmZldGNoRGF0YShXZWJLaXQ6OldlYnNpdGVE
YXRhVHlwZTo6RE9NQ2FjaGUsIGZldGNoT3B0aW9ucywgW29yaWdpbiwgY29udGV4dCwgY2FsbGJh
Y2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CiAgICAgICAgIGF1dG8gb3JpZ2luRGF0YSA9IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFdlYktpdDo6dG9JbXBsKG9yaWdp
biktPnN0cmluZygpKS0+ZGF0YSgpOwogICAgICAgICBmb3IgKGF1dG8mIGRhdGFSZWNvcmQgOiBk
YXRhUmVjb3JkcykgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWNvcmRPcmlnaW4g
OiBkYXRhUmVjb3JkLm9yaWdpbnMpIHsKQEAgLTU5NywyMyArNTk4LDIzIEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemUKIAogV0tTdHJpbmdSZWYgV0tXZWJzaXRlRGF0
YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQ
SShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0Nv
cGllZEFQSShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSkK
IHsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShXZWJLaXQ6OnRvSW1wbChzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KS0+c3RyaW5nKCkpOworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkoV2ViS2l0Ojp0b0ltcGwoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSktPnN0
cmluZygpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmlnaW5TdG9yYWdl
UXVvdGEoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdWludDY0X3QgcXVvdGEp
CiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnNldFBlck9yaWdpblN0b3JhZ2VRdW90YShxdW90YSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+c2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKHF1b3RhKTsKIH0KIAogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsbERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbnMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKICNpZiBFTkFCTEUoREVWSUNFX09S
SUVOVEFUSU9OKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRh
U3RvcmUoKS5kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIoKS5jbGVh
clBlcm1pc3Npb25zKCk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZGV2aWNl
T3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKCkuY2xlYXJQZXJtaXNzaW9ucygp
OwogI2VuZGlmCiB9CiAKQEAgLTcxMywxNCArNzE0LDE0IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0V2ViQXV0aGVudGljYXQKICAgICAgICAgY29uZmlndXJhdGlvbi5uZmMgPSBXVEZNb3Zl
KG5mYyk7CiAgICAgfQogCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV1RGTW92
ZShjb25maWd1cmF0aW9uKSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJp
YnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBZENsaWNr
QXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQog
ewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2Vi
S2l0OjpXZWJzaXRlRGF0YVR5cGU6OkFkQ2xpY2tBdHRyaWJ1dGlvbnM7Ci0gICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5
cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHJldmlzaW9uIDI0
OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiV0tXZWJz
aXRlUG9saWNpZXMuaCIKIAogI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJB
UElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgogI2luY2x1ZGUgIldL
RGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV2Vic2l0
ZURhdGFTdG9yZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRl
RGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2Vic2l0ZURh
dGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3VybFByb3h5U2V0dGluZ3MuaD4KICNpbmNs
dWRlIDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5o
PgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRh
U3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShyZXZpc2lvbiAyNDk3MzIpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCShub25leGlzdGVudCkKQEAgLTEsMTk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotCi0j
aW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2luY2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMu
aCIKLSNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLSNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbXBvcnQgPFdlYkNvcmUv
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIEFQSSB7Ci0K
LU5TU3RyaW5nICpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJEYXRhYmFz
ZURpcmVjdG9yeSI7Ci1OU1N0cmluZyAqV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0g
QCJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5IjsKLU5TU3RyaW5n
ICpXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdE1lZGlhQ2Fj
aGVEaXJlY3RvcnkiOwotTlNTdHJpbmcgKldlYktpdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlE
ZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSI7Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KCkKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIC8vIFRoaXMgcXVpcmsgdXNlZCB0
byBtYWtlIHRoZXNlIGFwcHMgc2hhcmUgYXBwbGljYXRpb24gY2FjaGUgc3RvcmFnZSwgYnV0IGRv
ZXNuJ3QgYWNjb21wbGlzaCB0aGF0IGFueSBtb3JlLgotICAgIC8vIFByZXNlcnZpbmcgaXQgYXZv
aWRzIHRoZSBuZWVkIHRvIG1pZ3JhdGUgZGF0YSB3aGVuIHVwZ3JhZGluZy4KLSAgICAvLyBGSVhN
RTogSWRlYWxseSB3ZSBzaG91bGQganVzdCBoYXZlIFNhZmFyaSwgV2ViQXBwLCBhbmQgd2ViYm9v
a21hcmtzZCBjcmVhdGUgYSBkYXRhIHN0b3JlIHdpdGgKLSAgICAvLyB0aGlzIGFwcGxpY2F0aW9u
IGNhY2hlIHBhdGgsIGJ1dCB0aGF0J3Mgbm90IHN1cHBvcnRlZCBhcyBvZiByaWdodCBub3cuCi0g
ICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNv
cmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkFwcCgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9u
Ojppc1dlYkJvb2ttYXJrc0QoKSkgewotICAgICAgICBOU1N0cmluZyAqY2FjaGVQYXRoID0gW05T
SG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkv
Q2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJdOwotCi0gICAgICAgIHJldHVybiBXZWJLaXQ6
OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY2FjaGVQYXRoLnN0cmluZ0J5U3RhbmRh
cmRpemluZ1BhdGgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSIpOwot
fQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGly
ZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIkNhY2hlU3RvcmFnZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSIpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCi17
Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlh
Q2FjaGUiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4ZWREQiIpOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKCJTZXJ2aWNlV29ya2VycyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkxvY2FsU3RvcmFnZSIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJNZWRpYUtleXMiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIldlYlNRTCIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Ci19Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIkphdmFTY3JpcHRDb3JlRGVidWciLCBEb250Q3JlYXRlRGlyZWN0b3J5KTsKLX0KLQot
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRl
RGlyZWN0b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hf
b25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKnRlbXBVUkw7Ci0gICAgCi0gICAg
ZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBOU1VSTCAqdXJsID0gW05TVVJM
IGZpbGVVUkxXaXRoUGF0aDpOU1RlbXBvcmFyeURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107
Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgCi0gICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVy
KCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxl
IG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWJ1bmRsZUlk
ZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJ
bmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKLSAgICAgICAgICAgIHVybCA9IFt1cmwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVT
XTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcFVSTCA9IFtbdXJsIFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOwot
ICAgIH0pOwotICAgIAotICAgIE5TVVJMICp1cmwgPSBbdGVtcFVSTCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOwotCi0gICAgaWYgKHNo
b3VsZENyZWF0ZURpcmVjdG9yeSA9PSBDcmVhdGVEaXJlY3RvcnkKLSAgICAgICAgJiYgKCFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRo
SW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJd
KSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVy
bCk7Ci0gICAgCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbjsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgc3Rh
dGljIE5TVVJMICpjYWNoZVVSTDsKLQotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsK
LSAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gVVJM
Rm9yRGlyZWN0b3J5Ok5TQ2FjaGVzRGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sg
YXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07Ci0gICAg
ICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LQotICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7Ci0gICAgICAg
ICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5i
dW5kbGVJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQotICAg
ICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5m
b10ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107Ci0gICAgICAgIH0K
LQotICAgICAgICBjYWNoZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOwotICAgIH0pOwotCi0gICAgTlNVUkwg
KnVybCA9IFtjYWNoZVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFt
ZSBpc0RpcmVjdG9yeTpZRVNdOwotICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVz
OllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKLSAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7Ci0KLSAgICByZXR1cm4gdXJsLmFi
c29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKndlYnNpdGVEYXRh
VVJMOwotCi0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBOU1VSTCAq
dXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNM
aWJyYXJ5RGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JV
Ukw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07Ci0gICAgICAgIGlmICghdXJsKQot
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgICAgICB1cmwg
PSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6
WUVTXTsKLQotICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7Ci0g
ICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVu
ZGxlXS5idW5kbGVJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVy
KQotICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9j
ZXNzSW5mb10ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107Ci0gICAg
ICAgIH0KLQotICAgICAgICB3ZWJzaXRlRGF0YVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07Ci0gICAg
fSk7Ci0KLSAgICBOU1VSTCAqdXJsID0gW3dlYnNpdGVEYXRhVVJMIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107Ci0gICAgaWYgKCFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRo
SW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJd
KQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJs
KTsKLQotICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50
YXRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsMTcgKzEwNSwxNyBAQCBwcml2
YXRlOgogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilkZWZhdWx0RGF0YVN0b3JlCiB7Ci0gICAg
cmV0dXJuIHdyYXBwZXIoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkp
OworICAgIHJldHVybiB3cmFwcGVyKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERh
dGFTdG9yZSgpKTsKIH0KIAogKyAoV0tXZWJzaXRlRGF0YVN0b3JlICopbm9uUGVyc2lzdGVudERh
dGFTdG9yZQogewotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3Jl
YXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcihXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKSk7CiB9CiAKIC0gKHZvaWQp
ZGVhbGxvYwogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5BUEk6OldlYnNpdGVEYXRhU3RvcmU6
On5XZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPldlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKTsKIAogICAgIFtzdXBlciBkZWFsbG9j
XTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCArIChOU1NldCAqKWFsbFdlYnNpdGVEYXRhVHlwZXMK
IAogLSAoV0tIVFRQQ29va2llU3RvcmUgKilodHRwQ29va2llU3RvcmUKIHsKLSAgICByZXR1cm4g
d3JhcHBlcihfd2Vic2l0ZURhdGFTdG9yZS0+aHR0cENvb2tpZVN0b3JlKCkpOworICAgIHJldHVy
biB3cmFwcGVyKF93ZWJzaXRlRGF0YVN0b3JlLT5jb29raWVTdG9yZSgpKTsKIH0KIAogc3RhdGlj
IFdhbGxUaW1lIHRvU3lzdGVtQ2xvY2tUaW1lKE5TRGF0ZSAqZGF0ZSkKQEAgLTE4Niw3ICsxODYs
NyBAQCAtICh2b2lkKWZldGNoRGF0YVJlY29yZHNPZlR5cGVzOihOU1NldCAqCiAtICh2b2lkKXJl
bW92ZURhdGFPZlR5cGVzOihOU1NldCAqKWRhdGFUeXBlcyBtb2RpZmllZFNpbmNlOihOU0RhdGUg
KilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxl
cgogewogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKTsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnJlbW92ZURhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwgdG9TeXN0
ZW1DbG9ja1RpbWUoZGF0ZSA/IGRhdGUgOiBbTlNEYXRlIGRpc3RhbnRQYXN0XSksIFtjb21wbGV0
aW9uSGFuZGxlckNvcHldIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+cmVtb3ZlRGF0YShXZWJL
aXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCB0b1N5c3RlbUNsb2NrVGltZShkYXRl
ID8gZGF0ZSA6IFtOU0RhdGUgZGlzdGFudFBhc3RdKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0g
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkoKTsKICAgICB9KTsKIH0KQEAgLTIwNSw3
ICsyMDUsNyBAQCAtICh2b2lkKXJlbW92ZURhdGFPZlR5cGVzOihOU1NldCAqKWRhdGFUCiB7CiAg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpOwogCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1v
dmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIHRvV2Vic2l0ZURh
dGFSZWNvcmRzKGRhdGFSZWNvcmRzKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0geworICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT5yZW1vdmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRh
dGFUeXBlcyksIHRvV2Vic2l0ZURhdGFSZWNvcmRzKGRhdGFSZWNvcmRzKSwgW2NvbXBsZXRpb25I
YW5kbGVyQ29weV0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkoKTsKICAgICB9KTsK
IH0KQEAgLTI0MCwxMiArMjQwLDEyIEBAICsgKE5TU2V0PE5TU3RyaW5nICo+ICopX2FsbFdlYnNp
dGVEYXRhVHkKIAogKyAoQk9PTClfZGVmYXVsdERhdGFTdG9yZUV4aXN0cwogewotICAgIHJldHVy
biBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCk7
CiB9CiAKICsgKHZvaWQpX2RlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nCiB7Ci0gICAg
cmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRl
c3RpbmcoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVEZWZh
dWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwogfQogCiAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRo
Q29uZmlndXJhdGlvbjooX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKiljb25maWd1
cmF0aW9uCkBAIC0yNTMsNyArMjUzLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZp
Z3VyYXRpb246KAogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgYXV0byBjb25maWcgPSBjb25maWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKSA6
IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOworICAgIGF1
dG8gY29uZmlnID0gY29uZmlndXJhdGlvbi5pc1BlcnNpc3RlbnQgPyBXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkgOiBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKIAogICAgIFJFTEVBU0VfQVNTRVJU
KGNvbmZpZy0+aXNQZXJzaXN0ZW50KCkgPT0gY29uZmlndXJhdGlvbi5pc1BlcnNpc3RlbnQpOwog
CkBAIC0zMTIsNyArMzEyLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRp
b246KAogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBjb25maWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/
IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZVBlcnNpc3RlbnRTZXNzaW9uSUQoKSA6IFBBTDo6U2Vz
c2lvbklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25JRCgpOwogCi0gICAgQVBJOjpPYmplY3Q6
OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OldlYnNpdGVEYXRhU3RvcmU+KHNlbGYsIFdURk1vdmUo
Y29uZmlnKSwgc2Vzc2lvbklEKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVy
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4oc2VsZiwgV1RGTW92ZShjb25maWcpLCBzZXNzaW9u
SUQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0zMjUsNyArMzI1LDcgQEAgLSAodm9pZClf
ZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0PAogICAgIGlmIChvcHRpb25zICYgX1dLV2Vi
c2l0ZURhdGFTdG9yZUZldGNoT3B0aW9uQ29tcHV0ZVNpemVzKQogICAgICAgICBmZXRjaE9wdGlv
bnMuYWRkKFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKTsKIAot
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZmV0Y2hEYXRhKFdlYktp
dDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIGZldGNoT3B0aW9ucywgW2NvbXBsZXRp
b25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXJDb3B5KV0oYXV0byB3ZWJz
aXRlRGF0YVJlY29yZHMpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+ZmV0Y2hEYXRhKFdlYktp
dDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIGZldGNoT3B0aW9ucywgW2NvbXBsZXRp
b25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXJDb3B5KV0oYXV0byB3ZWJz
aXRlRGF0YVJlY29yZHMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGVs
ZW1lbnRzOwogICAgICAgICBlbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHdlYnNpdGVE
YXRhUmVjb3Jkcy5zaXplKCkpOwogCkBAIC0zMzgsMTggKzMzOCwxOCBAQCAtICh2b2lkKV9mZXRj
aERhdGFSZWNvcmRzT2ZUeXBlczooTlNTZXQ8CiAKIC0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gX3dl
YnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7CiB9CiAKIC0g
KHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKIHsK
LSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKIH0KIAogLSAoQk9PTClfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOworICAgIHJldHVybiBfd2Vi
c2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOwogI2Vsc2UK
ICAgICByZXR1cm4gTk87CiAjZW5kaWYKQEAgLTM1OCw3ICszNTgsNyBAQCAtIChCT09MKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlCiAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGVidWdNb2RlOihCT09MKWVuYWJsZWQKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGVkKTsKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGVkKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBAIC0zNjYsMTA2ICsz
NjYsMTA2IEBAIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z00KIAogLSAo
TlNVSW50ZWdlcilfcGVyT3JpZ2luU3RvcmFnZVF1b3RhCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRl
RGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7Cisg
ICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5wZXJPcmlnaW5TdG9yYWdlUXVvdGEoKTsKIH0K
IAogLSAodm9pZClfc2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhOihOU1VJbnRlZ2VyKXNpemUKIHsK
LSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFBlck9yaWdpblN0
b3JhZ2VRdW90YShzaXplKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UGVyT3JpZ2luU3Rv
cmFnZVF1b3RhKHNpemUpOwogfQogCiAtIChOU1N0cmluZyAqKV9jYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5j
YWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmNh
Y2hlU3RvcmFnZURpcmVjdG9yeSgpOwogfQogCiAtICh2b2lkKV9zZXRDYWNoZVN0b3JhZ2VEaXJl
Y3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAg
ICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7
CiB9CiAKIC0gKE5TU3RyaW5nICopX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkK
IHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0
YVN0b3JlLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CiB9CiAKIC0gKHZv
aWQpX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6KE5TU3RyaW5nICopZGly
ZWN0b3J5CiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgX3dlYnNp
dGVEYXRhU3RvcmUtPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoZGlyZWN0
b3J5KTsKIH0KIAogLSAodm9pZClfc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOihOU1N0cmlu
ZyAqKWlkZW50aWZpZXIKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKGlkZW50aWZpZXIpOwogfQog
CiAtIChOU1N0cmluZyAqKV9ib3VuZEludGVyZmFjZUlkZW50aWZpZXIKIHsKLSAgICByZXR1cm4g
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5ib3VuZEludGVyZmFjZUlkZW50
aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmJvdW5kSW50ZXJmYWNlSWRl
bnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRBbGxvd3NDZWxsdWxhckFjY2VzczooQk9PTClh
bGxvd3MKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEFs
bG93c0NlbGx1bGFyQWNjZXNzKGFsbG93cyA/IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6
OlllcyA6IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6Ok5vKTsKKyAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+c2V0QWxsb3dzQ2VsbHVsYXJBY2Nlc3MoYWxsb3dzID8gV2ViS2l0OjpBbGxvd3ND
ZWxsdWxhckFjY2Vzczo6WWVzIDogV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6Tm8pOwog
fQogCiAtIChCT09MKV9hbGxvd3NDZWxsdWxhckFjY2VzcwogewotICAgIHJldHVybiBfd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmFsbG93c0NlbGx1bGFyQWNjZXNzKCkgPT0g
V2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzOworICAgIHJldHVybiBfd2Vic2l0ZURh
dGFTdG9yZS0+YWxsb3dzQ2VsbHVsYXJBY2Nlc3MoKSA9PSBXZWJLaXQ6OkFsbG93c0NlbGx1bGFy
QWNjZXNzOjpZZXM7CiB9CiAKIC0gKHZvaWQpX3NldFByb3h5Q29uZmlndXJhdGlvbjooTlNEaWN0
aW9uYXJ5ICopY29uZmlndXJhdGlvbgogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuc2V0UHJveHlDb25maWd1cmF0aW9uKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlS
ZWYpY29uZmlndXJhdGlvbik7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFByb3h5Q29uZmln
dXJhdGlvbigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNvbmZpZ3VyYXRpb24pOwogfQogCiAt
IChOU1N0cmluZyAqKV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIKIHsKLSAgICBy
ZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnNv
dXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRTb3Vy
Y2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcgogewot
ICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTb3VyY2VB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgaWYgKCFfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGlkZW50aWZp
ZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1h
dDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgY2Fubm90IGJlIGNhbGxl
ZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJdOwogfQogCiAtIChOU1N0cmluZyAqKV9zb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVE
YXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlk
ZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnNvdXJjZUFwcGxpY2F0
aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRTb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcgogewotICAgIGlm
ICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgaWYgKCFfd2Vic2l0ZURh
dGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKGlkZW50aWZp
ZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1h
dDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgY2Fubm90IGJlIGNh
bGxlZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJdOwogfQogCiAtICh2b2lkKV9zZXRBbGxv
d3NUTFNGYWxsYmFjazooQk9PTClhbGxvd3MKIHsKLSAgICBpZiAoIV93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0QWxsb3dzVExTRmFsbGJhY2soYWxsb3dzKSkKKyAgICBp
ZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRBbGxvd3NUTFNGYWxsYmFjayhhbGxvd3MpKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1hdDpAIl9zZXRB
bGxvd3NUTFNGYWxsYmFjayBjYW5ub3QgYmUgY2FsbGVkIGFmdGVyIG5ldHdvcmtpbmcgaGFzIGJl
Z3VuIl07CiB9CiAKIC0gKEJPT0wpX2FsbG93c1RMU0ZhbGxiYWNrCiB7Ci0gICAgcmV0dXJuIF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJhY2soKTsK
KyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmFsbG93c1RMU0ZhbGxiYWNrKCk7CiB9CiAK
IC0gKE5TRGljdGlvbmFyeSAqKV9wcm94eUNvbmZpZ3VyYXRpb24KIHsKLSAgICByZXR1cm4gKF9f
YnJpZGdlIE5TRGljdGlvbmFyeSAqKV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucHJveHlDb25maWd1cmF0aW9uKCk7CisgICAgcmV0dXJuIChfX2JyaWRnZSBOU0RpY3Rpb25h
cnkgKilfd2Vic2l0ZURhdGFTdG9yZS0+cHJveHlDb25maWd1cmF0aW9uKCk7CiB9CiAKIC0gKE5T
VVJMICopX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5CiB7Ci0gICAgcmV0dXJuIFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6X3dlYnNpdGVEYXRhU3RvcmUtPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpfd2Vic2l0ZURhdGFTdG9yZS0+Y29uZmlndXJhdGlvbigpLmluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAogLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NldFNob3VsZFN1Ym1pdFRlbGVtZXRyeTooQk9PTCl2YWx1ZQogewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAg
ICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCk7CiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00ODAsMTMgKzQ4MCwx
MyBAQCAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChjYWxsYmFjaykgewotICAgICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soW2NhbGxiYWNr
ID0gbWFrZUJsb2NrUHRyKGNhbGxiYWNrKSwgc2VsZl0oY29uc3QgU3RyaW5nJiBldmVudCkgewor
ICAgICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhb
Y2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoY2FsbGJhY2spLCBzZWxmXShjb25zdCBTdHJpbmcmIGV2
ZW50KSB7CiAgICAgICAgICAgICBjYWxsYmFjayhzZWxmLCBldmVudCk7CiAgICAgICAgIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKG51bGxwdHIpOworICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT5zZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKG51bGxwdHIpOwog
I2VuZGlmCiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNj
ZXNzRW50cmllc0ZvcjooCiAgICAgfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKHdlYlBhZ2VQcm94eS0+aWRlbnRpZmllcigpLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGRvbWFpbnMp
IHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMod2Vi
UGFnZVByb3h5LT5pZGVudGlmaWVyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZG9tYWlucykgewogICAgICAgICBWZWN0b3I8UmVm
UHRyPEFQSTo6T2JqZWN0Pj4gYXBpRG9tYWluczsKICAgICAgICAgYXBpRG9tYWlucy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGRvbWFpbnMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBkb21h
aW4gOiBkb21haW5zKQpAQCAtNTI0LDcgKzUyNCw3IEBAIC0gKHZvaWQpX2dldEFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzRm9yOigKIC0gKHZvaWQpX3NjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGU6
KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUt
PnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTM1LDcgKzUzNSw3IEBAIC0gKHZvaWQpX3NjaGVkdWxl
Q29va2llQmxvY2tpbmdVcGRhdGU6KHYKIC0gKHZvaWQpX3NldFByZXZhbGVudERvbWFpbjooTlNV
UkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25I
YW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFByZXZhbGVudFJlc291cmNlKFVS
TChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UHJldmFsZW50UmVzb3VyY2Uo
VVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTU0Niw3ICs1NDYsNyBAQCAtICh2b2lkKV9zZXRQcmV2YWxlbnREb21haW46KE5TVVJM
ICopZG9tCiAtICh2b2lkKV9nZXRJc1ByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb21haW4gY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZW5h
YmxlZCkgeworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChk
b21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXShib29sIGVuYWJsZWQpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW5hYmxlZCk7
CiAgICAgfSk7CiAjZWxzZQpAQCAtNTU3LDcgKzU1Nyw3IEBAIC0gKHZvaWQpX2dldElzUHJldmFs
ZW50RG9tYWluOihOU1VSTCAqKWQKIC0gKHZvaWQpX2NsZWFyUHJldmFsZW50RG9tYWluOihOU1VS
TCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhh
bmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShV
UkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3Vy
Y2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwog
I2Vsc2UKQEAgLTU2OCw3ICs1NjgsNyBAQCAtICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbjoo
TlNVUkwgKilkCiAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOih2b2lk
ICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5z
Y2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVE
YXRhU3RvcmUtPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhbY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKICNlbHNlCkBAIC01NzgsMTggKzU3
OCwxOCBAQCAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzCiAKIC0gKGJv
b2wpX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyCiB7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMoV2ViQ29yZTo6c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGFiYXNlRmls
ZW5hbWUoX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhXZWJDb3JlOjpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShf
d2Vic2l0ZURhdGFTdG9yZS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7
CiB9CiAKIC0gKGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+KV9kZWxlZ2F0ZQogewot
ICAgIHJldHVybiBfZGVsZWdhdGUuZ2V0KCk7CisgICAgcmV0dXJuIF9kZWxlZ2F0ZS5nZXQoKS5n
ZXQoKTsKIH0KIAogLSAodm9pZClzZXRfZGVsZWdhdGU6KGlkIDxfV0tXZWJzaXRlRGF0YVN0b3Jl
RGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgX3dl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRDbGllbnQobWFrZVVuaXF1ZVJl
ZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PihkZWxlZ2F0ZSkpOworICAgIF93ZWJzaXRlRGF0YVN0
b3JlLT5zZXRDbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PihkZWxl
Z2F0ZSkpOwogfQogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEyICsyNSwxMyBA
QAogCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgiCiAKLSNpbXBvcnQgIkFQ
SVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0ICJXZWJz
aXRlRGF0YVN0b3JlLmgiCisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpXZWJzaXRl
RGF0YVN0b3JlPiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPFdlYnNpdGVEYXRh
U3RvcmU+IHsKICAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBXS1dlYnNpdGVEYXRhU3RvcmU7CiB9
OwogCkBAIC0zOCw3ICszOSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJ
OjpXZWIKIAogQGludGVyZmFjZSBXS1dlYnNpdGVEYXRhU3RvcmUgKCkgPFdLT2JqZWN0PiB7CiBA
cGFja2FnZQotICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OldlYnNpdGVEYXRhU3RvcmU+IF93
ZWJzaXRlRGF0YVN0b3JlOwotICAgIFJldGFpblB0cjxpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURl
bGVnYXRlPiA+IF9kZWxlZ2F0ZTsKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8V2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlPiBfd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBXZWFrT2JqQ1B0cjxpZCA8X1dL
V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsKIH0KIEBlbmQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJz
aXRlRGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgSWdh
bGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFQSVdl
YnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVk
ZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgotCi0jaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBC
QVNFX0RJUkVDVE9SWSAid2Via2l0Z3RrIgotI2VsaWYgUExBVEZPUk0oV1BFKQotI2RlZmluZSBC
QVNFX0RJUkVDVE9SWSAid3BlIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBBUEkgewotCi1XVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
Ci17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJB
U0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJhcHBsaWNhdGlvbnMiKTsKLX0KLQotLy8g
RklYTUU6IFRoZSBvdGhlciBkaXJlY3RvcmllcyBpbiB0aGlzIGZpbGUgYXJlIHNoYXJlZCBiZXR3
ZWVuIGFsbCBhcHBsaWNhdGlvbnMgdXNpbmcgV2ViS2l0R1RLLgotLy8gV2h5IGlzIG9ubHkgdGhp
cyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24/Ci1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkK
LXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hlIikp
OwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdl
RGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIkNh
Y2hlU3RvcmFnZSIpKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQ
QVJBVE9SX1MgImRhdGFiYXNlcyIgR19ESVJfU0VQQVJBVE9SX1MgImluZGV4ZWRkYiIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJz
ZXJ2aWNld29ya2VycyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJB
VE9SX1MgImxvY2Fsc3RvcmFnZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdf
RElSX1NFUEFSQVRPUl9TICJtZWRpYWtleXMiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJ
UkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGV2aWNlaWRoYXNoc2FsdHMiKTsKLX0KLQotV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpCi17
Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkK
LXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNo
ZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBX
VEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDI0OTcz
MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHN0cnVjdCBfV2ViS2l0Q29v
a2llTWFuYWdlclByaXZhdGUgewogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0
CiAgICAgewogICAgICAgICBBU1NFUlQoZGF0YU1hbmFnZXIpOwotICAgICAgICByZXR1cm4gd2Vi
a2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKGRhdGFNYW5hZ2VyKS53ZWJzaXRlRGF0
YVN0b3JlKCkuc2Vzc2lvbklEKCk7CisgICAgICAgIHJldHVybiB3ZWJraXRXZWJzaXRlRGF0YU1h
bmFnZXJHZXREYXRhU3RvcmUoZGF0YU1hbmFnZXIpLnNlc3Npb25JRCgpOwogICAgIH0KIAogICAg
IH5fV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGUoKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNv
bnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsMTggKzMxMSw2IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYkNvbnRleHRTZXRQcm9wZXJ0eSgKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUg
UmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiB3ZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbihjb25zdCBBUEk6OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiYgcHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uKQotewotICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsK
LSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFN0cmluZyhw
cm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKSk7Ci0g
ICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNz
UG9vbGNvbmZpZ3VyYXJpb24uZGlza0NhY2hlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0
aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1
cmFyaW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5z
ZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5s
b2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldERldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9u
LmRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlv
bi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1
cmFyaW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAgIHJldHVybiBjb25maWd1
cmF0aW9uOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09i
amVjdCogb2JqZWN0KQogewogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfY29udGV4dF9w
YXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZChvYmplY3QpOwpAQCAtMzM1LDI0ICszMjMsOSBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoCiAKICAgICBXZWJLaXRXZWJD
b250ZXh0KiB3ZWJDb250ZXh0ID0gV0VCS0lUX1dFQl9DT05URVhUKG9iamVjdCk7CiAgICAgV2Vi
S2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSB3ZWJDb250ZXh0LT5wcml2OwotICAgIGlmIChw
cml2LT53ZWJzaXRlRGF0YU1hbmFnZXIgJiYgIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9p
c19lcGhlbWVyYWwocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkgewotICAgICAgICBj
b25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgp
KSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldERpc2tDYWNoZURpcmVjdG9yeShGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tf
Y2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpLCBuZXR3b3Jr
Q2FjaGVTdWJkaXJlY3RvcnkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9u
X2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAg
ICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2Vy
LmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5
KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRl
RGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgotICAgICAgICBjb25maWd1cmF0aW9uLnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdl
ci5nZXQoKSkpKTsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIH0gZWxz
ZSBpZiAoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc051bGwoKSkKLSAgICAgICAgY29u
ZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZGF0
YSgpKSk7CiAKICAgICBwcml2LT5wcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUo
Y29uZmlndXJhdGlvbik7CiAKLSAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRhTWFuYWdlcikKLSAg
ICAgICAgcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdFdlYnNpdGVE
YXRhTWFuYWdlckNyZWF0ZSh3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkZvcldlYlByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSkpOwotICAgIHByaXYtPnByb2Nlc3NQ
b29sLT5zZXRQcmltYXJ5RGF0YVN0b3JlKHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFT
dG9yZShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKTsKLQogICAgIHdlYmtpdFdlYnNp
dGVEYXRhTWFuYWdlckFkZFByb2Nlc3NQb29sKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQo
KSwgKnByaXYtPnByb2Nlc3NQb29sKTsKIAogICAgIHByaXYtPnRsc0Vycm9yc1BvbGljeSA9IFdF
QktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMOwpAQCAtNzc3LDcgKzc1MCw3IEBAIHZvaWQgd2Vi
a2l0X3dlYl9jb250ZXh0X2NsZWFyX2NhY2hlKFdlYksKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzOwogICAgIHdlYnNpdGVEYXRhVHlwZXMuYWRkKFdlYnNp
dGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUpOwogICAgIHdlYnNpdGVEYXRhVHlwZXMuYWRkKFdlYnNp
dGVEYXRhVHlwZTo6RGlza0NhY2hlKTsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gd2Vi
a2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKGNvbnRleHQtPnByaXYtPndlYnNpdGVE
YXRhTWFuYWdlci5nZXQoKSkud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHdlYnNpdGVE
YXRhU3RvcmUgPSB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoY29udGV4dC0+
cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKTsKICAgICB3ZWJzaXRlRGF0YVN0b3JlLnJl
bW92ZURhdGEod2Vic2l0ZURhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbXSB7IH0p
OwogfQogCkBAIC0xNDc0LDEyICsxNDQ3LDggQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0
X3dlYl9leHRlbnNpbwogICoKICAqIERlcHJlY2F0ZWQ6IDIuMTAuIFVzZSB3ZWJraXRfd2ViX2Nv
bnRleHRfbmV3X3dpdGhfd2Vic2l0ZV9kYXRhX21hbmFnZXIoKSBpbnN0ZWFkLgogICovCi12b2lk
IHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNoZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29u
dGV4dCogY29udGV4dCwgY29uc3QgY2hhciogZGlyZWN0b3J5KQordm9pZCB3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqLCBjb25zdCBj
aGFyKikKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250
ZXh0KSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChkaXJlY3RvcnkpOwotCi0gICAgY29udGV4dC0+
cHJpdi0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5zZXREaXNrQ2FjaGVEaXJlY3Rvcnko
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSwgbmV0d29ya0NhY2hlU3ViZGly
ZWN0b3J5KSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCShy
ZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxMiArMjAsMTIg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIuaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJL
aXRDb29raWVNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0V2Vic2l0ZURhdGFQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlv
bi5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxnbGliL2dpMThu
LWxpYi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgpAQCAtOTUsNyArOTUsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVEYXRhTWFuYWdl
clByaXZhdGUgCiAgICAgICAgIEFTU0VSVChwcm9jZXNzUG9vbHMuaXNFbXB0eSgpKTsKICAgICB9
CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiB3ZWJzaXRlRGF0YVN0b3JlOwor
ICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IHdlYnNpdGVEYXRhU3RvcmU7CiAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBiYXNlRGF0YURpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRyPGNo
YXI+IGJhc2VDYWNoZURpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGxvY2FsU3RvcmFn
ZURpcmVjdG9yeTsKQEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJzaXRl
RGF0YU1hbmFnZXJTZXRQCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9JU19FUEhFTUVS
QUw6CiAgICAgICAgIGlmIChnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSkKLSAgICAgICAgICAg
IG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKKyAgICAgICAgICAgIG1hbmFnZXItPnBy
aXYtPndlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5v
blBlcnNpc3RlbnQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMp
OwpAQCAtMzg0LDI4ICszODQsMjggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyXwogV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJDcmVhdGUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRp
b24pCiB7CiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0gV0VCS0lUX1dF
QlNJVEVfREFUQV9NQU5BR0VSKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJTSVRFX0RBVEFf
TUFOQUdFUiwgbnVsbHB0cikpOwotICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUg
PSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICBtYW5hZ2VyLT5wcml2LT53
ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGTW92
ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAK
ICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIAotQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRX
ZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBt
YW5hZ2VyKQorV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyKQogewogICAg
IFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUqIHByaXYgPSBtYW5hZ2VyLT5wcml2Owog
ICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAg
IGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVjdG9yeSghcHJpdi0+bG9jYWxTdG9y
YWdlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpKTsKKyAg
ICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURp
cmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAgY29uZmlndXJh
dGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCFwcml2LT5kaXNrQ2FjaGVEaXJlY3Rvcnkg
PwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hl
RGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5kaXNrQ2FjaGVE
aXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAgICAgICAgICAg
IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgp
IDogRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5Lmdl
dCgpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24t
PnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoIXByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmdldCgpKSk7Cisg
ICAgICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAg
Y29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoIXByaXYtPndlYlNRTERp
cmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgICAg
IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYt
PndlYlNRTERpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRIU1RT
U3RvcmFnZURpcmVjdG9yeSghcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAg
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKSA6IEZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+aHN0c0NhY2hlRGly
ZWN0b3J5LmdldCgpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSgpKTsKLSAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgICAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsK
KyAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkp
OworICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuICpwcml2LT53ZWJzaXRlRGF0YVN0
b3JlOwpAQCAtNTQyLDcgKzU0Miw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIXByaXYtPmxvY2Fs
U3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LnJl
c2V0KGdfc3RyZHVwKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURp
cmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+bG9jYWxTdG9yYWdlRGly
ZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExv
Y2FsU3RvcmFnZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1cm4gcHJpdi0+
bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpOwogfQogCkBAIC01NjYsNyArNTY2LDcgQEAgY29u
c3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgogCiAgICAgaWYgKCFwcml2LT5k
aXNrQ2FjaGVEaXJlY3RvcnkpIHsKICAgICAgICAgLy8gVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGFs
cmVhZHkgaGFzIHRoZSBzdWJkaXJlY3RvcnkuCi0gICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVj
dG9yeS5yZXNldChnX3N0cmR1cChGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgp
KSk7CisgICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChGaWxl
U3lzdGVtOjpkaXJlY3RvcnlOYW1lKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQogICAgIHJldHVy
biBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CkBAIC01OTAsNyArNTkwLDcgQEAg
Y29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICghcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkKLSAg
ICAgICAgcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkudXRm
OCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LnJl
c2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgcmV0dXJuIHByaXYtPmFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CiAKQEAgLTYxMyw3ICs2MTMsNyBAQCBjb25z
dCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgaWYgKCFwcml2LT5pbmRleGVkREJEaXJlY3RvcnkpCi0gICAgICAgIHByaXYt
PmluZGV4ZWREQkRpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAg
ICAgICAgcHJpdi0+aW5kZXhlZERCRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkudXRmOCgp
LmRhdGEoKSkpOwogICAgIHJldHVybiBwcml2LT5pbmRleGVkREJEaXJlY3RvcnkuZ2V0KCk7CiB9
CiAKQEAgLTYzOCw3ICs2MzgsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFwcml2LT53ZWJTUUxE
aXJlY3RvcnkpCi0gICAgICAgIHByaXYtPndlYlNRTERpcmVjdG9yeS5yZXNldChnX3N0cmR1cChB
UEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLnV0
ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+d2ViU1FMRGlyZWN0b3J5LnJlc2V0KGdfc3Ry
ZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCkudXRmOCgpLmRhdGEoKSkpOwogICAgIHJldHVybiBwcml2LT53ZWJTUUxEaXJlY3Rvcnku
Z2V0KCk7CiB9CiAKQEAgLTY2MSw3ICs2NjEsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFwcml2
LT5oc3RzQ2FjaGVEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPmhzdHNDYWNoZURpcmVjdG9yeS5y
ZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RTRGlyZWN0b3J5
KCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkucmVz
ZXQoZ19zdHJkdXAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9y
eSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1cm4gcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5
LmdldCgpOwogfQogCkBAIC03MzUsNyArNzM1LDcgQEAgdm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZmV0Y2goVwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQlNJVEVf
REFUQV9NQU5BR0VSKG1hbmFnZXIpKTsKIAogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9w
dEdSZWYoZ190YXNrX25ldyhtYW5hZ2VyLCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRh
KSk7Ci0gICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmZldGNoRGF0YSh0b1dlYnNpdGVEYXRhVHlwZXModHlwZXMpLCBXZWJzaXRlRGF0YUZldGNo
T3B0aW9uOjpDb21wdXRlU2l6ZXMsIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0gKFZlY3RvcjxXZWJz
aXRlRGF0YVJlY29yZD4gcmVjb3JkcykgeworICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRh
U3RvcmUtPmZldGNoRGF0YSh0b1dlYnNpdGVEYXRhVHlwZXModHlwZXMpLCBXZWJzaXRlRGF0YUZl
dGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMsIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0gKFZlY3RvcjxX
ZWJzaXRlRGF0YVJlY29yZD4gcmVjb3JkcykgewogICAgICAgICBHTGlzdCogZGF0YUxpc3QgPSBu
dWxscHRyOwogICAgICAgICB3aGlsZSAoIXJlY29yZHMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBpZiAoYXV0byogZGF0YSA9IHdlYmtpdFdlYnNpdGVEYXRhQ3JlYXRlKHJlY29yZHMudGFrZUxh
c3QoKSkpCkBAIC04MDksNyArODA5LDcgQEAgdm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfcmVtb3ZlKAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbWFuYWdlci0+cHJpdi0+
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEodG9XZWJzaXRl
RGF0YVR5cGVzKHR5cGVzKSwgcmVjb3JkcywgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXSB7CisgICAg
bWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+cmVtb3ZlRGF0YSh0b1dlYnNpdGVEYXRh
VHlwZXModHlwZXMpLCByZWNvcmRzLCBbdGFzayA9IFdURk1vdmUodGFzayldIHsKICAgICAgICAg
Z190YXNrX3JldHVybl9ib29sZWFuKHRhc2suZ2V0KCksIFRSVUUpOwogICAgIH0pOwogfQpAQCAt
ODYxLDcgKzg2MSw3IEBAIHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyKFcK
IAogICAgIFdhbGxUaW1lIHRpbWVQb2ludCA9IHRpbWVTcGFuID8gV2FsbFRpbWU6Om5vdygpIC0g
U2Vjb25kczo6ZnJvbU1pY3Jvc2Vjb25kcyh0aW1lU3BhbikgOiBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoMCk7CiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3
KG1hbmFnZXIsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBtYW5hZ2Vy
LT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YSh0
b1dlYnNpdGVEYXRhVHlwZXModHlwZXMpLCB0aW1lUG9pbnQsIFt0YXNrID0gV1RGTW92ZSh0YXNr
KV0geworICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPnJlbW92ZURhdGEodG9X
ZWJzaXRlRGF0YVR5cGVzKHR5cGVzKSwgdGltZVBvaW50LCBbdGFzayA9IFdURk1vdmUodGFzayld
IHsKICAgICAgICAgZ190YXNrX3JldHVybl9ib29sZWFuKHRhc2suZ2V0KCksIFRSVUUpOwogICAg
IH0pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaAkocmV2aXNp
b24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwxMiArMTksMTEg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgi
CiAKIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ3Jl
YXRlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmKTsKLUFQSTo6
V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdl
YktpdFdlYnNpdGVEYXRhTWFuYWdlciopOworV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJr
aXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
Kik7CiB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFByb2Nlc3NQb29sKFdlYktpdFdl
YnNpdGVEYXRhTWFuYWdlciosIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKTsKIHZvaWQgd2Via2l0
V2Vic2l0ZURhdGFNYW5hZ2VyUmVtb3ZlUHJvY2Vzc1Bvb2woV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyKiwgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpOwogY29uc3QgVmVjdG9yPFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2wqPiYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0UHJvY2Vzc1Bvb2xzKFdl
YktpdFdlYnNpdGVEYXRhTWFuYWdlciopOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNp
dGVEYXRhU3RvcmVXaW4uY3BwCShub25leGlzdGVudCkKQEAgLTEsODggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFT
dG9yZS5oIgotCi0jaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLQotbmFtZXNwYWNlIEFQSSB7
Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxp
Y2F0aW9uQ2FjaGUiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJDYWNoZVN0b3JhZ2UiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOwotfQotCi1TdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJTZXJ2aWNl
V29ya2VycyIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIkxvY2FsU3RvcmFnZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOwotfQotCi1TdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCi17
Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7
Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCi17Ci0gICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzU4LDcgKzEzNTgsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29rCiAgICAgICAgIEFTWU5DX0ZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUg
cGFyYW1ldGVyICdodHRwT25seScgd2FzIG5vdCBmb3VuZC4iKTsKIAogICAgIFdlYkNvb2tpZU1h
bmFnZXJQcm94eSogY29va2llTWFuYWdlciA9IG1fcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2Vi
Q29va2llTWFuYWdlclByb3h5PigpOwotICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMocGFn
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpLCB7IGNvb2tpZSB9LCBbY2FsbGJhY2sg
PSBjYWxsYmFjay5jb3B5UmVmKCldKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBj
b29raWVNYW5hZ2VyLT5zZXRDb29raWVzKHBhZ2UtPnNlc3Npb25JRCgpLCB7IGNvb2tpZSB9LCBb
Y2FsbGJhY2sgPSBjYWxsYmFjay5jb3B5UmVmKCldKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKICAgICAgICAgaWYgKGVycm9yID09IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCiAgICAg
ICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKICAgICAgICAgZWxzZQpAQCAtMTM3OCw3
ICsxMzc4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29vawogICAg
IFN0cmluZyBob3N0ID0gYWN0aXZlVVJMLmhvc3QoKS50b1N0cmluZygpOwogCiAgICAgV2ViQ29v
a2llTWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+c3VwcGxlbWVu
dDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29va2llTWFuYWdlci0+ZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lcyhwYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCksIHsg
aG9zdCwgZG9tYWluQnlBZGRpbmdEb3RQcmVmaXhJZk5lZWRlZChob3N0KSB9KTsKKyAgICBjb29r
aWVNYW5hZ2VyLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKHBhZ2UtPnNlc3Npb25JRCgpLCB7
IGhvc3QsIGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZOZWVkZWQoaG9zdCkgfSk7CiB9CiAKIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldFNlc3Npb25QZXJtaXNzaW9ucyhFcnJvclN0cmlu
ZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlNlc3Npb25QZXJtaXNzaW9uRGF0YT4+JiBvdXRfcGVybWlzc2lvbnMpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lv
biAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQgIkFQSVBhZ2VD
b25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJBUElTdHJpbmcuaCIKICNpbXBvcnQgIkFQSVVSTC5o
IgotI2ltcG9ydCAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbkNvY29hLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXIuaCIKQEAgLTY0LDYgKzYzLDcgQEAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2lt
cG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIK
KyNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQgIl9XS0NvbnRlbnRSdWxlTGlz
dEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5o
IgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBAIE5l
dHdvcmtQcm9jZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkKICAgICBjb25uZWN0KCk7CiAK
ICAgICBpZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IG1fcHJvY2Vzc1Bvb2wud2Vic2l0ZURh
dGFTdG9yZSgpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmVzLnNldCh3ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCksIG1ha2VSZWYod2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZXMu
c2V0KHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBtYWtlUmVmKCp3ZWJzaXRlRGF0YVN0
b3JlKSk7CiB9CiAKIE5ldHdvcmtQcm9jZXNzUHJveHk6On5OZXR3b3JrUHJvY2Vzc1Byb3h5KCkK
QEAgLTExMzQsMTQgKzExMzQsMTQgQEAgV2Vic2l0ZURhdGFTdG9yZSogTmV0d29ya1Byb2Nlc3NQ
cm94eTo6dwogICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCiAgICAgaWYg
KGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBtX3Byb2Nlc3NQb29sLndlYnNpdGVEYXRhU3RvcmUo
KSkgewotICAgICAgICBpZiAoc2Vzc2lvbklEID09IHdlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXNzaW9uSUQoKSkKLSAgICAgICAgICAgIHJldHVybiAmd2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICBpZiAoc2Vzc2lvbklEID09IHdlYnNp
dGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKQorICAgICAgICAgICAgcmV0dXJuIHdlYnNpdGVEYXRh
U3RvcmU7CiAgICAgfQogCiAgICAgaWYgKHNlc3Npb25JRCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiAm
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3Rv
cmUoKTsKKyAgICByZXR1cm4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0
cigpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJldHJpZXZlQ2FjaGVTdG9yYWdl
UGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5LmgiCiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xf
TUFOQUdFUikKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgpA
QCAtMzYsNiArMzUsNyBAQAogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCIKICNp
bmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Dcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPG1lbW9yeT4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsMTUgKzI2LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGFTdG9yZS5oIgogCisjaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JlLmgiCiAjaW5jbHVk
ZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURh
dGFSZWNvcmQuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAi
QXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZS5oIgogI2luY2x1ZGUgIk1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCisjaW5jbHVkZSAiV2Vi
S2l0MkluaXRpYWxpemUuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTEz
OSw2ICsxNDAsNTggQEAgV2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShQQUw6Ogog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKK3N0YXRpYyBSZWZQdHI8V2Vic2l0
ZURhdGFTdG9yZT4mIGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4+IGdsb2JhbERlZmF1bHREYXRhU3Rv
cmU7CisgICAgcmV0dXJuIGdsb2JhbERlZmF1bHREYXRhU3RvcmUuZ2V0KCk7Cit9CisKK1JlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkKK3sK
KyAgICBJbml0aWFsaXplV2ViS2l0MigpOworCisgICAgYXV0byYgc3RvcmUgPSBnbG9iYWxEZWZh
dWx0RGF0YVN0b3JlKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgc3RvcmUgPSBhZG9wdFJl
ZihuZXcgV2Vic2l0ZURhdGFTdG9yZShkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLCBQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSk7CisKKyAgICByZXR1cm4gKnN0b3Jl
OworfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JU
ZXN0aW5nKCkKK3sKKyAgICBnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCkgPSBudWxscHRyOworfQor
Citib29sIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKQoreworICAg
IHJldHVybiAhIWdsb2JhbERlZmF1bHREYXRhU3RvcmUoKTsKK30KKworUmVmPFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisKKyAgICBjb25maWd1cmF0aW9uLT5z
ZXRQZXJzaXN0ZW50KHRydWUpOworCisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBj
b25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1l
KCJGaWxlcyIpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShk
ZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE5l
dHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpOworICAg
IGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlhQ2FjaGVE
aXJlY3RvcnkoKSk7CisKKyAgICBjb25maWd1cmF0aW9uLT5zZXRJbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeShkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmln
dXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShkZWZhdWx0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5z
ZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRM
b2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAg
ICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGRlZmF1
bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24t
PnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0RGV2aWNlSWRIYXNo
U2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOworCisgICAgY29uZmlndXJhdGlvbi0+c2V0SmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9u
RGlyZWN0b3J5KCkpOworCisgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Cit9CisKIFdlYnNpdGVE
YXRhU3RvcmU6On5XZWJzaXRlRGF0YVN0b3JlKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwpAQCAtMTcyOCw3ICsxNzgxLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNl
dENhY2hlTWF4QWdlQwogYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjppc0Fzc29jaWF0ZWRQcm9jZXNz
UG9vbChXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8q
IHByb2Nlc3NQb29sRGF0YVN0b3JlID0gcHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFTdG9yZSgpKQot
ICAgICAgICByZXR1cm4gJnByb2Nlc3NQb29sRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkg
PT0gdGhpczsKKyAgICAgICAgcmV0dXJuIHByb2Nlc3NQb29sRGF0YVN0b3JlID09IHRoaXM7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNzU0LDcgKzE4MDcsNyBAQCBIYXNoU2V0PFJlZlB0
cjxXZWJQcm9jZXNzUG9vbD4+IFdlYnNpdGVECiAgICAgfQogCiAgICAgaWYgKHByb2Nlc3NQb29s
cy5pc0VtcHR5KCkgJiYgY291bnQgJiYgZW5zdXJlQVBvb2xFeGlzdHMpIHsKLSAgICAgICAgYXV0
byBwcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2Nv
bmZpZ3VyYXRpb24pKTsKKyAgICAgICAgYXV0byBwcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29s
OjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpKTsKICAgICAg
ICAgcHJvY2Vzc1Bvb2xzLmFkZChwcm9jZXNzUG9vbC5wdHIoKSk7CiAgICAgfQogCkBAIC0yMDAx
LDYgKzIwNTQsMjggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjphZGRTZWNLZXlQcm94eVN0bwog
fQogI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCit7CisgICAgLy8gRklYTUU6IElt
cGxlbWVudC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjM2OSBh
bmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjM3MAorICAgIHJl
dHVybiBXVEY6OlN0cmluZygpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Cit9CisjZW5kaWYKKworI2lm
ICFVU0UoR0xJQikKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJ
ZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIC8vIE5vdCBpbXBsZW1lbnRlZC4K
KyAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQl9B
VVRITikKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbihNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYgY29uZmlndXJh
dGlvbikKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBj
b3B5KQpAQCAtOTIsMTEgKzkyLDE5IEBAIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFN0
YXR1czsKIHN0cnVjdCBQbHVnaW5Nb2R1bGVJbmZvOwogI2VuZGlmCiAKLWNsYXNzIFdlYnNpdGVE
YXRhU3RvcmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJzaXRlRGF0YVN0b3JlPiwgcHVibGljIElk
ZW50aWZpZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJzaXRl
RGF0YVN0b3JlPiAgeworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OldlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMgSWRlbnRp
ZmllZDxXZWJzaXRlRGF0YVN0b3JlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYnNpdGVEYXRh
U3RvcmU+ICB7CiBwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBkZWZh
dWx0RGF0YVN0b3JlKCk7CisgICAgc3RhdGljIGJvb2wgZGVmYXVsdERhdGFTdG9yZUV4aXN0cygp
OworICAgIHN0YXRpYyB2b2lkIGRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7Cisg
ICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOworCiAgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0
YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50KCk7CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0
YVN0b3JlPiBjcmVhdGUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmLCBQQUw6
OlNlc3Npb25JRCk7Ci0gICAgdmlydHVhbCB+V2Vic2l0ZURhdGFTdG9yZSgpOworCisgICAgZXhw
bGljaXQgV2Vic2l0ZURhdGFTdG9yZShQQUw6OlNlc3Npb25JRCk7CisgICAgZXhwbGljaXQgV2Vi
c2l0ZURhdGFTdG9yZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYsIFBBTDo6
U2Vzc2lvbklEKTsKKyAgICB+V2Vic2l0ZURhdGFTdG9yZSgpOwogCiAgICAgc3RhdGljIFdlYnNp
dGVEYXRhU3RvcmUqIGV4aXN0aW5nTm9uRGVmYXVsdERhdGFTdG9yZUZvclNlc3Npb25JRChQQUw6
OlNlc3Npb25JRCk7CiAKQEAgLTI2NSwxMCArMjczLDIzIEBAIHB1YmxpYzoKICAgICBTT0F1dGhv
cml6YXRpb25Db29yZGluYXRvciYgc29BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IoKSB7IHJldHVy
biBtX3NvQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLmdldCgpOyB9CiAjZW5kaWYKIAotcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEKTsKLSAgICBl
eHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bj4mJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5n
IGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RG
OjpTdHJpbmcgZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7CisjaWYgVVNFKEdM
SUIpCisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRIU1RTRGlyZWN0b3J5KCk7CisjZW5k
aWYKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3Rvcnko
KTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3Rv
cmFnZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SmF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKIAorcHJpdmF0ZToKICAgICB2b2lkIGZldGNoRGF0
YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFGZXRjaE9wdGlvbj4sIFJlZlB0cjxXb3JrUXVldWU+JiYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9y
PFdlYnNpdGVEYXRhUmVjb3JkPik+JiYgYXBwbHkpOwogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKQEAgLTI3OSw2ICszMDAsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3Jt
U2V0TmV0d29ya1BhcmFtZXRlcnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKTsKICNlbmRp
ZgogCisgICAgV2Vic2l0ZURhdGFTdG9yZSgpOworCisgICAgZW51bSBTaG91bGRDcmVhdGVEaXJl
Y3RvcnkgeyBDcmVhdGVEaXJlY3RvcnksIERvbnRDcmVhdGVEaXJlY3RvcnkgfTsKKyAgICBzdGF0
aWMgV1RGOjpTdHJpbmcgdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5ID0gQ3Jl
YXRlRGlyZWN0b3J5KTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgY2FjaGVEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpOwor
ICAgIHN0YXRpYyBXVEY6OlN0cmluZyB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CisgICAgCiAgICAg
SGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBwcm9jZXNzUG9vbHMoc2l6ZV90IGNvdW50
ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwgYm9vbCBlbnN1cmVBUG9vbEV4
aXN0cyA9IHRydWUpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAy
NDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEyICsyNiwxMiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKLSAgICA6
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpCisgICAgOiBtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3Jl
LmgiCiAKICNpbXBvcnQgIkNvb2tpZVN0b3JhZ2VVdGlsc0NGLmgiCisjaW1wb3J0ICJTYW5kYm94
VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJTdG9yYWdlTWFuYWdlci5oIgogI2ltcG9ydCAiV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycy5oIgpAQCAtMjMwLDQgKzIzMSwxNjEgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpw
bGF0Zm9ybVJlbW92ZVJlYwogICAgIFdlYkNvcmU6OnJlbW92ZVJlY2VudGx5TW9kaWZpZWRSZWNl
bnRTZWFyY2hlcyhvbGRlc3RUaW1lVG9SZW1vdmUpOwogfQogCitOU1N0cmluZyAqV2ViRGF0YWJh
c2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViRGF0YWJhc2VEaXJlY3RvcnkiOworTlNTdHJp
bmcgKldlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TG9jYWxTdG9yYWdl
RGF0YWJhc2VQYXRoUHJlZmVyZW5jZUtleSI7CitOU1N0cmluZyAqV2ViS2l0TWVkaWFDYWNoZURp
cmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5IjsKK05TU3Ry
aW5nICpXZWJLaXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktp
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkiOworCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCit7CisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICAvLyBUaGlzIHF1aXJrIHVzZWQgdG8gbWFrZSB0aGVzZSBhcHBzIHNo
YXJlIGFwcGxpY2F0aW9uIGNhY2hlIHN0b3JhZ2UsIGJ1dCBkb2Vzbid0IGFjY29tcGxpc2ggdGhh
dCBhbnkgbW9yZS4KKyAgICAvLyBQcmVzZXJ2aW5nIGl0IGF2b2lkcyB0aGUgbmVlZCB0byBtaWdy
YXRlIGRhdGEgd2hlbiB1cGdyYWRpbmcuCisgICAgLy8gRklYTUU6IElkZWFsbHkgd2Ugc2hvdWxk
IGp1c3QgaGF2ZSBTYWZhcmksIFdlYkFwcCwgYW5kIHdlYmJvb2ttYXJrc2QgY3JlYXRlIGEgZGF0
YSBzdG9yZSB3aXRoCisgICAgLy8gdGhpcyBhcHBsaWNhdGlvbiBjYWNoZSBwYXRoLCBidXQgdGhh
dCdzIG5vdCBzdXBwb3J0ZWQgYXMgb2YgcmlnaHQgbm93LgorICAgIGlmIChXZWJDb3JlOjpJT1NB
cHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6
aXNXZWJBcHAoKSB8fCBXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJCb29rbWFya3NEKCkp
IHsKKyAgICAgICAgTlNTdHJpbmcgKmNhY2hlUGF0aCA9IFtOU0hvbWVEaXJlY3RvcnkoKSBzdHJp
bmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJMaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2Vi
QXBwQ2FjaGUiXTsKKworICAgICAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5
bWxpbmtzSW5QYXRoKGNhY2hlUGF0aC5zdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoKTsKKyAgICB9
CisjZW5kaWYKKworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbigiT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0
dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJDYWNoZVN0b3JhZ2Ui
KTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNo
ZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKCJOZXR3b3JrQ2FjaGUiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB0ZW1wRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUNhY2hlIik7Cit9CisKK1dURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKCJJbmRleGVkREIiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQoreworICAgIHJldHVy
biBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiU2VydmljZVdvcmtlcnMi
KTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFn
ZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKCJMb2NhbFN0b3JhZ2UiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTWVkaWFL
ZXlzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJXZWJTUUwiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQorewor
ICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigi
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJKYXZhU2NyaXB0Q29y
ZURlYnVnIiwgRG9udENyZWF0ZURpcmVjdG9yeSk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OnRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RG
OjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUsIFNob3VsZENyZWF0ZURpcmVjdG9yeSBzaG91bGRDcmVh
dGVEaXJlY3RvcnkpCit7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Cisg
ICAgc3RhdGljIE5TVVJMICp0ZW1wVVJMOworICAgIAorICAgIGRpc3BhdGNoX29uY2UoJm9uY2VU
b2tlbiwgXnsKKyAgICAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6TlNU
ZW1wb3JhcnlEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOworICAgICAgICBpZiAoIXVybCkK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIAorICAg
ICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7CisgICAgICAgICAgICBO
U1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJ
ZGVudGlmaWVyOworICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQorICAgICAgICAg
ICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJv
Y2Vzc05hbWU7CisgICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHRlbXBVUkwgPSBbW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsKKyAgICB9KTsKKyAgICAKKyAgICBO
U1VSTCAqdXJsID0gW3RlbXBVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9y
eU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKKworICAgIGlmIChzaG91bGRDcmVhdGVEaXJlY3Rvcnkg
PT0gQ3JlYXRlRGlyZWN0b3J5CisgICAgICAgICYmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9y
aWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkpCisgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOworICAgIAorICAgIHJldHVy
biB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Cit9CisKK1dU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAgIHN0YXRp
YyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBOU1VSTCAqY2FjaGVVUkw7
CisKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIE5TVVJMICp1cmwg
PSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9yeTpOU0NhY2hl
c0RpcmVjdG9yeSBpbkRvbWFpbjpOU1VzZXJEb21haW5NYXNrIGFwcHJvcHJpYXRlRm9yVVJMOm51
bGxwdHIgY3JlYXRlOk5PIGVycm9yOm51bGxwdHJdOworICAgICAgICBpZiAoIXVybCkKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAgICAgaWYgKCFXZWJL
aXQ6OnByb2Nlc3NIYXNDb250YWluZXIoKSkgeworICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRs
ZUlkZW50aWZpZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKKyAg
ICAgICAgICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBidW5kbGVJ
ZGVudGlmaWVyID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOworICAg
ICAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRl
bnRpZmllciBpc0RpcmVjdG9yeTpZRVNdOworICAgICAgICB9CisKKyAgICAgICAgY2FjaGVVUkwg
PSBbW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5
OllFU10gcmV0YWluXTsKKyAgICB9KTsKKworICAgIE5TVVJMICp1cmwgPSBbY2FjaGVVUkwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsK
KyAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5
QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwg
ZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJl
Y3RvcnkgJUAiLCB1cmwpOworCisgICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbjsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpT
dHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNl
VG9rZW47CisgICAgc3RhdGljIE5TVVJMICp3ZWJzaXRlRGF0YVVSTDsKKworICAgIGRpc3BhdGNo
X29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TTGlicmFyeURpcmVjdG9yeSBpbkRv
bWFpbjpOU1VzZXJEb21haW5NYXNrIGFwcHJvcHJpYXRlRm9yVVJMOm51bGxwdHIgY3JlYXRlOk5P
IGVycm9yOm51bGxwdHJdOworICAgICAgICBpZiAoIXVybCkKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU107CisKKyAgICAgICAgaWYg
KCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250YWluZXIoKSkgeworICAgICAgICAgICAgTlNTdHJpbmcg
KmJ1bmRsZUlkZW50aWZpZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmll
cjsKKyAgICAgICAgICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBi
dW5kbGVJZGVudGlmaWVyID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1l
OworICAgICAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVu
ZGxlSWRlbnRpZmllciBpc0RpcmVjdG9yeTpZRVNdOworICAgICAgICB9CisKKyAgICAgICAgd2Vi
c2l0ZURhdGFVUkwgPSBbW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJzaXRl
RGF0YSIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOworICAgIH0pOworCisgICAgTlNVUkwgKnVy
bCA9IFt3ZWJzaXRlRGF0YVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5
TmFtZSBpc0RpcmVjdG9yeTpZRVNdOworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9y
aWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CisKKyAgICByZXR1cm4gdXJs
LmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOworfQorCiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS93aW4vV2Vic2l0ZURhdGFTdG9y
ZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS93aW4vV2Vic2l0ZURhdGFTdG9yZVdpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0
YVN0b3JlLmgiCiAKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ1LDQgKzQ2
LDU5IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1SZW1vdmVSZWMKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQ2FjaGVTdG9yYWdlIik7Cit9CisKK1N0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7Cit9CisKK1N0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnko
KQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJJbmRleGVkREIi
KTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCAiU2VydmljZVdvcmtlcnMiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKK30KKworU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9yYWdlIik7Cit9CisK
K1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJXZWJTUUwiKTsK
K30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnlOYW1lKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
IGRpcmVjdG9yeU5hbWUpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3Rv
cnlOYW1lKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRpcmVj
dG9yeU5hbWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCShy
ZXZpc2lvbiAyNDk3MzIpCShmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDoyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCisKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9nbGli
L0dVbmlxdWVQdHIuaD4KKworI2lmIFBMQVRGT1JNKEdUSykKKyNkZWZpbmUgQkFTRV9ESVJFQ1RP
UlkgIndlYmtpdGd0ayIKKyNlbGlmIFBMQVRGT1JNKFdQRSkKKyNkZWZpbmUgQkFTRV9ESVJFQ1RP
UlkgIndwZSIKKyNlbmRpZgorCituYW1lc3BhY2UgQVBJIHsKKworV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9S
WSBHX0RJUl9TRVBBUkFUT1JfUyAiYXBwbGljYXRpb25zIik7Cit9CisKKy8vIEZJWE1FOiBUaGUg
b3RoZXIgZGlyZWN0b3JpZXMgaW4gdGhpcyBmaWxlIGFyZSBzaGFyZWQgYmV0d2VlbiBhbGwgYXBw
bGljYXRpb25zIHVzaW5nIFdlYktpdEdUSy4KKy8vIFdoeSBpcyBvbmx5IHRoaXMgZGlyZWN0b3J5
IG5hbWVzcGFjZWQgdG8gYSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uPworV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0
dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJXZWJLaXRDYWNoZSIpKTsKK30KKworV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgp
Cit7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2Ui
KSk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJk
YXRhYmFzZXMiIEdfRElSX1NFUEFSQVRPUl9TICJpbmRleGVkZGIiKTsKK30KKworV1RGOjpTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAic2VydmljZXdvcmtl
cnMiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJsb2Nh
bHN0b3JhZ2UiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFU
T1JfUyAibWVkaWFrZXlzIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0
ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19E
SVJfU0VQQVJBVE9SX1MgImRldmljZWlkaGFzaHNhbHRzIik7Cit9CisKK1dURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAg
cmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0Vf
RElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJkYXRhYmFzZXMiKTsKK30KKworV1RGOjpTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKQoreworICAgIHJldHVy
biB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVD
VE9SWSBHX0RJUl9TRVBBUkFUT1JfUyk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1
cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJF
Q1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKK30KKwor
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCkpLCBk
aXJlY3RvcnlOYW1lKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0
ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcm
IGRpcmVjdG9yeU5hbWUpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOworfQorCit9IC8vIG5hbWVz
cGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFT
dG9yZUdMaWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIv
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgog
CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVl
UHRyLmg+CkBAIC0zNSw3ICszNSw3IEBACiAjZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCiAj
ZW5kaWYKIAotbmFtZXNwYWNlIEFQSSB7CituYW1lc3BhY2UgV2ViS2l0IHsKIAogV1RGOjpTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQog
ewpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDYgQEAKIAkJMUEz
MDA2NkUxMTEwRjRGNzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzAwNjZDMTExMEY0RjcwMDMx
OTM3QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07CiAJCTFBMzM0REVEMTZERThGODgw
MDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTMzNERFQjE2REU4Rjg4MDA2QThF
MzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkxQTMzNERF
RTE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzMzRERUMxNkRFOEY4ODAwNkE4
RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCAqLzsgfTsKLQkJMUEzNjM1QUExQTMxNDRB
MzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzYzNUE4MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElX
ZWJzaXRlRGF0YVN0b3JlLmggKi87IH07CiAJCTFBM0M4ODgwMThBNUFCQUUwMEM0Qzk2MiAvKiBX
S1ByZWZlcmVuY2VzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBM0M4ODdGMThBNUFCQUUwMEM0Qzk2MiAvKiBXS1ByZWZlcmVuY2VzSW50
ZXJuYWwuaCAqLzsgfTsKIAkJMUEzQ0MxNjcxODkwNkFDRjAwMUU2RUQ4IC8qIFdLV2ViVmlldy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzQ0MxNjUx
ODkwNkFDRjAwMUU2RUQ4IC8qIFdLV2ViVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJMUEzQ0MxNjkxODkwN0VCMDAwMUU2RUQ4IC8qIFdLUHJv
Y2Vzc1Bvb2xJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUEzQ0MxNjgxODkwN0VCMDAwMUU2RUQ4IC8qIFdLUHJvY2Vzc1Bvb2xJbnRlcm5h
bC5oICovOyB9OwpAQCAtMTcyNSw2ICsxNzI0LDggQEAKIAkJCWNvbXBpbGVyU3BlYyA9IGNvbS5h
cHBsZS5jb21waWxlcnMucHJveHkuc2NyaXB0OwogCQkJZmlsZVBhdHRlcm5zID0gIiouaCI7CiAJ
CQlmaWxlVHlwZSA9IHBhdHRlcm4ucHJveHk7CisJCQlpbnB1dEZpbGVzID0gKAorCQkJKTsKIAkJ
CWlzRWRpdGFibGUgPSAxOwogCQkJb3V0cHV0RmlsZXMgPSAoCiAJCQkJIiQoSEVBREVSX09VVFBV
VF9ESVIpLyQoSU5QVVRfRklMRV9OQU1FKSIsCkBAIC0yMTIxLDkgKzIxMjIsNiBAQAogCQkxQTMz
NERFQTE2REU4QjY4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
U3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBMzM0REVCMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTdG9yYWdlQXJlYU1h
cE1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3Jh
Z2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJMUEzMzRERUMxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3RvcmFnZUFyZWFNYXBN
ZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlQXJlYU1hcE1l
c3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTFBMzYzNUE3
MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVdlYnNpdGVEYXRhU3RvcmUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQTM2MzVBODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vi
c2l0ZURhdGFTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElXZWJz
aXRlRGF0YVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBMzYzNUFCMUEz
MTQ1RTUwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBM0E3M0NCMUE0OEM2RDQwMDcyMzFCMyAv
KiBBUElQYWdlR3JvdXBIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQVBJUGFnZUdyb3VwSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUEzQTczQ0MxQTQ4QzZENDAwNzIzMUIzIC8qIEFQSVBhZ2VHcm91cEhhbmRsZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElQYWdlR3JvdXBIYW5kbGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEzQzg4N0YxOEE1QUJBRTAwQzRDOTYyIC8qIFdLUHJl
ZmVyZW5jZXNJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1By
ZWZlcmVuY2VzSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYzNjcs
NyArNjM2NSw2IEBACiAJCQkJN0NFRkE5NjAxQUMwOTk5MzAwQjkxMEZEIC8qIEFQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlQ29jb2EubW0gKi8sCiAJCQkJNUNBNDZFN0EyMUYxQTIzOTAwQ0U4NkI0IC8q
IEFQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tICovLAogCQkJCUZFRDNDMURBMUI0NDdBRTgwMEUw
RUI3RiAvKiBBUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbSAqLywKLQkJCQkxQTM2MzVB
QjFBMzE0NUU1MDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tICovLAogCQkJ
CTFBRkRFNjQzMTk1MTBCNTUwMEM0OEZGQSAvKiBMZWdhY3lCdW5kbGVGb3JDbGFzcy5tbSAqLywK
IAkJCQkxQzIwOTM1RTIyMzE4Q0IwMDAwMjZBMzkgLyogTlNBdHRyaWJ1dGVkU3RyaW5nLmggKi8s
CiAJCQkJMUMyMDkzNUYyMjMxOENCMDAwMDI2QTM5IC8qIE5TQXR0cmlidXRlZFN0cmluZy5tbSAq
LywKQEAgLTc5NzcsOCArNzk3NCw2IEBACiAJCQkJMkQ4Nzg2MjIxQkRCNThGRjAwRDAyQUJCIC8q
IEFQSVVzZXJTdHlsZVNoZWV0LmggKi8sCiAJCQkJMUFFMjg2ODExQzdGOTM4NjAwNjlBQzRGIC8q
IEFQSVdlYnNpdGVEYXRhUmVjb3JkLmNwcCAqLywKIAkJCQkxQUUyODY4MjFDN0Y5Mzg2MDA2OUFD
NEYgLyogQVBJV2Vic2l0ZURhdGFSZWNvcmQuaCAqLywKLQkJCQkxQTM2MzVBNzFBMzE0NEEzMDBF
RDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAgKi8sCi0JCQkJMUEzNjM1QTgxQTMxNDRB
MzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCAqLywKIAkJCQk1QzhERDM3RDFGRTQ1
MDExMDBGMkE1NTYgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmNwcCAqLywKIAkJCQk1QzhERDM3QzFG
RTQ1MDExMDBGMkE1NTYgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmggKi8sCiAJCQkJMUE2NTYzRTIx
QjdBOEM1MDAwOUNGNzg3IC8qIEFQSVdpbmRvd0ZlYXR1cmVzLmNwcCAqLywKQEAgLTkzODIsNyAr
OTM3Nyw2IEBACiAJCQkJQzVFMUFGRUQxNkIyMTAxNzAwNkNDMUYyIC8qIEFQSVdlYkFyY2hpdmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUM1RTFBRkVGMTZCMjEwMjkwMDZDQzFGMiAvKiBBUElXZWJB
cmNoaXZlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTI4Njg0MUM3RjkzODYwMDY5
QUM0RiAvKiBBUElXZWJzaXRlRGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUEzNjM1
QUExQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBNjU2M0U1MUI3QThDNTAwMDlDRjc4NyAvKiBBUElXaW5kb3dGZWF0dXJlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjQ4RDJBODUyMTU4M0E3RTAwQzY3NTJCIC8qIEFwcEtpdFNQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFENEMxOTMxQjM5RjMzMjAwQUJDMjhFIC8qIEFwcGxpY2F0
aW9uU3RhdGVUcmFja2VyLmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378494</attachid>
            <date>2019-09-10 14:40:03 -0700</date>
            <delta_ts>2019-09-10 15:40:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201655-20190910144002.patch</filename>
            <type>text/plain</type>
            <size>205580</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2NyBAQAorMjAxOS0wOS0xMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB1bm5l
Y2Vzc2FyeSBhYnN0cmFjdGlvbnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBmb3Vy
IHRoaW5ncyB0byBzaW1wbGlmeSBXZWJzaXRlRGF0YVN0b3JlIGNvZGU6CisgICAgICAgIDEuIEl0
IHJlbW92ZXMgQVBJOjpXZWJzaXRlRGF0YVN0b3JlLCB3aGljaCB3YXMganVzdCBhbiB1bm5lY2Vz
c2FyeSB3cmFwcGVyIGFyb3VuZCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUuCisgICAgICAgIDIu
IEl0IGRlcHJlY2F0ZXMgdGhlIHVudXNlZCBhbGlhc2VzIG9mIFdlYnNpdGVEYXRhU3RvcmUsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYW5kIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZgorICAgICAgICAzLiBJdCByZW1vdmVzIHRoZSB1bnVzZWQgQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHByb3BlcnRpZXMgdGhhdCBoYXZlIGJlZW4gbW92ZWQgdG8gV2Vic2l0ZURhdGFTdG9y
ZS4KKyAgICAgICAgNC4gSXQgbWFrZXMgV0tXZWJzaXRlRGF0YVN0b3JlLl9kZWxlZ2F0ZSB3ZWFr
IGluc3RlYWQgb2Ygc3Ryb25nLCBhcyBhbHJlYWR5IGFubm90YXRlZCBpbiBXS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZSBpbiBiZWhh
dmlvciBmcm9tIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZToKKyAg
ICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAg
ICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tp
ZVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6CisgICAg
ICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURh
dGFTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
RGF0YVN0b3JlLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
UG9saWNpZXMuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlUG9saWNpZXM6OmRhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5zKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJEZWxldGVBbGxFbnRyaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
UG9saWN5TGlzdGVuZXIuY3BwOgorICAgICAgICAodXNlV2l0aFBvbGljaWVzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCk6CisgICAgICAgIChXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KToKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAoV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLUmVzb3VyY2VDYWNo
ZU1hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENh
Y2hlT3JpZ2lucyk6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZv
ck9yaWdpbik6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFs
bE9yaWdpbnMpOgorICAgICAgICAodG9XZWJzaXRlRGF0YVR5cGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdl
dERlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlTm9u
UGVyc2lzdGVudERhdGFTdG9yZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVX
aXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29v
a2llU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZVdpdGhDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RT
ZWVuKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVBy
ZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKToKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSk6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5n
VGVzdCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hvdWxkQ2xh
c3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzTWF4U3RhdGlzdGljc0VudHJpZXMpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1BydW5lRW50cmllc0Rvd25Ubyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9u
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGb3JPcmlnaW4p
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnMpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW4pOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmln
aW5TdG9yYWdlUXVvdGEpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdKToK
KyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdKToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIGh0dHBDb29raWVTdG9yZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6bW9kaWZpZWRTaW5jZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOmZv
ckRhdGFSZWNvcmRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgX2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKToKKyAgICAgICAgKCtbV0tXZWJzaXRl
RGF0YVN0b3JlIF9kZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZ10pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3aXRoT3B0aW9u
czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Blck9yaWdpblN0b3Jh
Z2VRdW90YV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFBlck9yaWdpblN0
b3JhZ2VRdW90YTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRDYWNoZVN0
b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOl0pOgor
ICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcl0p
OgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldEFsbG93c0NlbGx1bGFyQWNjZXNz
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93c0NlbGx1bGFyQWNjZXNz
XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJveHlDb25maWd1cmF0aW9u
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFNvdXJj
ZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXI6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0QWxsb3dzVExTRmFs
bGJhY2s6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dzVExTRmFsbGJh
Y2tdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm94eUNvbmZpZ3VyYXRpb25d
KToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zv
cjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9z
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRJc1ByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERv
bWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3Jl
IF9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOl0pOgorICAgICAgICAoLVtXS1dlYnNp
dGVEYXRhU3RvcmUgX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyXSk6CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHNldF9kZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAg
ICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29y
a1Byb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ondl
YnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bV93ZWJQcm9jZXNzQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRl
bnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJt
ZWRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp0ZW1w
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxEZWZhdWx0RGF0
YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHRE
YXRhU3RvcmVGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2wgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAg
ICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6
IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRIU1RTRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Ondl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOS0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEhhbmdzIG9uIFN3aXNz
LmNvbSBkdWUgdG8gdGhlIHdlYiBwcm9jZXNzIGJlaW5nIGJsb2NrZWQgb24gU3RvcmFnZUFyZWFN
YXA6OkxvYWRWYWx1ZXNJZk5lZWRlZApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAg
ICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAotICAgIFVJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAogICAgIFVJ
UHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcApJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5E
IFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAot
ICAgIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKIAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVy
V2luLmNwcApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDYgQEAgVUlQcm9j
ZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVu
dFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElVc2VyU3R5bGVTaGVldC5jcHAKLVVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElXaW5kb3dGZWF0dXJlcy5jcHAKIApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yNzQsNyArMjc0LDYgQEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubQogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNv
Y29hLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCi1VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9MZWdhY3lCdW5kbGVGb3JDbGFzcy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0
dHJpYnV0ZWRTdHJpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3Qu
bW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9Tb3VyY2VzR1RLLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw2IEBAIFVJ
UHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9n
dGsvV0tWaWV3LmNwcAogCiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVz
dC5jcHAgQG5vLXVuaWZ5CkBAIC0yMzIsNiArMjMxLDcgQEAgVUlQcm9jZXNzL2NhaXJvL0JhY2tp
bmdTdG9yZUNhaXJvLmNwcCBAbgogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcAogVUlQcm9jZXNzL2dzdHJlYW1lci9X
ZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTExNCw3ICsxMTQsNiBAQCBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMu
Y3BwCiBVSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKIAogVUlQcm9jZXNzL0FQSS9nbGli
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlR0xpYi5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJ
L2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXBwbGljYXRpb25JbmZvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwIEBuby11bmlmeQpAQCAtMTkyLDYgKzE5MSw3IEBA
IFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3YKIAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5
R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5p
ZnkKIAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKIFVJ
UHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJu
aW5nLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNyAr
NDE2LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgICwg
bV9wcmVmZXJlbmNlcygqbV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpKQogICAgICwgbV91
c2VyQ29udGVudENvbnRyb2xsZXIoKm1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRl
ZExpbmtTdG9yZSgpKQotICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+
d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCisgICAgLCBtX3dlYnNpdGVE
YXRhU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKQogICAgICwgbV91
c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgeyBtX2NvbmZpZ3VyYXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5KCkgfQogICAgICwgbV90cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZp
Z3VyYXRpb24tPnRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCkBAIC0y
ODY3LDggKzI4NjcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9s
CiAgICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gZGF0YTsKICAgICBpZiAocG9saWNp
ZXMpIHsKICAgICAgICAgZGF0YSA9IHBvbGljaWVzLT5kYXRhKCk7Ci0gICAgICAgIGlmIChwb2xp
Y2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpICYmICZwb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgp
LT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSkgewotICAgICAg
ICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCktPndl
YnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAgaWYgKHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3Jl
KCkgJiYgcG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlLnB0
cigpKSB7CisgICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gKnBvbGljaWVzLT53ZWJzaXRl
RGF0YVN0b3JlKCk7CiAgICAgICAgICAgICBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDQsOCArMjQ0LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nl
c3NQb29sKEFQSTo6UHJvYwogICAgICAgICBQcm9jZXNzOjpzZXRJZGVudGlmaWVyKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKICAgICB9KTsKIAotICAgIGlmICghbV93
ZWJzaXRlRGF0YVN0b3JlICYmIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZUV4aXN0cygpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSAm
JiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCisgICAgICAgIG1f
d2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsK
IAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV9jb25maWd1cmF0aW9uLT5hbHdheXNSZXZhbGlk
YXRlZFVSTFNjaGVtZXMoKSkKICAgICAgICAgbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2
YWxpZGF0ZWQuYWRkKHNjaGVtZSk7CkBAIC00ODMsMTQgKzQ4MywxNCBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKLSAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZW5kaW5nQ29va2ll
cyA9IGNvcHlUb1ZlY3RvcihtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5w
ZW5kaW5nQ29va2llcygpKTsKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuY2xlYXJQZW5kaW5nQ29va2llcygpOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1
bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fd2Vi
c2l0ZURhdGFTdG9yZS0+cGVuZGluZ0Nvb2tpZXMoKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFT
dG9yZS0+Y2xlYXJQZW5kaW5nQ29va2llcygpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAg
ICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyKCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNr
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJh
Y2soKSA/IEFsbG93c1RMU0ZhbGxiYWNrOjpZZXMgOiBBbGxvd3NUTFNGYWxsYmFjazo6Tm87Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IG1fd2Vic2l0
ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9IG1fd2Vic2l0ZURh
dGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNrID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5hbGxvd3NUTFNG
YWxsYmFjaygpID8gQWxsb3dzVExTRmFsbGJhY2s6OlllcyA6IEFsbG93c1RMU0ZhbGxiYWNrOjpO
bzsKICNlbmRpZgotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5uZXR3b3JraW5nSGFzQmVndW4oKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3
b3JraW5nSGFzQmVndW4oKTsKICAgICB9CiAKICAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBj
YWNoZU1vZGVsKCk7CkBAIC01MDIsOSArNTAyLDYgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2Vi
UHJvY2Vzc1Bvb2w6OmVucwogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV91cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scykKICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVz
UmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKIAotICAgIHBhcmFt
ZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5kaXNrQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHko
KSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRpc2tDYWNo
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BF
Q1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24gPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNo
ZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQoKTsKICNlbmRpZgpAQCAtNTQxLDIzICs1Mzgs
MTEgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgIHBhcmFt
ZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkID0gY29weVRvVmVjdG9yKG1f
c2NoZW1lc1RvUmVnaXN0ZXJBc0NPUlNFbmFibGVkKTsKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVt
ZXNSZWdpc3RlcmVkQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCA9IGNvcHlUb1ZlY3Rvciht
X3NjaGVtZXNUb1JlZ2lzdGVyQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCk7CiAKLSNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICAvLyAqKioqKioqKioKLSAgICAvLyBJTVBPUlRB
TlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0
YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBB
cHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKLSAgICAvLyAqKioqKioqKioKLSAgICBw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeSA9IG1fY29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAg
ICBpZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygp
LmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKLSAgICAKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVs
dERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy0+Y3JlYXRlU3ltTGlua0ZvckZpbGVVcGdyYWRlKHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5KTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChtX3dl
YnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJl
c29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgICAgICBwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPnJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAg
IGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAg
ICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSAgQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpOworICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkgPSAgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5LCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogCiAgICAgaWYgKCFtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZS5p
c0VtcHR5KCkpCkBAIC01NjYsMTYgKzU1MSwxNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQ
cm9jZXNzUG9vbDo6ZW5zCiAgICAgcGFyYW1ldGVycy5zaG91bGREaXNhYmxlU2VydmljZVdvcmtl
clByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclBy
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5OwogI2VuZGlmCiAKLSAgICBhdXRvIGxvY2FsU3RvcmFnZURp
cmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBudWxsU3RyaW5n
KCk7CisgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUg
PyBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBu
dWxsU3RyaW5nKCk7CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpOworICAgICAgICBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBs
b2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5k
ZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwor
ICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5yZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKICAg
ICBpZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0g
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogCiAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFt
ZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCkBAIC02MDEsMTcgKzU4NiwxNyBAQCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgfSBlbHNlIGlmICht
X3dlYnNpdGVEYXRhU3RvcmUpIHsKICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgICAgICBlbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkuaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygpOworICAgICAg
ICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5oYXNTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKCk7CiAjZW5kaWYKICAgICAg
ICAgaWYgKGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKLSAgICAgICAgICAgIGF1dG8g
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKKyAgICAgICAg
ICAgIGF1dG8gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5w
YXJhbWV0ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzOwogICAgICAgICAgICAgc2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNsdWRl
TG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgICAgICAgICAgZW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5l
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAgICAgICAgICAgbWFudWFs
UHJldmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKLSAgICAgICAg
cGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVv
dGEgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZXJPcmlnaW5TdG9y
YWdlUXVvdGEoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOworICAg
ICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlck9yaWdpblN0b3Jh
Z2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0
eU9yaWdpblN0b3JhZ2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyVGhpcmRQYXJ0eU9y
aWdpblN0b3JhZ2VRdW90YSgpOwogICAgIH0KIAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNzAyLDggKzY4
Nyw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnQKIAogICAgIGlm
ICghd2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkK
LSAgICAgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwotICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gJm1f
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICAgICAgbV93ZWJz
aXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OworICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOwog
ICAgIH0KIAogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQpAQCAt
Nzk1LDEyICs3ODAsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdl
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygp
CiB7CiAgICAgbV9yZXNvbHZlZFBhdGhzLmluamVjdGVkQnVuZGxlUGF0aCA9IHJlc29sdmVQYXRo
Rm9yU2FuZGJveEV4dGVuc2lvbihpbmplY3RlZEJ1bmRsZVBhdGgoKSk7Ci0gICAgbV9yZXNvbHZl
ZFBhdGhzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdy
aXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLndlYlNRTERhdGFiYXNl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAg
ICBtX3Jlc29sdmVkUGF0aHMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVS
ZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVk
aWFDYWNoZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwot
ICAgIG1fcmVzb2x2ZWRQYXRocy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRp
b24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOwotCiAgICAgbV9yZXNvbHZlZFBhdGhz
LmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnJlc2VydmVDYXBhY2l0
eShtX2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkuc2l6
ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBtX2NvbmZpZ3VyYXRpb24tPmFkZGl0
aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkpCiAgICAgICAgIG1fcmVzb2x2ZWRQYXRocy5h
ZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy51bmNoZWNrZWRBcHBlbmQo
cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGguZGF0YSgpKSk7CkBAIC04MzcsNyAr
ODE2LDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OgogI2lmIFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIC8vIEluIHBsYXRmb3JtcyB1c2luZyBC
dWJibGV3cmFwIGZvciBzYW5kYm94aW5nLCBwcmV3YXJtZWQgcHJvY2VzcyBpcyBsYXVuY2hlZCB1
c2luZyB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlLAogICAgIC8v
IHNvIHdlIGRvbid0IHVzZSBpdCBpbiBjYXNlIG9mIHVzaW5nIGEgZGlmZmVyZW50IFdlYnNpdGVE
YXRhU3RvcmUuCi0gICAgaWYgKG1fc2FuZGJveEVuYWJsZWQgJiYgbV93ZWJzaXRlRGF0YVN0b3Jl
ICYmICZtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURh
dGFTdG9yZSkKKyAgICBpZiAobV9zYW5kYm94RW5hYmxlZCAmJiBtX3dlYnNpdGVEYXRhU3RvcmUg
JiYgbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogCkBAIC04ODUsOCArODY0LDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2VuZFdlYlByb2Nlc3NEYXRhUwogICAgIGlmICghcGFyYW1ldGVycy5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFt
ZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgcGFy
YW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gd2Vic2l0
ZURhdGFTdG9yZS5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCk7Ci0g
ICAgaWYgKHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZS5pc0VtcHR5KCkpCi0gICAgICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRG
aWxlU3ViZGlyZWN0b3J5TmFtZSgpOwogCiAgICAgcGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2ZWREYXRhYmFzZURpcmVjdG9yeSgpOwog
ICAgIGlmIChwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKQEAg
LTExMDcsNyArMTA4NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRGaW5pc2hM
YXUKICAgICBtX2Nvbm5lY3Rpb25DbGllbnQuZGlkQ3JlYXRlQ29ubmVjdGlvbih0aGlzLCBwcm9j
ZXNzLT53ZWJDb25uZWN0aW9uKCkpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAg
ICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGlkQ3JlYXRlTmV0
d29ya1Byb2Nlc3MoKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5kaWRDcmVhdGVOZXR3
b3JrUHJvY2VzcygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vz
cyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCkBAIC0xMTg2LDcgKzExNjMsNyBAQCBXZWJQcm9j
ZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzCiAgICAgICAgIHJldHVybiBjcmVhdGVO
ZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIGJvb2wgbXVzdE1hdGNoRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gJkFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
Ym9vbCBtdXN0TWF0Y2hEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwogI2Vsc2UKICAgICBib29sIG11c3RNYXRjaERhdGFTdG9y
ZSA9IGZhbHNlOwogI2VuZGlmCkBAIC0xMjIwLDcgKzExOTcsNyBAQCBSZWY8V2ViUGFnZVByb3h5
PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAgICAgIC8vIFdlIHRyeSB0byBhdm9pZCBjcmVh
dGluZyB0aGUgZGVmYXVsdCBkYXRhIHN0b3JlIGFzIGxvbmcgYXMgcG9zc2libGUuCiAgICAgICAg
IC8vIEJ1dCBpZiB0aGVyZSBpcyBhbiBhdHRlbXB0IHRvIGNyZWF0ZSBhIHdlYiBwYWdlIHdpdGhv
dXQgYW55IHNwZWNpZmllZCBkYXRhIHN0b3JlLCB0aGVuIHdlIGhhdmUgdG8gY3JlYXRlIGl0Lgog
ICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgICAgIG1fd2Vic2l0ZURh
dGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OworICAgICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwogCiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRX
ZWJzaXRlRGF0YVN0b3JlKG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSk7CiAgICAgfQpAQCAtMTIz
MSw4ICsxMjA4LDggQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZQog
ICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdl
IHZpYSB3aW5kb3cub3BlbigpLgogICAgICAgICBwcm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9u
LT5yZWxhdGVkUGFnZSgpLT5lbnN1cmVSdW5uaW5nUHJvY2VzcygpOwogICAgICAgICAvLyBXZSBk
byBub3Qgc3VwcG9ydCBzZXZlcmFsIFdlYnNpdGVEYXRhU3RvcmVzIHNoYXJpbmcgYSBzaW5nbGUg
cHJvY2Vzcy4KLSAgICAgICAgQVNTRVJUKHByb2Nlc3MuZ2V0KCkgPT0gbV9kdW1teVByb2Nlc3NQ
cm94eSB8fCAmcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURh
dGFTdG9yZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwotICAgICAgICBBU1NF
UlQoJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkg
PT0gJnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3Rv
cmUoKSk7CisgICAgICAgIEFTU0VSVChwcm9jZXNzLmdldCgpID09IG1fZHVtbXlQcm9jZXNzUHJv
eHkgfHwgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmcHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgQVNTRVJUKCZwYWdlQ29uZmlndXJhdGlvbi0+
cmVsYXRlZFBhZ2UoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHBhZ2VDb25maWd1cmF0aW9uLT53
ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIH0gZWxzZSBpZiAoIW1faXNEZWxheWVkV2ViUHJvY2Vz
c0xhdW5jaERpc2FibGVkKSB7CiAgICAgICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwgd2UgZGVs
YXkgcHJvY2VzcyBsYXVuY2ggdW50aWwgc29tZXRoaW5nIGlzIGFjdHVhbGx5IGxvYWRlZCBpbiB0
aGUgcGFnZS4KICAgICAgICAgaWYgKCFtX2R1bW15UHJvY2Vzc1Byb3h5KSB7CkBAIC0xMjQyLDcg
KzEyMTksNyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAg
ICAgIH0KICAgICAgICAgcHJvY2VzcyA9IG1fZHVtbXlQcm9jZXNzUHJveHk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIHByb2Nlc3MgPSAmcHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHBhZ2VDb25m
aWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSwgbnVsbHB0
ciwgeyB9KTsKKyAgICAgICAgcHJvY2VzcyA9ICZwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4o
KnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCksIG51bGxwdHIsIHsgfSk7CiAK
ICAgICBBU1NFUlQocHJvY2Vzcyk7CiAKQEAgLTEyOTIsNyArMTI2OSw3IEBAIGJvb2wgV2ViUHJv
Y2Vzc1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmluZyBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlv
bigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgICAgIHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KCk7CiAKICAgICByZXR1cm4gbV9tYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzLmVu
c3VyZShzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBbJl0gewogICAgICAgICAv
LyBGSVhNRTogTWFrZSB0aGlzIGNvbXB1dGF0aW9uIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI0
OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJI
aWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyLmgiCkBAIC00NCw2ICs0Myw3
IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2
aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBAIC0yMDIsOCAr
MjAyLDggQEAgcHVibGljOgogICAgIC8vIERpc2Nvbm5lY3QgdGhlIHByb2Nlc3MgZnJvbSB0aGUg
Y29udGV4dC4KICAgICB2b2lkIGRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSopOwog
Ci0gICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRQcmltYXJ5RGF0
YVN0b3JlKEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKSB7IG1fd2Vic2l0ZURhdGFT
dG9yZSA9ICZkYXRhU3RvcmU7IH0KKyAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0
b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRQcmltYXJ5RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkgeyBtX3dl
YnNpdGVEYXRhU3RvcmUgPSAmZGF0YVN0b3JlOyB9CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBj
cmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CiAKQEAgLTY3Niw3ICs2NzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tZW1vcnlTYW1wbGVy
RW5hYmxlZCB7IGZhbHNlIH07CiAgICAgZG91YmxlIG1fbWVtb3J5U2FtcGxlckludGVydmFsIHsg
MTQwMC4wIH07CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVE
YXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9y
ZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgUmVmUHRyPFdlYkNvbnRleHRT
dXBwbGVtZW50PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IFdlYkNvbnRleHRTdXBwbGVtZW50TWFw
OwogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVudHM7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBD
b29raWVTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKIAotI2luY2x1ZGUg
IkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVT
dG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgZW51
bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludAogbmFtZXNwYWNlIEFQSSB7CiAK
IGNsYXNzIEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyOwotY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKIAogY2xhc3MgSFRUUENvb2tpZVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEyICsxNTEsMTIgQEAg
dm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0VmlzaXRlZExpbmtTdAogICAgIG1fdmlzaXRlZExp
bmtTdG9yZSA9IHZpc2l0ZWRMaW5rU3RvcmU7CiB9CiAKLUFQSTo6V2Vic2l0ZURhdGFTdG9yZSog
UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQorV2Vic2l0ZURhdGFTdG9yZSog
UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIHJldHVybiBtX3dl
YnNpdGVEYXRhU3RvcmUuZ2V0KCk7CiB9CiAKLXZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFdl
YnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQor
dm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNp
dGVEYXRhU3RvcmU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDEyICs0NCwxMiBAQCBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIGNsYXNzIFdlYlByb2Nl
c3NQb29sOwogY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIH0KIAogbmFtZXNwYWNl
IEFQSSB7CiAKIGNsYXNzIEFwcGxpY2F0aW9uTWFuaWZlc3Q7Ci1jbGFzcyBXZWJzaXRlRGF0YVN0
b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogCiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbiA6
IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6UGFnZUNvbmZpZ3VyYXRpb24+IHsKQEAg
LTg0LDggKzg0LDggQEAgcHVibGljOgogICAgIFdlYktpdDo6VmlzaXRlZExpbmtTdG9yZSogdmlz
aXRlZExpbmtTdG9yZSgpOwogICAgIHZvaWQgc2V0VmlzaXRlZExpbmtTdG9yZShXZWJLaXQ6OlZp
c2l0ZWRMaW5rU3RvcmUqKTsKIAotICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3Rv
cmUoKTsKLSAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSopOwor
ICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpOworICAgIHZv
aWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUqKTsKIAogICAg
IFdlYnNpdGVQb2xpY2llcyogZGVmYXVsdFdlYnNpdGVQb2xpY2llcygpIGNvbnN0OwogICAgIHZv
aWQgc2V0RGVmYXVsdFdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXMqKTsKQEAgLTE0NSw3
ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9y
ZWxhdGVkUGFnZTsKICAgICBSZWZQdHI8V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0
ZWRMaW5rU3RvcmU7CiAKLSAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0
YVN0b3JlOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURh
dGFTdG9yZTsKICAgICBSZWZQdHI8V2Vic2l0ZVBvbGljaWVzPiBtX2RlZmF1bHRXZWJzaXRlUG9s
aWNpZXM7CiAKICAgICBib29sIG1fdHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmUgeyB0cnVlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjQ5NzMy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKIAotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgor
I2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIEFQSSB7CiAKQEAgLTM2
LDM1ICszNiw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb28KICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOwogfQogCi1S
ZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNy
ZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihjb25zdCBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJiBsZWdhY3lDb25maWd1cmF0aW9uKQotewotICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0K
LSAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsK
LSAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9tZWRp
YUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5
KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGxl
Z2FjeUNvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBjb25m
aWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24u
bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmRldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBs
ZWdhY3lDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0KLSAgICByZXR1
cm4gY29uZmlndXJhdGlvbjsKLX0KLQogUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKQotICAgIDogbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpCi0gICAg
LCBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkZpbGVzIikKLSAg
ICAsIG1fZGlza0NhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKSkKLSAgICAsIG1fbWVkaWFDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKQotICAgICwgbV9pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fZGV2aWNlSWRI
YXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJ
ZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fd2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkp
Ci0gICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSgpKQogewogfQogCkBAIC03NywxOCArNDksOCBAQCBSZWY8UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgYXV0byBjb3B5ID0gdGhpcy0+Y3Jl
YXRlKCk7CiAKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9kZWw7Ci0g
ICAgY29weS0+bV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX2Rpc2tDYWNoZURpcmVjdG9y
eTsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgPSB0
aGlzLT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQ7Ci0gICAgY29weS0+
bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5OwotICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZSA9IHRoaXMtPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsK
LSAgICBjb3B5LT5tX21lZGlhQ2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX21lZGlhQ2FjaGVEaXJl
Y3Rvcnk7Ci0gICAgY29weS0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1f
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9pbmplY3RlZEJ1bmRsZVBh
dGggPSB0aGlzLT5tX2luamVjdGVkQnVuZGxlUGF0aDsKLSAgICBjb3B5LT5tX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1f
ZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9kZXZpY2VJZEhhc2hT
YWx0c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeTsKLSAgICBjb3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gdGhp
cy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2NhY2hlUGFydGl0aW9u
ZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBj
b3B5LT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fYWx3YXlzUmV2YWxp
ZGF0ZWRVUkxTY2hlbWVzOwogICAgIGNvcHktPm1fYWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2Vk
UGF0aHMgPSB0aGlzLT5tX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24+IGNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bihjb25zdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJik7CiAKICAgICBl
eHBsaWNpdCBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKQEAgLTc5LDM4ICs3Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJL
aXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsg
fQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkg
eyBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAKLSAgICBjb25zdCBXVEY6OlN0cmluZyYg
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkgeyBtX2FwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OyB9Ci0KLSAgICBj
b25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXREaXNrQ2Fj
aGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSkgeyBtX2Rp
c2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeTsgfQotCi0gICAgY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ2Fj
aGVEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RG
OjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0g
bWVkaWFDYWNoZURpcmVjdG9yeTsgfQotICAgIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNv
bnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBtX2luZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQogICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBt
X2luamVjdGVkQnVuZGxlUGF0aDsgfQogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKGNv
bnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpIHsgbV9pbmplY3RlZEJ1bmRsZVBh
dGggPSBpbmplY3RlZEJ1bmRsZVBhdGg7IH0KIAotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9y
eTsgfQotICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5n
JiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpIHsgbV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBkZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkSGFzaFNh
bHRzU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnkpIHsgbV9kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBkaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6
U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViU1FM
RGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KGNvbnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkgeyBtX3dlYlNRTERh
dGFiYXNlRGlyZWN0b3J5ID0gd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0
IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
OyB9Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGNvbnN0IFdU
Rjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSB7IG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7
IH0KLQogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzKCkgeyByZXR1cm4gbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsgfQogICAgIHZv
aWQgc2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIGNh
Y2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKSB7IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMg
PSBXVEZNb3ZlKGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKTsgfQogCkBAIC0xODYsMTcgKzE1
NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlv
bkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdlYktpdDo6Q2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwg
eyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlByaW1hcnlXZWJCcm93c2VyIH07CiAKLSAgICBXVEY6OlN0
cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9hcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOwotICAgIFdURjo6U3RyaW5nIG1f
ZGlza0NhY2hlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fbWVkaWFDYWNoZURpcmVjdG9y
eTsKLSAgICBXVEY6OlN0cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFdU
Rjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwotICAgIFdURjo6U3RyaW5nIG1fbG9jYWxT
dG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7
Ci0gICAgV1RGOjpTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6
U3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBWZWN0b3I8V1RG
OjpTdHJpbmc+IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7CiAgICAgVmVjdG9yPFdURjo6
U3RyaW5nPiBtX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKICAgICBWZWN0b3I8V1RGOjpD
U3RyaW5nPiBtX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVEYXRhU3RvcmUuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTY4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCi0KLSNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgotI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmUuaCIKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLXN0YXRpYyBSZWZQdHI8V2Vic2l0
ZURhdGFTdG9yZT4mIGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKQotewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4+IGdsb2JhbERlZmF1bHREYXRhU3Rv
cmU7Ci0gICAgcmV0dXJuIGdsb2JhbERlZmF1bHREYXRhU3RvcmUuZ2V0KCk7Ci19Ci0KLQotUmVm
PFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKQot
ewotICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKLQotICAgIGF1dG8mIHN0b3JlID0g
Z2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpOwotICAgIGlmICghc3RvcmUpCi0gICAgICAgIHN0b3Jl
ID0gYWRvcHRSZWYobmV3IFdlYnNpdGVEYXRhU3RvcmUoZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwotCi0gICAgcmV0
dXJuICpzdG9yZTsKLX0KLQotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVEZWZhdWx0RGF0
YVN0b3JlRm9yVGVzdGluZygpCi17Ci0gICAgZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpID0gbnVs
bHB0cjsKLX0KLQotYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3Rz
KCkKLXsKLSAgICByZXR1cm4gISFnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCk7Ci19Ci0KLVJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0
YVN0b3JlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlKTsK
LX0KLQotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShSZWY8
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBj
b25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKSk7
Ci19Ci0KLVdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoKQotICAgIDogbV93ZWJz
aXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVu
dCgpKQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICA6IG1fd2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQp
KQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCi17Ci19Ci0K
LUhUVFBDb29raWVTdG9yZSYgV2Vic2l0ZURhdGFTdG9yZTo6aHR0cENvb2tpZVN0b3JlKCkKLXsK
LSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5jb29raWVTdG9yZSgpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjogaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPmNvbmZpZ3VyYXRpb24oKS5pbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSgpOwotfQotCi1ib29sIFdlYnNpdGVEYXRhU3RvcmU6OmlzUGVy
c2lzdGVudCgpCi17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+aXNQZXJzaXN0ZW50
KCk7Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Ci19Ci0KLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7
Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOwotfQotCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCBlbmFibGVkKQotewotICAgIG1f
d2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFi
bGVkKTsKLX0KLQotI2lmICFQTEFURk9STShDT0NPQSkKLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzY5IGFu
ZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzcwCi0gICAgcmV0
dXJuIFdURjo6U3RyaW5nKCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgLy8gRklYTUU6
IEltcGxlbWVudC4KLSAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKLX0KLSNlbmRpZgotCi0jaWYg
IVVTRShHTElCKQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgLy8gTm90IGltcGxlbWVudGVkLgot
ICAgIHJldHVybiBXVEY6OlN0cmluZygpOwotfQotI2VuZGlmCi0KLVJlZjxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0KLSAgICBjb25maWd1cmF0
aW9uLT5zZXRQZXJzaXN0ZW50KHRydWUpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsK
LSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3Rv
cnlOYW1lKCJGaWxlcyIpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVj
dG9yeShkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24t
PnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkp
OwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkoKSk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5zZXRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeShkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAg
Y29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShkZWZh
dWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0
aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGRl
ZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0RGV2aWNl
SWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0
SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoZGVmYXVsdEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5KCkpOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdl
YnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShub25leGlzdGVudCkKQEAg
LTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJBUElIVFRQQ29va2llU3RvcmUuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0j
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgQVBJIHsKLQotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSBmaW5hbCA6IHB1
YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6V2Vic2l0ZURhdGFTdG9yZT4gewotcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gZGVmYXVsdERhdGFTdG9yZSgpOwot
ICAgIHN0YXRpYyBib29sIGRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKLSAgICBzdGF0aWMgdm9p
ZCBkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwotCi0gICAgc3RhdGljIFJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+JiYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7Ci0gICAgc3RhdGljIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7Ci0KLSAgICBleHBs
aWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7Ci0gICAgdmlydHVhbCB+V2Vic2l0ZURhdGFTdG9y
ZSgpOwotCi0gICAgYm9vbCBpc1BlcnNpc3RlbnQoKTsKLQotICAgIGJvb2wgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdDsKLSAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGJvb2wpOwotICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShib29sKTsKLQotICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSgpIHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQotICAgIEhUVFBDb29raWVT
dG9yZSYgaHR0cENvb2tpZVN0b3JlKCk7Ci0KLSAgICBXVEY6OlN0cmluZyBpbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcg
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBk
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGlj
IFdURjo6U3RyaW5nIGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotI2lmIFVTRShH
TElCKQotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SFNUU0RpcmVjdG9yeSgpOwotI2Vu
ZGlmCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRKYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOwot
Ci1wcml2YXRlOgotICAgIGVudW0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0
b3J5LCBEb250Q3JlYXRlRGlyZWN0b3J5IH07Ci0KLSAgICBXZWJzaXRlRGF0YVN0b3JlKCk7Ci0K
LSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0
b3J5ID0gQ3JlYXRlRGlyZWN0b3J5KTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSk7Ci0K
LSAgICBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7Ci19
OwotCi19CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGlj
aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZVBvbGljaWVzLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE0
ICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xp
Y2llcy5oIgogCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgIldl
YnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCiAKIG5h
bWVzcGFjZSBBUEkgewogCiBXZWJzaXRlUG9saWNpZXM6OldlYnNpdGVQb2xpY2llcygpID0gZGVm
YXVsdDsKIAotV2Vic2l0ZVBvbGljaWVzOjpXZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxs
b3dlZEF1dG9wbGF5UXVpcmtzLCBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeSBhdXRvcGxh
eVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiBsZWdhY3lDdXN0b21I
ZWFkZXJGaWVsZHMsIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+JiYgY3VzdG9t
SGVhZGVyRmllbGRzLCBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSBwb3BVcFBvbGljeSwgUmVm
UHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKK1dlYnNpdGVQb2xpY2ll
czo6V2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgT3B0aW9uU2V0
PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IGFsbG93ZWRBdXRvcGxheVF1aXJrcywgV2Vi
S2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3kgYXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3Jl
OjpIVFRQSGVhZGVyRmllbGQ+JiYgbGVnYWN5Q3VzdG9tSGVhZGVyRmllbGRzLCBWZWN0b3I8V2Vi
Q29yZTo6Q3VzdG9tSGVhZGVyRmllbGRzPiYmIGN1c3RvbUhlYWRlckZpZWxkcywgV2ViS2l0OjpX
ZWJzaXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3ksIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKICAgICA6IG1fY29udGVudEJsb2NrZXJzRW5hYmxl
ZChjb250ZW50QmxvY2tlcnNFbmFibGVkKQogICAgICwgbV9hbGxvd2VkQXV0b3BsYXlRdWlya3Mo
YWxsb3dlZEF1dG9wbGF5UXVpcmtzKQogICAgICwgbV9hdXRvcGxheVBvbGljeShhdXRvcGxheVBv
bGljeSkKQEAgLTg0LDcgKzg0LDcgQEAgV2Vic2l0ZVBvbGljaWVzOjp+V2Vic2l0ZVBvbGljaWVz
KCkKIHsKIH0KIAotdm9pZCBXZWJzaXRlUG9saWNpZXM6OnNldFdlYnNpdGVEYXRhU3RvcmUoUmVm
UHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKK3ZvaWQgV2Vic2l0ZVBv
bGljaWVzOjpzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBXVEZN
b3ZlKHdlYnNpdGVEYXRhU3RvcmUpOwogfQpAQCAtMTA4LDcgKzEwOCw3IEBAIFdlYktpdDo6V2Vi
c2l0ZVBvbGljaWVzRGF0YSBXZWJzaXRlUG9saWMKICNlbmRpZgogICAgICAgICBXVEZNb3ZlKGN1
c3RvbUhlYWRlckZpZWxkcyksCiAgICAgICAgIHBvcFVwUG9saWN5KCksCi0gICAgICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZSA/IE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnM+IHsgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygp
IH0gOiBXVEY6Om51bGxvcHQsCisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA/IE9wdGlvbmFs
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IHsgbV93ZWJzaXRlRGF0YVN0b3Jl
LT5wYXJhbWV0ZXJzKCkgfSA6IFdURjo6bnVsbG9wdCwKICAgICAgICAgbV9jdXN0b21Vc2VyQWdl
bnQsCiAgICAgICAgIG1fY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVp
cmtzLAogICAgICAgICBtX2N1c3RvbU5hdmlnYXRvclBsYXRmb3JtLApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2ll
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMyArNDEsMTIgQEAKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIHN0
cnVjdCBXZWJzaXRlUG9saWNpZXNEYXRhOwogfQogCiBuYW1lc3BhY2UgQVBJIHsKIAotY2xhc3Mg
V2Vic2l0ZURhdGFTdG9yZTsKLQogY2xhc3MgV2Vic2l0ZVBvbGljaWVzIGZpbmFsIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6V2Vic2l0ZVBvbGljaWVzPiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlUG9saWNpZXM+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2Vic2l0ZVBvbGljaWVzKTsgfQpAQCAtNzksOCArNzgsOCBAQCBwdWJs
aWM6CiAgICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3koKSBjb25zdCB7
IHJldHVybiBtX3BvcFVwUG9saWN5OyB9CiAgICAgdm9pZCBzZXRQb3BVcFBvbGljeShXZWJLaXQ6
OldlYnNpdGVQb3BVcFBvbGljeSBwb2xpY3kpIHsgbV9wb3BVcFBvbGljeSA9IHBvbGljeTsgfQog
Ci0gICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJu
IG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9y
ZShSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJik7CisgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3Jl
LmdldCgpOyB9CisgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0cjxXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU+JiYpOwogCiAgICAgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIGRh
dGEoKTsKIApAQCAtMTE4LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFsbG93Q29u
dGVudENoYW5nZU9ic2VydmVyUXVpcmsoYm9vbCBhbGxvdykgeyBtX2FsbG93Q29udGVudENoYW5n
ZU9ic2VydmVyUXVpcmsgPSBhbGxvdzsgfQogCiBwcml2YXRlOgotICAgIFdlYnNpdGVQb2xpY2ll
cyhib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVB
dXRvcGxheVF1aXJrPiwgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJD
b3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYsIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVs
ZHM+JiYsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5LCBSZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4mJik7CisgICAgV2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwg
T3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+LCBXZWJLaXQ6OldlYnNpdGVB
dXRvcGxheVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiwgVmVjdG9y
PFdlYkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4mJiwgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xp
Y3ksIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+JiYpOwogCiAgICAgYm9vbCBtX2Nv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQgeyB0cnVlIH07CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZUF1dG9wbGF5UXVpcms+IG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtzOwpAQCAtMTI5LDcgKzEy
OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4gbV9s
ZWdhY3lDdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkN1c3RvbUhlYWRl
ckZpZWxkcz4gbV9jdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQ
b2xpY3kgbV9wb3BVcFBvbGljeSB7IFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5OjpEZWZhdWx0
IH07Ci0gICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAg
ICBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAg
ICAgV1RGOjpTdHJpbmcgbV9jdXN0b21Vc2VyQWdlbnQ7CiAgICAgV1RGOjpTdHJpbmcgbV9jdXN0
b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3M7CiAgICAgV1RGOjpTdHJp
bmcgbV9jdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjks
NiBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNzIFByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjsKIGNsYXNzIFNlc3Npb25TdGF0ZTsKIGNsYXNzIFVzZXJTY3JpcHQ7Ci1jbGFzcyBXZWJz
aXRlRGF0YVN0b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogY2xhc3MgV2luZG93RmVhdHVy
ZXM7CiB9CkBAIC0xMTMsNiArMTEyLDcgQEAgY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbmFnZXI7CiBjbGFzcyBXZWJUZXh0Q2hlY2tlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OwogY2xhc3MgV2ViVmlld3BvcnRBdHRyaWJ1dGVzOworY2xhc3MgV2Vic2l0
ZURhdGFTdG9yZTsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOwogCiBXS19B
RERfQVBJX01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiwgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eSkKQEAgLTE2OSw3ICsxNjksNyBAQCBXS19BRERfQVBJX01BUFBJTkco
V0tVc2VyTWVkaWFQZXJtaXNzaW9uCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdFJlZiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSkKIFdLX0FE
RF9BUElfTUFQUElORyhXS1VzZXJTY3JpcHRSZWYsIEFQSTo6VXNlclNjcmlwdCkKIFdLX0FERF9B
UElfTUFQUElORyhXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZiwgV2ViVmlld3BvcnRBdHRyaWJ1dGVz
KQotV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgQVBJOjpXZWJzaXRl
RGF0YVN0b3JlKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb25SZWYsIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tXZWJzaXRlUG9saWNpZXNSZWYsIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2luZG93RmVhdHVyZXNSZWYsIEFQSTo6
V2luZG93RmVhdHVyZXMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ5
NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDQyICsyNiwxOSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCIKIAotI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCi0KIFdL
VHlwZUlEIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRUeXBlSUQoKQogewotICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CisgICAgcmV0
dXJuIDA7CiB9CiAKLXZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9uIGNhbGxiYWNrKQordm9pZCBXS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnMoV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlclJlZiwgdm9pZCosIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luc0Z1bmN0aW9uKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBX
ZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oYXBw
bGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVE
YXRhU3RvcmUuZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdKGF1dG8gZGF0YVJlY29yZHMp
IHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2luczsK
LSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKLSAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKQot
ICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy5hcHBlbmQoQVBJOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBjYWxsYmFjayhXZWJLaXQ6OnRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHNlY3Vy
aXR5T3JpZ2lucykpLnB0cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZv
aWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwgV0tTZWN1cml0
eU9yaWdpblJlZiBvcmlnaW4pCit2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVF
bnRyaWVzRm9yT3JpZ2luKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYsIFdLU2VjdXJpdHlP
cmlnaW5SZWYpCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IFdlYktpdDo6dG9JbXBs
KHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihhcHBsaWNhdGlvbkNhY2hl
TWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0KLSAgICBXZWJLaXQ6OldlYnNpdGVEYXRh
UmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCBXZWJLaXQ6OnRvSW1wbChvcmlnaW4p
LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7Ci0KLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92
ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
LCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsKIH0KIAotdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyKQordm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRl
QWxsRW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmKQogewotICAgIGF1dG8mIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0
ZURhdGFTdG9yZVJlZj4oYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YShXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwg
W10geyB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgJKHJldmlzaW9uIDI0OTczMikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTggKzI3LDE5IEBACiAjZGVmaW5lIFdLQXBwbGljYXRp
b25DYWNoZU1hbmFnZXJfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUg
PFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMi
IHsKICNlbmRpZgogCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ckdldFR5cGVJRCgpOworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJHZXRUeXBlSUQoKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiB0eXBlZGVmIHZvaWQgKCpXS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiko
V0tBcnJheVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9u
IGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRB
cHBsaWNhdGlvbkNhY2hlT3JpZ2lucyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbikgV0tfQ19BUElf
REVQUkVDQVRFRDsKIAotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRl
bGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNh
dGlvbkNhY2hlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pOwotV0tfRVhQT1JU
IHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcik7CitXS19FWFBPUlQg
dm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCBXS1NlY3Vy
aXR5T3JpZ2luUmVmIG9yaWdpbikgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lk
IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpIFdLX0NfQVBJX0RFUFJFQ0FU
RUQ7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCShyZXZpc2lv
biAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5
TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCIKIAotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMu
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZVBvbGljaWVzRGF0YS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw5MCArMjYsMzggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAi
QVBJRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNs
dWRlICJTdG9yYWdlTWFuYWdlci5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUg
IldlYnNpdGVEYXRhUmVjb3JkLmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgotI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlw
ZUlEIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRv
QVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIDA7CiB9CiAK
IFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpCiB7Ci0g
ICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJXZWJLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURldGFpbHNPcmlnaW5LZXkiKS5sZWFrUmVmKCk7Ci0g
ICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBXS1N0cmlu
Z1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKQogewotICAg
IHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZSgiV2ViS2V5VmFs
dWVTdG9yYWdlTWFuYWdlclN0b3JhZ2VEZXRhaWxzQ3JlYXRpb25UaW1lS2V5IikubGVha1JlZigp
OwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogV0tT
dHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgp
CiB7Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJX
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURldGFpbHNNb2RpZmljYXRpb25UaW1lS2V5
IikubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VP
cmlnaW5zKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
LCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3Jh
Z2VPcmlnaW5zRnVuY3Rpb24gY2FsbGJhY2spCi0KK3ZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYs
IHZvaWQqLCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5z
RnVuY3Rpb24pCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVy
cHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oa2V5VmFsdWVTdG9yYWdlTWFuYWdlcikp
LT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5mZXRjaERhdGEoeyBX
ZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3Rv
cmFnZSB9LCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10oYXV0byBkYXRhUmVjb3JkcykgewotICAg
ICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gc2VjdXJpdHlPcmlnaW5zOwotICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVjb3JkcykgewotICAgICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBkYXRhUmVjb3JkLm9yaWdpbnMpCi0gICAgICAg
ICAgICAgICAgc2VjdXJpdHlPcmlnaW5zLmFwcGVuZChBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUob3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxi
YWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHNlY3VyaXR5T3JpZ2lucykpLnB0
cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1bmN0aW9uIGNhbGxiYWNr
KQordm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwgdm9pZCosIFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5jdGlvbikKIHsKLSAgICBhdXRvJiB3ZWJz
aXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3Jl
UmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3
ZWJzaXRlRGF0YVN0b3JlLmdldExvY2FsU3RvcmFnZURldGFpbHMoW2NvbnRleHQsIGNhbGxiYWNr
XShhdXRvJiYgZGV0YWlscykgewotICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4g
cmVzdWx0OwotICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkZXRhaWxzLnNp
emUoKSk7Ci0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkZXRhaWwgOiBkZXRhaWxzKSB7Ci0g
ICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSTo6T2JqZWN0Pj4gZGV0YWlsTWFw
OwotICAgICAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKGRldGFpbC5vcmlnaW5JZGVudGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0K
LSAgICAgICAgICAgIGRldGFpbE1hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ckdldE9yaWdpbktleSgpKS0+c3RyaW5nKCksIG9yaWdpbik7Ci0gICAgICAgICAgICBpZiAoZGV0
YWlsLmNyZWF0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxNYXAuc2V0KHRvSW1wbChX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBB
UEk6OkRvdWJsZTo6Y3JlYXRlKGRldGFpbC5jcmVhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2No
KCkudmFsdWUoKSkpOwotICAgICAgICAgICAgaWYgKGRldGFpbC5tb2RpZmljYXRpb25UaW1lKQot
ICAgICAgICAgICAgICAgIGRldGFpbE1hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3Jl
YXRlKGRldGFpbC5tb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkp
KTsKLQotICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChBUEk6OkRpY3Rpb25hcnk6
OmNyZWF0ZShXVEZNb3ZlKGRldGFpbE1hcCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxi
YWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdCkpLnB0cigpKSwgbnVs
bHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5
VmFsdWVTdG9yYWdlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pCit2b2lkIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmKQogewotICAgIGF1dG8mIHdlYnNp
dGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVS
ZWY+KGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIFdl
YnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURh
dGFUeXBlOjpMb2NhbFN0b3JhZ2UsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRh
dGEoKSk7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFn
ZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKLSAgICB3ZWJzaXRl
RGF0YVN0b3JlLnJlbW92ZURhdGEoeyBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vi
c2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSB9LCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsK
IH0KIAotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKQordm9pZCBXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlclJlZikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJw
cmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSkt
PndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEoeyBX
ZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3Rv
cmFnZSB9LCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtdIHsgfSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXIuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDMwICsy
NywzMSBAQAogI2RlZmluZSBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJfaAogCiAjaW5jbHVkZSA8
V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lm
ZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi1XS19FWFBPUlQgV0tUeXBl
SUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlEKCk7CitXS19FWFBPUlQgV0tUeXBl
SUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlEKCkgV0tfQ19BUElfREVQUkVDQVRF
RDsKIAogLyogVmFsdWUgdHlwZTogV0tTZWN1cml0eU9yaWdpblJlZiAqLwotV0tfRVhQT1JUIFdL
U3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpOworV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpIFdL
X0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5cGU6IFdLRG91YmxlUmVmLCBzZWNvbmRz
IHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpOworV0tfRVhQT1JUIFdL
U3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpIFdL
X0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5cGU6IFdLRG91YmxlUmVmLCBzZWNvbmRz
IHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKTsKK1dLX0VYUE9S
VCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1l
S2V5KCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uKShXS0FycmF5UmVm
LCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zRnVuY3Rpb24gZnVuY3Rpb24pOworV0tf
RVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3Jp
Z2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwg
dm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdl
T3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiB0eXBlZGVm
IHZvaWQgKCpXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2lu
RnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdLRXJyb3JSZWYsIHZvaWQqKTsKLVdLX0VYUE9SVCB2b2lk
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4oV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRl
eHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5j
dGlvbiBmdW5jdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24gZnVuY3Rpb24pIFdLX0NfQVBJX0RF
UFJFQ0FURUQ7CiAKLVdLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0
ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3Rv
cmFnZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKTsKLVdLX0VYUE9SVCB2b2lk
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpOworV0tfRVhQT1JUIHZvaWQgV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJl
ZiBvcmlnaW4pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CitXS19FWFBPUlQgdm9pZCBXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVz
b3VyY2VDYWNoZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNjcgKzI2LDE5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oIgogCi0jaW5jbHVkZSAiQVBJQXJy
YXkuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSAiV0tBUElD
YXN0LmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNvcmQuaCIKLQotdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKLQogV0tUeXBlSUQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldFR5cGVJRCgpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7Ci19Ci0K
LXN0YXRpYyBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZXMoV0tS
ZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikKLXsKLSAgICBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzIHsgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlD
YWNoZSB9OwotCi0gICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gV0tSZXNvdXJjZUNhY2hlc1RvQ2xl
YXJBbGwpCi0gICAgICAgIHdlYnNpdGVEYXRhVHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlz
a0NhY2hlKTsKLQotICAgIHJldHVybiB3ZWJzaXRlRGF0YVR5cGVzOworICAgIHJldHVybiAwOwog
fQogCi12b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMoV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFjaykKK3ZvaWQgV0tSZXNv
dXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVm
LCB2b2lkKiwgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uKQog
ewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxX
S1dlYnNpdGVEYXRhU3RvcmVSZWY+KGNhY2hlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7
Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5mZXRjaERhdGEodG9XZWJzaXRlRGF0YVR5cGVzKFdLUmVz
b3VyY2VDYWNoZXNUb0NsZWFyQWxsKSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdKGF1dG8gZGF0
YVJlY29yZHMpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5
T3JpZ2luczsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29y
ZHMpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5v
cmlnaW5zKQotICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy5hcHBlbmQoQVBJOjpTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShzZWN1
cml0eU9yaWdpbnMpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwotICAgIH0pOwogfQogCi12
b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5hZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwg
V0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikKK3ZvaWQgV0tSZXNvdXJjZUNh
Y2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4oV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiwg
V0tTZWN1cml0eU9yaWdpblJlZiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgYXV0
byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURh
dGFTdG9yZVJlZj4oY2FjaGVNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLQotICAgIFZl
Y3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gZGF0YVJlY29yZHM7Ci0KLSAgICB7Ci0gICAgICAgIFdl
YnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNp
dGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigp
LmRhdGEoKSk7Ci0KLSAgICAgICAgZGF0YVJlY29yZHMuYXBwZW5kKGRhdGFSZWNvcmQpOwotICAg
IH0KLQotICAgIGlmIChjYWNoZXNUb0NsZWFyID09IFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyQWxs
KSB7Ci0gICAgICAgIFdlYnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgICAgIGRhdGFS
ZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCB0b0ltcGwob3JpZ2luKS0+c2Vj
dXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotCi0gICAgICAgIGRhdGFSZWNvcmRzLmFwcGVuZChkYXRh
UmVjb3JkKTsKLSAgICB9Ci0KLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEodG9XZWJz
aXRlRGF0YVR5cGVzKGNhY2hlc1RvQ2xlYXIpLCBkYXRhUmVjb3JkcywgW10geyB9KTsKIH0KIAot
dm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFsbE9yaWdpbnMoV0tSZXNv
dXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFy
IGNhY2hlc1RvQ2xlYXIpCit2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9y
QWxsT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmLCBXS1Jlc291cmNlQ2FjaGVzVG9D
bGVhcikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0
X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihjYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFT
dG9yZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YSh0b1dlYnNpdGVEYXRhVHlw
ZXMoY2FjaGVzVG9DbGVhciksIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW10geyB9KTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyX2gKIAogI2luY2x1ZGUg
PFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CiAKICNp
ZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0zOCwxMyArMzksMTMgQEAgZW51bSB7
CiB9OwogdHlwZWRlZiB1aW50MzJfdCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhcjsKIAotV0tfRVhQ
T1JUIFdLVHlwZUlEIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRUeXBlSUQoKTsKK1dLX0VYUE9S
VCBXS1R5cGVJRCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0VHlwZUlEKCkgV0tfQ19BUElfREVQ
UkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hl
T3JpZ2luc0Z1bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBP
UlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zKFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJSZWYgY29udGV4dFJlZiwgdm9pZCogY29udGV4dCwgV0tSZXNvdXJjZUNhY2hl
TWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lk
IFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFu
YWdlclJlZiBjb250ZXh0UmVmLCB2b2lkKiBjb250ZXh0LCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2Vy
R2V0Q2FjaGVPcmlnaW5zRnVuY3Rpb24gZnVuY3Rpb24pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAK
LVdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2lu
KFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5nZXIsIFdLU2VjdXJpdHlPcmlnaW5S
ZWYgb3JpZ2luLCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKTsKLVdLX0VY
UE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhX
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwgV0tSZXNvdXJjZUNhY2hlc1Rv
Q2xlYXIgY2FjaGVzVG9DbGVhcik7CitXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyQ2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFu
Z2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIg
Y2FjaGVzVG9DbGVhcikgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lkIFdLUmVz
b3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVN
YW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9D
bGVhcikgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDcgQEAKICNpbmNsdWRlICJXS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCIKIAogI2luY2x1
ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1
ZGUgIkFQSUhUVFBDb29raWVTdG9yZS5oIgogI2luY2x1ZGUgIk1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mu
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKQEAgLTQxLDI5ICs0MSwzMCBAQAogI2luY2x1ZGUg
IldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0Fn
Z3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIFdLVHlwZUlEIFdLV2Vic2l0ZURh
dGFTdG9yZUdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OkFQSVR5cGUpOwogfQogCiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
V0tXZWJzaXRlRGF0YVN0b3JlR2V0RGVmYXVsdERhdGFTdG9yZSgpCiB7Ci0gICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRy
KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpKTsKIH0KIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdL
V2Vic2l0ZURhdGFTdG9yZUNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKQogewotICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNp
c3RlbnREYXRhU3RvcmUoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKS5sZWFrUmVmKCkp
OwogfQogCiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlV2l0
aENvbmZpZ3VyYXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblJlZiBjb25maWd1
cmF0aW9uKQogewogICAgIGF1dG8gc2Vzc2lvbklEID0gV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJh
dGlvbiktPmlzUGVyc2lzdGVudCgpID8gUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlUGVyc2lzdGVu
dFNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlRXBoZW1lcmFsU2Vzc2lvbklE
KCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3Jl
YXRlKCpXZWJLaXQ6OnRvSW1wbChjb25maWd1cmF0aW9uKSwgc2Vzc2lvbklEKS5sZWFrUmVmKCkp
OworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNy
ZWF0ZSgqV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJhdGlvbiksIHNlc3Npb25JRCkubGVha1JlZigp
KTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZSkK
QEAgLTgzLDEzICs4NCwxMyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9h
ZFN0CiAKIFdLSFRUUENvb2tpZVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUdldEhUVFBDb29r
aWVTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKQogewotICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5odHRwQ29va2ll
U3RvcmUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPmNvb2tpZVN0b3JlKCkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVXaXRoQ29tcGxldGlvbkhhbmRsZXIoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWJ1Z01vZGVGdW5jdGlvbiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGVuYWJsZSwgW2NvbnRleHQsIGNvbXBsZXRpb25I
YW5kbGVyXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGUsIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
cl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsKICNlbHNl
CkBAIC0xMDAsNyArMTAxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc0RlYnVnTW9kZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdN
b2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQs
IGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMTEwLDcg
KzExMSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3QKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RTZWVuKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGRvdWJsZSBzZWNvbmRzLCB2b2lk
KiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzTGFzdFNlZW5GdW5jdGlvbiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXRMYXN0U2VlbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFNl
Y29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldExhc3RTZWVuKFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQs
IGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQp
OwogICAgIH0pOwogI2Vsc2UKQEAgLTEyMSw3ICsxMjIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NMYXN0CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3Rp
Y3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0
YVN0b3JlKCk7CisgICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZhbHVlKQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3Jl
LnNldFByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CkBAIC0xMzksNyArMTQwLDcg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldgogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVz
b3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byYgd2Vic2l0
ZURhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZh
bHVlKQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlLnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21w
bGV0aW9uSGFuZGxlcl0gewpAQCAtMTU3LDcgKzE1OCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1ZlcnkKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlRHVtcFJlc291cmNl
TG9hZFN0YXRpc3RpY3MoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3NGdW5j
dGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kdW1w
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbY29udGV4dCwgY2FsbGJhY2tdIChjb25zdCBTdHJpbmcm
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbY29udGV4dCwgY2FsbGJhY2tdIChjb25z
dCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKICAgICAgICAgY2FsbGJhY2soV2Vi
S2l0Ojp0b0FQSShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmltcGwoKSksIGNvbnRleHQpOwogICAg
IH0pOwogI2Vsc2UKQEAgLTE2OCw3ICsxNjksNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUR1
bXBSZXNvdXJjZUxvYWRTCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJz
aXRlRGF0YVN0b3JlKCkuaXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ByZXZhbGVu
dFJlc291cmNlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNQcmV2YWxl
bnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKSB7CiAgICAgICAgIGNh
bGxiYWNrKGlzUHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAg
LTE3OSw3ICsxODAsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZh
CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJj
ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmlzVmVyeVByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzVmVyeVByZXZhbGVudFJl
c291cmNlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UpIHsKICAgICAg
ICAgY2FsbGJhY2soaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwogICAgIH0pOwog
I2Vsc2UKQEAgLTE5MCw3ICsxOTEsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRB
c1N1YnJlc291cmNlVW5kZXIoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tT
dHJpbmdSZWYgc3VicmVzb3VyY2VIb3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YnJl
c291cmNlVW5kZXJGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChzdWJyZXNvdXJjZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJv
b2wgaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNr
XShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikgewogICAgICAgICBjYWxsYmFj
ayhpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIsIGNvbnRleHQpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTIwMSw3ICsyMDIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1
YkZyYW1lVW5kZXIoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgc3ViRnJhbWVIb3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXJG
dW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5p
c1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJG
cmFtZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVI
b3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNT
dWJGcmFtZVVuZGVyKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNSZWdp
c3RlcmVkQXNTdWJGcmFtZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVI
b3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJh
bWVVbmRlcikgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIs
IGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIxMiw3ICsyMTMsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlz
U3RhdGlzdGljc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tLCBXS1N0cmluZ1Jl
ZiBob3N0UmVkaXJlY3RlZFRvLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0
YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGlu
Z1RvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmco
KSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8p
IHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5pc1JlZ2lzdGVyZWRBc1JlZGly
ZWN0aW5nVG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5z
dHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbykgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8sIGNv
bnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIyMyw3ICsyMjQsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNv
bXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgYXV0byYgZGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIGRhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZhbHVlKQogICAgICAgICBkYXRhU3RvcmUubG9nVXNl
ckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CkBAIC0yNDEsNyArMjQyLDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSAogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlSXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uRnVuY3Rpb24gY2FsbGJh
Y2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaGFzSGFkVXNlckludGVy
YWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbikgeworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBo
YXNIYWRVc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSGFkVXNlckludGVy
YWN0aW9uLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yNTIsMTQgKzI1MywxNCBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hhc0hhCiB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0R3JhbmRmYXRoZXJlZChVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIHZhbHVlLCBbXSB7IH0pOworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldEdyYW5kZmF0aGVyZWQoVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCB2YWx1ZSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZEZ1bmN0aW9uIGNh
bGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhhc0hhZFVzZXJJ
bnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc0dyYW5kZmF0aGVyZWQpIHsKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNH
cmFuZGZhdGhlcmVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzR3JhbmRmYXRoZXJlZCwgY29udGV4
dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMjcwLDQ5ICsyNzEsNDkgQEAgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NHcmFuZAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCkK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9
KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTdWJmcmFtZVVuZGVyVG9w
RnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9
KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0KQogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbXSB7IH0pOwor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbXSB7IH0p
OwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvKQogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW10geyB9KTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtdIHsg
fSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKQog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSks
IFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0U3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3Ry
aW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0
cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0
ZWRUbykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkp
LCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSks
IFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
KSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkp
LCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJv
bSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0RnJvbShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkp
LCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJp
bmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBmcm9tSG9zdCwgV0tTdHJpbmdSZWYgdG9I
b3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NT
aXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRp
b25Gb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoZnJvbUhvc3QpLT5zdHJpbmco
KSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9Ib3N0KS0+c3RyaW5nKCkpLCBbY29udGV4
dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRDcm9z
c1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGZyb21Ib3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRv
SG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNr
KGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTMyMyw3ICszMjQsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDcm9zCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNh
bGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFRpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNr
XSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0VGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbihTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAg
ICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMzM0LDcgKzMzNSw3
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWUKIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNGdW5jdGlv
biBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVs
ZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoW2NvbnRleHQsIGNhbGxiYWNrXSB7
CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1bGVTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHNQcm9jZXNzaW5nKFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxs
YmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0zNDUsNyArMzQ2LDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vzcwogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Vw
ZGF0ZUNvb2tpZUJsb2NraW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShb
Y29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdKCkgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbnRleHQsIGNvbXBsZXRp
b25IYW5kbGVyXSgpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAg
fSk7CiAjZWxzZQpAQCAtMzU2LDIxICszNTcsMjEgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzVXBkYXRlQwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzU3VibWl0
VGVsZW1ldHJ5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc3VibWl0VGVsZW1ldHJ5KCk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c3VibWl0VGVsZW1ldHJ5KCk7CiAjZW5kaWYKIH0KIAog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJl
Y29yZHNXZXJlU2Nhbm5lZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29s
IHZhbHVlKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUsIFtdIHsgfSk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZCh2YWx1ZSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Rlc3QodmFsdWUsIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KHZhbHVl
LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAg
fSk7CiAjZWxzZQpAQCAtMzgxLDQ5ICszODIsNDkgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzSXNSdQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hv
dWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNv
cmRzUmVtb3ZhbCh2YWx1ZSwgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFs
KHZhbHVlLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZCh2YWx1ZSwgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNl
dE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKHZhbHVlLCBbXSgpIHsgfSk7CiAj
ZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTWluaW11bVRp
bWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIGRvdWJsZSBzZWNvbmRzKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHsgc2Vj
b25kcyB9LCBbXSgpIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0
TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMgeyBzZWNvbmRzIH0s
IFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgZG91YmxlIHNlY29uZHMpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtdKCkgeyB9KTsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vj
b25kcyB7IHNlY29uZHMgfSwgW10oKSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc01heFN0YXRpc3RpY3NFbnRyaWVzKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVkIGVudHJpZXMpCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TWF4U3RhdGlzdGljc0VudHJpZXMoZW50cmllcywgW10o
KSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE1heFN0YXRpc3Rp
Y3NFbnRyaWVzKGVudHJpZXMsIFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcnVuZUVudHJpZXNEb3duVG8oV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgdW5zaWduZWQgZW50cmllcykKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQcnVuZUVudHJpZXNEb3duVG8oZW50cmllcywgW10oKSB7
IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFBydW5lRW50cmllc0Rv
d25UbyhlbnRyaWVzLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZUZ1bmN0aW9uIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6
OlllcywgW2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdlYktpdDo6U2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAg
ICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTQzNCw3ICs0MzUsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZp
ZWRTaW5jZUhvdXJzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVk
IGhvdXJzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vyc0Z1bmN0aW9uIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJ
bk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWU6Om5vdygpIC0gU2Vjb25kczo6ZnJvbUhvdXJz
KGhvdXJzKSwgV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6OlllcywgW2NvbnRl
eHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lOjpub3coKSAtIFNlY29uZHM6
OmZyb21Ib3Vycyhob3VycyksIFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZ
ZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwog
ICAgIH0pOwogI2Vsc2UKQEAgLTQ0NSw3ICs0NDYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NDbGVhckluCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVh
clRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhy
b3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNl
dDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGlt
ZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhj
b250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTQ1Myw3ICs0NTQsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NDbGVhclRoCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NEZWxldGVDb29raWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVz
dGluZ0Z1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgW2NvbnRleHQsIGNhbGxiYWNr
XSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZGVsZXRlQ29va2llc0ZvclRl
c3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBpbmNsdWRl
SHR0cE9ubHlDb29raWVzLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2so
Y29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNDY0LDcgKzQ2NSw3IEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUMKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc0hhc0xvY2FsU3RvcmFnZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0
aXN0aWNzSGFzTG9jYWxTdG9yYWdlRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuaGFzTG9jYWxTdG9yYWdlRm9yVGVzdGluZyhVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9v
bCBoYXNMb2NhbFN0b3JhZ2UpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5o
YXNMb2NhbFN0b3JhZ2VGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhhc0xvY2FsU3RvcmFnZSkgewog
ICAgICAgICBjYWxsYmFjayhoYXNMb2NhbFN0b3JhZ2UsIGNvbnRleHQpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTQ3NSw3ICs0NzYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NI
YXNMb2NhCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNh
cChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcywgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2Fw
RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29uZHMg
fSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29u
ZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwog
ICAgIH0pOwogI2Vsc2UKQEAgLTQ4Niw3ICs0ODcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NDYWNoCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJ
c29sYXRlZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJp
bmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hh
c0lzb2xhdGVkU2Vzc2lvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLmhhc0lzb2xhdGVkU2Vzc2lvbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wg
aGFzSXNvbGF0ZWRTZXNzaW9uKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
aGFzSXNvbGF0ZWRTZXNzaW9uRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNJc29sYXRlZFNlc3Np
b24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSXNvbGF0ZWRTZXNzaW9uLCBjb250ZXh0KTsKICAg
ICB9KTsKICNlbHNlCkBAIC01MDEsNyArNTAyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzUmVzZXRUbwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAg
ICB9KTsKIAotICAgIGF1dG8mIHN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHN0b3JlID0gKldlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZik7CiAgICAgc3RvcmUuY2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzSW5XZWJQ
cm9jZXNzZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVm
KCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0g
eyB9KTsKICAgICBzdG9yZS5yZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9y
VGVzdGluZyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0geyB9KTsKQEAgLTUxNiw3ICs1MTcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NSZXNldFRvCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spCiB7
CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJL
aXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRp
bWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5
KCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAg
ICB9KTsKIH0KQEAgLTUyOCw3ICs1MjksNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92
ZUZldGNoQ2FjaGVGCiAgICAgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFS
ZWNvcmRzID0geyBXVEZNb3ZlKGRhdGFSZWNvcmQpIH07CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpE
T01DYWNoZTsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIGRhdGFSZWNvcmRzLCBbY29udGV4dCwgY2FsbGJh
Y2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFU
eXBlcywgZGF0YVJlY29yZHMsIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFj
ayhjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTUzNiw3ICs1MzcsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92
ZUFsbEluZGV4ZWREYXRhYmFzZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
dm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNl
c0NhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkluZGV4ZWREQkRhdGFi
YXNlczsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQs
IGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0
YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7
CiAgICAgaWYgKGNhbGxiYWNrKQogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsK
QEAgLTU0NSw3ICs1NDYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4
ZWRECiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVSZW1vdmVMb2NhbFN0b3JhZ2VDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8
V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFU
eXBlOjpMb2NhbFN0b3JhZ2U7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5
KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0
LCBjYWxsYmFja10gewogICAgICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgICAgICBjYWxsYmFj
ayhjb250ZXh0KTsKICAgICB9KTsKQEAgLTU1NSw3ICs1NTYsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zOwotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRh
dGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdh
bGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJh
Y2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTY2LDcgKzU2Nyw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVcKIAogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVHZXRGZXRjaENhY2hlT3JpZ2lucyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlT3JpZ2luc0Z1
bmN0aW9uIGNhbGxiYWNrKQogewotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNh
Y2hlLCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0YVJlY29yZHMpIHsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU6OkRPTUNhY2hlLCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0YVJlY29y
ZHMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2lu
czsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsK
ICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5z
KQpAQCAtNTgwLDcgKzU4MSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNo
ZVNpemUKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBm
ZXRjaE9wdGlvbnMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXpl
czsKIAotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KS5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBmZXRjaE9wdGlv
bnMsIFtvcmlnaW4sIGNvbnRleHQsIGNhbGxiYWNrXSAoYXV0byBkYXRhUmVjb3JkcykgeworICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmZldGNoRGF0YShXZWJLaXQ6OldlYnNpdGVE
YXRhVHlwZTo6RE9NQ2FjaGUsIGZldGNoT3B0aW9ucywgW29yaWdpbiwgY29udGV4dCwgY2FsbGJh
Y2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CiAgICAgICAgIGF1dG8gb3JpZ2luRGF0YSA9IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFdlYktpdDo6dG9JbXBsKG9yaWdp
biktPnN0cmluZygpKS0+ZGF0YSgpOwogICAgICAgICBmb3IgKGF1dG8mIGRhdGFSZWNvcmQgOiBk
YXRhUmVjb3JkcykgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWNvcmRPcmlnaW4g
OiBkYXRhUmVjb3JkLm9yaWdpbnMpIHsKQEAgLTU5NywyMyArNTk4LDIzIEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemUKIAogV0tTdHJpbmdSZWYgV0tXZWJzaXRlRGF0
YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQ
SShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0Nv
cGllZEFQSShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSkK
IHsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShXZWJLaXQ6OnRvSW1wbChzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KS0+c3RyaW5nKCkpOworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkoV2ViS2l0Ojp0b0ltcGwoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSktPnN0
cmluZygpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmlnaW5TdG9yYWdl
UXVvdGEoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdWludDY0X3QgcXVvdGEp
CiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnNldFBlck9yaWdpblN0b3JhZ2VRdW90YShxdW90YSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+c2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKHF1b3RhKTsKIH0KIAogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsbERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbnMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKICNpZiBFTkFCTEUoREVWSUNFX09S
SUVOVEFUSU9OKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRh
U3RvcmUoKS5kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIoKS5jbGVh
clBlcm1pc3Npb25zKCk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZGV2aWNl
T3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKCkuY2xlYXJQZXJtaXNzaW9ucygp
OwogI2VuZGlmCiB9CiAKQEAgLTcxMywxNCArNzE0LDE0IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0V2ViQXV0aGVudGljYXQKICAgICAgICAgY29uZmlndXJhdGlvbi5uZmMgPSBXVEZNb3Zl
KG5mYyk7CiAgICAgfQogCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV1RGTW92
ZShjb25maWd1cmF0aW9uKSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJp
YnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBZENsaWNr
QXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQog
ewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2Vi
S2l0OjpXZWJzaXRlRGF0YVR5cGU6OkFkQ2xpY2tBdHRyaWJ1dGlvbnM7Ci0gICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5
cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHJldmlzaW9uIDI0
OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiV0tXZWJz
aXRlUG9saWNpZXMuaCIKIAogI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJB
UElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgogI2luY2x1ZGUgIldL
RGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV2Vic2l0
ZURhdGFTdG9yZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRl
RGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2Vic2l0ZURh
dGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3VybFByb3h5U2V0dGluZ3MuaD4KICNpbmNs
dWRlIDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5o
PgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRh
U3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShyZXZpc2lvbiAyNDk3MzIpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCShub25leGlzdGVudCkKQEAgLTEsMTk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotCi0j
aW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2luY2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMu
aCIKLSNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLSNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbXBvcnQgPFdlYkNvcmUv
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIEFQSSB7Ci0K
LU5TU3RyaW5nICpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJEYXRhYmFz
ZURpcmVjdG9yeSI7Ci1OU1N0cmluZyAqV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0g
QCJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5IjsKLU5TU3RyaW5n
ICpXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdE1lZGlhQ2Fj
aGVEaXJlY3RvcnkiOwotTlNTdHJpbmcgKldlYktpdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlE
ZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSI7Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KCkKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIC8vIFRoaXMgcXVpcmsgdXNlZCB0
byBtYWtlIHRoZXNlIGFwcHMgc2hhcmUgYXBwbGljYXRpb24gY2FjaGUgc3RvcmFnZSwgYnV0IGRv
ZXNuJ3QgYWNjb21wbGlzaCB0aGF0IGFueSBtb3JlLgotICAgIC8vIFByZXNlcnZpbmcgaXQgYXZv
aWRzIHRoZSBuZWVkIHRvIG1pZ3JhdGUgZGF0YSB3aGVuIHVwZ3JhZGluZy4KLSAgICAvLyBGSVhN
RTogSWRlYWxseSB3ZSBzaG91bGQganVzdCBoYXZlIFNhZmFyaSwgV2ViQXBwLCBhbmQgd2ViYm9v
a21hcmtzZCBjcmVhdGUgYSBkYXRhIHN0b3JlIHdpdGgKLSAgICAvLyB0aGlzIGFwcGxpY2F0aW9u
IGNhY2hlIHBhdGgsIGJ1dCB0aGF0J3Mgbm90IHN1cHBvcnRlZCBhcyBvZiByaWdodCBub3cuCi0g
ICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNv
cmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkFwcCgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9u
Ojppc1dlYkJvb2ttYXJrc0QoKSkgewotICAgICAgICBOU1N0cmluZyAqY2FjaGVQYXRoID0gW05T
SG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkv
Q2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJdOwotCi0gICAgICAgIHJldHVybiBXZWJLaXQ6
OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY2FjaGVQYXRoLnN0cmluZ0J5U3RhbmRh
cmRpemluZ1BhdGgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSIpOwot
fQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGly
ZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIkNhY2hlU3RvcmFnZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSIpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCi17
Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlh
Q2FjaGUiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4ZWREQiIpOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKCJTZXJ2aWNlV29ya2VycyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkxvY2FsU3RvcmFnZSIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJNZWRpYUtleXMiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIldlYlNRTCIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Ci19Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIkphdmFTY3JpcHRDb3JlRGVidWciLCBEb250Q3JlYXRlRGlyZWN0b3J5KTsKLX0KLQot
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRl
RGlyZWN0b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hf
b25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKnRlbXBVUkw7Ci0gICAgCi0gICAg
ZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBOU1VSTCAqdXJsID0gW05TVVJM
IGZpbGVVUkxXaXRoUGF0aDpOU1RlbXBvcmFyeURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107
Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgCi0gICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVy
KCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxl
IG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWJ1bmRsZUlk
ZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJ
bmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKLSAgICAgICAgICAgIHVybCA9IFt1cmwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVT
XTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcFVSTCA9IFtbdXJsIFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOwot
ICAgIH0pOwotICAgIAotICAgIE5TVVJMICp1cmwgPSBbdGVtcFVSTCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOwotCi0gICAgaWYgKHNo
b3VsZENyZWF0ZURpcmVjdG9yeSA9PSBDcmVhdGVEaXJlY3RvcnkKLSAgICAgICAgJiYgKCFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRo
SW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJd
KSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVy
bCk7Ci0gICAgCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbjsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgc3Rh
dGljIE5TVVJMICpjYWNoZVVSTDsKLQotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsK
LSAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gVVJM
Rm9yRGlyZWN0b3J5Ok5TQ2FjaGVzRGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sg
YXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07Ci0gICAg
ICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LQotICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7Ci0gICAgICAg
ICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5i
dW5kbGVJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQotICAg
ICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5m
b10ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107Ci0gICAgICAgIH0K
LQotICAgICAgICBjYWNoZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOwotICAgIH0pOwotCi0gICAgTlNVUkwg
KnVybCA9IFtjYWNoZVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFt
ZSBpc0RpcmVjdG9yeTpZRVNdOwotICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVz
OllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKLSAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7Ci0KLSAgICByZXR1cm4gdXJsLmFi
c29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKndlYnNpdGVEYXRh
VVJMOwotCi0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBOU1VSTCAq
dXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNM
aWJyYXJ5RGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JV
Ukw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07Ci0gICAgICAgIGlmICghdXJsKQot
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgICAgICB1cmwg
PSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6
WUVTXTsKLQotICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7Ci0g
ICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVu
ZGxlXS5idW5kbGVJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVy
KQotICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9j
ZXNzSW5mb10ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107Ci0gICAg
ICAgIH0KLQotICAgICAgICB3ZWJzaXRlRGF0YVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07Ci0gICAg
fSk7Ci0KLSAgICBOU1VSTCAqdXJsID0gW3dlYnNpdGVEYXRhVVJMIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107Ci0gICAgaWYgKCFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRo
SW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJd
KQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJs
KTsKLQotICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50
YXRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsMTcgKzEwNSwxNyBAQCBwcml2
YXRlOgogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilkZWZhdWx0RGF0YVN0b3JlCiB7Ci0gICAg
cmV0dXJuIHdyYXBwZXIoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkp
OworICAgIHJldHVybiB3cmFwcGVyKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERh
dGFTdG9yZSgpKTsKIH0KIAogKyAoV0tXZWJzaXRlRGF0YVN0b3JlICopbm9uUGVyc2lzdGVudERh
dGFTdG9yZQogewotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3Jl
YXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcihXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKSk7CiB9CiAKIC0gKHZvaWQp
ZGVhbGxvYwogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5BUEk6OldlYnNpdGVEYXRhU3RvcmU6
On5XZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPldlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKTsKIAogICAgIFtzdXBlciBkZWFsbG9j
XTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCArIChOU1NldCAqKWFsbFdlYnNpdGVEYXRhVHlwZXMK
IAogLSAoV0tIVFRQQ29va2llU3RvcmUgKilodHRwQ29va2llU3RvcmUKIHsKLSAgICByZXR1cm4g
d3JhcHBlcihfd2Vic2l0ZURhdGFTdG9yZS0+aHR0cENvb2tpZVN0b3JlKCkpOworICAgIHJldHVy
biB3cmFwcGVyKF93ZWJzaXRlRGF0YVN0b3JlLT5jb29raWVTdG9yZSgpKTsKIH0KIAogc3RhdGlj
IFdhbGxUaW1lIHRvU3lzdGVtQ2xvY2tUaW1lKE5TRGF0ZSAqZGF0ZSkKQEAgLTE4Niw3ICsxODYs
NyBAQCAtICh2b2lkKWZldGNoRGF0YVJlY29yZHNPZlR5cGVzOihOU1NldCAqCiAtICh2b2lkKXJl
bW92ZURhdGFPZlR5cGVzOihOU1NldCAqKWRhdGFUeXBlcyBtb2RpZmllZFNpbmNlOihOU0RhdGUg
KilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxl
cgogewogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKTsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnJlbW92ZURhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwgdG9TeXN0
ZW1DbG9ja1RpbWUoZGF0ZSA/IGRhdGUgOiBbTlNEYXRlIGRpc3RhbnRQYXN0XSksIFtjb21wbGV0
aW9uSGFuZGxlckNvcHldIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+cmVtb3ZlRGF0YShXZWJL
aXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCB0b1N5c3RlbUNsb2NrVGltZShkYXRl
ID8gZGF0ZSA6IFtOU0RhdGUgZGlzdGFudFBhc3RdKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0g
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkoKTsKICAgICB9KTsKIH0KQEAgLTIwNSw3
ICsyMDUsNyBAQCAtICh2b2lkKXJlbW92ZURhdGFPZlR5cGVzOihOU1NldCAqKWRhdGFUCiB7CiAg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpOwogCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1v
dmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIHRvV2Vic2l0ZURh
dGFSZWNvcmRzKGRhdGFSZWNvcmRzKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0geworICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT5yZW1vdmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRh
dGFUeXBlcyksIHRvV2Vic2l0ZURhdGFSZWNvcmRzKGRhdGFSZWNvcmRzKSwgW2NvbXBsZXRpb25I
YW5kbGVyQ29weV0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkoKTsKICAgICB9KTsK
IH0KQEAgLTI0MCwxMiArMjQwLDEyIEBAICsgKE5TU2V0PE5TU3RyaW5nICo+ICopX2FsbFdlYnNp
dGVEYXRhVHkKIAogKyAoQk9PTClfZGVmYXVsdERhdGFTdG9yZUV4aXN0cwogewotICAgIHJldHVy
biBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCk7
CiB9CiAKICsgKHZvaWQpX2RlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nCiB7Ci0gICAg
cmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRl
c3RpbmcoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVEZWZh
dWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwogfQogCiAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRo
Q29uZmlndXJhdGlvbjooX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKiljb25maWd1
cmF0aW9uCkBAIC0yNTMsNyArMjUzLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZp
Z3VyYXRpb246KAogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgYXV0byBjb25maWcgPSBjb25maWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKSA6
IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOworICAgIGF1
dG8gY29uZmlnID0gY29uZmlndXJhdGlvbi5pc1BlcnNpc3RlbnQgPyBXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkgOiBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKIAogICAgIFJFTEVBU0VfQVNTRVJU
KGNvbmZpZy0+aXNQZXJzaXN0ZW50KCkgPT0gY29uZmlndXJhdGlvbi5pc1BlcnNpc3RlbnQpOwog
CkBAIC0zMTIsNyArMzEyLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRp
b246KAogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBjb25maWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/
IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZVBlcnNpc3RlbnRTZXNzaW9uSUQoKSA6IFBBTDo6U2Vz
c2lvbklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25JRCgpOwogCi0gICAgQVBJOjpPYmplY3Q6
OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OldlYnNpdGVEYXRhU3RvcmU+KHNlbGYsIFdURk1vdmUo
Y29uZmlnKSwgc2Vzc2lvbklEKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVy
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4oc2VsZiwgV1RGTW92ZShjb25maWcpLCBzZXNzaW9u
SUQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0zMjUsNyArMzI1LDcgQEAgLSAodm9pZClf
ZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0PAogICAgIGlmIChvcHRpb25zICYgX1dLV2Vi
c2l0ZURhdGFTdG9yZUZldGNoT3B0aW9uQ29tcHV0ZVNpemVzKQogICAgICAgICBmZXRjaE9wdGlv
bnMuYWRkKFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKTsKIAot
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZmV0Y2hEYXRhKFdlYktp
dDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIGZldGNoT3B0aW9ucywgW2NvbXBsZXRp
b25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXJDb3B5KV0oYXV0byB3ZWJz
aXRlRGF0YVJlY29yZHMpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+ZmV0Y2hEYXRhKFdlYktp
dDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIGZldGNoT3B0aW9ucywgW2NvbXBsZXRp
b25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXJDb3B5KV0oYXV0byB3ZWJz
aXRlRGF0YVJlY29yZHMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGVs
ZW1lbnRzOwogICAgICAgICBlbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHdlYnNpdGVE
YXRhUmVjb3Jkcy5zaXplKCkpOwogCkBAIC0zMzgsMTggKzMzOCwxOCBAQCAtICh2b2lkKV9mZXRj
aERhdGFSZWNvcmRzT2ZUeXBlczooTlNTZXQ8CiAKIC0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gX3dl
YnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7CiB9CiAKIC0g
KHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKIHsK
LSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKIH0KIAogLSAoQk9PTClfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOworICAgIHJldHVybiBfd2Vi
c2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOwogI2Vsc2UK
ICAgICByZXR1cm4gTk87CiAjZW5kaWYKQEAgLTM1OCw3ICszNTgsNyBAQCAtIChCT09MKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlCiAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGVidWdNb2RlOihCT09MKWVuYWJsZWQKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGVkKTsKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGVkKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBAIC0zNjYsMTA2ICsz
NjYsMTA2IEBAIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z00KIAogLSAo
TlNVSW50ZWdlcilfcGVyT3JpZ2luU3RvcmFnZVF1b3RhCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRl
RGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7Cisg
ICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5wZXJPcmlnaW5TdG9yYWdlUXVvdGEoKTsKIH0K
IAogLSAodm9pZClfc2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhOihOU1VJbnRlZ2VyKXNpemUKIHsK
LSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFBlck9yaWdpblN0
b3JhZ2VRdW90YShzaXplKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UGVyT3JpZ2luU3Rv
cmFnZVF1b3RhKHNpemUpOwogfQogCiAtIChOU1N0cmluZyAqKV9jYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5j
YWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmNh
Y2hlU3RvcmFnZURpcmVjdG9yeSgpOwogfQogCiAtICh2b2lkKV9zZXRDYWNoZVN0b3JhZ2VEaXJl
Y3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAg
ICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7
CiB9CiAKIC0gKE5TU3RyaW5nICopX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkK
IHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0
YVN0b3JlLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CiB9CiAKIC0gKHZv
aWQpX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6KE5TU3RyaW5nICopZGly
ZWN0b3J5CiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgX3dlYnNp
dGVEYXRhU3RvcmUtPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoZGlyZWN0
b3J5KTsKIH0KIAogLSAodm9pZClfc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOihOU1N0cmlu
ZyAqKWlkZW50aWZpZXIKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKGlkZW50aWZpZXIpOwogfQog
CiAtIChOU1N0cmluZyAqKV9ib3VuZEludGVyZmFjZUlkZW50aWZpZXIKIHsKLSAgICByZXR1cm4g
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5ib3VuZEludGVyZmFjZUlkZW50
aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmJvdW5kSW50ZXJmYWNlSWRl
bnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRBbGxvd3NDZWxsdWxhckFjY2VzczooQk9PTClh
bGxvd3MKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEFs
bG93c0NlbGx1bGFyQWNjZXNzKGFsbG93cyA/IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6
OlllcyA6IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6Ok5vKTsKKyAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+c2V0QWxsb3dzQ2VsbHVsYXJBY2Nlc3MoYWxsb3dzID8gV2ViS2l0OjpBbGxvd3ND
ZWxsdWxhckFjY2Vzczo6WWVzIDogV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6Tm8pOwog
fQogCiAtIChCT09MKV9hbGxvd3NDZWxsdWxhckFjY2VzcwogewotICAgIHJldHVybiBfd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmFsbG93c0NlbGx1bGFyQWNjZXNzKCkgPT0g
V2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzOworICAgIHJldHVybiBfd2Vic2l0ZURh
dGFTdG9yZS0+YWxsb3dzQ2VsbHVsYXJBY2Nlc3MoKSA9PSBXZWJLaXQ6OkFsbG93c0NlbGx1bGFy
QWNjZXNzOjpZZXM7CiB9CiAKIC0gKHZvaWQpX3NldFByb3h5Q29uZmlndXJhdGlvbjooTlNEaWN0
aW9uYXJ5ICopY29uZmlndXJhdGlvbgogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuc2V0UHJveHlDb25maWd1cmF0aW9uKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlS
ZWYpY29uZmlndXJhdGlvbik7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFByb3h5Q29uZmln
dXJhdGlvbigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNvbmZpZ3VyYXRpb24pOwogfQogCiAt
IChOU1N0cmluZyAqKV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIKIHsKLSAgICBy
ZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnNv
dXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRTb3Vy
Y2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcgogewot
ICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTb3VyY2VB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgaWYgKCFfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGlkZW50aWZp
ZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1h
dDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgY2Fubm90IGJlIGNhbGxl
ZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJdOwogfQogCiAtIChOU1N0cmluZyAqKV9zb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVE
YXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlk
ZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnNvdXJjZUFwcGxpY2F0
aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRTb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcgogewotICAgIGlm
ICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgaWYgKCFfd2Vic2l0ZURh
dGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKGlkZW50aWZp
ZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1h
dDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIgY2Fubm90IGJlIGNh
bGxlZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJdOwogfQogCiAtICh2b2lkKV9zZXRBbGxv
d3NUTFNGYWxsYmFjazooQk9PTClhbGxvd3MKIHsKLSAgICBpZiAoIV93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0QWxsb3dzVExTRmFsbGJhY2soYWxsb3dzKSkKKyAgICBp
ZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRBbGxvd3NUTFNGYWxsYmFjayhhbGxvd3MpKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1hdDpAIl9zZXRB
bGxvd3NUTFNGYWxsYmFjayBjYW5ub3QgYmUgY2FsbGVkIGFmdGVyIG5ldHdvcmtpbmcgaGFzIGJl
Z3VuIl07CiB9CiAKIC0gKEJPT0wpX2FsbG93c1RMU0ZhbGxiYWNrCiB7Ci0gICAgcmV0dXJuIF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJhY2soKTsK
KyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmFsbG93c1RMU0ZhbGxiYWNrKCk7CiB9CiAK
IC0gKE5TRGljdGlvbmFyeSAqKV9wcm94eUNvbmZpZ3VyYXRpb24KIHsKLSAgICByZXR1cm4gKF9f
YnJpZGdlIE5TRGljdGlvbmFyeSAqKV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucHJveHlDb25maWd1cmF0aW9uKCk7CisgICAgcmV0dXJuIChfX2JyaWRnZSBOU0RpY3Rpb25h
cnkgKilfd2Vic2l0ZURhdGFTdG9yZS0+cHJveHlDb25maWd1cmF0aW9uKCk7CiB9CiAKIC0gKE5T
VVJMICopX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5CiB7Ci0gICAgcmV0dXJuIFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6X3dlYnNpdGVEYXRhU3RvcmUtPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpfd2Vic2l0ZURhdGFTdG9yZS0+Y29uZmlndXJhdGlvbigpLmluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAogLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NldFNob3VsZFN1Ym1pdFRlbGVtZXRyeTooQk9PTCl2YWx1ZQogewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAg
ICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCk7CiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00ODAsMTMgKzQ4MCwx
MyBAQCAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdGluCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChjYWxsYmFjaykgewotICAgICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soW2NhbGxiYWNr
ID0gbWFrZUJsb2NrUHRyKGNhbGxiYWNrKSwgc2VsZl0oY29uc3QgU3RyaW5nJiBldmVudCkgewor
ICAgICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhb
Y2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoY2FsbGJhY2spLCBzZWxmXShjb25zdCBTdHJpbmcmIGV2
ZW50KSB7CiAgICAgICAgICAgICBjYWxsYmFjayhzZWxmLCBldmVudCk7CiAgICAgICAgIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKG51bGxwdHIpOworICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT5zZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKG51bGxwdHIpOwog
I2VuZGlmCiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNj
ZXNzRW50cmllc0ZvcjooCiAgICAgfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKHdlYlBhZ2VQcm94eS0+aWRlbnRpZmllcigpLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGRvbWFpbnMp
IHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMod2Vi
UGFnZVByb3h5LT5pZGVudGlmaWVyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZG9tYWlucykgewogICAgICAgICBWZWN0b3I8UmVm
UHRyPEFQSTo6T2JqZWN0Pj4gYXBpRG9tYWluczsKICAgICAgICAgYXBpRG9tYWlucy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGRvbWFpbnMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBkb21h
aW4gOiBkb21haW5zKQpAQCAtNTI0LDcgKzUyNCw3IEBAIC0gKHZvaWQpX2dldEFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzRm9yOigKIC0gKHZvaWQpX3NjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGU6
KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUt
PnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTM1LDcgKzUzNSw3IEBAIC0gKHZvaWQpX3NjaGVkdWxl
Q29va2llQmxvY2tpbmdVcGRhdGU6KHYKIC0gKHZvaWQpX3NldFByZXZhbGVudERvbWFpbjooTlNV
UkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25I
YW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFByZXZhbGVudFJlc291cmNlKFVS
TChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UHJldmFsZW50UmVzb3VyY2Uo
VVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTU0Niw3ICs1NDYsNyBAQCAtICh2b2lkKV9zZXRQcmV2YWxlbnREb21haW46KE5TVVJM
ICopZG9tCiAtICh2b2lkKV9nZXRJc1ByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb21haW4gY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZW5h
YmxlZCkgeworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChk
b21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXShib29sIGVuYWJsZWQpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW5hYmxlZCk7
CiAgICAgfSk7CiAjZWxzZQpAQCAtNTU3LDcgKzU1Nyw3IEBAIC0gKHZvaWQpX2dldElzUHJldmFs
ZW50RG9tYWluOihOU1VSTCAqKWQKIC0gKHZvaWQpX2NsZWFyUHJldmFsZW50RG9tYWluOihOU1VS
TCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhh
bmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShV
UkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmNsZWFyUHJldmFsZW50UmVzb3Vy
Y2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwog
I2Vsc2UKQEAgLTU2OCw3ICs1NjgsNyBAQCAtICh2b2lkKV9jbGVhclByZXZhbGVudERvbWFpbjoo
TlNVUkwgKilkCiAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOih2b2lk
ICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5z
Y2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVE
YXRhU3RvcmUtPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhbY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKICNlbHNlCkBAIC01NzgsMTggKzU3
OCwxOCBAQCAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzCiAKIC0gKGJv
b2wpX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyCiB7Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMoV2ViQ29yZTo6c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGFiYXNlRmls
ZW5hbWUoX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhXZWJDb3JlOjpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShf
d2Vic2l0ZURhdGFTdG9yZS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7
CiB9CiAKIC0gKGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+KV9kZWxlZ2F0ZQogewot
ICAgIHJldHVybiBfZGVsZWdhdGUuZ2V0KCk7CisgICAgcmV0dXJuIF9kZWxlZ2F0ZS5nZXQoKS5n
ZXQoKTsKIH0KIAogLSAodm9pZClzZXRfZGVsZWdhdGU6KGlkIDxfV0tXZWJzaXRlRGF0YVN0b3Jl
RGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgX3dl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRDbGllbnQobWFrZVVuaXF1ZVJl
ZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PihkZWxlZ2F0ZSkpOworICAgIF93ZWJzaXRlRGF0YVN0
b3JlLT5zZXRDbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PihkZWxl
Z2F0ZSkpOwogfQogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEyICsyNSwxMyBA
QAogCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgiCiAKLSNpbXBvcnQgIkFQ
SVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0ICJXZWJz
aXRlRGF0YVN0b3JlLmgiCisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpXZWJzaXRl
RGF0YVN0b3JlPiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPFdlYnNpdGVEYXRh
U3RvcmU+IHsKICAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBXS1dlYnNpdGVEYXRhU3RvcmU7CiB9
OwogCkBAIC0zOCw3ICszOSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJ
OjpXZWIKIAogQGludGVyZmFjZSBXS1dlYnNpdGVEYXRhU3RvcmUgKCkgPFdLT2JqZWN0PiB7CiBA
cGFja2FnZQotICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OldlYnNpdGVEYXRhU3RvcmU+IF93
ZWJzaXRlRGF0YVN0b3JlOwotICAgIFJldGFpblB0cjxpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURl
bGVnYXRlPiA+IF9kZWxlZ2F0ZTsKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8V2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlPiBfd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBXZWFrT2JqQ1B0cjxpZCA8X1dL
V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsKIH0KIEBlbmQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJz
aXRlRGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgSWdh
bGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFQSVdl
YnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVk
ZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgotCi0jaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBC
QVNFX0RJUkVDVE9SWSAid2Via2l0Z3RrIgotI2VsaWYgUExBVEZPUk0oV1BFKQotI2RlZmluZSBC
QVNFX0RJUkVDVE9SWSAid3BlIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBBUEkgewotCi1XVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
Ci17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJB
U0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJhcHBsaWNhdGlvbnMiKTsKLX0KLQotLy8g
RklYTUU6IFRoZSBvdGhlciBkaXJlY3RvcmllcyBpbiB0aGlzIGZpbGUgYXJlIHNoYXJlZCBiZXR3
ZWVuIGFsbCBhcHBsaWNhdGlvbnMgdXNpbmcgV2ViS2l0R1RLLgotLy8gV2h5IGlzIG9ubHkgdGhp
cyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24/Ci1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkK
LXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hlIikp
OwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdl
RGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIkNh
Y2hlU3RvcmFnZSIpKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQ
QVJBVE9SX1MgImRhdGFiYXNlcyIgR19ESVJfU0VQQVJBVE9SX1MgImluZGV4ZWRkYiIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJz
ZXJ2aWNld29ya2VycyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJB
VE9SX1MgImxvY2Fsc3RvcmFnZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdf
RElSX1NFUEFSQVRPUl9TICJtZWRpYWtleXMiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJ
UkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGV2aWNlaWRoYXNoc2FsdHMiKTsKLX0KLQotV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpCi17
Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkK
LXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNo
ZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBX
VEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDI0OTcz
MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHN0cnVjdCBfV2ViS2l0Q29v
a2llTWFuYWdlclByaXZhdGUgewogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0
CiAgICAgewogICAgICAgICBBU1NFUlQoZGF0YU1hbmFnZXIpOwotICAgICAgICByZXR1cm4gd2Vi
a2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKGRhdGFNYW5hZ2VyKS53ZWJzaXRlRGF0
YVN0b3JlKCkuc2Vzc2lvbklEKCk7CisgICAgICAgIHJldHVybiB3ZWJraXRXZWJzaXRlRGF0YU1h
bmFnZXJHZXREYXRhU3RvcmUoZGF0YU1hbmFnZXIpLnNlc3Npb25JRCgpOwogICAgIH0KIAogICAg
IH5fV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGUoKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNv
bnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsMTggKzMxMSw2IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYkNvbnRleHRTZXRQcm9wZXJ0eSgKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUg
UmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiB3ZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbihjb25zdCBBUEk6OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiYgcHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uKQotewotICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsK
LSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFN0cmluZyhw
cm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKSk7Ci0g
ICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNz
UG9vbGNvbmZpZ3VyYXJpb24uZGlza0NhY2hlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0
aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1
cmFyaW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5z
ZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5s
b2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldERldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9u
LmRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlv
bi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1
cmFyaW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAgIHJldHVybiBjb25maWd1
cmF0aW9uOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09i
amVjdCogb2JqZWN0KQogewogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfY29udGV4dF9w
YXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZChvYmplY3QpOwpAQCAtMzM1LDI0ICszMjMsOSBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoCiAKICAgICBXZWJLaXRXZWJD
b250ZXh0KiB3ZWJDb250ZXh0ID0gV0VCS0lUX1dFQl9DT05URVhUKG9iamVjdCk7CiAgICAgV2Vi
S2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSB3ZWJDb250ZXh0LT5wcml2OwotICAgIGlmIChw
cml2LT53ZWJzaXRlRGF0YU1hbmFnZXIgJiYgIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9p
c19lcGhlbWVyYWwocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkgewotICAgICAgICBj
b25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgp
KSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldERpc2tDYWNoZURpcmVjdG9yeShGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tf
Y2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpLCBuZXR3b3Jr
Q2FjaGVTdWJkaXJlY3RvcnkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9u
X2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAg
ICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2Vy
LmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5
KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRl
RGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgotICAgICAgICBjb25maWd1cmF0aW9uLnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdl
ci5nZXQoKSkpKTsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIH0gZWxz
ZSBpZiAoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc051bGwoKSkKLSAgICAgICAgY29u
ZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZGF0
YSgpKSk7CiAKICAgICBwcml2LT5wcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUo
Y29uZmlndXJhdGlvbik7CiAKLSAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRhTWFuYWdlcikKLSAg
ICAgICAgcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdFdlYnNpdGVE
YXRhTWFuYWdlckNyZWF0ZSh3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkZvcldlYlByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSkpOwotICAgIHByaXYtPnByb2Nlc3NQ
b29sLT5zZXRQcmltYXJ5RGF0YVN0b3JlKHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFT
dG9yZShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKTsKLQogICAgIHdlYmtpdFdlYnNp
dGVEYXRhTWFuYWdlckFkZFByb2Nlc3NQb29sKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQo
KSwgKnByaXYtPnByb2Nlc3NQb29sKTsKIAogICAgIHByaXYtPnRsc0Vycm9yc1BvbGljeSA9IFdF
QktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMOwpAQCAtNzc3LDcgKzc1MCw3IEBAIHZvaWQgd2Vi
a2l0X3dlYl9jb250ZXh0X2NsZWFyX2NhY2hlKFdlYksKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzOwogICAgIHdlYnNpdGVEYXRhVHlwZXMuYWRkKFdlYnNp
dGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUpOwogICAgIHdlYnNpdGVEYXRhVHlwZXMuYWRkKFdlYnNp
dGVEYXRhVHlwZTo6RGlza0NhY2hlKTsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gd2Vi
a2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKGNvbnRleHQtPnByaXYtPndlYnNpdGVE
YXRhTWFuYWdlci5nZXQoKSkud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHdlYnNpdGVE
YXRhU3RvcmUgPSB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoY29udGV4dC0+
cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKTsKICAgICB3ZWJzaXRlRGF0YVN0b3JlLnJl
bW92ZURhdGEod2Vic2l0ZURhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbXSB7IH0p
OwogfQogCkBAIC0xNDc0LDEyICsxNDQ3LDggQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0
X3dlYl9leHRlbnNpbwogICoKICAqIERlcHJlY2F0ZWQ6IDIuMTAuIFVzZSB3ZWJraXRfd2ViX2Nv
bnRleHRfbmV3X3dpdGhfd2Vic2l0ZV9kYXRhX21hbmFnZXIoKSBpbnN0ZWFkLgogICovCi12b2lk
IHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNoZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29u
dGV4dCogY29udGV4dCwgY29uc3QgY2hhciogZGlyZWN0b3J5KQordm9pZCB3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqLCBjb25zdCBj
aGFyKikKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250
ZXh0KSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChkaXJlY3RvcnkpOwotCi0gICAgY29udGV4dC0+
cHJpdi0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5zZXREaXNrQ2FjaGVEaXJlY3Rvcnko
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSwgbmV0d29ya0NhY2hlU3ViZGly
ZWN0b3J5KSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCShy
ZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxMiArMjAsMTIg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXIuaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJL
aXRDb29raWVNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0V2Vic2l0ZURhdGFQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlv
bi5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxnbGliL2dpMThu
LWxpYi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgpAQCAtOTUsNyArOTUsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVEYXRhTWFuYWdl
clByaXZhdGUgCiAgICAgICAgIEFTU0VSVChwcm9jZXNzUG9vbHMuaXNFbXB0eSgpKTsKICAgICB9
CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiB3ZWJzaXRlRGF0YVN0b3JlOwor
ICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IHdlYnNpdGVEYXRhU3RvcmU7CiAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBiYXNlRGF0YURpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRyPGNo
YXI+IGJhc2VDYWNoZURpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGxvY2FsU3RvcmFn
ZURpcmVjdG9yeTsKQEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJzaXRl
RGF0YU1hbmFnZXJTZXRQCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9JU19FUEhFTUVS
QUw6CiAgICAgICAgIGlmIChnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSkKLSAgICAgICAgICAg
IG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKKyAgICAgICAgICAgIG1hbmFnZXItPnBy
aXYtPndlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5v
blBlcnNpc3RlbnQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMp
OwpAQCAtMzg0LDI4ICszODQsMjggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyXwogV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJDcmVhdGUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRp
b24pCiB7CiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0gV0VCS0lUX1dF
QlNJVEVfREFUQV9NQU5BR0VSKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJTSVRFX0RBVEFf
TUFOQUdFUiwgbnVsbHB0cikpOwotICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUg
PSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICBtYW5hZ2VyLT5wcml2LT53
ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGTW92
ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAK
ICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIAotQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRX
ZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBt
YW5hZ2VyKQorV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyKQogewogICAg
IFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUqIHByaXYgPSBtYW5hZ2VyLT5wcml2Owog
ICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAg
IGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVjdG9yeSghcHJpdi0+bG9jYWxTdG9y
YWdlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpKTsKKyAg
ICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURp
cmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAgY29uZmlndXJh
dGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCFwcml2LT5kaXNrQ2FjaGVEaXJlY3Rvcnkg
PwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hl
RGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5kaXNrQ2FjaGVE
aXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAgICAgICAgICAg
IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgp
IDogRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5Lmdl
dCgpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24t
PnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoIXByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmdldCgpKSk7Cisg
ICAgICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAg
Y29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoIXByaXYtPndlYlNRTERp
cmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgICAg
IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYt
PndlYlNRTERpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRIU1RT
U3RvcmFnZURpcmVjdG9yeSghcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAg
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKSA6IEZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+aHN0c0NhY2hlRGly
ZWN0b3J5LmdldCgpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSgpKTsKLSAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgICAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsK
KyAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkp
OworICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuICpwcml2LT53ZWJzaXRlRGF0YVN0
b3JlOwpAQCAtNTQyLDcgKzU0Miw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIXByaXYtPmxvY2Fs
U3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LnJl
c2V0KGdfc3RyZHVwKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURp
cmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+bG9jYWxTdG9yYWdlRGly
ZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExv
Y2FsU3RvcmFnZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1cm4gcHJpdi0+
bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpOwogfQogCkBAIC01NjYsNyArNTY2LDcgQEAgY29u
c3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgogCiAgICAgaWYgKCFwcml2LT5k
aXNrQ2FjaGVEaXJlY3RvcnkpIHsKICAgICAgICAgLy8gVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGFs
cmVhZHkgaGFzIHRoZSBzdWJkaXJlY3RvcnkuCi0gICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVj
dG9yeS5yZXNldChnX3N0cmR1cChGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgp
KSk7CisgICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChGaWxl
U3lzdGVtOjpkaXJlY3RvcnlOYW1lKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQogICAgIHJldHVy
biBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CkBAIC01OTAsNyArNTkwLDcgQEAg
Y29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICghcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkKLSAg
ICAgICAgcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkudXRm
OCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LnJl
c2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgcmV0dXJuIHByaXYtPmFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CiAKQEAgLTYxMyw3ICs2MTMsNyBAQCBjb25z
dCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgaWYgKCFwcml2LT5pbmRleGVkREJEaXJlY3RvcnkpCi0gICAgICAgIHByaXYt
PmluZGV4ZWREQkRpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAg
ICAgICAgcHJpdi0+aW5kZXhlZERCRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkudXRmOCgp
LmRhdGEoKSkpOwogICAgIHJldHVybiBwcml2LT5pbmRleGVkREJEaXJlY3RvcnkuZ2V0KCk7CiB9
CiAKQEAgLTYzOCw3ICs2MzgsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFwcml2LT53ZWJTUUxE
aXJlY3RvcnkpCi0gICAgICAgIHByaXYtPndlYlNRTERpcmVjdG9yeS5yZXNldChnX3N0cmR1cChB
UEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLnV0
ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+d2ViU1FMRGlyZWN0b3J5LnJlc2V0KGdfc3Ry
ZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCkudXRmOCgpLmRhdGEoKSkpOwogICAgIHJldHVybiBwcml2LT53ZWJTUUxEaXJlY3Rvcnku
Z2V0KCk7CiB9CiAKQEAgLTY2MSw3ICs2NjEsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFwcml2
LT5oc3RzQ2FjaGVEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPmhzdHNDYWNoZURpcmVjdG9yeS5y
ZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RTRGlyZWN0b3J5
KCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkucmVz
ZXQoZ19zdHJkdXAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9y
eSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1cm4gcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5
LmdldCgpOwogfQogCkBAIC03MzUsNyArNzM1LDcgQEAgdm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZmV0Y2goVwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQlNJVEVf
REFUQV9NQU5BR0VSKG1hbmFnZXIpKTsKIAogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9w
dEdSZWYoZ190YXNrX25ldyhtYW5hZ2VyLCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRh
KSk7Ci0gICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmZldGNoRGF0YSh0b1dlYnNpdGVEYXRhVHlwZXModHlwZXMpLCBXZWJzaXRlRGF0YUZldGNo
T3B0aW9uOjpDb21wdXRlU2l6ZXMsIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0gKFZlY3RvcjxXZWJz
aXRlRGF0YVJlY29yZD4gcmVjb3JkcykgeworICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRh
U3RvcmUtPmZldGNoRGF0YSh0b1dlYnNpdGVEYXRhVHlwZXModHlwZXMpLCBXZWJzaXRlRGF0YUZl
dGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMsIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0gKFZlY3RvcjxX
ZWJzaXRlRGF0YVJlY29yZD4gcmVjb3JkcykgewogICAgICAgICBHTGlzdCogZGF0YUxpc3QgPSBu
dWxscHRyOwogICAgICAgICB3aGlsZSAoIXJlY29yZHMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBpZiAoYXV0byogZGF0YSA9IHdlYmtpdFdlYnNpdGVEYXRhQ3JlYXRlKHJlY29yZHMudGFrZUxh
c3QoKSkpCkBAIC04MDksNyArODA5LDcgQEAgdm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfcmVtb3ZlKAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbWFuYWdlci0+cHJpdi0+
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEodG9XZWJzaXRl
RGF0YVR5cGVzKHR5cGVzKSwgcmVjb3JkcywgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXSB7CisgICAg
bWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+cmVtb3ZlRGF0YSh0b1dlYnNpdGVEYXRh
VHlwZXModHlwZXMpLCByZWNvcmRzLCBbdGFzayA9IFdURk1vdmUodGFzayldIHsKICAgICAgICAg
Z190YXNrX3JldHVybl9ib29sZWFuKHRhc2suZ2V0KCksIFRSVUUpOwogICAgIH0pOwogfQpAQCAt
ODYxLDcgKzg2MSw3IEBAIHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyKFcK
IAogICAgIFdhbGxUaW1lIHRpbWVQb2ludCA9IHRpbWVTcGFuID8gV2FsbFRpbWU6Om5vdygpIC0g
U2Vjb25kczo6ZnJvbU1pY3Jvc2Vjb25kcyh0aW1lU3BhbikgOiBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoMCk7CiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3
KG1hbmFnZXIsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBtYW5hZ2Vy
LT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YSh0
b1dlYnNpdGVEYXRhVHlwZXModHlwZXMpLCB0aW1lUG9pbnQsIFt0YXNrID0gV1RGTW92ZSh0YXNr
KV0geworICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPnJlbW92ZURhdGEodG9X
ZWJzaXRlRGF0YVR5cGVzKHR5cGVzKSwgdGltZVBvaW50LCBbdGFzayA9IFdURk1vdmUodGFzayld
IHsKICAgICAgICAgZ190YXNrX3JldHVybl9ib29sZWFuKHRhc2suZ2V0KCksIFRSVUUpOwogICAg
IH0pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaAkocmV2aXNp
b24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwxMiArMTksMTEg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgi
CiAKIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ3Jl
YXRlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmKTsKLUFQSTo6
V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdl
YktpdFdlYnNpdGVEYXRhTWFuYWdlciopOworV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJr
aXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
Kik7CiB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFByb2Nlc3NQb29sKFdlYktpdFdl
YnNpdGVEYXRhTWFuYWdlciosIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKTsKIHZvaWQgd2Via2l0
V2Vic2l0ZURhdGFNYW5hZ2VyUmVtb3ZlUHJvY2Vzc1Bvb2woV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyKiwgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpOwogY29uc3QgVmVjdG9yPFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2wqPiYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0UHJvY2Vzc1Bvb2xzKFdl
YktpdFdlYnNpdGVEYXRhTWFuYWdlciopOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNp
dGVEYXRhU3RvcmVXaW4uY3BwCShub25leGlzdGVudCkKQEAgLTEsODggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFT
dG9yZS5oIgotCi0jaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLQotbmFtZXNwYWNlIEFQSSB7
Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxp
Y2F0aW9uQ2FjaGUiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJDYWNoZVN0b3JhZ2UiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOwotfQotCi1TdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJTZXJ2aWNl
V29ya2VycyIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIkxvY2FsU3RvcmFnZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOwotfQotCi1TdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCi17
Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7
Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCi17Ci0gICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzU4LDcgKzEzNTgsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29rCiAgICAgICAgIEFTWU5DX0ZBSUxf
V0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUg
cGFyYW1ldGVyICdodHRwT25seScgd2FzIG5vdCBmb3VuZC4iKTsKIAogICAgIFdlYkNvb2tpZU1h
bmFnZXJQcm94eSogY29va2llTWFuYWdlciA9IG1fcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2Vi
Q29va2llTWFuYWdlclByb3h5PigpOwotICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMocGFn
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpLCB7IGNvb2tpZSB9LCBbY2FsbGJhY2sg
PSBjYWxsYmFjay5jb3B5UmVmKCldKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBj
b29raWVNYW5hZ2VyLT5zZXRDb29raWVzKHBhZ2UtPnNlc3Npb25JRCgpLCB7IGNvb2tpZSB9LCBb
Y2FsbGJhY2sgPSBjYWxsYmFjay5jb3B5UmVmKCldKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKICAgICAgICAgaWYgKGVycm9yID09IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCiAgICAg
ICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKICAgICAgICAgZWxzZQpAQCAtMTM3OCw3
ICsxMzc4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29vawogICAg
IFN0cmluZyBob3N0ID0gYWN0aXZlVVJMLmhvc3QoKS50b1N0cmluZygpOwogCiAgICAgV2ViQ29v
a2llTWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+c3VwcGxlbWVu
dDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29va2llTWFuYWdlci0+ZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lcyhwYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCksIHsg
aG9zdCwgZG9tYWluQnlBZGRpbmdEb3RQcmVmaXhJZk5lZWRlZChob3N0KSB9KTsKKyAgICBjb29r
aWVNYW5hZ2VyLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKHBhZ2UtPnNlc3Npb25JRCgpLCB7
IGhvc3QsIGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZOZWVkZWQoaG9zdCkgfSk7CiB9CiAKIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldFNlc3Npb25QZXJtaXNzaW9ucyhFcnJvclN0cmlu
ZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlNlc3Npb25QZXJtaXNzaW9uRGF0YT4+JiBvdXRfcGVybWlzc2lvbnMpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lv
biAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQgIkFQSVBhZ2VD
b25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJBUElTdHJpbmcuaCIKICNpbXBvcnQgIkFQSVVSTC5o
IgotI2ltcG9ydCAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbkNvY29hLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlz
dGVuZXIuaCIKQEAgLTY0LDYgKzYzLDcgQEAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2lt
cG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIK
KyNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQgIl9XS0NvbnRlbnRSdWxlTGlz
dEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5o
IgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBAIE5l
dHdvcmtQcm9jZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkKICAgICBjb25uZWN0KCk7CiAK
ICAgICBpZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IG1fcHJvY2Vzc1Bvb2wud2Vic2l0ZURh
dGFTdG9yZSgpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmVzLnNldCh3ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCksIG1ha2VSZWYod2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZXMu
c2V0KHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBtYWtlUmVmKCp3ZWJzaXRlRGF0YVN0
b3JlKSk7CiB9CiAKIE5ldHdvcmtQcm9jZXNzUHJveHk6On5OZXR3b3JrUHJvY2Vzc1Byb3h5KCkK
QEAgLTExMzQsMTQgKzExMzQsMTQgQEAgV2Vic2l0ZURhdGFTdG9yZSogTmV0d29ya1Byb2Nlc3NQ
cm94eTo6dwogICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCiAgICAgaWYg
KGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBtX3Byb2Nlc3NQb29sLndlYnNpdGVEYXRhU3RvcmUo
KSkgewotICAgICAgICBpZiAoc2Vzc2lvbklEID09IHdlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXNzaW9uSUQoKSkKLSAgICAgICAgICAgIHJldHVybiAmd2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICBpZiAoc2Vzc2lvbklEID09IHdlYnNp
dGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKQorICAgICAgICAgICAgcmV0dXJuIHdlYnNpdGVEYXRh
U3RvcmU7CiAgICAgfQogCiAgICAgaWYgKHNlc3Npb25JRCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiAm
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3Rv
cmUoKTsKKyAgICByZXR1cm4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0
cigpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJldHJpZXZlQ2FjaGVTdG9yYWdl
UGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5LmgiCiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xf
TUFOQUdFUikKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgpA
QCAtMzYsNiArMzUsNyBAQAogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCIKICNp
bmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Dcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPG1lbW9yeT4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsMTUgKzI2LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGFTdG9yZS5oIgogCisjaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JlLmgiCiAjaW5jbHVk
ZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURh
dGFSZWNvcmQuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAi
QXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZS5oIgogI2luY2x1ZGUgIk1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCisjaW5jbHVkZSAiV2Vi
S2l0MkluaXRpYWxpemUuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTEz
OSw2ICsxNDAsNTggQEAgV2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShQQUw6Ogog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKK3N0YXRpYyBSZWZQdHI8V2Vic2l0
ZURhdGFTdG9yZT4mIGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4+IGdsb2JhbERlZmF1bHREYXRhU3Rv
cmU7CisgICAgcmV0dXJuIGdsb2JhbERlZmF1bHREYXRhU3RvcmUuZ2V0KCk7Cit9CisKK1JlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkKK3sK
KyAgICBJbml0aWFsaXplV2ViS2l0MigpOworCisgICAgYXV0byYgc3RvcmUgPSBnbG9iYWxEZWZh
dWx0RGF0YVN0b3JlKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgc3RvcmUgPSBhZG9wdFJl
ZihuZXcgV2Vic2l0ZURhdGFTdG9yZShkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLCBQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSk7CisKKyAgICByZXR1cm4gKnN0b3Jl
OworfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JU
ZXN0aW5nKCkKK3sKKyAgICBnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCkgPSBudWxscHRyOworfQor
Citib29sIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKQoreworICAg
IHJldHVybiAhIWdsb2JhbERlZmF1bHREYXRhU3RvcmUoKTsKK30KKworUmVmPFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisKKyAgICBjb25maWd1cmF0aW9uLT5z
ZXRQZXJzaXN0ZW50KHRydWUpOworCisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBj
b25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1l
KCJGaWxlcyIpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShk
ZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE5l
dHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpOworICAg
IGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlhQ2FjaGVE
aXJlY3RvcnkoKSk7CisKKyAgICBjb25maWd1cmF0aW9uLT5zZXRJbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeShkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmln
dXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShkZWZhdWx0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5z
ZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRM
b2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAg
ICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGRlZmF1
bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24t
PnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0RGV2aWNlSWRIYXNo
U2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOworCisgICAgY29uZmlndXJhdGlvbi0+c2V0SmF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9u
RGlyZWN0b3J5KCkpOworCisgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Cit9CisKIFdlYnNpdGVE
YXRhU3RvcmU6On5XZWJzaXRlRGF0YVN0b3JlKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwpAQCAtMTcyOCw3ICsxNzgxLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNl
dENhY2hlTWF4QWdlQwogYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjppc0Fzc29jaWF0ZWRQcm9jZXNz
UG9vbChXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8q
IHByb2Nlc3NQb29sRGF0YVN0b3JlID0gcHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFTdG9yZSgpKQot
ICAgICAgICByZXR1cm4gJnByb2Nlc3NQb29sRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkg
PT0gdGhpczsKKyAgICAgICAgcmV0dXJuIHByb2Nlc3NQb29sRGF0YVN0b3JlID09IHRoaXM7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNzU0LDcgKzE4MDcsNyBAQCBIYXNoU2V0PFJlZlB0
cjxXZWJQcm9jZXNzUG9vbD4+IFdlYnNpdGVECiAgICAgfQogCiAgICAgaWYgKHByb2Nlc3NQb29s
cy5pc0VtcHR5KCkgJiYgY291bnQgJiYgZW5zdXJlQVBvb2xFeGlzdHMpIHsKLSAgICAgICAgYXV0
byBwcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2Nv
bmZpZ3VyYXRpb24pKTsKKyAgICAgICAgYXV0byBwcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29s
OjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpKTsKICAgICAg
ICAgcHJvY2Vzc1Bvb2xzLmFkZChwcm9jZXNzUG9vbC5wdHIoKSk7CiAgICAgfQogCkBAIC0yMDAx
LDYgKzIwNTQsMjggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjphZGRTZWNLZXlQcm94eVN0bwog
fQogI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCit7CisgICAgLy8gRklYTUU6IElt
cGxlbWVudC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjM2OSBh
bmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjM3MAorICAgIHJl
dHVybiBXVEY6OlN0cmluZygpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Cit9CisjZW5kaWYKKworI2lm
ICFVU0UoR0xJQikKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJ
ZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIC8vIE5vdCBpbXBsZW1lbnRlZC4K
KyAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQl9B
VVRITikKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbihNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJiYgY29uZmlndXJh
dGlvbikKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBj
b3B5KQpAQCAtOTIsMTEgKzkyLDE5IEBAIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFN0
YXR1czsKIHN0cnVjdCBQbHVnaW5Nb2R1bGVJbmZvOwogI2VuZGlmCiAKLWNsYXNzIFdlYnNpdGVE
YXRhU3RvcmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJzaXRlRGF0YVN0b3JlPiwgcHVibGljIElk
ZW50aWZpZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJzaXRl
RGF0YVN0b3JlPiAgeworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OldlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMgSWRlbnRp
ZmllZDxXZWJzaXRlRGF0YVN0b3JlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYnNpdGVEYXRh
U3RvcmU+ICB7CiBwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBkZWZh
dWx0RGF0YVN0b3JlKCk7CisgICAgc3RhdGljIGJvb2wgZGVmYXVsdERhdGFTdG9yZUV4aXN0cygp
OworICAgIHN0YXRpYyB2b2lkIGRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7Cisg
ICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOworCiAgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0
YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50KCk7CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0
YVN0b3JlPiBjcmVhdGUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmLCBQQUw6
OlNlc3Npb25JRCk7Ci0gICAgdmlydHVhbCB+V2Vic2l0ZURhdGFTdG9yZSgpOworCisgICAgZXhw
bGljaXQgV2Vic2l0ZURhdGFTdG9yZShQQUw6OlNlc3Npb25JRCk7CisgICAgZXhwbGljaXQgV2Vi
c2l0ZURhdGFTdG9yZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYsIFBBTDo6
U2Vzc2lvbklEKTsKKyAgICB+V2Vic2l0ZURhdGFTdG9yZSgpOwogCiAgICAgc3RhdGljIFdlYnNp
dGVEYXRhU3RvcmUqIGV4aXN0aW5nTm9uRGVmYXVsdERhdGFTdG9yZUZvclNlc3Npb25JRChQQUw6
OlNlc3Npb25JRCk7CiAKQEAgLTI2NSwxMCArMjczLDIzIEBAIHB1YmxpYzoKICAgICBTT0F1dGhv
cml6YXRpb25Db29yZGluYXRvciYgc29BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IoKSB7IHJldHVy
biBtX3NvQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLmdldCgpOyB9CiAjZW5kaWYKIAotcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEKTsKLSAgICBl
eHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bj4mJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5n
IGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RG
OjpTdHJpbmcgZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7CisjaWYgVVNFKEdM
SUIpCisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRIU1RTRGlyZWN0b3J5KCk7CisjZW5k
aWYKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3Rvcnko
KTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3Rv
cmFnZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SmF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKIAorcHJpdmF0ZToKICAgICB2b2lkIGZldGNoRGF0
YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFGZXRjaE9wdGlvbj4sIFJlZlB0cjxXb3JrUXVldWU+JiYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9y
PFdlYnNpdGVEYXRhUmVjb3JkPik+JiYgYXBwbHkpOwogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKQEAgLTI3OSw2ICszMDAsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3Jt
U2V0TmV0d29ya1BhcmFtZXRlcnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMmKTsKICNlbmRp
ZgogCisgICAgV2Vic2l0ZURhdGFTdG9yZSgpOworCisgICAgZW51bSBTaG91bGRDcmVhdGVEaXJl
Y3RvcnkgeyBDcmVhdGVEaXJlY3RvcnksIERvbnRDcmVhdGVEaXJlY3RvcnkgfTsKKyAgICBzdGF0
aWMgV1RGOjpTdHJpbmcgdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5ID0gQ3Jl
YXRlRGlyZWN0b3J5KTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgY2FjaGVEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpOwor
ICAgIHN0YXRpYyBXVEY6OlN0cmluZyB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CisgICAgCiAgICAg
SGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBwcm9jZXNzUG9vbHMoc2l6ZV90IGNvdW50
ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwgYm9vbCBlbnN1cmVBUG9vbEV4
aXN0cyA9IHRydWUpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAy
NDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEyICsyNiwxMiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKLSAgICA6
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpCisgICAgOiBtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3Jl
LmgiCiAKICNpbXBvcnQgIkNvb2tpZVN0b3JhZ2VVdGlsc0NGLmgiCisjaW1wb3J0ICJTYW5kYm94
VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJTdG9yYWdlTWFuYWdlci5oIgogI2ltcG9ydCAiV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycy5oIgpAQCAtMjMwLDQgKzIzMSwxNjEgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpw
bGF0Zm9ybVJlbW92ZVJlYwogICAgIFdlYkNvcmU6OnJlbW92ZVJlY2VudGx5TW9kaWZpZWRSZWNl
bnRTZWFyY2hlcyhvbGRlc3RUaW1lVG9SZW1vdmUpOwogfQogCitOU1N0cmluZyAqV2ViRGF0YWJh
c2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViRGF0YWJhc2VEaXJlY3RvcnkiOworTlNTdHJp
bmcgKldlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TG9jYWxTdG9yYWdl
RGF0YWJhc2VQYXRoUHJlZmVyZW5jZUtleSI7CitOU1N0cmluZyAqV2ViS2l0TWVkaWFDYWNoZURp
cmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5IjsKK05TU3Ry
aW5nICpXZWJLaXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktp
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkiOworCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCit7CisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICAvLyBUaGlzIHF1aXJrIHVzZWQgdG8gbWFrZSB0aGVzZSBhcHBzIHNo
YXJlIGFwcGxpY2F0aW9uIGNhY2hlIHN0b3JhZ2UsIGJ1dCBkb2Vzbid0IGFjY29tcGxpc2ggdGhh
dCBhbnkgbW9yZS4KKyAgICAvLyBQcmVzZXJ2aW5nIGl0IGF2b2lkcyB0aGUgbmVlZCB0byBtaWdy
YXRlIGRhdGEgd2hlbiB1cGdyYWRpbmcuCisgICAgLy8gRklYTUU6IElkZWFsbHkgd2Ugc2hvdWxk
IGp1c3QgaGF2ZSBTYWZhcmksIFdlYkFwcCwgYW5kIHdlYmJvb2ttYXJrc2QgY3JlYXRlIGEgZGF0
YSBzdG9yZSB3aXRoCisgICAgLy8gdGhpcyBhcHBsaWNhdGlvbiBjYWNoZSBwYXRoLCBidXQgdGhh
dCdzIG5vdCBzdXBwb3J0ZWQgYXMgb2YgcmlnaHQgbm93LgorICAgIGlmIChXZWJDb3JlOjpJT1NB
cHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6
aXNXZWJBcHAoKSB8fCBXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJCb29rbWFya3NEKCkp
IHsKKyAgICAgICAgTlNTdHJpbmcgKmNhY2hlUGF0aCA9IFtOU0hvbWVEaXJlY3RvcnkoKSBzdHJp
bmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJMaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2Vi
QXBwQ2FjaGUiXTsKKworICAgICAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5
bWxpbmtzSW5QYXRoKGNhY2hlUGF0aC5zdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoKTsKKyAgICB9
CisjZW5kaWYKKworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbigiT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0
dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJDYWNoZVN0b3JhZ2Ui
KTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNo
ZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKCJOZXR3b3JrQ2FjaGUiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB0ZW1wRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUNhY2hlIik7Cit9CisKK1dURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKCJJbmRleGVkREIiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQoreworICAgIHJldHVy
biBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiU2VydmljZVdvcmtlcnMi
KTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFn
ZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKCJMb2NhbFN0b3JhZ2UiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTWVkaWFL
ZXlzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJXZWJTUUwiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQorewor
ICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigi
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJKYXZhU2NyaXB0Q29y
ZURlYnVnIiwgRG9udENyZWF0ZURpcmVjdG9yeSk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OnRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RG
OjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUsIFNob3VsZENyZWF0ZURpcmVjdG9yeSBzaG91bGRDcmVh
dGVEaXJlY3RvcnkpCit7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Cisg
ICAgc3RhdGljIE5TVVJMICp0ZW1wVVJMOworICAgIAorICAgIGRpc3BhdGNoX29uY2UoJm9uY2VU
b2tlbiwgXnsKKyAgICAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6TlNU
ZW1wb3JhcnlEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOworICAgICAgICBpZiAoIXVybCkK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIAorICAg
ICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7CisgICAgICAgICAgICBO
U1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJ
ZGVudGlmaWVyOworICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQorICAgICAgICAg
ICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJv
Y2Vzc05hbWU7CisgICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHRlbXBVUkwgPSBbW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsKKyAgICB9KTsKKyAgICAKKyAgICBO
U1VSTCAqdXJsID0gW3RlbXBVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9y
eU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKKworICAgIGlmIChzaG91bGRDcmVhdGVEaXJlY3Rvcnkg
PT0gQ3JlYXRlRGlyZWN0b3J5CisgICAgICAgICYmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9y
aWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkpCisgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOworICAgIAorICAgIHJldHVy
biB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Cit9CisKK1dU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAgIHN0YXRp
YyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBOU1VSTCAqY2FjaGVVUkw7
CisKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIE5TVVJMICp1cmwg
PSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9yeTpOU0NhY2hl
c0RpcmVjdG9yeSBpbkRvbWFpbjpOU1VzZXJEb21haW5NYXNrIGFwcHJvcHJpYXRlRm9yVVJMOm51
bGxwdHIgY3JlYXRlOk5PIGVycm9yOm51bGxwdHJdOworICAgICAgICBpZiAoIXVybCkKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAgICAgaWYgKCFXZWJL
aXQ6OnByb2Nlc3NIYXNDb250YWluZXIoKSkgeworICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRs
ZUlkZW50aWZpZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKKyAg
ICAgICAgICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBidW5kbGVJ
ZGVudGlmaWVyID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOworICAg
ICAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRl
bnRpZmllciBpc0RpcmVjdG9yeTpZRVNdOworICAgICAgICB9CisKKyAgICAgICAgY2FjaGVVUkwg
PSBbW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5
OllFU10gcmV0YWluXTsKKyAgICB9KTsKKworICAgIE5TVVJMICp1cmwgPSBbY2FjaGVVUkwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsK
KyAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5
QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwg
ZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJl
Y3RvcnkgJUAiLCB1cmwpOworCisgICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbjsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpT
dHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNl
VG9rZW47CisgICAgc3RhdGljIE5TVVJMICp3ZWJzaXRlRGF0YVVSTDsKKworICAgIGRpc3BhdGNo
X29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TTGlicmFyeURpcmVjdG9yeSBpbkRv
bWFpbjpOU1VzZXJEb21haW5NYXNrIGFwcHJvcHJpYXRlRm9yVVJMOm51bGxwdHIgY3JlYXRlOk5P
IGVycm9yOm51bGxwdHJdOworICAgICAgICBpZiAoIXVybCkKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU107CisKKyAgICAgICAgaWYg
KCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250YWluZXIoKSkgeworICAgICAgICAgICAgTlNTdHJpbmcg
KmJ1bmRsZUlkZW50aWZpZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmll
cjsKKyAgICAgICAgICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBi
dW5kbGVJZGVudGlmaWVyID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1l
OworICAgICAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVu
ZGxlSWRlbnRpZmllciBpc0RpcmVjdG9yeTpZRVNdOworICAgICAgICB9CisKKyAgICAgICAgd2Vi
c2l0ZURhdGFVUkwgPSBbW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJzaXRl
RGF0YSIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOworICAgIH0pOworCisgICAgTlNVUkwgKnVy
bCA9IFt3ZWJzaXRlRGF0YVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5
TmFtZSBpc0RpcmVjdG9yeTpZRVNdOworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9y
aWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CisKKyAgICByZXR1cm4gdXJs
LmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOworfQorCiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS93aW4vV2Vic2l0ZURhdGFTdG9y
ZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS93aW4vV2Vic2l0ZURhdGFTdG9yZVdpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0
YVN0b3JlLmgiCiAKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ1LDQgKzQ2
LDU5IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1SZW1vdmVSZWMKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQ2FjaGVTdG9yYWdlIik7Cit9CisKK1N0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7Cit9CisKK1N0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnko
KQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJJbmRleGVkREIi
KTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCAiU2VydmljZVdvcmtlcnMiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKK30KKworU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9yYWdlIik7Cit9CisK
K1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJXZWJTUUwiKTsK
K30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnlOYW1lKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
IGRpcmVjdG9yeU5hbWUpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3Rv
cnlOYW1lKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRpcmVj
dG9yeU5hbWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNz
UHJveHlHTGliLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsOCArNDMsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPCiAgICAgICAgIGlmICghZGF0YVN0b3JlKSB7
CiAgICAgICAgICAgICAvLyBQcmV3YXJtZWQgcHJvY2Vzc2VzIGRvbid0IGhhdmUgYSBXZWJzaXRl
RGF0YVN0b3JlIHlldCwgc28gdXNlIHRoZSBwcmltYXJ5IFdlYnNpdGVEYXRhU3RvcmUgZnJvbSB0
aGUgV2ViUHJvY2Vzc1Bvb2wuCiAgICAgICAgICAgICAvLyBUaGUgcHJvY2VzcyB3b24ndCBiZSB1
c2VkIGlmIGN1cnJlbnQgV2Vic2l0ZURhdGFTdG9yZSBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgV2Vi
UHJvY2Vzc1Bvb2wgcHJpbWFyeSBvbmUuCi0gICAgICAgICAgICBpZiAoYXV0byogYXBpRGF0YVN0
b3JlID0gbV9wcm9jZXNzUG9vbC0+d2Vic2l0ZURhdGFTdG9yZSgpKQotICAgICAgICAgICAgICAg
IGRhdGFTdG9yZSA9ICZhcGlEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAg
ICAgIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIo
KTsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChkYXRhU3RvcmUpOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5j
cHAJKHJldmlzaW9uIDI0OTczMikJKGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwOjI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSVdlYnNpdGVE
YXRhU3RvcmUuaCIKKworI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3Rm
L2dsaWIvR1VuaXF1ZVB0ci5oPgorCisjaWYgUExBVEZPUk0oR1RLKQorI2RlZmluZSBCQVNFX0RJ
UkVDVE9SWSAid2Via2l0Z3RrIgorI2VsaWYgUExBVEZPUk0oV1BFKQorI2RlZmluZSBCQVNFX0RJ
UkVDVE9SWSAid3BlIgorI2VuZGlmCisKK25hbWVzcGFjZSBBUEkgeworCitXVEY6OlN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCit7Cisg
ICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElS
RUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJhcHBsaWNhdGlvbnMiKTsKK30KKworLy8gRklYTUU6
IFRoZSBvdGhlciBkaXJlY3RvcmllcyBpbiB0aGlzIGZpbGUgYXJlIHNoYXJlZCBiZXR3ZWVuIGFs
bCBhcHBsaWNhdGlvbnMgdXNpbmcgV2ViS2l0R1RLLgorLy8gV2h5IGlzIG9ubHkgdGhpcyBkaXJl
Y3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24/CitXVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKK3sKKyAg
ICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hlIikpOworfQor
CitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIkNhY2hlU3Rv
cmFnZSIpKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9S
X1MgImRhdGFiYXNlcyIgR19ESVJfU0VQQVJBVE9SX1MgImluZGV4ZWRkYiIpOworfQorCitXVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJzZXJ2aWNl
d29ya2VycyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1Mg
ImxvY2Fsc3RvcmFnZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRh
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NF
UEFSQVRPUl9TICJtZWRpYWtleXMiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3
ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9S
WSBHX0RJUl9TRVBBUkFUT1JfUyAiZGV2aWNlaWRoYXNoc2FsdHMiKTsKK30KKworV1RGOjpTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKK3sK
KyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
QkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIpOworfQorCitXVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpCit7CisgICAg
cmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0Vf
RElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQoreworICAg
IHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNF
X0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOwor
fQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9kaXIo
KSksIGRpcmVjdG9yeU5hbWUpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3
ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0
cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRl
RGF0YVN0b3JlR0xpYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3Jl
LmgiCiAKICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dV
bmlxdWVQdHIuaD4KQEAgLTM1LDcgKzM1LDcgQEAKICNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndw
ZSIKICNlbmRpZgogCi1uYW1lc3BhY2UgQVBJIHsKK25hbWVzcGFjZSBXZWJLaXQgewogCiBXVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSgpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNiBAQAog
CQkxQTMwMDY2RTExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzMDA2NkMxMTEwRjRG
NzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKIAkJMUEzMzRERUQxNkRF
OEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzM0REVCMTZERThGODgw
MDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTFB
MzM0REVFMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTMzNERFQzE2REU4Rjg4
MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oICovOyB9OwotCQkxQTM2MzVBQTFB
MzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzNjM1QTgxQTMxNDRBMzAwRUQ2MTk3IC8q
IEFQSVdlYnNpdGVEYXRhU3RvcmUuaCAqLzsgfTsKIAkJMUEzQzg4ODAxOEE1QUJBRTAwQzRDOTYy
IC8qIFdLUHJlZmVyZW5jZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUEzQzg4N0YxOEE1QUJBRTAwQzRDOTYyIC8qIFdLUHJlZmVyZW5j
ZXNJbnRlcm5hbC5oICovOyB9OwogCQkxQTNDQzE2NzE4OTA2QUNGMDAxRTZFRDggLyogV0tXZWJW
aWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTND
QzE2NTE4OTA2QUNGMDAxRTZFRDggLyogV0tXZWJWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkxQTNDQzE2OTE4OTA3RUIwMDAxRTZFRDggLyog
V0tQcm9jZXNzUG9vbEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTNDQzE2ODE4OTA3RUIwMDAxRTZFRDggLyogV0tQcm9jZXNzUG9vbElu
dGVybmFsLmggKi87IH07CkBAIC0xNzI1LDYgKzE3MjQsOCBAQAogCQkJY29tcGlsZXJTcGVjID0g
Y29tLmFwcGxlLmNvbXBpbGVycy5wcm94eS5zY3JpcHQ7CiAJCQlmaWxlUGF0dGVybnMgPSAiKi5o
IjsKIAkJCWZpbGVUeXBlID0gcGF0dGVybi5wcm94eTsKKwkJCWlucHV0RmlsZXMgPSAoCisJCQkp
OwogCQkJaXNFZGl0YWJsZSA9IDE7CiAJCQlvdXRwdXRGaWxlcyA9ICgKIAkJCQkiJChIRUFERVJf
T1VUUFVUX0RJUikvJChJTlBVVF9GSUxFX05BTUUpIiwKQEAgLTIxMjEsOSArMjEyMiw2IEBACiAJ
CTFBMzM0REVBMTZERThCNjgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBTdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0b3JhZ2VB
cmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIv
U3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwogCQkxQTMzNERFQzE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFN
YXBNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdG9yYWdlQXJl
YU1hcE1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VBcmVh
TWFwTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJMUEz
NjM1QTcxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBMzYzNUE4MUEzMTQ0QTMwMEVENjE5NyAvKiBB
UElXZWJzaXRlRGF0YVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQ
SVdlYnNpdGVEYXRhU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEzNjM1
QUIxQTMxNDVFNTAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFQSVdlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEzQTczQ0IxQTQ4QzZENDAwNzIz
MUIzIC8qIEFQSVBhZ2VHcm91cEhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBUElQYWdlR3JvdXBIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQTNBNzNDQzFBNDhDNkQ0MDA3MjMxQjMgLyogQVBJUGFnZUdyb3VwSGFuZGxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVBhZ2VHcm91cEhhbmRsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTNDODg3RjE4QTVBQkFFMDBDNEM5NjIgLyog
V0tQcmVmZXJlbmNlc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLUHJlZmVyZW5jZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NjM2Nyw3ICs2MzY1LDYgQEAKIAkJCQk3Q0VGQTk2MDFBQzA5OTkzMDBCOTEwRkQgLyogQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbSAqLywKIAkJCQk1Q0E0NkU3QTIxRjFBMjM5MDBDRTg2
QjQgLyogQVBJSFRUUENvb2tpZVN0b3JlQ29jb2EubW0gKi8sCiAJCQkJRkVEM0MxREExQjQ0N0FF
ODAwRTBFQjdGIC8qIEFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tICovLAotCQkJCTFB
MzYzNUFCMUEzMTQ1RTUwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gKi8s
CiAJCQkJMUFGREU2NDMxOTUxMEI1NTAwQzQ4RkZBIC8qIExlZ2FjeUJ1bmRsZUZvckNsYXNzLm1t
ICovLAogCQkJCTFDMjA5MzVFMjIzMThDQjAwMDAyNkEzOSAvKiBOU0F0dHJpYnV0ZWRTdHJpbmcu
aCAqLywKIAkJCQkxQzIwOTM1RjIyMzE4Q0IwMDAwMjZBMzkgLyogTlNBdHRyaWJ1dGVkU3RyaW5n
Lm1tICovLApAQCAtNzk3Nyw4ICs3OTc0LDYgQEAKIAkJCQkyRDg3ODYyMjFCREI1OEZGMDBEMDJB
QkIgLyogQVBJVXNlclN0eWxlU2hlZXQuaCAqLywKIAkJCQkxQUUyODY4MTFDN0Y5Mzg2MDA2OUFD
NEYgLyogQVBJV2Vic2l0ZURhdGFSZWNvcmQuY3BwICovLAogCQkJCTFBRTI4NjgyMUM3RjkzODYw
MDY5QUM0RiAvKiBBUElXZWJzaXRlRGF0YVJlY29yZC5oICovLAotCQkJCTFBMzYzNUE3MUEzMTQ0
QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmNwcCAqLywKLQkJCQkxQTM2MzVBODFB
MzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oICovLAogCQkJCTVDOEREMzdE
MUZFNDUwMTEwMEYyQTU1NiAvKiBBUElXZWJzaXRlUG9saWNpZXMuY3BwICovLAogCQkJCTVDOERE
MzdDMUZFNDUwMTEwMEYyQTU1NiAvKiBBUElXZWJzaXRlUG9saWNpZXMuaCAqLywKIAkJCQkxQTY1
NjNFMjFCN0E4QzUwMDA5Q0Y3ODcgLyogQVBJV2luZG93RmVhdHVyZXMuY3BwICovLApAQCAtOTM4
Miw3ICs5Mzc3LDYgQEAKIAkJCQlDNUUxQUZFRDE2QjIxMDE3MDA2Q0MxRjIgLyogQVBJV2ViQXJj
aGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzVFMUFGRUYxNkIyMTAyOTAwNkNDMUYyIC8qIEFQ
SVdlYkFyY2hpdmVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMjg2ODQxQzdGOTM4
NjAwNjlBQzRGIC8qIEFQSVdlYnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAqLywKLQkJCQkx
QTM2MzVBQTFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE2NTYzRTUxQjdBOEM1MDAwOUNGNzg3IC8qIEFQSVdpbmRvd0ZlYXR1cmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDhEMkE4NTIxNTgzQTdFMDBDNjc1MkIgLyogQXBwS2l0
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQ0QzE5MzFCMzlGMzMyMDBBQkMyOEUgLyogQXBw
bGljYXRpb25TdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378501</attachid>
            <date>2019-09-10 15:40:49 -0700</date>
            <delta_ts>2019-09-10 16:31:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201655-20190910154048.patch</filename>
            <type>text/plain</type>
            <size>209167</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2NyBAQAorMjAxOS0wOS0xMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB1bm5l
Y2Vzc2FyeSBhYnN0cmFjdGlvbnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBmb3Vy
IHRoaW5ncyB0byBzaW1wbGlmeSBXZWJzaXRlRGF0YVN0b3JlIGNvZGU6CisgICAgICAgIDEuIEl0
IHJlbW92ZXMgQVBJOjpXZWJzaXRlRGF0YVN0b3JlLCB3aGljaCB3YXMganVzdCBhbiB1bm5lY2Vz
c2FyeSB3cmFwcGVyIGFyb3VuZCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUuCisgICAgICAgIDIu
IEl0IGRlcHJlY2F0ZXMgdGhlIHVudXNlZCBhbGlhc2VzIG9mIFdlYnNpdGVEYXRhU3RvcmUsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYW5kIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZgorICAgICAgICAzLiBJdCByZW1vdmVzIHRoZSB1bnVzZWQgQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHByb3BlcnRpZXMgdGhhdCBoYXZlIGJlZW4gbW92ZWQgdG8gV2Vic2l0ZURhdGFTdG9y
ZS4KKyAgICAgICAgNC4gSXQgbWFrZXMgV0tXZWJzaXRlRGF0YVN0b3JlLl9kZWxlZ2F0ZSB3ZWFr
IGluc3RlYWQgb2Ygc3Ryb25nLCBhcyBhbHJlYWR5IGFubm90YXRlZCBpbiBXS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZSBpbiBiZWhh
dmlvciBmcm9tIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZToKKyAg
ICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAg
ICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tp
ZVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6CisgICAg
ICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURh
dGFTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
RGF0YVN0b3JlLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
UG9saWNpZXMuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlUG9saWNpZXM6OmRhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5zKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJEZWxldGVBbGxFbnRyaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
UG9saWN5TGlzdGVuZXIuY3BwOgorICAgICAgICAodXNlV2l0aFBvbGljaWVzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCk6CisgICAgICAgIChXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KToKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAoV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLUmVzb3VyY2VDYWNo
ZU1hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENh
Y2hlT3JpZ2lucyk6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZv
ck9yaWdpbik6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFs
bE9yaWdpbnMpOgorICAgICAgICAodG9XZWJzaXRlRGF0YVR5cGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdl
dERlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlTm9u
UGVyc2lzdGVudERhdGFTdG9yZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVX
aXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29v
a2llU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZVdpdGhDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RT
ZWVuKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVBy
ZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKToKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSk6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5n
VGVzdCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hvdWxkQ2xh
c3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzTWF4U3RhdGlzdGljc0VudHJpZXMpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1BydW5lRW50cmllc0Rvd25Ubyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9u
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGb3JPcmlnaW4p
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnMpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW4pOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmln
aW5TdG9yYWdlUXVvdGEpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdKToK
KyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdKToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIGh0dHBDb29raWVTdG9yZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6bW9kaWZpZWRTaW5jZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOmZv
ckRhdGFSZWNvcmRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgX2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKToKKyAgICAgICAgKCtbV0tXZWJzaXRl
RGF0YVN0b3JlIF9kZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZ10pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3aXRoT3B0aW9u
czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Blck9yaWdpblN0b3Jh
Z2VRdW90YV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFBlck9yaWdpblN0
b3JhZ2VRdW90YTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRDYWNoZVN0
b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOl0pOgor
ICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcl0p
OgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldEFsbG93c0NlbGx1bGFyQWNjZXNz
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93c0NlbGx1bGFyQWNjZXNz
XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJveHlDb25maWd1cmF0aW9u
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFNvdXJj
ZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXI6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0QWxsb3dzVExTRmFs
bGJhY2s6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dzVExTRmFsbGJh
Y2tdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm94eUNvbmZpZ3VyYXRpb25d
KToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zv
cjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9z
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRJc1ByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERv
bWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3Jl
IF9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOl0pOgorICAgICAgICAoLVtXS1dlYnNp
dGVEYXRhU3RvcmUgX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyXSk6CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHNldF9kZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAg
ICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29y
a1Byb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ondl
YnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bV93ZWJQcm9jZXNzQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRl
bnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJt
ZWRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp0ZW1w
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxEZWZhdWx0RGF0
YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHRE
YXRhU3RvcmVGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2wgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAg
ICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6
IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRIU1RTRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Ondl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOS0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEhhbmdzIG9uIFN3aXNz
LmNvbSBkdWUgdG8gdGhlIHdlYiBwcm9jZXNzIGJlaW5nIGJsb2NrZWQgb24gU3RvcmFnZUFyZWFN
YXA6OkxvYWRWYWx1ZXNJZk5lZWRlZApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAg
ICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAotICAgIFVJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAogICAgIFVJ
UHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcApJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5E
IFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAot
ICAgIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKIAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVy
V2luLmNwcApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDYgQEAgVUlQcm9j
ZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVu
dFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElVc2VyU3R5bGVTaGVldC5jcHAKLVVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElXaW5kb3dGZWF0dXJlcy5jcHAKIApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yNzQsNyArMjc0LDYgQEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubQogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNv
Y29hLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCi1VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9MZWdhY3lCdW5kbGVGb3JDbGFzcy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0
dHJpYnV0ZWRTdHJpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3Qu
bW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9Tb3VyY2VzR1RLLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw2IEBAIFVJ
UHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9n
dGsvV0tWaWV3LmNwcAogCiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVz
dC5jcHAgQG5vLXVuaWZ5CkBAIC0yMzIsNiArMjMxLDcgQEAgVUlQcm9jZXNzL2NhaXJvL0JhY2tp
bmdTdG9yZUNhaXJvLmNwcCBAbgogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcAogVUlQcm9jZXNzL2dzdHJlYW1lci9X
ZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTExNCw3ICsxMTQsNiBAQCBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMu
Y3BwCiBVSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKIAogVUlQcm9jZXNzL0FQSS9nbGli
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlR0xpYi5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJ
L2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXBwbGljYXRpb25JbmZvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwIEBuby11bmlmeQpAQCAtMTkyLDYgKzE5MSw3IEBA
IFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3YKIAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5
R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5p
ZnkKIAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKIFVJ
UHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJu
aW5nLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNyAr
NDE2LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgICwg
bV9wcmVmZXJlbmNlcygqbV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpKQogICAgICwgbV91
c2VyQ29udGVudENvbnRyb2xsZXIoKm1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRl
ZExpbmtTdG9yZSgpKQotICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+
d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCisgICAgLCBtX3dlYnNpdGVE
YXRhU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKQogICAgICwgbV91
c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgeyBtX2NvbmZpZ3VyYXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5KCkgfQogICAgICwgbV90cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZp
Z3VyYXRpb24tPnRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCkBAIC0y
ODY3LDggKzI4NjcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9s
CiAgICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gZGF0YTsKICAgICBpZiAocG9saWNp
ZXMpIHsKICAgICAgICAgZGF0YSA9IHBvbGljaWVzLT5kYXRhKCk7Ci0gICAgICAgIGlmIChwb2xp
Y2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpICYmICZwb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgp
LT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSkgewotICAgICAg
ICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCktPndl
YnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAgaWYgKHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3Jl
KCkgJiYgcG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlLnB0
cigpKSB7CisgICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gKnBvbGljaWVzLT53ZWJzaXRl
RGF0YVN0b3JlKCk7CiAgICAgICAgICAgICBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDQsOCArMjQ0LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nl
c3NQb29sKEFQSTo6UHJvYwogICAgICAgICBQcm9jZXNzOjpzZXRJZGVudGlmaWVyKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKICAgICB9KTsKIAotICAgIGlmICghbV93
ZWJzaXRlRGF0YVN0b3JlICYmIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZUV4aXN0cygpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSAm
JiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCisgICAgICAgIG1f
d2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsK
IAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV9jb25maWd1cmF0aW9uLT5hbHdheXNSZXZhbGlk
YXRlZFVSTFNjaGVtZXMoKSkKICAgICAgICAgbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2
YWxpZGF0ZWQuYWRkKHNjaGVtZSk7CkBAIC00ODMsMTQgKzQ4MywxNCBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKLSAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZW5kaW5nQ29va2ll
cyA9IGNvcHlUb1ZlY3RvcihtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5w
ZW5kaW5nQ29va2llcygpKTsKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuY2xlYXJQZW5kaW5nQ29va2llcygpOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1
bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fd2Vi
c2l0ZURhdGFTdG9yZS0+cGVuZGluZ0Nvb2tpZXMoKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFT
dG9yZS0+Y2xlYXJQZW5kaW5nQ29va2llcygpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAg
ICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyKCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNr
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJh
Y2soKSA/IEFsbG93c1RMU0ZhbGxiYWNrOjpZZXMgOiBBbGxvd3NUTFNGYWxsYmFjazo6Tm87Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IG1fd2Vic2l0
ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9IG1fd2Vic2l0ZURh
dGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNrID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5hbGxvd3NUTFNG
YWxsYmFjaygpID8gQWxsb3dzVExTRmFsbGJhY2s6OlllcyA6IEFsbG93c1RMU0ZhbGxiYWNrOjpO
bzsKICNlbmRpZgotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5uZXR3b3JraW5nSGFzQmVndW4oKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3
b3JraW5nSGFzQmVndW4oKTsKICAgICB9CiAKICAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBj
YWNoZU1vZGVsKCk7CkBAIC01MDIsNyArNTAyLDEyIEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdl
YlByb2Nlc3NQb29sOjplbnMKICAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IG1fdXJsU2NoZW1lc1Jl
Z2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMpCiAgICAgICAgIHBhcmFtZXRlcnMudXJsU2NoZW1l
c1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYXBwZW5kKHNjaGVtZSk7CiAKLSAgICBwYXJh
bWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+ZGlza0NhY2hlRGly
ZWN0b3J5KCk7CisgICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUgJiYgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpKSB7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9y
ZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICAgICAgbV93ZWJz
aXRlRGF0YVN0b3JlLT5yZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOworICAgIH0KKyAg
ICBpZiAobV93ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZURp
cmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb2x2ZWROZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkoKTsKICAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkK
ICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0
b3J5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VM
QVRJVkVfUkVWQUxJREFUSU9OKQpAQCAtNTQyLDIyICs1NDcsMjUgQEAgTmV0d29ya1Byb2Nlc3NQ
cm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lz
dGVyZWRBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0ID0gY29weVRvVmVjdG9yKG1fc2NoZW1l
c1RvUmVnaXN0ZXJBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KTsKIAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQotICAgIC8vICoqKioqKioqKgotICAgIC8vIElNUE9SVEFOVDogRG8g
bm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFzZXMg
b24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxlICg8
cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQotICAgIC8vICoqKioqKioqKgotICAgIHBhcmFtZXRl
cnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0g
bV9jb25maWd1cmF0aW9uLT5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGlmIChw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFt
ZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkuaW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5OwotICAgIAotICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJh
bWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwot
ICAgIG5ldHdvcmtQcm9jZXNzLT5jcmVhdGVTeW1MaW5rRm9yRmlsZVVwZ3JhZGUocGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpOwor
ICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlICYmIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmVFeGlzdHMoKSkgeworICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9y
ZS0+cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsKKyAgICB9CisgICAgaWYgKG1fd2Vi
c2l0ZURhdGFTdG9yZSkgeworICAgICAgICAvLyAqKioqKioqKioKKyAgICAgICAgLy8gSU1QT1JU
QU5UOiBEbyBub3QgY2hhbmdlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRh
dGFiYXNlcyBvbiBkaXNrIHdpdGhvdXQgZmlyc3QgY29uc3VsdGluZyBhIHJldmlld2VyIGZyb20g
QXBwbGUgKDxyZGFyOi8vcHJvYmxlbS8xNzQ1NDcxMj4pCisgICAgICAgIC8vICoqKioqKioqKgor
ICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb2x2ZWRJbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnkoKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
UmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMu
aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJh
bWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAg
IG5ldHdvcmtQcm9jZXNzLT5jcmVhdGVTeW1MaW5rRm9yRmlsZVVwZ3JhZGUocGFyYW1ldGVycy5k
ZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpOworICAg
IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChtX3dlYnNp
dGVEYXRhU3RvcmUpCi0gICAgICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc29s
dmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgICAgICBwYXJhbWV0
ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3Rv
cmUtPnJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAgIGlm
ICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAgICAg
ICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSAgQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSgpOworICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkgPSAgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3Jp
dGVEaXJlY3RvcnkocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
LCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogCiAgICAgaWYgKCFtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZS5pc0Vt
cHR5KCkpCkBAIC01NjYsMTYgKzU3NCwxNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9j
ZXNzUG9vbDo6ZW5zCiAgICAgcGFyYW1ldGVycy5zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclBy
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5OwogI2VuZGlmCiAKLSAgICBhdXRvIGxvY2FsU3RvcmFnZURpcmVj
dG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBudWxsU3RyaW5nKCk7
CisgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUgPyBt
X3dlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBudWxs
U3RyaW5nKCk7CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgIGxvY2Fs
U3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpOworICAgICAgICBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
UmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZh
dWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgcGFyYW1ldGVycy5k
ZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAg
ICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0
YVN0b3JlLT5yZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKICAgICBp
ZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAg
ICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CisgICAg
ICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogCiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRl
cnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9y
ZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCkBAIC02MDEsMTcgKzYwOSwxNyBAQCBOZXR3
b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgfSBlbHNlIGlmIChtX3dl
YnNpdGVEYXRhU3RvcmUpIHsKICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgICAgICBlbmFibGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJz
aXRlRGF0YVN0b3JlKCkuaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygpOworICAgICAgICBl
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0
YVN0b3JlLT5oYXNTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKCk7CiAjZW5kaWYKICAgICAgICAg
aWYgKGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKLSAgICAgICAgICAgIGF1dG8gbmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkucGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKKyAgICAgICAgICAg
IGF1dG8gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5wYXJh
bWV0ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzOwogICAgICAgICAgICAgc2hvdWxkSW5j
bHVkZUxvY2FsaG9zdCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNsdWRlTG9j
YWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgICAgICAgICAgZW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5lbmFi
bGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAgICAgICAgICAgbWFudWFsUHJl
dmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKLSAgICAgICAgcGFy
YW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVvdGEg
PSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZXJPcmlnaW5TdG9yYWdl
UXVvdGEoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5w
ZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJz
aXRlRGF0YVN0b3JlKCkucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOworICAgICAg
ICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VR
dW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7CisgICAg
ICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9y
aWdpblN0b3JhZ2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyVGhpcmRQYXJ0eU9yaWdp
blN0b3JhZ2VRdW90YSgpOwogICAgIH0KIAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9y
ZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNzAyLDggKzcxMCw4
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnQKIAogICAgIGlmICgh
d2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKLSAg
ICAgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwotICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gJm1fd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICAgICAgbV93ZWJzaXRl
RGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwor
ICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOwogICAg
IH0KIAogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQpAQCAtNzk1
LDEyICs4MDMsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdlCiB2
b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygpCiB7
CiAgICAgbV9yZXNvbHZlZFBhdGhzLmluamVjdGVkQnVuZGxlUGF0aCA9IHJlc29sdmVQYXRoRm9y
U2FuZGJveEV4dGVuc2lvbihpbmplY3RlZEJ1bmRsZVBhdGgoKSk7Ci0gICAgbV9yZXNvbHZlZFBh
dGhzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRl
RGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLndlYlNRTERhdGFiYXNlRGly
ZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRl
bnNpb24obV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAgICBt
X3Jlc29sdmVkUGF0aHMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFk
V3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVkaWFD
YWNoZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdlRGly
ZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRl
bnNpb24obV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAg
IG1fcmVzb2x2ZWRQYXRocy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3Jl
YXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24t
PmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOwotCiAgICAgbV9yZXNvbHZlZFBhdGhzLmFk
ZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnJlc2VydmVDYXBhY2l0eSht
X2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkuc2l6ZSgp
KTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBtX2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9u
YWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkpCiAgICAgICAgIG1fcmVzb2x2ZWRQYXRocy5hZGRp
dGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy51bmNoZWNrZWRBcHBlbmQocmVz
b2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGguZGF0YSgpKSk7CkBAIC04MzcsNyArODM5
LDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OgogI2lmIFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIC8vIEluIHBsYXRmb3JtcyB1c2luZyBCdWJi
bGV3cmFwIGZvciBzYW5kYm94aW5nLCBwcmV3YXJtZWQgcHJvY2VzcyBpcyBsYXVuY2hlZCB1c2lu
ZyB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlLAogICAgIC8vIHNv
IHdlIGRvbid0IHVzZSBpdCBpbiBjYXNlIG9mIHVzaW5nIGEgZGlmZmVyZW50IFdlYnNpdGVEYXRh
U3RvcmUuCi0gICAgaWYgKG1fc2FuZGJveEVuYWJsZWQgJiYgbV93ZWJzaXRlRGF0YVN0b3JlICYm
ICZtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURhdGFT
dG9yZSkKKyAgICBpZiAobV9zYW5kYm94RW5hYmxlZCAmJiBtX3dlYnNpdGVEYXRhU3RvcmUgJiYg
bV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogCkBAIC04ODAsMjkgKzg4MiwxOSBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZW5kV2ViUHJvY2Vzc0RhdGFTCiAgICAgd2Vic2l0ZURhdGFTdG9yZS5yZXNv
bHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOwogCiAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlZEFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKTsKLSAgICBpZiAocGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5ID0gbV9yZXNvbHZlZFBhdGhzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAgICAgaWYg
KCFwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJh
bWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVj
dG9yeU5hbWUgPSB3ZWJzaXRlRGF0YVN0b3JlLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUoKTsKLSAgICBpZiAocGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRmxhdEZp
bGVTdWJkaXJlY3RvcnlOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcGFyYW1ldGVycy5hcHBsaWNh
dGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0aW9uLT5hcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCk7CiAKICAgICBwYXJhbWV0ZXJz
LndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlZERhdGFi
YXNlRGlyZWN0b3J5KCk7Ci0gICAgaWYgKHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5
ID0gbV9yZXNvbHZlZFBhdGhzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwogICAgIGlmICghcGFy
YW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMu
d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0
ZSwgcGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAK
ICAgICBwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJl
c29sdmVkTWVkaWFDYWNoZURpcmVjdG9yeSgpOwotICAgIGlmIChwYXJhbWV0ZXJzLm1lZGlhQ2Fj
aGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJl
Y3RvcnkgPSBtX3Jlc29sdmVkUGF0aHMubWVkaWFDYWNoZURpcmVjdG9yeTsKICAgICBpZiAoIXBh
cmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMubWVk
aWFDYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBwYXJh
bWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgcGFyYW1l
dGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVk
TWVkaWFLZXlzRGlyZWN0b3J5KCk7Ci0gICAgaWYgKHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdl
RGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgcGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VE
aXJlY3RvcnkgPSBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5OwogICAg
IGlmICghcGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChw
YXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlw
ZTo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CiAKQEAgLTExMDcsNyArMTA5OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBy
b2Nlc3NEaWRGaW5pc2hMYXUKICAgICBtX2Nvbm5lY3Rpb25DbGllbnQuZGlkQ3JlYXRlQ29ubmVj
dGlvbih0aGlzLCBwcm9jZXNzLT53ZWJDb25uZWN0aW9uKCkpOwogCiAgICAgaWYgKG1fd2Vic2l0
ZURhdGFTdG9yZSkKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3Jl
LT5kaWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpk
aXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCkBAIC0xMTg2LDcgKzEx
NzgsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzCiAgICAgICAg
IHJldHVybiBjcmVhdGVOZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKTsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIGJvb2wgbXVzdE1hdGNoRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUg
IT0gJkFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0
YVN0b3JlKCk7CisgICAgYm9vbCBtdXN0TWF0Y2hEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwogI2Vsc2UKICAgICBib29sIG11
c3RNYXRjaERhdGFTdG9yZSA9IGZhbHNlOwogI2VuZGlmCkBAIC0xMjIwLDcgKzEyMTIsNyBAQCBS
ZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAgICAgIC8vIFdlIHRy
eSB0byBhdm9pZCBjcmVhdGluZyB0aGUgZGVmYXVsdCBkYXRhIHN0b3JlIGFzIGxvbmcgYXMgcG9z
c2libGUuCiAgICAgICAgIC8vIEJ1dCBpZiB0aGVyZSBpcyBhbiBhdHRlbXB0IHRvIGNyZWF0ZSBh
IHdlYiBwYWdlIHdpdGhvdXQgYW55IHNwZWNpZmllZCBkYXRhIHN0b3JlLCB0aGVuIHdlIGhhdmUg
dG8gY3JlYXRlIGl0LgogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAg
ICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERh
dGFTdG9yZSgpLnB0cigpOworICAgICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwogCiAgICAgICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5zZXRXZWJzaXRlRGF0YVN0b3JlKG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSk7
CiAgICAgfQpAQCAtMTIzMSw4ICsxMjIzLDggQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vz
c1Bvb2w6OmNyZWF0ZQogICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNy
ZWF0aW5nIHRoZSBwYWdlIHZpYSB3aW5kb3cub3BlbigpLgogICAgICAgICBwcm9jZXNzID0gJnBh
Z2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT5lbnN1cmVSdW5uaW5nUHJvY2VzcygpOwog
ICAgICAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCBzZXZlcmFsIFdlYnNpdGVEYXRhU3RvcmVzIHNo
YXJpbmcgYSBzaW5nbGUgcHJvY2Vzcy4KLSAgICAgICAgQVNTRVJUKHByb2Nlc3MuZ2V0KCkgPT0g
bV9kdW1teVByb2Nlc3NQcm94eSB8fCAmcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3Rv
cmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkp
OwotICAgICAgICBBU1NFUlQoJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT53ZWJz
aXRlRGF0YVN0b3JlKCkgPT0gJnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCkt
PndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIEFTU0VSVChwcm9jZXNzLmdldCgpID09IG1f
ZHVtbXlQcm9jZXNzUHJveHkgfHwgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUo
KSA9PSAmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgQVNTRVJUKCZwYWdl
Q29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHBhZ2VD
b25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIH0gZWxzZSBpZiAoIW1faXNE
ZWxheWVkV2ViUHJvY2Vzc0xhdW5jaERpc2FibGVkKSB7CiAgICAgICAgIC8vIEluIHRoZSBjb21t
b24gY2FzZSwgd2UgZGVsYXkgcHJvY2VzcyBsYXVuY2ggdW50aWwgc29tZXRoaW5nIGlzIGFjdHVh
bGx5IGxvYWRlZCBpbiB0aGUgcGFnZS4KICAgICAgICAgaWYgKCFtX2R1bW15UHJvY2Vzc1Byb3h5
KSB7CkBAIC0xMjQyLDcgKzEyMzQsNyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9v
bDo6Y3JlYXRlCiAgICAgICAgIH0KICAgICAgICAgcHJvY2VzcyA9IG1fZHVtbXlQcm9jZXNzUHJv
eHk7CiAgICAgfSBlbHNlCi0gICAgICAgIHByb2Nlc3MgPSAmcHJvY2Vzc0ZvclJlZ2lzdHJhYmxl
RG9tYWluKHBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRh
U3RvcmUoKSwgbnVsbHB0ciwgeyB9KTsKKyAgICAgICAgcHJvY2VzcyA9ICZwcm9jZXNzRm9yUmVn
aXN0cmFibGVEb21haW4oKnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCksIG51
bGxwdHIsIHsgfSk7CiAKICAgICBBU1NFUlQocHJvY2Vzcyk7CiAKQEAgLTEyOTIsNyArMTI4NCw3
IEBAIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmlu
ZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7
CisgICAgICAgIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLT5zZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5KCk7CiAKICAgICByZXR1cm4gbV9tYXlIYXZlUmVnaXN0ZXJlZFNl
cnZpY2VXb3JrZXJzLmVuc3VyZShzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBb
Jl0gewogICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIGNvbXB1dGF0aW9uIG9uIGEgYmFja2dy
b3VuZCB0aHJlYWQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJBUElE
aWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgog
I2luY2x1ZGUgIkRvd25sb2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2su
aCIKICNpbmNsdWRlICJIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyLmgi
CkBAIC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQu
aCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5LmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWlu
Lmg+CkBAIC0yMDIsOCArMjAyLDggQEAgcHVibGljOgogICAgIC8vIERpc2Nvbm5lY3QgdGhlIHBy
b2Nlc3MgZnJvbSB0aGUgY29udGV4dC4KICAgICB2b2lkIGRpc2Nvbm5lY3RQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSopOwogCi0gICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0
b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9Ci0gICAgdm9p
ZCBzZXRQcmltYXJ5RGF0YVN0b3JlKEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKSB7
IG1fd2Vic2l0ZURhdGFTdG9yZSA9ICZkYXRhU3RvcmU7IH0KKyAgICBXZWJzaXRlRGF0YVN0b3Jl
KiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdl
dCgpOyB9CisgICAgdm9pZCBzZXRQcmltYXJ5RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRh
dGFTdG9yZSkgeyBtX3dlYnNpdGVEYXRhU3RvcmUgPSAmZGF0YVN0b3JlOyB9CiAKICAgICBSZWY8
V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4mJik7CiAKQEAgLTY3Niw3ICs2NzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9tZW1vcnlTYW1wbGVyRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgZG91YmxlIG1fbWVtb3J5U2Ft
cGxlckludGVydmFsIHsgMTQwMC4wIH07CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0
b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1f
d2Vic2l0ZURhdGFTdG9yZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgUmVm
UHRyPFdlYkNvbnRleHRTdXBwbGVtZW50PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IFdlYkNvbnRl
eHRTdXBwbGVtZW50TWFwOwogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVu
dHM7CkBAIC03NjEsMTIgKzc2MSw3IEBAIHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgUGF0aHMgewog
ICAgICAgICBTdHJpbmcgaW5qZWN0ZWRCdW5kbGVQYXRoOwotICAgICAgICBTdHJpbmcgYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIHdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5OwotICAgICAgICBTdHJpbmcgbWVkaWFDYWNoZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5n
IG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIHVpUHJvY2Vzc0J1bmRs
ZVJlc291cmNlUGF0aDsKLSAgICAgICAgU3RyaW5nIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsK
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFN0cmluZyBjb29raWVTdG9yYWdl
RGlyZWN0b3J5OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29r
aWVTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUhUVFBDb29raWVTdG9yZS5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw5ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJSFRUUENvb2tp
ZVN0b3JlLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAi
V2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNp
bmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw3ICs0OCw2IEBAIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVp
bnQKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBBUElXZWJDb29raWVNYW5hZ2VyUHJveHlPYnNl
cnZlcjsKLWNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKIGNsYXNzIEhUVFBDb29raWVTdG9yZSBm
aW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6SFRUUENvb2tpZVN0b3JlPiB7
CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQYWdlQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFZpc2l0ZWRM
aW5rU3QKICAgICBtX3Zpc2l0ZWRMaW5rU3RvcmUgPSB2aXNpdGVkTGlua1N0b3JlOwogfQogCi1B
UEk6OldlYnNpdGVEYXRhU3RvcmUqIFBhZ2VDb25maWd1cmF0aW9uOjp3ZWJzaXRlRGF0YVN0b3Jl
KCkKK1dlYnNpdGVEYXRhU3RvcmUqIFBhZ2VDb25maWd1cmF0aW9uOjp3ZWJzaXRlRGF0YVN0b3Jl
KCkKIHsKICAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOwogfQogCi12b2lkIFBh
Z2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZSogd2Vic2l0ZURhdGFTdG9yZSkKK3ZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFdlYnNpdGVE
YXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBtX3dl
YnNpdGVEYXRhU3RvcmUgPSB3ZWJzaXRlRGF0YVN0b3JlOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTIgQEAgY2xhc3MgV2ViUHJlZmVy
ZW5jZXM7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIGNsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXI7
CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKK2NsYXNzIFdlYnNpdGVEYXRh
U3RvcmU7CiB9CiAKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBBcHBsaWNhdGlvbk1hbmlmZXN0
OwotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIGNsYXNzIFdlYnNpdGVQb2xpY2llczsKIAogY2xh
c3MgUGFnZUNvbmZpZ3VyYXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlBh
Z2VDb25maWd1cmF0aW9uPiB7CkBAIC04NCw4ICs4NCw4IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6
OlZpc2l0ZWRMaW5rU3RvcmUqIHZpc2l0ZWRMaW5rU3RvcmUoKTsKICAgICB2b2lkIHNldFZpc2l0
ZWRMaW5rU3RvcmUoV2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlKik7CiAKLSAgICBXZWJzaXRlRGF0
YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3Jl
KFdlYnNpdGVEYXRhU3RvcmUqKTsKKyAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNp
dGVEYXRhU3RvcmUoKTsKKyAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlKik7CiAKICAgICBXZWJzaXRlUG9saWNpZXMqIGRlZmF1bHRXZWJzaXRlUG9s
aWNpZXMoKSBjb25zdDsKICAgICB2b2lkIHNldERlZmF1bHRXZWJzaXRlUG9saWNpZXMoV2Vic2l0
ZVBvbGljaWVzKik7CkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2Vi
S2l0OjpXZWJQYWdlUHJveHk+IG1fcmVsYXRlZFBhZ2U7CiAgICAgUmVmUHRyPFdlYktpdDo6Vmlz
aXRlZExpbmtTdG9yZT4gbV92aXNpdGVkTGlua1N0b3JlOwogCi0gICAgUmVmUHRyPFdlYnNpdGVE
YXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBSZWZQdHI8V2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAgICAgUmVmUHRyPFdlYnNpdGVQb2xpY2ll
cz4gbV9kZWZhdWx0V2Vic2l0ZVBvbGljaWVzOwogCiAgICAgYm9vbCBtX3RyZWF0c1NIQTFTaWdu
ZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlIHsgdHJ1ZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsy
Niw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKIG5h
bWVzcGFjZSBBUEkgewogCkBAIC0zNiwzNSArMzYsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKTsKIH0KIAotUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiYgbGVnYWN5Q29u
ZmlndXJhdGlvbikKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb246OmNyZWF0ZSgpOwotCi0gICAgY29uZmlndXJhdGlvbi0+bV9hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJk
aXJlY3RvcnlOYW1lID0gbGVnYWN5Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZp
bGVTdWJkaXJlY3RvcnlOYW1lKCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9kaXNrQ2FjaGVEaXJl
Y3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAg
IGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRp
b24ubWVkaWFDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1faW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
PSBsZWdhY3lDb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZp
Z3VyYXRpb24tPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25m
aWd1cmF0aW9uLT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0
aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX3dlYlNR
TERhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KIFByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkKLSAgICA6IG1fYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpKQotICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJl
Y3RvcnlOYW1lKCJGaWxlcyIpCi0gICAgLCBtX2Rpc2tDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpCi0gICAgLCBtX21lZGlhQ2Fj
aGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3Rvcnko
KSkKLSAgICAsIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpCi0gICAgLCBtX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KCkpCi0gICAgLCBtX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpCi0gICAg
LCBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSgpKQotICAgICwgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpCi0g
ICAgLCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkKIHsKIH0KIApAQCAtNzcs
MTggKzQ5LDggQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1BvbwogICAg
IGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOwogCiAgICAgY29weS0+bV9jYWNoZU1vZGVsID0g
dGhpcy0+bV9jYWNoZU1vZGVsOwotICAgIGNvcHktPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0gdGhp
cy0+bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2
ZVZhbGlkYXRpb25FbmFibGVkID0gdGhpcy0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRp
b25FbmFibGVkOwotICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHRoaXMt
Pm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKLSAgICBjb3B5LT5tX2FwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSB0aGlzLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWU7Ci0gICAgY29weS0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0g
dGhpcy0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5OwotICAgIGNvcHktPm1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkgPSB0aGlzLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIGNv
cHktPm1faW5qZWN0ZWRCdW5kbGVQYXRoID0gdGhpcy0+bV9pbmplY3RlZEJ1bmRsZVBhdGg7Ci0g
ICAgY29weS0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2xvY2FsU3RvcmFnZURp
cmVjdG9yeTsKLSAgICBjb3B5LT5tX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSA9
IHRoaXMtPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1f
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeTsKLSAgICBjb3B5LT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSB0aGlz
LT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV93ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAg
Y29weS0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fY2FjaGVQYXJ0aXRp
b25lZFVSTFNjaGVtZXM7CiAgICAgY29weS0+bV9hbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMg
PSB0aGlzLT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKICAgICBjb3B5LT5tX2FkZGl0
aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzID0gdGhpcy0+bV9hZGRpdGlvbmFsUmVhZEFjY2Vz
c0FsbG93ZWRQYXRoczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI0OTczMikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDUsOCArNDUsNiBAQCBuYW1lc3BhY2UgQVBJIHsKIGNs
YXNzIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9i
amVjdDo6VHlwZTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBS
ZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOwot
ICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGVXaXRoV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiYpOwogCiAgICAgZXhwbGljaXQgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7
CiAgICAgdmlydHVhbCB+UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC03OSwzOCArNzcs
OSBAQCBwdWJsaWM6CiAgICAgV2ViS2l0OjpDYWNoZU1vZGVsIGNhY2hlTW9kZWwoKSBjb25zdCB7
IHJldHVybiBtX2NhY2hlTW9kZWw7IH0KICAgICB2b2lkIHNldENhY2hlTW9kZWwoV2ViS2l0OjpD
YWNoZU1vZGVsIGNhY2hlTW9kZWwpIHsgbV9jYWNoZU1vZGVsID0gY2FjaGVNb2RlbDsgfQogCi0g
ICAgY29uc3QgV1RGOjpTdHJpbmcmIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7
IHJldHVybiBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkpIHsgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGFwcGxpY2F0aW9uQ2FjaGVG
bGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBk
aXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2Rpc2tDYWNoZURpcmVjdG9yeTsg
fQotICAgIHZvaWQgc2V0RGlza0NhY2hlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBkaXNr
Q2FjaGVEaXJlY3RvcnkpIHsgbV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBkaXNrQ2FjaGVEaXJlY3Rv
cnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV9tZWRpYUNhY2hlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRNZWRpYUNh
Y2hlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUNhY2hlRGlyZWN0b3J5KSB7IG1f
bWVkaWFDYWNoZURpcmVjdG9yeSA9IG1lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICAKLSAgICBj
b25zdCBXVEY6OlN0cmluZyYgaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRJbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgaW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnkpIHsgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGluZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5OyB9Ci0KICAgICBjb25zdCBXVEY6OlN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQ
YXRoKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZVBhdGg7IH0KICAgICB2b2lkIHNl
dEluamVjdGVkQnVuZGxlUGF0aChjb25zdCBXVEY6OlN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRo
KSB7IG1faW5qZWN0ZWRCdW5kbGVQYXRoID0gaW5qZWN0ZWRCdW5kbGVQYXRoOyB9CiAKLSAgICBj
b25zdCBXVEY6OlN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldExvY2FsU3RvcmFnZURpcmVj
dG9yeShjb25zdCBXVEY6OlN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KSB7IG1fbG9jYWxT
dG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBX
VEY6OlN0cmluZyYgZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNl
dERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgZGly
ZWN0b3J5KSB7IG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gZGlyZWN0b3J5
OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgd2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkpIHsgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsgfQotICAg
IHZvaWQgc2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgbWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSkgeyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBt
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSkgeyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5OyB9Ci0KICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiBjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcygpIHsgcmV0dXJuIG1fY2FjaGVQYXJ0aXRpb25l
ZFVSTFNjaGVtZXM7IH0KICAgICB2b2lkIHNldENhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKFZl
Y3RvcjxXVEY6OlN0cmluZz4mJiBjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcykgeyBtX2NhY2hl
UGFydGl0aW9uZWRVUkxTY2hlbWVzID0gV1RGTW92ZShjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1l
cyk7IH0KIApAQCAtMTg2LDE3ICsxNTUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaXNrQ2Fj
aGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkIHsgZmFsc2UgfTsKICAgICBXZWJLaXQ6OkNh
Y2hlTW9kZWwgbV9jYWNoZU1vZGVsIHsgV2ViS2l0OjpDYWNoZU1vZGVsOjpQcmltYXJ5V2ViQnJv
d3NlciB9OwogCi0gICAgV1RGOjpTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Owot
ICAgIFdURjo6U3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZTsKLSAgICBXVEY6OlN0cmluZyBtX2Rpc2tDYWNoZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmlu
ZyBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeTsKICAgICBXVEY6OlN0cmluZyBtX2luamVjdGVkQnVuZGxlUGF0aDsKLSAg
ICBXVEY6OlN0cmluZyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBt
X2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBtX3dl
YlNRTERhdGFiYXNlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fbWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3Rvcnk7CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hl
bWVzOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9hbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVt
ZXM7CiAgICAgVmVjdG9yPFdURjo6Q1N0cmluZz4gbV9hZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93
ZWRQYXRoczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0
YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0x
LDE2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotCi0jaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxp
emUuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0KLW5hbWVzcGFjZSBBUEkgewot
Ci1zdGF0aWMgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiBnbG9iYWxEZWZhdWx0RGF0YVN0b3Jl
KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+
PiBnbG9iYWxEZWZhdWx0RGF0YVN0b3JlOwotICAgIHJldHVybiBnbG9iYWxEZWZhdWx0RGF0YVN0
b3JlLmdldCgpOwotfQotCi0KLVJlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGF0YVN0b3JlKCkKLXsKLSAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7
Ci0KLSAgICBhdXRvJiBzdG9yZSA9IGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKTsKLSAgICBpZiAo
IXN0b3JlKQotICAgICAgICBzdG9yZSA9IGFkb3B0UmVmKG5ldyBXZWJzaXRlRGF0YVN0b3JlKGRl
ZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpKTsKLQotICAgIHJldHVybiAqc3RvcmU7Ci19Ci0KLXZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcoKQotewotICAgIGdsb2JhbERl
ZmF1bHREYXRhU3RvcmUoKSA9IG51bGxwdHI7Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpCi17Ci0gICAgcmV0dXJuICEhZ2xvYmFsRGVmYXVsdERh
dGFTdG9yZSgpOwotfQotCi1SZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6
Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2Vic2l0ZURhdGFTdG9yZSk7Ci19Ci0KLVJlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRl
RGF0YVN0b3JlOjpjcmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24+JiYgY29uZmlndXJhdGlvbiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKLXsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlKFdURk1vdmUoY29uZmln
dXJhdGlvbiksIHNlc3Npb25JRCkpOwotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0
YVN0b3JlKCkKLSAgICA6IG1fd2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKSkKLXsKLX0KLQotV2Vic2l0ZURhdGFTdG9yZTo6V2Vi
c2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4m
JiBjb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgOiBtX3dlYnNp
dGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGTW92ZShjb25m
aWd1cmF0aW9uKSwgc2Vzc2lvbklEKSkKLXsKLX0KLQotV2Vic2l0ZURhdGFTdG9yZTo6fldlYnNp
dGVEYXRhU3RvcmUoKQotewotfQotCi1IVFRQQ29va2llU3RvcmUmIFdlYnNpdGVEYXRhU3RvcmU6
Omh0dHBDb29raWVTdG9yZSgpCi17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+Y29v
a2llU3RvcmUoKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6IGluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5j
b25maWd1cmF0aW9uKCkuaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLX0KLQotYm9vbCBX
ZWJzaXRlRGF0YVN0b3JlOjppc1BlcnNpc3RlbnQoKQotewotICAgIHJldHVybiBtX3dlYnNpdGVE
YXRhU3RvcmUtPmlzUGVyc2lzdGVudCgpOwotfQotCi1ib29sIFdlYnNpdGVEYXRhU3RvcmU6OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV93ZWJz
aXRlRGF0YVN0b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOwotfQotCi12b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKLXsKLSAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGVuYWJsZWQpOwotfQotCi1ib29sIFdlYnNpdGVEYXRhU3RvcmU6OnJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoKSBjb25zdAotewotICAgIHJldHVybiBtX3dlYnNp
dGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoKTsKLX0KLQotdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJv
b2wgZW5hYmxlZCkKLXsKLSAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEZWJ1Z01vZGUoZW5hYmxlZCk7Ci19Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi1X
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgp
Ci17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NjM2OSBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NjM3MAotICAgIHJldHVybiBXVEY6OlN0cmluZygpOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnkoKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgcmV0dXJuIFdURjo6U3RyaW5n
KCk7Ci19Ci0jZW5kaWYKLQotI2lmICFVU0UoR0xJQikKLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAg
IC8vIE5vdCBpbXBsZW1lbnRlZC4KLSAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKLX0KLSNlbmRp
ZgotCi1SZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQotewotICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0
ZSgpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0UGVyc2lzdGVudCh0cnVlKTsKLQotICAgIGNv
bmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdEFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgiRmlsZXMiKTsKLSAgICBjb25maWd1cmF0aW9u
LT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hl
RGlyZWN0b3J5KGRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkpOwotCi0gICAgY29uZmlndXJh
dGlvbi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoZGVmYXVsdEluZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkoZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoZGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldExv
Y2FsU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAg
IGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeShkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VE
aXJlY3RvcnkoZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpKTsKLQot
ICAgIGNvbmZpZ3VyYXRpb24tPnNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KGRl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpKTsKLQotICAgIHJldHVybiBj
b25maWd1cmF0aW9uOwotfQotCi19IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3Rv
cmUuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JlLmgiCi0jaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgotI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIEFQSSB7Ci0KLWNsYXNzIFdlYnNp
dGVEYXRhU3RvcmUgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OldlYnNp
dGVEYXRhU3RvcmU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+
IGRlZmF1bHREYXRhU3RvcmUoKTsKLSAgICBzdGF0aWMgYm9vbCBkZWZhdWx0RGF0YVN0b3JlRXhp
c3RzKCk7Ci0gICAgc3RhdGljIHZvaWQgZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3Rpbmco
KTsKLQotICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlKFJlZjxXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYp
OwotICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlTm9uUGVyc2lzdGVudERh
dGFTdG9yZSgpOwotCi0gICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOwotICAgIHZp
cnR1YWwgfldlYnNpdGVEYXRhU3RvcmUoKTsKLQotICAgIGJvb2wgaXNQZXJzaXN0ZW50KCk7Ci0K
LSAgICBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sKTsKLSAgICBib29sIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCk7Ci0KLSAgICBXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0
KCk7IH0KLSAgICBIVFRQQ29va2llU3RvcmUmIGh0dHBDb29raWVTdG9yZSgpOwotCi0gICAgV1RG
OjpTdHJpbmcgaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLQotICAgIHN0YXRpYyBXVEY6
OlN0cmluZyBkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBX
VEY6OlN0cmluZyBkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RG
OjpTdHJpbmcgZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpT
dHJpbmcgZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7Ci0g
ICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAg
ICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsK
LSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURp
cmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0V2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkoKTsKLSNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVs
dEhTVFNEaXJlY3RvcnkoKTsKLSNlbmRpZgotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKLQotICAgIHN0YXRp
YyBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gZGVmYXVsdERhdGFT
dG9yZUNvbmZpZ3VyYXRpb24oKTsKLQotcHJpdmF0ZToKLSAgICBlbnVtIFNob3VsZENyZWF0ZURp
cmVjdG9yeSB7IENyZWF0ZURpcmVjdG9yeSwgRG9udENyZWF0ZURpcmVjdG9yeSB9OwotCi0gICAg
V2Vic2l0ZURhdGFTdG9yZSgpOwotCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIHRlbXBEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5h
bWUsIFNob3VsZENyZWF0ZURpcmVjdG9yeSA9IENyZWF0ZURpcmVjdG9yeSk7Ci0gICAgc3RhdGlj
IFdURjo6U3RyaW5nIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJp
bmcmIGRpcmVjdG9yeU5hbWUpOwotCi0gICAgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4g
bV93ZWJzaXRlRGF0YVN0b3JlOwotfTsKLQotfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAJKHJldmlzaW9uIDI0OTczMikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiwxNCArMjYsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRh
U3RvcmUuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZVBvbGljaWVzRGF0YS5oIgogCiBuYW1lc3BhY2UgQVBJIHsKIAogV2Vic2l0ZVBvbGljaWVzOjpX
ZWJzaXRlUG9saWNpZXMoKSA9IGRlZmF1bHQ7CiAKLVdlYnNpdGVQb2xpY2llczo6V2Vic2l0ZVBv
bGljaWVzKGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZUF1dG9wbGF5UXVpcms+IGFsbG93ZWRBdXRvcGxheVF1aXJrcywgV2ViS2l0OjpXZWJzaXRl
QXV0b3BsYXlQb2xpY3kgYXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVy
RmllbGQ+JiYgbGVnYWN5Q3VzdG9tSGVhZGVyRmllbGRzLCBWZWN0b3I8V2ViQ29yZTo6Q3VzdG9t
SGVhZGVyRmllbGRzPiYmIGN1c3RvbUhlYWRlckZpZWxkcywgV2ViS2l0OjpXZWJzaXRlUG9wVXBQ
b2xpY3kgcG9wVXBQb2xpY3ksIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiYmIHdlYnNpdGVEYXRh
U3RvcmUpCitXZWJzaXRlUG9saWNpZXM6OldlYnNpdGVQb2xpY2llcyhib29sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiBhbGxv
d2VkQXV0b3BsYXlRdWlya3MsIFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5IGF1dG9wbGF5
UG9saWN5LCBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPiYmIGxlZ2FjeUN1c3RvbUhl
YWRlckZpZWxkcywgVmVjdG9yPFdlYkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4mJiBjdXN0b21I
ZWFkZXJGaWVsZHMsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9saWN5LCBSZWZQ
dHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiYmIHdlYnNpdGVEYXRhU3RvcmUpCiAgICAgOiBt
X2NvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoY29udGVudEJsb2NrZXJzRW5hYmxlZCkKICAgICAsIG1f
YWxsb3dlZEF1dG9wbGF5UXVpcmtzKGFsbG93ZWRBdXRvcGxheVF1aXJrcykKICAgICAsIG1fYXV0
b3BsYXlQb2xpY3koYXV0b3BsYXlQb2xpY3kpCkBAIC04NCw3ICs4NCw3IEBAIFdlYnNpdGVQb2xp
Y2llczo6fldlYnNpdGVQb2xpY2llcygpCiB7CiB9CiAKLXZvaWQgV2Vic2l0ZVBvbGljaWVzOjpz
ZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiYmIHdlYnNpdGVEYXRh
U3RvcmUpCit2b2lkIFdlYnNpdGVQb2xpY2llczo6c2V0V2Vic2l0ZURhdGFTdG9yZShSZWZQdHI8
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiYmIHdlYnNpdGVEYXRhU3RvcmUpCiB7CiAgICAgbV93
ZWJzaXRlRGF0YVN0b3JlID0gV1RGTW92ZSh3ZWJzaXRlRGF0YVN0b3JlKTsKIH0KQEAgLTEwOCw3
ICsxMDgsNyBAQCBXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGEgV2Vic2l0ZVBvbGljCiAjZW5k
aWYKICAgICAgICAgV1RGTW92ZShjdXN0b21IZWFkZXJGaWVsZHMpLAogICAgICAgICBwb3BVcFBv
bGljeSgpLAotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPyBPcHRpb25hbDxXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiB7IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnBhcmFtZXRlcnMoKSB9IDogV1RGOjpudWxsb3B0LAorICAgICAgICBtX3dlYnNp
dGVEYXRhU3RvcmUgPyBPcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
PiB7IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGFyYW1ldGVycygpIH0gOiBXVEY6Om51bGxvcHQsCiAg
ICAgICAgIG1fY3VzdG9tVXNlckFnZW50LAogICAgICAgICBtX2N1c3RvbUphdmFTY3JpcHRVc2Vy
QWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrcywKICAgICAgICAgbV9jdXN0b21OYXZpZ2F0b3JQbGF0
Zm9ybSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNp
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZVBvbGljaWVzLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTMgKzQxLDEy
IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNz
IFdlYnNpdGVEYXRhU3RvcmU7CiBzdHJ1Y3QgV2Vic2l0ZVBvbGljaWVzRGF0YTsKIH0KIAogbmFt
ZXNwYWNlIEFQSSB7CiAKLWNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7Ci0KIGNsYXNzIFdlYnNpdGVQ
b2xpY2llcyBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6
OldlYnNpdGVQb2xpY2llcz4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2Vic2l0ZVBvbGlj
aWVzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVQb2xpY2llcyk7IH0K
QEAgLTc5LDggKzc4LDggQEAgcHVibGljOgogICAgIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5
IHBvcFVwUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9wb3BVcFBvbGljeTsgfQogICAgIHZvaWQg
c2V0UG9wVXBQb2xpY3koV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3kgcG9saWN5KSB7IG1fcG9w
VXBQb2xpY3kgPSBwb2xpY3k7IH0KIAotICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRh
U3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KLSAgICB2
b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYpOworICAg
IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgcmV0
dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQorICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFT
dG9yZShSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiYmKTsKIAogICAgIFdlYktpdDo6
V2Vic2l0ZVBvbGljaWVzRGF0YSBkYXRhKCk7CiAKQEAgLTExOCw3ICsxMTcsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRBbGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZlclF1aXJrKGJvb2wgYWxsb3cp
IHsgbV9hbGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZlclF1aXJrID0gYWxsb3c7IH0KIAogcHJpdmF0
ZToKLSAgICBXZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBPcHRp
b25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4sIFdlYktpdDo6V2Vic2l0ZUF1dG9w
bGF5UG9saWN5LCBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPiYmLCBWZWN0b3I8V2Vi
Q29yZTo6Q3VzdG9tSGVhZGVyRmllbGRzPiYmLCBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSwg
UmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYpOworICAgIFdlYnNpdGVQb2xpY2llcyhib29sIGNv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1
aXJrPiwgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3JlOjpIVFRQ
SGVhZGVyRmllbGQ+JiYsIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+JiYsIFdl
YktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5LCBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
PiYmKTsKIAogICAgIGJvb2wgbV9jb250ZW50QmxvY2tlcnNFbmFibGVkIHsgdHJ1ZSB9OwogICAg
IE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiBtX2FsbG93ZWRBdXRvcGxh
eVF1aXJrczsKQEAgLTEyOSw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxXZWJDb3Jl
OjpIVFRQSGVhZGVyRmllbGQ+IG1fbGVnYWN5Q3VzdG9tSGVhZGVyRmllbGRzOwogICAgIFZlY3Rv
cjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+IG1fY3VzdG9tSGVhZGVyRmllbGRzOwogICAg
IFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IG1fcG9wVXBQb2xpY3kgeyBXZWJLaXQ6OldlYnNp
dGVQb3BVcFBvbGljeTo6RGVmYXVsdCB9OwotICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBt
X3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4g
bV93ZWJzaXRlRGF0YVN0b3JlOwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tVXNlckFnZW50Owog
ICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmlj
UXVpcmtzOwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm07CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNpb24gMjQ5
NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDcgKzY5LDYgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiBjbGFz
cyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247CiBjbGFzcyBTZXNzaW9uU3RhdGU7CiBjbGFzcyBV
c2VyU2NyaXB0OwotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIGNsYXNzIFdlYnNpdGVQb2xpY2ll
czsKIGNsYXNzIFdpbmRvd0ZlYXR1cmVzOwogfQpAQCAtMTEzLDYgKzExMiw3IEBAIGNsYXNzIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOwogY2xhc3MgV2ViVGV4dENoZWNrZXI7CiBj
bGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIGNsYXNzIFdlYlZpZXdwb3J0QXR0
cmlidXRlczsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBjbGFzcyBXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbjsKIAogV0tfQUREX0FQSV9NQVBQSU5HKFdLQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VSZWYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpCkBAIC0xNjksNyArMTY5LDcg
QEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlck1lZGlhUGVybWlzc2lvbgogV0tfQUREX0FQSV9N
QVBQSU5HKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYsIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyU2NyaXB0UmVmLCBBUEk6
OlVzZXJTY3JpcHQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tWaWV3cG9ydEF0dHJpYnV0ZXNSZWYs
IFdlYlZpZXdwb3J0QXR0cmlidXRlcykKLVdLX0FERF9BUElfTUFQUElORyhXS1dlYnNpdGVEYXRh
U3RvcmVSZWYsIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSkKK1dLX0FERF9BUElfTUFQUElORyhXS1dl
YnNpdGVEYXRhU3RvcmVSZWYsIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSkKIFdLX0FERF9BUElf
TUFQUElORyhXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmLCBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZVBv
bGljaWVzUmVmLCBBUEk6OldlYnNpdGVQb2xpY2llcykKIFdLX0FERF9BUElfTUFQUElORyhXS1dp
bmRvd0ZlYXR1cmVzUmVmLCBBUEk6OldpbmRvd0ZlYXR1cmVzKQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFu
YWdlci5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw0
MiArMjYsMTkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLmgiCiAKLSNpbmNsdWRlICJBUElBcnJheS5oIgotI2luY2x1ZGUgIkFQSVdl
YnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJz
aXRlRGF0YVJlY29yZC5oIgotCiBXS1R5cGVJRCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0
VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OkFQSVR5cGUpOworICAgIHJldHVybiAwOwogfQogCi12b2lkIFdLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lucyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0FwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFj
aykKK3ZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5zKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYsIHZvaWQqLCBXS0FwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbikKIHsKLSAgICBhdXRv
JiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dl
YnNpdGVEYXRhU3RvcmVSZWY+KGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyKSktPndlYnNpdGVEYXRh
U3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLmZldGNoRGF0YShXZWJLaXQ6OldlYnNpdGVE
YXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHsgfSwgW2NvbnRleHQsIGNhbGxi
YWNrXShhdXRvIGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmpl
Y3Q+PiBzZWN1cml0eU9yaWdpbnM7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZGF0YVJlY29y
ZCA6IGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6
IGRhdGFSZWNvcmQub3JpZ2lucykKLSAgICAgICAgICAgICAgICBzZWN1cml0eU9yaWdpbnMuYXBw
ZW5kKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkp
OwotICAgICAgICB9Ci0KLSAgICAgICAgY2FsbGJhY2soV2ViS2l0Ojp0b0FQSShBUEk6OkFycmF5
OjpjcmVhdGUoV1RGTW92ZShzZWN1cml0eU9yaWdpbnMpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRl
eHQpOwotICAgIH0pOwogfQogCi12b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVF
bnRyaWVzRm9yT3JpZ2luKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25D
YWNoZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKQordm9pZCBXS0FwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0FwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRh
U3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZj4oYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotCi0g
ICAgV2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgIGRhdGFSZWNvcmQu
YWRkKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwg
V2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotCi0gICAg
d2Vic2l0ZURhdGFTdG9yZS5yZW1vdmVEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpPZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZSwgeyBkYXRhUmVjb3JkIH0sIFtdIHsgfSk7CiB9CiAKLXZv
aWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcikKK3ZvaWQgV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
clJlZikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwocmVp
bnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURh
dGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCAt
V2FsbFRpbWU6OmluZmluaXR5KCksIFtdIHsgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5o
CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE4ICsyNywxOSBA
QAogI2RlZmluZSBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyX2gKIAogI2luY2x1ZGUgPFdlYktp
dC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CiAKICNpZmRlZiBf
X2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotV0tfRVhQT1JUIFdLVHlwZUlEIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRUeXBlSUQoKTsKK1dLX0VYUE9SVCBXS1R5cGVJRCBX
S0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0VHlwZUlEKCkgV0tfQ19BUElfREVQUkVDQVRFRDsK
IAogdHlwZWRlZiB2b2lkICgqV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5zRnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdLRXJyb3JSZWYsIHZvaWQqKTsKLVdL
X0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2lucyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLCB2b2lkKiBjb250ZXh0LCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRp
b25DYWNoZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS0FwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnMoV0tBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwgdm9pZCogY29udGV4dCwg
V0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zRnVuY3Rp
b24gZnVuY3Rpb24pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKLVdLX0VYUE9SVCB2b2lkIFdLQXBw
bGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5S
ZWYgb3JpZ2luKTsKLVdLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxl
dGVBbGxFbnRyaWVzKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIpOworV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0
ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlv
bkNhY2hlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pIFdLX0NfQVBJX0RFUFJF
Q0FURUQ7CitXS19FWFBPUlQgdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlQWxs
RW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGlj
eUxpc3RlbmVyLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
MTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tGcmFtZVBvbGlj
eUxpc3RlbmVyLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVk
ZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVk
ZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94
eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFT
dG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKIAogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ5NzMyKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOTAgKzI2LDM4IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgiCiAKLSNpbmNsdWRlICJB
UElBcnJheS5oIgotI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJBUElXZWJz
aXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKLSNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVJlY29yZC5oIgotI2luY2x1ZGUgIldl
YnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi11c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRUeXBl
SUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OkFQSVR5cGUp
OworICAgIHJldHVybiAwOwogfQogCiBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJHZXRPcmlnaW5LZXkoKQogewotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpT
dHJpbmc6OmNyZWF0ZSgiV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclN0b3JhZ2VEZXRhaWxzT3Jp
Z2luS2V5IikubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAogV0tTdHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0Q3Jl
YXRpb25UaW1lS2V5KCkKIHsKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3Ry
aW5nOjpjcmVhdGUoIldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJTdG9yYWdlRGV0YWlsc0NyZWF0
aW9uVGltZUtleSIpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdl
dE1vZGlmaWNhdGlvblRpbWVLZXkoKQogewotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0g
QVBJOjpTdHJpbmc6OmNyZWF0ZSgiV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclN0b3JhZ2VEZXRh
aWxzTW9kaWZpY2F0aW9uVGltZUtleSIpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtl
eSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYg
a2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uIGNhbGxiYWNrKQotCit2b2lk
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMoV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmLCB2b2lkKiwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0
S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRh
U3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGtl
eVZhbHVlU3RvcmFnZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVE
YXRhU3RvcmUuZmV0Y2hEYXRhKHsgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIFdlYnNp
dGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UgfSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdKGF1
dG8gZGF0YVJlY29yZHMpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNl
Y3VyaXR5T3JpZ2luczsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0
YVJlY29yZHMpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJl
Y29yZC5vcmlnaW5zKQotICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy5hcHBlbmQoQVBJ
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92
ZShzZWN1cml0eU9yaWdpbnMpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwotICAgIH0pOwog
fQogCi12b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmln
aW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIHZv
aWQqIGNvbnRleHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlP
cmlnaW5GdW5jdGlvbiBjYWxsYmFjaykKK3ZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0
U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYsIHZvaWQq
LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rp
b24pCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVycHJldF9j
YXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oa2V5VmFsdWVTdG9yYWdlTWFuYWdlcikpLT53ZWJz
aXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5nZXRMb2NhbFN0b3JhZ2VEZXRh
aWxzKFtjb250ZXh0LCBjYWxsYmFja10oYXV0byYmIGRldGFpbHMpIHsKLSAgICAgICAgVmVjdG9y
PFJlZlB0cjxBUEk6Ok9iamVjdD4+IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0LnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoZGV0YWlscy5zaXplKCkpOwotCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZGV0YWlsIDogZGV0YWlscykgewotICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxB
UEk6Ok9iamVjdD4+IGRldGFpbE1hcDsKLSAgICAgICAgICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4g
b3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihkZXRhaWwub3JpZ2luSWRlbnRpZmllcikt
PnNlY3VyaXR5T3JpZ2luKCkpOwotCi0gICAgICAgICAgICBkZXRhaWxNYXAuc2V0KHRvSW1wbChX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkoKSktPnN0cmluZygpLCBvcmlnaW4p
OwotICAgICAgICAgICAgaWYgKGRldGFpbC5jcmVhdGlvblRpbWUpCi0gICAgICAgICAgICAgICAg
ZGV0YWlsTWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0Q3JlYXRpb25U
aW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShkZXRhaWwuY3JlYXRpb25U
aW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpKTsKLSAgICAgICAgICAgIGlmIChkZXRh
aWwubW9kaWZpY2F0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxNYXAuc2V0KHRvSW1w
bChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1lS2V5KCkpLT5zdHJp
bmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShkZXRhaWwubW9kaWZpY2F0aW9uVGltZS0+c2Vjb25k
c1NpbmNlRXBvY2goKS52YWx1ZSgpKSk7Ci0KLSAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRB
cHBlbmQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShkZXRhaWxNYXApKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92
ZShyZXN1bHQpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwotICAgIH0pOwogfQogCi12b2lk
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmln
aW5SZWYgb3JpZ2luKQordm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVFbnRyaWVz
Rm9yT3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJl
ZikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nh
c3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSktPndlYnNp
dGVEYXRhU3RvcmUoKTsKLSAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgIGRh
dGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlLCB0b0ltcGwob3JpZ2lu
KS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNpdGVE
YXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigp
LmRhdGEoKSk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1vdmVEYXRhKHsgV2Vic2l0ZURhdGFU
eXBlOjpMb2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UgfSwgeyBk
YXRhUmVjb3JkIH0sIFtdIHsgfSk7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
RGVsZXRlQWxsRW50cmllcyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9y
YWdlTWFuYWdlcikKK3ZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmll
cyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYpCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFT
dG9yZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oa2V5
VmFsdWVTdG9yYWdlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0ZURh
dGFTdG9yZS5yZW1vdmVEYXRhKHsgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIFdlYnNp
dGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UgfSwgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbXSB7
IH0pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNywzMCArMjcsMzEgQEAKICNkZWZpbmUgV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyX2gKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQv
V0tEZXByZWNhdGVkLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5k
aWYKIAotV0tfRVhQT1JUIFdLVHlwZUlEIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJ
RCgpOworV0tfRVhQT1JUIFdLVHlwZUlEIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJ
RCgpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5cGU6IFdLU2VjdXJpdHlPcmln
aW5SZWYgKi8KLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRPcmlnaW5LZXkoKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJHZXRPcmlnaW5LZXkoKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAvKiBWYWx1ZSB0eXBl
OiBXS0RvdWJsZVJlZiwgc2Vjb25kcyBzaW5jZSBKYW51YXJ5IDFzdCwgMTk3MCBVVEMgKi8KLVdL
X0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRp
bWVLZXkoKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRDcmVhdGlvblRpbWVLZXkoKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAvKiBWYWx1ZSB0eXBl
OiBXS0RvdWJsZVJlZiwgc2Vjb25kcyBzaW5jZSBKYW51YXJ5IDFzdCwgMTk3MCBVVEMgKi8KLVdL
X0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRp
b25UaW1lS2V5KCk7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKIHR5cGVk
ZWYgdm9pZCAoKldLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdp
bnNGdW5jdGlvbikoV0tBcnJheVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZv
aWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29u
dGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1
bmN0aW9uIGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtl
eVZhbHVlU3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbikgV0tfQ19BUElf
REVQUkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0
U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmLCB2
b2lkKik7Ci1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdl
RGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9y
YWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24gZnVuY3Rpb24pOworV0tfRVhQT1JUIHZvaWQgV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwg
V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1bmN0aW9u
IGZ1bmN0aW9uKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCi1XS19FWFBPUlQgdm9pZCBXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdl
TWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9y
aWdpbik7Ci1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxF
bnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
KTsKK1dLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNG
b3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFn
ZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKSBXS19DX0FQSV9ERVBSRUNBVEVEOworV0tf
RVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlcikgV0tfQ19BUElf
REVQUkVDQVRFRDsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNw
cAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDY3ICsyNiwxOSBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldLUmVzb3VyY2VDYWNoZU1hbmFnZXIu
aCIKIAotI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9y
ZS5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhUmVjb3Jk
LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLUmVzb3VyY2VDYWNo
ZU1hbmFnZXJHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OkFQSVR5cGUpOwotfQotCi1zdGF0aWMgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
dG9XZWJzaXRlRGF0YVR5cGVzKFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIp
Ci17Ci0gICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcyB7IFdl
YnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUgfTsKLQotICAgIGlmIChjYWNoZXNUb0NsZWFyID09
IFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyQWxsKQotICAgICAgICB3ZWJzaXRlRGF0YVR5cGVzLmFk
ZChXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSk7Ci0KLSAgICByZXR1cm4gd2Vic2l0ZURhdGFU
eXBlczsKKyAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0
Q2FjaGVPcmlnaW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5hZ2VyLCB2b2lk
KiBjb250ZXh0LCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zRnVuY3Rpb24g
Y2FsbGJhY2spCit2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMoV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlclJlZiwgdm9pZCosIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRD
YWNoZU9yaWdpbnNGdW5jdGlvbikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9J
bXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihjYWNoZU1hbmFnZXIp
KS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUuZmV0Y2hEYXRhKHRv
V2Vic2l0ZURhdGFUeXBlcyhXS1Jlc291cmNlQ2FjaGVzVG9DbGVhckFsbCksIHsgfSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShhdXRvIGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8
QVBJOjpPYmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IG9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykKLSAgICAgICAgICAgICAgICBzZWN1cml0eU9y
aWdpbnMuYXBwZW5kKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvcmlnaW4uc2VjdXJpdHlP
cmlnaW4oKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FsbGJhY2sodG9BUEkoQVBJOjpBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoc2VjdXJpdHlPcmlnaW5zKSkucHRyKCkpLCBudWxscHRyLCBjb250
ZXh0KTsKLSAgICB9KTsKIH0KIAotdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNo
ZUZvck9yaWdpbihXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwgV0tTZWN1
cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xl
YXIpCit2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2luKFdLUmVz
b3VyY2VDYWNoZU1hbmFnZXJSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLUmVzb3VyY2VDYWNo
ZXNUb0NsZWFyKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRl
cnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGNhY2hlTWFuYWdlcikpLT53ZWJzaXRl
RGF0YVN0b3JlKCk7Ci0KLSAgICBWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFSZWNvcmRz
OwotCi0gICAgewotICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgICAg
ICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlLCB0b0ltcGwob3Jp
Z2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotCi0gICAgICAgIGRhdGFSZWNvcmRzLmFw
cGVuZChkYXRhUmVjb3JkKTsKLSAgICB9Ci0KLSAgICBpZiAoY2FjaGVzVG9DbGVhciA9PSBXS1Jl
c291cmNlQ2FjaGVzVG9DbGVhckFsbCkgewotICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRh
UmVjb3JkOwotICAgICAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNo
ZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKLQotICAgICAgICBk
YXRhUmVjb3Jkcy5hcHBlbmQoZGF0YVJlY29yZCk7Ci0gICAgfQotCi0gICAgd2Vic2l0ZURhdGFT
dG9yZS5yZW1vdmVEYXRhKHRvV2Vic2l0ZURhdGFUeXBlcyhjYWNoZXNUb0NsZWFyKSwgZGF0YVJl
Y29yZHMsIFtdIHsgfSk7CiB9CiAKLXZvaWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2Fj
aGVGb3JBbGxPcmlnaW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5hZ2VyLCBX
S1Jlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKQordm9pZCBXS1Jlc291cmNlQ2Fj
aGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFsbE9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJl
ZiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9y
ZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oY2FjaGVN
YW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92
ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKGNhY2hlc1RvQ2xlYXIpLCAtV2FsbFRpbWU6OmluZmlu
aXR5KCksIFtdIHsgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oCShyZXZpc2lvbiAyNDk3MzIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV0tSZXNvdXJjZUNhY2hl
TWFuYWdlcl9oCiAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0
L1dLRGVwcmVjYXRlZC5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAt
MzgsMTMgKzM5LDEzIEBAIGVudW0gewogfTsKIHR5cGVkZWYgdWludDMyX3QgV0tSZXNvdXJjZUNh
Y2hlc1RvQ2xlYXI7CiAKLVdLX0VYUE9SVCBXS1R5cGVJRCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2Vy
R2V0VHlwZUlEKCk7CitXS19FWFBPUlQgV0tUeXBlSUQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdl
dFR5cGVJRCgpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKIHR5cGVkZWYgdm9pZCAoKldLUmVzb3Vy
Y2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnNGdW5jdGlvbikoV0tBcnJheVJlZiwgV0tFcnJv
clJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENh
Y2hlT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNvbnRleHRSZWYsIHZvaWQqIGNv
bnRleHQsIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnNGdW5jdGlvbiBmdW5j
dGlvbik7CitXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmln
aW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY29udGV4dFJlZiwgdm9pZCogY29udGV4dCwg
V0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKSBX
S19DX0FQSV9ERVBSRUNBVEVEOwogCi1XS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyQ2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFu
Z2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIg
Y2FjaGVzVG9DbGVhcik7Ci1XS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xl
YXJDYWNoZUZvckFsbE9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFn
ZXIsIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpOworV0tfRVhQT1JUIHZv
aWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4oV0tSZXNvdXJjZUNh
Y2hlTWFuYWdlclJlZiBjYWNoZU1hbmdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdL
UmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7
CitXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFsbE9y
aWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIFdLUmVzb3VyY2VD
YWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKICNpZmRl
ZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmgiCiAKICNpbmNsdWRlICJBUElBcnJheS5oIgotI2luY2x1ZGUgIkFQSVdlYnNp
dGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKICNpbmNsdWRl
ICJNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiU2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCkBAIC00MSwy
OSArNDEsMzAgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVJlY29yZC5oIgorI2luY2x1
ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNp
bmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiBXS1R5cGVJRCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRUeXBlSUQoKQogewotICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpBUElUeXBlKTsKIH0KIAog
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUdldERlZmF1bHREYXRhU3Rv
cmUoKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKSk7CiB9CiAKIFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVOb25QZXJzaXN0ZW50
RGF0YVN0b3JlKCkKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkubGVha1JlZigpKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25Q
ZXJzaXN0ZW50KCkubGVha1JlZigpKTsKIH0KIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vi
c2l0ZURhdGFTdG9yZUNyZWF0ZVdpdGhDb25maWd1cmF0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbikKIHsKICAgICBhdXRvIHNlc3Npb25JRCA9IFdl
YktpdDo6dG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5pc1BlcnNpc3RlbnQoKSA/IFBBTDo6U2Vzc2lv
bklEOjpnZW5lcmF0ZVBlcnNpc3RlbnRTZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpnZW5l
cmF0ZUVwaGVtZXJhbFNlc3Npb25JRCgpOwotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZSgqV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJhdGlvbiks
IHNlc3Npb25JRCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoKldlYktpdDo6dG9JbXBsKGNvbmZpZ3VyYXRpb24p
LCBzZXNzaW9uSUQpLmxlYWtSZWYoKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgYm9vbCBlbmFibGUpCkBAIC04MywxMyArODQsMTMgQEAgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdAogCiBXS0hUVFBDb29raWVTdG9yZVJlZiBXS1dlYnNp
dGVEYXRhU3RvcmVHZXRIVFRQQ29va2llU3RvcmUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+aHR0cENvb2tpZVN0b3JlKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJ
KCZXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5jb29raWVTdG9yZSgpKTsKIH0KIAogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlV2l0
aENvbXBsZXRpb25IYW5kbGVyKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJv
b2wgZW5hYmxlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVi
dWdNb2RlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJz
aXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGUs
IFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoZW5hYmxlLCBbY29u
dGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29u
dGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMTAwLDcgKzEwMSw3IEBAIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3QKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWJ1Z01vZGVGdW5jdGlvbiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQcmV2
YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3Qp
LT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBs
ZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAg
IH0pOwogI2Vsc2UKQEAgLTExMCw3ICsxMTEsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFJlc291cmNlTG9hZFN0CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0
U2VlbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0
LCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc0xhc3RTZWVuRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TGFzdFNlZW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY29tcGxl
dGlvbkhhbmRsZXJdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRMYXN0
U2VlbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFNlY29uZHMg
eyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0xMjEsNyArMTIyLDcg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTGFzdAogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRnVu
Y3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHdlYnNpdGVEYXRhU3Rv
cmUgPSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKTsKIAogICAgIGlmICh2YWx1ZSkKICAg
ICAgICAgd2Vic2l0ZURhdGFTdG9yZS5zZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
cl0gewpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc1ByZXYKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxl
bnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1Jl
ZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0
aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBhdXRvJiB3ZWJzaXRl
RGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpOworICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKTsKIAogICAgIGlmICh2YWx1ZSkKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS5zZXRW
ZXJ5UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3Ry
aW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKQEAgLTE1Nyw3ICsxNTgsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NWZXJ5CiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53
ZWJzaXRlRGF0YVN0b3JlKCkuZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoW2NvbnRleHQsIGNh
bGxiYWNrXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSB7CisgICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoW2Nv
bnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSB7
CiAgICAgICAgIGNhbGxiYWNrKFdlYktpdDo6dG9BUEkocmVzb3VyY2VMb2FkU3RhdGlzdGljcy5p
bXBsKCkpLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0xNjgsNyArMTY5LDcgQEAgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVEdW1wUmVzb3VyY2VMb2FkUwogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZ1bmN0aW9uIGNhbGxiYWNrKQog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmlzUHJldmFsZW50UmVzb3VyY2Uo
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2Fs
bGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSkgeworICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRS
ZXNvdXJjZSkgewogICAgICAgICBjYWxsYmFjayhpc1ByZXZhbGVudFJlc291cmNlLCBjb250ZXh0
KTsKICAgICB9KTsKICNlbHNlCkBAIC0xNzksNyArMTgwLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NQcmV2YQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3Rp
Y3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNT
dGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10o
Ym9vbCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSkgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPmlzVmVyeVByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzVmVyeVByZXZh
bGVudFJlc291cmNlKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzVmVyeVByZXZhbGVudFJlc291cmNl
LCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0xOTAsNyArMTkxLDcgQEAgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIHN1YnJlc291cmNlSG9zdCwgV0tTdHJpbmdS
ZWYgdG9wRnJhbWVIb3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJj
ZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikg
eworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzUmVnaXN0ZXJlZEFzU3VicmVz
b3VyY2VVbmRlcihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHN1YnJlc291cmNlSG9zdCktPnN0
cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmco
KSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXIpIHsKICAgICAgICAgY2FsbGJhY2soaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyLCBj
b250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yMDEsNyArMjAyLDcgQEAgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpcwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0
YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIHN1YkZyYW1lSG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJh
bWVIb3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdp
c3RlcmVkQXNTdWJGcmFtZVVuZGVyRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNr
XShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcikgeworICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKHN1YkZyYW1lSG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9v
bCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpIHsKICAgICAgICAgY2FsbGJhY2soaXNSZWdp
c3RlcmVkQXNTdWJGcmFtZVVuZGVyLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yMTIs
NyArMjEzLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpcwogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1Rv
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3RSZWRp
cmVjdGVkRnJvbSwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbywgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUb0Z1
bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmlz
UmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RS
ZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdp
c3RlcmVkQXNSZWRpcmVjdGluZ1RvKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBs
KGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBp
c1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8pIHsKICAgICAgICAgY2FsbGJhY2soaXNSZWdpc3Rl
cmVkQXNSZWRpcmVjdGluZ1RvLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yMjMsNyAr
MjI0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpcwogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFs
dWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNIYWRVc2Vy
SW50ZXJhY3Rpb25GdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIGRhdGFTdG9yZSA9IFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvJiBkYXRhU3Rv
cmUgPSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKTsKIAogICAgIGlmICh2YWx1ZSkKICAg
ICAgICAgZGF0YVN0b3JlLmxvZ1VzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewpAQCAt
MjQxLDcgKzI0Miw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0hhc0gK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9u
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRl
cmFjdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFT
dG9yZSgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNIYWRVc2VySW50ZXJh
Y3Rpb24pIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5oYXNIYWRVc2VySW50
ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29u
dGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKSB7CiAgICAgICAgIGNh
bGxiYWNrKGhhc0hhZFVzZXJJbnRlcmFjdGlvbiwgY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpA
QCAtMjUyLDE0ICsyNTMsMTQgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NI
YXNIYQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29s
IHZhbHVlKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEdyYW5kZmF0
aGVyZWQoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCB2YWx1ZSwg
W10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRHcmFuZGZhdGhl
cmVkKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgdmFsdWUsIFtd
IHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NH
cmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dy
YW5kZmF0aGVyZWRGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNHcmFuZGZhdGhl
cmVkKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aGFzSGFkVXNlckludGVy
YWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShib29sIGlzR3JhbmRmYXRoZXJlZCkgewogICAgICAgICBjYWxsYmFjayhp
c0dyYW5kZmF0aGVyZWQsIGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTI3MCw0OSArMjcx
LDQ5IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmQKIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0
cmluZ1JlZiB0b3BGcmFtZUhvc3QpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhv
c3QpLT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhv
c3QpLT5zdHJpbmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVm
IHRvcEZyYW1lSG9zdCkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCkt
PnN0cmluZygpKSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5z
ZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9z
dCktPnN0cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9z
dFJlZGlyZWN0ZWRUbykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8p
LT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3Rl
ZFRvKS0+c3RyaW5nKCkpLCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVm
IGhvc3RSZWRpcmVjdGVkRnJvbSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KS5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGly
ZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2Vi
S2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRv
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdL
U3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8pCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0
YVN0b3JlKCkuc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVk
aXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJl
ZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmlu
Z1JlZiBob3N0UmVkaXJlY3RlZEZyb20pCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkuc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRp
cmVjdGVkRnJvbSktPnN0cmluZygpKSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29y
YXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgZnJv
bUhvc3QsIFdLU3RyaW5nUmVmIHRvSG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25GdW5jdGlvbiBj
YWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRDcm9zc1Np
dGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGZyb21Ib3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvSG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rp
bmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChmcm9tSG9zdCktPnN0cmluZygpKSwgVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbCh0b0hvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFj
a10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0zMjMs
NyArMzI0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvcwogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcywgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2Vy
SW50ZXJhY3Rpb25GdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMgeyBzZWNvbmRz
IH0sIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHNlY29uZHMgfSwgW2Nv
bnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwog
I2Vsc2UKQEAgLTMzNCw3ICszMzUsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NUaW1lCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcm9jZXNzU3RhdGlz
dGljc0FuZERhdGFSZWNvcmRzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGlj
c0FuZERhdGFSZWNvcmRzRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJz
aXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5n
KFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhbY29udGV4dCwgY2Fs
bGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAt
MzQ1LDcgKzM0Niw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3MK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZ0Z1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxl
Q29va2llQmxvY2tpbmdVcGRhdGUoW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSgpIHsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBk
YXRlKFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0oKSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTM1NiwyMSArMzU3LDIxIEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUMKIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnN1Ym1pdFRl
bGVtZXRyeSgpOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnN1Ym1pdFRlbGVt
ZXRyeSgpOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHZhbHVl
LCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUsIFtdIHsgfSk7CiAjZW5kaWYKIH0K
IAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5nVGVzdChXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5nVGVzdEZ1bmN0aW9uIGNh
bGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldElzUnVubmlu
Z1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KHZhbHVlLCBbY29udGV4dCwgY2FsbGJhY2tdIHsK
KyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRJc1J1bm5pbmdSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGVzdCh2YWx1ZSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNh
bGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTM4MSw0OSArMzgyLDQ5IEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0lzUnUKIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29y
ZHNSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wgdmFsdWUp
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U2hvdWxkQ2xhc3NpZnlS
ZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwodmFsdWUsIFtdKCkgeyB9KTsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0Jl
Zm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSwgW10oKSB7IH0pOwogI2VuZGlmCiB9CiAKIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRy
eVdhc0NhcHR1cmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wgdmFs
dWUpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0Tm90aWZ5UGFnZXNX
aGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQodmFsdWUsIFtdKCkgeyB9KTsKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT5zZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZCh2YWx1ZSwgW10oKSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcykKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jk
c1JlbW92YWwoU2Vjb25kcyB7IHNlY29uZHMgfSwgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3Zh
bChTZWNvbmRzIHsgc2Vjb25kcyB9LCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJpbmdUaW1lKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzKQogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHsgc2Vj
b25kcyB9LCBbXSgpIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0
R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtdKCkgeyB9KTsKICNlbmRp
ZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNYXhTdGF0aXN0aWNz
RW50cmllcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB1bnNpZ25lZCBlbnRy
aWVzKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE1heFN0YXRpc3Rp
Y3NFbnRyaWVzKGVudHJpZXMsIFtdKCkgeyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT5zZXRNYXhTdGF0aXN0aWNzRW50cmllcyhlbnRyaWVzLCBbXSgpIHsgfSk7CiAjZW5k
aWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJ1bmVFbnRyaWVz
RG93blRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVkIGVudHJp
ZXMpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UHJ1bmVFbnRyaWVz
RG93blRvKGVudHJpZXMsIFtdKCkgeyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5zZXRQcnVuZUVudHJpZXNEb3duVG8oZW50cmllcywgW10oKSB7IH0pOwogI2VuZGlmCiB9
CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50U3RvcmUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29u
dGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50U3RvcmVGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRh
U3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdlYktpdDo6U2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CisgICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudChXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzLCBbY29udGV4
dCwgY2FsbGJhY2tdKCkgewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNl
bHNlCkBAIC00MzQsNyArNDM1LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
Q2xlYXJJbgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3VycyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmLCB1bnNpZ25lZCBob3Vycywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNp
bmNlSG91cnNGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRh
U3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lOjpub3co
KSAtIFNlY29uZHM6OmZyb21Ib3Vycyhob3VycyksIFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CisgICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxs
VGltZTo6bm93KCkgLSBTZWNvbmRzOjpmcm9tSG91cnMoaG91cnMpLCBXZWJLaXQ6OlNob3VsZEdy
YW5kZmF0aGVyU3RhdGlzdGljczo6WWVzLCBbY29udGV4dCwgY2FsbGJhY2tdKCkgewogICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00NDUsNyArNDQ2LDcgQEAg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbgogdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxGdW5jdGlvbiBjYWxs
YmFjaykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBl
cyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVE
YXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKDApLCBbY29udGV4dCwgY2Fs
bGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRh
dGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKDApLCBbY29udGV4dCwgY2FsbGJhY2td
IHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC00NTMsNyArNDU0
LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaAogdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRl
SHR0cE9ubHlDb29raWVzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kZWxldGVDb29raWVzRm9yVGVzdGluZyhVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIGluY2x1ZGVIdHRwT25seUNvb2tp
ZXMsIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgW2NvbnRleHQsIGNhbGxiYWNr
XSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTQ2NCw3
ICs0NjUsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDCiB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZUZ1bmN0aW9uIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhhc0xvY2FsU3RvcmFn
ZUZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzTG9jYWxTdG9yYWdlKSB7CisgICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+aGFzTG9jYWxTdG9yYWdlRm9yVGVzdGluZyhVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9v
bCBoYXNMb2NhbFN0b3JhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soaGFzTG9jYWxTdG9yYWdlLCBj
b250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00NzUsNyArNDc2LDcgQEAgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVz
b3VyY2VzKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00ODYsNyArNDg3LDcgQEAg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaAogdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb25GdW5jdGlvbiBjYWxsYmFjaykK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5oYXNJc29sYXRlZFNlc3Npb25G
b3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2Nv
bnRleHQsIGNhbGxiYWNrXShib29sIGhhc0lzb2xhdGVkU2Vzc2lvbikgeworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0lzb2xhdGVkU2Vzc2lvbkZvclRlc3RpbmcoVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2td
KGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9uKSB7CiAgICAgICAgIGNhbGxiYWNrKGhhc0lzb2xhdGVk
U2Vzc2lvbiwgY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTAxLDcgKzUwMiw3IEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG8KICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAKLSAgICBhdXRvJiBzdG9yZSA9IFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvJiBzdG9y
ZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpOwogICAgIHN0b3JlLmNsZWFyUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0luV2ViUHJvY2Vzc2VzKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIHN0b3JlLnJlc2V0Q2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRDcm9zc1NpdGVMb2Fk
c1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CkBAIC01MTYsNyArNTE3LDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUbwogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVSZW1vdmVBbGxGZXRjaENhY2hlcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hlUmVtb3Zh
bEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlOwotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVE
YXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2td
IHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBl
cywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAg
Y2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC01MjgsNyArNTI5LDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hlRgogICAgIFZlY3RvcjxXZWJLaXQ6Oldl
YnNpdGVEYXRhUmVjb3JkPiBkYXRhUmVjb3JkcyA9IHsgV1RGTW92ZShkYXRhUmVjb3JkKSB9Owog
CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJL
aXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCBkYXRhUmVj
b3JkcywgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+cmVtb3ZlRGF0YShkYXRhVHlwZXMsIGRhdGFSZWNvcmRzLCBbY29udGV4dCwgY2FsbGJh
Y2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC01MzYsNyAr
NTM3LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hlRgogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVJl
bW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXM7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6
OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCks
IFtjb250ZXh0LCBjYWxsYmFja10gewogICAgIGlmIChjYWxsYmFjaykKICAgICAgICAgY2FsbGJh
Y2soY29udGV4dCk7CiAgICAgfSk7CkBAIC01NDUsNyArNTQ2LDcgQEAgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVM
b2NhbFN0b3JhZ2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29u
dGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlQ2FsbGJhY2sgY2FsbGJh
Y2spCiB7CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMg
PSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlOwotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBl
cywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1l
OjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgaWYgKGNhbGxiYWNr
KQogICAgICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CkBAIC01NTUsNyArNTU2
LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxTZXJ2aWNlVwogewogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uczsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0
YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2Nv
bnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+cmVt
b3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxi
YWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTU2
Niw3ICs1NjcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXCiAK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnMoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
R2V0RmV0Y2hDYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZmV0Y2hEYXRhKFdlYktpdDo6
V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdIChhdXRv
IGRhdGFSZWNvcmRzKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZmV0Y2hE
YXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgeyB9LCBbY29udGV4dCwgY2Fs
bGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpP
YmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZGF0YVJl
Y29yZCA6IGRhdGFSZWNvcmRzKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdp
biA6IGRhdGFSZWNvcmQub3JpZ2lucykKQEAgLTU4MCw3ICs1ODEsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplCiB7CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zID0gV2ViS2l0OjpXZWJzaXRlRGF0YUZl
dGNoT3B0aW9uOjpDb21wdXRlU2l6ZXM7CiAKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBl
OjpET01DYWNoZSwgZmV0Y2hPcHRpb25zLCBbb3JpZ2luLCBjb250ZXh0LCBjYWxsYmFja10gKGF1
dG8gZGF0YVJlY29yZHMpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5mZXRj
aERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBmZXRjaE9wdGlvbnMsIFtv
cmlnaW4sIGNvbnRleHQsIGNhbGxiYWNrXSAoYXV0byBkYXRhUmVjb3JkcykgewogICAgICAgICBh
dXRvIG9yaWdpbkRhdGEgPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zdHJpbmcoKSktPmRhdGEoKTsKICAgICAgICAgZm9y
IChhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKICAgICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgcmVjb3JkT3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKSB7CkBAIC01OTcsMjMg
KzU5OCwyMyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplCiAKIFdL
U3RyaW5nUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNvcHlTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpCiB7Ci0gICAgcmV0
dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKIH0KIAogdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkoV2ViS2l0Ojp0b0ltcGwoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSktPnN0
cmluZygpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdlYktpdDo6dG9JbXBsKHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkpLT5zdHJpbmcoKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIHVpbnQ2NF90IHF1b3RhKQogewotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEocXVvdGEpOwor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFBlck9yaWdpblN0b3JhZ2VRdW90
YShxdW90YSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZpY2VPcmll
bnRhdGlvblBlcm1pc3Npb25zKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpCiB7
CiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25B
Y2Nlc3NDb250cm9sbGVyKCkuY2xlYXJQZXJtaXNzaW9ucygpOworICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPmRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxl
cigpLmNsZWFyUGVybWlzc2lvbnMoKTsKICNlbmRpZgogfQogCkBAIC03MTMsMTQgKzcxNCwxNCBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFdlYkF1dGhlbnRpY2F0CiAgICAgICAgIGNvbmZp
Z3VyYXRpb24ubmZjID0gV1RGTW92ZShuZmMpOwogICAgIH0KIAotICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpOworICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
V1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVDbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbnNUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92
YWxGdW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpBZENsaWNrQXR0cmli
dXRpb25zOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKDApLCBb
Y29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5y
ZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKDApLCBbY29udGV4
dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9s
aWNpZXMuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyICsyNywx
MiBAQAogI2luY2x1ZGUgIldLV2Vic2l0ZVBvbGljaWVzLmgiCiAKICNpbmNsdWRlICJBUElEaWN0
aW9uYXJ5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkFQ
SVdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldL
QXJyYXkuaCIKICNpbmNsdWRlICJXS0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS1JldGFpblB0
ci5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY3VybC9XS1dlYnNp
dGVEYXRhU3RvcmVSZWZDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwuY3BwCShyZXZpc2lvbiAy
NDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZkN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5oIgog
Ci0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQ
cm94eVNldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkobm9uZXhpc3RlbnQpCkBAIC0xLDE5NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFQSVdl
YnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKLSNpbmNs
dWRlICJTYW5kYm94VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+Ci0jaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLQotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0jaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgotI2VuZGlm
Ci0KLW5hbWVzcGFjZSBBUEkgewotCi1OU1N0cmluZyAqV2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZh
dWx0c0tleSA9IEAiV2ViRGF0YWJhc2VEaXJlY3RvcnkiOwotTlNTdHJpbmcgKldlYlN0b3JhZ2VE
aXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoUHJl
ZmVyZW5jZUtleSI7Ci1OU1N0cmluZyAqV2ViS2l0TWVkaWFDYWNoZURpcmVjdG9yeURlZmF1bHRz
S2V5ID0gQCJXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5IjsKLU5TU3RyaW5nICpXZWJLaXRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkiOwotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICAvLyBUaGlzIHF1aXJrIHVzZWQgdG8gbWFrZSB0aGVzZSBhcHBzIHNoYXJlIGFwcGxpY2F0aW9u
IGNhY2hlIHN0b3JhZ2UsIGJ1dCBkb2Vzbid0IGFjY29tcGxpc2ggdGhhdCBhbnkgbW9yZS4KLSAg
ICAvLyBQcmVzZXJ2aW5nIGl0IGF2b2lkcyB0aGUgbmVlZCB0byBtaWdyYXRlIGRhdGEgd2hlbiB1
cGdyYWRpbmcuCi0gICAgLy8gRklYTUU6IElkZWFsbHkgd2Ugc2hvdWxkIGp1c3QgaGF2ZSBTYWZh
cmksIFdlYkFwcCwgYW5kIHdlYmJvb2ttYXJrc2QgY3JlYXRlIGEgZGF0YSBzdG9yZSB3aXRoCi0g
ICAgLy8gdGhpcyBhcHBsaWNhdGlvbiBjYWNoZSBwYXRoLCBidXQgdGhhdCdzIG5vdCBzdXBwb3J0
ZWQgYXMgb2YgcmlnaHQgbm93LgotICAgIGlmIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNN
b2JpbGVTYWZhcmkoKSB8fCBXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJBcHAoKSB8fCBX
ZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJCb29rbWFya3NEKCkpIHsKLSAgICAgICAgTlNT
dHJpbmcgKmNhY2hlUGF0aCA9IFtOU0hvbWVEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJMaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2ViQXBwQ2FjaGUiXTsKLQot
ICAgICAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNh
Y2hlUGF0aC5zdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoKTsKLSAgICB9Ci0jZW5kaWYKLQotICAg
IHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiT2ZmbGluZVdl
YkFwcGxpY2F0aW9uQ2FjaGUiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJDYWNoZVN0b3JhZ2UiKTsKLX0KLQotV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCi17
Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJOZXR3
b3JrQ2FjaGUiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1l
ZGlhQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKCJNZWRpYUNhY2hlIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0
dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJJbmRleGVk
REIiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiU2VydmljZVdvcmtlcnMiKTsKLX0KLQotV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCi17
Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KCJMb2NhbFN0b3JhZ2UiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0
YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTWVkaWFLZXlzIik7Ci19Ci0KLVdU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKCJXZWJTUUwiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJz
aXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQotewotICAgIHJldHVybiB0ZW1wRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJKYXZhU2NyaXB0Q29yZURlYnVnIiwgRG9udENy
ZWF0ZURpcmVjdG9yeSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OnRlbXBE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVj
dG9yeU5hbWUsIFNob3VsZENyZWF0ZURpcmVjdG9yeSBzaG91bGRDcmVhdGVEaXJlY3RvcnkpCi17
Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgc3RhdGljIE5TVVJM
ICp0ZW1wVVJMOwotICAgIAotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAg
ICAgTlNVUkwgKnVybCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6TlNUZW1wb3JhcnlEaXJlY3Rv
cnkoKSBpc0RpcmVjdG9yeTpZRVNdOwotICAgICAgICBpZiAoIXVybCkKLSAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIAotICAgICAgICBpZiAoIVdlYktp
dDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxl
SWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOwotICAg
ICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgIGJ1bmRsZUlk
ZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7Ci0gICAg
ICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVu
dGlmaWVyIGlzRGlyZWN0b3J5OllFU107Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRl
bXBVUkwgPSBbW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGly
ZWN0b3J5OllFU10gcmV0YWluXTsKLSAgICB9KTsKLSAgICAKLSAgICBOU1VSTCAqdXJsID0gW3Rl
bXBVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rv
cnk6WUVTXTsKLQotICAgIGlmIChzaG91bGRDcmVhdGVEaXJlY3RvcnkgPT0gQ3JlYXRlRGlyZWN0
b3J5Ci0gICAgICAgICYmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVE
aXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1
dGVzOm5pbCBlcnJvcjpudWxscHRyXSkpCi0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNy
ZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwotICAgIAotICAgIHJldHVybiB1cmwuYWJzb2x1dGVV
UkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQotewotICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNl
X3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBOU1VSTCAqY2FjaGVVUkw7Ci0KLSAgICBkaXNwYXRj
aF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIE5TVVJMICp1cmwgPSBbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9yeTpOU0NhY2hlc0RpcmVjdG9yeSBpbkRv
bWFpbjpOU1VzZXJEb21haW5NYXNrIGFwcHJvcHJpYXRlRm9yVVJMOm51bGxwdHIgY3JlYXRlOk5P
IGVycm9yOm51bGxwdHJdOwotICAgICAgICBpZiAoIXVybCkKLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXND
b250YWluZXIoKSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICgh
YnVuZGxlSWRlbnRpZmllcikKLSAgICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVyID0gW05T
UHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOwotICAgICAgICAgICAgdXJsID0g
W3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBpc0RpcmVj
dG9yeTpZRVNdOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FjaGVVUkwgPSBbW3VybCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsK
LSAgICB9KTsKLQotICAgIE5TVVJMICp1cmwgPSBbY2FjaGVVUkwgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKLSAgICBpZiAoIVtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJ
bnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0p
Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwp
OwotCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbjsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgc3Rh
dGljIE5TVVJMICp3ZWJzaXRlRGF0YVVSTDsKLQotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tl
biwgXnsKLSAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gVVJMRm9yRGlyZWN0b3J5Ok5TTGlicmFyeURpcmVjdG9yeSBpbkRvbWFpbjpOU1VzZXJEb21h
aW5NYXNrIGFwcHJvcHJpYXRlRm9yVVJMOm51bGxwdHIgY3JlYXRlOk5PIGVycm9yOm51bGxwdHJd
OwotICAgICAgICBpZiAoIXVybCkKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0KLSAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU107Ci0KLSAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nl
c3NIYXNDb250YWluZXIoKSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZp
ZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmICghYnVuZGxlSWRlbnRpZmllcikKLSAgICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVy
ID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOwotICAgICAgICAgICAg
dXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBp
c0RpcmVjdG9yeTpZRVNdOwotICAgICAgICB9Ci0KLSAgICAgICAgd2Vic2l0ZURhdGFVUkwgPSBb
W3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJzaXRlRGF0YSIgaXNEaXJlY3Rv
cnk6WUVTXSByZXRhaW5dOwotICAgIH0pOwotCi0gICAgTlNVUkwgKnVybCA9IFt3ZWJzaXRlRGF0
YVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9y
eTpZRVNdOwotICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVE
aXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1
dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3Jl
YXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7Ci0KLSAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBh
dGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwotfQotCi19IC8vIG5hbWVzcGFjZSBBUEkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZS5tbQkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTA1LDE3ICsxMDUsMTcgQEAgcHJpdmF0ZToKIAogKyAoV0tXZWJzaXRlRGF0YVN0b3JlICopZGVm
YXVsdERhdGFTdG9yZQogewotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcihXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKSk7CiB9CiAKICsgKFdLV2Vic2l0ZURhdGFT
dG9yZSAqKW5vblBlcnNpc3RlbnREYXRhU3RvcmUKIHsKLSAgICByZXR1cm4gd3JhcHBlcihBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKSk7CisgICAg
cmV0dXJuIHdyYXBwZXIoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0
ZW50KCkpOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpOworICAgIF93ZWJzaXRl
RGF0YVN0b3JlLT5XZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0YVN0b3JlKCk7
CiAKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CkBAIC0xNjksNyArMTY5LDcgQEAgKyAoTlNTZXQg
KilhbGxXZWJzaXRlRGF0YVR5cGVzCiAKIC0gKFdLSFRUUENvb2tpZVN0b3JlICopaHR0cENvb2tp
ZVN0b3JlCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUtPmh0dHBDb29r
aWVTdG9yZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcihfd2Vic2l0ZURhdGFTdG9yZS0+Y29va2ll
U3RvcmUoKSk7CiB9CiAKIHN0YXRpYyBXYWxsVGltZSB0b1N5c3RlbUNsb2NrVGltZShOU0RhdGUg
KmRhdGUpCkBAIC0xODYsNyArMTg2LDcgQEAgLSAodm9pZClmZXRjaERhdGFSZWNvcmRzT2ZUeXBl
czooTlNTZXQgKgogLSAodm9pZClyZW1vdmVEYXRhT2ZUeXBlczooTlNTZXQgKilkYXRhVHlwZXMg
bW9kaWZpZWRTaW5jZTooTlNEYXRlICopZGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29w
eSA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5
cGVzKGRhdGFUeXBlcyksIHRvU3lzdGVtQ2xvY2tUaW1lKGRhdGUgPyBkYXRlIDogW05TRGF0ZSBk
aXN0YW50UGFzdF0pLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5XSB7CisgICAgX3dlYnNpdGVEYXRh
U3RvcmUtPnJlbW92ZURhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwg
dG9TeXN0ZW1DbG9ja1RpbWUoZGF0ZSA/IGRhdGUgOiBbTlNEYXRlIGRpc3RhbnRQYXN0XSksIFtj
b21wbGV0aW9uSGFuZGxlckNvcHldIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KCk7
CiAgICAgfSk7CiB9CkBAIC0yMDUsNyArMjA1LDcgQEAgLSAodm9pZClyZW1vdmVEYXRhT2ZUeXBl
czooTlNTZXQgKilkYXRhVAogewogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKIAotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhk
YXRhVHlwZXMpLCB0b1dlYnNpdGVEYXRhUmVjb3JkcyhkYXRhUmVjb3JkcyksIFtjb21wbGV0aW9u
SGFuZGxlckNvcHldIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+cmVtb3ZlRGF0YShXZWJLaXQ6
OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCB0b1dlYnNpdGVEYXRhUmVjb3JkcyhkYXRh
UmVjb3JkcyksIFtjb21wbGV0aW9uSGFuZGxlckNvcHldIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXJDb3B5KCk7CiAgICAgfSk7CiB9CkBAIC0yNDAsMTIgKzI0MCwxMiBAQCArIChOU1NldDxO
U1N0cmluZyAqPiAqKV9hbGxXZWJzaXRlRGF0YVR5CiAKICsgKEJPT0wpX2RlZmF1bHREYXRhU3Rv
cmVFeGlzdHMKIHsKLSAgICByZXR1cm4gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0
YVN0b3JlRXhpc3RzKCk7CisgICAgcmV0dXJuIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZUV4aXN0cygpOwogfQogCiArICh2b2lkKV9kZWxldGVEZWZhdWx0RGF0YVN0
b3JlRm9yVGVzdGluZwogewotICAgIHJldHVybiBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0
ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7CisgICAgcmV0dXJuIFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcoKTsKIH0KIAogLSAo
aW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRpb246KF9XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgpAQCAtMjUzLDcgKzI1Myw3IEBAIC0gKGluc3Rh
bmNldHlwZSlfaW5pdFdpdGhDb25maWd1cmF0aW9uOigKICAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGF1dG8gY29uZmlnID0gY29uZmln
dXJhdGlvbi5pc1BlcnNpc3RlbnQgPyBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCkgOiBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpjcmVhdGUoKTsKKyAgICBhdXRvIGNvbmZpZyA9IGNvbmZpZ3VyYXRpb24uaXNQZXJzaXN0
ZW50ID8gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJh
dGlvbigpIDogV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7
CiAKICAgICBSRUxFQVNFX0FTU0VSVChjb25maWctPmlzUGVyc2lzdGVudCgpID09IGNvbmZpZ3Vy
YXRpb24uaXNQZXJzaXN0ZW50KTsKIApAQCAtMzEyLDcgKzMxMiw3IEBAIC0gKGluc3RhbmNldHlw
ZSlfaW5pdFdpdGhDb25maWd1cmF0aW9uOigKIAogICAgIGF1dG8gc2Vzc2lvbklEID0gY29uZmln
dXJhdGlvbi5pc1BlcnNpc3RlbnQgPyBQQUw6OlNlc3Npb25JRDo6Z2VuZXJhdGVQZXJzaXN0ZW50
U2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6Z2VuZXJhdGVFcGhlbWVyYWxTZXNzaW9uSUQo
KTsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpXZWJzaXRlRGF0
YVN0b3JlPihzZWxmLCBXVEZNb3ZlKGNvbmZpZyksIHNlc3Npb25JRCk7CisgICAgQVBJOjpPYmpl
Y3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+KHNlbGYsIFdU
Rk1vdmUoY29uZmlnKSwgc2Vzc2lvbklEKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMzI1
LDcgKzMyNSw3IEBAIC0gKHZvaWQpX2ZldGNoRGF0YVJlY29yZHNPZlR5cGVzOihOU1NldDwKICAg
ICBpZiAob3B0aW9ucyAmIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbkNvbXB1dGVTaXpl
cykKICAgICAgICAgZmV0Y2hPcHRpb25zLmFkZChXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRp
b246OkNvbXB1dGVTaXplcyk7CiAKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFT
dG9yZSgpLmZldGNoRGF0YShXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCBm
ZXRjaE9wdGlvbnMsIFtjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyQ29weSldKGF1dG8gd2Vic2l0ZURhdGFSZWNvcmRzKSB7CisgICAgX3dlYnNpdGVEYXRh
U3RvcmUtPmZldGNoRGF0YShXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCBm
ZXRjaE9wdGlvbnMsIFtjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyQ29weSldKGF1dG8gd2Vic2l0ZURhdGFSZWNvcmRzKSB7CiAgICAgICAgIFZlY3RvcjxS
ZWZQdHI8QVBJOjpPYmplY3Q+PiBlbGVtZW50czsKICAgICAgICAgZWxlbWVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eSh3ZWJzaXRlRGF0YVJlY29yZHMuc2l6ZSgpKTsKIApAQCAtMzM4LDE4ICsz
MzgsMTggQEAgLSAodm9pZClfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0PAogCiAtIChC
T09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZAogewotICAgIHJldHVybiBfd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCgpOwogfQogCiAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZDooQk9PTCllbmFibGVkCiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKKyAgICBf
d2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxl
ZCk7CiB9CiAKIC0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHJldHVybiBfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01v
ZGUoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEZWJ1Z01vZGUoKTsKICNlbHNlCiAgICAgcmV0dXJuIE5POwogI2VuZGlmCkBAIC0zNTgsNyAr
MzU4LDcgQEAgLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZQogLSAodm9p
ZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTooQk9PTCllbmFibGVkCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUo
ZW5hYmxlZCk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEZWJ1Z01vZGUoZW5hYmxlZCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFibGVkKTsK
ICNlbmRpZgpAQCAtMzY2LDEwNiArMzY2LDEwNiBAQCAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGVidWdNCiAKIC0gKE5TVUludGVnZXIpX3Blck9yaWdpblN0b3JhZ2VRdW90YQog
ewotICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnBlck9y
aWdpblN0b3JhZ2VRdW90YSgpOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+cGVyT3Jp
Z2luU3RvcmFnZVF1b3RhKCk7CiB9CiAKIC0gKHZvaWQpX3NldFBlck9yaWdpblN0b3JhZ2VRdW90
YTooTlNVSW50ZWdlcilzaXplCiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5zZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEoc2l6ZSk7CisgICAgX3dlYnNpdGVEYXRh
U3RvcmUtPnNldFBlck9yaWdpblN0b3JhZ2VRdW90YShzaXplKTsKIH0KIAogLSAoTlNTdHJpbmcg
KilfY2FjaGVTdG9yYWdlRGlyZWN0b3J5CiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkuY2FjaGVTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgcmV0dXJu
IF93ZWJzaXRlRGF0YVN0b3JlLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKIH0KIAogLSAodm9p
ZClfc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeQogewotICAg
IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0Q2FjaGVTdG9yYWdlRGly
ZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldENhY2hlU3RvcmFn
ZURpcmVjdG9yeShkaXJlY3RvcnkpOwogfQogCiAtIChOU1N0cmluZyAqKV9zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5CiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwor
ICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSgpOwogfQogCiAtICh2b2lkKV9zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeQogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShk
aXJlY3RvcnkpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KGRpcmVjdG9yeSk7CiB9CiAKIC0gKHZvaWQpX3NldEJvdW5kSW50ZXJm
YWNlSWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyCiB7Ci0gICAgX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoaWRl
bnRpZmllcik7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldEJvdW5kSW50ZXJmYWNlSWRlbnRp
ZmllcihpZGVudGlmaWVyKTsKIH0KIAogLSAoTlNTdHJpbmcgKilfYm91bmRJbnRlcmZhY2VJZGVu
dGlmaWVyCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0
b3JlLT5ib3VuZEludGVyZmFjZUlkZW50aWZpZXIoKTsKIH0KIAogLSAodm9pZClfc2V0QWxsb3dz
Q2VsbHVsYXJBY2Nlc3M6KEJPT0wpYWxsb3dzCiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRBbGxvd3NDZWxsdWxhckFjY2VzcyhhbGxvd3MgPyBXZWJLaXQ6
OkFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMgOiBXZWJLaXQ6OkFsbG93c0NlbGx1bGFyQWNjZXNz
OjpObyk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldEFsbG93c0NlbGx1bGFyQWNjZXNzKGFs
bG93cyA/IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6OlllcyA6IFdlYktpdDo6QWxsb3dz
Q2VsbHVsYXJBY2Nlc3M6Ok5vKTsKIH0KIAogLSAoQk9PTClfYWxsb3dzQ2VsbHVsYXJBY2Nlc3MK
IHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5hbGxv
d3NDZWxsdWxhckFjY2VzcygpID09IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6OlllczsK
KyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmFsbG93c0NlbGx1bGFyQWNjZXNzKCkgPT0g
V2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzOwogfQogCiAtICh2b2lkKV9zZXRQcm94
eUNvbmZpZ3VyYXRpb246KE5TRGljdGlvbmFyeSAqKWNvbmZpZ3VyYXRpb24KIHsKLSAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFByb3h5Q29uZmlndXJhdGlvbigo
X19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNvbmZpZ3VyYXRpb24pOworICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT5zZXRQcm94eUNvbmZpZ3VyYXRpb24oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilj
b25maWd1cmF0aW9uKTsKIH0KIAogLSAoTlNTdHJpbmcgKilfc291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgcmV0dXJu
IF93ZWJzaXRlRGF0YVN0b3JlLT5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsK
IH0KIAogLSAodm9pZClfc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOihOU1N0
cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBpZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGlkZW50aWZp
ZXIpKQorICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPnNldFNvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcihpZGVudGlmaWVyKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
R2VuZXJpY0V4Y2VwdGlvbiBmb3JtYXQ6QCJfc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyIGNhbm5vdCBiZSBjYWxsZWQgYWZ0ZXIgbmV0d29ya2luZyBoYXMgYmVndW4iXTsKIH0K
IAogLSAoTlNTdHJpbmcgKilfc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyCiB7
Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0
YVN0b3JlLT5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKIH0KIAogLSAo
dm9pZClfc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOihOU1N0cmluZyAq
KWlkZW50aWZpZXIKIHsKLSAgICBpZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkuc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKGlkZW50aWZpZXIp
KQorICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPnNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25k
YXJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
R2VuZXJpY0V4Y2VwdGlvbiBmb3JtYXQ6QCJfc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyIGNhbm5vdCBiZSBjYWxsZWQgYWZ0ZXIgbmV0d29ya2luZyBoYXMgYmVndW4iXTsK
IH0KIAogLSAodm9pZClfc2V0QWxsb3dzVExTRmFsbGJhY2s6KEJPT0wpYWxsb3dzCiB7Ci0gICAg
aWYgKCFfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEFsbG93c1RMU0Zh
bGxiYWNrKGFsbG93cykpCisgICAgaWYgKCFfd2Vic2l0ZURhdGFTdG9yZS0+c2V0QWxsb3dzVExT
RmFsbGJhY2soYWxsb3dzKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TR2VuZXJpY0V4
Y2VwdGlvbiBmb3JtYXQ6QCJfc2V0QWxsb3dzVExTRmFsbGJhY2sgY2Fubm90IGJlIGNhbGxlZCBh
ZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJdOwogfQogCiAtIChCT09MKV9hbGxvd3NUTFNGYWxs
YmFjawogewotICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgp
LmFsbG93c1RMU0ZhbGxiYWNrKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5hbGxv
d3NUTFNGYWxsYmFjaygpOwogfQogCiAtIChOU0RpY3Rpb25hcnkgKilfcHJveHlDb25maWd1cmF0
aW9uCiB7Ci0gICAgcmV0dXJuIChfX2JyaWRnZSBOU0RpY3Rpb25hcnkgKilfd2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnByb3h5Q29uZmlndXJhdGlvbigpOworICAgIHJldHVy
biAoX19icmlkZ2UgTlNEaWN0aW9uYXJ5ICopX3dlYnNpdGVEYXRhU3RvcmUtPnByb3h5Q29uZmln
dXJhdGlvbigpOwogfQogCiAtIChOU1VSTCAqKV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeQog
ewotICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl93ZWJzaXRlRGF0YVN0b3JlLT5p
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CisgICAgcmV0dXJu
IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X3dlYnNpdGVEYXRhU3RvcmUtPmNvbmZpZ3VyYXRpb24o
KS5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CiB9CiAKIC0g
KHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6KEJP
T0wpdmFsdWUKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGF1
dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtNDgwLDEzICs0ODAsMTMgQEAgLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1Rlc3RpbgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY2FsbGJhY2spIHsKLSAgICAg
ICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdGF0aXN0aWNzVGVz
dGluZ0NhbGxiYWNrKFtjYWxsYmFjayA9IG1ha2VCbG9ja1B0cihjYWxsYmFjayksIHNlbGZdKGNv
bnN0IFN0cmluZyYgZXZlbnQpIHsKKyAgICAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFN0YXRp
c3RpY3NUZXN0aW5nQ2FsbGJhY2soW2NhbGxiYWNrID0gbWFrZUJsb2NrUHRyKGNhbGxiYWNrKSwg
c2VsZl0oY29uc3QgU3RyaW5nJiBldmVudCkgewogICAgICAgICAgICAgY2FsbGJhY2soc2VsZiwg
ZXZlbnQpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U3RhdGlzdGljc1Rlc3RpbmdDYWxs
YmFjayhudWxscHRyKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U3RhdGlzdGljc1Rlc3Rp
bmdDYWxsYmFjayhudWxscHRyKTsKICNlbmRpZgogfQogCkBAIC01MDksNyArNTA5LDcgQEAgLSAo
dm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6KAogICAgIH0KIAogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKS5nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh3ZWJQYWdlUHJveHktPmlk
ZW50aWZpZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0oYXV0byBkb21haW5zKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKHdlYlBhZ2VQcm94eS0+aWRlbnRpZmllcigpLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGRvbWFpbnMp
IHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFwaURvbWFpbnM7CiAgICAg
ICAgIGFwaURvbWFpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkb21haW5zLnNpemUoKSk7CiAg
ICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykKQEAgLTUyNCw3ICs1MjQsNyBAQCAt
ICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooCiAtICh2b2lkKV9zY2hlZHVs
ZUNvb2tpZUJsb2NraW5nVXBkYXRlOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFtj
b21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgewor
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogI2Vsc2UKQEAgLTUzNSw3ICs1MzUs
NyBAQCAtICh2b2lkKV9zY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOih2CiAtICh2b2lkKV9z
ZXRQcmV2YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUt
PnNldFByZXZhbGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKICAgICB9KTsKICNlbHNlCkBAIC01NDYsNyArNTQ2LDcgQEAgLSAodm9pZClfc2V0
UHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbQogLSAodm9pZClfZ2V0SXNQcmV2YWxlbnREb21h
aW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MKSljb21w
bGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0g
ICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5pc1ByZXZhbGVudFJlc291
cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXShib29sIGVuYWJsZWQpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+aXNQ
cmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBlbmFibGVkKSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGVuYWJsZWQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTU1Nyw3ICs1NTcsNyBA
QCAtICh2b2lkKV9nZXRJc1ByZXZhbGVudERvbWFpbjooTlNVUkwgKilkCiAtICh2b2lkKV9jbGVh
clByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmNs
ZWFyUHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgeworICAgIF93ZWJzaXRlRGF0YVN0b3Jl
LT5jbGVhclByZXZhbGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKICAgICB9KTsKICNlbHNlCkBAIC01NjgsNyArNTY4LDcgQEAgLSAodm9pZClf
Y2xlYXJQcmV2YWxlbnREb21haW46KE5TVVJMICopZAogLSAodm9pZClfcHJvY2Vzc1N0YXRpc3Rp
Y3NBbmREYXRhUmVjb3Jkczoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9j
ZXNzaW5nKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildKCkgeworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRh
UmVjb3Jkc1Byb2Nlc3NpbmcoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7
CiAjZWxzZQpAQCAtNTc4LDE4ICs1NzgsMTggQEAgLSAodm9pZClfcHJvY2Vzc1N0YXRpc3RpY3NB
bmREYXRhUmVjb3JkcwogCiAtIChib29sKV9oYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcgogewot
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKFdlYkNvcmU6OnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhYmFzZUZpbGVuYW1lKF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoV2ViQ29yZTo6c2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGFiYXNlRmlsZW5hbWUoX3dlYnNpdGVEYXRhU3RvcmUtPnNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkoKSkpOwogfQogCiAtIChpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURl
bGVnYXRlPilfZGVsZWdhdGUKIHsKLSAgICByZXR1cm4gX2RlbGVnYXRlLmdldCgpOworICAgIHJl
dHVybiBfZGVsZWdhdGUuZ2V0KCkuZ2V0KCk7CiB9CiAKIC0gKHZvaWQpc2V0X2RlbGVnYXRlOihp
ZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPilkZWxlZ2F0ZQogewogICAgIF9kZWxlZ2F0
ZSA9IGRlbGVnYXRlOwotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8V2Vic2l0ZURhdGFTdG9yZUNsaWVudD4oZGVsZWdhdGUp
KTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8V2Vic2l0
ZURhdGFTdG9yZUNsaWVudD4oZGVsZWdhdGUpKTsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZUludGVybmFsLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSwxMiArMjUsMTMgQEAKIAogI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVN0b3JlUHJp
dmF0ZS5oIgogCi0jaW1wb3J0ICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW1wb3J0ICJXS09i
amVjdC5oIgorI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgorI2ltcG9ydCA8d3RmL1dlYWtP
YmpDUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi10ZW1wbGF0ZTw+IHN0cnVjdCBXcmFw
cGVyVHJhaXRzPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4gewordGVtcGxhdGU8PiBzdHJ1Y3QgV3Jh
cHBlclRyYWl0czxXZWJzaXRlRGF0YVN0b3JlPiB7CiAgICAgdXNpbmcgV3JhcHBlckNsYXNzID0g
V0tXZWJzaXRlRGF0YVN0b3JlOwogfTsKIApAQCAtMzgsNyArMzksNyBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBXcmFwcGVyVHJhaXRzPEFQSTo6V2ViCiAKIEBpbnRlcmZhY2UgV0tXZWJzaXRlRGF0YVN0
b3JlICgpIDxXS09iamVjdD4gewogQHBhY2thZ2UKLSAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJ
OjpXZWJzaXRlRGF0YVN0b3JlPiBfd2Vic2l0ZURhdGFTdG9yZTsKLSAgICBSZXRhaW5QdHI8aWQg
PF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4gPiBfZGVsZWdhdGU7CisgICAgQVBJOjpPYmpl
Y3RTdG9yYWdlPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4gX3dlYnNpdGVEYXRhU3RvcmU7Cisg
ICAgV2Vha09iakNQdHI8aWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4gPiBfZGVsZWdh
dGU7CiB9CiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElX
ZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCShyZXZpc2lvbiAyNDk3
MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE3IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0KLSNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLQotI2lmIFBM
QVRGT1JNKEdUSykKLSNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndlYmtpdGd0ayIKLSNlbGlmIFBM
QVRGT1JNKFdQRSkKLSNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndwZSIKLSNlbmRpZgotCi1uYW1l
c3BhY2UgQVBJIHsKLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiYXBw
bGljYXRpb25zIik7Ci19Ci0KLS8vIEZJWE1FOiBUaGUgb3RoZXIgZGlyZWN0b3JpZXMgaW4gdGhp
cyBmaWxlIGFyZSBzaGFyZWQgYmV0d2VlbiBhbGwgYXBwbGljYXRpb25zIHVzaW5nIFdlYktpdEdU
Sy4KLS8vIFdoeSBpcyBvbmx5IHRoaXMgZGlyZWN0b3J5IG5hbWVzcGFjZWQgdG8gYSBwYXJ0aWN1
bGFyIGFwcGxpY2F0aW9uPwotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25h
bWUoKSksICJXZWJLaXRDYWNoZSIpKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2UiKSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0g
ICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJB
U0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJkYXRhYmFzZXMiIEdfRElSX1NFUEFSQVRP
Ul9TICJpbmRleGVkZGIiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3
ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9S
WSBHX0RJUl9TRVBBUkFUT1JfUyAic2VydmljZXdvcmtlcnMiKTsKLX0KLQotV1RGOjpTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAg
cmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0Vf
RElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJsb2NhbHN0b3JhZ2UiKTsKLX0KLQotV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAibWVkaWFrZXlzIik7Ci19Ci0K
LVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRldmljZWlk
aGFzaHNhbHRzIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRP
Ul9TICJkYXRhYmFzZXMiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdEhTVFNEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyk7
Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1Mg
IlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpT
dHJpbmcmIGRpcmVjdG9yeU5hbWUpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKLX0KLQotV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCi17Ci0gICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSks
IGRpcmVjdG9yeU5hbWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFn
ZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgs
NyBAQCBzdHJ1Y3QgX1dlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlIHsKICAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGRhdGFNYW5hZ2Vy
KTsKLSAgICAgICAgcmV0dXJuIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShk
YXRhTWFuYWdlcikud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpOworICAgICAgICByZXR1
cm4gd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKGRhdGFNYW5hZ2VyKS5zZXNz
aW9uSUQoKTsKICAgICB9CiAKICAgICB+X1dlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlKCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzExLDE4
ICszMTEsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0U2V0UHJvcGVydHkoCiAgICAg
fQogfQogCi1zdGF0aWMgaW5saW5lIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4g
d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25Gb3JXZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24oY29uc3QgQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIHByb2Nlc3NQb29sY29uZmln
dXJhcmlvbikKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURp
cmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmRpc2tDYWNoZURpcmVjdG9y
eSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoU3Ry
aW5nKHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKSk7
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9j
ZXNzUG9vbGNvbmZpZ3VyYXJpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLT5zZXREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKHBy
b2Nlc3NQb29sY29uZmlndXJhcmlvbi5kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnko
KSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoU3Ry
aW5nKHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkp
KTsKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKLX0KLQogc3RhdGljIHZvaWQgd2Via2l0V2Vi
Q29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBHX09CSkVDVF9DTEFT
Uyh3ZWJraXRfd2ViX2NvbnRleHRfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsK
QEAgLTMzNSwyNCArMzIzLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVj
dGVkKAogCiAgICAgV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IFdFQktJVF9XRUJfQ09O
VEVYVChvYmplY3QpOwogICAgIFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gd2ViQ29u
dGV4dC0+cHJpdjsKLSAgICBpZiAocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyICYmICF3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKHByaXYtPndlYnNpdGVEYXRhTWFuYWdl
ci5nZXQoKSkpIHsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KHByaXYtPndl
YnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXREaXNr
Q2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1h
bmFnZXIuZ2V0KCkpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7Ci0gICAgICAgIGNvbmZp
Z3VyYXRpb24uc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFN
YW5hZ2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEluZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KHBy
aXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5z
ZXRIU1RTU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19jYWNoZV9k
aXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShw
cml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKLSAgICB9IGVsc2UgaWYgKCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3Rvcnku
aXNOdWxsKCkpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9j
YWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSkpOwogCiAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wgPSBX
ZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24pOwogCi0gICAgaWYgKCFwcml2LT53
ZWJzaXRlRGF0YU1hbmFnZXIpCi0gICAgICAgIHByaXYtPndlYnNpdGVEYXRhTWFuYWdlciA9IGFk
b3B0R1JlZih3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJDcmVhdGUod2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb25Gb3JXZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikp
KTsKLSAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0UHJpbWFyeURhdGFTdG9yZSh3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgp
KSk7Ci0KICAgICB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJBZGRQcm9jZXNzUG9vbChwcml2LT53
ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCksICpwcml2LT5wcm9jZXNzUG9vbCk7CiAKICAgICBwcml2
LT50bHNFcnJvcnNQb2xpY3kgPSBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfRkFJTDsKQEAgLTc3
Nyw3ICs3NTAsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9jbGVhcl9jYWNoZShXZWJLCiAg
ICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlczsKICAgICB3ZWJz
aXRlRGF0YVR5cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlKTsKICAgICB3ZWJz
aXRlRGF0YVR5cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSk7Ci0gICAgYXV0byYg
d2Vic2l0ZURhdGFTdG9yZSA9IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShj
b250ZXh0LT5wcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpLndlYnNpdGVEYXRhU3RvcmUo
KTsKKyAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
R2V0RGF0YVN0b3JlKGNvbnRleHQtPnByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSk7CiAg
ICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1vdmVEYXRhKHdlYnNpdGVEYXRhVHlwZXMsIC1XYWxsVGlt
ZTo6aW5maW5pdHkoKSwgW10geyB9KTsKIH0KIApAQCAtMTQ3NCwxMiArMTQ0Nyw4IEBAIHZvaWQg
d2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0ZW5zaW8KICAqCiAgKiBEZXByZWNhdGVkOiAy
LjEwLiBVc2Ugd2Via2l0X3dlYl9jb250ZXh0X25ld193aXRoX3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
KCkgaW5zdGVhZC4KICAqLwotdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2FjaGVf
ZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIGRpcmVjdG9y
eSkKK3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShXZWJL
aXRXZWJDb250ZXh0KiwgY29uc3QgY2hhciopCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoZGlyZWN0
b3J5KTsKLQotICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5jb25maWd1cmF0aW9uKCku
c2V0RGlza0NhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9y
eSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjAsMTIgKzIwLDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgi
CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+
CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KQEAgLTk1LDcgKzk1LDcgQEAgc3RydWN0IF9X
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlIAogICAgICAgICBBU1NFUlQocHJvY2Vzc1Bv
b2xzLmlzRW1wdHkoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZT4gd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
PiB3ZWJzaXRlRGF0YVN0b3JlOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gYmFzZURhdGFEaXJlY3Rv
cnk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBiYXNlQ2FjaGVEaXJlY3Rvcnk7CiAgICAgR1VuaXF1
ZVB0cjxjaGFyPiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CkBAIC0xODEsNyArMTgxLDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyU2V0UAogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFBST1BfSVNfRVBIRU1FUkFMOgogICAgICAgICBpZiAoZ192YWx1ZV9nZXRfYm9vbGVh
bih2YWx1ZSkpCi0gICAgICAgICAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlID0g
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7Cisg
ICAgICAgICAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50KCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmpl
Y3QsIHByb3BJRCwgcGFyYW1TcGVjKTsKQEAgLTM4NCwyOCArMzg0LDI4IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl8KIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciog
d2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ciogbWFuYWdlciA9IFdFQktJVF9XRUJTSVRFX0RBVEFfTUFOQUdFUihnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfV0VCU0lURV9EQVRBX01BTkFHRVIsIG51bGxwdHIpKTsKLSAgICBtYW5hZ2VyLT5w
cml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RG
TW92ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7
CisgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIFBBTDo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCkpOwogCiAgICAgcmV0dXJuIG1hbmFnZXI7CiB9CiAKLUFQSTo6V2Vi
c2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktp
dFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlcikKK1dlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYg
d2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFu
YWdlciogbWFuYWdlcikKIHsKICAgICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlKiBw
cml2ID0gbWFuYWdlci0+cHJpdjsKICAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRhU3RvcmUpIHsK
ICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OmNyZWF0ZSgpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdl
RGlyZWN0b3J5LmdldCgpKSk7CisgICAgICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgp
KSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeSghcHJp
di0+ZGlza0NhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKSwgbmV0d29ya0NhY2hlU3ViZGly
ZWN0b3J5KSk7CisgICAgICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRO
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYt
PmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOwog
ICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCFwcml2
LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+YXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KCFwcml2LT53ZWJTUUxEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5
LmdldCgpKSk7CisgICAgICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAg
Y29uZmlndXJhdGlvbi0+c2V0SFNUU1N0b3JhZ2VEaXJlY3RvcnkoIXByaXYtPmhzdHNDYWNoZURp
cmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RT
RGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHByaXYtPmhzdHNDYWNoZURpcmVjdG9yeS5nZXQoKSkpOwotICAgICAgICBjb25maWd1cmF0
aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgICAgIHByaXYtPndlYnNp
dGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZp
Z3VyYXRpb24pLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICAgICAg
ICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKSA6IEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+aHN0c0Nh
Y2hlRGlyZWN0b3J5LmdldCgpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9
IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbiks
IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogICAgIH0KIAogICAgIHJldHVy
biAqcHJpdi0+d2Vic2l0ZURhdGFTdG9yZTsKQEAgLTU0Miw3ICs1NDIsNyBAQCBjb25zdCBnY2hh
ciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgaWYgKCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPmxv
Y2FsU3RvcmFnZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAg
IHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgp
KSk7CiAgICAgcmV0dXJuIHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKTsKIH0KIApA
QCAtNTY2LDcgKzU2Niw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXIKIAogICAgIGlmICghcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5KSB7CiAgICAgICAgIC8vIFRo
ZSBkZWZhdWx0IGRpcmVjdG9yeSBhbHJlYWR5IGhhcyB0aGUgc3ViZGlyZWN0b3J5LgotICAgICAg
ICBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoRmlsZVN5c3RlbTo6ZGly
ZWN0b3J5TmFtZShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkoKSkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5kaXNrQ2FjaGVEaXJlY3Rv
cnkucmVzZXQoZ19zdHJkdXAoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSkudXRmOCgpLmRhdGEo
KSkpOwogICAgIH0KICAgICByZXR1cm4gcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpOwog
fQpAQCAtNTkwLDcgKzU5MCw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIXByaXYtPmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkucmVzZXQoZ19zdHJkdXAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+YXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOwog
ICAgIHJldHVybiBwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmdldCgpOwogfQogCkBA
IC02MTMsNyArNjEzLDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghcHJpdi0+aW5kZXhlZERCRGly
ZWN0b3J5KQotICAgICAgICBwcml2LT5pbmRleGVkREJEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnko
KS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIHByaXYtPmluZGV4ZWREQkRpcmVjdG9yeS5yZXNl
dChnX3N0cmR1cChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1cm4gcHJpdi0+aW5kZXhl
ZERCRGlyZWN0b3J5LmdldCgpOwogfQogCkBAIC02MzgsNyArNjM4LDcgQEAgY29uc3QgZ2NoYXIq
IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIGlmICghcHJpdi0+d2ViU1FMRGlyZWN0b3J5KQotICAgICAgICBwcml2LT53ZWJTUUxEaXJl
Y3RvcnkucmVzZXQoZ19zdHJkdXAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIHByaXYtPndlYlNR
TERpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1cm4g
cHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpOwogfQogCkBAIC02NjEsNyArNjYxLDcgQEAgY29u
c3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGlmICghcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5KQotICAgICAgICBwcml2
LT5oc3RzQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+
aHN0c0NhY2hlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgcmV0dXJuIHBy
aXYtPmhzdHNDYWNoZURpcmVjdG9yeS5nZXQoKTsKIH0KIApAQCAtNzM1LDcgKzczNSw3IEBAIHZv
aWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNoKFcKICAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSk7CiAKICAgICBHUmVm
UHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcobWFuYWdlciwgY2FuY2VsbGFi
bGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOwotICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEodG9XZWJzaXRlRGF0YVR5cGVzKHR5
cGVzKSwgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzLCBbdGFzayA9IFdURk1v
dmUodGFzayldIChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+IHJlY29yZHMpIHsKKyAgICBtYW5h
Z2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlLT5mZXRjaERhdGEodG9XZWJzaXRlRGF0YVR5cGVz
KHR5cGVzKSwgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzLCBbdGFzayA9IFdU
Rk1vdmUodGFzayldIChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+IHJlY29yZHMpIHsKICAgICAg
ICAgR0xpc3QqIGRhdGFMaXN0ID0gbnVsbHB0cjsKICAgICAgICAgd2hpbGUgKCFyZWNvcmRzLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSB3ZWJraXRXZWJzaXRlRGF0
YUNyZWF0ZShyZWNvcmRzLnRha2VMYXN0KCkpKQpAQCAtODA5LDcgKzgwOSw3IEBAIHZvaWQgd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3JlbW92ZSgKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5yZW1vdmVEYXRhKHRvV2Vic2l0ZURhdGFUeXBlcyh0eXBlcyksIHJlY29yZHMsIFt0YXNrID0g
V1RGTW92ZSh0YXNrKV0geworICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPnJl
bW92ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKHR5cGVzKSwgcmVjb3JkcywgW3Rhc2sgPSBXVEZN
b3ZlKHRhc2spXSB7CiAgICAgICAgIGdfdGFza19yZXR1cm5fYm9vbGVhbih0YXNrLmdldCgpLCBU
UlVFKTsKICAgICB9KTsKIH0KQEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lkIHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9jbGVhcihXCiAKICAgICBXYWxsVGltZSB0aW1lUG9pbnQgPSB0aW1lU3Bh
biA/IFdhbGxUaW1lOjpub3coKSAtIFNlY29uZHM6OmZyb21NaWNyb3NlY29uZHModGltZVNwYW4p
IDogV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKDApOwogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sg
PSBhZG9wdEdSZWYoZ190YXNrX25ldyhtYW5hZ2VyLCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVz
ZXJEYXRhKSk7Ci0gICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnJlbW92ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKHR5cGVzKSwgdGltZVBvaW50
LCBbdGFzayA9IFdURk1vdmUodGFzayldIHsKKyAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0
YVN0b3JlLT5yZW1vdmVEYXRhKHRvV2Vic2l0ZURhdGFUeXBlcyh0eXBlcyksIHRpbWVQb2ludCwg
W3Rhc2sgPSBXVEZNb3ZlKHRhc2spXSB7CiAgICAgICAgIGdfdGFza19yZXR1cm5fYm9vbGVhbih0
YXNrLmdldCgpLCBUUlVFKTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXJQcml2YXRlLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTksMTIgKzE5LDExIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQVBJ
V2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIHdlYmtp
dFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4mJik7Ci1BUEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRh
TWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqKTsKK1dlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdl
YktpdFdlYnNpdGVEYXRhTWFuYWdlciopOwogdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJB
ZGRQcm9jZXNzUG9vbChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqLCBXZWJLaXQ6OldlYlByb2Nl
c3NQb29sJik7CiB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlclJlbW92ZVByb2Nlc3NQb29s
KFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciosIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKTsKIGNv
bnN0IFZlY3RvcjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sKj4mIHdlYmtpdFdlYnNpdGVEYXRhTWFu
YWdlckdldFByb2Nlc3NQb29scyhXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRl
RGF0YVN0b3JlV2luLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAkobm9uZXhpc3RlbnQpCkBA
IC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2
ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+Ci0KLW5hbWVzcGFjZSBBUEkgewotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQ2FjaGVTdG9yYWdlIik7Ci19Ci0KLVN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKLXsKLSAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7Ci19
Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJJbmRl
eGVkREIiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCAiU2VydmljZVdvcmtlcnMiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKLX0KLQotU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9yYWdlIik7
Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJXZWJT
UUwiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnlOYW1lKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksIGRpcmVjdG9yeU5hbWUpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnlOYW1lKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
IGRpcmVjdG9yeU5hbWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTM1OCw3ICsxMzU4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29v
awogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhN
aXNzaW5nUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAnaHR0cE9ubHknIHdhcyBub3QgZm91bmQu
Iik7CiAKICAgICBXZWJDb29raWVNYW5hZ2VyUHJveHkqIGNvb2tpZU1hbmFnZXIgPSBtX3Byb2Nl
c3NQb29sLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLSAgICBjb29raWVN
YW5hZ2VyLT5zZXRDb29raWVzKHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwg
eyBjb29raWUgfSwgW2NhbGxiYWNrID0gY2FsbGJhY2suY29weVJlZigpXShDYWxsYmFja0Jhc2U6
OkVycm9yIGVycm9yKSB7CisgICAgY29va2llTWFuYWdlci0+c2V0Q29va2llcyhwYWdlLT5zZXNz
aW9uSUQoKSwgeyBjb29raWUgfSwgW2NhbGxiYWNrID0gY2FsbGJhY2suY29weVJlZigpXShDYWxs
YmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGlmIChlcnJvciA9PSBDYWxsYmFja0Jh
c2U6OkVycm9yOjpOb25lKQogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CiAg
ICAgICAgIGVsc2UKQEAgLTEzNzgsNyArMTM3OCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OmRlbGV0ZUFsbENvb2sKICAgICBTdHJpbmcgaG9zdCA9IGFjdGl2ZVVSTC5ob3N0KCkudG9T
dHJpbmcoKTsKIAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSogY29va2llTWFuYWdlciA9IG1f
cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotICAgIGNv
b2tpZU1hbmFnZXItPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMocGFnZS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnNlc3Npb25JRCgpLCB7IGhvc3QsIGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZOZWVk
ZWQoaG9zdCkgfSk7CisgICAgY29va2llTWFuYWdlci0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
cyhwYWdlLT5zZXNzaW9uSUQoKSwgeyBob3N0LCBkb21haW5CeUFkZGluZ0RvdFByZWZpeElmTmVl
ZGVkKGhvc3QpIH0pOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpnZXRTZXNzaW9u
UGVybWlzc2lvbnMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpTZXNzaW9uUGVybWlzc2lvbkRhdGE+PiYgb3V0X3Blcm1p
c3Npb25zKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbQkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2
IEBACiAjaW1wb3J0ICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCAiQVBJU3RyaW5n
LmgiCiAjaW1wb3J0ICJBUElVUkwuaCIKLSNpbXBvcnQgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIK
ICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbXBvcnQg
IkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oIgogI2ltcG9ydCAiQXV0
aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCkBAIC02NCw2ICs2Myw3IEBACiAjaW1wb3J0
ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAi
V2ViUHJvdGVjdGlvblNwYWNlLmgiCisjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW1w
b3J0ICJfV0tDb250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRXJy
b3JSZWNvdmVyeUF0dGVtcHRpbmcuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwu
aCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODcsNyArODcsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3b3JrUHJvY2Vzc1By
b3h5CiAgICAgY29ubmVjdCgpOwogCiAgICAgaWYgKGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBt
X3Byb2Nlc3NQb29sLndlYnNpdGVEYXRhU3RvcmUoKSkKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0
b3Jlcy5zZXQod2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgp
LCBtYWtlUmVmKHdlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKSkpOworICAgICAg
ICBtX3dlYnNpdGVEYXRhU3RvcmVzLnNldCh3ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwg
bWFrZVJlZigqd2Vic2l0ZURhdGFTdG9yZSkpOwogfQogCiBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp+
TmV0d29ya1Byb2Nlc3NQcm94eSgpCkBAIC0xMTM0LDE0ICsxMTM0LDE0IEBAIFdlYnNpdGVEYXRh
U3RvcmUqIE5ldHdvcmtQcm9jZXNzUHJveHk6OncKICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52
YWx1ZS5nZXQoKTsKIAogICAgIGlmIChhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gbV9wcm9jZXNz
UG9vbC53ZWJzaXRlRGF0YVN0b3JlKCkpIHsKLSAgICAgICAgaWYgKHNlc3Npb25JRCA9PSB3ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkpCi0gICAgICAgICAg
ICByZXR1cm4gJndlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAg
aWYgKHNlc3Npb25JRCA9PSB3ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSkKKyAgICAgICAg
ICAgIHJldHVybiB3ZWJzaXRlRGF0YVN0b3JlOwogICAgIH0KIAogICAgIGlmIChzZXNzaW9uSUQg
IT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gJkFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgcmV0dXJuIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFT
dG9yZS5oIgogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NQcm94eS5oIgogI2lmIEVOQUJMRShM
RUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuaCIKQEAgLTM2LDYgKzM1LDcgQEAKICNpbmNsdWRlICJQcm9jZXNz
VGhyb3R0bGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2aWdhdGlv
bkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4K
ICNpbmNsdWRlIDxtZW1vcnk+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjQ5NzMy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE1ICsyNiwxNiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAorI2luY2x1ZGUgIkFQSUhUVFBD
b29raWVTdG9yZS5oIgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgog
I2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhUmVjb3JkLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURh
dGFTdG9yZS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuaCIKICNpbmNsdWRlICJNb2NrQXV0aGVudGljYXRvck1h
bmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0
YXR1cy5oIgorI2luY2x1ZGUgIldlYktpdDJJbml0aWFsaXplLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NhY2hlLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc01lc3NhZ2VzLmgiCkBAIC0xMzksNiArMTQwLDU4IEBAIFdlYnNpdGVEYXRhU3RvcmU6Oldl
YnNpdGVEYXRhU3RvcmUoUEFMOjoKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogfQog
CitzdGF0aWMgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiBnbG9iYWxEZWZhdWx0RGF0YVN0b3Jl
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+
PiBnbG9iYWxEZWZhdWx0RGF0YVN0b3JlOworICAgIHJldHVybiBnbG9iYWxEZWZhdWx0RGF0YVN0
b3JlLmdldCgpOworfQorCitSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpCit7CisgICAgSW5pdGlhbGl6ZVdlYktpdDIoKTsKKworICAgIGF1
dG8mIHN0b3JlID0gZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpOworICAgIGlmICghc3RvcmUpCisg
ICAgICAgIHN0b3JlID0gYWRvcHRSZWYobmV3IFdlYnNpdGVEYXRhU3RvcmUoZGVmYXVsdERhdGFT
dG9yZUNvbmZpZ3VyYXRpb24oKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkp
OworCisgICAgcmV0dXJuICpzdG9yZTsKK30KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkZWxl
dGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpCit7CisgICAgZ2xvYmFsRGVmYXVsdERhdGFT
dG9yZSgpID0gbnVsbHB0cjsKK30KKworYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0
YVN0b3JlRXhpc3RzKCkKK3sKKyAgICByZXR1cm4gISFnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCk7
Cit9CisKK1JlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCit7CisgICAgYXV0byBj
b25maWd1cmF0aW9uID0gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwor
CisgICAgY29uZmlndXJhdGlvbi0+c2V0UGVyc2lzdGVudCh0cnVlKTsKKworICAgIGNvbmZpZ3Vy
YXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdEFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgiRmlsZXMiKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRD
YWNoZVN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAg
ICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE5ldHdvcmtD
YWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hlRGlyZWN0
b3J5KGRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkpOworCisgICAgY29uZmlndXJhdGlvbi0+
c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSk7
CisgICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoZGVmYXVsdFdl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3Rv
cmFnZURpcmVjdG9yeShkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZp
Z3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdE1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeShkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgp
KTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rv
cnkoZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpKTsKKworICAgIGNv
bmZpZ3VyYXRpb24tPnNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRK
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpKTsKKworICAgIHJldHVybiBjb25maWd1
cmF0aW9uOworfQorCiBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCiB7CiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTE3MjgsNyArMTc4MSw3IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6cmVzZXRDYWNoZU1heEFnZUMKIGJvb2wgV2Vic2l0ZURhdGFTdG9y
ZTo6aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKSBj
b25zdAogewogICAgIGlmIChhdXRvKiBwcm9jZXNzUG9vbERhdGFTdG9yZSA9IHByb2Nlc3NQb29s
LndlYnNpdGVEYXRhU3RvcmUoKSkKLSAgICAgICAgcmV0dXJuICZwcm9jZXNzUG9vbERhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHRoaXM7CisgICAgICAgIHJldHVybiBwcm9jZXNzUG9v
bERhdGFTdG9yZSA9PSB0aGlzOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTc1NCw3ICsx
ODA3LDcgQEAgSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBXZWJzaXRlRAogICAgIH0K
IAogICAgIGlmIChwcm9jZXNzUG9vbHMuaXNFbXB0eSgpICYmIGNvdW50ICYmIGVuc3VyZUFQb29s
RXhpc3RzKSB7Ci0gICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3Jl
YXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24obV9jb25maWd1cmF0aW9uKSk7CisgICAgICAgIGF1dG8gcHJvY2Vz
c1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uOjpjcmVhdGUoKSk7CiAgICAgICAgIHByb2Nlc3NQb29scy5hZGQocHJvY2Vzc1Bvb2wucHRy
KCkpOwogICAgIH0KIApAQCAtMjAwMSw2ICsyMDU0LDI4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6YWRkU2VjS2V5UHJveHlTdG8KIH0KICNlbmRpZgogCisjaWYgIVBMQVRGT1JNKENPQ09BKQor
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3Rvcnko
KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTYzNjkgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTYzNzAKKyAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKK30KKworV1RGOjpTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0
b3J5KCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIHJldHVybiBXVEY6OlN0cmlu
ZygpOworfQorI2VuZGlmCisKKyNpZiAhVVNFKEdMSUIpCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAg
ICAvLyBOb3QgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Cit9CisjZW5k
aWYKKwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lv
biAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDExICs5MiwxOSBAQCBlbnVtIGNsYXNz
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXM7CiBzdHJ1Y3QgUGx1Z2luTW9kdWxlSW5mbzsKICNl
bmRpZgogCi1jbGFzcyBXZWJzaXRlRGF0YVN0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vic2l0
ZURhdGFTdG9yZT4sIHB1YmxpYyBJZGVudGlmaWVkPFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8V2Vic2l0ZURhdGFTdG9yZT4gIHsKK2NsYXNzIFdlYnNpdGVEYXRhU3Rv
cmUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpXZWJzaXRlRGF0
YVN0b3JlPiwgcHVibGljIElkZW50aWZpZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxXZWJzaXRlRGF0YVN0b3JlPiAgewogcHVibGljOgorICAgIHN0YXRpYyBSZWY8
V2Vic2l0ZURhdGFTdG9yZT4gZGVmYXVsdERhdGFTdG9yZSgpOworICAgIHN0YXRpYyBib29sIGRl
ZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKKyAgICBzdGF0aWMgdm9pZCBkZWxldGVEZWZhdWx0RGF0
YVN0b3JlRm9yVGVzdGluZygpOworICAgIHN0YXRpYyBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbj4gZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKKwogICAg
IHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlTm9uUGVyc2lzdGVudCgpOwogICAg
IHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlKFJlZjxXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOwotICAgIHZpcnR1YWwgfldlYnNpdGVE
YXRhU3RvcmUoKTsKKworICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9u
SUQpOworICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgfldlYnNpdGVEYXRhU3RvcmUo
KTsKIAogICAgIHN0YXRpYyBXZWJzaXRlRGF0YVN0b3JlKiBleGlzdGluZ05vbkRlZmF1bHREYXRh
U3RvcmVGb3JTZXNzaW9uSUQoUEFMOjpTZXNzaW9uSUQpOwogCkBAIC0yNjUsMTAgKzI3MywyMyBA
QCBwdWJsaWM6CiAgICAgU09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3ImIHNvQXV0aG9yaXphdGlv
bkNvb3JkaW5hdG9yKCkgeyByZXR1cm4gbV9zb0F1dGhvcml6YXRpb25Db29yZGluYXRvci5nZXQo
KTsgfQogI2VuZGlmCiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShQ
QUw6OlNlc3Npb25JRCk7Ci0gICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsK
KyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwor
ICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0
b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpOworI2lmIFVTRShHTElCKQorICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0
SFNUU0RpcmVjdG9yeSgpOworI2VuZGlmCisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZh
dWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1
bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRN
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1
bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpT
dHJpbmcgZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKK3ByaXZh
dGU6CiAgICAgdm9pZCBmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBSZWZQdHI8V29ya1F1ZXVlPiYm
LCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5KTsKIAog
ICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0yNzksNiArMzAwLDEzIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzJik7CiAjZW5kaWYKIAorICAgIFdlYnNpdGVEYXRhU3RvcmUoKTsKKworICAg
IGVudW0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0b3J5LCBEb250Q3JlYXRl
RGlyZWN0b3J5IH07CisgICAgc3RhdGljIFdURjo6U3RyaW5nIHRlbXBEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUsIFNob3Vs
ZENyZWF0ZURpcmVjdG9yeSA9IENyZWF0ZURpcmVjdG9yeSk7CisgICAgc3RhdGljIFdURjo6U3Ry
aW5nIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3Ry
aW5nJiBkaXJlY3RvcnlOYW1lKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgd2Vic2l0ZURhdGFE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVj
dG9yeU5hbWUpOworICAgIAogICAgIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gcHJv
Y2Vzc1Bvb2xzKHNpemVfdCBjb3VudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCksIGJvb2wgZW5zdXJlQVBvb2xFeGlzdHMgPSB0cnVlKSBjb25zdDsKIAogI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgogCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURh
dGFTdG9yZS5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbigpCi0gICAgOiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnko
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpKQorICAgIDogbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpCiB7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNp
dGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHJldmlzaW9uIDI0
OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNp
dGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2lt
cG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiAjaW1wb3J0ICJDb29raWVTdG9yYWdlVXRpbHND
Ri5oIgorI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiU3RvcmFnZU1hbmFn
ZXIuaCIKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9y
dCAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKQEAgLTIzMCw0ICsyMzEsMTYxIEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1SZW1vdmVSZWMKICAgICBXZWJDb3JlOjpyZW1v
dmVSZWNlbnRseU1vZGlmaWVkUmVjZW50U2VhcmNoZXMob2xkZXN0VGltZVRvUmVtb3ZlKTsKIH0K
IAorTlNTdHJpbmcgKldlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYkRhdGFi
YXNlRGlyZWN0b3J5IjsKK05TU3RyaW5nICpXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXkg
PSBAIldlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VLZXkiOworTlNTdHJp
bmcgKldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVkaWFD
YWNoZURpcmVjdG9yeSI7CitOU1N0cmluZyAqV2ViS2l0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eURlZmF1bHRzS2V5ID0gQCJXZWJLaXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5IjsKKworV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkoKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gVGhpcyBxdWlyayB1c2Vk
IHRvIG1ha2UgdGhlc2UgYXBwcyBzaGFyZSBhcHBsaWNhdGlvbiBjYWNoZSBzdG9yYWdlLCBidXQg
ZG9lc24ndCBhY2NvbXBsaXNoIHRoYXQgYW55IG1vcmUuCisgICAgLy8gUHJlc2VydmluZyBpdCBh
dm9pZHMgdGhlIG5lZWQgdG8gbWlncmF0ZSBkYXRhIHdoZW4gdXBncmFkaW5nLgorICAgIC8vIEZJ
WE1FOiBJZGVhbGx5IHdlIHNob3VsZCBqdXN0IGhhdmUgU2FmYXJpLCBXZWJBcHAsIGFuZCB3ZWJi
b29rbWFya3NkIGNyZWF0ZSBhIGRhdGEgc3RvcmUgd2l0aAorICAgIC8vIHRoaXMgYXBwbGljYXRp
b24gY2FjaGUgcGF0aCwgYnV0IHRoYXQncyBub3Qgc3VwcG9ydGVkIGFzIG9mIHJpZ2h0IG5vdy4K
KyAgICBpZiAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCkgfHwgV2Vi
Q29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViQXBwKCkgfHwgV2ViQ29yZTo6SU9TQXBwbGljYXRp
b246OmlzV2ViQm9va21hcmtzRCgpKSB7CisgICAgICAgIE5TU3RyaW5nICpjYWNoZVBhdGggPSBb
TlNIb21lRGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiTGlicmFy
eS9DYWNoZXMvY29tLmFwcGxlLldlYkFwcENhY2hlIl07CisKKyAgICAgICAgcmV0dXJuIFdlYktp
dDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChjYWNoZVBhdGguc3RyaW5nQnlTdGFu
ZGFyZGl6aW5nUGF0aCk7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gY2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlIik7
Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbigiQ2FjaGVTdG9yYWdlIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTmV0d29ya0NhY2hlIik7Cit9CisKK1dU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkK
K3sKKyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTWVk
aWFDYWNoZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSW5kZXhlZERCIik7Cit9CisKK1dURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIlNlcnZpY2VXb3JrZXJzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRl
RGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTG9jYWxTdG9yYWdlIik7Cit9
CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oIk1lZGlhS2V5cyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3
ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiV2ViU1FMIik7Cit9
CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKK30KKworV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9u
RGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbigiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIERvbnRDcmVhdGVEaXJlY3RvcnkpOworfQor
CitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBTaG91bGRDcmVh
dGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQoreworICAgIHN0YXRpYyBkaXNwYXRj
aF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBOU1VSTCAqdGVtcFVSTDsKKyAgICAKKyAg
ICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIE5TVVJMICp1cmwgPSBbTlNV
UkwgZmlsZVVSTFdpdGhQYXRoOk5TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVT
XTsKKyAgICAgICAgaWYgKCF1cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250YWlu
ZXIoKSkgeworICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKKyAgICAgICAgICAgIGlmICghYnVuZGxl
SWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVyID0gW05TUHJvY2Vz
c0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOworICAgICAgICAgICAgdXJsID0gW3VybCBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBpc0RpcmVjdG9yeTpZ
RVNdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0ZW1wVVJMID0gW1t1cmwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07
CisgICAgfSk7CisgICAgCisgICAgTlNVUkwgKnVybCA9IFt0ZW1wVVJMIFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisKKyAgICBpZiAo
c2hvdWxkQ3JlYXRlRGlyZWN0b3J5ID09IENyZWF0ZURpcmVjdG9yeQorICAgICAgICAmJiAoIVtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdp
dGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0
cl0pKQorICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwg
dXJsKTsKKyAgICAKKyAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0
b3J5TmFtZSkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBz
dGF0aWMgTlNVUkwgKmNhY2hlVVJMOworCisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBe
eworICAgICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBV
UkxGb3JEaXJlY3Rvcnk6TlNDYWNoZXNEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFz
ayBhcHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKKyAg
ICAgICAgaWYgKCF1cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKKyAgICAg
ICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVd
LmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCisg
ICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJ
bmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICAgICAg
fQorCisgICAgICAgIGNhY2hlVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07CisgICAgfSk7CisKKyAgICBOU1VS
TCAqdXJsID0gW2NhY2hlVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlO
YW1lIGlzRGlyZWN0b3J5OllFU107CisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3Jp
ZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQorICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKKworICAgIHJldHVybiB1cmwu
YWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Cit9CisKK1dURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAgIHN0YXRp
YyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBOU1VSTCAqd2Vic2l0ZURh
dGFVUkw7CisKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIE5TVVJM
ICp1cmwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9yeTpO
U0xpYnJhcnlEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0ZUZv
clVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKKyAgICAgICAgaWYgKCF1cmwp
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgICAgIHVy
bCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9y
eTpZRVNdOworCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsK
KyAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5C
dW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZp
ZXIpCisgICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHBy
b2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKKyAg
ICAgICAgfQorCisgICAgICAgIHdlYnNpdGVEYXRhVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiV2Vic2l0ZURhdGEiIGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsKKyAg
ICB9KTsKKworICAgIE5TVVJMICp1cmwgPSBbd2Vic2l0ZURhdGFVUkwgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBpZiAoIVtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdp
dGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0
cl0pCisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1
cmwpOworCisgICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbjsKK30KKwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvd2lu
L1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCkBAIC00NSw0ICs0Niw1OSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRm
b3JtUmVtb3ZlUmVjCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOworfQor
CitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgp
Cit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkNhY2hlU3RvcmFn
ZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURp
cmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5l
dHdvcmtDYWNoZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLCAiSW5kZXhlZERCIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlNlcnZpY2VXb3JrZXJzIik7Cit9CisKK1N0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKK3sK
KyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0
ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7
Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1l
ZGlhS2V5U3RvcmFnZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLCAiV2ViU1FMIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKK30KKwor
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKK30KKworU3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdM
aWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJv
Y2Vzc1Byb3h5R0xpYi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDggKzQzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoTwogICAg
ICAgICBpZiAoIWRhdGFTdG9yZSkgewogICAgICAgICAgICAgLy8gUHJld2FybWVkIHByb2Nlc3Nl
cyBkb24ndCBoYXZlIGEgV2Vic2l0ZURhdGFTdG9yZSB5ZXQsIHNvIHVzZSB0aGUgcHJpbWFyeSBX
ZWJzaXRlRGF0YVN0b3JlIGZyb20gdGhlIFdlYlByb2Nlc3NQb29sLgogICAgICAgICAgICAgLy8g
VGhlIHByb2Nlc3Mgd29uJ3QgYmUgdXNlZCBpZiBjdXJyZW50IFdlYnNpdGVEYXRhU3RvcmUgaXMg
ZGlmZmVyZW50IHRoYW4gdGhlIFdlYlByb2Nlc3NQb29sIHByaW1hcnkgb25lLgotICAgICAgICAg
ICAgaWYgKGF1dG8qIGFwaURhdGFTdG9yZSA9IG1fcHJvY2Vzc1Bvb2wtPndlYnNpdGVEYXRhU3Rv
cmUoKSkKLSAgICAgICAgICAgICAgICBkYXRhU3RvcmUgPSAmYXBpRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCk7CisgICAgICAgICAgICBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoZGF0
YVN0b3JlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFT
dG9yZUdMaWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIv
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCShmcm9tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDoyNDk3
MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE3IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisKKyNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKworI2lmIFBMQVRGT1JN
KEdUSykKKyNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndlYmtpdGd0ayIKKyNlbGlmIFBMQVRGT1JN
KFdQRSkKKyNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndwZSIKKyNlbmRpZgorCituYW1lc3BhY2Ug
QVBJIHsKKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiYXBwbGljYXRp
b25zIik7Cit9CisKKy8vIEZJWE1FOiBUaGUgb3RoZXIgZGlyZWN0b3JpZXMgaW4gdGhpcyBmaWxl
IGFyZSBzaGFyZWQgYmV0d2VlbiBhbGwgYXBwbGljYXRpb25zIHVzaW5nIFdlYktpdEdUSy4KKy8v
IFdoeSBpcyBvbmx5IHRoaXMgZGlyZWN0b3J5IG5hbWVzcGFjZWQgdG8gYSBwYXJ0aWN1bGFyIGFw
cGxpY2F0aW9uPworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtD
YWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSks
ICJXZWJLaXRDYWNoZSIpKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0
X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2UiKSk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0
dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElS
RUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJkYXRhYmFzZXMiIEdfRElSX1NFUEFSQVRPUl9TICJp
bmRleGVkZGIiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRl
RGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJ
Ul9TRVBBUkFUT1JfUyAic2VydmljZXdvcmtlcnMiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJu
IHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNU
T1JZIEdfRElSX1NFUEFSQVRPUl9TICJsb2NhbHN0b3JhZ2UiKTsKK30KKworV1RGOjpTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQorewor
ICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihC
QVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAibWVkaWFrZXlzIik7Cit9CisKK1N0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0
b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRldmljZWlkaGFzaHNh
bHRzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJk
YXRhYmFzZXMiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhT
VFNEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyk7Cit9CisK
K1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgIlJlc291
cmNlTG9hZFN0YXRpc3RpY3MiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcm
IGRpcmVjdG9yeU5hbWUpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKK30KKworV1RGOjpTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSksIGRpcmVj
dG9yeU5hbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRh
U3RvcmVHTGliLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CkBAIC0zNSw3ICszNSw3IEBACiAjZGVm
aW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCiAjZW5kaWYKIAotbmFtZXNwYWNlIEFQSSB7CituYW1l
c3BhY2UgV2ViS2l0IHsKIAogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogewpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzgsNyArMTc4LDYgQEAKIAkJMUEzMDA2NkUxMTEwRjRGNzAwMzE5MzdDIC8qIFJlc3Bv
bnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBMzAwNjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmgg
Ki87IH07CiAJCTFBMzM0REVEMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTMzNERFQjE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwogCQkxQTMzNERFRTE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFy
ZWFNYXBNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUEzMzRERUMxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMu
aCAqLzsgfTsKLQkJMUEzNjM1QUExQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3Rv
cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzYz
NUE4MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmggKi87IH07CiAJCTFB
M0M4ODgwMThBNUFCQUUwMEM0Qzk2MiAvKiBXS1ByZWZlcmVuY2VzSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0M4ODdGMThBNUFCQUUw
MEM0Qzk2MiAvKiBXS1ByZWZlcmVuY2VzSW50ZXJuYWwuaCAqLzsgfTsKIAkJMUEzQ0MxNjcxODkw
NkFDRjAwMUU2RUQ4IC8qIFdLV2ViVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUEzQ0MxNjUxODkwNkFDRjAwMUU2RUQ4IC8qIFdLV2ViVmlldy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJMUEzQ0Mx
NjkxODkwN0VCMDAwMUU2RUQ4IC8qIFdLUHJvY2Vzc1Bvb2xJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzQ0MxNjgxODkwN0VCMDAwMUU2
RUQ4IC8qIFdLUHJvY2Vzc1Bvb2xJbnRlcm5hbC5oICovOyB9OwpAQCAtMTcyNSw2ICsxNzI0LDgg
QEAKIAkJCWNvbXBpbGVyU3BlYyA9IGNvbS5hcHBsZS5jb21waWxlcnMucHJveHkuc2NyaXB0Owog
CQkJZmlsZVBhdHRlcm5zID0gIiouaCI7CiAJCQlmaWxlVHlwZSA9IHBhdHRlcm4ucHJveHk7CisJ
CQlpbnB1dEZpbGVzID0gKAorCQkJKTsKIAkJCWlzRWRpdGFibGUgPSAxOwogCQkJb3V0cHV0Rmls
ZXMgPSAoCiAJCQkJIiQoSEVBREVSX09VVFBVVF9ESVIpLyQoSU5QVVRfRklMRV9OQU1FKSIsCkBA
IC0yMTIxLDkgKzIxMjIsNiBAQAogCQkxQTMzNERFQTE2REU4QjY4MDA2QThFMzggLyogU3RvcmFn
ZUFyZWFNYXAubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMzM0REVCMTZERThGODgwMDZBOEUzOCAvKiBT
dG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUEzMzRERUMxNkRFOEY4ODAw
NkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9TdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07Ci0JCTFBMzYzNUE3MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRl
RGF0YVN0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVdl
YnNpdGVEYXRhU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTM2MzVB
ODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBUElXZWJzaXRlRGF0YVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFBMzYzNUFCMUEzMTQ1RTUwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBB
UElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBM0E3M0NCMUE0OEM2RDQwMDcyMzFCMyAvKiBBUElQYWdlR3JvdXBIYW5kbGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJUGFnZUdyb3VwSGFuZGxlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEzQTczQ0MxQTQ4QzZENDAwNzIzMUIzIC8q
IEFQSVBhZ2VHcm91cEhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
UElQYWdlR3JvdXBIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEzQzg4
N0YxOEE1QUJBRTAwQzRDOTYyIC8qIFdLUHJlZmVyZW5jZXNJbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByZWZlcmVuY2VzSW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYzNjcsNyArNjM2NSw2IEBACiAJCQkJN0NFRkE5NjAxQUMw
OTk5MzAwQjkxMEZEIC8qIEFQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0gKi8sCiAJCQkJ
NUNBNDZFN0EyMUYxQTIzOTAwQ0U4NkI0IC8qIEFQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tICov
LAogCQkJCUZFRDNDMURBMUI0NDdBRTgwMEUwRUI3RiAvKiBBUElTZXJpYWxpemVkU2NyaXB0VmFs
dWVDb2NvYS5tbSAqLywKLQkJCQkxQTM2MzVBQjFBMzE0NUU1MDBFRDYxOTcgLyogQVBJV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tICovLAogCQkJCTFBRkRFNjQzMTk1MTBCNTUwMEM0OEZGQSAvKiBM
ZWdhY3lCdW5kbGVGb3JDbGFzcy5tbSAqLywKIAkJCQkxQzIwOTM1RTIyMzE4Q0IwMDAwMjZBMzkg
LyogTlNBdHRyaWJ1dGVkU3RyaW5nLmggKi8sCiAJCQkJMUMyMDkzNUYyMjMxOENCMDAwMDI2QTM5
IC8qIE5TQXR0cmlidXRlZFN0cmluZy5tbSAqLywKQEAgLTc5NzcsOCArNzk3NCw2IEBACiAJCQkJ
MkQ4Nzg2MjIxQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVzZXJTdHlsZVNoZWV0LmggKi8sCiAJCQkJ
MUFFMjg2ODExQzdGOTM4NjAwNjlBQzRGIC8qIEFQSVdlYnNpdGVEYXRhUmVjb3JkLmNwcCAqLywK
IAkJCQkxQUUyODY4MjFDN0Y5Mzg2MDA2OUFDNEYgLyogQVBJV2Vic2l0ZURhdGFSZWNvcmQuaCAq
LywKLQkJCQkxQTM2MzVBNzFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5j
cHAgKi8sCi0JCQkJMUEzNjM1QTgxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3Rv
cmUuaCAqLywKIAkJCQk1QzhERDM3RDFGRTQ1MDExMDBGMkE1NTYgLyogQVBJV2Vic2l0ZVBvbGlj
aWVzLmNwcCAqLywKIAkJCQk1QzhERDM3QzFGRTQ1MDExMDBGMkE1NTYgLyogQVBJV2Vic2l0ZVBv
bGljaWVzLmggKi8sCiAJCQkJMUE2NTYzRTIxQjdBOEM1MDAwOUNGNzg3IC8qIEFQSVdpbmRvd0Zl
YXR1cmVzLmNwcCAqLywKQEAgLTkzODIsNyArOTM3Nyw2IEBACiAJCQkJQzVFMUFGRUQxNkIyMTAx
NzAwNkNDMUYyIC8qIEFQSVdlYkFyY2hpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1RTFBRkVG
MTZCMjEwMjkwMDZDQzFGMiAvKiBBUElXZWJBcmNoaXZlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBRTI4Njg0MUM3RjkzODYwMDY5QUM0RiAvKiBBUElXZWJzaXRlRGF0YVJlY29yZC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMUEzNjM1QUExQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNp
dGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjU2M0U1MUI3QThDNTAwMDlDRjc4
NyAvKiBBUElXaW5kb3dGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ4RDJBODUyMTU4
M0E3RTAwQzY3NTJCIC8qIEFwcEtpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFENEMxOTMx
QjM5RjMzMjAwQUJDMjhFIC8qIEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmggaW4gSGVhZGVycyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5
U3RvcmFnZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDk3
MzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpzZXRX
ZWJzaXRlRGF0YVN0b3JlKGNvbnN0IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQogewotICAgIEFTU0VSVCghcGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3Rv
cnkuaXNFbXB0eSgpKTsKICAgICBtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSA9IHBhcmFtZXRl
cnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378509</attachid>
            <date>2019-09-10 16:31:55 -0700</date>
            <delta_ts>2019-09-10 19:29:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201655-20190910163154.patch</filename>
            <type>text/plain</type>
            <size>209861</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2NyBAQAorMjAxOS0wOS0xMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB1bm5l
Y2Vzc2FyeSBhYnN0cmFjdGlvbnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBmb3Vy
IHRoaW5ncyB0byBzaW1wbGlmeSBXZWJzaXRlRGF0YVN0b3JlIGNvZGU6CisgICAgICAgIDEuIEl0
IHJlbW92ZXMgQVBJOjpXZWJzaXRlRGF0YVN0b3JlLCB3aGljaCB3YXMganVzdCBhbiB1bm5lY2Vz
c2FyeSB3cmFwcGVyIGFyb3VuZCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUuCisgICAgICAgIDIu
IEl0IGRlcHJlY2F0ZXMgdGhlIHVudXNlZCBhbGlhc2VzIG9mIFdlYnNpdGVEYXRhU3RvcmUsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYW5kIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZgorICAgICAgICAzLiBJdCByZW1vdmVzIHRoZSB1bnVzZWQgQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHByb3BlcnRpZXMgdGhhdCBoYXZlIGJlZW4gbW92ZWQgdG8gV2Vic2l0ZURhdGFTdG9y
ZS4KKyAgICAgICAgNC4gSXQgbWFrZXMgV0tXZWJzaXRlRGF0YVN0b3JlLl9kZWxlZ2F0ZSB3ZWFr
IGluc3RlYWQgb2Ygc3Ryb25nLCBhcyBhbHJlYWR5IGFubm90YXRlZCBpbiBXS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZSBpbiBiZWhh
dmlvciBmcm9tIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZToKKyAg
ICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAg
ICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tp
ZVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6CisgICAg
ICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURh
dGFTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
RGF0YVN0b3JlLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
UG9saWNpZXMuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlUG9saWNpZXM6OmRhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5zKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJEZWxldGVBbGxFbnRyaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
UG9saWN5TGlzdGVuZXIuY3BwOgorICAgICAgICAodXNlV2l0aFBvbGljaWVzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCk6CisgICAgICAgIChXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KToKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAoV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLUmVzb3VyY2VDYWNo
ZU1hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENh
Y2hlT3JpZ2lucyk6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZv
ck9yaWdpbik6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFs
bE9yaWdpbnMpOgorICAgICAgICAodG9XZWJzaXRlRGF0YVR5cGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdl
dERlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlTm9u
UGVyc2lzdGVudERhdGFTdG9yZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVX
aXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29v
a2llU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZVdpdGhDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RT
ZWVuKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVBy
ZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKToKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSk6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5n
VGVzdCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hvdWxkQ2xh
c3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzTWF4U3RhdGlzdGljc0VudHJpZXMpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1BydW5lRW50cmllc0Rvd25Ubyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9u
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGb3JPcmlnaW4p
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnMpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW4pOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmln
aW5TdG9yYWdlUXVvdGEpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdKToK
KyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdKToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIGh0dHBDb29raWVTdG9yZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6bW9kaWZpZWRTaW5jZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOmZv
ckRhdGFSZWNvcmRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgX2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKToKKyAgICAgICAgKCtbV0tXZWJzaXRl
RGF0YVN0b3JlIF9kZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZ10pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3aXRoT3B0aW9u
czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Blck9yaWdpblN0b3Jh
Z2VRdW90YV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFBlck9yaWdpblN0
b3JhZ2VRdW90YTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRDYWNoZVN0
b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOl0pOgor
ICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcl0p
OgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldEFsbG93c0NlbGx1bGFyQWNjZXNz
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93c0NlbGx1bGFyQWNjZXNz
XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJveHlDb25maWd1cmF0aW9u
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFNvdXJj
ZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXI6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0QWxsb3dzVExTRmFs
bGJhY2s6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dzVExTRmFsbGJh
Y2tdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm94eUNvbmZpZ3VyYXRpb25d
KToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zv
cjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9z
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRJc1ByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERv
bWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3Jl
IF9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOl0pOgorICAgICAgICAoLVtXS1dlYnNp
dGVEYXRhU3RvcmUgX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyXSk6CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHNldF9kZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAg
ICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29y
a1Byb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ondl
YnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bV93ZWJQcm9jZXNzQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRl
bnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJt
ZWRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp0ZW1w
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxEZWZhdWx0RGF0
YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHRE
YXRhU3RvcmVGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2wgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAg
ICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6
IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRIU1RTRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Ondl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOS0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEhhbmdzIG9uIFN3aXNz
LmNvbSBkdWUgdG8gdGhlIHdlYiBwcm9jZXNzIGJlaW5nIGJsb2NrZWQgb24gU3RvcmFnZUFyZWFN
YXA6OkxvYWRWYWx1ZXNJZk5lZWRlZApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAg
ICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAotICAgIFVJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAogICAgIFVJ
UHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcApJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5E
IFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAot
ICAgIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKIAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVy
V2luLmNwcApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDYgQEAgVUlQcm9j
ZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVu
dFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElVc2VyU3R5bGVTaGVldC5jcHAKLVVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElXaW5kb3dGZWF0dXJlcy5jcHAKIApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yNzQsNyArMjc0LDYgQEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubQogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNv
Y29hLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCi1VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9MZWdhY3lCdW5kbGVGb3JDbGFzcy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0
dHJpYnV0ZWRTdHJpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3Qu
bW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9Tb3VyY2VzR1RLLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw2IEBAIFVJ
UHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9n
dGsvV0tWaWV3LmNwcAogCiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVz
dC5jcHAgQG5vLXVuaWZ5CkBAIC0yMzIsNiArMjMxLDcgQEAgVUlQcm9jZXNzL2NhaXJvL0JhY2tp
bmdTdG9yZUNhaXJvLmNwcCBAbgogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcAogVUlQcm9jZXNzL2dzdHJlYW1lci9X
ZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTExNCw3ICsxMTQsNiBAQCBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMu
Y3BwCiBVSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKIAogVUlQcm9jZXNzL0FQSS9nbGli
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlR0xpYi5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJ
L2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXBwbGljYXRpb25JbmZvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwIEBuby11bmlmeQpAQCAtMTkyLDYgKzE5MSw3IEBA
IFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3YKIAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5
R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5p
ZnkKIAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKIFVJ
UHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJu
aW5nLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNyAr
NDE2LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgICwg
bV9wcmVmZXJlbmNlcygqbV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpKQogICAgICwgbV91
c2VyQ29udGVudENvbnRyb2xsZXIoKm1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRl
ZExpbmtTdG9yZSgpKQotICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+
d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCisgICAgLCBtX3dlYnNpdGVE
YXRhU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKQogICAgICwgbV91
c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgeyBtX2NvbmZpZ3VyYXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5KCkgfQogICAgICwgbV90cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZp
Z3VyYXRpb24tPnRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCkBAIC0y
ODY3LDggKzI4NjcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9s
CiAgICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gZGF0YTsKICAgICBpZiAocG9saWNp
ZXMpIHsKICAgICAgICAgZGF0YSA9IHBvbGljaWVzLT5kYXRhKCk7Ci0gICAgICAgIGlmIChwb2xp
Y2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpICYmICZwb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgp
LT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSkgewotICAgICAg
ICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCktPndl
YnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAgaWYgKHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3Jl
KCkgJiYgcG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlLnB0
cigpKSB7CisgICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gKnBvbGljaWVzLT53ZWJzaXRl
RGF0YVN0b3JlKCk7CiAgICAgICAgICAgICBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDQsOCArMjQ0LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nl
c3NQb29sKEFQSTo6UHJvYwogICAgICAgICBQcm9jZXNzOjpzZXRJZGVudGlmaWVyKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKICAgICB9KTsKIAotICAgIGlmICghbV93
ZWJzaXRlRGF0YVN0b3JlICYmIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZUV4aXN0cygpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSAm
JiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCisgICAgICAgIG1f
d2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsK
IAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV9jb25maWd1cmF0aW9uLT5hbHdheXNSZXZhbGlk
YXRlZFVSTFNjaGVtZXMoKSkKICAgICAgICAgbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2
YWxpZGF0ZWQuYWRkKHNjaGVtZSk7CkBAIC00ODMsMTQgKzQ4MywxNCBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKLSAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZW5kaW5nQ29va2ll
cyA9IGNvcHlUb1ZlY3RvcihtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5w
ZW5kaW5nQ29va2llcygpKTsKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuY2xlYXJQZW5kaW5nQ29va2llcygpOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1
bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fd2Vi
c2l0ZURhdGFTdG9yZS0+cGVuZGluZ0Nvb2tpZXMoKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFT
dG9yZS0+Y2xlYXJQZW5kaW5nQ29va2llcygpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAg
ICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyKCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNr
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJh
Y2soKSA/IEFsbG93c1RMU0ZhbGxiYWNrOjpZZXMgOiBBbGxvd3NUTFNGYWxsYmFjazo6Tm87Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IG1fd2Vic2l0
ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9IG1fd2Vic2l0ZURh
dGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNrID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5hbGxvd3NUTFNG
YWxsYmFjaygpID8gQWxsb3dzVExTRmFsbGJhY2s6OlllcyA6IEFsbG93c1RMU0ZhbGxiYWNrOjpO
bzsKICNlbmRpZgotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5uZXR3b3JraW5nSGFzQmVndW4oKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3
b3JraW5nSGFzQmVndW4oKTsKICAgICB9CiAKICAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBj
YWNoZU1vZGVsKCk7CkBAIC01MDIsNyArNTAyLDEyIEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdl
YlByb2Nlc3NQb29sOjplbnMKICAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IG1fdXJsU2NoZW1lc1Jl
Z2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMpCiAgICAgICAgIHBhcmFtZXRlcnMudXJsU2NoZW1l
c1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYXBwZW5kKHNjaGVtZSk7CiAKLSAgICBwYXJh
bWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+ZGlza0NhY2hlRGly
ZWN0b3J5KCk7CisgICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUgJiYgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpKSB7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9y
ZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICAgICAgbV93ZWJz
aXRlRGF0YVN0b3JlLT5yZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOworICAgIH0KKyAg
ICBpZiAobV93ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZURp
cmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb2x2ZWROZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkoKTsKICAgICBpZiAoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkK
ICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0
b3J5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VM
QVRJVkVfUkVWQUxJREFUSU9OKQpAQCAtNTQyLDIyICs1NDcsMjUgQEAgTmV0d29ya1Byb2Nlc3NQ
cm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lz
dGVyZWRBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0ID0gY29weVRvVmVjdG9yKG1fc2NoZW1l
c1RvUmVnaXN0ZXJBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KTsKIAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQotICAgIC8vICoqKioqKioqKgotICAgIC8vIElNUE9SVEFOVDogRG8g
bm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFzZXMg
b24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxlICg8
cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQotICAgIC8vICoqKioqKioqKgotICAgIHBhcmFtZXRl
cnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0g
bV9jb25maWd1cmF0aW9uLT5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIGlmIChw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFt
ZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkuaW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5OwotICAgIAotICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJh
bWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwot
ICAgIG5ldHdvcmtQcm9jZXNzLT5jcmVhdGVTeW1MaW5rRm9yRmlsZVVwZ3JhZGUocGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpOwor
ICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlICYmIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmVFeGlzdHMoKSkgeworICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9y
ZS0+cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsKKyAgICB9CisgICAgaWYgKG1fd2Vi
c2l0ZURhdGFTdG9yZSkgeworICAgICAgICAvLyAqKioqKioqKioKKyAgICAgICAgLy8gSU1QT1JU
QU5UOiBEbyBub3QgY2hhbmdlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRh
dGFiYXNlcyBvbiBkaXNrIHdpdGhvdXQgZmlyc3QgY29uc3VsdGluZyBhIHJldmlld2VyIGZyb20g
QXBwbGUgKDxyZGFyOi8vcHJvYmxlbS8xNzQ1NDcxMj4pCisgICAgICAgIC8vICoqKioqKioqKgor
ICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb2x2ZWRJbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnkoKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
UmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMu
aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJh
bWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAg
IG5ldHdvcmtQcm9jZXNzLT5jcmVhdGVTeW1MaW5rRm9yRmlsZVVwZ3JhZGUocGFyYW1ldGVycy5k
ZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpOworICAg
IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChtX3dlYnNp
dGVEYXRhU3RvcmUpCi0gICAgICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc29s
dmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgICAgICBwYXJhbWV0
ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3Rv
cmUtPnJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAgIGlm
ICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAgICAg
ICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSAgQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSgpOworICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkgPSAgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkoKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3Jp
dGVEaXJlY3RvcnkocGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
LCBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogCiAgICAgaWYgKCFtX3NjaGVtZXNTZXJ2aWNlV29ya2Vyc0NhbkhhbmRsZS5pc0Vt
cHR5KCkpCkBAIC01NjYsMTYgKzU3NCwxNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9j
ZXNzUG9vbDo6ZW5zCiAgICAgcGFyYW1ldGVycy5zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclBy
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5OwogI2VuZGlmCiAKLSAgICBhdXRvIGxvY2FsU3RvcmFnZURpcmVj
dG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBudWxsU3RyaW5nKCk7
CisgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUgPyBt
X3dlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBudWxs
U3RyaW5nKCk7CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgIGxvY2Fs
U3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpOworICAgICAgICBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
UmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZh
dWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgcGFyYW1ldGVycy5k
ZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAg
ICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0
YVN0b3JlLT5yZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKICAgICBp
ZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAg
ICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CisgICAg
ICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogCiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRl
cnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9y
ZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCkBAIC02MDEsMTcgKzYwOSwxNyBAQCBOZXR3
b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgfSBlbHNlIGlmIChtX3dl
YnNpdGVEYXRhU3RvcmUpIHsKICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgICAgICBlbmFibGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJz
aXRlRGF0YVN0b3JlKCkuaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygpOworICAgICAgICBl
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0
YVN0b3JlLT5oYXNTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKCk7CiAjZW5kaWYKICAgICAgICAg
aWYgKGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKLSAgICAgICAgICAgIGF1dG8gbmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkucGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKKyAgICAgICAgICAg
IGF1dG8gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5wYXJh
bWV0ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzOwogICAgICAgICAgICAgc2hvdWxkSW5j
bHVkZUxvY2FsaG9zdCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNsdWRlTG9j
YWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgICAgICAgICAgZW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5lbmFi
bGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAgICAgICAgICAgbWFudWFsUHJl
dmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKLSAgICAgICAgcGFy
YW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVvdGEg
PSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZXJPcmlnaW5TdG9yYWdl
UXVvdGEoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5w
ZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJz
aXRlRGF0YVN0b3JlKCkucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOworICAgICAg
ICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VR
dW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7CisgICAg
ICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9y
aWdpblN0b3JhZ2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyVGhpcmRQYXJ0eU9yaWdp
blN0b3JhZ2VRdW90YSgpOwogICAgIH0KIAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9y
ZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNzAyLDggKzcxMCw4
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnQKIAogICAgIGlmICgh
d2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKLSAg
ICAgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwotICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gJm1fd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICAgICAgbV93ZWJzaXRl
RGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwor
ICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOwogICAg
IH0KIAogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQpAQCAtNzk1
LDEyICs4MDMsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkQ2FjaGVQYWdlCiB2
b2lkIFdlYlByb2Nlc3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygpCiB7
CiAgICAgbV9yZXNvbHZlZFBhdGhzLmluamVjdGVkQnVuZGxlUGF0aCA9IHJlc29sdmVQYXRoRm9y
U2FuZGJveEV4dGVuc2lvbihpbmplY3RlZEJ1bmRsZVBhdGgoKSk7Ci0gICAgbV9yZXNvbHZlZFBh
dGhzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRl
RGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLndlYlNRTERhdGFiYXNlRGly
ZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRl
bnNpb24obV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAgICBt
X3Jlc29sdmVkUGF0aHMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFk
V3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVkaWFD
YWNoZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdlRGly
ZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRl
bnNpb24obV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAg
IG1fcmVzb2x2ZWRQYXRocy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3Jl
YXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24t
PmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOwotCiAgICAgbV9yZXNvbHZlZFBhdGhzLmFk
ZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnJlc2VydmVDYXBhY2l0eSht
X2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkuc2l6ZSgp
KTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBtX2NvbmZpZ3VyYXRpb24tPmFkZGl0aW9u
YWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzKCkpCiAgICAgICAgIG1fcmVzb2x2ZWRQYXRocy5hZGRp
dGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy51bmNoZWNrZWRBcHBlbmQocmVz
b2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGguZGF0YSgpKSk7CkBAIC04MzcsNyArODM5
LDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OgogI2lmIFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIC8vIEluIHBsYXRmb3JtcyB1c2luZyBCdWJi
bGV3cmFwIGZvciBzYW5kYm94aW5nLCBwcmV3YXJtZWQgcHJvY2VzcyBpcyBsYXVuY2hlZCB1c2lu
ZyB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlLAogICAgIC8vIHNv
IHdlIGRvbid0IHVzZSBpdCBpbiBjYXNlIG9mIHVzaW5nIGEgZGlmZmVyZW50IFdlYnNpdGVEYXRh
U3RvcmUuCi0gICAgaWYgKG1fc2FuZGJveEVuYWJsZWQgJiYgbV93ZWJzaXRlRGF0YVN0b3JlICYm
ICZtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURhdGFT
dG9yZSkKKyAgICBpZiAobV9zYW5kYm94RW5hYmxlZCAmJiBtX3dlYnNpdGVEYXRhU3RvcmUgJiYg
bV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogCkBAIC04ODAsMjkgKzg4MiwxOSBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZW5kV2ViUHJvY2Vzc0RhdGFTCiAgICAgd2Vic2l0ZURhdGFTdG9yZS5yZXNv
bHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOwogCiAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlZEFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKTsKLSAgICBpZiAocGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5ID0gbV9yZXNvbHZlZFBhdGhzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAgICAgaWYg
KCFwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJh
bWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVj
dG9yeU5hbWUgPSB3ZWJzaXRlRGF0YVN0b3JlLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUoKTsKLSAgICBpZiAocGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRmxhdEZp
bGVTdWJkaXJlY3RvcnlOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcGFyYW1ldGVycy5hcHBsaWNh
dGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0aW9uLT5hcHBs
aWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCk7CiAKICAgICBwYXJhbWV0ZXJz
LndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlZERhdGFi
YXNlRGlyZWN0b3J5KCk7Ci0gICAgaWYgKHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5
ID0gbV9yZXNvbHZlZFBhdGhzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwogICAgIGlmICghcGFy
YW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMu
d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0
ZSwgcGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAK
ICAgICBwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJl
c29sdmVkTWVkaWFDYWNoZURpcmVjdG9yeSgpOwotICAgIGlmIChwYXJhbWV0ZXJzLm1lZGlhQ2Fj
aGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJl
Y3RvcnkgPSBtX3Jlc29sdmVkUGF0aHMubWVkaWFDYWNoZURpcmVjdG9yeTsKICAgICBpZiAoIXBh
cmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMubWVk
aWFDYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBwYXJh
bWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgcGFyYW1l
dGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVk
TWVkaWFLZXlzRGlyZWN0b3J5KCk7Ci0gICAgaWYgKHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdl
RGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgcGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VE
aXJlY3RvcnkgPSBtX3Jlc29sdmVkUGF0aHMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5OwogICAg
IGlmICghcGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChw
YXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlw
ZTo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CiAKQEAgLTExMDcsNyArMTA5OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBy
b2Nlc3NEaWRGaW5pc2hMYXUKICAgICBtX2Nvbm5lY3Rpb25DbGllbnQuZGlkQ3JlYXRlQ29ubmVj
dGlvbih0aGlzLCBwcm9jZXNzLT53ZWJDb25uZWN0aW9uKCkpOwogCiAgICAgaWYgKG1fd2Vic2l0
ZURhdGFTdG9yZSkKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3Jl
LT5kaWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpk
aXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCkBAIC0xMTg2LDcgKzEx
NzgsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzCiAgICAgICAg
IHJldHVybiBjcmVhdGVOZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKTsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIGJvb2wgbXVzdE1hdGNoRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUg
IT0gJkFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0
YVN0b3JlKCk7CisgICAgYm9vbCBtdXN0TWF0Y2hEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwogI2Vsc2UKICAgICBib29sIG11
c3RNYXRjaERhdGFTdG9yZSA9IGZhbHNlOwogI2VuZGlmCkBAIC0xMjIwLDcgKzEyMTIsNyBAQCBS
ZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlCiAgICAgICAgIC8vIFdlIHRy
eSB0byBhdm9pZCBjcmVhdGluZyB0aGUgZGVmYXVsdCBkYXRhIHN0b3JlIGFzIGxvbmcgYXMgcG9z
c2libGUuCiAgICAgICAgIC8vIEJ1dCBpZiB0aGVyZSBpcyBhbiBhdHRlbXB0IHRvIGNyZWF0ZSBh
IHdlYiBwYWdlIHdpdGhvdXQgYW55IHNwZWNpZmllZCBkYXRhIHN0b3JlLCB0aGVuIHdlIGhhdmUg
dG8gY3JlYXRlIGl0LgogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAg
ICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERh
dGFTdG9yZSgpLnB0cigpOworICAgICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwogCiAgICAgICAgIHBhZ2VDb25m
aWd1cmF0aW9uLT5zZXRXZWJzaXRlRGF0YVN0b3JlKG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKSk7
CiAgICAgfQpAQCAtMTIzMSw4ICsxMjIzLDggQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vz
c1Bvb2w6OmNyZWF0ZQogICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNy
ZWF0aW5nIHRoZSBwYWdlIHZpYSB3aW5kb3cub3BlbigpLgogICAgICAgICBwcm9jZXNzID0gJnBh
Z2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT5lbnN1cmVSdW5uaW5nUHJvY2VzcygpOwog
ICAgICAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCBzZXZlcmFsIFdlYnNpdGVEYXRhU3RvcmVzIHNo
YXJpbmcgYSBzaW5nbGUgcHJvY2Vzcy4KLSAgICAgICAgQVNTRVJUKHByb2Nlc3MuZ2V0KCkgPT0g
bV9kdW1teVByb2Nlc3NQcm94eSB8fCAmcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3Rv
cmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkp
OwotICAgICAgICBBU1NFUlQoJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT53ZWJz
aXRlRGF0YVN0b3JlKCkgPT0gJnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCkt
PndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIEFTU0VSVChwcm9jZXNzLmdldCgpID09IG1f
ZHVtbXlQcm9jZXNzUHJveHkgfHwgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUo
KSA9PSAmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgQVNTRVJUKCZwYWdl
Q29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHBhZ2VD
b25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIH0gZWxzZSBpZiAoIW1faXNE
ZWxheWVkV2ViUHJvY2Vzc0xhdW5jaERpc2FibGVkKSB7CiAgICAgICAgIC8vIEluIHRoZSBjb21t
b24gY2FzZSwgd2UgZGVsYXkgcHJvY2VzcyBsYXVuY2ggdW50aWwgc29tZXRoaW5nIGlzIGFjdHVh
bGx5IGxvYWRlZCBpbiB0aGUgcGFnZS4KICAgICAgICAgaWYgKCFtX2R1bW15UHJvY2Vzc1Byb3h5
KSB7CkBAIC0xMjQyLDcgKzEyMzQsNyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9v
bDo6Y3JlYXRlCiAgICAgICAgIH0KICAgICAgICAgcHJvY2VzcyA9IG1fZHVtbXlQcm9jZXNzUHJv
eHk7CiAgICAgfSBlbHNlCi0gICAgICAgIHByb2Nlc3MgPSAmcHJvY2Vzc0ZvclJlZ2lzdHJhYmxl
RG9tYWluKHBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRh
U3RvcmUoKSwgbnVsbHB0ciwgeyB9KTsKKyAgICAgICAgcHJvY2VzcyA9ICZwcm9jZXNzRm9yUmVn
aXN0cmFibGVEb21haW4oKnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCksIG51
bGxwdHIsIHsgfSk7CiAKICAgICBBU1NFUlQocHJvY2Vzcyk7CiAKQEAgLTEyOTIsNyArMTI4NCw3
IEBAIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2UKIAogICAgIFN0cmlu
ZyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gc3RvcmUucmVzb2x2ZWRTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlQ29uZmlndXJhdGlvbigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7
CisgICAgICAgIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLT5zZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5KCk7CiAKICAgICByZXR1cm4gbV9tYXlIYXZlUmVnaXN0ZXJlZFNl
cnZpY2VXb3JrZXJzLmVuc3VyZShzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBb
Jl0gewogICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIGNvbXB1dGF0aW9uIG9uIGEgYmFja2dy
b3VuZCB0aHJlYWQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJBUElE
aWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgog
I2luY2x1ZGUgIkRvd25sb2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2su
aCIKICNpbmNsdWRlICJIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyLmgi
CkBAIC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQu
aCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5LmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWlu
Lmg+CkBAIC0yMDIsOCArMjAyLDggQEAgcHVibGljOgogICAgIC8vIERpc2Nvbm5lY3QgdGhlIHBy
b2Nlc3MgZnJvbSB0aGUgY29udGV4dC4KICAgICB2b2lkIGRpc2Nvbm5lY3RQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSopOwogCi0gICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0
b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9Ci0gICAgdm9p
ZCBzZXRQcmltYXJ5RGF0YVN0b3JlKEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKSB7
IG1fd2Vic2l0ZURhdGFTdG9yZSA9ICZkYXRhU3RvcmU7IH0KKyAgICBXZWJzaXRlRGF0YVN0b3Jl
KiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdl
dCgpOyB9CisgICAgdm9pZCBzZXRQcmltYXJ5RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRh
dGFTdG9yZSkgeyBtX3dlYnNpdGVEYXRhU3RvcmUgPSAmZGF0YVN0b3JlOyB9CiAKICAgICBSZWY8
V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4mJik7CiAKQEAgLTY3Niw3ICs2NzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9tZW1vcnlTYW1wbGVyRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgZG91YmxlIG1fbWVtb3J5U2Ft
cGxlckludGVydmFsIHsgMTQwMC4wIH07CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0
b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1f
d2Vic2l0ZURhdGFTdG9yZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgUmVm
UHRyPFdlYkNvbnRleHRTdXBwbGVtZW50PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IFdlYkNvbnRl
eHRTdXBwbGVtZW50TWFwOwogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVu
dHM7CkBAIC03NjEsMTIgKzc2MSw3IEBAIHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgUGF0aHMgewog
ICAgICAgICBTdHJpbmcgaW5qZWN0ZWRCdW5kbGVQYXRoOwotICAgICAgICBTdHJpbmcgYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIHdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5OwotICAgICAgICBTdHJpbmcgbWVkaWFDYWNoZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5n
IG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIHVpUHJvY2Vzc0J1bmRs
ZVJlc291cmNlUGF0aDsKLSAgICAgICAgU3RyaW5nIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsK
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIFN0cmluZyBjb29raWVTdG9yYWdl
RGlyZWN0b3J5OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29r
aWVTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUhUVFBDb29raWVTdG9yZS5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw5ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJSFRUUENvb2tp
ZVN0b3JlLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAi
V2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNp
bmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw3ICs0OCw2IEBAIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVp
bnQKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBBUElXZWJDb29raWVNYW5hZ2VyUHJveHlPYnNl
cnZlcjsKLWNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKIGNsYXNzIEhUVFBDb29raWVTdG9yZSBm
aW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6SFRUUENvb2tpZVN0b3JlPiB7
CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQYWdlQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFZpc2l0ZWRM
aW5rU3QKICAgICBtX3Zpc2l0ZWRMaW5rU3RvcmUgPSB2aXNpdGVkTGlua1N0b3JlOwogfQogCi1B
UEk6OldlYnNpdGVEYXRhU3RvcmUqIFBhZ2VDb25maWd1cmF0aW9uOjp3ZWJzaXRlRGF0YVN0b3Jl
KCkKK1dlYnNpdGVEYXRhU3RvcmUqIFBhZ2VDb25maWd1cmF0aW9uOjp3ZWJzaXRlRGF0YVN0b3Jl
KCkKIHsKICAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOwogfQogCi12b2lkIFBh
Z2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZSogd2Vic2l0ZURhdGFTdG9yZSkKK3ZvaWQgUGFnZUNvbmZpZ3VyYXRpb246OnNldFdlYnNpdGVE
YXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBtX3dl
YnNpdGVEYXRhU3RvcmUgPSB3ZWJzaXRlRGF0YVN0b3JlOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTIgQEAgY2xhc3MgV2ViUHJlZmVy
ZW5jZXM7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIGNsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXI7
CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKK2NsYXNzIFdlYnNpdGVEYXRh
U3RvcmU7CiB9CiAKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBBcHBsaWNhdGlvbk1hbmlmZXN0
OwotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIGNsYXNzIFdlYnNpdGVQb2xpY2llczsKIAogY2xh
c3MgUGFnZUNvbmZpZ3VyYXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlBh
Z2VDb25maWd1cmF0aW9uPiB7CkBAIC04NCw4ICs4NCw4IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6
OlZpc2l0ZWRMaW5rU3RvcmUqIHZpc2l0ZWRMaW5rU3RvcmUoKTsKICAgICB2b2lkIHNldFZpc2l0
ZWRMaW5rU3RvcmUoV2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlKik7CiAKLSAgICBXZWJzaXRlRGF0
YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3Jl
KFdlYnNpdGVEYXRhU3RvcmUqKTsKKyAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNp
dGVEYXRhU3RvcmUoKTsKKyAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlKik7CiAKICAgICBXZWJzaXRlUG9saWNpZXMqIGRlZmF1bHRXZWJzaXRlUG9s
aWNpZXMoKSBjb25zdDsKICAgICB2b2lkIHNldERlZmF1bHRXZWJzaXRlUG9saWNpZXMoV2Vic2l0
ZVBvbGljaWVzKik7CkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2Vi
S2l0OjpXZWJQYWdlUHJveHk+IG1fcmVsYXRlZFBhZ2U7CiAgICAgUmVmUHRyPFdlYktpdDo6Vmlz
aXRlZExpbmtTdG9yZT4gbV92aXNpdGVkTGlua1N0b3JlOwogCi0gICAgUmVmUHRyPFdlYnNpdGVE
YXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBSZWZQdHI8V2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAgICAgUmVmUHRyPFdlYnNpdGVQb2xpY2ll
cz4gbV9kZWZhdWx0V2Vic2l0ZVBvbGljaWVzOwogCiAgICAgYm9vbCBtX3RyZWF0c1NIQTFTaWdu
ZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlIHsgdHJ1ZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsy
Niw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKIG5h
bWVzcGFjZSBBUEkgewogCkBAIC0zNiwzNSArMzYsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKTsKIH0KIAotUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiYgbGVnYWN5Q29u
ZmlndXJhdGlvbikKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb246OmNyZWF0ZSgpOwotCi0gICAgY29uZmlndXJhdGlvbi0+bV9hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJk
aXJlY3RvcnlOYW1lID0gbGVnYWN5Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRmxhdEZp
bGVTdWJkaXJlY3RvcnlOYW1lKCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9kaXNrQ2FjaGVEaXJl
Y3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAg
IGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRp
b24ubWVkaWFDYWNoZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1faW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
PSBsZWdhY3lDb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZp
Z3VyYXRpb24tPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29u
ZmlndXJhdGlvbi5kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25m
aWd1cmF0aW9uLT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0
aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX3dlYlNR
TERhdGFiYXNlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpOwotCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Ci19Ci0KIFByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkKLSAgICA6IG1fYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpKQotICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJl
Y3RvcnlOYW1lKCJGaWxlcyIpCi0gICAgLCBtX2Rpc2tDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpCi0gICAgLCBtX21lZGlhQ2Fj
aGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3Rvcnko
KSkKLSAgICAsIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpCi0gICAgLCBtX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KCkpCi0gICAgLCBtX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpCi0gICAg
LCBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSgpKQotICAgICwgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpCi0g
ICAgLCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkKIHsKIH0KIApAQCAtNzcs
MTggKzQ5LDggQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1BvbwogICAg
IGF1dG8gY29weSA9IHRoaXMtPmNyZWF0ZSgpOwogCiAgICAgY29weS0+bV9jYWNoZU1vZGVsID0g
dGhpcy0+bV9jYWNoZU1vZGVsOwotICAgIGNvcHktPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0gdGhp
cy0+bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2
ZVZhbGlkYXRpb25FbmFibGVkID0gdGhpcy0+bV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRp
b25FbmFibGVkOwotICAgIGNvcHktPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHRoaXMt
Pm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKLSAgICBjb3B5LT5tX2FwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSB0aGlzLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWU7Ci0gICAgY29weS0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0g
dGhpcy0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5OwotICAgIGNvcHktPm1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkgPSB0aGlzLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIGNv
cHktPm1faW5qZWN0ZWRCdW5kbGVQYXRoID0gdGhpcy0+bV9pbmplY3RlZEJ1bmRsZVBhdGg7Ci0g
ICAgY29weS0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2xvY2FsU3RvcmFnZURp
cmVjdG9yeTsKLSAgICBjb3B5LT5tX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSA9
IHRoaXMtPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1f
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeTsKLSAgICBjb3B5LT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSB0aGlz
LT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV93ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAg
Y29weS0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fY2FjaGVQYXJ0aXRp
b25lZFVSTFNjaGVtZXM7CiAgICAgY29weS0+bV9hbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMg
PSB0aGlzLT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKICAgICBjb3B5LT5tX2FkZGl0
aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzID0gdGhpcy0+bV9hZGRpdGlvbmFsUmVhZEFjY2Vz
c0FsbG93ZWRQYXRoczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI0OTczMikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDUsOCArNDUsNiBAQCBuYW1lc3BhY2UgQVBJIHsKIGNs
YXNzIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9i
amVjdDo6VHlwZTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBS
ZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOwot
ICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVhdGVXaXRoV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiYpOwogCiAgICAgZXhwbGljaXQgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7
CiAgICAgdmlydHVhbCB+UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC03OSwzOCArNzcs
OSBAQCBwdWJsaWM6CiAgICAgV2ViS2l0OjpDYWNoZU1vZGVsIGNhY2hlTW9kZWwoKSBjb25zdCB7
IHJldHVybiBtX2NhY2hlTW9kZWw7IH0KICAgICB2b2lkIHNldENhY2hlTW9kZWwoV2ViS2l0OjpD
YWNoZU1vZGVsIGNhY2hlTW9kZWwpIHsgbV9jYWNoZU1vZGVsID0gY2FjaGVNb2RlbDsgfQogCi0g
ICAgY29uc3QgV1RGOjpTdHJpbmcmIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7
IHJldHVybiBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkpIHsgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGFwcGxpY2F0aW9uQ2FjaGVG
bGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBk
aXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2Rpc2tDYWNoZURpcmVjdG9yeTsg
fQotICAgIHZvaWQgc2V0RGlza0NhY2hlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBkaXNr
Q2FjaGVEaXJlY3RvcnkpIHsgbV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBkaXNrQ2FjaGVEaXJlY3Rv
cnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV9tZWRpYUNhY2hlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRNZWRpYUNh
Y2hlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUNhY2hlRGlyZWN0b3J5KSB7IG1f
bWVkaWFDYWNoZURpcmVjdG9yeSA9IG1lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICAKLSAgICBj
b25zdCBXVEY6OlN0cmluZyYgaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRJbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgaW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnkpIHsgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGluZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5OyB9Ci0KICAgICBjb25zdCBXVEY6OlN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQ
YXRoKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZVBhdGg7IH0KICAgICB2b2lkIHNl
dEluamVjdGVkQnVuZGxlUGF0aChjb25zdCBXVEY6OlN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRo
KSB7IG1faW5qZWN0ZWRCdW5kbGVQYXRoID0gaW5qZWN0ZWRCdW5kbGVQYXRoOyB9CiAKLSAgICBj
b25zdCBXVEY6OlN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldExvY2FsU3RvcmFnZURpcmVj
dG9yeShjb25zdCBXVEY6OlN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KSB7IG1fbG9jYWxT
dG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBX
VEY6OlN0cmluZyYgZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNl
dERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgZGly
ZWN0b3J5KSB7IG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gZGlyZWN0b3J5
OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgd2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkpIHsgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsgfQotICAg
IHZvaWQgc2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgbWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSkgeyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBt
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSkgeyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5OyB9Ci0KICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiBjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcygpIHsgcmV0dXJuIG1fY2FjaGVQYXJ0aXRpb25l
ZFVSTFNjaGVtZXM7IH0KICAgICB2b2lkIHNldENhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKFZl
Y3RvcjxXVEY6OlN0cmluZz4mJiBjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcykgeyBtX2NhY2hl
UGFydGl0aW9uZWRVUkxTY2hlbWVzID0gV1RGTW92ZShjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1l
cyk7IH0KIApAQCAtMTg2LDE3ICsxNTUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaXNrQ2Fj
aGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkIHsgZmFsc2UgfTsKICAgICBXZWJLaXQ6OkNh
Y2hlTW9kZWwgbV9jYWNoZU1vZGVsIHsgV2ViS2l0OjpDYWNoZU1vZGVsOjpQcmltYXJ5V2ViQnJv
d3NlciB9OwogCi0gICAgV1RGOjpTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Owot
ICAgIFdURjo6U3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZTsKLSAgICBXVEY6OlN0cmluZyBtX2Rpc2tDYWNoZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmlu
ZyBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeTsKICAgICBXVEY6OlN0cmluZyBtX2luamVjdGVkQnVuZGxlUGF0aDsKLSAg
ICBXVEY6OlN0cmluZyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBt
X2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBtX3dl
YlNRTERhdGFiYXNlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fbWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3Rvcnk7CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hl
bWVzOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9hbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVt
ZXM7CiAgICAgVmVjdG9yPFdURjo6Q1N0cmluZz4gbV9hZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93
ZWRQYXRoczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0
YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0x
LDE2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotCi0jaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxp
emUuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0KLW5hbWVzcGFjZSBBUEkgewot
Ci1zdGF0aWMgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiBnbG9iYWxEZWZhdWx0RGF0YVN0b3Jl
KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+
PiBnbG9iYWxEZWZhdWx0RGF0YVN0b3JlOwotICAgIHJldHVybiBnbG9iYWxEZWZhdWx0RGF0YVN0
b3JlLmdldCgpOwotfQotCi0KLVJlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGF0YVN0b3JlKCkKLXsKLSAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7
Ci0KLSAgICBhdXRvJiBzdG9yZSA9IGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKTsKLSAgICBpZiAo
IXN0b3JlKQotICAgICAgICBzdG9yZSA9IGFkb3B0UmVmKG5ldyBXZWJzaXRlRGF0YVN0b3JlKGRl
ZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpKTsKLQotICAgIHJldHVybiAqc3RvcmU7Ci19Ci0KLXZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcoKQotewotICAgIGdsb2JhbERl
ZmF1bHREYXRhU3RvcmUoKSA9IG51bGxwdHI7Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpCi17Ci0gICAgcmV0dXJuICEhZ2xvYmFsRGVmYXVsdERh
dGFTdG9yZSgpOwotfQotCi1SZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6
Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2Vic2l0ZURhdGFTdG9yZSk7Ci19Ci0KLVJlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRl
RGF0YVN0b3JlOjpjcmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24+JiYgY29uZmlndXJhdGlvbiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKLXsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlKFdURk1vdmUoY29uZmln
dXJhdGlvbiksIHNlc3Npb25JRCkpOwotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0
YVN0b3JlKCkKLSAgICA6IG1fd2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKSkKLXsKLX0KLQotV2Vic2l0ZURhdGFTdG9yZTo6V2Vi
c2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4m
JiBjb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgOiBtX3dlYnNp
dGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGTW92ZShjb25m
aWd1cmF0aW9uKSwgc2Vzc2lvbklEKSkKLXsKLX0KLQotV2Vic2l0ZURhdGFTdG9yZTo6fldlYnNp
dGVEYXRhU3RvcmUoKQotewotfQotCi1IVFRQQ29va2llU3RvcmUmIFdlYnNpdGVEYXRhU3RvcmU6
Omh0dHBDb29raWVTdG9yZSgpCi17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+Y29v
a2llU3RvcmUoKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6IGluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5j
b25maWd1cmF0aW9uKCkuaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLX0KLQotYm9vbCBX
ZWJzaXRlRGF0YVN0b3JlOjppc1BlcnNpc3RlbnQoKQotewotICAgIHJldHVybiBtX3dlYnNpdGVE
YXRhU3RvcmUtPmlzUGVyc2lzdGVudCgpOwotfQotCi1ib29sIFdlYnNpdGVEYXRhU3RvcmU6OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV93ZWJz
aXRlRGF0YVN0b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOwotfQotCi12b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKLXsKLSAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGVuYWJsZWQpOwotfQotCi1ib29sIFdlYnNpdGVEYXRhU3RvcmU6OnJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoKSBjb25zdAotewotICAgIHJldHVybiBtX3dlYnNp
dGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoKTsKLX0KLQotdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJv
b2wgZW5hYmxlZCkKLXsKLSAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEZWJ1Z01vZGUoZW5hYmxlZCk7Ci19Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi1X
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgp
Ci17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NjM2OSBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NjM3MAotICAgIHJldHVybiBXVEY6OlN0cmluZygpOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnkoKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgcmV0dXJuIFdURjo6U3RyaW5n
KCk7Ci19Ci0jZW5kaWYKLQotI2lmICFVU0UoR0xJQikKLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAg
IC8vIE5vdCBpbXBsZW1lbnRlZC4KLSAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKLX0KLSNlbmRp
ZgotCi1SZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQotewotICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0
ZSgpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0UGVyc2lzdGVudCh0cnVlKTsKLQotICAgIGNv
bmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdEFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgiRmlsZXMiKTsKLSAgICBjb25maWd1cmF0aW9u
LT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hl
RGlyZWN0b3J5KGRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkpOwotCi0gICAgY29uZmlndXJh
dGlvbi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoZGVmYXVsdEluZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkoZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoZGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldExv
Y2FsU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAg
IGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeShkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VE
aXJlY3RvcnkoZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpKTsKLQot
ICAgIGNvbmZpZ3VyYXRpb24tPnNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KGRl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpKTsKLQotICAgIHJldHVybiBj
b25maWd1cmF0aW9uOwotfQotCi19IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3Rv
cmUuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JlLmgiCi0jaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgotI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIEFQSSB7Ci0KLWNsYXNzIFdlYnNp
dGVEYXRhU3RvcmUgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OldlYnNp
dGVEYXRhU3RvcmU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+
IGRlZmF1bHREYXRhU3RvcmUoKTsKLSAgICBzdGF0aWMgYm9vbCBkZWZhdWx0RGF0YVN0b3JlRXhp
c3RzKCk7Ci0gICAgc3RhdGljIHZvaWQgZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3Rpbmco
KTsKLQotICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlKFJlZjxXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYp
OwotICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlTm9uUGVyc2lzdGVudERh
dGFTdG9yZSgpOwotCi0gICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOwotICAgIHZp
cnR1YWwgfldlYnNpdGVEYXRhU3RvcmUoKTsKLQotICAgIGJvb2wgaXNQZXJzaXN0ZW50KCk7Ci0K
LSAgICBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sKTsKLSAgICBib29sIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCk7Ci0KLSAgICBXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0
KCk7IH0KLSAgICBIVFRQQ29va2llU3RvcmUmIGh0dHBDb29raWVTdG9yZSgpOwotCi0gICAgV1RG
OjpTdHJpbmcgaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLQotICAgIHN0YXRpYyBXVEY6
OlN0cmluZyBkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBX
VEY6OlN0cmluZyBkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RG
OjpTdHJpbmcgZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpT
dHJpbmcgZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7Ci0g
ICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAg
ICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsK
LSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURp
cmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0V2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkoKTsKLSNpZiBVU0UoR0xJQikKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVs
dEhTVFNEaXJlY3RvcnkoKTsKLSNlbmRpZgotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKLQotICAgIHN0YXRp
YyBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gZGVmYXVsdERhdGFT
dG9yZUNvbmZpZ3VyYXRpb24oKTsKLQotcHJpdmF0ZToKLSAgICBlbnVtIFNob3VsZENyZWF0ZURp
cmVjdG9yeSB7IENyZWF0ZURpcmVjdG9yeSwgRG9udENyZWF0ZURpcmVjdG9yeSB9OwotCi0gICAg
V2Vic2l0ZURhdGFTdG9yZSgpOwotCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIHRlbXBEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5h
bWUsIFNob3VsZENyZWF0ZURpcmVjdG9yeSA9IENyZWF0ZURpcmVjdG9yeSk7Ci0gICAgc3RhdGlj
IFdURjo6U3RyaW5nIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJp
bmcmIGRpcmVjdG9yeU5hbWUpOwotCi0gICAgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4g
bV93ZWJzaXRlRGF0YVN0b3JlOwotfTsKLQotfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAJKHJldmlzaW9uIDI0OTczMikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiwxNCArMjYsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRh
U3RvcmUuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZVBvbGljaWVzRGF0YS5oIgogCiBuYW1lc3BhY2UgQVBJIHsKIAogV2Vic2l0ZVBvbGljaWVzOjpX
ZWJzaXRlUG9saWNpZXMoKSA9IGRlZmF1bHQ7CiAKLVdlYnNpdGVQb2xpY2llczo6V2Vic2l0ZVBv
bGljaWVzKGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZUF1dG9wbGF5UXVpcms+IGFsbG93ZWRBdXRvcGxheVF1aXJrcywgV2ViS2l0OjpXZWJzaXRl
QXV0b3BsYXlQb2xpY3kgYXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVy
RmllbGQ+JiYgbGVnYWN5Q3VzdG9tSGVhZGVyRmllbGRzLCBWZWN0b3I8V2ViQ29yZTo6Q3VzdG9t
SGVhZGVyRmllbGRzPiYmIGN1c3RvbUhlYWRlckZpZWxkcywgV2ViS2l0OjpXZWJzaXRlUG9wVXBQ
b2xpY3kgcG9wVXBQb2xpY3ksIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiYmIHdlYnNpdGVEYXRh
U3RvcmUpCitXZWJzaXRlUG9saWNpZXM6OldlYnNpdGVQb2xpY2llcyhib29sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiBhbGxv
d2VkQXV0b3BsYXlRdWlya3MsIFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5IGF1dG9wbGF5
UG9saWN5LCBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPiYmIGxlZ2FjeUN1c3RvbUhl
YWRlckZpZWxkcywgVmVjdG9yPFdlYkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4mJiBjdXN0b21I
ZWFkZXJGaWVsZHMsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9saWN5LCBSZWZQ
dHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiYmIHdlYnNpdGVEYXRhU3RvcmUpCiAgICAgOiBt
X2NvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoY29udGVudEJsb2NrZXJzRW5hYmxlZCkKICAgICAsIG1f
YWxsb3dlZEF1dG9wbGF5UXVpcmtzKGFsbG93ZWRBdXRvcGxheVF1aXJrcykKICAgICAsIG1fYXV0
b3BsYXlQb2xpY3koYXV0b3BsYXlQb2xpY3kpCkBAIC04NCw3ICs4NCw3IEBAIFdlYnNpdGVQb2xp
Y2llczo6fldlYnNpdGVQb2xpY2llcygpCiB7CiB9CiAKLXZvaWQgV2Vic2l0ZVBvbGljaWVzOjpz
ZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiYmIHdlYnNpdGVEYXRh
U3RvcmUpCit2b2lkIFdlYnNpdGVQb2xpY2llczo6c2V0V2Vic2l0ZURhdGFTdG9yZShSZWZQdHI8
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiYmIHdlYnNpdGVEYXRhU3RvcmUpCiB7CiAgICAgbV93
ZWJzaXRlRGF0YVN0b3JlID0gV1RGTW92ZSh3ZWJzaXRlRGF0YVN0b3JlKTsKIH0KQEAgLTEwOCw3
ICsxMDgsNyBAQCBXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGEgV2Vic2l0ZVBvbGljCiAjZW5k
aWYKICAgICAgICAgV1RGTW92ZShjdXN0b21IZWFkZXJGaWVsZHMpLAogICAgICAgICBwb3BVcFBv
bGljeSgpLAotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPyBPcHRpb25hbDxXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiB7IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnBhcmFtZXRlcnMoKSB9IDogV1RGOjpudWxsb3B0LAorICAgICAgICBtX3dlYnNp
dGVEYXRhU3RvcmUgPyBPcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
PiB7IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGFyYW1ldGVycygpIH0gOiBXVEY6Om51bGxvcHQsCiAg
ICAgICAgIG1fY3VzdG9tVXNlckFnZW50LAogICAgICAgICBtX2N1c3RvbUphdmFTY3JpcHRVc2Vy
QWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrcywKICAgICAgICAgbV9jdXN0b21OYXZpZ2F0b3JQbGF0
Zm9ybSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNp
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZVBvbGljaWVzLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTMgKzQxLDEy
IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNz
IFdlYnNpdGVEYXRhU3RvcmU7CiBzdHJ1Y3QgV2Vic2l0ZVBvbGljaWVzRGF0YTsKIH0KIAogbmFt
ZXNwYWNlIEFQSSB7CiAKLWNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7Ci0KIGNsYXNzIFdlYnNpdGVQ
b2xpY2llcyBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6
OldlYnNpdGVQb2xpY2llcz4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2Vic2l0ZVBvbGlj
aWVzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVQb2xpY2llcyk7IH0K
QEAgLTc5LDggKzc4LDggQEAgcHVibGljOgogICAgIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5
IHBvcFVwUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9wb3BVcFBvbGljeTsgfQogICAgIHZvaWQg
c2V0UG9wVXBQb2xpY3koV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3kgcG9saWN5KSB7IG1fcG9w
VXBQb2xpY3kgPSBwb2xpY3k7IH0KIAotICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRh
U3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KLSAgICB2
b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYpOworICAg
IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgcmV0
dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQorICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFT
dG9yZShSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiYmKTsKIAogICAgIFdlYktpdDo6
V2Vic2l0ZVBvbGljaWVzRGF0YSBkYXRhKCk7CiAKQEAgLTExOCw3ICsxMTcsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRBbGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZlclF1aXJrKGJvb2wgYWxsb3cp
IHsgbV9hbGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZlclF1aXJrID0gYWxsb3c7IH0KIAogcHJpdmF0
ZToKLSAgICBXZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBPcHRp
b25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4sIFdlYktpdDo6V2Vic2l0ZUF1dG9w
bGF5UG9saWN5LCBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPiYmLCBWZWN0b3I8V2Vi
Q29yZTo6Q3VzdG9tSGVhZGVyRmllbGRzPiYmLCBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSwg
UmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYpOworICAgIFdlYnNpdGVQb2xpY2llcyhib29sIGNv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1
aXJrPiwgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3JlOjpIVFRQ
SGVhZGVyRmllbGQ+JiYsIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+JiYsIFdl
YktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5LCBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
PiYmKTsKIAogICAgIGJvb2wgbV9jb250ZW50QmxvY2tlcnNFbmFibGVkIHsgdHJ1ZSB9OwogICAg
IE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiBtX2FsbG93ZWRBdXRvcGxh
eVF1aXJrczsKQEAgLTEyOSw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxXZWJDb3Jl
OjpIVFRQSGVhZGVyRmllbGQ+IG1fbGVnYWN5Q3VzdG9tSGVhZGVyRmllbGRzOwogICAgIFZlY3Rv
cjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+IG1fY3VzdG9tSGVhZGVyRmllbGRzOwogICAg
IFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IG1fcG9wVXBQb2xpY3kgeyBXZWJLaXQ6OldlYnNp
dGVQb3BVcFBvbGljeTo6RGVmYXVsdCB9OwotICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBt
X3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4g
bV93ZWJzaXRlRGF0YVN0b3JlOwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tVXNlckFnZW50Owog
ICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmlj
UXVpcmtzOwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm07CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNpb24gMjQ5
NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDcgKzY5LDYgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiBjbGFz
cyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247CiBjbGFzcyBTZXNzaW9uU3RhdGU7CiBjbGFzcyBV
c2VyU2NyaXB0OwotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIGNsYXNzIFdlYnNpdGVQb2xpY2ll
czsKIGNsYXNzIFdpbmRvd0ZlYXR1cmVzOwogfQpAQCAtMTEzLDYgKzExMiw3IEBAIGNsYXNzIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOwogY2xhc3MgV2ViVGV4dENoZWNrZXI7CiBj
bGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIGNsYXNzIFdlYlZpZXdwb3J0QXR0
cmlidXRlczsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBjbGFzcyBXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbjsKIAogV0tfQUREX0FQSV9NQVBQSU5HKFdLQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VSZWYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpCkBAIC0xNjksNyArMTY5LDcg
QEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlck1lZGlhUGVybWlzc2lvbgogV0tfQUREX0FQSV9N
QVBQSU5HKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYsIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0UHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyU2NyaXB0UmVmLCBBUEk6
OlVzZXJTY3JpcHQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tWaWV3cG9ydEF0dHJpYnV0ZXNSZWYs
IFdlYlZpZXdwb3J0QXR0cmlidXRlcykKLVdLX0FERF9BUElfTUFQUElORyhXS1dlYnNpdGVEYXRh
U3RvcmVSZWYsIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSkKK1dLX0FERF9BUElfTUFQUElORyhXS1dl
YnNpdGVEYXRhU3RvcmVSZWYsIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSkKIFdLX0FERF9BUElf
TUFQUElORyhXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmLCBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZVBv
bGljaWVzUmVmLCBBUEk6OldlYnNpdGVQb2xpY2llcykKIFdLX0FERF9BUElfTUFQUElORyhXS1dp
bmRvd0ZlYXR1cmVzUmVmLCBBUEk6OldpbmRvd0ZlYXR1cmVzKQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFu
YWdlci5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw0
MiArMjYsMTkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLmgiCiAKLSNpbmNsdWRlICJBUElBcnJheS5oIgotI2luY2x1ZGUgIkFQSVdl
YnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJz
aXRlRGF0YVJlY29yZC5oIgotCiBXS1R5cGVJRCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0
VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OkFQSVR5cGUpOworICAgIHJldHVybiAwOwogfQogCi12b2lkIFdLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lucyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0FwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFj
aykKK3ZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5zKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYsIHZvaWQqLCBXS0FwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbikKIHsKLSAgICBhdXRv
JiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dl
YnNpdGVEYXRhU3RvcmVSZWY+KGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyKSktPndlYnNpdGVEYXRh
U3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLmZldGNoRGF0YShXZWJLaXQ6OldlYnNpdGVE
YXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHsgfSwgW2NvbnRleHQsIGNhbGxi
YWNrXShhdXRvIGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmpl
Y3Q+PiBzZWN1cml0eU9yaWdpbnM7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZGF0YVJlY29y
ZCA6IGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6
IGRhdGFSZWNvcmQub3JpZ2lucykKLSAgICAgICAgICAgICAgICBzZWN1cml0eU9yaWdpbnMuYXBw
ZW5kKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkp
OwotICAgICAgICB9Ci0KLSAgICAgICAgY2FsbGJhY2soV2ViS2l0Ojp0b0FQSShBUEk6OkFycmF5
OjpjcmVhdGUoV1RGTW92ZShzZWN1cml0eU9yaWdpbnMpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRl
eHQpOwotICAgIH0pOwogfQogCi12b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVF
bnRyaWVzRm9yT3JpZ2luKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25D
YWNoZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKQordm9pZCBXS0FwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0FwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRh
U3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZj4oYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotCi0g
ICAgV2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgIGRhdGFSZWNvcmQu
YWRkKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwg
V2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotCi0gICAg
d2Vic2l0ZURhdGFTdG9yZS5yZW1vdmVEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpPZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZSwgeyBkYXRhUmVjb3JkIH0sIFtdIHsgfSk7CiB9CiAKLXZv
aWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcikKK3ZvaWQgV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
clJlZikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwocmVp
bnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURh
dGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCAt
V2FsbFRpbWU6OmluZmluaXR5KCksIFtdIHsgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5o
CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE4ICsyNywxOSBA
QAogI2RlZmluZSBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyX2gKIAogI2luY2x1ZGUgPFdlYktp
dC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CiAKICNpZmRlZiBf
X2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotV0tfRVhQT1JUIFdLVHlwZUlEIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRUeXBlSUQoKTsKK1dLX0VYUE9SVCBXS1R5cGVJRCBX
S0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0VHlwZUlEKCkgV0tfQ19BUElfREVQUkVDQVRFRDsK
IAogdHlwZWRlZiB2b2lkICgqV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5zRnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdLRXJyb3JSZWYsIHZvaWQqKTsKLVdL
X0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2lucyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLCB2b2lkKiBjb250ZXh0LCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRp
b25DYWNoZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS0FwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnMoV0tBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwgdm9pZCogY29udGV4dCwg
V0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zRnVuY3Rp
b24gZnVuY3Rpb24pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKLVdLX0VYUE9SVCB2b2lkIFdLQXBw
bGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5S
ZWYgb3JpZ2luKTsKLVdLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxl
dGVBbGxFbnRyaWVzKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIpOworV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0
ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlv
bkNhY2hlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pIFdLX0NfQVBJX0RFUFJF
Q0FURUQ7CitXS19FWFBPUlQgdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlQWxs
RW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGlj
eUxpc3RlbmVyLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
MTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tGcmFtZVBvbGlj
eUxpc3RlbmVyLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVk
ZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVk
ZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94
eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFT
dG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKIAogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ5NzMyKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOTAgKzI2LDM4IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgiCiAKLSNpbmNsdWRlICJB
UElBcnJheS5oIgotI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJBUElXZWJz
aXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKLSNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVJlY29yZC5oIgotI2luY2x1ZGUgIldl
YnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi11c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRUeXBl
SUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OkFQSVR5cGUp
OworICAgIHJldHVybiAwOwogfQogCiBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJHZXRPcmlnaW5LZXkoKQogewotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpT
dHJpbmc6OmNyZWF0ZSgiV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclN0b3JhZ2VEZXRhaWxzT3Jp
Z2luS2V5IikubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAogV0tTdHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0Q3Jl
YXRpb25UaW1lS2V5KCkKIHsKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3Ry
aW5nOjpjcmVhdGUoIldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJTdG9yYWdlRGV0YWlsc0NyZWF0
aW9uVGltZUtleSIpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdl
dE1vZGlmaWNhdGlvblRpbWVLZXkoKQogewotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0g
QVBJOjpTdHJpbmc6OmNyZWF0ZSgiV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclN0b3JhZ2VEZXRh
aWxzTW9kaWZpY2F0aW9uVGltZUtleSIpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtl
eSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYg
a2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uIGNhbGxiYWNrKQotCit2b2lk
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMoV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmLCB2b2lkKiwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0
S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRh
U3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGtl
eVZhbHVlU3RvcmFnZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVE
YXRhU3RvcmUuZmV0Y2hEYXRhKHsgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIFdlYnNp
dGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UgfSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdKGF1
dG8gZGF0YVJlY29yZHMpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNl
Y3VyaXR5T3JpZ2luczsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0
YVJlY29yZHMpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJl
Y29yZC5vcmlnaW5zKQotICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy5hcHBlbmQoQVBJ
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92
ZShzZWN1cml0eU9yaWdpbnMpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwotICAgIH0pOwog
fQogCi12b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmln
aW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIHZv
aWQqIGNvbnRleHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlP
cmlnaW5GdW5jdGlvbiBjYWxsYmFjaykKK3ZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0
U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYsIHZvaWQq
LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rp
b24pCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVycHJldF9j
YXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oa2V5VmFsdWVTdG9yYWdlTWFuYWdlcikpLT53ZWJz
aXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5nZXRMb2NhbFN0b3JhZ2VEZXRh
aWxzKFtjb250ZXh0LCBjYWxsYmFja10oYXV0byYmIGRldGFpbHMpIHsKLSAgICAgICAgVmVjdG9y
PFJlZlB0cjxBUEk6Ok9iamVjdD4+IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0LnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoZGV0YWlscy5zaXplKCkpOwotCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZGV0YWlsIDogZGV0YWlscykgewotICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxB
UEk6Ok9iamVjdD4+IGRldGFpbE1hcDsKLSAgICAgICAgICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4g
b3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihkZXRhaWwub3JpZ2luSWRlbnRpZmllcikt
PnNlY3VyaXR5T3JpZ2luKCkpOwotCi0gICAgICAgICAgICBkZXRhaWxNYXAuc2V0KHRvSW1wbChX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkoKSktPnN0cmluZygpLCBvcmlnaW4p
OwotICAgICAgICAgICAgaWYgKGRldGFpbC5jcmVhdGlvblRpbWUpCi0gICAgICAgICAgICAgICAg
ZGV0YWlsTWFwLnNldCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0Q3JlYXRpb25U
aW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShkZXRhaWwuY3JlYXRpb25U
aW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpKTsKLSAgICAgICAgICAgIGlmIChkZXRh
aWwubW9kaWZpY2F0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxNYXAuc2V0KHRvSW1w
bChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1lS2V5KCkpLT5zdHJp
bmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShkZXRhaWwubW9kaWZpY2F0aW9uVGltZS0+c2Vjb25k
c1NpbmNlRXBvY2goKS52YWx1ZSgpKSk7Ci0KLSAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRB
cHBlbmQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShkZXRhaWxNYXApKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92
ZShyZXN1bHQpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwotICAgIH0pOwogfQogCi12b2lk
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmln
aW5SZWYgb3JpZ2luKQordm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVFbnRyaWVz
Rm9yT3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJl
ZikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nh
c3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSktPndlYnNp
dGVEYXRhU3RvcmUoKTsKLSAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgIGRh
dGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlLCB0b0ltcGwob3JpZ2lu
KS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNpdGVE
YXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigp
LmRhdGEoKSk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1vdmVEYXRhKHsgV2Vic2l0ZURhdGFU
eXBlOjpMb2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UgfSwgeyBk
YXRhUmVjb3JkIH0sIFtdIHsgfSk7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
RGVsZXRlQWxsRW50cmllcyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9y
YWdlTWFuYWdlcikKK3ZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmll
cyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYpCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFT
dG9yZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oa2V5
VmFsdWVTdG9yYWdlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0ZURh
dGFTdG9yZS5yZW1vdmVEYXRhKHsgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIFdlYnNp
dGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UgfSwgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbXSB7
IH0pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNywzMCArMjcsMzEgQEAKICNkZWZpbmUgV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyX2gKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQv
V0tEZXByZWNhdGVkLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5k
aWYKIAotV0tfRVhQT1JUIFdLVHlwZUlEIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJ
RCgpOworV0tfRVhQT1JUIFdLVHlwZUlEIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJ
RCgpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5cGU6IFdLU2VjdXJpdHlPcmln
aW5SZWYgKi8KLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRPcmlnaW5LZXkoKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJHZXRPcmlnaW5LZXkoKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAvKiBWYWx1ZSB0eXBl
OiBXS0RvdWJsZVJlZiwgc2Vjb25kcyBzaW5jZSBKYW51YXJ5IDFzdCwgMTk3MCBVVEMgKi8KLVdL
X0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRp
bWVLZXkoKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRDcmVhdGlvblRpbWVLZXkoKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAvKiBWYWx1ZSB0eXBl
OiBXS0RvdWJsZVJlZiwgc2Vjb25kcyBzaW5jZSBKYW51YXJ5IDFzdCwgMTk3MCBVVEMgKi8KLVdL
X0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRp
b25UaW1lS2V5KCk7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKIHR5cGVk
ZWYgdm9pZCAoKldLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdp
bnNGdW5jdGlvbikoV0tBcnJheVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZv
aWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29u
dGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1
bmN0aW9uIGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtl
eVZhbHVlU3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbikgV0tfQ19BUElf
REVQUkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0
U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmLCB2
b2lkKik7Ci1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdl
RGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9y
YWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24gZnVuY3Rpb24pOworV0tfRVhQT1JUIHZvaWQgV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwg
V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1bmN0aW9u
IGZ1bmN0aW9uKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCi1XS19FWFBPUlQgdm9pZCBXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdl
TWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9y
aWdpbik7Ci1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxF
bnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
KTsKK1dLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNG
b3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFn
ZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKSBXS19DX0FQSV9ERVBSRUNBVEVEOworV0tf
RVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlcikgV0tfQ19BUElf
REVQUkVDQVRFRDsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNw
cAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDY3ICsyNiwxOSBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldLUmVzb3VyY2VDYWNoZU1hbmFnZXIu
aCIKIAotI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9y
ZS5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhUmVjb3Jk
LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLUmVzb3VyY2VDYWNo
ZU1hbmFnZXJHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OkFQSVR5cGUpOwotfQotCi1zdGF0aWMgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
dG9XZWJzaXRlRGF0YVR5cGVzKFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIp
Ci17Ci0gICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcyB7IFdl
YnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUgfTsKLQotICAgIGlmIChjYWNoZXNUb0NsZWFyID09
IFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyQWxsKQotICAgICAgICB3ZWJzaXRlRGF0YVR5cGVzLmFk
ZChXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSk7Ci0KLSAgICByZXR1cm4gd2Vic2l0ZURhdGFU
eXBlczsKKyAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0
Q2FjaGVPcmlnaW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5hZ2VyLCB2b2lk
KiBjb250ZXh0LCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zRnVuY3Rpb24g
Y2FsbGJhY2spCit2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMoV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlclJlZiwgdm9pZCosIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRD
YWNoZU9yaWdpbnNGdW5jdGlvbikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9J
bXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihjYWNoZU1hbmFnZXIp
KS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUuZmV0Y2hEYXRhKHRv
V2Vic2l0ZURhdGFUeXBlcyhXS1Jlc291cmNlQ2FjaGVzVG9DbGVhckFsbCksIHsgfSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShhdXRvIGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8
QVBJOjpPYmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IG9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykKLSAgICAgICAgICAgICAgICBzZWN1cml0eU9y
aWdpbnMuYXBwZW5kKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvcmlnaW4uc2VjdXJpdHlP
cmlnaW4oKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FsbGJhY2sodG9BUEkoQVBJOjpBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoc2VjdXJpdHlPcmlnaW5zKSkucHRyKCkpLCBudWxscHRyLCBjb250
ZXh0KTsKLSAgICB9KTsKIH0KIAotdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNo
ZUZvck9yaWdpbihXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwgV0tTZWN1
cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xl
YXIpCit2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2luKFdLUmVz
b3VyY2VDYWNoZU1hbmFnZXJSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLUmVzb3VyY2VDYWNo
ZXNUb0NsZWFyKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRl
cnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGNhY2hlTWFuYWdlcikpLT53ZWJzaXRl
RGF0YVN0b3JlKCk7Ci0KLSAgICBWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFSZWNvcmRz
OwotCi0gICAgewotICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgICAg
ICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlLCB0b0ltcGwob3Jp
Z2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotCi0gICAgICAgIGRhdGFSZWNvcmRzLmFw
cGVuZChkYXRhUmVjb3JkKTsKLSAgICB9Ci0KLSAgICBpZiAoY2FjaGVzVG9DbGVhciA9PSBXS1Jl
c291cmNlQ2FjaGVzVG9DbGVhckFsbCkgewotICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRh
UmVjb3JkOwotICAgICAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNo
ZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKLQotICAgICAgICBk
YXRhUmVjb3Jkcy5hcHBlbmQoZGF0YVJlY29yZCk7Ci0gICAgfQotCi0gICAgd2Vic2l0ZURhdGFT
dG9yZS5yZW1vdmVEYXRhKHRvV2Vic2l0ZURhdGFUeXBlcyhjYWNoZXNUb0NsZWFyKSwgZGF0YVJl
Y29yZHMsIFtdIHsgfSk7CiB9CiAKLXZvaWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2Fj
aGVGb3JBbGxPcmlnaW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5hZ2VyLCBX
S1Jlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKQordm9pZCBXS1Jlc291cmNlQ2Fj
aGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFsbE9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJl
ZiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9y
ZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oY2FjaGVN
YW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92
ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKGNhY2hlc1RvQ2xlYXIpLCAtV2FsbFRpbWU6OmluZmlu
aXR5KCksIFtdIHsgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oCShyZXZpc2lvbiAyNDk3MzIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgV0tSZXNvdXJjZUNhY2hl
TWFuYWdlcl9oCiAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0
L1dLRGVwcmVjYXRlZC5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAt
MzgsMTMgKzM5LDEzIEBAIGVudW0gewogfTsKIHR5cGVkZWYgdWludDMyX3QgV0tSZXNvdXJjZUNh
Y2hlc1RvQ2xlYXI7CiAKLVdLX0VYUE9SVCBXS1R5cGVJRCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2Vy
R2V0VHlwZUlEKCk7CitXS19FWFBPUlQgV0tUeXBlSUQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdl
dFR5cGVJRCgpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKIHR5cGVkZWYgdm9pZCAoKldLUmVzb3Vy
Y2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnNGdW5jdGlvbikoV0tBcnJheVJlZiwgV0tFcnJv
clJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENh
Y2hlT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNvbnRleHRSZWYsIHZvaWQqIGNv
bnRleHQsIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnNGdW5jdGlvbiBmdW5j
dGlvbik7CitXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmln
aW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY29udGV4dFJlZiwgdm9pZCogY29udGV4dCwg
V0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKSBX
S19DX0FQSV9ERVBSRUNBVEVEOwogCi1XS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyQ2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFu
Z2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIg
Y2FjaGVzVG9DbGVhcik7Ci1XS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xl
YXJDYWNoZUZvckFsbE9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFn
ZXIsIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpOworV0tfRVhQT1JUIHZv
aWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4oV0tSZXNvdXJjZUNh
Y2hlTWFuYWdlclJlZiBjYWNoZU1hbmdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdL
UmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7
CitXS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFsbE9y
aWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIFdLUmVzb3VyY2VD
YWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKICNpZmRl
ZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmgiCiAKICNpbmNsdWRlICJBUElBcnJheS5oIgotI2luY2x1ZGUgIkFQSVdlYnNp
dGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKICNpbmNsdWRl
ICJNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiU2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCkBAIC00MSwy
OSArNDEsMzAgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVJlY29yZC5oIgorI2luY2x1
ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNp
bmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgog
CiBXS1R5cGVJRCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRUeXBlSUQoKQogewotICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpBUElUeXBlKTsKIH0KIAog
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUdldERlZmF1bHREYXRhU3Rv
cmUoKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKSk7CiB9CiAKIFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVOb25QZXJzaXN0ZW50
RGF0YVN0b3JlKCkKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkubGVha1JlZigpKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25Q
ZXJzaXN0ZW50KCkubGVha1JlZigpKTsKIH0KIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vi
c2l0ZURhdGFTdG9yZUNyZWF0ZVdpdGhDb25maWd1cmF0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbikKIHsKICAgICBhdXRvIHNlc3Npb25JRCA9IFdl
YktpdDo6dG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5pc1BlcnNpc3RlbnQoKSA/IFBBTDo6U2Vzc2lv
bklEOjpnZW5lcmF0ZVBlcnNpc3RlbnRTZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpnZW5l
cmF0ZUVwaGVtZXJhbFNlc3Npb25JRCgpOwotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZSgqV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJhdGlvbiks
IHNlc3Npb25JRCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoKldlYktpdDo6dG9JbXBsKGNvbmZpZ3VyYXRpb24p
LCBzZXNzaW9uSUQpLmxlYWtSZWYoKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgYm9vbCBlbmFibGUpCkBAIC04MywxMyArODQsMTMgQEAgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdAogCiBXS0hUVFBDb29raWVTdG9yZVJlZiBXS1dlYnNp
dGVEYXRhU3RvcmVHZXRIVFRQQ29va2llU3RvcmUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+aHR0cENvb2tpZVN0b3JlKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJ
KCZXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5jb29raWVTdG9yZSgpKTsKIH0KIAogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlV2l0
aENvbXBsZXRpb25IYW5kbGVyKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJv
b2wgZW5hYmxlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVi
dWdNb2RlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJz
aXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGUs
IFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoZW5hYmxlLCBbY29u
dGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29u
dGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMTAwLDcgKzEwMSw3IEBAIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3QKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWJ1Z01vZGVGdW5jdGlvbiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQcmV2
YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3Qp
LT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBs
ZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAg
IH0pOwogI2Vsc2UKQEAgLTExMCw3ICsxMTEsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFJlc291cmNlTG9hZFN0CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0
U2VlbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0
LCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc0xhc3RTZWVuRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TGFzdFNlZW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY29tcGxl
dGlvbkhhbmRsZXJdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRMYXN0
U2VlbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFNlY29uZHMg
eyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0xMjEsNyArMTIyLDcg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTGFzdAogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRnVu
Y3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHdlYnNpdGVEYXRhU3Rv
cmUgPSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKTsKIAogICAgIGlmICh2YWx1ZSkKICAg
ICAgICAgd2Vic2l0ZURhdGFTdG9yZS5zZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxl
cl0gewpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc1ByZXYKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxl
bnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1Jl
ZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0
aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBhdXRvJiB3ZWJzaXRl
RGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpOworICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKTsKIAogICAgIGlmICh2YWx1ZSkKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS5zZXRW
ZXJ5UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3Ry
aW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKQEAgLTE1Nyw3ICsxNTgsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NWZXJ5CiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53
ZWJzaXRlRGF0YVN0b3JlKCkuZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoW2NvbnRleHQsIGNh
bGxiYWNrXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSB7CisgICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoW2Nv
bnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSB7
CiAgICAgICAgIGNhbGxiYWNrKFdlYktpdDo6dG9BUEkocmVzb3VyY2VMb2FkU3RhdGlzdGljcy5p
bXBsKCkpLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0xNjgsNyArMTY5LDcgQEAgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVEdW1wUmVzb3VyY2VMb2FkUwogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZ1bmN0aW9uIGNhbGxiYWNrKQog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmlzUHJldmFsZW50UmVzb3VyY2Uo
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2Fs
bGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSkgeworICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRS
ZXNvdXJjZSkgewogICAgICAgICBjYWxsYmFjayhpc1ByZXZhbGVudFJlc291cmNlLCBjb250ZXh0
KTsKICAgICB9KTsKICNlbHNlCkBAIC0xNzksNyArMTgwLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NQcmV2YQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3Rp
Y3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNT
dGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10o
Ym9vbCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSkgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPmlzVmVyeVByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzVmVyeVByZXZh
bGVudFJlc291cmNlKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzVmVyeVByZXZhbGVudFJlc291cmNl
LCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0xOTAsNyArMTkxLDcgQEAgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIHN1YnJlc291cmNlSG9zdCwgV0tTdHJpbmdS
ZWYgdG9wRnJhbWVIb3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJj
ZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikg
eworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzUmVnaXN0ZXJlZEFzU3VicmVz
b3VyY2VVbmRlcihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHN1YnJlc291cmNlSG9zdCktPnN0
cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmco
KSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXIpIHsKICAgICAgICAgY2FsbGJhY2soaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyLCBj
b250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yMDEsNyArMjAyLDcgQEAgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpcwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0
YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIHN1YkZyYW1lSG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJh
bWVIb3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdp
c3RlcmVkQXNTdWJGcmFtZVVuZGVyRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNr
XShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcikgeworICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKHN1YkZyYW1lSG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9v
bCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpIHsKICAgICAgICAgY2FsbGJhY2soaXNSZWdp
c3RlcmVkQXNTdWJGcmFtZVVuZGVyLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yMTIs
NyArMjEzLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpcwogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1Rv
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3RSZWRp
cmVjdGVkRnJvbSwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbywgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUb0Z1
bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmlz
UmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RS
ZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdp
c3RlcmVkQXNSZWRpcmVjdGluZ1RvKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBs
KGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBp
c1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8pIHsKICAgICAgICAgY2FsbGJhY2soaXNSZWdpc3Rl
cmVkQXNSZWRpcmVjdGluZ1RvLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yMjMsNyAr
MjI0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpcwogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFs
dWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNIYWRVc2Vy
SW50ZXJhY3Rpb25GdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIGRhdGFTdG9yZSA9IFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvJiBkYXRhU3Rv
cmUgPSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKTsKIAogICAgIGlmICh2YWx1ZSkKICAg
ICAgICAgZGF0YVN0b3JlLmxvZ1VzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewpAQCAt
MjQxLDcgKzI0Miw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0hhc0gK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9u
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRl
cmFjdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFT
dG9yZSgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNIYWRVc2VySW50ZXJh
Y3Rpb24pIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5oYXNIYWRVc2VySW50
ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29u
dGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKSB7CiAgICAgICAgIGNh
bGxiYWNrKGhhc0hhZFVzZXJJbnRlcmFjdGlvbiwgY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpA
QCAtMjUyLDE0ICsyNTMsMTQgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NI
YXNIYQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29s
IHZhbHVlKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEdyYW5kZmF0
aGVyZWQoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCB2YWx1ZSwg
W10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRHcmFuZGZhdGhl
cmVkKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgdmFsdWUsIFtd
IHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NH
cmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dy
YW5kZmF0aGVyZWRGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNHcmFuZGZhdGhl
cmVkKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aGFzSGFkVXNlckludGVy
YWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShib29sIGlzR3JhbmRmYXRoZXJlZCkgewogICAgICAgICBjYWxsYmFjayhp
c0dyYW5kZmF0aGVyZWQsIGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTI3MCw0OSArMjcx
LDQ5IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmQKIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0
cmluZ1JlZiB0b3BGcmFtZUhvc3QpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhv
c3QpLT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhv
c3QpLT5zdHJpbmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVm
IHRvcEZyYW1lSG9zdCkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCkt
PnN0cmluZygpKSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5z
ZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9z
dCktPnN0cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9z
dFJlZGlyZWN0ZWRUbykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8p
LT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3Rl
ZFRvKS0+c3RyaW5nKCkpLCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVm
IGhvc3RSZWRpcmVjdGVkRnJvbSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KS5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGly
ZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2Vi
S2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRv
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdL
U3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8pCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0
YVN0b3JlKCkuc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVk
aXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJl
ZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmlu
Z1JlZiBob3N0UmVkaXJlY3RlZEZyb20pCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkuc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRp
cmVjdGVkRnJvbSktPnN0cmluZygpKSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29y
YXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgZnJv
bUhvc3QsIFdLU3RyaW5nUmVmIHRvSG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25GdW5jdGlvbiBj
YWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRDcm9zc1Np
dGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGZyb21Ib3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvSG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rp
bmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChmcm9tSG9zdCktPnN0cmluZygpKSwgVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbCh0b0hvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFj
a10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0zMjMs
NyArMzI0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvcwogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcywgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2Vy
SW50ZXJhY3Rpb25GdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMgeyBzZWNvbmRz
IH0sIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHNlY29uZHMgfSwgW2Nv
bnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwog
I2Vsc2UKQEAgLTMzNCw3ICszMzUsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NUaW1lCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcm9jZXNzU3RhdGlz
dGljc0FuZERhdGFSZWNvcmRzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGlj
c0FuZERhdGFSZWNvcmRzRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJz
aXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5n
KFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhbY29udGV4dCwgY2Fs
bGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAt
MzQ1LDcgKzM0Niw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3MK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZ0Z1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxl
Q29va2llQmxvY2tpbmdVcGRhdGUoW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSgpIHsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBk
YXRlKFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0oKSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTM1NiwyMSArMzU3LDIxIEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUMKIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnN1Ym1pdFRl
bGVtZXRyeSgpOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnN1Ym1pdFRlbGVt
ZXRyeSgpOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHZhbHVl
LCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUsIFtdIHsgfSk7CiAjZW5kaWYKIH0K
IAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5nVGVzdChXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5nVGVzdEZ1bmN0aW9uIGNh
bGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldElzUnVubmlu
Z1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KHZhbHVlLCBbY29udGV4dCwgY2FsbGJhY2tdIHsK
KyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRJc1J1bm5pbmdSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGVzdCh2YWx1ZSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNh
bGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTM4MSw0OSArMzgyLDQ5IEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0lzUnUKIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29y
ZHNSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wgdmFsdWUp
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U2hvdWxkQ2xhc3NpZnlS
ZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwodmFsdWUsIFtdKCkgeyB9KTsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0Jl
Zm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSwgW10oKSB7IH0pOwogI2VuZGlmCiB9CiAKIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRy
eVdhc0NhcHR1cmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wgdmFs
dWUpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0Tm90aWZ5UGFnZXNX
aGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQodmFsdWUsIFtdKCkgeyB9KTsKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT5zZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZCh2YWx1ZSwgW10oKSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcykKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jk
c1JlbW92YWwoU2Vjb25kcyB7IHNlY29uZHMgfSwgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3Zh
bChTZWNvbmRzIHsgc2Vjb25kcyB9LCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJpbmdUaW1lKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzKQogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzIHsgc2Vj
b25kcyB9LCBbXSgpIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0
R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtdKCkgeyB9KTsKICNlbmRp
ZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNYXhTdGF0aXN0aWNz
RW50cmllcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB1bnNpZ25lZCBlbnRy
aWVzKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE1heFN0YXRpc3Rp
Y3NFbnRyaWVzKGVudHJpZXMsIFtdKCkgeyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT5zZXRNYXhTdGF0aXN0aWNzRW50cmllcyhlbnRyaWVzLCBbXSgpIHsgfSk7CiAjZW5k
aWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJ1bmVFbnRyaWVz
RG93blRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVkIGVudHJp
ZXMpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UHJ1bmVFbnRyaWVz
RG93blRvKGVudHJpZXMsIFtdKCkgeyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5zZXRQcnVuZUVudHJpZXNEb3duVG8oZW50cmllcywgW10oKSB7IH0pOwogI2VuZGlmCiB9
CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50U3RvcmUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29u
dGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50U3RvcmVGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRh
U3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdlYktpdDo6U2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CisgICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudChXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzLCBbY29udGV4
dCwgY2FsbGJhY2tdKCkgewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNl
bHNlCkBAIC00MzQsNyArNDM1LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
Q2xlYXJJbgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3VycyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmLCB1bnNpZ25lZCBob3Vycywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNp
bmNlSG91cnNGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRh
U3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lOjpub3co
KSAtIFNlY29uZHM6OmZyb21Ib3Vycyhob3VycyksIFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CisgICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxs
VGltZTo6bm93KCkgLSBTZWNvbmRzOjpmcm9tSG91cnMoaG91cnMpLCBXZWJLaXQ6OlNob3VsZEdy
YW5kZmF0aGVyU3RhdGlzdGljczo6WWVzLCBbY29udGV4dCwgY2FsbGJhY2tdKCkgewogICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00NDUsNyArNDQ2LDcgQEAg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbgogdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxGdW5jdGlvbiBjYWxs
YmFjaykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBl
cyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVE
YXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKDApLCBbY29udGV4dCwgY2Fs
bGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRh
dGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKDApLCBbY29udGV4dCwgY2FsbGJhY2td
IHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC00NTMsNyArNDU0
LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaAogdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRl
SHR0cE9ubHlDb29raWVzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kZWxldGVDb29raWVzRm9yVGVzdGluZyhVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIGluY2x1ZGVIdHRwT25seUNvb2tp
ZXMsIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgW2NvbnRleHQsIGNhbGxiYWNr
XSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTQ2NCw3
ICs0NjUsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDCiB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZUZ1bmN0aW9uIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhhc0xvY2FsU3RvcmFn
ZUZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzTG9jYWxTdG9yYWdlKSB7CisgICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+aGFzTG9jYWxTdG9yYWdlRm9yVGVzdGluZyhVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9v
bCBoYXNMb2NhbFN0b3JhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soaGFzTG9jYWxTdG9yYWdlLCBj
b250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00NzUsNyArNDc2LDcgQEAgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVz
b3VyY2VzKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00ODYsNyArNDg3LDcgQEAg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaAogdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb25GdW5jdGlvbiBjYWxsYmFjaykK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5oYXNJc29sYXRlZFNlc3Npb25G
b3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2Nv
bnRleHQsIGNhbGxiYWNrXShib29sIGhhc0lzb2xhdGVkU2Vzc2lvbikgeworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0lzb2xhdGVkU2Vzc2lvbkZvclRlc3RpbmcoVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2td
KGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9uKSB7CiAgICAgICAgIGNhbGxiYWNrKGhhc0lzb2xhdGVk
U2Vzc2lvbiwgY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTAxLDcgKzUwMiw3IEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG8KICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAKLSAgICBhdXRvJiBzdG9yZSA9IFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvJiBzdG9y
ZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpOwogICAgIHN0b3JlLmNsZWFyUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0luV2ViUHJvY2Vzc2VzKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIHN0b3JlLnJlc2V0Q2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRDcm9zc1NpdGVMb2Fk
c1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CkBAIC01MTYsNyArNTE3LDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUbwogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVSZW1vdmVBbGxGZXRjaENhY2hlcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hlUmVtb3Zh
bEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlOwotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVE
YXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2td
IHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBl
cywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAg
Y2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC01MjgsNyArNTI5LDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hlRgogICAgIFZlY3RvcjxXZWJLaXQ6Oldl
YnNpdGVEYXRhUmVjb3JkPiBkYXRhUmVjb3JkcyA9IHsgV1RGTW92ZShkYXRhUmVjb3JkKSB9Owog
CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJL
aXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCBkYXRhUmVj
b3JkcywgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+cmVtb3ZlRGF0YShkYXRhVHlwZXMsIGRhdGFSZWNvcmRzLCBbY29udGV4dCwgY2FsbGJh
Y2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC01MzYsNyAr
NTM3LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hlRgogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVJl
bW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXM7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6
OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCks
IFtjb250ZXh0LCBjYWxsYmFja10gewogICAgIGlmIChjYWxsYmFjaykKICAgICAgICAgY2FsbGJh
Y2soY29udGV4dCk7CiAgICAgfSk7CkBAIC01NDUsNyArNTQ2LDcgQEAgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVM
b2NhbFN0b3JhZ2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29u
dGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlQ2FsbGJhY2sgY2FsbGJh
Y2spCiB7CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMg
PSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlOwotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBl
cywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1l
OjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgaWYgKGNhbGxiYWNr
KQogICAgICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CkBAIC01NTUsNyArNTU2
LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxTZXJ2aWNlVwogewogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uczsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0
YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2Nv
bnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+cmVt
b3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxi
YWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTU2
Niw3ICs1NjcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXCiAK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnMoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
R2V0RmV0Y2hDYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZmV0Y2hEYXRhKFdlYktpdDo6
V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdIChhdXRv
IGRhdGFSZWNvcmRzKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZmV0Y2hE
YXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgeyB9LCBbY29udGV4dCwgY2Fs
bGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpP
YmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZGF0YVJl
Y29yZCA6IGRhdGFSZWNvcmRzKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdp
biA6IGRhdGFSZWNvcmQub3JpZ2lucykKQEAgLTU4MCw3ICs1ODEsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplCiB7CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zID0gV2ViS2l0OjpXZWJzaXRlRGF0YUZl
dGNoT3B0aW9uOjpDb21wdXRlU2l6ZXM7CiAKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBl
OjpET01DYWNoZSwgZmV0Y2hPcHRpb25zLCBbb3JpZ2luLCBjb250ZXh0LCBjYWxsYmFja10gKGF1
dG8gZGF0YVJlY29yZHMpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5mZXRj
aERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBmZXRjaE9wdGlvbnMsIFtv
cmlnaW4sIGNvbnRleHQsIGNhbGxiYWNrXSAoYXV0byBkYXRhUmVjb3JkcykgewogICAgICAgICBh
dXRvIG9yaWdpbkRhdGEgPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zdHJpbmcoKSktPmRhdGEoKTsKICAgICAgICAgZm9y
IChhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKICAgICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgcmVjb3JkT3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKSB7CkBAIC01OTcsMjMg
KzU5OCwyMyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplCiAKIFdL
U3RyaW5nUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNvcHlTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpCiB7Ci0gICAgcmV0
dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKIH0KIAogdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkoV2ViS2l0Ojp0b0ltcGwoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSktPnN0
cmluZygpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdlYktpdDo6dG9JbXBsKHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkpLT5zdHJpbmcoKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIHVpbnQ2NF90IHF1b3RhKQogewotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEocXVvdGEpOwor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFBlck9yaWdpblN0b3JhZ2VRdW90
YShxdW90YSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZpY2VPcmll
bnRhdGlvblBlcm1pc3Npb25zKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYpCiB7
CiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25B
Y2Nlc3NDb250cm9sbGVyKCkuY2xlYXJQZXJtaXNzaW9ucygpOworICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPmRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxl
cigpLmNsZWFyUGVybWlzc2lvbnMoKTsKICNlbmRpZgogfQogCkBAIC03MTMsMTQgKzcxNCwxNCBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFdlYkF1dGhlbnRpY2F0CiAgICAgICAgIGNvbmZp
Z3VyYXRpb24ubmZjID0gV1RGTW92ZShuZmMpOwogICAgIH0KIAotICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpOworICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
V1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVDbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbnNUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92
YWxGdW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpBZENsaWNrQXR0cmli
dXRpb25zOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKDApLCBb
Y29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5y
ZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKDApLCBbY29udGV4
dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9s
aWNpZXMuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyICsyNywx
MiBAQAogI2luY2x1ZGUgIldLV2Vic2l0ZVBvbGljaWVzLmgiCiAKICNpbmNsdWRlICJBUElEaWN0
aW9uYXJ5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkFQ
SVdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldL
QXJyYXkuaCIKICNpbmNsdWRlICJXS0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS1JldGFpblB0
ci5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY3VybC9XS1dlYnNp
dGVEYXRhU3RvcmVSZWZDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwuY3BwCShyZXZpc2lvbiAy
NDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZkN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5oIgog
Ci0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQ
cm94eVNldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQko
cmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkobm9uZXhpc3RlbnQpCkBAIC0xLDE5NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFQSVdl
YnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKLSNpbmNs
dWRlICJTYW5kYm94VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+Ci0jaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLQotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0jaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgotI2VuZGlm
Ci0KLW5hbWVzcGFjZSBBUEkgewotCi1OU1N0cmluZyAqV2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZh
dWx0c0tleSA9IEAiV2ViRGF0YWJhc2VEaXJlY3RvcnkiOwotTlNTdHJpbmcgKldlYlN0b3JhZ2VE
aXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoUHJl
ZmVyZW5jZUtleSI7Ci1OU1N0cmluZyAqV2ViS2l0TWVkaWFDYWNoZURpcmVjdG9yeURlZmF1bHRz
S2V5ID0gQCJXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5IjsKLU5TU3RyaW5nICpXZWJLaXRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkiOwotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICAvLyBUaGlzIHF1aXJrIHVzZWQgdG8gbWFrZSB0aGVzZSBhcHBzIHNoYXJlIGFwcGxpY2F0aW9u
IGNhY2hlIHN0b3JhZ2UsIGJ1dCBkb2Vzbid0IGFjY29tcGxpc2ggdGhhdCBhbnkgbW9yZS4KLSAg
ICAvLyBQcmVzZXJ2aW5nIGl0IGF2b2lkcyB0aGUgbmVlZCB0byBtaWdyYXRlIGRhdGEgd2hlbiB1
cGdyYWRpbmcuCi0gICAgLy8gRklYTUU6IElkZWFsbHkgd2Ugc2hvdWxkIGp1c3QgaGF2ZSBTYWZh
cmksIFdlYkFwcCwgYW5kIHdlYmJvb2ttYXJrc2QgY3JlYXRlIGEgZGF0YSBzdG9yZSB3aXRoCi0g
ICAgLy8gdGhpcyBhcHBsaWNhdGlvbiBjYWNoZSBwYXRoLCBidXQgdGhhdCdzIG5vdCBzdXBwb3J0
ZWQgYXMgb2YgcmlnaHQgbm93LgotICAgIGlmIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNN
b2JpbGVTYWZhcmkoKSB8fCBXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJBcHAoKSB8fCBX
ZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJCb29rbWFya3NEKCkpIHsKLSAgICAgICAgTlNT
dHJpbmcgKmNhY2hlUGF0aCA9IFtOU0hvbWVEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJMaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2ViQXBwQ2FjaGUiXTsKLQot
ICAgICAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNh
Y2hlUGF0aC5zdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoKTsKLSAgICB9Ci0jZW5kaWYKLQotICAg
IHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiT2ZmbGluZVdl
YkFwcGxpY2F0aW9uQ2FjaGUiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJDYWNoZVN0b3JhZ2UiKTsKLX0KLQotV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCi17
Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJOZXR3
b3JrQ2FjaGUiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1l
ZGlhQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKCJNZWRpYUNhY2hlIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0
dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJJbmRleGVk
REIiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiU2VydmljZVdvcmtlcnMiKTsKLX0KLQotV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCi17
Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KCJMb2NhbFN0b3JhZ2UiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0
YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTWVkaWFLZXlzIik7Ci19Ci0KLVdU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKCJXZWJTUUwiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJz
aXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQotewotICAgIHJldHVybiB0ZW1wRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJKYXZhU2NyaXB0Q29yZURlYnVnIiwgRG9udENy
ZWF0ZURpcmVjdG9yeSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OnRlbXBE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVj
dG9yeU5hbWUsIFNob3VsZENyZWF0ZURpcmVjdG9yeSBzaG91bGRDcmVhdGVEaXJlY3RvcnkpCi17
Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgc3RhdGljIE5TVVJM
ICp0ZW1wVVJMOwotICAgIAotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAg
ICAgTlNVUkwgKnVybCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6TlNUZW1wb3JhcnlEaXJlY3Rv
cnkoKSBpc0RpcmVjdG9yeTpZRVNdOwotICAgICAgICBpZiAoIXVybCkKLSAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIAotICAgICAgICBpZiAoIVdlYktp
dDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxl
SWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOwotICAg
ICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgIGJ1bmRsZUlk
ZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7Ci0gICAg
ICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVu
dGlmaWVyIGlzRGlyZWN0b3J5OllFU107Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRl
bXBVUkwgPSBbW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGly
ZWN0b3J5OllFU10gcmV0YWluXTsKLSAgICB9KTsKLSAgICAKLSAgICBOU1VSTCAqdXJsID0gW3Rl
bXBVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rv
cnk6WUVTXTsKLQotICAgIGlmIChzaG91bGRDcmVhdGVEaXJlY3RvcnkgPT0gQ3JlYXRlRGlyZWN0
b3J5Ci0gICAgICAgICYmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVE
aXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1
dGVzOm5pbCBlcnJvcjpudWxscHRyXSkpCi0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNy
ZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwotICAgIAotICAgIHJldHVybiB1cmwuYWJzb2x1dGVV
UkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQotewotICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNl
X3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBOU1VSTCAqY2FjaGVVUkw7Ci0KLSAgICBkaXNwYXRj
aF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIE5TVVJMICp1cmwgPSBbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9yeTpOU0NhY2hlc0RpcmVjdG9yeSBpbkRv
bWFpbjpOU1VzZXJEb21haW5NYXNrIGFwcHJvcHJpYXRlRm9yVVJMOm51bGxwdHIgY3JlYXRlOk5P
IGVycm9yOm51bGxwdHJdOwotICAgICAgICBpZiAoIXVybCkKLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXND
b250YWluZXIoKSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlmICgh
YnVuZGxlSWRlbnRpZmllcikKLSAgICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVyID0gW05T
UHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOwotICAgICAgICAgICAgdXJsID0g
W3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBpc0RpcmVj
dG9yeTpZRVNdOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FjaGVVUkwgPSBbW3VybCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsK
LSAgICB9KTsKLQotICAgIE5TVVJMICp1cmwgPSBbY2FjaGVVUkwgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKLSAgICBpZiAoIVtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJ
bnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0p
Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwp
OwotCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbjsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgc3Rh
dGljIE5TVVJMICp3ZWJzaXRlRGF0YVVSTDsKLQotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tl
biwgXnsKLSAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gVVJMRm9yRGlyZWN0b3J5Ok5TTGlicmFyeURpcmVjdG9yeSBpbkRvbWFpbjpOU1VzZXJEb21h
aW5NYXNrIGFwcHJvcHJpYXRlRm9yVVJMOm51bGxwdHIgY3JlYXRlOk5PIGVycm9yOm51bGxwdHJd
OwotICAgICAgICBpZiAoIXVybCkKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0KLSAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU107Ci0KLSAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nl
c3NIYXNDb250YWluZXIoKSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZp
ZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKLSAgICAgICAgICAg
IGlmICghYnVuZGxlSWRlbnRpZmllcikKLSAgICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVy
ID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOwotICAgICAgICAgICAg
dXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBp
c0RpcmVjdG9yeTpZRVNdOwotICAgICAgICB9Ci0KLSAgICAgICAgd2Vic2l0ZURhdGFVUkwgPSBb
W3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJzaXRlRGF0YSIgaXNEaXJlY3Rv
cnk6WUVTXSByZXRhaW5dOwotICAgIH0pOwotCi0gICAgTlNVUkwgKnVybCA9IFt3ZWJzaXRlRGF0
YVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9y
eTpZRVNdOwotICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVE
aXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1
dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3Jl
YXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7Ci0KLSAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBh
dGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwotfQotCi19IC8vIG5hbWVzcGFjZSBBUEkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZS5tbQkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTA1LDE3ICsxMDUsMTcgQEAgcHJpdmF0ZToKIAogKyAoV0tXZWJzaXRlRGF0YVN0b3JlICopZGVm
YXVsdERhdGFTdG9yZQogewotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcihXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKSk7CiB9CiAKICsgKFdLV2Vic2l0ZURhdGFT
dG9yZSAqKW5vblBlcnNpc3RlbnREYXRhU3RvcmUKIHsKLSAgICByZXR1cm4gd3JhcHBlcihBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKSk7CisgICAg
cmV0dXJuIHdyYXBwZXIoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0
ZW50KCkpOwogfQogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpOworICAgIF93ZWJzaXRl
RGF0YVN0b3JlLT5XZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0YVN0b3JlKCk7
CiAKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CkBAIC0xNjksNyArMTY5LDcgQEAgKyAoTlNTZXQg
KilhbGxXZWJzaXRlRGF0YVR5cGVzCiAKIC0gKFdLSFRUUENvb2tpZVN0b3JlICopaHR0cENvb2tp
ZVN0b3JlCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUtPmh0dHBDb29r
aWVTdG9yZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcihfd2Vic2l0ZURhdGFTdG9yZS0+Y29va2ll
U3RvcmUoKSk7CiB9CiAKIHN0YXRpYyBXYWxsVGltZSB0b1N5c3RlbUNsb2NrVGltZShOU0RhdGUg
KmRhdGUpCkBAIC0xODYsNyArMTg2LDcgQEAgLSAodm9pZClmZXRjaERhdGFSZWNvcmRzT2ZUeXBl
czooTlNTZXQgKgogLSAodm9pZClyZW1vdmVEYXRhT2ZUeXBlczooTlNTZXQgKilkYXRhVHlwZXMg
bW9kaWZpZWRTaW5jZTooTlNEYXRlICopZGF0ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29w
eSA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5
cGVzKGRhdGFUeXBlcyksIHRvU3lzdGVtQ2xvY2tUaW1lKGRhdGUgPyBkYXRlIDogW05TRGF0ZSBk
aXN0YW50UGFzdF0pLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5XSB7CisgICAgX3dlYnNpdGVEYXRh
U3RvcmUtPnJlbW92ZURhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwg
dG9TeXN0ZW1DbG9ja1RpbWUoZGF0ZSA/IGRhdGUgOiBbTlNEYXRlIGRpc3RhbnRQYXN0XSksIFtj
b21wbGV0aW9uSGFuZGxlckNvcHldIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KCk7
CiAgICAgfSk7CiB9CkBAIC0yMDUsNyArMjA1LDcgQEAgLSAodm9pZClyZW1vdmVEYXRhT2ZUeXBl
czooTlNTZXQgKilkYXRhVAogewogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKIAotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhk
YXRhVHlwZXMpLCB0b1dlYnNpdGVEYXRhUmVjb3JkcyhkYXRhUmVjb3JkcyksIFtjb21wbGV0aW9u
SGFuZGxlckNvcHldIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+cmVtb3ZlRGF0YShXZWJLaXQ6
OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCB0b1dlYnNpdGVEYXRhUmVjb3JkcyhkYXRh
UmVjb3JkcyksIFtjb21wbGV0aW9uSGFuZGxlckNvcHldIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXJDb3B5KCk7CiAgICAgfSk7CiB9CkBAIC0yNDAsMTIgKzI0MCwxMiBAQCArIChOU1NldDxO
U1N0cmluZyAqPiAqKV9hbGxXZWJzaXRlRGF0YVR5CiAKICsgKEJPT0wpX2RlZmF1bHREYXRhU3Rv
cmVFeGlzdHMKIHsKLSAgICByZXR1cm4gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0
YVN0b3JlRXhpc3RzKCk7CisgICAgcmV0dXJuIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZUV4aXN0cygpOwogfQogCiArICh2b2lkKV9kZWxldGVEZWZhdWx0RGF0YVN0
b3JlRm9yVGVzdGluZwogewotICAgIHJldHVybiBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0
ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7CisgICAgcmV0dXJuIFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcoKTsKIH0KIAogLSAo
aW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRpb246KF9XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgpAQCAtMjUzLDcgKzI1Myw3IEBAIC0gKGluc3Rh
bmNldHlwZSlfaW5pdFdpdGhDb25maWd1cmF0aW9uOigKICAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGF1dG8gY29uZmlnID0gY29uZmln
dXJhdGlvbi5pc1BlcnNpc3RlbnQgPyBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCkgOiBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpjcmVhdGUoKTsKKyAgICBhdXRvIGNvbmZpZyA9IGNvbmZpZ3VyYXRpb24uaXNQZXJzaXN0
ZW50ID8gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJh
dGlvbigpIDogV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7
CiAKICAgICBSRUxFQVNFX0FTU0VSVChjb25maWctPmlzUGVyc2lzdGVudCgpID09IGNvbmZpZ3Vy
YXRpb24uaXNQZXJzaXN0ZW50KTsKIApAQCAtMzEyLDcgKzMxMiw3IEBAIC0gKGluc3RhbmNldHlw
ZSlfaW5pdFdpdGhDb25maWd1cmF0aW9uOigKIAogICAgIGF1dG8gc2Vzc2lvbklEID0gY29uZmln
dXJhdGlvbi5pc1BlcnNpc3RlbnQgPyBQQUw6OlNlc3Npb25JRDo6Z2VuZXJhdGVQZXJzaXN0ZW50
U2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6Z2VuZXJhdGVFcGhlbWVyYWxTZXNzaW9uSUQo
KTsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpXZWJzaXRlRGF0
YVN0b3JlPihzZWxmLCBXVEZNb3ZlKGNvbmZpZyksIHNlc3Npb25JRCk7CisgICAgQVBJOjpPYmpl
Y3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+KHNlbGYsIFdU
Rk1vdmUoY29uZmlnKSwgc2Vzc2lvbklEKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMzI1
LDcgKzMyNSw3IEBAIC0gKHZvaWQpX2ZldGNoRGF0YVJlY29yZHNPZlR5cGVzOihOU1NldDwKICAg
ICBpZiAob3B0aW9ucyAmIF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbkNvbXB1dGVTaXpl
cykKICAgICAgICAgZmV0Y2hPcHRpb25zLmFkZChXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRp
b246OkNvbXB1dGVTaXplcyk7CiAKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFT
dG9yZSgpLmZldGNoRGF0YShXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCBm
ZXRjaE9wdGlvbnMsIFtjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyQ29weSldKGF1dG8gd2Vic2l0ZURhdGFSZWNvcmRzKSB7CisgICAgX3dlYnNpdGVEYXRh
U3RvcmUtPmZldGNoRGF0YShXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCBm
ZXRjaE9wdGlvbnMsIFtjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyQ29weSldKGF1dG8gd2Vic2l0ZURhdGFSZWNvcmRzKSB7CiAgICAgICAgIFZlY3RvcjxS
ZWZQdHI8QVBJOjpPYmplY3Q+PiBlbGVtZW50czsKICAgICAgICAgZWxlbWVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eSh3ZWJzaXRlRGF0YVJlY29yZHMuc2l6ZSgpKTsKIApAQCAtMzM4LDE4ICsz
MzgsMTggQEAgLSAodm9pZClfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0PAogCiAtIChC
T09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZAogewotICAgIHJldHVybiBfd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCgpOwogfQogCiAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZDooQk9PTCllbmFibGVkCiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKKyAgICBf
d2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxl
ZCk7CiB9CiAKIC0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHJldHVybiBfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01v
ZGUoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEZWJ1Z01vZGUoKTsKICNlbHNlCiAgICAgcmV0dXJuIE5POwogI2VuZGlmCkBAIC0zNTgsNyAr
MzU4LDcgQEAgLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZQogLSAodm9p
ZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTooQk9PTCllbmFibGVkCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUo
ZW5hYmxlZCk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEZWJ1Z01vZGUoZW5hYmxlZCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFibGVkKTsK
ICNlbmRpZgpAQCAtMzY2LDEwNiArMzY2LDEwNiBAQCAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGVidWdNCiAKIC0gKE5TVUludGVnZXIpX3Blck9yaWdpblN0b3JhZ2VRdW90YQog
ewotICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnBlck9y
aWdpblN0b3JhZ2VRdW90YSgpOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+cGVyT3Jp
Z2luU3RvcmFnZVF1b3RhKCk7CiB9CiAKIC0gKHZvaWQpX3NldFBlck9yaWdpblN0b3JhZ2VRdW90
YTooTlNVSW50ZWdlcilzaXplCiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5zZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEoc2l6ZSk7CisgICAgX3dlYnNpdGVEYXRh
U3RvcmUtPnNldFBlck9yaWdpblN0b3JhZ2VRdW90YShzaXplKTsKIH0KIAogLSAoTlNTdHJpbmcg
KilfY2FjaGVTdG9yYWdlRGlyZWN0b3J5CiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkuY2FjaGVTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgcmV0dXJu
IF93ZWJzaXRlRGF0YVN0b3JlLT5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKIH0KIAogLSAodm9p
ZClfc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeQogewotICAg
IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0Q2FjaGVTdG9yYWdlRGly
ZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldENhY2hlU3RvcmFn
ZURpcmVjdG9yeShkaXJlY3RvcnkpOwogfQogCiAtIChOU1N0cmluZyAqKV9zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5CiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwor
ICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSgpOwogfQogCiAtICh2b2lkKV9zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeQogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShk
aXJlY3RvcnkpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KGRpcmVjdG9yeSk7CiB9CiAKIC0gKHZvaWQpX3NldEJvdW5kSW50ZXJm
YWNlSWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyCiB7Ci0gICAgX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoaWRl
bnRpZmllcik7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldEJvdW5kSW50ZXJmYWNlSWRlbnRp
ZmllcihpZGVudGlmaWVyKTsKIH0KIAogLSAoTlNTdHJpbmcgKilfYm91bmRJbnRlcmZhY2VJZGVu
dGlmaWVyCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0
b3JlLT5ib3VuZEludGVyZmFjZUlkZW50aWZpZXIoKTsKIH0KIAogLSAodm9pZClfc2V0QWxsb3dz
Q2VsbHVsYXJBY2Nlc3M6KEJPT0wpYWxsb3dzCiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRBbGxvd3NDZWxsdWxhckFjY2VzcyhhbGxvd3MgPyBXZWJLaXQ6
OkFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMgOiBXZWJLaXQ6OkFsbG93c0NlbGx1bGFyQWNjZXNz
OjpObyk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldEFsbG93c0NlbGx1bGFyQWNjZXNzKGFs
bG93cyA/IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6OlllcyA6IFdlYktpdDo6QWxsb3dz
Q2VsbHVsYXJBY2Nlc3M6Ok5vKTsKIH0KIAogLSAoQk9PTClfYWxsb3dzQ2VsbHVsYXJBY2Nlc3MK
IHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5hbGxv
d3NDZWxsdWxhckFjY2VzcygpID09IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6OlllczsK
KyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmFsbG93c0NlbGx1bGFyQWNjZXNzKCkgPT0g
V2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzOwogfQogCiAtICh2b2lkKV9zZXRQcm94
eUNvbmZpZ3VyYXRpb246KE5TRGljdGlvbmFyeSAqKWNvbmZpZ3VyYXRpb24KIHsKLSAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFByb3h5Q29uZmlndXJhdGlvbigo
X19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNvbmZpZ3VyYXRpb24pOworICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT5zZXRQcm94eUNvbmZpZ3VyYXRpb24oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilj
b25maWd1cmF0aW9uKTsKIH0KIAogLSAoTlNTdHJpbmcgKilfc291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgcmV0dXJu
IF93ZWJzaXRlRGF0YVN0b3JlLT5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsK
IH0KIAogLSAodm9pZClfc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOihOU1N0
cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBpZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGlkZW50aWZp
ZXIpKQorICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPnNldFNvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcihpZGVudGlmaWVyKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
R2VuZXJpY0V4Y2VwdGlvbiBmb3JtYXQ6QCJfc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyIGNhbm5vdCBiZSBjYWxsZWQgYWZ0ZXIgbmV0d29ya2luZyBoYXMgYmVndW4iXTsKIH0K
IAogLSAoTlNTdHJpbmcgKilfc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyCiB7
Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0
YVN0b3JlLT5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKIH0KIAogLSAo
dm9pZClfc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOihOU1N0cmluZyAq
KWlkZW50aWZpZXIKIHsKLSAgICBpZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkuc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKGlkZW50aWZpZXIp
KQorICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPnNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25k
YXJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
R2VuZXJpY0V4Y2VwdGlvbiBmb3JtYXQ6QCJfc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyIGNhbm5vdCBiZSBjYWxsZWQgYWZ0ZXIgbmV0d29ya2luZyBoYXMgYmVndW4iXTsK
IH0KIAogLSAodm9pZClfc2V0QWxsb3dzVExTRmFsbGJhY2s6KEJPT0wpYWxsb3dzCiB7Ci0gICAg
aWYgKCFfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEFsbG93c1RMU0Zh
bGxiYWNrKGFsbG93cykpCisgICAgaWYgKCFfd2Vic2l0ZURhdGFTdG9yZS0+c2V0QWxsb3dzVExT
RmFsbGJhY2soYWxsb3dzKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TR2VuZXJpY0V4
Y2VwdGlvbiBmb3JtYXQ6QCJfc2V0QWxsb3dzVExTRmFsbGJhY2sgY2Fubm90IGJlIGNhbGxlZCBh
ZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJdOwogfQogCiAtIChCT09MKV9hbGxvd3NUTFNGYWxs
YmFjawogewotICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgp
LmFsbG93c1RMU0ZhbGxiYWNrKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5hbGxv
d3NUTFNGYWxsYmFjaygpOwogfQogCiAtIChOU0RpY3Rpb25hcnkgKilfcHJveHlDb25maWd1cmF0
aW9uCiB7Ci0gICAgcmV0dXJuIChfX2JyaWRnZSBOU0RpY3Rpb25hcnkgKilfd2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnByb3h5Q29uZmlndXJhdGlvbigpOworICAgIHJldHVy
biAoX19icmlkZ2UgTlNEaWN0aW9uYXJ5ICopX3dlYnNpdGVEYXRhU3RvcmUtPnByb3h5Q29uZmln
dXJhdGlvbigpOwogfQogCiAtIChOU1VSTCAqKV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeQog
ewotICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl93ZWJzaXRlRGF0YVN0b3JlLT5p
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CisgICAgcmV0dXJu
IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X3dlYnNpdGVEYXRhU3RvcmUtPmNvbmZpZ3VyYXRpb24o
KS5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CiB9CiAKIC0g
KHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6KEJP
T0wpdmFsdWUKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGF1
dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCk7CisgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwogICAgIGlmICghc3RvcmUpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtNDgwLDEzICs0ODAsMTMgQEAgLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1Rlc3RpbgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY2FsbGJhY2spIHsKLSAgICAg
ICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdGF0aXN0aWNzVGVz
dGluZ0NhbGxiYWNrKFtjYWxsYmFjayA9IG1ha2VCbG9ja1B0cihjYWxsYmFjayksIHNlbGZdKGNv
bnN0IFN0cmluZyYgZXZlbnQpIHsKKyAgICAgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFN0YXRp
c3RpY3NUZXN0aW5nQ2FsbGJhY2soW2NhbGxiYWNrID0gbWFrZUJsb2NrUHRyKGNhbGxiYWNrKSwg
c2VsZl0oY29uc3QgU3RyaW5nJiBldmVudCkgewogICAgICAgICAgICAgY2FsbGJhY2soc2VsZiwg
ZXZlbnQpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U3RhdGlzdGljc1Rlc3RpbmdDYWxs
YmFjayhudWxscHRyKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U3RhdGlzdGljc1Rlc3Rp
bmdDYWxsYmFjayhudWxscHRyKTsKICNlbmRpZgogfQogCkBAIC01MDksNyArNTA5LDcgQEAgLSAo
dm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6KAogICAgIH0KIAogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKS5nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh3ZWJQYWdlUHJveHktPmlk
ZW50aWZpZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0oYXV0byBkb21haW5zKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKHdlYlBhZ2VQcm94eS0+aWRlbnRpZmllcigpLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGRvbWFpbnMp
IHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFwaURvbWFpbnM7CiAgICAg
ICAgIGFwaURvbWFpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkb21haW5zLnNpemUoKSk7CiAg
ICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykKQEAgLTUyNCw3ICs1MjQsNyBAQCAt
ICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooCiAtICh2b2lkKV9zY2hlZHVs
ZUNvb2tpZUJsb2NraW5nVXBkYXRlOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFtj
b21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgewor
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogI2Vsc2UKQEAgLTUzNSw3ICs1MzUs
NyBAQCAtICh2b2lkKV9zY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOih2CiAtICh2b2lkKV9z
ZXRQcmV2YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUt
PnNldFByZXZhbGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKICAgICB9KTsKICNlbHNlCkBAIC01NDYsNyArNTQ2LDcgQEAgLSAodm9pZClfc2V0
UHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbQogLSAodm9pZClfZ2V0SXNQcmV2YWxlbnREb21h
aW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MKSljb21w
bGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0g
ICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5pc1ByZXZhbGVudFJlc291
cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXShib29sIGVuYWJsZWQpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+aXNQ
cmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBlbmFibGVkKSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGVuYWJsZWQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTU1Nyw3ICs1NTcsNyBA
QCAtICh2b2lkKV9nZXRJc1ByZXZhbGVudERvbWFpbjooTlNVUkwgKilkCiAtICh2b2lkKV9jbGVh
clByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmNs
ZWFyUHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgeworICAgIF93ZWJzaXRlRGF0YVN0b3Jl
LT5jbGVhclByZXZhbGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKICAgICB9KTsKICNlbHNlCkBAIC01NjgsNyArNTY4LDcgQEAgLSAodm9pZClf
Y2xlYXJQcmV2YWxlbnREb21haW46KE5TVVJMICopZAogLSAodm9pZClfcHJvY2Vzc1N0YXRpc3Rp
Y3NBbmREYXRhUmVjb3Jkczoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9j
ZXNzaW5nKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildKCkgeworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRh
UmVjb3Jkc1Byb2Nlc3NpbmcoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7
CiAjZWxzZQpAQCAtNTc4LDE4ICs1NzgsMTggQEAgLSAodm9pZClfcHJvY2Vzc1N0YXRpc3RpY3NB
bmREYXRhUmVjb3JkcwogCiAtIChib29sKV9oYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcgogewot
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKFdlYkNvcmU6OnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhYmFzZUZpbGVuYW1lKF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoV2ViQ29yZTo6c2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGFiYXNlRmlsZW5hbWUoX3dlYnNpdGVEYXRhU3RvcmUtPnNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkoKSkpOwogfQogCiAtIChpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURl
bGVnYXRlPilfZGVsZWdhdGUKIHsKLSAgICByZXR1cm4gX2RlbGVnYXRlLmdldCgpOworICAgIHJl
dHVybiBfZGVsZWdhdGUuZ2V0KCkuZ2V0KCk7CiB9CiAKIC0gKHZvaWQpc2V0X2RlbGVnYXRlOihp
ZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPilkZWxlZ2F0ZQogewogICAgIF9kZWxlZ2F0
ZSA9IGRlbGVnYXRlOwotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8V2Vic2l0ZURhdGFTdG9yZUNsaWVudD4oZGVsZWdhdGUp
KTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8V2Vic2l0
ZURhdGFTdG9yZUNsaWVudD4oZGVsZWdhdGUpKTsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZUludGVybmFsLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSwxMiArMjUsMTMgQEAKIAogI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVN0b3JlUHJp
dmF0ZS5oIgogCi0jaW1wb3J0ICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW1wb3J0ICJXS09i
amVjdC5oIgorI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgorI2ltcG9ydCA8d3RmL1dlYWtP
YmpDUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi10ZW1wbGF0ZTw+IHN0cnVjdCBXcmFw
cGVyVHJhaXRzPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4gewordGVtcGxhdGU8PiBzdHJ1Y3QgV3Jh
cHBlclRyYWl0czxXZWJzaXRlRGF0YVN0b3JlPiB7CiAgICAgdXNpbmcgV3JhcHBlckNsYXNzID0g
V0tXZWJzaXRlRGF0YVN0b3JlOwogfTsKIApAQCAtMzgsNyArMzksNyBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBXcmFwcGVyVHJhaXRzPEFQSTo6V2ViCiAKIEBpbnRlcmZhY2UgV0tXZWJzaXRlRGF0YVN0
b3JlICgpIDxXS09iamVjdD4gewogQHBhY2thZ2UKLSAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJ
OjpXZWJzaXRlRGF0YVN0b3JlPiBfd2Vic2l0ZURhdGFTdG9yZTsKLSAgICBSZXRhaW5QdHI8aWQg
PF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4gPiBfZGVsZWdhdGU7CisgICAgQVBJOjpPYmpl
Y3RTdG9yYWdlPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4gX3dlYnNpdGVEYXRhU3RvcmU7Cisg
ICAgV2Vha09iakNQdHI8aWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4gPiBfZGVsZWdh
dGU7CiB9CiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElX
ZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCShyZXZpc2lvbiAyNDk3
MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE3IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0KLSNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KLQotI2lmIFBM
QVRGT1JNKEdUSykKLSNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndlYmtpdGd0ayIKLSNlbGlmIFBM
QVRGT1JNKFdQRSkKLSNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndwZSIKLSNlbmRpZgotCi1uYW1l
c3BhY2UgQVBJIHsKLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiYXBw
bGljYXRpb25zIik7Ci19Ci0KLS8vIEZJWE1FOiBUaGUgb3RoZXIgZGlyZWN0b3JpZXMgaW4gdGhp
cyBmaWxlIGFyZSBzaGFyZWQgYmV0d2VlbiBhbGwgYXBwbGljYXRpb25zIHVzaW5nIFdlYktpdEdU
Sy4KLS8vIFdoeSBpcyBvbmx5IHRoaXMgZGlyZWN0b3J5IG5hbWVzcGFjZWQgdG8gYSBwYXJ0aWN1
bGFyIGFwcGxpY2F0aW9uPwotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25h
bWUoKSksICJXZWJLaXRDYWNoZSIpKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2UiKSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0g
ICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJB
U0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJkYXRhYmFzZXMiIEdfRElSX1NFUEFSQVRP
Ul9TICJpbmRleGVkZGIiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3
ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9S
WSBHX0RJUl9TRVBBUkFUT1JfUyAic2VydmljZXdvcmtlcnMiKTsKLX0KLQotV1RGOjpTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAg
cmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0Vf
RElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJsb2NhbHN0b3JhZ2UiKTsKLX0KLQotV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAibWVkaWFrZXlzIik7Ci19Ci0K
LVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRldmljZWlk
aGFzaHNhbHRzIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRP
Ul9TICJkYXRhYmFzZXMiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdEhTVFNEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyk7
Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1Mg
IlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpT
dHJpbmcmIGRpcmVjdG9yeU5hbWUpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKLX0KLQotV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCi17Ci0gICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSks
IGRpcmVjdG9yeU5hbWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFn
ZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgs
NyBAQCBzdHJ1Y3QgX1dlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlIHsKICAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGRhdGFNYW5hZ2Vy
KTsKLSAgICAgICAgcmV0dXJuIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShk
YXRhTWFuYWdlcikud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpOworICAgICAgICByZXR1
cm4gd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKGRhdGFNYW5hZ2VyKS5zZXNz
aW9uSUQoKTsKICAgICB9CiAKICAgICB+X1dlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlKCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzExLDE4
ICszMTEsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0U2V0UHJvcGVydHkoCiAgICAg
fQogfQogCi1zdGF0aWMgaW5saW5lIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4g
d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25Gb3JXZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24oY29uc3QgQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIHByb2Nlc3NQb29sY29uZmln
dXJhcmlvbikKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURp
cmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmRpc2tDYWNoZURpcmVjdG9y
eSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoU3Ry
aW5nKHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKSk7
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyhwcm9j
ZXNzUG9vbGNvbmZpZ3VyYXJpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLT5zZXREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKHBy
b2Nlc3NQb29sY29uZmlndXJhcmlvbi5kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnko
KSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoU3Ry
aW5nKHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkp
KTsKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKLX0KLQogc3RhdGljIHZvaWQgd2Via2l0V2Vi
Q29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBHX09CSkVDVF9DTEFT
Uyh3ZWJraXRfd2ViX2NvbnRleHRfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsK
QEAgLTMzNSwyNCArMzIzLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVj
dGVkKAogCiAgICAgV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IFdFQktJVF9XRUJfQ09O
VEVYVChvYmplY3QpOwogICAgIFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gd2ViQ29u
dGV4dC0+cHJpdjsKLSAgICBpZiAocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyICYmICF3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKHByaXYtPndlYnNpdGVEYXRhTWFuYWdl
ci5nZXQoKSkpIHsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KHByaXYtPndl
YnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXREaXNr
Q2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1h
bmFnZXIuZ2V0KCkpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7Ci0gICAgICAgIGNvbmZp
Z3VyYXRpb24uc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFN
YW5hZ2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEluZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KHBy
aXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5z
ZXRIU1RTU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19jYWNoZV9k
aXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShw
cml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKLSAgICB9IGVsc2UgaWYgKCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3Rvcnku
aXNOdWxsKCkpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9j
YWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSkpOwogCiAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wgPSBX
ZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24pOwogCi0gICAgaWYgKCFwcml2LT53
ZWJzaXRlRGF0YU1hbmFnZXIpCi0gICAgICAgIHByaXYtPndlYnNpdGVEYXRhTWFuYWdlciA9IGFk
b3B0R1JlZih3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJDcmVhdGUod2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb25Gb3JXZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikp
KTsKLSAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0UHJpbWFyeURhdGFTdG9yZSh3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgp
KSk7Ci0KICAgICB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJBZGRQcm9jZXNzUG9vbChwcml2LT53
ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCksICpwcml2LT5wcm9jZXNzUG9vbCk7CiAKICAgICBwcml2
LT50bHNFcnJvcnNQb2xpY3kgPSBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfRkFJTDsKQEAgLTc3
Nyw3ICs3NTAsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9jbGVhcl9jYWNoZShXZWJLCiAg
ICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlczsKICAgICB3ZWJz
aXRlRGF0YVR5cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlKTsKICAgICB3ZWJz
aXRlRGF0YVR5cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSk7Ci0gICAgYXV0byYg
d2Vic2l0ZURhdGFTdG9yZSA9IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShj
b250ZXh0LT5wcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpLndlYnNpdGVEYXRhU3RvcmUo
KTsKKyAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
R2V0RGF0YVN0b3JlKGNvbnRleHQtPnByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSk7CiAg
ICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1vdmVEYXRhKHdlYnNpdGVEYXRhVHlwZXMsIC1XYWxsVGlt
ZTo6aW5maW5pdHkoKSwgW10geyB9KTsKIH0KIApAQCAtMTQ3NCwxMiArMTQ0Nyw4IEBAIHZvaWQg
d2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0ZW5zaW8KICAqCiAgKiBEZXByZWNhdGVkOiAy
LjEwLiBVc2Ugd2Via2l0X3dlYl9jb250ZXh0X25ld193aXRoX3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
KCkgaW5zdGVhZC4KICAqLwotdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2FjaGVf
ZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIGRpcmVjdG9y
eSkKK3ZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShXZWJL
aXRXZWJDb250ZXh0KiwgY29uc3QgY2hhciopCiB7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoZGlyZWN0
b3J5KTsKLQotICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5jb25maWd1cmF0aW9uKCku
c2V0RGlza0NhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9y
eSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjAsMTIgKzIwLDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgi
CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+
CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KQEAgLTk1LDcgKzk1LDcgQEAgc3RydWN0IF9X
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlIAogICAgICAgICBBU1NFUlQocHJvY2Vzc1Bv
b2xzLmlzRW1wdHkoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZT4gd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
PiB3ZWJzaXRlRGF0YVN0b3JlOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gYmFzZURhdGFEaXJlY3Rv
cnk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBiYXNlQ2FjaGVEaXJlY3Rvcnk7CiAgICAgR1VuaXF1
ZVB0cjxjaGFyPiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CkBAIC0xODEsNyArMTgxLDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyU2V0UAogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFBST1BfSVNfRVBIRU1FUkFMOgogICAgICAgICBpZiAoZ192YWx1ZV9nZXRfYm9vbGVh
bih2YWx1ZSkpCi0gICAgICAgICAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlID0g
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCk7Cisg
ICAgICAgICAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50KCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmpl
Y3QsIHByb3BJRCwgcGFyYW1TcGVjKTsKQEAgLTM4NCwyOCArMzg0LDI4IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl8KIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciog
d2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ciogbWFuYWdlciA9IFdFQktJVF9XRUJTSVRFX0RBVEFfTUFOQUdFUihnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfV0VCU0lURV9EQVRBX01BTkFHRVIsIG51bGxwdHIpKTsKLSAgICBtYW5hZ2VyLT5w
cml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RG
TW92ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7
CisgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIFBBTDo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCkpOwogCiAgICAgcmV0dXJuIG1hbmFnZXI7CiB9CiAKLUFQSTo6V2Vi
c2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktp
dFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlcikKK1dlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYg
d2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFu
YWdlciogbWFuYWdlcikKIHsKICAgICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlKiBw
cml2ID0gbWFuYWdlci0+cHJpdjsKICAgICBpZiAoIXByaXYtPndlYnNpdGVEYXRhU3RvcmUpIHsK
ICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OmNyZWF0ZSgpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdl
RGlyZWN0b3J5LmdldCgpKSk7CisgICAgICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgp
KSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeSghcHJp
di0+ZGlza0NhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKSwgbmV0d29ya0NhY2hlU3ViZGly
ZWN0b3J5KSk7CisgICAgICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRO
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYt
PmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOwog
ICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCFwcml2
LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+YXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KCFwcml2LT53ZWJTUUxEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5
LmdldCgpKSk7CisgICAgICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAg
Y29uZmlndXJhdGlvbi0+c2V0SFNUU1N0b3JhZ2VEaXJlY3RvcnkoIXByaXYtPmhzdHNDYWNoZURp
cmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RT
RGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHByaXYtPmhzdHNDYWNoZURpcmVjdG9yeS5nZXQoKSkpOwotICAgICAgICBjb25maWd1cmF0
aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgICAgIHByaXYtPndlYnNp
dGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZp
Z3VyYXRpb24pLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICAgICAg
ICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKSA6IEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+aHN0c0Nh
Y2hlRGlyZWN0b3J5LmdldCgpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9
IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbiks
IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogICAgIH0KIAogICAgIHJldHVy
biAqcHJpdi0+d2Vic2l0ZURhdGFTdG9yZTsKQEAgLTU0Miw3ICs1NDIsNyBAQCBjb25zdCBnY2hh
ciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgaWYgKCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPmxv
Y2FsU3RvcmFnZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAg
IHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgp
KSk7CiAgICAgcmV0dXJuIHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKTsKIH0KIApA
QCAtNTY2LDcgKzU2Niw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXIKIAogICAgIGlmICghcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5KSB7CiAgICAgICAgIC8vIFRo
ZSBkZWZhdWx0IGRpcmVjdG9yeSBhbHJlYWR5IGhhcyB0aGUgc3ViZGlyZWN0b3J5LgotICAgICAg
ICBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoRmlsZVN5c3RlbTo6ZGly
ZWN0b3J5TmFtZShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkoKSkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5kaXNrQ2FjaGVEaXJlY3Rv
cnkucmVzZXQoZ19zdHJkdXAoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSkudXRmOCgpLmRhdGEo
KSkpOwogICAgIH0KICAgICByZXR1cm4gcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpOwog
fQpAQCAtNTkwLDcgKzU5MCw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIXByaXYtPmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkucmVzZXQoZ19zdHJkdXAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+YXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOwog
ICAgIHJldHVybiBwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmdldCgpOwogfQogCkBA
IC02MTMsNyArNjEzLDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghcHJpdi0+aW5kZXhlZERCRGly
ZWN0b3J5KQotICAgICAgICBwcml2LT5pbmRleGVkREJEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnko
KS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIHByaXYtPmluZGV4ZWREQkRpcmVjdG9yeS5yZXNl
dChnX3N0cmR1cChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1cm4gcHJpdi0+aW5kZXhl
ZERCRGlyZWN0b3J5LmdldCgpOwogfQogCkBAIC02MzgsNyArNjM4LDcgQEAgY29uc3QgZ2NoYXIq
IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIGlmICghcHJpdi0+d2ViU1FMRGlyZWN0b3J5KQotICAgICAgICBwcml2LT53ZWJTUUxEaXJl
Y3RvcnkucmVzZXQoZ19zdHJkdXAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIHByaXYtPndlYlNR
TERpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1cm4g
cHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpOwogfQogCkBAIC02NjEsNyArNjYxLDcgQEAgY29u
c3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGlmICghcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5KQotICAgICAgICBwcml2
LT5oc3RzQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+
aHN0c0NhY2hlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgcmV0dXJuIHBy
aXYtPmhzdHNDYWNoZURpcmVjdG9yeS5nZXQoKTsKIH0KIApAQCAtNzM1LDcgKzczNSw3IEBAIHZv
aWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNoKFcKICAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSk7CiAKICAgICBHUmVm
UHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcobWFuYWdlciwgY2FuY2VsbGFi
bGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOwotICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEodG9XZWJzaXRlRGF0YVR5cGVzKHR5
cGVzKSwgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzLCBbdGFzayA9IFdURk1v
dmUodGFzayldIChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+IHJlY29yZHMpIHsKKyAgICBtYW5h
Z2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlLT5mZXRjaERhdGEodG9XZWJzaXRlRGF0YVR5cGVz
KHR5cGVzKSwgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzLCBbdGFzayA9IFdU
Rk1vdmUodGFzayldIChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+IHJlY29yZHMpIHsKICAgICAg
ICAgR0xpc3QqIGRhdGFMaXN0ID0gbnVsbHB0cjsKICAgICAgICAgd2hpbGUgKCFyZWNvcmRzLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSB3ZWJraXRXZWJzaXRlRGF0
YUNyZWF0ZShyZWNvcmRzLnRha2VMYXN0KCkpKQpAQCAtODA5LDcgKzgwOSw3IEBAIHZvaWQgd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3JlbW92ZSgKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5yZW1vdmVEYXRhKHRvV2Vic2l0ZURhdGFUeXBlcyh0eXBlcyksIHJlY29yZHMsIFt0YXNrID0g
V1RGTW92ZSh0YXNrKV0geworICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPnJl
bW92ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKHR5cGVzKSwgcmVjb3JkcywgW3Rhc2sgPSBXVEZN
b3ZlKHRhc2spXSB7CiAgICAgICAgIGdfdGFza19yZXR1cm5fYm9vbGVhbih0YXNrLmdldCgpLCBU
UlVFKTsKICAgICB9KTsKIH0KQEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lkIHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9jbGVhcihXCiAKICAgICBXYWxsVGltZSB0aW1lUG9pbnQgPSB0aW1lU3Bh
biA/IFdhbGxUaW1lOjpub3coKSAtIFNlY29uZHM6OmZyb21NaWNyb3NlY29uZHModGltZVNwYW4p
IDogV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKDApOwogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sg
PSBhZG9wdEdSZWYoZ190YXNrX25ldyhtYW5hZ2VyLCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVz
ZXJEYXRhKSk7Ci0gICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnJlbW92ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKHR5cGVzKSwgdGltZVBvaW50
LCBbdGFzayA9IFdURk1vdmUodGFzayldIHsKKyAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0
YVN0b3JlLT5yZW1vdmVEYXRhKHRvV2Vic2l0ZURhdGFUeXBlcyh0eXBlcyksIHRpbWVQb2ludCwg
W3Rhc2sgPSBXVEZNb3ZlKHRhc2spXSB7CiAgICAgICAgIGdfdGFza19yZXR1cm5fYm9vbGVhbih0
YXNrLmdldCgpLCBUUlVFKTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXJQcml2YXRlLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTksMTIgKzE5LDExIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQVBJ
V2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIHdlYmtp
dFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbj4mJik7Ci1BUEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRh
TWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqKTsKK1dlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdl
YktpdFdlYnNpdGVEYXRhTWFuYWdlciopOwogdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJB
ZGRQcm9jZXNzUG9vbChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqLCBXZWJLaXQ6OldlYlByb2Nl
c3NQb29sJik7CiB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlclJlbW92ZVByb2Nlc3NQb29s
KFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciosIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKTsKIGNv
bnN0IFZlY3RvcjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sKj4mIHdlYmtpdFdlYnNpdGVEYXRhTWFu
YWdlckdldFByb2Nlc3NQb29scyhXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRl
RGF0YVN0b3JlV2luLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAkobm9uZXhpc3RlbnQpCkBA
IC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2
ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+Ci0KLW5hbWVzcGFjZSBBUEkgewotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQ2FjaGVTdG9yYWdlIik7Ci19Ci0KLVN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKLXsKLSAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hlIik7Ci19
Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJJbmRl
eGVkREIiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCAiU2VydmljZVdvcmtlcnMiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKLX0KLQotU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9yYWdlIik7
Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJXZWJT
UUwiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnlOYW1lKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksIGRpcmVjdG9yeU5hbWUpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnlOYW1lKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
IGRpcmVjdG9yeU5hbWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTM1OCw3ICsxMzU4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29v
awogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUl9BTkRfREVUQUlMUyhN
aXNzaW5nUGFyYW1ldGVyLCAiVGhlIHBhcmFtZXRlciAnaHR0cE9ubHknIHdhcyBub3QgZm91bmQu
Iik7CiAKICAgICBXZWJDb29raWVNYW5hZ2VyUHJveHkqIGNvb2tpZU1hbmFnZXIgPSBtX3Byb2Nl
c3NQb29sLT5zdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLSAgICBjb29raWVN
YW5hZ2VyLT5zZXRDb29raWVzKHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwg
eyBjb29raWUgfSwgW2NhbGxiYWNrID0gY2FsbGJhY2suY29weVJlZigpXShDYWxsYmFja0Jhc2U6
OkVycm9yIGVycm9yKSB7CisgICAgY29va2llTWFuYWdlci0+c2V0Q29va2llcyhwYWdlLT5zZXNz
aW9uSUQoKSwgeyBjb29raWUgfSwgW2NhbGxiYWNrID0gY2FsbGJhY2suY29weVJlZigpXShDYWxs
YmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGlmIChlcnJvciA9PSBDYWxsYmFja0Jh
c2U6OkVycm9yOjpOb25lKQogICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CiAg
ICAgICAgIGVsc2UKQEAgLTEzNzgsNyArMTM3OCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OmRlbGV0ZUFsbENvb2sKICAgICBTdHJpbmcgaG9zdCA9IGFjdGl2ZVVSTC5ob3N0KCkudG9T
dHJpbmcoKTsKIAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSogY29va2llTWFuYWdlciA9IG1f
cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotICAgIGNv
b2tpZU1hbmFnZXItPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMocGFnZS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnNlc3Npb25JRCgpLCB7IGhvc3QsIGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZOZWVk
ZWQoaG9zdCkgfSk7CisgICAgY29va2llTWFuYWdlci0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
cyhwYWdlLT5zZXNzaW9uSUQoKSwgeyBob3N0LCBkb21haW5CeUFkZGluZ0RvdFByZWZpeElmTmVl
ZGVkKGhvc3QpIH0pOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpnZXRTZXNzaW9u
UGVybWlzc2lvbnMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpTZXNzaW9uUGVybWlzc2lvbkRhdGE+PiYgb3V0X3Blcm1p
c3Npb25zKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbQkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2
IEBACiAjaW1wb3J0ICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCAiQVBJU3RyaW5n
LmgiCiAjaW1wb3J0ICJBUElVUkwuaCIKLSNpbXBvcnQgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIK
ICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbXBvcnQg
IkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25Db2NvYS5oIgogI2ltcG9ydCAiQXV0
aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCkBAIC02NCw2ICs2Myw3IEBACiAjaW1wb3J0
ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAi
V2ViUHJvdGVjdGlvblNwYWNlLmgiCisjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW1w
b3J0ICJfV0tDb250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRXJy
b3JSZWNvdmVyeUF0dGVtcHRpbmcuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwu
aCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODcsNyArODcsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3b3JrUHJvY2Vzc1By
b3h5CiAgICAgY29ubmVjdCgpOwogCiAgICAgaWYgKGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBt
X3Byb2Nlc3NQb29sLndlYnNpdGVEYXRhU3RvcmUoKSkKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0
b3Jlcy5zZXQod2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgp
LCBtYWtlUmVmKHdlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKSkpOworICAgICAg
ICBtX3dlYnNpdGVEYXRhU3RvcmVzLnNldCh3ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwg
bWFrZVJlZigqd2Vic2l0ZURhdGFTdG9yZSkpOwogfQogCiBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp+
TmV0d29ya1Byb2Nlc3NQcm94eSgpCkBAIC0xMTM0LDE0ICsxMTM0LDE0IEBAIFdlYnNpdGVEYXRh
U3RvcmUqIE5ldHdvcmtQcm9jZXNzUHJveHk6OncKICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52
YWx1ZS5nZXQoKTsKIAogICAgIGlmIChhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gbV9wcm9jZXNz
UG9vbC53ZWJzaXRlRGF0YVN0b3JlKCkpIHsKLSAgICAgICAgaWYgKHNlc3Npb25JRCA9PSB3ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkpCi0gICAgICAgICAg
ICByZXR1cm4gJndlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAg
aWYgKHNlc3Npb25JRCA9PSB3ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSkKKyAgICAgICAg
ICAgIHJldHVybiB3ZWJzaXRlRGF0YVN0b3JlOwogICAgIH0KIAogICAgIGlmIChzZXNzaW9uSUQg
IT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gJkFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgcmV0dXJuIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFT
dG9yZS5oIgogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NQcm94eS5oIgogI2lmIEVOQUJMRShM
RUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkuaCIKQEAgLTM2LDYgKzM1LDcgQEAKICNpbmNsdWRlICJQcm9jZXNz
VGhyb3R0bGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2aWdhdGlv
bkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4K
ICNpbmNsdWRlIDxtZW1vcnk+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjQ5NzMy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE1ICsyNiwxNiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAorI2luY2x1ZGUgIkFQSUhUVFBD
b29raWVTdG9yZS5oIgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgog
I2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhUmVjb3JkLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURh
dGFTdG9yZS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuaCIKICNpbmNsdWRlICJNb2NrQXV0aGVudGljYXRvck1h
bmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0
YXR1cy5oIgorI2luY2x1ZGUgIldlYktpdDJJbml0aWFsaXplLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NhY2hlLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc01lc3NhZ2VzLmgiCkBAIC0xMzksNiArMTQwLDU3IEBAIFdlYnNpdGVEYXRhU3RvcmU6Oldl
YnNpdGVEYXRhU3RvcmUoUEFMOjoKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogfQog
CitzdGF0aWMgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiBnbG9iYWxEZWZhdWx0RGF0YVN0b3Jl
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+
PiBnbG9iYWxEZWZhdWx0RGF0YVN0b3JlOworICAgIHJldHVybiBnbG9iYWxEZWZhdWx0RGF0YVN0
b3JlLmdldCgpOworfQorCitSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpCit7CisgICAgSW5pdGlhbGl6ZVdlYktpdDIoKTsKKworICAgIGF1
dG8mIHN0b3JlID0gZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpOworICAgIGlmICghc3RvcmUpCisg
ICAgICAgIHN0b3JlID0gYWRvcHRSZWYobmV3IFdlYnNpdGVEYXRhU3RvcmUoZGVmYXVsdERhdGFT
dG9yZUNvbmZpZ3VyYXRpb24oKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkp
OworCisgICAgcmV0dXJuICpzdG9yZTsKK30KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkZWxl
dGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpCit7CisgICAgZ2xvYmFsRGVmYXVsdERhdGFT
dG9yZSgpID0gbnVsbHB0cjsKK30KKworYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0
YVN0b3JlRXhpc3RzKCkKK3sKKyAgICByZXR1cm4gISFnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCk7
Cit9CisKK1JlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCit7CisgICAgYXV0byBj
b25maWd1cmF0aW9uID0gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwor
CisgICAgY29uZmlndXJhdGlvbi0+c2V0UGVyc2lzdGVudCh0cnVlKTsKKworICAgIGNvbmZpZ3Vy
YXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdEFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+
c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7
CisgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFDYWNoZURpcmVjdG9yeShkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpKTsKKworICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBj
b25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRlZmF1
bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVj
dG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoZGVm
YXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkp
OworICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnko
ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJh
dGlvbi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHREZXZpY2VJ
ZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CisKKyAgICBjb25maWd1cmF0aW9uLT5zZXRK
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkoKSk7CisKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK30KKwogV2Vi
c2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CkBAIC0xNzI4LDcgKzE3ODAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OnJlc2V0Q2FjaGVNYXhBZ2VDCiBib29sIFdlYnNpdGVEYXRhU3RvcmU6OmlzQXNzb2NpYXRlZFBy
b2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkgY29uc3QKIHsKICAgICBpZiAo
YXV0byogcHJvY2Vzc1Bvb2xEYXRhU3RvcmUgPSBwcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3Jl
KCkpCi0gICAgICAgIHJldHVybiAmcHJvY2Vzc1Bvb2xEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3Rv
cmUoKSA9PSB0aGlzOworICAgICAgICByZXR1cm4gcHJvY2Vzc1Bvb2xEYXRhU3RvcmUgPT0gdGhp
czsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE3NTQsNyArMTgwNiw3IEBAIEhhc2hTZXQ8
UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gV2Vic2l0ZUQKICAgICB9CiAKICAgICBpZiAocHJvY2Vz
c1Bvb2xzLmlzRW1wdHkoKSAmJiBjb3VudCAmJiBlbnN1cmVBUG9vbEV4aXN0cykgewotICAgICAg
ICBhdXRvIHByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
KG1fY29uZmlndXJhdGlvbikpOworICAgICAgICBhdXRvIHByb2Nlc3NQb29sID0gV2ViUHJvY2Vz
c1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkpOwog
ICAgICAgICBwcm9jZXNzUG9vbHMuYWRkKHByb2Nlc3NQb29sLnB0cigpKTsKICAgICB9CiAKQEAg
LTIwMDEsNiArMjA1MywyOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmFkZFNlY0tleVByb3h5
U3RvCiB9CiAjZW5kaWYKIAorI2lmICFQTEFURk9STShDT0NPQSkKK1dURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2
MzY5IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzcwCisg
ICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudC4KKyAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKK30KKyNlbmRpZgor
CisjaWYgIVVTRShHTElCKQorV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERl
dmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgLy8gTm90IGltcGxlbWVu
dGVkLgorICAgIHJldHVybiBXVEY6OlN0cmluZygpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUo
V0VCX0FVVEhOKQogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uKE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mJiBjb25m
aWd1cmF0aW9uKQogewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MiwxMSArOTIsMTkgQEAgZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJv
bXB0U3RhdHVzOwogc3RydWN0IFBsdWdpbk1vZHVsZUluZm87CiAjZW5kaWYKIAotY2xhc3MgV2Vi
c2l0ZURhdGFTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJs
aWMgSWRlbnRpZmllZDxXZWJzaXRlRGF0YVN0b3JlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdl
YnNpdGVEYXRhU3RvcmU+ICB7CitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlIDogcHVibGljIEFQSTo6
T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6V2Vic2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBJ
ZGVudGlmaWVkPFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2Vic2l0
ZURhdGFTdG9yZT4gIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+
IGRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBzdGF0aWMgYm9vbCBkZWZhdWx0RGF0YVN0b3JlRXhp
c3RzKCk7CisgICAgc3RhdGljIHZvaWQgZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3Rpbmco
KTsKKyAgICBzdGF0aWMgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+
IGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CisKICAgICBzdGF0aWMgUmVmPFdlYnNp
dGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnQoKTsKICAgICBzdGF0aWMgUmVmPFdlYnNp
dGVEYXRhU3RvcmU+IGNyZWF0ZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYs
IFBBTDo6U2Vzc2lvbklEKTsKLSAgICB2aXJ0dWFsIH5XZWJzaXRlRGF0YVN0b3JlKCk7CisKKyAg
ICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBleHBsaWNp
dCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwg
UEFMOjpTZXNzaW9uSUQpOworICAgIH5XZWJzaXRlRGF0YVN0b3JlKCk7CiAKICAgICBzdGF0aWMg
V2Vic2l0ZURhdGFTdG9yZSogZXhpc3RpbmdOb25EZWZhdWx0RGF0YVN0b3JlRm9yU2Vzc2lvbklE
KFBBTDo6U2Vzc2lvbklEKTsKIApAQCAtMjY1LDEwICsyNzMsMjMgQEAgcHVibGljOgogICAgIFNP
QXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yJiBzb0F1dGhvcml6YXRpb25Db29yZGluYXRvcigpIHsg
cmV0dXJuIG1fc29BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IuZ2V0KCk7IH0KICNlbmRpZgogCi1w
cml2YXRlOgotICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQpOwot
ICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1
bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6
U3RyaW5nIGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpT
dHJpbmcgZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKKyAgICBzdGF0
aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOworICAgIHN0YXRp
YyBXVEY6OlN0cmluZyBkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOworICAgIHN0
YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKKyNpZiBV
U0UoR0xJQikKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEhTVFNEaXJlY3RvcnkoKTsK
KyNlbmRpZgorICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdENhY2hlU3RvcmFnZURp
cmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFDYWNoZURpcmVj
dG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2Fs
dHNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRKYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOwogCitwcml2YXRlOgogICAgIHZvaWQgZmV0
Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJz
aXRlRGF0YUZldGNoT3B0aW9uPiwgUmVmUHRyPFdvcmtRdWV1ZT4mJiwgRnVuY3Rpb248dm9pZChW
ZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4mJiBhcHBseSk7CiAKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdGlhbGl6ZSgpOwpAQCAtMjc5LDYgKzMwMCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1TZXROZXR3b3JrUGFyYW1ldGVycyhXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYpOwog
I2VuZGlmCiAKKyAgICBXZWJzaXRlRGF0YVN0b3JlKCk7CisKKyAgICBlbnVtIFNob3VsZENyZWF0
ZURpcmVjdG9yeSB7IENyZWF0ZURpcmVjdG9yeSwgRG9udENyZWF0ZURpcmVjdG9yeSB9OworICAg
IHN0YXRpYyBXVEY6OlN0cmluZyB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnkg
PSBDcmVhdGVEaXJlY3RvcnkpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFt
ZSk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKKyAgICAK
ICAgICBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IHByb2Nlc3NQb29scyhzaXplX3Qg
Y291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBib29sIGVuc3VyZUFQ
b29sRXhpc3RzID0gdHJ1ZSkgY29uc3Q7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKHJldmlz
aW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTIgKzI2
LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNs
dWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQot
ICAgIDogbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkKKyAgICA6IG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQogewogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIHVp
bnQ2NF90IG1fcGVyT3JpZ2luU3RvcmFnZVF1b3RhIHsgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFu
YWdlcjo6ZGVmYXVsdFF1b3RhKCkgfTsKICAgICBTdHJpbmcgbV9uZXR3b3JrQ2FjaGVEaXJlY3Rv
cnk7CiAgICAgU3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKLSAgICBTdHJpbmcg
bV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lOworICAgIFN0cmluZyBt
X2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgeyAiRmlsZXMiX3MgfTsK
ICAgICBTdHJpbmcgbV9tZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2luZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3Rvcnk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShy
ZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogI2ltcG9ydCAiQ29va2llU3Rv
cmFnZVV0aWxzQ0YuaCIKKyNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlN0
b3JhZ2VNYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aCIKICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCkBAIC0yMzAsNCArMjMx
LDE2MSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtUmVtb3ZlUmVjCiAgICAgV2Vi
Q29yZTo6cmVtb3ZlUmVjZW50bHlNb2RpZmllZFJlY2VudFNlYXJjaGVzKG9sZGVzdFRpbWVUb1Jl
bW92ZSk7CiB9CiAKK05TU3RyaW5nICpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5ID0g
QCJXZWJEYXRhYmFzZURpcmVjdG9yeSI7CitOU1N0cmluZyAqV2ViU3RvcmFnZURpcmVjdG9yeURl
ZmF1bHRzS2V5ID0gQCJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5
IjsKK05TU3RyaW5nICpXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldl
YktpdE1lZGlhQ2FjaGVEaXJlY3RvcnkiOworTlNTdHJpbmcgKldlYktpdE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSI7CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KCkKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIFRoaXMg
cXVpcmsgdXNlZCB0byBtYWtlIHRoZXNlIGFwcHMgc2hhcmUgYXBwbGljYXRpb24gY2FjaGUgc3Rv
cmFnZSwgYnV0IGRvZXNuJ3QgYWNjb21wbGlzaCB0aGF0IGFueSBtb3JlLgorICAgIC8vIFByZXNl
cnZpbmcgaXQgYXZvaWRzIHRoZSBuZWVkIHRvIG1pZ3JhdGUgZGF0YSB3aGVuIHVwZ3JhZGluZy4K
KyAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSBzaG91bGQganVzdCBoYXZlIFNhZmFyaSwgV2ViQXBw
LCBhbmQgd2ViYm9va21hcmtzZCBjcmVhdGUgYSBkYXRhIHN0b3JlIHdpdGgKKyAgICAvLyB0aGlz
IGFwcGxpY2F0aW9uIGNhY2hlIHBhdGgsIGJ1dCB0aGF0J3Mgbm90IHN1cHBvcnRlZCBhcyBvZiBy
aWdodCBub3cuCisgICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFy
aSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkFwcCgpIHx8IFdlYkNvcmU6OklP
U0FwcGxpY2F0aW9uOjppc1dlYkJvb2ttYXJrc0QoKSkgeworICAgICAgICBOU1N0cmluZyAqY2Fj
aGVQYXRoID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAIkxpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJdOworCisgICAgICAgIHJl
dHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY2FjaGVQYXRoLnN0
cmluZ0J5U3RhbmRhcmRpemluZ1BhdGgpOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIGNh
Y2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZsaW5lV2ViQXBwbGljYXRp
b25DYWNoZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2Fj
aGVTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIkNhY2hlU3RvcmFnZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1
cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSIp
OworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURp
cmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIk1lZGlhQ2FjaGUiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0
ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4ZWREQiIpOworfQor
CitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKCJTZXJ2aWNlV29ya2VycyIpOworfQorCitXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1
cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkxvY2FsU3Rv
cmFnZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUtleXMiKTsKK30KKworV1RGOjpTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAg
ICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIldl
YlNRTCIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7
Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIkphdmFTY3JpcHRDb3JlRGVidWciLCBEb250Q3JlYXRlRGlyZWN0
b3J5KTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwg
U2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkKK3sKKyAgICBzdGF0
aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBzdGF0aWMgTlNVUkwgKnRlbXBVUkw7
CisgICAgCisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBOU1VSTCAq
dXJsID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpOU1RlbXBvcmFyeURpcmVjdG9yeSgpIGlzRGly
ZWN0b3J5OllFU107CisgICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNz
SGFzQ29udGFpbmVyKCkpIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVy
ID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBp
ZiAoIWJ1bmRsZUlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9
IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVy
bCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNE
aXJlY3Rvcnk6WUVTXTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGVtcFVSTCA9IFtb
dXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVT
XSByZXRhaW5dOworICAgIH0pOworICAgIAorICAgIE5TVVJMICp1cmwgPSBbdGVtcFVSTCBVUkxC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOwor
CisgICAgaWYgKHNob3VsZENyZWF0ZURpcmVjdG9yeSA9PSBDcmVhdGVEaXJlY3RvcnkKKyAgICAg
ICAgJiYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0
VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVy
cm9yOm51bGxwdHJdKSkKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVj
dG9yeSAlQCIsIHVybCk7CisgICAgCisgICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJp
bmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47CisgICAgc3RhdGljIE5TVVJMICpjYWNoZVVSTDsKKworICAgIGRpc3BhdGNoX29uY2UoJm9u
Y2VUb2tlbiwgXnsKKyAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TQ2FjaGVzRGlyZWN0b3J5IGluRG9tYWluOk5TVXNl
ckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVs
bHB0cl07CisgICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKworICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigp
KSB7CisgICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBt
YWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOworICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVu
dGlmaWVyKQorICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5m
byBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7CisgICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107
CisgICAgICAgIH0KKworICAgICAgICBjYWNoZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOworICAgIH0pOwor
CisgICAgTlNVUkwgKnVybCA9IFtjYWNoZVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0
ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKKyAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CisKKyAgICBy
ZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOworfQor
CitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sK
KyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBzdGF0aWMgTlNVUkwg
KndlYnNpdGVEYXRhVVJMOworCisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAg
ICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JE
aXJlY3Rvcnk6TlNMaWJyYXJ5RGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBw
cm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07CisgICAgICAg
IGlmICghdXJsKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKwor
ICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIg
aXNEaXJlY3Rvcnk6WUVTXTsKKworICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRh
aW5lcigpKSB7CisgICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1
bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOworICAgICAgICAgICAgaWYgKCFidW5k
bGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9j
ZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7CisgICAgICAgICAgICB1cmwgPSBbdXJs
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5
OllFU107CisgICAgICAgIH0KKworICAgICAgICB3ZWJzaXRlRGF0YVVSTCA9IFtbdXJsIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0RpcmVjdG9yeTpZRVNdIHJl
dGFpbl07CisgICAgfSk7CisKKyAgICBOU1VSTCAqdXJsID0gW3dlYnNpdGVEYXRhVVJMIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107Cisg
ICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0
VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVy
cm9yOm51bGxwdHJdKQorICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0
b3J5ICVAIiwgdXJsKTsKKworICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lz
dGVtUmVwcmVzZW50YXRpb247Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS93aW4vV2Vic2l0ZURhdGFTdG9yZVdp
bi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogI2luY2x1ZGUgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDUsNCArNDYsNTkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpwbGF0Zm9ybVJlbW92ZVJlYwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK1N0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCit7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2Fj
aGUiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJD
YWNoZVN0b3JhZ2UiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3
b3JrQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOworfQorCitTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQorewor
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJTZXJ2aWNlV29ya2VycyIp
OworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2Fs
U3RvcmFnZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Iik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7Cit9CisKK1N0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9j
ZXNzUHJveHlHTGliLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
bGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw4ICs0Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExh
dW5jaE8KICAgICAgICAgaWYgKCFkYXRhU3RvcmUpIHsKICAgICAgICAgICAgIC8vIFByZXdhcm1l
ZCBwcm9jZXNzZXMgZG9uJ3QgaGF2ZSBhIFdlYnNpdGVEYXRhU3RvcmUgeWV0LCBzbyB1c2UgdGhl
IHByaW1hcnkgV2Vic2l0ZURhdGFTdG9yZSBmcm9tIHRoZSBXZWJQcm9jZXNzUG9vbC4KICAgICAg
ICAgICAgIC8vIFRoZSBwcm9jZXNzIHdvbid0IGJlIHVzZWQgaWYgY3VycmVudCBXZWJzaXRlRGF0
YVN0b3JlIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBXZWJQcm9jZXNzUG9vbCBwcmltYXJ5IG9uZS4K
LSAgICAgICAgICAgIGlmIChhdXRvKiBhcGlEYXRhU3RvcmUgPSBtX3Byb2Nlc3NQb29sLT53ZWJz
aXRlRGF0YVN0b3JlKCkpCi0gICAgICAgICAgICAgICAgZGF0YVN0b3JlID0gJmFwaURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICAgICAgZGF0YVN0b3JlID0gV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwogICAgICAgICB9CiAKICAgICAgICAg
QVNTRVJUKGRhdGFTdG9yZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dl
YnNpdGVEYXRhU3RvcmVHTGliLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkocmV2aXNpb24gMjQ5NzMyKQkoZnJv
bSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xp
Yi5jcHA6MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0
YVN0b3JlR0xpYi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorCisjaW5jbHVkZSA8
d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisKKyNp
ZiBQTEFURk9STShHVEspCisjZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3ZWJraXRndGsiCisjZWxp
ZiBQTEFURk9STShXUEUpCisjZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCisjZW5kaWYKKwor
bmFtZXNwYWNlIEFQSSB7CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRB
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1Mg
ImFwcGxpY2F0aW9ucyIpOworfQorCisvLyBGSVhNRTogVGhlIG90aGVyIGRpcmVjdG9yaWVzIGlu
IHRoaXMgZmlsZSBhcmUgc2hhcmVkIGJldHdlZW4gYWxsIGFwcGxpY2F0aW9ucyB1c2luZyBXZWJL
aXRHVEsuCisvLyBXaHkgaXMgb25seSB0aGlzIGRpcmVjdG9yeSBuYW1lc3BhY2VkIHRvIGEgcGFy
dGljdWxhciBhcHBsaWNhdGlvbj8KK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9w
cmduYW1lKCkpLCAiV2ViS2l0Q2FjaGUiKSk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNo
ZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihnX2dldF9wcmduYW1lKCkpLCAiQ2FjaGVTdG9yYWdlIikpOworfQorCitXVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQor
eworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGF0YWJhc2VzIiBHX0RJUl9TRVBB
UkFUT1JfUyAiaW5kZXhlZGRiIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1
cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJF
Q1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgInNlcnZpY2V3b3JrZXJzIik7Cit9CisKK1dURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQorewor
ICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihC
QVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAibG9jYWxzdG9yYWdlIik7Cit9CisKK1dU
Rjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgIm1lZGlha2V5cyIpOwor
fQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3Rv
cmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJkZXZp
Y2VpZGhhc2hzYWx0cyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBB
UkFUT1JfUyAiZGF0YWJhc2VzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRIU1RTRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9S
X1MpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRP
Ul9TICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdU
Rjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7Cit9CisK
K1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQorewor
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFfZGly
KCkpLCBkaXJlY3RvcnlOYW1lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9X
ZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9y
ZS5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtMzUsNyArMzUs
NyBAQAogI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid3BlIgogI2VuZGlmCiAKLW5hbWVzcGFjZSBB
UEkgeworbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQ5NzMy
KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw2IEBACiAJCTFBMzAwNjZFMTExMEY0RjcwMDMxOTM3
QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTMwMDY2QzExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5l
c3NUaW1lci5oICovOyB9OwogCQkxQTMzNERFRDE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFy
ZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFw
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUEzMzRERUUxNkRFOEY4ODAwNkE4RTM4IC8q
IFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBMzM0REVDMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1h
cE1lc3NhZ2VzLmggKi87IH07Ci0JCTFBMzYzNUFBMUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJz
aXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTM2MzVBODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oICov
OyB9OwogCQkxQTNDODg4MDE4QTVBQkFFMDBDNEM5NjIgLyogV0tQcmVmZXJlbmNlc0ludGVybmFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNDODg3
RjE4QTVBQkFFMDBDNEM5NjIgLyogV0tQcmVmZXJlbmNlc0ludGVybmFsLmggKi87IH07CiAJCTFB
M0NDMTY3MTg5MDZBQ0YwMDFFNkVEOCAvKiBXS1dlYlZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0NDMTY1MTg5MDZBQ0YwMDFFNkVEOCAvKiBX
S1dlYlZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07
CiAJCTFBM0NDMTY5MTg5MDdFQjAwMDFFNkVEOCAvKiBXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0NDMTY4MTg5
MDdFQjAwMDFFNkVEOCAvKiBXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCAqLzsgfTsKQEAgLTE3MjUs
NiArMTcyNCw4IEBACiAJCQljb21waWxlclNwZWMgPSBjb20uYXBwbGUuY29tcGlsZXJzLnByb3h5
LnNjcmlwdDsKIAkJCWZpbGVQYXR0ZXJucyA9ICIqLmgiOwogCQkJZmlsZVR5cGUgPSBwYXR0ZXJu
LnByb3h5OworCQkJaW5wdXRGaWxlcyA9ICgKKwkJCSk7CiAJCQlpc0VkaXRhYmxlID0gMTsKIAkJ
CW91dHB1dEZpbGVzID0gKAogCQkJCSIkKEhFQURFUl9PVVRQVVRfRElSKS8kKElOUFVUX0ZJTEVf
TkFNRSkiLApAQCAtMjEyMSw5ICsyMTIyLDYgQEAKIAkJMUEzMzRERUExNkRFOEI2ODAwNkE4RTM4
IC8qIFN0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN0b3JhZ2VBcmVhTWFwLm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTMzNERFQjE2REU4Rjg4MDA2
QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNl
aXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFBMzM0REVD
MTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQkxQTM2MzVBNzFBMzE0NEEzMDBFRDYxOTcgLyog
QVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBUElXZWJzaXRlRGF0YVN0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUEzNjM1QTgxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTM2MzVBQjFBMzE0NUU1MDBFRDYxOTcgLyogQVBJ
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTNBNzNDQjFBNDhDNkQ0MDA3MjMxQjMgLyogQVBJUGFnZUdyb3VwSGFuZGxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVBhZ2VHcm91cEhh
bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBM0E3M0NDMUE0OEM2RDQw
MDcyMzFCMyAvKiBBUElQYWdlR3JvdXBIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQVBJUGFnZUdyb3VwSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBM0M4ODdGMThBNUFCQUUwMEM0Qzk2MiAvKiBXS1ByZWZlcmVuY2VzSW50ZXJuYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcmVmZXJlbmNlc0ludGVybmFsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzY3LDcgKzYzNjUsNiBAQAogCQkJCTdD
RUZBOTYwMUFDMDk5OTMwMEI5MTBGRCAvKiBBUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1t
ICovLAogCQkJCTVDQTQ2RTdBMjFGMUEyMzkwMENFODZCNCAvKiBBUElIVFRQQ29va2llU3RvcmVD
b2NvYS5tbSAqLywKIAkJCQlGRUQzQzFEQTFCNDQ3QUU4MDBFMEVCN0YgLyogQVBJU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlQ29jb2EubW0gKi8sCi0JCQkJMUEzNjM1QUIxQTMxNDVFNTAwRUQ2MTk3IC8q
IEFQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSAqLywKIAkJCQkxQUZERTY0MzE5NTEwQjU1MDBD
NDhGRkEgLyogTGVnYWN5QnVuZGxlRm9yQ2xhc3MubW0gKi8sCiAJCQkJMUMyMDkzNUUyMjMxOENC
MDAwMDI2QTM5IC8qIE5TQXR0cmlidXRlZFN0cmluZy5oICovLAogCQkJCTFDMjA5MzVGMjIzMThD
QjAwMDAyNkEzOSAvKiBOU0F0dHJpYnV0ZWRTdHJpbmcubW0gKi8sCkBAIC03OTc3LDggKzc5NzQs
NiBAQAogCQkJCTJEODc4NjIyMUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5o
ICovLAogCQkJCTFBRTI4NjgxMUM3RjkzODYwMDY5QUM0RiAvKiBBUElXZWJzaXRlRGF0YVJlY29y
ZC5jcHAgKi8sCiAJCQkJMUFFMjg2ODIxQzdGOTM4NjAwNjlBQzRGIC8qIEFQSVdlYnNpdGVEYXRh
UmVjb3JkLmggKi8sCi0JCQkJMUEzNjM1QTcxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVE
YXRhU3RvcmUuY3BwICovLAotCQkJCTFBMzYzNUE4MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJz
aXRlRGF0YVN0b3JlLmggKi8sCiAJCQkJNUM4REQzN0QxRkU0NTAxMTAwRjJBNTU2IC8qIEFQSVdl
YnNpdGVQb2xpY2llcy5jcHAgKi8sCiAJCQkJNUM4REQzN0MxRkU0NTAxMTAwRjJBNTU2IC8qIEFQ
SVdlYnNpdGVQb2xpY2llcy5oICovLAogCQkJCTFBNjU2M0UyMUI3QThDNTAwMDlDRjc4NyAvKiBB
UElXaW5kb3dGZWF0dXJlcy5jcHAgKi8sCkBAIC05MzgyLDcgKzkzNzcsNiBAQAogCQkJCUM1RTFB
RkVEMTZCMjEwMTcwMDZDQzFGMiAvKiBBUElXZWJBcmNoaXZlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDNUUxQUZFRjE2QjIxMDI5MDA2Q0MxRjIgLyogQVBJV2ViQXJjaGl2ZVJlc291cmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUUyODY4NDFDN0Y5Mzg2MDA2OUFDNEYgLyogQVBJV2Vic2l0ZURh
dGFSZWNvcmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBMzYzNUFBMUEzMTQ0QTMwMEVENjE5NyAv
KiBBUElXZWJzaXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTY1NjNFNTFCN0E4
QzUwMDA5Q0Y3ODcgLyogQVBJV2luZG93RmVhdHVyZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0
OEQyQTg1MjE1ODNBN0UwMEM2NzUyQiAvKiBBcHBLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBRDRDMTkzMUIzOUYzMzIwMEFCQzI4RSAvKiBBcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oIGlu
IEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9X
ZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2Vi
TWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDYg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlcjo6c2V0V2Vic2l0ZURhdGFTdG9yZShjb25zdCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBBU1NFUlQoIXBhcmFtZXRlcnMubWVkaWFLZXlTdG9y
YWdlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CiAgICAgbV9tZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnkg
PSBwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378529</attachid>
            <date>2019-09-10 19:29:10 -0700</date>
            <delta_ts>2019-09-10 21:24:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201655-20190910192909.patch</filename>
            <type>text/plain</type>
            <size>212023</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2NyBAQAorMjAxOS0wOS0xMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB1bm5l
Y2Vzc2FyeSBhYnN0cmFjdGlvbnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBmb3Vy
IHRoaW5ncyB0byBzaW1wbGlmeSBXZWJzaXRlRGF0YVN0b3JlIGNvZGU6CisgICAgICAgIDEuIEl0
IHJlbW92ZXMgQVBJOjpXZWJzaXRlRGF0YVN0b3JlLCB3aGljaCB3YXMganVzdCBhbiB1bm5lY2Vz
c2FyeSB3cmFwcGVyIGFyb3VuZCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUuCisgICAgICAgIDIu
IEl0IGRlcHJlY2F0ZXMgdGhlIHVudXNlZCBhbGlhc2VzIG9mIFdlYnNpdGVEYXRhU3RvcmUsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYW5kIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZgorICAgICAgICAzLiBJdCByZW1vdmVzIHRoZSB1bnVzZWQgQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHByb3BlcnRpZXMgdGhhdCBoYXZlIGJlZW4gbW92ZWQgdG8gV2Vic2l0ZURhdGFTdG9y
ZS4KKyAgICAgICAgNC4gSXQgbWFrZXMgV0tXZWJzaXRlRGF0YVN0b3JlLl9kZWxlZ2F0ZSB3ZWFr
IGluc3RlYWQgb2Ygc3Ryb25nLCBhcyBhbHJlYWR5IGFubm90YXRlZCBpbiBXS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZSBpbiBiZWhh
dmlvciBmcm9tIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZToKKyAg
ICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAg
ICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tp
ZVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6CisgICAg
ICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURh
dGFTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
RGF0YVN0b3JlLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
UG9saWNpZXMuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlUG9saWNpZXM6OmRhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5zKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJEZWxldGVBbGxFbnRyaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
UG9saWN5TGlzdGVuZXIuY3BwOgorICAgICAgICAodXNlV2l0aFBvbGljaWVzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCk6CisgICAgICAgIChXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KToKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAoV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLUmVzb3VyY2VDYWNo
ZU1hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENh
Y2hlT3JpZ2lucyk6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZv
ck9yaWdpbik6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFs
bE9yaWdpbnMpOgorICAgICAgICAodG9XZWJzaXRlRGF0YVR5cGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdl
dERlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlTm9u
UGVyc2lzdGVudERhdGFTdG9yZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVX
aXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29v
a2llU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZVdpdGhDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RT
ZWVuKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVBy
ZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKToKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSk6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5n
VGVzdCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hvdWxkQ2xh
c3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzTWF4U3RhdGlzdGljc0VudHJpZXMpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1BydW5lRW50cmllc0Rvd25Ubyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9u
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGb3JPcmlnaW4p
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnMpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW4pOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmln
aW5TdG9yYWdlUXVvdGEpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdKToK
KyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdKToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIGh0dHBDb29raWVTdG9yZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6bW9kaWZpZWRTaW5jZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOmZv
ckRhdGFSZWNvcmRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgX2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKToKKyAgICAgICAgKCtbV0tXZWJzaXRl
RGF0YVN0b3JlIF9kZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZ10pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3aXRoT3B0aW9u
czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Blck9yaWdpblN0b3Jh
Z2VRdW90YV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFBlck9yaWdpblN0
b3JhZ2VRdW90YTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRDYWNoZVN0
b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOl0pOgor
ICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcl0p
OgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldEFsbG93c0NlbGx1bGFyQWNjZXNz
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93c0NlbGx1bGFyQWNjZXNz
XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJveHlDb25maWd1cmF0aW9u
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFNvdXJj
ZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXI6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0QWxsb3dzVExTRmFs
bGJhY2s6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dzVExTRmFsbGJh
Y2tdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm94eUNvbmZpZ3VyYXRpb25d
KToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zv
cjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9z
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRJc1ByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERv
bWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3Jl
IF9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOl0pOgorICAgICAgICAoLVtXS1dlYnNp
dGVEYXRhU3RvcmUgX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyXSk6CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHNldF9kZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAg
ICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29y
a1Byb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ondl
YnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bV93ZWJQcm9jZXNzQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRl
bnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJt
ZWRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp0ZW1w
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxEZWZhdWx0RGF0
YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHRE
YXRhU3RvcmVGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2wgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAg
ICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6
IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRIU1RTRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Ondl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOS0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEhhbmdzIG9uIFN3aXNz
LmNvbSBkdWUgdG8gdGhlIHdlYiBwcm9jZXNzIGJlaW5nIGJsb2NrZWQgb24gU3RvcmFnZUFyZWFN
YXA6OkxvYWRWYWx1ZXNJZk5lZWRlZApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAg
ICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAotICAgIFVJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAogICAgIFVJ
UHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcApJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5E
IFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAot
ICAgIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKIAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVy
V2luLmNwcApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDYgQEAgVUlQcm9j
ZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVu
dFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElVc2VyU3R5bGVTaGVldC5jcHAKLVVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElXaW5kb3dGZWF0dXJlcy5jcHAKIApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yNzQsNyArMjc0LDYgQEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubQogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNv
Y29hLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCi1VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9MZWdhY3lCdW5kbGVGb3JDbGFzcy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0
dHJpYnV0ZWRTdHJpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3Qu
bW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9Tb3VyY2VzR1RLLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw2IEBAIFVJ
UHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9n
dGsvV0tWaWV3LmNwcAogCiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVz
dC5jcHAgQG5vLXVuaWZ5CkBAIC0yMzIsNiArMjMxLDcgQEAgVUlQcm9jZXNzL2NhaXJvL0JhY2tp
bmdTdG9yZUNhaXJvLmNwcCBAbgogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcAogVUlQcm9jZXNzL2dzdHJlYW1lci9X
ZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTExNCw3ICsxMTQsNiBAQCBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMu
Y3BwCiBVSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKIAogVUlQcm9jZXNzL0FQSS9nbGli
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlR0xpYi5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJ
L2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXBwbGljYXRpb25JbmZvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwIEBuby11bmlmeQpAQCAtMTkyLDYgKzE5MSw3IEBA
IFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3YKIAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5
R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5p
ZnkKIAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKIFVJ
UHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJu
aW5nLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNyAr
NDE2LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgICwg
bV9wcmVmZXJlbmNlcygqbV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpKQogICAgICwgbV91
c2VyQ29udGVudENvbnRyb2xsZXIoKm1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRl
ZExpbmtTdG9yZSgpKQotICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+
d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCisgICAgLCBtX3dlYnNpdGVE
YXRhU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKQogICAgICwgbV91
c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgeyBtX2NvbmZpZ3VyYXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5KCkgfQogICAgICwgbV90cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZp
Z3VyYXRpb24tPnRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCkBAIC0y
ODY3LDggKzI4NjcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9s
CiAgICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gZGF0YTsKICAgICBpZiAocG9saWNp
ZXMpIHsKICAgICAgICAgZGF0YSA9IHBvbGljaWVzLT5kYXRhKCk7Ci0gICAgICAgIGlmIChwb2xp
Y2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpICYmICZwb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgp
LT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSkgewotICAgICAg
ICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCktPndl
YnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAgaWYgKHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3Jl
KCkgJiYgcG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlLnB0
cigpKSB7CisgICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gKnBvbGljaWVzLT53ZWJzaXRl
RGF0YVN0b3JlKCk7CiAgICAgICAgICAgICBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDQsOCArMjQ0LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nl
c3NQb29sKEFQSTo6UHJvYwogICAgICAgICBQcm9jZXNzOjpzZXRJZGVudGlmaWVyKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKICAgICB9KTsKIAotICAgIGlmICghbV93
ZWJzaXRlRGF0YVN0b3JlICYmIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZUV4aXN0cygpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSAm
JiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCisgICAgICAgIG1f
d2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsK
IAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV9jb25maWd1cmF0aW9uLT5hbHdheXNSZXZhbGlk
YXRlZFVSTFNjaGVtZXMoKSkKICAgICAgICAgbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2
YWxpZGF0ZWQuYWRkKHNjaGVtZSk7CkBAIC00ODMsMTQgKzQ4MywxOSBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKLSAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZW5kaW5nQ29va2ll
cyA9IGNvcHlUb1ZlY3RvcihtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5w
ZW5kaW5nQ29va2llcygpKTsKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuY2xlYXJQZW5kaW5nQ29va2llcygpOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1
bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fd2Vi
c2l0ZURhdGFTdG9yZS0+cGVuZGluZ0Nvb2tpZXMoKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFT
dG9yZS0+Y2xlYXJQZW5kaW5nQ29va2llcygpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAg
ICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyKCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNr
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJh
Y2soKSA/IEFsbG93c1RMU0ZhbGxiYWNrOjpZZXMgOiBBbGxvd3NUTFNGYWxsYmFjazo6Tm87Ci0j
ZW5kaWYKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkubmV0
d29ya2luZ0hhc0JlZ3VuKCk7CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllciA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKCk7CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRl
bnRpZmllciA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyKCk7CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNrID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5hbGxvd3NUTFNGYWxsYmFjaygpID8gQWxsb3dzVExTRmFsbGJhY2s6OlllcyA6
IEFsbG93c1RMU0ZhbGxiYWNrOjpObzsKKyNlbmRpZgorICAgICAgICBtX3dlYnNpdGVEYXRhU3Rv
cmUtPnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCk7CisgICAgICAgIHBhcmFtZXRlcnMu
ZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLm5ldHdv
cmtDYWNoZURpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb2x2ZWROZXR3b3JrQ2Fj
aGVEaXJlY3RvcnkoKTsKKyAgICAgICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVk
TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuZGVm
YXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLm5ldHdvcmtD
YWNoZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMubmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKKworICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPm5ldHdvcmtpbmdIYXNCZWd1bigpOwog
ICAgIH0KIAogICAgIHBhcmFtZXRlcnMuY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWwoKTsKQEAgLTUw
Miw5ICs1MDcsNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAg
ICAgZm9yIChhdXRvJiBzY2hlbWUgOiBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJv
dG9jb2xzKQogICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9t
UHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwogCi0gICAgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJl
Y3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNoZURpcmVjdG9yeSgpOwotICAgIGlmICgh
cGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5k
aXNrQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJ
T04pCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJl
dmFsaWRhdGlvbiA9IG1fY29uZmlndXJhdGlvbi0+ZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0
aW9uRW5hYmxlZCgpOwogI2VuZGlmCkBAIC01NDIsMjIgKzU0NCwyNSBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QgPSBjb3B5VG9WZWN0b3IobV9zY2hl
bWVzVG9SZWdpc3RlckFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QpOwogCiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCi0gICAgLy8gKioqKioqKioqCi0gICAgLy8gSU1QT1JUQU5UOiBE
byBub3QgY2hhbmdlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRhdGFiYXNl
cyBvbiBkaXNrIHdpdGhvdXQgZmlyc3QgY29uc3VsdGluZyBhIHJldmlld2VyIGZyb20gQXBwbGUg
KDxyZGFyOi8vcHJvYmxlbS8xNzQ1NDcxMj4pCi0gICAgLy8gKioqKioqKioqCi0gICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnkg
PSBtX2NvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgaWYg
KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGly
ZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFy
YW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKS5pbmRl
eGVkRGF0YWJhc2VEaXJlY3Rvcnk7Ci0gICAgCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRh
U3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
Ci0gICAgbmV0d29ya1Byb2Nlc3MtPmNyZWF0ZVN5bUxpbmtGb3JGaWxlVXBncmFkZShwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSk7
CisgICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUgJiYgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dERhdGFTdG9yZUV4aXN0cygpKSB7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0
b3JlLT5yZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOworICAgIH0KKyAgICBpZiAobV93
ZWJzaXRlRGF0YVN0b3JlKSB7CisgICAgICAgIC8vICoqKioqKioqKgorICAgICAgICAvLyBJTVBP
UlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQg
ZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJv
bSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKKyAgICAgICAgLy8gKioqKioqKioq
CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvbHZlZEluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSgpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAg
ICAgbmV0d29ya1Byb2Nlc3MtPmNyZWF0ZVN5bUxpbmtGb3JGaWxlVXBncmFkZShwYXJhbWV0ZXJz
LmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSk7Cisg
ICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKG1fd2Vi
c2l0ZURhdGFTdG9yZSkKLSAgICAgICAgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVz
b2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgICAgIHBhcmFt
ZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFT
dG9yZS0+cmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAg
aWYgKCFwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpCi0gICAg
ICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9ICBBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KCk7CisgICAgICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSA9ICBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRX
cml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnksIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CiAKICAgICBpZiAoIW1fc2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlLmlz
RW1wdHkoKSkKQEAgLTU2NiwxNiArNTcxLDE2IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlBy
b2Nlc3NQb29sOjplbnMKICAgICBwYXJhbWV0ZXJzLnNob3VsZERpc2FibGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgPSBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Rlcm1pbmF0aW9uRGVsYXk7CiAjZW5kaWYKIAotICAgIGF1dG8gbG9jYWxTdG9yYWdlRGly
ZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0b3JlID8gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkucmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IG51bGxTdHJpbmco
KTsKKyAgICBhdXRvIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/
IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IG51
bGxTdHJpbmcoKTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgbG9j
YWxTdG9yYWdlRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxT
dG9yYWdlRGlyZWN0b3J5KCk7CisgICAgICAgIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxv
Y2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRl
ZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7CiAKICAgICBpZiAobV93ZWJzaXRlRGF0YVN0b3JlKQotICAgICAgICBwYXJhbWV0ZXJz
LmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkucmVzb2x2ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBtX3dlYnNpdGVE
YXRhU3RvcmUtPnJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogICAg
IGlmIChwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKKyAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAKICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKQEAgLTYwMSwxNyArNjA2LDE3IEBAIE5l
dHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICB9IGVsc2UgaWYgKG1f
d2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOwog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgICAgIGVuYWJsZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5oYXNTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKCk7CisgICAgICAg
IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQgPSBtX3dlYnNpdGVE
YXRhU3RvcmUtPmhhc1N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soKTsKICNlbmRpZgogICAgICAg
ICBpZiAoZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljcykgewotICAgICAgICAgICAgYXV0byBu
ZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5wYXJhbWV0ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzOworICAgICAgICAg
ICAgYXV0byBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPnBh
cmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnM7CiAgICAgICAgICAgICBzaG91bGRJ
bmNsdWRlTG9jYWxob3N0ID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNob3VsZEluY2x1ZGVM
b2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgICAgICAgICBlbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVu
YWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7CiAgICAgICAgICAgICBtYW51YWxQ
cmV2YWxlbnRSZXNvdXJjZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KIAotICAgICAgICBw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90
YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnBlck9yaWdpblN0b3Jh
Z2VRdW90YSgpOwotICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJz
LnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhKCk7CisgICAg
ICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFn
ZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5wZXJPcmlnaW5TdG9yYWdlUXVvdGEoKTsKKyAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5
T3JpZ2luU3RvcmFnZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5wZXJUaGlyZFBhcnR5T3Jp
Z2luU3RvcmFnZVF1b3RhKCk7CiAgICAgfQogCiAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3M7CkBAIC03MDIsOCArNzA3
LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udAogCiAgICAgaWYg
KCF3ZWJzaXRlRGF0YVN0b3JlKSB7CiAgICAgICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQot
ICAgICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7Ci0gICAgICAgIHdlYnNpdGVEYXRhU3RvcmUgPSAmbV93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgICAgICAgICBtX3dlYnNp
dGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7
CisgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7CiAg
ICAgfQogCiAgICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkpCkBAIC03
OTUsMTIgKzgwMCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRDYWNoZVBhZ2UK
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkK
IHsKICAgICBtX3Jlc29sdmVkUGF0aHMuaW5qZWN0ZWRCdW5kbGVQYXRoID0gcmVzb2x2ZVBhdGhG
b3JTYW5kYm94RXh0ZW5zaW9uKGluamVjdGVkQnVuZGxlUGF0aCgpKTsKLSAgICBtX3Jlc29sdmVk
UGF0aHMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3Jp
dGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMud2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4
dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpOwotICAg
IG1fcmVzb2x2ZWRQYXRocy5tZWRpYUNhY2hlRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJl
YWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5tZWRp
YUNhY2hlRGlyZWN0b3J5KCkpOwotICAgIG1fcmVzb2x2ZWRQYXRocy5tZWRpYUtleVN0b3JhZ2VE
aXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4
dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0g
ICAgbV9yZXNvbHZlZFBhdGhzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IHJlc29sdmVBbmRD
cmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlv
bi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSk7Ci0KICAgICBtX3Jlc29sdmVkUGF0aHMu
YWRkaXRpb25hbFdlYlByb2Nlc3NTYW5kYm94RXh0ZW5zaW9uUGF0aHMucmVzZXJ2ZUNhcGFjaXR5
KG1fY29uZmlndXJhdGlvbi0+YWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkUGF0aHMoKS5zaXpl
KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IG1fY29uZmlndXJhdGlvbi0+YWRkaXRp
b25hbFJlYWRBY2Nlc3NBbGxvd2VkUGF0aHMoKSkKICAgICAgICAgbV9yZXNvbHZlZFBhdGhzLmFk
ZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnVuY2hlY2tlZEFwcGVuZChy
ZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24ocGF0aC5kYXRhKCkpKTsKQEAgLTgzNyw3ICs4
MzYsNyBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6CiAjaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgLy8gSW4gcGxhdGZvcm1zIHVzaW5nIEJ1
YmJsZXdyYXAgZm9yIHNhbmRib3hpbmcsIHByZXdhcm1lZCBwcm9jZXNzIGlzIGxhdW5jaGVkIHVz
aW5nIHRoZSBXZWJQcm9jZXNzUG9vbCBwcmltYXJ5IFdlYnNpdGVEYXRhU3RvcmUsCiAgICAgLy8g
c28gd2UgZG9uJ3QgdXNlIGl0IGluIGNhc2Ugb2YgdXNpbmcgYSBkaWZmZXJlbnQgV2Vic2l0ZURh
dGFTdG9yZS4KLSAgICBpZiAobV9zYW5kYm94RW5hYmxlZCAmJiBtX3dlYnNpdGVEYXRhU3RvcmUg
JiYgJm1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpICE9ICZ3ZWJzaXRlRGF0
YVN0b3JlKQorICAgIGlmIChtX3NhbmRib3hFbmFibGVkICYmIG1fd2Vic2l0ZURhdGFTdG9yZSAm
JiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCkgIT0gJndlYnNpdGVEYXRhU3RvcmUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogI2VuZGlmCiAKQEAgLTg4MCwyOSArODc5LDE5IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNlbmRXZWJQcm9jZXNzRGF0YVMKICAgICB3ZWJzaXRlRGF0YVN0b3JlLnJl
c29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCk7CiAKICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkQXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpOwotICAgIGlmIChwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkgPSBtX3Jlc29sdmVkUGF0aHMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKICAgICBp
ZiAoIXBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBh
cmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlw
ZTo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGly
ZWN0b3J5TmFtZSA9IHdlYnNpdGVEYXRhU3RvcmUuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3Vi
ZGlyZWN0b3J5TmFtZSgpOwotICAgIGlmIChwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLmFwcGxp
Y2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZpZ3VyYXRpb24tPmFw
cGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsKIAogICAgIHBhcmFtZXRl
cnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkRGF0
YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBpZiAocGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkgPSBtX3Jlc29sdmVkUGF0aHMud2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgaWYgKCFw
YXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVy
cy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdy
aXRlLCBwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsK
IAogICAgIHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUu
cmVzb2x2ZWRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgaWYgKHBhcmFtZXRlcnMubWVkaWFD
YWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHBhcmFtZXRlcnMubWVkaWFDYWNoZURp
cmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5tZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgIGlmICgh
cGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5t
ZWRpYUNhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBh
cmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBwYXJh
bWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2
ZWRNZWRpYUtleXNEaXJlY3RvcnkoKTsKLSAgICBpZiAocGFyYW1ldGVycy5tZWRpYUtleVN0b3Jh
Z2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFn
ZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5tZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnk7CiAg
ICAgaWYgKCFwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAg
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRo
KHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpU
eXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKIApAQCAtMTEwNyw3ICsxMDk2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
cHJvY2Vzc0RpZEZpbmlzaExhdQogICAgIG1fY29ubmVjdGlvbkNsaWVudC5kaWRDcmVhdGVDb25u
ZWN0aW9uKHRoaXMsIHByb2Nlc3MtPndlYkNvbm5lY3Rpb24oKSk7CiAKICAgICBpZiAobV93ZWJz
aXRlRGF0YVN0b3JlKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3Rv
cmUoKS5kaWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpOworICAgICAgICBtX3dlYnNpdGVEYXRhU3Rv
cmUtPmRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKQEAgLTExODYsNyAr
MTE3NSw3IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3MKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZU5ld1dlYlByb2Nlc3MoJndlYnNpdGVEYXRhU3RvcmUpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBtdXN0TWF0Y2hEYXRhU3RvcmUgPSBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKSAmJiAmd2Vic2l0ZURhdGFTdG9y
ZSAhPSAmQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCktPndlYnNpdGVE
YXRhU3RvcmUoKTsKKyAgICBib29sIG11c3RNYXRjaERhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKSAmJiAmd2Vic2l0ZURhdGFTdG9yZSAhPSBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CiAjZWxzZQogICAgIGJvb2wg
bXVzdE1hdGNoRGF0YVN0b3JlID0gZmFsc2U7CiAjZW5kaWYKQEAgLTEyMjAsNyArMTIwOSw3IEBA
IFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUKICAgICAgICAgLy8gV2Ug
dHJ5IHRvIGF2b2lkIGNyZWF0aW5nIHRoZSBkZWZhdWx0IGRhdGEgc3RvcmUgYXMgbG9uZyBhcyBw
b3NzaWJsZS4KICAgICAgICAgLy8gQnV0IGlmIHRoZXJlIGlzIGFuIGF0dGVtcHQgdG8gY3JlYXRl
IGEgd2ViIHBhZ2Ugd2l0aG91dCBhbnkgc3BlY2lmaWVkIGRhdGEgc3RvcmUsIHRoZW4gd2UgaGF2
ZSB0byBjcmVhdGUgaXQuCiAgICAgICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQotICAgICAg
ICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlKCkucHRyKCk7CisgICAgICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CiAKICAgICAgICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnNldFdlYnNpdGVEYXRhU3RvcmUobV93ZWJzaXRlRGF0YVN0b3JlLmdldCgp
KTsKICAgICB9CkBAIC0xMjMxLDggKzEyMjAsOCBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9j
ZXNzUG9vbDo6Y3JlYXRlCiAgICAgICAgIC8vIFNoYXJpbmcgcHJvY2Vzc2VzLCBlLmcuIHdoZW4g
Y3JlYXRpbmcgdGhlIHBhZ2UgdmlhIHdpbmRvdy5vcGVuKCkuCiAgICAgICAgIHByb2Nlc3MgPSAm
cGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPmVuc3VyZVJ1bm5pbmdQcm9jZXNzKCk7
CiAgICAgICAgIC8vIFdlIGRvIG5vdCBzdXBwb3J0IHNldmVyYWwgV2Vic2l0ZURhdGFTdG9yZXMg
c2hhcmluZyBhIHNpbmdsZSBwcm9jZXNzLgotICAgICAgICBBU1NFUlQocHJvY2Vzcy5nZXQoKSA9
PSBtX2R1bW15UHJvY2Vzc1Byb3h5IHx8ICZwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFT
dG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUo
KSk7Ci0gICAgICAgIEFTU0VSVCgmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPndl
YnNpdGVEYXRhU3RvcmUoKSA9PSAmcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUo
KS0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgQVNTRVJUKHByb2Nlc3MuZ2V0KCkgPT0g
bV9kdW1teVByb2Nlc3NQcm94eSB8fCBwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9y
ZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBBU1NFUlQoJnBh
Z2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gcGFn
ZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSk7CiAgICAgfSBlbHNlIGlmICghbV9p
c0RlbGF5ZWRXZWJQcm9jZXNzTGF1bmNoRGlzYWJsZWQpIHsKICAgICAgICAgLy8gSW4gdGhlIGNv
bW1vbiBjYXNlLCB3ZSBkZWxheSBwcm9jZXNzIGxhdW5jaCB1bnRpbCBzb21ldGhpbmcgaXMgYWN0
dWFsbHkgbG9hZGVkIGluIHRoZSBwYWdlLgogICAgICAgICBpZiAoIW1fZHVtbXlQcm9jZXNzUHJv
eHkpIHsKQEAgLTEyNDIsNyArMTIzMSw3IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQ
b29sOjpjcmVhdGUKICAgICAgICAgfQogICAgICAgICBwcm9jZXNzID0gbV9kdW1teVByb2Nlc3NQ
cm94eTsKICAgICB9IGVsc2UKLSAgICAgICAgcHJvY2VzcyA9ICZwcm9jZXNzRm9yUmVnaXN0cmFi
bGVEb21haW4ocGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLCBudWxscHRyLCB7IH0pOworICAgICAgICBwcm9jZXNzID0gJnByb2Nlc3NGb3JS
ZWdpc3RyYWJsZURvbWFpbigqcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSwg
bnVsbHB0ciwgeyB9KTsKIAogICAgIEFTU0VSVChwcm9jZXNzKTsKIApAQCAtMTI5Miw3ICsxMjgx
LDcgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6bWF5SGF2ZVJlZ2lzdGVyZWRTZQogCiAgICAgU3Ry
aW5nIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBzdG9yZS5yZXNvbHZlZFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKICAgICBpZiAoc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCktPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KTsKKyAgICAgICAgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCktPnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKIAogICAgIHJldHVybiBtX21heUhhdmVSZWdpc3RlcmVk
U2VydmljZVdvcmtlcnMuZW5zdXJlKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnks
IFsmXSB7CiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgY29tcHV0YXRpb24gb24gYSBiYWNr
Z3JvdW5kIHRocmVhZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkFQ
SURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFj
ay5oIgogI2luY2x1ZGUgIkhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50ZXIu
aCIKQEAgLTQ0LDYgKzQzLDcgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0Q29ubmVjdGlvbkNsaWVu
dC5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHkuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Dcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KQEAgLTIwMiw4ICsyMDIsOCBAQCBwdWJsaWM6CiAgICAgLy8gRGlzY29ubmVjdCB0aGUg
cHJvY2VzcyBmcm9tIHRoZSBjb250ZXh0LgogICAgIHZvaWQgZGlzY29ubmVjdFByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5Kik7CiAKLSAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRh
U3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KLSAgICB2
b2lkIHNldFByaW1hcnlEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUp
IHsgbV93ZWJzaXRlRGF0YVN0b3JlID0gJmRhdGFTdG9yZTsgfQorICAgIFdlYnNpdGVEYXRhU3Rv
cmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUu
Z2V0KCk7IH0KKyAgICB2b2lkIHNldFByaW1hcnlEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYg
ZGF0YVN0b3JlKSB7IG1fd2Vic2l0ZURhdGFTdG9yZSA9ICZkYXRhU3RvcmU7IH0KIAogICAgIFJl
ZjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VD
b25maWd1cmF0aW9uPiYmKTsKIApAQCAtNjc2LDcgKzY3Niw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX21lbW9yeVNhbXBsZXJFbmFibGVkIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9tZW1vcnlT
YW1wbGVySW50ZXJ2YWwgeyAxNDAwLjAgfTsKIAotICAgIFJlZlB0cjxBUEk6OldlYnNpdGVEYXRh
U3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4g
bV93ZWJzaXRlRGF0YVN0b3JlOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IGNoYXIqLCBS
ZWZQdHI8V2ViQ29udGV4dFN1cHBsZW1lbnQ+LCBQdHJIYXNoPGNvbnN0IGNoYXIqPj4gV2ViQ29u
dGV4dFN1cHBsZW1lbnRNYXA7CiAgICAgV2ViQ29udGV4dFN1cHBsZW1lbnRNYXAgbV9zdXBwbGVt
ZW50czsKQEAgLTc2MSwxMiArNzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBQYXRocyB7
CiAgICAgICAgIFN0cmluZyBpbmplY3RlZEJ1bmRsZVBhdGg7Ci0gICAgICAgIFN0cmluZyBhcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJl
Y3Rvcnk7Ci0gICAgICAgIFN0cmluZyBtZWRpYUNhY2hlRGlyZWN0b3J5OwotICAgICAgICBTdHJp
bmcgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgdWlQcm9jZXNzQnVu
ZGxlUmVzb3VyY2VQYXRoOwotICAgICAgICBTdHJpbmcgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5
OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgU3RyaW5nIGNvb2tpZVN0b3Jh
Z2VEaXJlY3Rvcnk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENv
b2tpZVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JlLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDkgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElIVFRQQ29v
a2llU3RvcmUuaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRl
ICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgor
I2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSFRUUENvb2tpZVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDcgKzQ4LDYgQEAgZW51bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDog
dWludAogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9i
c2VydmVyOwotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIAogY2xhc3MgSFRUUENvb2tpZVN0b3Jl
IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+
IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29u
ZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUxLDEyICsxNTEsMTIgQEAgdm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0VmlzaXRl
ZExpbmtTdAogICAgIG1fdmlzaXRlZExpbmtTdG9yZSA9IHZpc2l0ZWRMaW5rU3RvcmU7CiB9CiAK
LUFQSTo6V2Vic2l0ZURhdGFTdG9yZSogUGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3Rv
cmUoKQorV2Vic2l0ZURhdGFTdG9yZSogUGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3Rv
cmUoKQogewogICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7CiB9CiAKLXZvaWQg
UGFnZUNvbmZpZ3VyYXRpb246OnNldFdlYnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQordm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0V2Vic2l0
ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIG1f
d2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmU7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNp
b24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEyICs0NCwxMiBAQCBjbGFzcyBXZWJQcmVm
ZXJlbmNlczsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxl
cjsKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OworY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKIH0KIAogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEFwcGxpY2F0aW9uTWFuaWZl
c3Q7Ci1jbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogCiBj
bGFzcyBQYWdlQ29uZmlndXJhdGlvbiA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6
UGFnZUNvbmZpZ3VyYXRpb24+IHsKQEAgLTg0LDggKzg0LDggQEAgcHVibGljOgogICAgIFdlYktp
dDo6VmlzaXRlZExpbmtTdG9yZSogdmlzaXRlZExpbmtTdG9yZSgpOwogICAgIHZvaWQgc2V0Vmlz
aXRlZExpbmtTdG9yZShXZWJLaXQ6OlZpc2l0ZWRMaW5rU3RvcmUqKTsKIAotICAgIFdlYnNpdGVE
YXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3Rv
cmUoV2Vic2l0ZURhdGFTdG9yZSopOworICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmUqKTsKIAogICAgIFdlYnNpdGVQb2xpY2llcyogZGVmYXVsdFdlYnNpdGVQ
b2xpY2llcygpIGNvbnN0OwogICAgIHZvaWQgc2V0RGVmYXVsdFdlYnNpdGVQb2xpY2llcyhXZWJz
aXRlUG9saWNpZXMqKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxX
ZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9yZWxhdGVkUGFnZTsKICAgICBSZWZQdHI8V2ViS2l0OjpW
aXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0ZWRMaW5rU3RvcmU7CiAKLSAgICBSZWZQdHI8V2Vic2l0
ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKICAgICBSZWZQdHI8V2Vic2l0ZVBvbGlj
aWVzPiBtX2RlZmF1bHRXZWJzaXRlUG9saWNpZXM7CiAKICAgICBib29sIG1fdHJlYXRzU0hBMVNp
Z25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUgeyB0cnVlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDgg
KzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAog
bmFtZXNwYWNlIEFQSSB7CiAKQEAgLTM2LDM1ICszNiw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24+IFByb2Nlc3NQb28KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24pOwogfQogCi1SZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbihjb25zdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJiBsZWdhY3lD
b25maWd1cmF0aW9uKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1
YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tDYWNoZURp
cmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Ci0g
ICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJh
dGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9pbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9y
eSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29u
ZmlndXJhdGlvbi0+bV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24tPm1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ucmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fd2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KCk7Ci0KLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKLX0KLQogUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKQotICAgIDogbV9hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KCkpCi0gICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUoIkZpbGVzIikKLSAgICAsIG1fZGlza0NhY2hlRGlyZWN0b3J5KFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSkKLSAgICAsIG1fbWVkaWFD
YWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9y
eSgpKQotICAgICwgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fbG9jYWxTdG9y
YWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoKSkKLSAgICAsIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAg
ICAsIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpCi0gICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkK
LSAgICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQogewogfQogCkBAIC03
NywxOCArNDksOCBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAg
ICAgYXV0byBjb3B5ID0gdGhpcy0+Y3JlYXRlKCk7CiAKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwg
PSB0aGlzLT5tX2NhY2hlTW9kZWw7Ci0gICAgY29weS0+bV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSB0
aGlzLT5tX2Rpc2tDYWNoZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZVNwZWN1bGF0
aXZlVmFsaWRhdGlvbkVuYWJsZWQgPSB0aGlzLT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRh
dGlvbkVuYWJsZWQ7Ci0gICAgY29weS0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gdGhp
cy0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwotICAgIGNvcHktPm1fYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IHRoaXMtPm1fYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKLSAgICBjb3B5LT5tX21lZGlhQ2FjaGVEaXJlY3Rvcnkg
PSB0aGlzLT5tX21lZGlhQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV9pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSA9IHRoaXMtPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAg
Y29weS0+bV9pbmplY3RlZEJ1bmRsZVBhdGggPSB0aGlzLT5tX2luamVjdGVkQnVuZGxlUGF0aDsK
LSAgICBjb3B5LT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9yYWdl
RGlyZWN0b3J5OwotICAgIGNvcHktPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5
ID0gdGhpcy0+bV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgY29weS0+
bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5OwotICAgIGNvcHktPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHRo
aXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKLSAgICBjb3B5LT5tX3dlYlNR
TERhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAg
ICBjb3B5LT5tX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9jYWNoZVBhcnRp
dGlvbmVkVVJMU2NoZW1lczsKICAgICBjb3B5LT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1l
cyA9IHRoaXMtPm1fYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOwogICAgIGNvcHktPm1fYWRk
aXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkUGF0aHMgPSB0aGlzLT5tX2FkZGl0aW9uYWxSZWFkQWNj
ZXNzQWxsb3dlZFBhdGhzOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBBUEkgewog
Y2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8
T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlKCk7Ci0gICAgc3RhdGlj
IFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7
Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihjb25zdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uJik7CiAKICAgICBleHBsaWNpdCBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24o
KTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKQEAgLTc5LDM4ICs3
Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsgfQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6
OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkgeyBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAK
LSAgICBjb25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0QXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSkgeyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBhcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNo
ZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcm
IGRpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5
OyB9Ci0gICAgdm9pZCBzZXREaXNrQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGRp
c2tDYWNoZURpcmVjdG9yeSkgeyBtX2Rpc2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVj
dG9yeTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldE1lZGlh
Q2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkpIHsg
bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbWVkaWFDYWNoZURpcmVjdG9yeTsgfQotICAgIAotICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSkgeyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0
YWJhc2VEaXJlY3Rvcnk7IH0KLQogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRs
ZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlUGF0aDsgfQogICAgIHZvaWQg
c2V0SW5qZWN0ZWRCdW5kbGVQYXRoKGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBh
dGgpIHsgbV9pbmplY3RlZEJ1bmRsZVBhdGggPSBpbmplY3RlZEJ1bmRsZVBhdGg7IH0KIAotICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpIHsgbV9sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0
IFdURjo6U3RyaW5nJiBkZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7
IHJldHVybiBtX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQg
c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBk
aXJlY3RvcnkpIHsgbV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBkaXJlY3Rv
cnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgp
IGNvbnN0IHsgcmV0dXJuIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNl
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSkgeyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gd2ViU1FMRGF0YWJhc2VE
aXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0g
ICAgdm9pZCBzZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBt
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9
IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KSB7IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7IH0KLQogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmlu
Zz4mIGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKCkgeyByZXR1cm4gbV9jYWNoZVBhcnRpdGlv
bmVkVVJMU2NoZW1lczsgfQogICAgIHZvaWQgc2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMo
VmVjdG9yPFdURjo6U3RyaW5nPiYmIGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKSB7IG1fY2Fj
aGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMgPSBXVEZNb3ZlKGNhY2hlUGFydGl0aW9uZWRVUkxTY2hl
bWVzKTsgfQogCkBAIC0xODYsMTcgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rpc2tD
YWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdlYktpdDo6
Q2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwgeyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlByaW1hcnlXZWJC
cm93c2VyIH07CiAKLSAgICBXVEY6OlN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7
Ci0gICAgV1RGOjpTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lOwotICAgIFdURjo6U3RyaW5nIG1fZGlza0NhY2hlRGlyZWN0b3J5OwotICAgIFdURjo6U3Ry
aW5nIG1fbWVkaWFDYWNoZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBtX2luZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5OwogICAgIFdURjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwot
ICAgIFdURjo6U3RyaW5nIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5n
IG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1f
d2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeTsKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNj
aGVtZXM7CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2No
ZW1lczsKICAgICBWZWN0b3I8V1RGOjpDU3RyaW5nPiBtX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxs
b3dlZFBhdGhzOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVE
YXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElXZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCShub25leGlzdGVudCkKQEAg
LTEsMTY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0KLSNpbmNsdWRlICJXZWJLaXQySW5pdGlh
bGl6ZS5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKLQotbmFtZXNwYWNlIEFQSSB7
Ci0KLXN0YXRpYyBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mIGdsb2JhbERlZmF1bHREYXRhU3Rv
cmUoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4+IGdsb2JhbERlZmF1bHREYXRhU3RvcmU7Ci0gICAgcmV0dXJuIGdsb2JhbERlZmF1bHREYXRh
U3RvcmUuZ2V0KCk7Ci19Ci0KLQotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmUoKQotewotICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIo
KTsKLQotICAgIGF1dG8mIHN0b3JlID0gZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpOwotICAgIGlm
ICghc3RvcmUpCi0gICAgICAgIHN0b3JlID0gYWRvcHRSZWYobmV3IFdlYnNpdGVEYXRhU3RvcmUo
ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSkpOwotCi0gICAgcmV0dXJuICpzdG9yZTsKLX0KLQotdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpCi17Ci0gICAgZ2xvYmFs
RGVmYXVsdERhdGFTdG9yZSgpID0gbnVsbHB0cjsKLX0KLQotYm9vbCBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkKLXsKLSAgICByZXR1cm4gISFnbG9iYWxEZWZhdWx0
RGF0YVN0b3JlKCk7Ci19Ci0KLVJlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3Jl
OjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJzaXRlRGF0YVN0b3JlKTsKLX0KLQotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNp
dGVEYXRhU3RvcmU6OmNyZWF0ZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbj4mJiBjb25maWd1cmF0aW9uLCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQot
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25m
aWd1cmF0aW9uKSwgc2Vzc2lvbklEKSk7Ci19Ci0KLVdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVE
YXRhU3RvcmUoKQotICAgIDogbV93ZWJzaXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudCgpKQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjpX
ZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
PiYmIGNvbmZpZ3VyYXRpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICA6IG1fd2Vi
c2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQpKQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjp+V2Vi
c2l0ZURhdGFTdG9yZSgpCi17Ci19Ci0KLUhUVFBDb29raWVTdG9yZSYgV2Vic2l0ZURhdGFTdG9y
ZTo6aHR0cENvb2tpZVN0b3JlKCkKLXsKLSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5j
b29raWVTdG9yZSgpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjogaW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUt
PmNvbmZpZ3VyYXRpb24oKS5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotfQotCi1ib29s
IFdlYnNpdGVEYXRhU3RvcmU6OmlzUGVyc2lzdGVudCgpCi17Ci0gICAgcmV0dXJuIG1fd2Vic2l0
ZURhdGFTdG9yZS0+aXNQZXJzaXN0ZW50KCk7Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3dl
YnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Ci19Ci0KLXZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9v
bCBlbmFibGVkKQotewotICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fd2Vi
c2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOwotfQotCi12
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUo
Ym9vbCBlbmFibGVkKQotewotICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGVkKTsKLX0KLQotI2lmICFQTEFURk9STShDT0NPQSkK
LVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KCkKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU2MzY5IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU2MzcwCi0gICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Ci19Ci0KLVdURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVj
dG9yeSgpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KLSAgICByZXR1cm4gV1RGOjpTdHJp
bmcoKTsKLX0KLSNlbmRpZgotCi0jaWYgIVVTRShHTElCKQotV1RGOjpTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0g
ICAgLy8gTm90IGltcGxlbWVudGVkLgotICAgIHJldHVybiBXVEY6OlN0cmluZygpOwotfQotI2Vu
ZGlmCi0KLVJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCi17Ci0gICAgYXV0byBj
b25maWd1cmF0aW9uID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5zZXRQZXJzaXN0ZW50KHRydWUpOwotCi0gICAg
Y29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShkZWZhdWx0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlv
bkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCJGaWxlcyIpOwotICAgIGNvbmZpZ3VyYXRp
b24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5
KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2Fj
aGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSk7Ci0KLSAgICBjb25maWd1
cmF0aW9uLT5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0SW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeShkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShk
ZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0g
ICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFn
ZURpcmVjdG9yeShkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOwot
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnko
ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkpOwotCi0gICAgcmV0dXJu
IGNvbmZpZ3VyYXRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lv
biAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5oCShub25leGlzdGVudCkKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKLSNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgQVBJIHsKLQotY2xhc3MgV2Vi
c2l0ZURhdGFTdG9yZSBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6V2Vi
c2l0ZURhdGFTdG9yZT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9y
ZT4gZGVmYXVsdERhdGFTdG9yZSgpOwotICAgIHN0YXRpYyBib29sIGRlZmF1bHREYXRhU3RvcmVF
eGlzdHMoKTsKLSAgICBzdGF0aWMgdm9pZCBkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGlu
ZygpOwotCi0gICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoUmVmPFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYsIGNvbnN0IFBBTDo6U2Vzc2lvbklE
Jik7Ci0gICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50
RGF0YVN0b3JlKCk7Ci0KLSAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7Ci0gICAg
dmlydHVhbCB+V2Vic2l0ZURhdGFTdG9yZSgpOwotCi0gICAgYm9vbCBpc1BlcnNpc3RlbnQoKTsK
LQotICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdDsKLSAgICB2
b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOwotICAgIGJvb2wgcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sKTsKLQotICAgIFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSgpIHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5n
ZXQoKTsgfQotICAgIEhUVFBDb29raWVTdG9yZSYgaHR0cENvb2tpZVN0b3JlKCk7Ci0KLSAgICBX
VEY6OlN0cmluZyBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGlj
IFdURjo6U3RyaW5nIGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBX
VEY6OlN0cmluZyBkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6
OlN0cmluZyBkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsK
LSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwot
ICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
OwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRXZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSgpOwotI2lmIFVTRShHTElCKQotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZh
dWx0SFNUU0RpcmVjdG9yeSgpOwotI2VuZGlmCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1
bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3Ry
aW5nIGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOwotCi0gICAgc3Rh
dGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZhdWx0RGF0
YVN0b3JlQ29uZmlndXJhdGlvbigpOwotCi1wcml2YXRlOgotICAgIGVudW0gU2hvdWxkQ3JlYXRl
RGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0b3J5LCBEb250Q3JlYXRlRGlyZWN0b3J5IH07Ci0KLSAg
ICBXZWJzaXRlRGF0YVN0b3JlKCk7Ci0KLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgdGVtcERpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5
TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5ID0gQ3JlYXRlRGlyZWN0b3J5KTsKLSAgICBzdGF0
aWMgV1RGOjpTdHJpbmcgY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyB3
ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0
cmluZyYgZGlyZWN0b3J5TmFtZSk7Ci0KLSAgICBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
PiBtX3dlYnNpdGVEYXRhU3RvcmU7Ci19OwotCi19CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAkocmV2aXNpb24gMjQ5NzMy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDE0ICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgogCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURh
dGFTdG9yZS5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJz
aXRlUG9saWNpZXNEYXRhLmgiCiAKIG5hbWVzcGFjZSBBUEkgewogCiBXZWJzaXRlUG9saWNpZXM6
OldlYnNpdGVQb2xpY2llcygpID0gZGVmYXVsdDsKIAotV2Vic2l0ZVBvbGljaWVzOjpXZWJzaXRl
UG9saWNpZXMoYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBPcHRpb25TZXQ8V2ViS2l0OjpX
ZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxsb3dlZEF1dG9wbGF5UXVpcmtzLCBXZWJLaXQ6OldlYnNp
dGVBdXRvcGxheVBvbGljeSBhdXRvcGxheVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFk
ZXJGaWVsZD4mJiBsZWdhY3lDdXN0b21IZWFkZXJGaWVsZHMsIFZlY3RvcjxXZWJDb3JlOjpDdXN0
b21IZWFkZXJGaWVsZHM+JiYgY3VzdG9tSGVhZGVyRmllbGRzLCBXZWJLaXQ6OldlYnNpdGVQb3BV
cFBvbGljeSBwb3BVcFBvbGljeSwgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURh
dGFTdG9yZSkKK1dlYnNpdGVQb2xpY2llczo6V2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJs
b2NrZXJzRW5hYmxlZCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IGFs
bG93ZWRBdXRvcGxheVF1aXJrcywgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3kgYXV0b3Bs
YXlQb2xpY3ksIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYgbGVnYWN5Q3VzdG9t
SGVhZGVyRmllbGRzLCBWZWN0b3I8V2ViQ29yZTo6Q3VzdG9tSGVhZGVyRmllbGRzPiYmIGN1c3Rv
bUhlYWRlckZpZWxkcywgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3ksIFJl
ZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKICAgICA6
IG1fY29udGVudEJsb2NrZXJzRW5hYmxlZChjb250ZW50QmxvY2tlcnNFbmFibGVkKQogICAgICwg
bV9hbGxvd2VkQXV0b3BsYXlRdWlya3MoYWxsb3dlZEF1dG9wbGF5UXVpcmtzKQogICAgICwgbV9h
dXRvcGxheVBvbGljeShhdXRvcGxheVBvbGljeSkKQEAgLTg0LDcgKzg0LDcgQEAgV2Vic2l0ZVBv
bGljaWVzOjp+V2Vic2l0ZVBvbGljaWVzKCkKIHsKIH0KIAotdm9pZCBXZWJzaXRlUG9saWNpZXM6
OnNldFdlYnNpdGVEYXRhU3RvcmUoUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURh
dGFTdG9yZSkKK3ZvaWQgV2Vic2l0ZVBvbGljaWVzOjpzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0
cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBt
X3dlYnNpdGVEYXRhU3RvcmUgPSBXVEZNb3ZlKHdlYnNpdGVEYXRhU3RvcmUpOwogfQpAQCAtMTA4
LDcgKzEwOCw3IEBAIFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSBXZWJzaXRlUG9saWMKICNl
bmRpZgogICAgICAgICBXVEZNb3ZlKGN1c3RvbUhlYWRlckZpZWxkcyksCiAgICAgICAgIHBvcFVw
UG9saWN5KCksCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA/IE9wdGlvbmFsPFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IHsgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkucGFyYW1ldGVycygpIH0gOiBXVEY6Om51bGxvcHQsCisgICAgICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZSA/IE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnM+IHsgbV93ZWJzaXRlRGF0YVN0b3JlLT5wYXJhbWV0ZXJzKCkgfSA6IFdURjo6bnVsbG9wdCwK
ICAgICAgICAgbV9jdXN0b21Vc2VyQWdlbnQsCiAgICAgICAgIG1fY3VzdG9tSmF2YVNjcmlwdFVz
ZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzLAogICAgICAgICBtX2N1c3RvbU5hdmlnYXRvclBs
YXRmb3JtLApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xp
Y2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlUG9saWNpZXMuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMyArNDEs
MTIgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xh
c3MgV2Vic2l0ZURhdGFTdG9yZTsKIHN0cnVjdCBXZWJzaXRlUG9saWNpZXNEYXRhOwogfQogCiBu
YW1lc3BhY2UgQVBJIHsKIAotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKLQogY2xhc3MgV2Vic2l0
ZVBvbGljaWVzIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6V2Vic2l0ZVBvbGljaWVzPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlUG9s
aWNpZXM+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZVBvbGljaWVzKTsg
fQpAQCAtNzksOCArNzgsOCBAQCBwdWJsaWM6CiAgICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xp
Y3kgcG9wVXBQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3BvcFVwUG9saWN5OyB9CiAgICAgdm9p
ZCBzZXRQb3BVcFBvbGljeShXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSBwb2xpY3kpIHsgbV9w
b3BVcFBvbGljeSA9IHBvbGljeTsgfQogCi0gICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURh
dGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQotICAg
IHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJik7Cisg
ICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9CisgICAgdm9pZCBzZXRXZWJzaXRlRGF0
YVN0b3JlKFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+JiYpOwogCiAgICAgV2ViS2l0
OjpXZWJzaXRlUG9saWNpZXNEYXRhIGRhdGEoKTsKIApAQCAtMTE4LDcgKzExNyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEFsbG93Q29udGVudENoYW5nZU9ic2VydmVyUXVpcmsoYm9vbCBhbGxv
dykgeyBtX2FsbG93Q29udGVudENoYW5nZU9ic2VydmVyUXVpcmsgPSBhbGxvdzsgfQogCiBwcml2
YXRlOgotICAgIFdlYnNpdGVQb2xpY2llcyhib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9w
dGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiwgV2ViS2l0OjpXZWJzaXRlQXV0
b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYsIFZlY3RvcjxX
ZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+JiYsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5
LCBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJik7CisgICAgV2Vic2l0ZVBvbGljaWVzKGJvb2wg
Y29udGVudEJsb2NrZXJzRW5hYmxlZCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5
UXVpcms+LCBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhU
VFBIZWFkZXJGaWVsZD4mJiwgVmVjdG9yPFdlYkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4mJiwg
V2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3ksIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU+JiYpOwogCiAgICAgYm9vbCBtX2NvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgeyB0cnVlIH07CiAg
ICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IG1fYWxsb3dlZEF1dG9w
bGF5UXVpcmtzOwpAQCAtMTI5LDcgKzEyOCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdlYkNv
cmU6OkhUVFBIZWFkZXJGaWVsZD4gbV9sZWdhY3lDdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgVmVj
dG9yPFdlYkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4gbV9jdXN0b21IZWFkZXJGaWVsZHM7CiAg
ICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3kgbV9wb3BVcFBvbGljeSB7IFdlYktpdDo6V2Vi
c2l0ZVBvcFVwUG9saWN5OjpEZWZhdWx0IH07Ci0gICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+
IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
PiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAgICAgV1RGOjpTdHJpbmcgbV9jdXN0b21Vc2VyQWdlbnQ7
CiAgICAgV1RGOjpTdHJpbmcgbV9jdXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lm
aWNRdWlya3M7CiAgICAgV1RGOjpTdHJpbmcgbV9jdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAy
NDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNjksNyArNjksNiBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNs
YXNzIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjsKIGNsYXNzIFNlc3Npb25TdGF0ZTsKIGNsYXNz
IFVzZXJTY3JpcHQ7Ci1jbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGlj
aWVzOwogY2xhc3MgV2luZG93RmVhdHVyZXM7CiB9CkBAIC0xMTMsNiArMTEyLDcgQEAgY2xhc3Mg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI7CiBjbGFzcyBXZWJUZXh0Q2hlY2tlcjsK
IGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OwogY2xhc3MgV2ViVmlld3BvcnRB
dHRyaWJ1dGVzOworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIGNsYXNzIFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uOwogCiBXS19BRERfQVBJX01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVJlZiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSkKQEAgLTE2OSw3ICsxNjks
NyBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyTWVkaWFQZXJtaXNzaW9uCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiwgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJTY3JpcHRSZWYsIEFQ
STo6VXNlclNjcmlwdCkKIFdLX0FERF9BUElfTUFQUElORyhXS1ZpZXdwb3J0QXR0cmlidXRlc1Jl
ZiwgV2ViVmlld3BvcnRBdHRyaWJ1dGVzKQotV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiwgQVBJOjpXZWJzaXRlRGF0YVN0b3JlKQorV0tfQUREX0FQSV9NQVBQSU5HKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiwgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlKQogV0tfQUREX0FQ
SV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYsIFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tXZWJzaXRl
UG9saWNpZXNSZWYsIEFQSTo6V2Vic2l0ZVBvbGljaWVzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdL
V2luZG93RmVhdHVyZXNSZWYsIEFQSTo6V2luZG93RmVhdHVyZXMpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDQyICsyNiwxOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldLQXBwbGljYXRp
b25DYWNoZU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJ
V2Vic2l0ZURhdGFTdG9yZS5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldl
YnNpdGVEYXRhUmVjb3JkLmgiCi0KIFdLVHlwZUlEIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJH
ZXRUeXBlSUQoKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV0tBcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9uIGNhbGxi
YWNrKQordm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9y
aWdpbnMoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiwgdm9pZCosIFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9uKQogewotICAgIGF1
dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9jYXN0PFdL
V2Vic2l0ZURhdGFTdG9yZVJlZj4oYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURh
dGFTdG9yZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUuZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0
ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgeyB9LCBbY29udGV4dCwgY2Fs
bGJhY2tdKGF1dG8gZGF0YVJlY29yZHMpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9i
amVjdD4+IHNlY3VyaXR5T3JpZ2luczsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVj
b3JkIDogZGF0YVJlY29yZHMpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2lu
IDogZGF0YVJlY29yZC5vcmlnaW5zKQotICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy5h
cHBlbmQoQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigp
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjYWxsYmFjayhXZWJLaXQ6OnRvQVBJKEFQSTo6QXJy
YXk6OmNyZWF0ZShXVEZNb3ZlKHNlY3VyaXR5T3JpZ2lucykpLnB0cigpKSwgbnVsbHB0ciwgY29u
dGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0
ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlv
bkNhY2hlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pCit2b2lkIFdLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXJSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYpCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURh
dGFTdG9yZSA9IFdlYktpdDo6dG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0
b3JlUmVmPihhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0K
LSAgICBXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29y
ZC5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
LCBXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7Ci0KLSAg
ICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6Ok9m
ZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsKIH0KIAot
dm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0FwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyKQordm9pZCBXS0FwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyUmVmKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChy
ZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oYXBwbGljYXRpb25DYWNoZU1h
bmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3Zl
RGF0YShXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUs
IC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW10geyB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
LmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTggKzI3LDE5
IEBACiAjZGVmaW5lIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJfaAogCiAjaW5jbHVkZSA8V2Vi
S2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lmZGVm
IF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi1XS19FWFBPUlQgV0tUeXBlSUQg
V0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldFR5cGVJRCgpOworV0tfRVhQT1JUIFdLVHlwZUlE
IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRUeXBlSUQoKSBXS19DX0FQSV9ERVBSRUNBVEVE
OwogCiB0eXBlZGVmIHZvaWQgKCpXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRp
b25DYWNoZU9yaWdpbnNGdW5jdGlvbikoV0tBcnJheVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwot
V0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5zKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1h
bmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLQXBw
bGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lucyhXS0FwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0
LCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5j
dGlvbiBmdW5jdGlvbikgV0tfQ19BUElfREVQUkVDQVRFRDsKIAotV0tfRVhQT1JUIHZvaWQgV0tB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdp
blJlZiBvcmlnaW4pOwotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRl
bGV0ZUFsbEVudHJpZXMoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlcik7CitXS19FWFBPUlQgdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVs
ZXRlRW50cmllc0Zvck9yaWdpbihXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbikgV0tfQ19BUElfREVQ
UkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVB
bGxFbnRyaWVzKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1h
bmFnZXIpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9s
aWN5TGlzdGVuZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NiwxMiArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXS0ZyYW1lUG9s
aWN5TGlzdGVuZXIuaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNs
dWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNs
dWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0
YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5MCArMjYsMzggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaCIKIAotI2luY2x1ZGUg
IkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIkFQSVdl
YnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgotI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCi0jaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLXVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5
cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlw
ZSk7CisgICAgcmV0dXJuIDA7CiB9CiAKIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE9yaWdpbktleSgpCiB7Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6
OlN0cmluZzo6Y3JlYXRlKCJXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURldGFpbHNP
cmlnaW5LZXkiKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHJldHVy
biBudWxscHRyOwogfQogCiBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRD
cmVhdGlvblRpbWVLZXkoKQogewotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpT
dHJpbmc6OmNyZWF0ZSgiV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclN0b3JhZ2VEZXRhaWxzQ3Jl
YXRpb25UaW1lS2V5IikubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogV0tTdHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
R2V0TW9kaWZpY2F0aW9uVGltZUtleSgpCiB7Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkg
PSBBUEk6OlN0cmluZzo6Y3JlYXRlKCJXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURl
dGFpbHNNb2RpZmljYXRpb25UaW1lS2V5IikubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgm
a2V5KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zRnVuY3Rpb24gY2FsbGJhY2spCi0KK3Zv
aWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYsIHZvaWQqLCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zRnVuY3Rpb24pCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURh
dGFTdG9yZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4o
a2V5VmFsdWVTdG9yYWdlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0
ZURhdGFTdG9yZS5mZXRjaERhdGEoeyBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vi
c2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSB9LCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10o
YXV0byBkYXRhUmVjb3JkcykgewotICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4g
c2VjdXJpdHlPcmlnaW5zOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGRhdGFSZWNvcmQgOiBk
YXRhUmVjb3JkcykgewotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBkYXRh
UmVjb3JkLm9yaWdpbnMpCi0gICAgICAgICAgICAgICAgc2VjdXJpdHlPcmlnaW5zLmFwcGVuZChB
UEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUob3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGNhbGxiYWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZN
b3ZlKHNlY3VyaXR5T3JpZ2lucykpLnB0cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7
CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9y
aWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwg
dm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNC
eU9yaWdpbkZ1bmN0aW9uIGNhbGxiYWNrKQordm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwgdm9p
ZCosIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5j
dGlvbikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0
X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSktPndl
YnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLmdldExvY2FsU3RvcmFnZURl
dGFpbHMoW2NvbnRleHQsIGNhbGxiYWNrXShhdXRvJiYgZGV0YWlscykgewotICAgICAgICBWZWN0
b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gcmVzdWx0OwotICAgICAgICByZXN1bHQucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShkZXRhaWxzLnNpemUoKSk7Ci0KLSAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBkZXRhaWwgOiBkZXRhaWxzKSB7Ci0gICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRy
PEFQSTo6T2JqZWN0Pj4gZGV0YWlsTWFwOwotICAgICAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0
PiBvcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRldGFpbC5vcmlnaW5JZGVudGlmaWVy
KS0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0KLSAgICAgICAgICAgIGRldGFpbE1hcC5zZXQodG9JbXBs
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpKS0+c3RyaW5nKCksIG9yaWdp
bik7Ci0gICAgICAgICAgICBpZiAoZGV0YWlsLmNyZWF0aW9uVGltZSkKLSAgICAgICAgICAgICAg
ICBkZXRhaWxNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlv
blRpbWVLZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKGRldGFpbC5jcmVhdGlv
blRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkpOwotICAgICAgICAgICAgaWYgKGRl
dGFpbC5tb2RpZmljYXRpb25UaW1lKQotICAgICAgICAgICAgICAgIGRldGFpbE1hcC5zZXQodG9J
bXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKSktPnN0
cmluZygpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKGRldGFpbC5tb2RpZmljYXRpb25UaW1lLT5zZWNv
bmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpKTsKLQotICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tl
ZEFwcGVuZChBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKGRldGFpbE1hcCkpKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGNhbGxiYWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZN
b3ZlKHJlc3VsdCkpLnB0cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZv
aWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgV0tTZWN1cml0eU9y
aWdpblJlZiBvcmlnaW4pCit2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJp
ZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2lu
UmVmKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRf
Y2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpOwotICAgIFdlYnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAg
ZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIHRvSW1wbChvcmln
aW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0
ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2lu
KCkuZGF0YSgpKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEoeyBXZWJzaXRlRGF0
YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSB9LCB7
IGRhdGFSZWNvcmQgfSwgW10geyB9KTsKIH0KIAotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyKQordm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRy
aWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0
YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihr
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJzaXRl
RGF0YVN0b3JlLnJlbW92ZURhdGEoeyBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vi
c2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSB9LCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtd
IHsgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDMwICsyNywzMSBAQAogI2RlZmluZSBXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktp
dC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNl
bmRpZgogCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlw
ZUlEKCk7CitXS19FWFBPUlQgV0tUeXBlSUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlw
ZUlEKCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogLyogVmFsdWUgdHlwZTogV0tTZWN1cml0eU9y
aWdpblJlZiAqLwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ckdldE9yaWdpbktleSgpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdl
TWFuYWdlckdldE9yaWdpbktleSgpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5
cGU6IFdLRG91YmxlUmVmLCBzZWNvbmRzIHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLwot
V0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9u
VGltZUtleSgpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ckdldENyZWF0aW9uVGltZUtleSgpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5
cGU6IFdLRG91YmxlUmVmLCBzZWNvbmRzIHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLwot
V0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNh
dGlvblRpbWVLZXkoKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJHZXRNb2RpZmljYXRpb25UaW1lS2V5KCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogdHlw
ZWRlZiB2b2lkICgqV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3Jp
Z2luc0Z1bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBPUlQg
dm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBj
b250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5z
RnVuY3Rpb24gZnVuY3Rpb24pOworV0tfRVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYg
a2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKSBXS19DX0FQ
SV9ERVBSRUNBVEVEOwogCiB0eXBlZGVmIHZvaWQgKCpXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdLRXJyb3JSZWYs
IHZvaWQqKTsKLVdLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3Jh
Z2VEZXRhaWxzQnlPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3Rv
cmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0
b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5jdGlvbiBmdW5jdGlvbik7CitXS19FWFBPUlQgdm9pZCBX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0
LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rp
b24gZnVuY3Rpb24pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKLVdLX0VYUE9SVCB2b2lkIFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYg
b3JpZ2luKTsKLVdLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUFs
bEVudHJpZXMoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFn
ZXIpOworV0tfRVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmll
c0Zvck9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFu
YWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CitX
S19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSBXS19DX0FQ
SV9ERVBSRUNBVEVEOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIu
Y3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNjcgKzI2LDE5
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tSZXNvdXJjZUNhY2hlTWFuYWdl
ci5oIgogCi0jaW5jbHVkZSAiQVBJQXJyYXkuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNv
cmQuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tSZXNvdXJjZUNh
Y2hlTWFuYWdlckdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6QVBJVHlwZSk7Ci19Ci0KLXN0YXRpYyBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiB0b1dlYnNpdGVEYXRhVHlwZXMoV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVh
cikKLXsKLSAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzIHsg
V2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSB9OwotCi0gICAgaWYgKGNhY2hlc1RvQ2xlYXIg
PT0gV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXJBbGwpCi0gICAgICAgIHdlYnNpdGVEYXRhVHlwZXMu
YWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKTsKLQotICAgIHJldHVybiB3ZWJzaXRlRGF0
YVR5cGVzOworICAgIHJldHVybiAwOwogfQogCi12b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJH
ZXRDYWNoZU9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIHZv
aWQqIGNvbnRleHQsIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnNGdW5jdGlv
biBjYWxsYmFjaykKK3ZvaWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2lucyhX
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmLCB2b2lkKiwgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdl
dENhY2hlT3JpZ2luc0Z1bmN0aW9uKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB0
b0ltcGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGNhY2hlTWFuYWdl
cikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5mZXRjaERhdGEo
dG9XZWJzaXRlRGF0YVR5cGVzKFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyQWxsKSwgeyB9LCBbY29u
dGV4dCwgY2FsbGJhY2tdKGF1dG8gZGF0YVJlY29yZHMpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0
cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2luczsKLSAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKQotICAgICAgICAgICAgICAgIHNlY3VyaXR5
T3JpZ2lucy5hcHBlbmQoQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0
eU9yaWdpbigpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFy
cmF5OjpjcmVhdGUoV1RGTW92ZShzZWN1cml0eU9yaWdpbnMpKS5wdHIoKSksIG51bGxwdHIsIGNv
bnRleHQpOwotICAgIH0pOwogfQogCi12b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNh
Y2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5hZ2VyLCBXS1Nl
Y3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9D
bGVhcikKK3ZvaWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4oV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tSZXNvdXJjZUNh
Y2hlc1RvQ2xlYXIpCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWlu
dGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oY2FjaGVNYW5hZ2VyKSktPndlYnNp
dGVEYXRhU3RvcmUoKTsKLQotICAgIFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gZGF0YVJlY29y
ZHM7Ci0KLSAgICB7Ci0gICAgICAgIFdlYnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAg
ICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUsIHRvSW1wbChv
cmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7Ci0KLSAgICAgICAgZGF0YVJlY29yZHMu
YXBwZW5kKGRhdGFSZWNvcmQpOwotICAgIH0KLQotICAgIGlmIChjYWNoZXNUb0NsZWFyID09IFdL
UmVzb3VyY2VDYWNoZXNUb0NsZWFyQWxsKSB7Ci0gICAgICAgIFdlYnNpdGVEYXRhUmVjb3JkIGRh
dGFSZWNvcmQ7Ci0gICAgICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlza0Nh
Y2hlLCB0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotCi0gICAgICAg
IGRhdGFSZWNvcmRzLmFwcGVuZChkYXRhUmVjb3JkKTsKLSAgICB9Ci0KLSAgICB3ZWJzaXRlRGF0
YVN0b3JlLnJlbW92ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKGNhY2hlc1RvQ2xlYXIpLCBkYXRh
UmVjb3JkcywgW10geyB9KTsKIH0KIAotdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJD
YWNoZUZvckFsbE9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIs
IFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpCit2b2lkIFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2Vy
UmVmLCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhcikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0
b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihjYWNo
ZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUucmVt
b3ZlRGF0YSh0b1dlYnNpdGVEYXRhVHlwZXMoY2FjaGVzVG9DbGVhciksIC1XYWxsVGltZTo6aW5m
aW5pdHkoKSwgW10geyB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmgJKHJldmlzaW9uIDI0OTczMikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXS1Jlc291cmNlQ2Fj
aGVNYW5hZ2VyX2gKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJL
aXQvV0tEZXByZWNhdGVkLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBA
IC0zOCwxMyArMzksMTMgQEAgZW51bSB7CiB9OwogdHlwZWRlZiB1aW50MzJfdCBXS1Jlc291cmNl
Q2FjaGVzVG9DbGVhcjsKIAotV0tfRVhQT1JUIFdLVHlwZUlEIFdLUmVzb3VyY2VDYWNoZU1hbmFn
ZXJHZXRUeXBlSUQoKTsKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2Vy
R2V0VHlwZUlEKCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tSZXNv
dXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vy
cm9yUmVmLCB2b2lkKik7Ci1XS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0
Q2FjaGVPcmlnaW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY29udGV4dFJlZiwgdm9pZCog
Y29udGV4dCwgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uIGZ1
bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9y
aWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBjb250ZXh0UmVmLCB2b2lkKiBjb250ZXh0
LCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zRnVuY3Rpb24gZnVuY3Rpb24p
IFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKLVdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1h
bmFnZXJDbGVhckNhY2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVN
YW5nZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVh
ciBjYWNoZXNUb0NsZWFyKTsKLVdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJD
bGVhckNhY2hlRm9yQWxsT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFu
YWdlciwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcik7CitXS19FWFBPUlQg
dm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFuZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwg
V0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikgV0tfQ19BUElfREVQUkVDQVRF
RDsKK1dLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yQWxs
T3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwgV0tSZXNvdXJj
ZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogI2lm
ZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHJldmlzaW9uIDI0OTczMikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJXS1dlYnNpdGVE
YXRhU3RvcmVSZWYuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vi
c2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yZS5oIgogI2luY2x1
ZGUgIk1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJTaG91
bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKQEAgLTQx
LDI5ICs0MSwzMCBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGFGZXRjaE9wdGlvbi5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCisjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgog
I2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIFdLVHlwZUlEIFdLV2Vic2l0ZURhdGFTdG9yZUdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpBUElUeXBlKTsKKyAgICByZXR1
cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkFQSVR5cGUpOwogfQog
CiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RGVmYXVsdERhdGFT
dG9yZSgpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpKTsKIH0KIAog
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNyZWF0ZU5vblBlcnNpc3Rl
bnREYXRhU3RvcmUoKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKS5sZWFrUmVmKCkpOworICAg
IHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5v
blBlcnNpc3RlbnQoKS5sZWFrUmVmKCkpOwogfQogCiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgV0tX
ZWJzaXRlRGF0YVN0b3JlQ3JlYXRlV2l0aENvbmZpZ3VyYXRpb24oV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uKQogewogICAgIGF1dG8gc2Vzc2lvbklEID0g
V2ViS2l0Ojp0b0ltcGwoY29uZmlndXJhdGlvbiktPmlzUGVyc2lzdGVudCgpID8gUEFMOjpTZXNz
aW9uSUQ6OmdlbmVyYXRlUGVyc2lzdGVudFNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6Omdl
bmVyYXRlRXBoZW1lcmFsU2Vzc2lvbklEKCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKCpXZWJLaXQ6OnRvSW1wbChjb25maWd1cmF0aW9u
KSwgc2Vzc2lvbklEKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZSgqV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJhdGlv
biksIHNlc3Npb25JRCkubGVha1JlZigpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBib29sIGVuYWJsZSkKQEAgLTgzLDEzICs4NCwxMyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0CiAKIFdLSFRUUENvb2tpZVN0b3JlUmVmIFdLV2Vi
c2l0ZURhdGFTdG9yZUdldEhUVFBDb29raWVTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT5odHRwQ29va2llU3RvcmUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9B
UEkoJldlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmNvb2tpZVN0b3JlKCkpOwogfQogCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVX
aXRoQ29tcGxldGlvbkhhbmRsZXIoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
Ym9vbCBlbmFibGUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NE
ZWJ1Z01vZGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGVuYWJs
ZSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGUsIFtj
b250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihj
b250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0xMDAsNyArMTAxLDcgQEAgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29u
dGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlYnVnTW9kZUZ1bmN0aW9uIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0g
ICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFBy
ZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUo
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29t
cGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAg
ICAgfSk7CiAjZWxzZQpAQCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0UmVzb3VyY2VMb2FkU3QKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xh
c3RTZWVuKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhv
c3QsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0
aXN0aWNzTGFzdFNlZW5GdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRMYXN0U2VlbihVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjb21w
bGV0aW9uSGFuZGxlcl0geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldExh
c3RTZWVuKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgU2Vjb25k
cyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTEyMSw3ICsxMjIs
NyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0CiB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlLCB2b2lk
KiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VG
dW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byYgd2Vic2l0ZURhdGFT
dG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZhbHVlKQog
ICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlLnNldFByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5k
bGVyXSB7CkBAIC0xMzksNyArMTQwLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzUHJldgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVByZXZh
bGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIHdlYnNp
dGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCk7CisgICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpOwogCiAgICAgaWYgKHZhbHVlKQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlLnNl
dFZlcnlQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5z
dHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewpAQCAtMTU3LDcgKzE1OCw3
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ZlcnkKIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlRHVtcFJl
c291cmNlTG9hZFN0YXRpc3RpY3NGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbY29udGV4dCwg
Y2FsbGJhY2tdIChjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhb
Y29udGV4dCwgY2FsbGJhY2tdIChjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mp
IHsKICAgICAgICAgY2FsbGJhY2soV2ViS2l0Ojp0b0FQSShyZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LmltcGwoKSksIGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTE2OCw3ICsxNjksNyBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJjZUxvYWRTCiB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZUlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY2FsbGJhY2sp
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNQcmV2YWxlbnRSZXNvdXJj
ZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBj
YWxsYmFja10oYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+aXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ByZXZhbGVu
dFJlc291cmNlKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzUHJldmFsZW50UmVzb3VyY2UsIGNvbnRl
eHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTE3OSw3ICsxODAsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZUlzU3RhdGlzdGljc1ByZXZhCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmlzVmVyeVByZXZhbGVudFJlc291cmNlKFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNr
XShib29sIGlzVmVyeVByZXZhbGVudFJlc291cmNlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJl
dmFsZW50UmVzb3VyY2UpIHsKICAgICAgICAgY2FsbGJhY2soaXNWZXJ5UHJldmFsZW50UmVzb3Vy
Y2UsIGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTE5MCw3ICsxOTEsNyBAQCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ZlcnlQCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgc3VicmVzb3VyY2VIb3N0LCBXS1N0cmlu
Z1JlZiB0b3BGcmFtZUhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3Rh
dGlzdGljc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXJGdW5jdGlvbiBjYWxsYmFjaykKIHsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5pc1JlZ2lzdGVyZWRBc1N1YnJlc291
cmNlVW5kZXIoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJyZXNvdXJjZUhvc3QpLT5zdHJp
bmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkp
LCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVy
KSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNSZWdpc3RlcmVkQXNTdWJy
ZXNvdXJjZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+
c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VV
bmRlcikgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIs
IGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIwMSw3ICsyMDIsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlz
U3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgc3ViRnJhbWVIb3N0LCBXS1N0cmluZ1JlZiB0b3BG
cmFtZUhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1Jl
Z2lzdGVyZWRBc1N1YkZyYW1lVW5kZXJGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPndlYnNpdGVEYXRhU3RvcmUoKS5pc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJh
Y2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKSB7CisgICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShi
b29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcikgewogICAgICAgICBjYWxsYmFjayhpc1Jl
Z2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIsIGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIx
Miw3ICsyMTMsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5n
VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdFJl
ZGlyZWN0ZWRGcm9tLCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1Rv
RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1Jl
Z2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8pIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5pc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29s
IGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbykgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lz
dGVyZWRBc1JlZGlyZWN0aW5nVG8sIGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIyMyw3
ICsyMjQsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2
YWx1ZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0hhZFVz
ZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgYXV0byYgZGF0YVN0b3JlID0gV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIGRhdGFT
dG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZhbHVlKQog
ICAgICAgICBkYXRhU3RvcmUubG9nVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CkBA
IC0yNDEsNyArMjQyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFz
SAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rp
b24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwg
dm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzSGFzSGFkVXNlcklu
dGVyYWN0aW9uRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0
YVN0b3JlKCkuaGFzSGFkVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhhc0hhZFVzZXJJbnRl
cmFjdGlvbikgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0hhZFVzZXJJ
bnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAg
Y2FsbGJhY2soaGFzSGFkVXNlckludGVyYWN0aW9uLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNl
CkBAIC0yNTIsMTQgKzI1MywxNCBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c0hhc0hhCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVk
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJv
b2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0R3JhbmRm
YXRoZXJlZChVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIHZhbHVl
LCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldEdyYW5kZmF0
aGVyZWQoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCB2YWx1ZSwg
W10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c0dyYW5kZmF0aGVyZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJp
bmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNz
R3JhbmRmYXRoZXJlZEZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0
ZURhdGFTdG9yZSgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc0dyYW5kZmF0
aGVyZWQpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5oYXNIYWRVc2VySW50
ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29u
dGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNHcmFuZGZhdGhlcmVkKSB7CiAgICAgICAgIGNhbGxiYWNr
KGlzR3JhbmRmYXRoZXJlZCwgY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMjcwLDQ5ICsy
NzEsNDkgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NHcmFuZAogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lu
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdL
U3RyaW5nUmVmIHRvcEZyYW1lSG9zdCkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKS5zZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1l
SG9zdCktPnN0cmluZygpKSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5zZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1l
SG9zdCktPnN0cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdS
ZWYgdG9wRnJhbWVIb3N0KQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNl
dFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBs
KGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0
KS0+c3RyaW5nKCkpLCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PnNldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbihVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVI
b3N0KS0+c3RyaW5nKCkpLCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBo
b3N0UmVkaXJlY3RlZFRvKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNl
dFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRU
byktPnN0cmluZygpKSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVj
dGVkVG8pLT5zdHJpbmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdS
ZWYgaG9zdFJlZGlyZWN0ZWRGcm9tKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVk
aXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBs
KGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwg
V0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RS
ZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3Ry
aW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRh
U3RvcmUoKS5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJl
ZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2Vi
S2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBm
cm9tSG9zdCwgV0tTdHJpbmdSZWYgdG9Ib3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZ1bmN0aW9u
IGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldENyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoZnJvbUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9I
b3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1w
bChkYXRhU3RvcmVSZWYpLT5zZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVz
dGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGZyb21Ib3N0KS0+c3RyaW5nKCkpLCBVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKHRvSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxi
YWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTMy
Myw3ICszMjQsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDcm9zCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVz
ZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHNlY29u
ZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzIHsgc2Vjb25kcyB9LCBb
Y29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7
CiAjZWxzZQpAQCAtMzM0LDcgKzMzNSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc1RpbWUKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0
aXN0aWNzQW5kRGF0YVJlY29yZHMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
dm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0
aWNzQW5kRGF0YVJlY29yZHNGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3Np
bmcoW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFtjb250ZXh0LCBj
YWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBA
IC0zNDUsNyArMzQ2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vz
cwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmco
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nRnVuY3Rpb24gY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1
bGVDb29raWVCbG9ja2luZ1VwZGF0ZShbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdKCkgewor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNjaGVkdWxlQ29va2llQmxvY2tpbmdV
cGRhdGUoW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSgpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMzU2LDIxICszNTcsMjEgQEAg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQwogdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc3VibWl0
VGVsZW1ldHJ5KCk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c3VibWl0VGVs
ZW1ldHJ5KCk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIHZhbHVlKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFs
dWUsIFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0Tm90aWZ5
UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCh2YWx1ZSwgW10geyB9KTsKICNlbmRpZgog
fQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0KFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0RnVuY3Rpb24g
Y2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0SXNSdW5u
aW5nUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3QodmFsdWUsIFtjb250ZXh0LCBjYWxsYmFja10g
eworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldElzUnVubmluZ1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NUZXN0KHZhbHVlLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAg
Y2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMzgxLDQ5ICszODIsNDkgQEAg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdQogdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVj
b3Jkc1JlbW92YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1
ZSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTaG91bGRDbGFzc2lm
eVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSwgW10oKSB7IH0pOworICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2Vz
QmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKHZhbHVlLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1l
dHJ5V2FzQ2FwdHVyZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2
YWx1ZSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXROb3RpZnlQYWdl
c1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCh2YWx1ZSwgW10oKSB7IH0pOworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKHZhbHVlLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzKQogewogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNv
cmRzUmVtb3ZhbChTZWNvbmRzIHsgc2Vjb25kcyB9LCBbXSgpIHsgfSk7CisgICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1v
dmFsKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMpCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBz
ZWNvbmRzIH0sIFtdKCkgeyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5z
ZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyB7IHNlY29uZHMgfSwgW10oKSB7IH0pOwogI2Vu
ZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc01heFN0YXRpc3Rp
Y3NFbnRyaWVzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVkIGVu
dHJpZXMpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TWF4U3RhdGlz
dGljc0VudHJpZXMoZW50cmllcywgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKGVudHJpZXMsIFtdKCkgeyB9KTsKICNl
bmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcnVuZUVudHJp
ZXNEb3duVG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdW5zaWduZWQgZW50
cmllcykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQcnVuZUVudHJp
ZXNEb3duVG8oZW50cmllcywgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPnNldFBydW5lRW50cmllc0Rvd25UbyhlbnRyaWVzLCBbXSgpIHsgfSk7CiAjZW5kaWYK
IH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBl
cnNpc3RlbnRTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBj
b250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnRTdG9yZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViS2l0OjpTaG91
bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6OlllcywgW2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50KFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250
ZXh0LCBjYWxsYmFja10oKSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwog
I2Vsc2UKQEAgLTQzNCw3ICs0MzUsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NDbGVhckluCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVkIGhvdXJzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVk
U2luY2VIb3Vyc0Z1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWU6Om5v
dygpIC0gU2Vjb25kczo6ZnJvbUhvdXJzKGhvdXJzKSwgV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhl
clN0YXRpc3RpY3M6OlllcywgW2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdh
bGxUaW1lOjpub3coKSAtIFNlY29uZHM6OmZyb21Ib3Vycyhob3VycyksIFdlYktpdDo6U2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAg
ICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTQ0NSw3ICs0NDYsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uIGNh
bGxiYWNrKQogewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5
cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M7Ci0g
ICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92
ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBj
YWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEo
ZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFj
a10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTQ1Myw3ICs0
NTQsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhclRoCiB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyhXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29sIGluY2x1
ZGVIdHRwT25seUNvb2tpZXMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgaW5jbHVkZUh0dHBPbmx5Q29v
a2llcywgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBbY29udGV4dCwgY2FsbGJh
Y2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNDY0
LDcgKzQ2NSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUMKIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlRnVuY3Rpb24gY2Fs
bGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaGFzTG9jYWxTdG9y
YWdlRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNMb2NhbFN0b3JhZ2UpIHsKKyAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5oYXNMb2NhbFN0b3JhZ2VGb3JUZXN0aW5nKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShi
b29sIGhhc0xvY2FsU3RvcmFnZSkgewogICAgICAgICBjYWxsYmFjayhoYXNMb2NhbFN0b3JhZ2Us
IGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTQ3NSw3ICs0NzYsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2NhCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMoU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRS
ZXNvdXJjZXMoU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAg
ICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTQ4Niw3ICs0ODcsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbkZ1bmN0aW9uIGNhbGxiYWNr
KQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhhc0lzb2xhdGVkU2Vzc2lv
bkZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9uKSB7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aGFzSXNvbGF0ZWRTZXNzaW9uRm9yVGVzdGluZyhVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFj
a10oYm9vbCBoYXNJc29sYXRlZFNlc3Npb24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSXNvbGF0
ZWRTZXNzaW9uLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC01MDEsNyArNTAyLDcgQEAg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUbwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsKIAotICAgIGF1dG8mIHN0b3JlID0gV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHN0
b3JlID0gKldlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZik7CiAgICAgc3RvcmUuY2xlYXJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzSW5XZWJQcm9jZXNzZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNh
bGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICBzdG9yZS5yZXNldENyb3NzU2l0ZUxv
YWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2Fs
bGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKQEAgLTUxNiw3ICs1MTcsNyBAQCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVSZW1v
dmFsRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU7Ci0g
ICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92
ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFj
a10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5
cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTUyOCw3ICs1MjksNyBAQCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGCiAgICAgVmVjdG9yPFdlYktpdDo6
V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFSZWNvcmRzID0geyBXVEZNb3ZlKGRhdGFSZWNvcmQpIH07
CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdl
YktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZTsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIGRhdGFS
ZWNvcmRzLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgZGF0YVJlY29yZHMsIFtjb250ZXh0LCBjYWxs
YmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTUzNiw3
ICs1MzcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGCiB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXMoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
UmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlc0NhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIE9wdGlv
blNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRl
RGF0YVR5cGU6OkluZGV4ZWREQkRhdGFiYXNlczsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGlt
ZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHko
KSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgaWYgKGNhbGxiYWNrKQogICAgICAgICBjYWxs
YmFjayhjb250ZXh0KTsKICAgICB9KTsKQEAgLTU0NSw3ICs1NDYsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWRECiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92
ZUxvY2FsU3RvcmFnZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBj
b250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2VDYWxsYmFjayBjYWxs
YmFjaykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBl
cyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2U7Ci0gICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5
cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRp
bWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBpZiAoY2FsbGJh
Y2spCiAgICAgICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKQEAgLTU1NSw3ICs1
NTYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXCiB7CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25zOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBb
Y29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5y
ZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2Fs
bGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAt
NTY2LDcgKzU2Nyw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVcK
IAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlT3JpZ2lucyhXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVHZXRGZXRjaENhY2hlT3JpZ2luc0Z1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1
dG8gZGF0YVJlY29yZHMpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5mZXRj
aERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCB7IH0sIFtjb250ZXh0LCBj
YWxsYmFja10gKGF1dG8gZGF0YVJlY29yZHMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6
Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2luczsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRh
UmVjb3JkIDogZGF0YVJlY29yZHMpIHsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3Jp
Z2luIDogZGF0YVJlY29yZC5vcmlnaW5zKQpAQCAtNTgwLDcgKzU4MSw3IEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemUKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpX
ZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMgPSBXZWJLaXQ6OldlYnNpdGVEYXRh
RmV0Y2hPcHRpb246OkNvbXB1dGVTaXplczsKIAotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU6OkRPTUNhY2hlLCBmZXRjaE9wdGlvbnMsIFtvcmlnaW4sIGNvbnRleHQsIGNhbGxiYWNrXSAo
YXV0byBkYXRhUmVjb3JkcykgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmZl
dGNoRGF0YShXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUsIGZldGNoT3B0aW9ucywg
W29yaWdpbiwgY29udGV4dCwgY2FsbGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CiAgICAgICAg
IGF1dG8gb3JpZ2luRGF0YSA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3Ry
aW5nKFdlYktpdDo6dG9JbXBsKG9yaWdpbiktPnN0cmluZygpKS0+ZGF0YSgpOwogICAgICAgICBm
b3IgKGF1dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVjb3JkcykgewogICAgICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiByZWNvcmRPcmlnaW4gOiBkYXRhUmVjb3JkLm9yaWdpbnMpIHsKQEAgLTU5Nywy
MyArNTk4LDIzIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemUKIAog
V0tTdHJpbmdSZWYgV0tXZWJzaXRlRGF0YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKLSAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOwogfQogCiB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeSkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeShXZWJLaXQ6OnRvSW1wbChzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KS0+
c3RyaW5nKCkpOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV2ViS2l0Ojp0b0ltcGwoc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSktPnN0cmluZygpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgdWludDY0X3QgcXVvdGEpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFBlck9yaWdpblN0b3JhZ2VRdW90YShxdW90YSk7
CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0UGVyT3JpZ2luU3RvcmFnZVF1
b3RhKHF1b3RhKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsbERldmljZU9y
aWVudGF0aW9uUGVybWlzc2lvbnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikK
IHsKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlv
bkFjY2Vzc0NvbnRyb2xsZXIoKS5jbGVhclBlcm1pc3Npb25zKCk7CisgICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+ZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9s
bGVyKCkuY2xlYXJQZXJtaXNzaW9ucygpOwogI2VuZGlmCiB9CiAKQEAgLTcxMywxNCArNzE0LDE0
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0aGVudGljYXQKICAgICAgICAgY29u
ZmlndXJhdGlvbi5uZmMgPSBXVEZNb3ZlKG5mYyk7CiAgICAgfQogCi0gICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJz
aXRlRGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVt
b3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVE
YXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkFkQ2xpY2tBdHRy
aWJ1dGlvbnM7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCks
IFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250
ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQ
b2xpY2llcy5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIgKzI3
LDEyIEBACiAjaW5jbHVkZSAiV0tXZWJzaXRlUG9saWNpZXMuaCIKIAogI2luY2x1ZGUgIkFQSURp
Y3Rpb25hcnkuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAi
QVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAi
V0tBcnJheS5oIgogI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLUmV0YWlu
UHRyLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZkN1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmgi
CiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vy
bFByb3h5U2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1t
CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShub25leGlzdGVudCkKQEAgLTEsMTk3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJ
V2Vic2l0ZURhdGFTdG9yZS5oIgotCi0jaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2lu
Y2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaD4KLSNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgotCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0jZW5k
aWYKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLU5TU3RyaW5nICpXZWJEYXRhYmFzZURpcmVjdG9yeURl
ZmF1bHRzS2V5ID0gQCJXZWJEYXRhYmFzZURpcmVjdG9yeSI7Ci1OU1N0cmluZyAqV2ViU3RvcmFn
ZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQ
cmVmZXJlbmNlS2V5IjsKLU5TU3RyaW5nICpXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5RGVmYXVs
dHNLZXkgPSBAIldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnkiOwotTlNTdHJpbmcgKldlYktpdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSI7Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRB
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgIC8vIFRoaXMgcXVpcmsgdXNlZCB0byBtYWtlIHRoZXNlIGFwcHMgc2hhcmUgYXBwbGljYXRp
b24gY2FjaGUgc3RvcmFnZSwgYnV0IGRvZXNuJ3QgYWNjb21wbGlzaCB0aGF0IGFueSBtb3JlLgot
ICAgIC8vIFByZXNlcnZpbmcgaXQgYXZvaWRzIHRoZSBuZWVkIHRvIG1pZ3JhdGUgZGF0YSB3aGVu
IHVwZ3JhZGluZy4KLSAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSBzaG91bGQganVzdCBoYXZlIFNh
ZmFyaSwgV2ViQXBwLCBhbmQgd2ViYm9va21hcmtzZCBjcmVhdGUgYSBkYXRhIHN0b3JlIHdpdGgK
LSAgICAvLyB0aGlzIGFwcGxpY2F0aW9uIGNhY2hlIHBhdGgsIGJ1dCB0aGF0J3Mgbm90IHN1cHBv
cnRlZCBhcyBvZiByaWdodCBub3cuCi0gICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjpp
c01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkFwcCgpIHx8
IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkJvb2ttYXJrc0QoKSkgewotICAgICAgICBO
U1N0cmluZyAqY2FjaGVQYXRoID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJdOwot
Ci0gICAgICAgIHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgo
Y2FjaGVQYXRoLnN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGgpOwotICAgIH0KLSNlbmRpZgotCi0g
ICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZsaW5l
V2ViQXBwbGljYXRpb25DYWNoZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkNhY2hlU3RvcmFnZSIpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkK
LXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5l
dHdvcmtDYWNoZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TWVkaWFDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIk1lZGlhQ2FjaGUiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICBy
ZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4
ZWREQiIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJTZXJ2aWNlV29ya2VycyIpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkK
LXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oIkxvY2FsU3RvcmFnZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUtleXMiKTsKLX0KLQot
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oIldlYlNRTCIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRK
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHRlbXBEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkphdmFTY3JpcHRDb3JlRGVidWciLCBEb250
Q3JlYXRlRGlyZWN0b3J5KTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVt
cERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGly
ZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkK
LXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNV
UkwgKnRlbXBVUkw7Ci0gICAgCi0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAg
ICAgICBOU1VSTCAqdXJsID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpOU1RlbXBvcmFyeURpcmVj
dG9yeSgpIGlzRGlyZWN0b3J5OllFU107Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgCi0gICAgICAgIGlmICghV2Vi
S2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpidW5k
bGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVuZGxl
SWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKLSAg
ICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlk
ZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
dGVtcFVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNE
aXJlY3Rvcnk6WUVTXSByZXRhaW5dOwotICAgIH0pOwotICAgIAotICAgIE5TVVJMICp1cmwgPSBb
dGVtcFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVj
dG9yeTpZRVNdOwotCi0gICAgaWYgKHNob3VsZENyZWF0ZURpcmVjdG9yeSA9PSBDcmVhdGVEaXJl
Y3RvcnkKLSAgICAgICAgJiYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0
ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJp
YnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
Y3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7Ci0gICAgCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0
ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKLX0KLQotV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29u
Y2VfdCBvbmNlVG9rZW47Ci0gICAgc3RhdGljIE5TVVJMICpjYWNoZVVSTDsKLQotICAgIGRpc3Bh
dGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TQ2FjaGVzRGlyZWN0b3J5IGlu
RG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6
Tk8gZXJyb3I6bnVsbHB0cl07Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hh
c0NvbnRhaW5lcigpKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9
IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KCFidW5kbGVJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBb
TlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICB1cmwg
PSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGly
ZWN0b3J5OllFU107Ci0gICAgICAgIH0KLQotICAgICAgICBjYWNoZVVSTCA9IFtbdXJsIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5d
OwotICAgIH0pOwotCi0gICAgTlNVUkwgKnVybCA9IFtjYWNoZVVSTCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOwotICAgIGlmICghW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0
aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRy
XSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVy
bCk7Ci0KLSAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0
b3J5TmFtZSkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBz
dGF0aWMgTlNVUkwgKndlYnNpdGVEYXRhVVJMOwotCi0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRv
a2VuLCBeewotICAgICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNMaWJyYXJ5RGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRv
bWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0
cl07Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLQotICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXTsKLQotICAgICAgICBpZiAoIVdlYktpdDo6cHJv
Y2Vzc0hhc0NvbnRhaW5lcigpKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRp
ZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOwotICAgICAgICAg
ICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZp
ZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAg
ICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVy
IGlzRGlyZWN0b3J5OllFU107Ci0gICAgICAgIH0KLQotICAgICAgICB3ZWJzaXRlRGF0YVVSTCA9
IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0RpcmVj
dG9yeTpZRVNdIHJldGFpbl07Ci0gICAgfSk7Ci0KLSAgICBOU1VSTCAqdXJsID0gW3dlYnNpdGVE
YXRhVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0
b3J5OllFU107Ci0gICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0
ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJp
YnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBj
cmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKLQotICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwu
cGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDUsMTcgKzEwNSwxNyBAQCBwcml2YXRlOgogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilk
ZWZhdWx0RGF0YVN0b3JlCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkpOworICAgIHJldHVybiB3cmFwcGVyKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpKTsKIH0KIAogKyAoV0tXZWJzaXRlRGF0
YVN0b3JlICopbm9uUGVyc2lzdGVudERhdGFTdG9yZQogewotICAgIHJldHVybiB3cmFwcGVyKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpKTsKKyAg
ICByZXR1cm4gd3JhcHBlcihXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNp
c3RlbnQoKSk7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIF93ZWJzaXRlRGF0YVN0b3Jl
LT5BUEk6OldlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgX3dlYnNp
dGVEYXRhU3RvcmUtPldlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUo
KTsKIAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCArIChOU1Nl
dCAqKWFsbFdlYnNpdGVEYXRhVHlwZXMKIAogLSAoV0tIVFRQQ29va2llU3RvcmUgKilodHRwQ29v
a2llU3RvcmUKIHsKLSAgICByZXR1cm4gd3JhcHBlcihfd2Vic2l0ZURhdGFTdG9yZS0+aHR0cENv
b2tpZVN0b3JlKCkpOworICAgIHJldHVybiB3cmFwcGVyKF93ZWJzaXRlRGF0YVN0b3JlLT5jb29r
aWVTdG9yZSgpKTsKIH0KIAogc3RhdGljIFdhbGxUaW1lIHRvU3lzdGVtQ2xvY2tUaW1lKE5TRGF0
ZSAqZGF0ZSkKQEAgLTE4Niw3ICsxODYsNyBAQCAtICh2b2lkKWZldGNoRGF0YVJlY29yZHNPZlR5
cGVzOihOU1NldCAqCiAtICh2b2lkKXJlbW92ZURhdGFPZlR5cGVzOihOU1NldCAqKWRhdGFUeXBl
cyBtb2RpZmllZFNpbmNlOihOU0RhdGUgKilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJD
b3B5ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBfd2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRh
VHlwZXMoZGF0YVR5cGVzKSwgdG9TeXN0ZW1DbG9ja1RpbWUoZGF0ZSA/IGRhdGUgOiBbTlNEYXRl
IGRpc3RhbnRQYXN0XSksIFtjb21wbGV0aW9uSGFuZGxlckNvcHldIHsKKyAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+cmVtb3ZlRGF0YShXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMp
LCB0b1N5c3RlbUNsb2NrVGltZShkYXRlID8gZGF0ZSA6IFtOU0RhdGUgZGlzdGFudFBhc3RdKSwg
W2NvbXBsZXRpb25IYW5kbGVyQ29weV0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHko
KTsKICAgICB9KTsKIH0KQEAgLTIwNSw3ICsyMDUsNyBAQCAtICh2b2lkKXJlbW92ZURhdGFPZlR5
cGVzOihOU1NldCAqKWRhdGFUCiB7CiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpOwogCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUt
PndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVz
KGRhdGFUeXBlcyksIHRvV2Vic2l0ZURhdGFSZWNvcmRzKGRhdGFSZWNvcmRzKSwgW2NvbXBsZXRp
b25IYW5kbGVyQ29weV0geworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5yZW1vdmVEYXRhKFdlYktp
dDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIHRvV2Vic2l0ZURhdGFSZWNvcmRzKGRh
dGFSZWNvcmRzKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0gewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlckNvcHkoKTsKICAgICB9KTsKIH0KQEAgLTI0MCwxMiArMjQwLDEyIEBAICsgKE5TU2V0
PE5TU3RyaW5nICo+ICopX2FsbFdlYnNpdGVEYXRhVHkKIAogKyAoQk9PTClfZGVmYXVsdERhdGFT
dG9yZUV4aXN0cwogewotICAgIHJldHVybiBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmVFeGlzdHMoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCk7CiB9CiAKICsgKHZvaWQpX2RlbGV0ZURlZmF1bHREYXRh
U3RvcmVGb3JUZXN0aW5nCiB7Ci0gICAgcmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVs
ZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwogfQogCiAt
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCkBAIC0yNTMsNyArMjUzLDcgQEAgLSAoaW5z
dGFuY2V0eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRpb246KAogICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0byBjb25maWcgPSBjb25m
aWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oKSA6IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb246OmNyZWF0ZSgpOworICAgIGF1dG8gY29uZmlnID0gY29uZmlndXJhdGlvbi5pc1BlcnNp
c3RlbnQgPyBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1
cmF0aW9uKCkgOiBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUo
KTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKGNvbmZpZy0+aXNQZXJzaXN0ZW50KCkgPT0gY29uZmln
dXJhdGlvbi5pc1BlcnNpc3RlbnQpOwogCkBAIC0zMTIsNyArMzEyLDcgQEAgLSAoaW5zdGFuY2V0
eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRpb246KAogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBjb25m
aWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZVBlcnNpc3Rl
bnRTZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25J
RCgpOwogCi0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OldlYnNpdGVE
YXRhU3RvcmU+KHNlbGYsIFdURk1vdmUoY29uZmlnKSwgc2Vzc2lvbklEKTsKKyAgICBBUEk6Ok9i
amVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4oc2VsZiwg
V1RGTW92ZShjb25maWcpLCBzZXNzaW9uSUQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0z
MjUsNyArMzI1LDcgQEAgLSAodm9pZClfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0PAog
ICAgIGlmIChvcHRpb25zICYgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9uQ29tcHV0ZVNp
emVzKQogICAgICAgICBmZXRjaE9wdGlvbnMuYWRkKFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9w
dGlvbjo6Q29tcHV0ZVNpemVzKTsKIAotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuZmV0Y2hEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyks
IGZldGNoT3B0aW9ucywgW2NvbXBsZXRpb25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXJDb3B5KV0oYXV0byB3ZWJzaXRlRGF0YVJlY29yZHMpIHsKKyAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+ZmV0Y2hEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyks
IGZldGNoT3B0aW9ucywgW2NvbXBsZXRpb25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXJDb3B5KV0oYXV0byB3ZWJzaXRlRGF0YVJlY29yZHMpIHsKICAgICAgICAgVmVjdG9y
PFJlZlB0cjxBUEk6Ok9iamVjdD4+IGVsZW1lbnRzOwogICAgICAgICBlbGVtZW50cy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHdlYnNpdGVEYXRhUmVjb3Jkcy5zaXplKCkpOwogCkBAIC0zMzgsMTgg
KzMzOCwxOCBAQCAtICh2b2lkKV9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczooTlNTZXQ8CiAKIC0g
KEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkCiB7Ci0gICAgcmV0dXJuIF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKCk7CiB9CiAKIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkOihCT09MKWVuYWJsZWQKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOworICAg
IF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFi
bGVkKTsKIH0KIAogLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZQogewog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgcmV0dXJuIF93ZWJzaXRl
RGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZSgpOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RlYnVnTW9kZSgpOwogI2Vsc2UKICAgICByZXR1cm4gTk87CiAjZW5kaWYKQEAgLTM1OCw3
ICszNTgsNyBAQCAtIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlCiAtICh2
b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOihCT09MKWVuYWJsZWQKIHsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShlbmFibGVkKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RlYnVnTW9kZShlbmFibGVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQp
OwogI2VuZGlmCkBAIC0zNjYsMTA2ICszNjYsMTA2IEBAIC0gKHZvaWQpX3NldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEZWJ1Z00KIAogLSAoTlNVSW50ZWdlcilfcGVyT3JpZ2luU3RvcmFnZVF1b3Rh
CiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGVy
T3JpZ2luU3RvcmFnZVF1b3RhKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5wZXJP
cmlnaW5TdG9yYWdlUXVvdGEoKTsKIH0KIAogLSAodm9pZClfc2V0UGVyT3JpZ2luU3RvcmFnZVF1
b3RhOihOU1VJbnRlZ2VyKXNpemUKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNldFBlck9yaWdpblN0b3JhZ2VRdW90YShzaXplKTsKKyAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+c2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKHNpemUpOwogfQogCiAtIChOU1N0cmlu
ZyAqKV9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICByZXR1
cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwogfQogCiAtICh2
b2lkKV9zZXRDYWNoZVN0b3JhZ2VEaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CiB7Ci0g
ICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7CiB9CiAKIC0gKE5TU3RyaW5nICopX3NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7
CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5KCk7CiB9CiAKIC0gKHZvaWQpX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
KGRpcmVjdG9yeSk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkoZGlyZWN0b3J5KTsKIH0KIAogLSAodm9pZClfc2V0Qm91bmRJbnRl
cmZhY2VJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihp
ZGVudGlmaWVyKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Qm91bmRJbnRlcmZhY2VJZGVu
dGlmaWVyKGlkZW50aWZpZXIpOwogfQogCiAtIChOU1N0cmluZyAqKV9ib3VuZEludGVyZmFjZUlk
ZW50aWZpZXIKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3Rv
cmUoKS5ib3VuZEludGVyZmFjZUlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRh
U3RvcmUtPmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRBbGxv
d3NDZWxsdWxhckFjY2VzczooQk9PTClhbGxvd3MKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnNldEFsbG93c0NlbGx1bGFyQWNjZXNzKGFsbG93cyA/IFdlYktp
dDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6OlllcyA6IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nl
c3M6Ok5vKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0QWxsb3dzQ2VsbHVsYXJBY2Nlc3Mo
YWxsb3dzID8gV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzIDogV2ViS2l0OjpBbGxv
d3NDZWxsdWxhckFjY2Vzczo6Tm8pOwogfQogCiAtIChCT09MKV9hbGxvd3NDZWxsdWxhckFjY2Vz
cwogewotICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmFs
bG93c0NlbGx1bGFyQWNjZXNzKCkgPT0gV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVz
OworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+YWxsb3dzQ2VsbHVsYXJBY2Nlc3MoKSA9
PSBXZWJLaXQ6OkFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXM7CiB9CiAKIC0gKHZvaWQpX3NldFBy
b3h5Q29uZmlndXJhdGlvbjooTlNEaWN0aW9uYXJ5ICopY29uZmlndXJhdGlvbgogewotICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UHJveHlDb25maWd1cmF0aW9u
KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpY29uZmlndXJhdGlvbik7CisgICAgX3dlYnNpdGVE
YXRhU3RvcmUtPnNldFByb3h5Q29uZmlndXJhdGlvbigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVm
KWNvbmZpZ3VyYXRpb24pOwogfQogCiAtIChOU1N0cmluZyAqKV9zb3VyY2VBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKKyAgICByZXR1
cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigp
OwogfQogCiAtICh2b2lkKV9zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6KE5T
U3RyaW5nICopaWRlbnRpZmllcgogewotICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKS5zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoaWRlbnRp
ZmllcikpCisgICAgaWYgKCFfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyKGlkZW50aWZpZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6
TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1hdDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIgY2Fubm90IGJlIGNhbGxlZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJdOwog
fQogCiAtIChOU1N0cmluZyAqKV9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIK
IHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVE
YXRhU3RvcmUtPnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpOwogfQogCiAt
ICh2b2lkKV9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6KE5TU3RyaW5n
ICopaWRlbnRpZmllcgogewotICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRpZmll
cikpCisgICAgaWYgKCFfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRpb25TZWNv
bmRhcnlJZGVudGlmaWVyKGlkZW50aWZpZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6
TlNHZW5lcmljRXhjZXB0aW9uIGZvcm1hdDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXIgY2Fubm90IGJlIGNhbGxlZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJd
OwogfQogCiAtICh2b2lkKV9zZXRBbGxvd3NUTFNGYWxsYmFjazooQk9PTClhbGxvd3MKIHsKLSAg
ICBpZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0QWxsb3dzVExT
RmFsbGJhY2soYWxsb3dzKSkKKyAgICBpZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRBbGxvd3NU
TFNGYWxsYmFjayhhbGxvd3MpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmlj
RXhjZXB0aW9uIGZvcm1hdDpAIl9zZXRBbGxvd3NUTFNGYWxsYmFjayBjYW5ub3QgYmUgY2FsbGVk
IGFmdGVyIG5ldHdvcmtpbmcgaGFzIGJlZ3VuIl07CiB9CiAKIC0gKEJPT0wpX2FsbG93c1RMU0Zh
bGxiYWNrCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuYWxsb3dzVExTRmFsbGJhY2soKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmFs
bG93c1RMU0ZhbGxiYWNrKCk7CiB9CiAKIC0gKE5TRGljdGlvbmFyeSAqKV9wcm94eUNvbmZpZ3Vy
YXRpb24KIHsKLSAgICByZXR1cm4gKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKV93ZWJzaXRlRGF0
YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucHJveHlDb25maWd1cmF0aW9uKCk7CisgICAgcmV0
dXJuIChfX2JyaWRnZSBOU0RpY3Rpb25hcnkgKilfd2Vic2l0ZURhdGFTdG9yZS0+cHJveHlDb25m
aWd1cmF0aW9uKCk7CiB9CiAKIC0gKE5TVVJMICopX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
CiB7Ci0gICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X3dlYnNpdGVEYXRhU3RvcmUt
PmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICByZXR1
cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfd2Vic2l0ZURhdGFTdG9yZS0+Y29uZmlndXJhdGlv
bigpLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAog
LSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFN1Ym1pdFRlbGVtZXRyeToo
Qk9PTCl2YWx1ZQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAg
YXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKTsKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3Jl
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC00ODAsMTMgKzQ4MCwxMyBAQCAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGVzdGluCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjYWxsYmFjaykgewotICAg
ICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN0YXRpc3RpY3NU
ZXN0aW5nQ2FsbGJhY2soW2NhbGxiYWNrID0gbWFrZUJsb2NrUHRyKGNhbGxiYWNrKSwgc2VsZl0o
Y29uc3QgU3RyaW5nJiBldmVudCkgeworICAgICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U3Rh
dGlzdGljc1Rlc3RpbmdDYWxsYmFjayhbY2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoY2FsbGJhY2sp
LCBzZWxmXShjb25zdCBTdHJpbmcmIGV2ZW50KSB7CiAgICAgICAgICAgICBjYWxsYmFjayhzZWxm
LCBldmVudCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3dl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdGF0aXN0aWNzVGVzdGluZ0Nh
bGxiYWNrKG51bGxwdHIpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRTdGF0aXN0aWNzVGVz
dGluZ0NhbGxiYWNrKG51bGxwdHIpOwogI2VuZGlmCiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCAt
ICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooCiAgICAgfQogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHdlYlBhZ2VQcm94eS0+
aWRlbnRpZmllcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXShhdXRvIGRvbWFpbnMpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+Z2V0QWxs
U3RvcmFnZUFjY2Vzc0VudHJpZXMod2ViUGFnZVByb3h5LT5pZGVudGlmaWVyKCksIFtjb21wbGV0
aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZG9tYWlu
cykgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gYXBpRG9tYWluczsKICAg
ICAgICAgYXBpRG9tYWlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRvbWFpbnMuc2l6ZSgpKTsK
ICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKQpAQCAtNTI0LDcgKzUyNCw3IEBA
IC0gKHZvaWQpX2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOigKIC0gKHZvaWQpX3NjaGVk
dWxlQ29va2llQmxvY2tpbmdVcGRhdGU6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVy
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUo
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7
CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2Nv
bXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTM1LDcgKzUz
NSw3IEBAIC0gKHZvaWQpX3NjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGU6KHYKIC0gKHZvaWQp
X3NldFByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnNldFByZXZhbGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9y
ZS0+c2V0UHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogICAgIH0pOwogI2Vsc2UKQEAgLTU0Niw3ICs1NDYsNyBAQCAtICh2b2lkKV9z
ZXRQcmV2YWxlbnREb21haW46KE5TVVJMICopZG9tCiAtICh2b2lkKV9nZXRJc1ByZXZhbGVudERv
bWFpbjooTlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWNv
bXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
LSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmlzUHJldmFsZW50UmVz
b3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcildKGJvb2wgZW5hYmxlZCkgeworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5p
c1ByZXZhbGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGVuYWJsZWQpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZW5hYmxlZCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTU3LDcgKzU1Nyw3
IEBAIC0gKHZvaWQpX2dldElzUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWQKIC0gKHZvaWQpX2Ns
ZWFyUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3Rv
cmUtPmNsZWFyUHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxl
ciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogICAgIH0pOwogI2Vsc2UKQEAgLTU2OCw3ICs1NjgsNyBAQCAtICh2b2lk
KV9jbGVhclByZXZhbGVudERvbWFpbjooTlNVUkwgKilkCiAtICh2b2lkKV9wcm9jZXNzU3RhdGlz
dGljc0FuZERhdGFSZWNvcmRzOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1By
b2Nlc3NpbmcoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNjaGVkdWxlU3RhdGlzdGljc0FuZERh
dGFSZWNvcmRzUHJvY2Vzc2luZyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpXSgpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9
KTsKICNlbHNlCkBAIC01NzgsMTggKzU3OCwxOCBAQCAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGlj
c0FuZERhdGFSZWNvcmRzCiAKIC0gKGJvb2wpX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyCiB7
Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoV2ViQ29yZTo6c2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRhdGFiYXNlRmlsZW5hbWUoX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhXZWJDb3JlOjpzZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShfd2Vic2l0ZURhdGFTdG9yZS0+c2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSgpKSk7CiB9CiAKIC0gKGlkIDxfV0tXZWJzaXRlRGF0YVN0b3Jl
RGVsZWdhdGU+KV9kZWxlZ2F0ZQogewotICAgIHJldHVybiBfZGVsZWdhdGUuZ2V0KCk7CisgICAg
cmV0dXJuIF9kZWxlZ2F0ZS5nZXQoKS5nZXQoKTsKIH0KIAogLSAodm9pZClzZXRfZGVsZWdhdGU6
KGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAgX2RlbGVn
YXRlID0gZGVsZWdhdGU7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5zZXRDbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PihkZWxlZ2F0
ZSkpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRDbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJz
aXRlRGF0YVN0b3JlQ2xpZW50PihkZWxlZ2F0ZSkpOwogfQogCiBAZW5kCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlSW50ZXJuYWwuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDEyICsyNSwxMyBAQAogCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhU3RvcmVQ
cml2YXRlLmgiCiAKLSNpbXBvcnQgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQgIldL
T2JqZWN0LmgiCisjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW1wb3J0IDx3dGYvV2Vh
a09iakNQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXRlbXBsYXRlPD4gc3RydWN0IFdy
YXBwZXJUcmFpdHM8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBX
cmFwcGVyVHJhaXRzPFdlYnNpdGVEYXRhU3RvcmU+IHsKICAgICB1c2luZyBXcmFwcGVyQ2xhc3Mg
PSBXS1dlYnNpdGVEYXRhU3RvcmU7CiB9OwogCkBAIC0zOCw3ICszOSw3IEBAIHRlbXBsYXRlPD4g
c3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpXZWIKIAogQGludGVyZmFjZSBXS1dlYnNpdGVEYXRh
U3RvcmUgKCkgPFdLT2JqZWN0PiB7CiBAcGFja2FnZQotICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxB
UEk6OldlYnNpdGVEYXRhU3RvcmU+IF93ZWJzaXRlRGF0YVN0b3JlOwotICAgIFJldGFpblB0cjxp
ZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsKKyAgICBBUEk6Ok9i
amVjdFN0b3JhZ2U8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBfd2Vic2l0ZURhdGFTdG9yZTsK
KyAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiA+IF9kZWxl
Z2F0ZTsKIH0KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDI0
OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRh
U3RvcmVHTGliLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgotCi0jaWYg
UExBVEZPUk0oR1RLKQotI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid2Via2l0Z3RrIgotI2VsaWYg
UExBVEZPUk0oV1BFKQotI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid3BlIgotI2VuZGlmCi0KLW5h
bWVzcGFjZSBBUEkgewotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJh
cHBsaWNhdGlvbnMiKTsKLX0KLQotLy8gRklYTUU6IFRoZSBvdGhlciBkaXJlY3RvcmllcyBpbiB0
aGlzIGZpbGUgYXJlIHNoYXJlZCBiZXR3ZWVuIGFsbCBhcHBsaWNhdGlvbnMgdXNpbmcgV2ViS2l0
R1RLLgotLy8gV2h5IGlzIG9ubHkgdGhpcyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRp
Y3VsYXIgYXBwbGljYXRpb24/Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJn
bmFtZSgpKSwgIldlYktpdENhY2hlIikpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZ19nZXRfcHJnbmFtZSgpKSwgIkNhY2hlU3RvcmFnZSIpKTsKLX0KLQotV1RGOjpTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsK
LSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
QkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIgR19ESVJfU0VQQVJB
VE9SX1MgImluZGV4ZWRkYiIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJu
IHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNU
T1JZIEdfRElSX1NFUEFSQVRPUl9TICJzZXJ2aWNld29ya2VycyIpOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAg
ICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFT
RV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImxvY2Fsc3RvcmFnZSIpOwotfQotCi1XVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJtZWRpYWtleXMiKTsKLX0K
LQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3Jh
Z2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGV2aWNl
aWRoYXNoc2FsdHMiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJB
VE9SX1MgImRhdGFiYXNlcyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0SFNUU0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9T
KTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1Jf
UyAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6
OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwotfQotCi1X
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2Rpcigp
KSwgZGlyZWN0b3J5TmFtZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFu
YWdlci5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1
OCw3IEBAIHN0cnVjdCBfV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGUgewogICAgIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoZGF0YU1hbmFn
ZXIpOwotICAgICAgICByZXR1cm4gd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3Jl
KGRhdGFNYW5hZ2VyKS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCk7CisgICAgICAgIHJl
dHVybiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoZGF0YU1hbmFnZXIpLnNl
c3Npb25JRCgpOwogICAgIH0KIAogICAgIH5fV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGUoKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViQ29udGV4dC5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEs
MTggKzMxMSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRTZXRQcm9wZXJ0eSgKICAg
ICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
PiB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbihjb25zdCBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgcHJvY2Vzc1Bvb2xjb25m
aWd1cmFyaW9uKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uOjpjcmVhdGUoKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24uYXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hl
RGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24uZGlza0NhY2hlRGlyZWN0
b3J5KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShT
dHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKHBy
b2Nlc3NQb29sY29uZmlndXJhcmlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAgIGNv
bmZpZ3VyYXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShTdHJpbmco
cHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9y
eSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShT
dHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KSkpOwotICAgIHJldHVybiBjb25maWd1cmF0aW9uOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRX
ZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogewogICAgIEdfT0JKRUNUX0NM
QVNTKHdlYmtpdF93ZWJfY29udGV4dF9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZChvYmplY3Qp
OwpAQCAtMzM1LDI0ICszMjMsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3Ry
dWN0ZWQoCiAKICAgICBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0ID0gV0VCS0lUX1dFQl9D
T05URVhUKG9iamVjdCk7CiAgICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSB3ZWJD
b250ZXh0LT5wcml2OwotICAgIGlmIChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIgJiYgIXdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhlbWVyYWwocHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyLmdldCgpKSkgewotICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVj
dG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3RvcnkocHJpdi0+
d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldERp
c2tDYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRh
TWFuYWdlci5nZXQoKSkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKLSAgICAgICAgY29u
ZmlndXJhdGlvbi5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0
YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3Rvcnko
cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9u
LnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2NhY2hl
X2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci1BTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICBjb25maWd1cmF0aW9uLnNldFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5
KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLUFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAotICAgIH0gZWxzZSBpZiAoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9y
eS5pc051bGwoKSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5s
b2NhbFN0b3JhZ2VEaXJlY3RvcnkuZGF0YSgpKSk7CiAKICAgICBwcml2LT5wcm9jZXNzUG9vbCA9
IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlvbik7CiAKLSAgICBpZiAoIXByaXYt
PndlYnNpdGVEYXRhTWFuYWdlcikKLSAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyID0g
YWRvcHRHUmVmKHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZSh3ZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9u
KSkpOwotICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRQcmltYXJ5RGF0YVN0b3JlKHdlYmtpdFdl
YnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0
KCkpKTsKLQogICAgIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFByb2Nlc3NQb29sKHByaXYt
PndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSwgKnByaXYtPnByb2Nlc3NQb29sKTsKIAogICAgIHBy
aXYtPnRsc0Vycm9yc1BvbGljeSA9IFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMOwpAQCAt
Nzc3LDcgKzc1MCw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2NsZWFyX2NhY2hlKFdlYksK
ICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzOwogICAgIHdl
YnNpdGVEYXRhVHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUpOwogICAgIHdl
YnNpdGVEYXRhVHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKTsKLSAgICBhdXRv
JiB3ZWJzaXRlRGF0YVN0b3JlID0gd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3Jl
KGNvbnRleHQtPnByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkud2Vic2l0ZURhdGFTdG9y
ZSgpOworICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJHZXREYXRhU3RvcmUoY29udGV4dC0+cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKTsK
ICAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEod2Vic2l0ZURhdGFUeXBlcywgLVdhbGxU
aW1lOjppbmZpbml0eSgpLCBbXSB7IH0pOwogfQogCkBAIC0xNDc0LDEyICsxNDQ3LDggQEAgdm9p
ZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3dlYl9leHRlbnNpbwogICoKICAqIERlcHJlY2F0ZWQ6
IDIuMTAuIFVzZSB3ZWJraXRfd2ViX2NvbnRleHRfbmV3X3dpdGhfd2Vic2l0ZV9kYXRhX21hbmFn
ZXIoKSBpbnN0ZWFkLgogICovCi12b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNo
ZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogZGlyZWN0
b3J5KQordm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KFdl
YktpdFdlYkNvbnRleHQqLCBjb25zdCBjaGFyKikKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChkaXJl
Y3RvcnkpOwotCi0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24o
KS5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0
b3J5KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMCwxMiArMjAsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRh
U3RvcmUuaCIKICNpbmNsdWRlICJXZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUu
aCIKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQu
aD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgpAQCAtOTUsNyArOTUsNyBAQCBzdHJ1Y3Qg
X1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUgCiAgICAgICAgIEFTU0VSVChwcm9jZXNz
UG9vbHMuaXNFbXB0eSgpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0
b3JlPiB3ZWJzaXRlRGF0YVN0b3JlOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU+IHdlYnNpdGVEYXRhU3RvcmU7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBiYXNlRGF0YURpcmVj
dG9yeTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGJhc2VDYWNoZURpcmVjdG9yeTsKICAgICBHVW5p
cXVlUHRyPGNoYXI+IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKQEAgLTE4MSw3ICsxODEsNyBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJTZXRQCiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgUFJPUF9JU19FUEhFTUVSQUw6CiAgICAgICAgIGlmIChnX3ZhbHVlX2dldF9ib29s
ZWFuKHZhbHVlKSkKLSAgICAgICAgICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUg
PSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsK
KyAgICAgICAgICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9i
amVjdCwgcHJvcElELCBwYXJhbVNwZWMpOwpAQCAtMzg0LDI4ICszODQsMjggQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyXwogV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
KiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJDcmVhdGUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyKiBtYW5hZ2VyID0gV0VCS0lUX1dFQlNJVEVfREFUQV9NQU5BR0VSKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9XRUJTSVRFX0RBVEFfTUFOQUdFUiwgbnVsbHB0cikpOwotICAgIG1hbmFnZXIt
PnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
KTsKKyAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAKICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIAotQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2Vi
S2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyKQorV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
JiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyKiBtYW5hZ2VyKQogewogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUq
IHByaXYgPSBtYW5hZ2VyLT5wcml2OwogICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSkg
ewogICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURp
cmVjdG9yeSghcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0
KCkpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCFw
cml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJk
aXJlY3RvcnkpKTsKKyAgICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJp
di0+ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7
CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoIXBy
aXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5LmdldCgpKSk7CisgICAgICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkuZ2V0KCkpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkoIXByaXYtPndlYlNRTERpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3Rv
cnkuZ2V0KCkpKTsKKyAgICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKSkpOwogICAgICAg
ICBjb25maWd1cmF0aW9uLT5zZXRIU1RTU3RvcmFnZURpcmVjdG9yeSghcHJpdi0+aHN0c0NhY2hl
RGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhT
VFNEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5LmdldCgpKSk7Ci0gICAgICAgIGNvbmZpZ3Vy
YXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICAgICAgcHJpdi0+d2Vi
c2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUoY29u
ZmlndXJhdGlvbiksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgICAg
ICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpIDog
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5oc3Rz
Q2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3Jl
ID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9u
KSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuICpwcml2LT53ZWJzaXRlRGF0YVN0b3JlOwpAQCAtNTQyLDcgKzU0Miw3IEBAIGNvbnN0IGdj
aGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBpZiAoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgcHJpdi0+
bG9jYWxTdG9yYWdlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAg
ICAgcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRh
KCkpKTsKICAgICByZXR1cm4gcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpOwogfQog
CkBAIC01NjYsNyArNTY2LDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcgogCiAgICAgaWYgKCFwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkpIHsKICAgICAgICAgLy8g
VGhlIGRlZmF1bHQgZGlyZWN0b3J5IGFscmVhZHkgaGFzIHRoZSBzdWJkaXJlY3RvcnkuCi0gICAg
ICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChGaWxlU3lzdGVtOjpk
aXJlY3RvcnlOYW1lKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURp
cmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVj
dG9yeS5yZXNldChnX3N0cmR1cChGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0
YSgpKSk7CiAgICAgfQogICAgIHJldHVybiBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7
CiB9CkBAIC01OTAsNyArNTkwLDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghcHJpdi0+YXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSkKLSAgICAgICAgcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeS5yZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7
CiAgICAgcmV0dXJuIHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CiAK
QEAgLTYxMyw3ICs2MTMsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFwcml2LT5pbmRleGVkREJE
aXJlY3RvcnkpCi0gICAgICAgIHByaXYtPmluZGV4ZWREQkRpcmVjdG9yeS5yZXNldChnX3N0cmR1
cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+aW5kZXhlZERCRGlyZWN0b3J5LnJl
c2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOwogICAgIHJldHVybiBwcml2LT5pbmRl
eGVkREJEaXJlY3RvcnkuZ2V0KCk7CiB9CiAKQEAgLTYzOCw3ICs2MzgsNyBAQCBjb25zdCBnY2hh
ciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgaWYgKCFwcml2LT53ZWJTUUxEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPndlYlNRTERp
cmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+d2Vi
U1FMRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOwogICAgIHJldHVy
biBwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCk7CiB9CiAKQEAgLTY2MSw3ICs2NjEsNyBAQCBj
b25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgaWYgKCFwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkpCi0gICAgICAgIHBy
aXYtPmhzdHNDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRIU1RTRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2
LT5oc3RzQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1cm4g
cHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5LmdldCgpOwogfQogCkBAIC03MzUsNyArNzM1LDcgQEAg
dm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2goVwogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpKTsKIAogICAgIEdS
ZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyhtYW5hZ2VyLCBjYW5jZWxs
YWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0gICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmZldGNoRGF0YSh0b1dlYnNpdGVEYXRhVHlwZXMo
dHlwZXMpLCBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMsIFt0YXNrID0gV1RG
TW92ZSh0YXNrKV0gKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gcmVjb3JkcykgeworICAgIG1h
bmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPmZldGNoRGF0YSh0b1dlYnNpdGVEYXRhVHlw
ZXModHlwZXMpLCBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMsIFt0YXNrID0g
V1RGTW92ZSh0YXNrKV0gKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gcmVjb3JkcykgewogICAg
ICAgICBHTGlzdCogZGF0YUxpc3QgPSBudWxscHRyOwogICAgICAgICB3aGlsZSAoIXJlY29yZHMu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogZGF0YSA9IHdlYmtpdFdlYnNpdGVE
YXRhQ3JlYXRlKHJlY29yZHMudGFrZUxhc3QoKSkpCkBAIC04MDksNyArODA5LDcgQEAgdm9pZCB3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfcmVtb3ZlKAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnJlbW92ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKHR5cGVzKSwgcmVjb3JkcywgW3Rhc2sg
PSBXVEZNb3ZlKHRhc2spXSB7CisgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+
cmVtb3ZlRGF0YSh0b1dlYnNpdGVEYXRhVHlwZXModHlwZXMpLCByZWNvcmRzLCBbdGFzayA9IFdU
Rk1vdmUodGFzayldIHsKICAgICAgICAgZ190YXNrX3JldHVybl9ib29sZWFuKHRhc2suZ2V0KCks
IFRSVUUpOwogICAgIH0pOwogfQpAQCAtODYxLDcgKzg2MSw3IEBAIHZvaWQgd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2NsZWFyKFcKIAogICAgIFdhbGxUaW1lIHRpbWVQb2ludCA9IHRpbWVT
cGFuID8gV2FsbFRpbWU6Om5vdygpIC0gU2Vjb25kczo6ZnJvbU1pY3Jvc2Vjb25kcyh0aW1lU3Bh
bikgOiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCk7CiAgICAgR1JlZlB0cjxHVGFzaz4gdGFz
ayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KG1hbmFnZXIsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywg
dXNlckRhdGEpKTsKLSAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkucmVtb3ZlRGF0YSh0b1dlYnNpdGVEYXRhVHlwZXModHlwZXMpLCB0aW1lUG9p
bnQsIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0geworICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVE
YXRhU3RvcmUtPnJlbW92ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKHR5cGVzKSwgdGltZVBvaW50
LCBbdGFzayA9IFdURk1vdmUodGFzayldIHsKICAgICAgICAgZ190YXNrX3JldHVybl9ib29sZWFu
KHRhc2suZ2V0KCksIFRSVUUpOwogICAgIH0pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlclByaXZhdGUuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xOSwxMiArMTksMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJB
UElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogd2Vi
a2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uPiYmKTsKLUFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURh
dGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciopOworV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUo
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKik7CiB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdl
ckFkZFByb2Nlc3NQb29sKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciosIFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2wmKTsKIHZvaWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyUmVtb3ZlUHJvY2Vzc1Bv
b2woV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiwgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpOwog
Y29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqPiYgd2Via2l0V2Vic2l0ZURhdGFN
YW5hZ2VyR2V0UHJvY2Vzc1Bvb2xzKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciopOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNp
dGVEYXRhU3RvcmVXaW4uY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCShub25leGlzdGVudCkK
QEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotCi0jaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KLQotbmFtZXNwYWNlIEFQSSB7Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsKLX0KLQotU3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJDYWNoZVN0b3JhZ2UiKTsKLX0KLQotU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQotewot
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsK
LX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIklu
ZGV4ZWREQiIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJTZXJ2aWNlV29ya2VycyIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOwotfQotCi1TdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQotewot
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2Ui
KTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldl
YlNRTCIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeU5hbWUpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3
ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeU5hbWUpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgZGlyZWN0b3J5TmFtZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzU4LDcgKzEzNTgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVD
b29rCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxT
KE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdodHRwT25seScgd2FzIG5vdCBmb3Vu
ZC4iKTsKIAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSogY29va2llTWFuYWdlciA9IG1fcHJv
Y2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotICAgIGNvb2tp
ZU1hbmFnZXItPnNldENvb2tpZXMocGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgp
LCB7IGNvb2tpZSB9LCBbY2FsbGJhY2sgPSBjYWxsYmFjay5jb3B5UmVmKCldKENhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKHBhZ2UtPnNl
c3Npb25JRCgpLCB7IGNvb2tpZSB9LCBbY2FsbGJhY2sgPSBjYWxsYmFjay5jb3B5UmVmKCldKENh
bGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yID09IENhbGxiYWNr
QmFzZTo6RXJyb3I6Ok5vbmUpCiAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsK
ICAgICAgICAgZWxzZQpAQCAtMTM3OCw3ICsxMzc4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6ZGVsZXRlQWxsQ29vawogICAgIFN0cmluZyBob3N0ID0gYWN0aXZlVVJMLmhvc3QoKS50
b1N0cmluZygpOwogCiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0g
bV9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAg
Y29va2llTWFuYWdlci0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhwYWdlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuc2Vzc2lvbklEKCksIHsgaG9zdCwgZG9tYWluQnlBZGRpbmdEb3RQcmVmaXhJZk5l
ZWRlZChob3N0KSB9KTsKKyAgICBjb29raWVNYW5hZ2VyLT5kZWxldGVDb29raWVzRm9ySG9zdG5h
bWVzKHBhZ2UtPnNlc3Npb25JRCgpLCB7IGhvc3QsIGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZO
ZWVkZWQoaG9zdCkgfSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldFNlc3Np
b25QZXJtaXNzaW9ucyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlNlc3Npb25QZXJtaXNzaW9uRGF0YT4+JiBvdXRfcGVy
bWlzc2lvbnMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDYgQEAKICNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJBUElTdHJp
bmcuaCIKICNpbXBvcnQgIkFQSVVSTC5oIgotI2ltcG9ydCAiQVBJV2Vic2l0ZURhdGFTdG9yZS5o
IgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2ltcG9y
dCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgiCiAjaW1wb3J0ICJB
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKQEAgLTY0LDYgKzYzLDcgQEAKICNpbXBv
cnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0
ICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIKKyNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bXBvcnQgIl9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tF
cnJvclJlY292ZXJ5QXR0ZW1wdGluZy5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5h
bC5oIgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04Nyw3ICs4Nyw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNz
UHJveHkKICAgICBjb25uZWN0KCk7CiAKICAgICBpZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9
IG1fcHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFTdG9yZSgpKQotICAgICAgICBtX3dlYnNpdGVEYXRh
U3RvcmVzLnNldCh3ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklE
KCksIG1ha2VSZWYod2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpKSk7CisgICAg
ICAgIG1fd2Vic2l0ZURhdGFTdG9yZXMuc2V0KHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgp
LCBtYWtlUmVmKCp3ZWJzaXRlRGF0YVN0b3JlKSk7CiB9CiAKIE5ldHdvcmtQcm9jZXNzUHJveHk6
On5OZXR3b3JrUHJvY2Vzc1Byb3h5KCkKQEAgLTExMzQsMTQgKzExMzQsMTQgQEAgV2Vic2l0ZURh
dGFTdG9yZSogTmV0d29ya1Byb2Nlc3NQcm94eTo6dwogICAgICAgICByZXR1cm4gaXRlcmF0b3It
PnZhbHVlLmdldCgpOwogCiAgICAgaWYgKGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBtX3Byb2Nl
c3NQb29sLndlYnNpdGVEYXRhU3RvcmUoKSkgewotICAgICAgICBpZiAoc2Vzc2lvbklEID09IHdl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSkKLSAgICAgICAg
ICAgIHJldHVybiAmd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAg
ICBpZiAoc2Vzc2lvbklEID09IHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKQorICAgICAg
ICAgICAgcmV0dXJuIHdlYnNpdGVEYXRhU3RvcmU7CiAgICAgfQogCiAgICAgaWYgKHNlc3Npb25J
RCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiAmQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0
YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICByZXR1cm4gV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnJldHJpZXZlQ2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0
YVN0b3JlLmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgiCiAjaWYgRU5BQkxF
KExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eS5oIgpAQCAtMzYsNiArMzUsNyBAQAogI2luY2x1ZGUgIlByb2Nl
c3NUaHJvdHRsZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc1NpdGVOYXZpZ2F0
aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5o
PgogI2luY2x1ZGUgPG1lbW9yeT4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyNDk3
MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTUgKzI2LDE2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCisjaW5jbHVkZSAiQVBJSFRU
UENvb2tpZVN0b3JlLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFSZWNvcmQuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRl
RGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRl
ICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5oIgogI2luY2x1ZGUgIk1vY2tBdXRoZW50aWNhdG9y
TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNz
U3RhdHVzLmgiCisjaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzTWVzc2FnZXMuaCIKQEAgLTEzOSw2ICsxNDAsNTcgQEAgV2Vic2l0ZURhdGFTdG9yZTo6
V2Vic2l0ZURhdGFTdG9yZShQQUw6OgogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9
CiAKK3N0YXRpYyBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mIGdsb2JhbERlZmF1bHREYXRhU3Rv
cmUoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4+IGdsb2JhbERlZmF1bHREYXRhU3RvcmU7CisgICAgcmV0dXJuIGdsb2JhbERlZmF1bHREYXRh
U3RvcmUuZ2V0KCk7Cit9CisKK1JlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGF0YVN0b3JlKCkKK3sKKyAgICBJbml0aWFsaXplV2ViS2l0MigpOworCisgICAg
YXV0byYgc3RvcmUgPSBnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCk7CisgICAgaWYgKCFzdG9yZSkK
KyAgICAgICAgc3RvcmUgPSBhZG9wdFJlZihuZXcgV2Vic2l0ZURhdGFTdG9yZShkZWZhdWx0RGF0
YVN0b3JlQ29uZmlndXJhdGlvbigpLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
KSk7CisKKyAgICByZXR1cm4gKnN0b3JlOworfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmRl
bGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCkKK3sKKyAgICBnbG9iYWxEZWZhdWx0RGF0
YVN0b3JlKCkgPSBudWxscHRyOworfQorCitib29sIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmVFeGlzdHMoKQoreworICAgIHJldHVybiAhIWdsb2JhbERlZmF1bHREYXRhU3RvcmUo
KTsKK30KKworUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKK3sKKyAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7
CisKKyAgICBjb25maWd1cmF0aW9uLT5zZXRQZXJzaXN0ZW50KHRydWUpOworCisgICAgY29uZmln
dXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShkZWZhdWx0QXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRDYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgp
KTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGRlZmF1bHRNZWRp
YUNhY2hlRGlyZWN0b3J5KCkpOworCisgICAgY29uZmlndXJhdGlvbi0+c2V0SW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOworICAg
IGNvbmZpZ3VyYXRpb24tPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoZGVm
YXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJh
dGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoZGVmYXVsdFdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShk
ZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eShkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1
cmF0aW9uLT5zZXREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdERldmlj
ZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpKTsKKworICAgIGNvbmZpZ3VyYXRpb24tPnNl
dEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRKYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpKTsKKworICAgIHJldHVybiBjb25maWd1cmF0aW9uOworfQorCiBX
ZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKQEAgLTE3MjgsNyArMTc4MCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6cmVzZXRDYWNoZU1heEFnZUMKIGJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6aXNBc3NvY2lhdGVk
UHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKSBjb25zdAogewogICAgIGlm
IChhdXRvKiBwcm9jZXNzUG9vbERhdGFTdG9yZSA9IHByb2Nlc3NQb29sLndlYnNpdGVEYXRhU3Rv
cmUoKSkKLSAgICAgICAgcmV0dXJuICZwcm9jZXNzUG9vbERhdGFTdG9yZS0+d2Vic2l0ZURhdGFT
dG9yZSgpID09IHRoaXM7CisgICAgICAgIHJldHVybiBwcm9jZXNzUG9vbERhdGFTdG9yZSA9PSB0
aGlzOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTc1NCw3ICsxODA2LDcgQEAgSGFzaFNl
dDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBXZWJzaXRlRAogICAgIH0KIAogICAgIGlmIChwcm9j
ZXNzUG9vbHMuaXNFbXB0eSgpICYmIGNvdW50ICYmIGVuc3VyZUFQb29sRXhpc3RzKSB7Ci0gICAg
ICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24obV9jb25maWd1cmF0aW9uKSk7CisgICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBXZWJQcm9j
ZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKSk7
CiAgICAgICAgIHByb2Nlc3NQb29scy5hZGQocHJvY2Vzc1Bvb2wucHRyKCkpOwogICAgIH0KIApA
QCAtMjAwMSw2ICsyMDUzLDI4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6YWRkU2VjS2V5UHJv
eHlTdG8KIH0KICNlbmRpZgogCisjaWYgIVBMQVRGT1JNKENPQ09BKQorV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTYzNjkgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYzNzAK
KyAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50LgorICAgIHJldHVybiBXVEY6OlN0cmluZygpOworfQorI2VuZGlm
CisKKyNpZiAhVVNFKEdMSUIpCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICAvLyBOb3QgaW1wbGVt
ZW50ZWQuCisgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJM
RShXRUJfQVVUSE4pCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYmIGNv
bmZpZ3VyYXRpb24pCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTkyLDExICs5MiwxOSBAQCBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRTdGF0dXM7CiBzdHJ1Y3QgUGx1Z2luTW9kdWxlSW5mbzsKICNlbmRpZgogCi1jbGFzcyBX
ZWJzaXRlRGF0YVN0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1
YmxpYyBJZGVudGlmaWVkPFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
V2Vic2l0ZURhdGFTdG9yZT4gIHsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmUgOiBwdWJsaWMgQVBJ
OjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpXZWJzaXRlRGF0YVN0b3JlPiwgcHVibGlj
IElkZW50aWZpZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJz
aXRlRGF0YVN0b3JlPiAgewogcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9y
ZT4gZGVmYXVsdERhdGFTdG9yZSgpOworICAgIHN0YXRpYyBib29sIGRlZmF1bHREYXRhU3RvcmVF
eGlzdHMoKTsKKyAgICBzdGF0aWMgdm9pZCBkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGlu
ZygpOworICAgIHN0YXRpYyBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bj4gZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKKwogICAgIHN0YXRpYyBSZWY8V2Vi
c2l0ZURhdGFTdG9yZT4gY3JlYXRlTm9uUGVyc2lzdGVudCgpOwogICAgIHN0YXRpYyBSZWY8V2Vi
c2l0ZURhdGFTdG9yZT4gY3JlYXRlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4m
JiwgUEFMOjpTZXNzaW9uSUQpOwotICAgIHZpcnR1YWwgfldlYnNpdGVEYXRhU3RvcmUoKTsKKwor
ICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQpOworICAgIGV4cGxp
Y2l0IFdlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYm
LCBQQUw6OlNlc3Npb25JRCk7CisgICAgfldlYnNpdGVEYXRhU3RvcmUoKTsKIAogICAgIHN0YXRp
YyBXZWJzaXRlRGF0YVN0b3JlKiBleGlzdGluZ05vbkRlZmF1bHREYXRhU3RvcmVGb3JTZXNzaW9u
SUQoUEFMOjpTZXNzaW9uSUQpOwogCkBAIC0yNjUsMTAgKzI3MywyMyBAQCBwdWJsaWM6CiAgICAg
U09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3ImIHNvQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yKCkg
eyByZXR1cm4gbV9zb0F1dGhvcml6YXRpb25Db29yZGluYXRvci5nZXQoKTsgfQogI2VuZGlmCiAK
LXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShQQUw6OlNlc3Npb25JRCk7
Ci0gICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+JiYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVm
YXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RG
OjpTdHJpbmcgZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6
OlN0cmluZyBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAgIHN0
YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CisgICAgc3Rh
dGljIFdURjo6U3RyaW5nIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CisgICAg
c3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOworI2lm
IFVTRShHTElCKQorICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SFNUU0RpcmVjdG9yeSgp
OworI2VuZGlmCisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0Q2FjaGVTdG9yYWdl
RGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHREZXZpY2VJZEhhc2hT
YWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEph
dmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKK3ByaXZhdGU6CiAgICAgdm9pZCBm
ZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBSZWZQdHI8V29ya1F1ZXVlPiYmLCBGdW5jdGlvbjx2b2lk
KFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5KTsKIAogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplKCk7CkBAIC0yNzksNiArMzAwLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
bGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJik7
CiAjZW5kaWYKIAorICAgIFdlYnNpdGVEYXRhU3RvcmUoKTsKKworICAgIGVudW0gU2hvdWxkQ3Jl
YXRlRGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0b3J5LCBEb250Q3JlYXRlRGlyZWN0b3J5IH07Cisg
ICAgc3RhdGljIFdURjo6U3RyaW5nIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUsIFNob3VsZENyZWF0ZURpcmVjdG9y
eSA9IENyZWF0ZURpcmVjdG9yeSk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGNhY2hlRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlO
YW1lKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpOworICAg
IAogICAgIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gcHJvY2Vzc1Bvb2xzKHNpemVf
dCBjb3VudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIGJvb2wgZW5zdXJl
QVBvb2xFeGlzdHMgPSB0cnVlKSBjb25zdDsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiAr
MjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5oIgogCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbigp
Ci0gICAgOiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQorICAgIDog
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpCiB7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHByaXZhdGU6CiAgICAg
dWludDY0X3QgbV9wZXJPcmlnaW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFN
YW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSB9OwogICAgIFN0cmluZyBtX25ldHdvcmtDYWNoZURpcmVj
dG9yeTsKICAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwotICAgIFN0cmlu
ZyBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7CisgICAgU3RyaW5n
IG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSB7ICJGaWxlcyJfcyB9
OwogICAgIFN0cmluZyBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1faW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0J
KHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiAjaW1wb3J0ICJDb29raWVT
dG9yYWdlVXRpbHNDRi5oIgorI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAi
U3RvcmFnZU1hbmFnZXIuaCIKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKQEAgLTIzMCw0ICsy
MzEsMTYxIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1SZW1vdmVSZWMKICAgICBX
ZWJDb3JlOjpyZW1vdmVSZWNlbnRseU1vZGlmaWVkUmVjZW50U2VhcmNoZXMob2xkZXN0VGltZVRv
UmVtb3ZlKTsKIH0KIAorTlNTdHJpbmcgKldlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXkg
PSBAIldlYkRhdGFiYXNlRGlyZWN0b3J5IjsKK05TU3RyaW5nICpXZWJTdG9yYWdlRGlyZWN0b3J5
RGVmYXVsdHNLZXkgPSBAIldlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VL
ZXkiOworTlNTdHJpbmcgKldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAi
V2ViS2l0TWVkaWFDYWNoZURpcmVjdG9yeSI7CitOU1N0cmluZyAqV2ViS2l0TWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5IjsKKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gVGhp
cyBxdWlyayB1c2VkIHRvIG1ha2UgdGhlc2UgYXBwcyBzaGFyZSBhcHBsaWNhdGlvbiBjYWNoZSBz
dG9yYWdlLCBidXQgZG9lc24ndCBhY2NvbXBsaXNoIHRoYXQgYW55IG1vcmUuCisgICAgLy8gUHJl
c2VydmluZyBpdCBhdm9pZHMgdGhlIG5lZWQgdG8gbWlncmF0ZSBkYXRhIHdoZW4gdXBncmFkaW5n
LgorICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlIHNob3VsZCBqdXN0IGhhdmUgU2FmYXJpLCBXZWJB
cHAsIGFuZCB3ZWJib29rbWFya3NkIGNyZWF0ZSBhIGRhdGEgc3RvcmUgd2l0aAorICAgIC8vIHRo
aXMgYXBwbGljYXRpb24gY2FjaGUgcGF0aCwgYnV0IHRoYXQncyBub3Qgc3VwcG9ydGVkIGFzIG9m
IHJpZ2h0IG5vdy4KKyAgICBpZiAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2Fm
YXJpKCkgfHwgV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViQXBwKCkgfHwgV2ViQ29yZTo6
SU9TQXBwbGljYXRpb246OmlzV2ViQm9va21hcmtzRCgpKSB7CisgICAgICAgIE5TU3RyaW5nICpj
YWNoZVBhdGggPSBbTlNIb21lRGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAiTGlicmFyeS9DYWNoZXMvY29tLmFwcGxlLldlYkFwcENhY2hlIl07CisKKyAgICAgICAg
cmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChjYWNoZVBhdGgu
c3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aCk7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4g
Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk9mZmxpbmVXZWJBcHBsaWNh
dGlvbkNhY2hlIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRD
YWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbigiQ2FjaGVTdG9yYWdlIik7Cit9CisKK1dURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTmV0d29ya0NhY2hl
Iik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hl
RGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbigiTWVkaWFDYWNoZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJz
aXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSW5kZXhlZERCIik7Cit9
CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIlNlcnZpY2VXb3JrZXJzIik7Cit9CisKK1dURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTG9jYWxT
dG9yYWdlIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhS2V5cyIpOworfQorCitXVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQorewor
ICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigi
V2ViU1FMIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlJlc291cmNlTG9hZFN0YXRpc3RpY3Mi
KTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbigiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIERvbnRDcmVhdGVEaXJl
Y3RvcnkpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1l
LCBTaG91bGRDcmVhdGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQoreworICAgIHN0
YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBOU1VSTCAqdGVtcFVS
TDsKKyAgICAKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIE5TVVJM
ICp1cmwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOk5TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgaXNE
aXJlY3Rvcnk6WUVTXTsKKyAgICAgICAgaWYgKCF1cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nl
c3NIYXNDb250YWluZXIoKSkgeworICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZp
ZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKKyAgICAgICAgICAg
IGlmICghYnVuZGxlSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVy
ID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOworICAgICAgICAgICAg
dXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBp
c0RpcmVjdG9yeTpZRVNdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0ZW1wVVJMID0g
W1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZ
RVNdIHJldGFpbl07CisgICAgfSk7CisgICAgCisgICAgTlNVUkwgKnVybCA9IFt0ZW1wVVJMIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107
CisKKyAgICBpZiAoc2hvdWxkQ3JlYXRlRGlyZWN0b3J5ID09IENyZWF0ZURpcmVjdG9yeQorICAg
ICAgICAmJiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5
QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwg
ZXJyb3I6bnVsbHB0cl0pKQorICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGly
ZWN0b3J5ICVAIiwgdXJsKTsKKyAgICAKKyAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGgu
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0
cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VU
b2tlbjsKKyAgICBzdGF0aWMgTlNVUkwgKmNhY2hlVVJMOworCisgICAgZGlzcGF0Y2hfb25jZSgm
b25jZVRva2VuLCBeeworICAgICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNDYWNoZXNEaXJlY3RvcnkgaW5Eb21haW46TlNV
c2VyRG9tYWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpu
dWxscHRyXTsKKyAgICAgICAgaWYgKCF1cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVy
KCkpIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxl
IG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1bmRsZUlk
ZW50aWZpZXIpCisgICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJ
bmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9IFt1cmwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVT
XTsKKyAgICAgICAgfQorCisgICAgICAgIGNhY2hlVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07CisgICAgfSk7
CisKKyAgICBOU1VSTCAqdXJsID0gW2NhY2hlVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisgICAgaWYgKCFbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRp
YXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQorICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKKworICAg
IHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Cit9
CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQor
eworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBOU1VS
TCAqd2Vic2l0ZURhdGFVUkw7CisKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Cisg
ICAgICAgIE5TVVJMICp1cmwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZv
ckRpcmVjdG9yeTpOU0xpYnJhcnlEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBh
cHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKKyAgICAg
ICAgaWYgKCF1cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
CisgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0
IiBpc0RpcmVjdG9yeTpZRVNdOworCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29u
dGFpbmVyKCkpIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05T
QnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1
bmRsZUlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1By
b2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9IFt1
cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rv
cnk6WUVTXTsKKyAgICAgICAgfQorCisgICAgICAgIHdlYnNpdGVEYXRhVVJMID0gW1t1cmwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2Vic2l0ZURhdGEiIGlzRGlyZWN0b3J5OllFU10g
cmV0YWluXTsKKyAgICB9KTsKKworICAgIE5TVVJMICp1cmwgPSBbd2Vic2l0ZURhdGFVUkwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsK
KyAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5
QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwg
ZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJl
Y3RvcnkgJUAiLCB1cmwpOworCisgICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbjsKK30KKwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3Jl
V2luLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00NSw0ICs0Niw1OSBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OnBsYXRmb3JtUmVtb3ZlUmVjCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkK
K3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25D
YWNoZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFn
ZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
IkNhY2hlU3RvcmFnZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7Cit9CisKK1N0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCit7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlNlcnZpY2VXb3JrZXJz
Iik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9j
YWxTdG9yYWdlIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCit7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKK30KKwor
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlBy
b2Nlc3NQcm94eUdMaWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDggKzQzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0
TGF1bmNoTwogICAgICAgICBpZiAoIWRhdGFTdG9yZSkgewogICAgICAgICAgICAgLy8gUHJld2Fy
bWVkIHByb2Nlc3NlcyBkb24ndCBoYXZlIGEgV2Vic2l0ZURhdGFTdG9yZSB5ZXQsIHNvIHVzZSB0
aGUgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlIGZyb20gdGhlIFdlYlByb2Nlc3NQb29sLgogICAg
ICAgICAgICAgLy8gVGhlIHByb2Nlc3Mgd29uJ3QgYmUgdXNlZCBpZiBjdXJyZW50IFdlYnNpdGVE
YXRhU3RvcmUgaXMgZGlmZmVyZW50IHRoYW4gdGhlIFdlYlByb2Nlc3NQb29sIHByaW1hcnkgb25l
LgotICAgICAgICAgICAgaWYgKGF1dG8qIGFwaURhdGFTdG9yZSA9IG1fcHJvY2Vzc1Bvb2wtPndl
YnNpdGVEYXRhU3RvcmUoKSkKLSAgICAgICAgICAgICAgICBkYXRhU3RvcmUgPSAmYXBpRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgICAgICAgICBkYXRhU3RvcmUgPSBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBBU1NFUlQoZGF0YVN0b3JlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIv
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCShm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVH
TGliLmNwcDoyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVE
YXRhU3RvcmVHTGliLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE3IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisKKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKwor
I2lmIFBMQVRGT1JNKEdUSykKKyNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndlYmtpdGd0ayIKKyNl
bGlmIFBMQVRGT1JNKFdQRSkKKyNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndwZSIKKyNlbmRpZgor
CituYW1lc3BhY2UgQVBJIHsKKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1Jf
UyAiYXBwbGljYXRpb25zIik7Cit9CisKKy8vIEZJWE1FOiBUaGUgb3RoZXIgZGlyZWN0b3JpZXMg
aW4gdGhpcyBmaWxlIGFyZSBzaGFyZWQgYmV0d2VlbiBhbGwgYXBwbGljYXRpb25zIHVzaW5nIFdl
YktpdEdUSy4KKy8vIFdoeSBpcyBvbmx5IHRoaXMgZGlyZWN0b3J5IG5hbWVzcGFjZWQgdG8gYSBw
YXJ0aWN1bGFyIGFwcGxpY2F0aW9uPworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0
X3ByZ25hbWUoKSksICJXZWJLaXRDYWNoZSIpKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNh
Y2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2UiKSk7Cit9CisKK1dURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgp
Cit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJkYXRhYmFzZXMiIEdfRElSX1NF
UEFSQVRPUl9TICJpbmRleGVkZGIiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJ
UkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAic2VydmljZXdvcmtlcnMiKTsKK30KKworV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCit7
CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJsb2NhbHN0b3JhZ2UiKTsKK30KKwor
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAibWVkaWFrZXlzIik7
Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNT
dG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRl
dmljZWlkaGFzaHNhbHRzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRh
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NF
UEFSQVRPUl9TICJkYXRhYmFzZXMiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFU
T1JfUyk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJB
VE9SX1MgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3Qg
V1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKK30K
KworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfZGF0YV9k
aXIoKSksIGRpcmVjdG9yeU5hbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdM
aWIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGli
L1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiAjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CkBAIC0zNSw3ICsz
NSw3IEBACiAjZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCiAjZW5kaWYKIAotbmFtZXNwYWNl
IEFQSSB7CituYW1lc3BhY2UgV2ViS2l0IHsKIAogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogewpJbmRleDogU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDk3
MzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDYgQEAKIAkJMUEzMDA2NkUxMTEwRjRGNzAwMzE5
MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzAwNjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZl
bmVzc1RpbWVyLmggKi87IH07CiAJCTFBMzM0REVEMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdl
QXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTMzNERFQjE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFN
YXBNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkxQTMzNERFRTE2REU4Rjg4MDA2QThFMzgg
LyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUEzMzRERUMxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVh
TWFwTWVzc2FnZXMuaCAqLzsgfTsKLQkJMUEzNjM1QUExQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdl
YnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBMzYzNUE4MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmgg
Ki87IH07CiAJCTFBM0M4ODgwMThBNUFCQUUwMEM0Qzk2MiAvKiBXS1ByZWZlcmVuY2VzSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0M4
ODdGMThBNUFCQUUwMEM0Qzk2MiAvKiBXS1ByZWZlcmVuY2VzSW50ZXJuYWwuaCAqLzsgfTsKIAkJ
MUEzQ0MxNjcxODkwNkFDRjAwMUU2RUQ4IC8qIFdLV2ViVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzQ0MxNjUxODkwNkFDRjAwMUU2RUQ4IC8q
IFdLV2ViVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsg
fTsKIAkJMUEzQ0MxNjkxODkwN0VCMDAwMUU2RUQ4IC8qIFdLUHJvY2Vzc1Bvb2xJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzQ0MxNjgx
ODkwN0VCMDAwMUU2RUQ4IC8qIFdLUHJvY2Vzc1Bvb2xJbnRlcm5hbC5oICovOyB9OwpAQCAtMTcy
NSw2ICsxNzI0LDggQEAKIAkJCWNvbXBpbGVyU3BlYyA9IGNvbS5hcHBsZS5jb21waWxlcnMucHJv
eHkuc2NyaXB0OwogCQkJZmlsZVBhdHRlcm5zID0gIiouaCI7CiAJCQlmaWxlVHlwZSA9IHBhdHRl
cm4ucHJveHk7CisJCQlpbnB1dEZpbGVzID0gKAorCQkJKTsKIAkJCWlzRWRpdGFibGUgPSAxOwog
CQkJb3V0cHV0RmlsZXMgPSAoCiAJCQkJIiQoSEVBREVSX09VVFBVVF9ESVIpLyQoSU5QVVRfRklM
RV9OQU1FKSIsCkBAIC0yMTIxLDkgKzIxMjIsNiBAQAogCQkxQTMzNERFQTE2REU4QjY4MDA2QThF
MzggLyogU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3RvcmFnZUFyZWFNYXAubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMzM0REVCMTZERThGODgw
MDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5j
cHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VBcmVhTWFwTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUEzMzRE
RUMxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmg7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTFBMzYzNUE3MUEzMTQ0QTMwMEVENjE5NyAv
KiBBUElXZWJzaXRlRGF0YVN0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFQSVdlYnNpdGVEYXRhU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkxQTM2MzVBODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElXZWJzaXRlRGF0YVN0b3JlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBMzYzNUFCMUEzMTQ1RTUwMEVENjE5NyAvKiBB
UElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBBUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBM0E3M0NCMUE0OEM2RDQwMDcyMzFCMyAvKiBBUElQYWdlR3JvdXBIYW5k
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJUGFnZUdyb3Vw
SGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEzQTczQ0MxQTQ4QzZE
NDAwNzIzMUIzIC8qIEFQSVBhZ2VHcm91cEhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBUElQYWdlR3JvdXBIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUEzQzg4N0YxOEE1QUJBRTAwQzRDOTYyIC8qIFdLUHJlZmVyZW5jZXNJbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByZWZlcmVuY2VzSW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYzNjcsNyArNjM2NSw2IEBACiAJCQkJ
N0NFRkE5NjAxQUMwOTk5MzAwQjkxMEZEIC8qIEFQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2Eu
bW0gKi8sCiAJCQkJNUNBNDZFN0EyMUYxQTIzOTAwQ0U4NkI0IC8qIEFQSUhUVFBDb29raWVTdG9y
ZUNvY29hLm1tICovLAogCQkJCUZFRDNDMURBMUI0NDdBRTgwMEUwRUI3RiAvKiBBUElTZXJpYWxp
emVkU2NyaXB0VmFsdWVDb2NvYS5tbSAqLywKLQkJCQkxQTM2MzVBQjFBMzE0NUU1MDBFRDYxOTcg
LyogQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tICovLAogCQkJCTFBRkRFNjQzMTk1MTBCNTUw
MEM0OEZGQSAvKiBMZWdhY3lCdW5kbGVGb3JDbGFzcy5tbSAqLywKIAkJCQkxQzIwOTM1RTIyMzE4
Q0IwMDAwMjZBMzkgLyogTlNBdHRyaWJ1dGVkU3RyaW5nLmggKi8sCiAJCQkJMUMyMDkzNUYyMjMx
OENCMDAwMDI2QTM5IC8qIE5TQXR0cmlidXRlZFN0cmluZy5tbSAqLywKQEAgLTc5NzcsOCArNzk3
NCw2IEBACiAJCQkJMkQ4Nzg2MjIxQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVzZXJTdHlsZVNoZWV0
LmggKi8sCiAJCQkJMUFFMjg2ODExQzdGOTM4NjAwNjlBQzRGIC8qIEFQSVdlYnNpdGVEYXRhUmVj
b3JkLmNwcCAqLywKIAkJCQkxQUUyODY4MjFDN0Y5Mzg2MDA2OUFDNEYgLyogQVBJV2Vic2l0ZURh
dGFSZWNvcmQuaCAqLywKLQkJCQkxQTM2MzVBNzFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0
ZURhdGFTdG9yZS5jcHAgKi8sCi0JCQkJMUEzNjM1QTgxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdl
YnNpdGVEYXRhU3RvcmUuaCAqLywKIAkJCQk1QzhERDM3RDFGRTQ1MDExMDBGMkE1NTYgLyogQVBJ
V2Vic2l0ZVBvbGljaWVzLmNwcCAqLywKIAkJCQk1QzhERDM3QzFGRTQ1MDExMDBGMkE1NTYgLyog
QVBJV2Vic2l0ZVBvbGljaWVzLmggKi8sCiAJCQkJMUE2NTYzRTIxQjdBOEM1MDAwOUNGNzg3IC8q
IEFQSVdpbmRvd0ZlYXR1cmVzLmNwcCAqLywKQEAgLTkzODIsNyArOTM3Nyw2IEBACiAJCQkJQzVF
MUFGRUQxNkIyMTAxNzAwNkNDMUYyIC8qIEFQSVdlYkFyY2hpdmUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUM1RTFBRkVGMTZCMjEwMjkwMDZDQzFGMiAvKiBBUElXZWJBcmNoaXZlUmVzb3VyY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBRTI4Njg0MUM3RjkzODYwMDY5QUM0RiAvKiBBUElXZWJzaXRl
RGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUEzNjM1QUExQTMxNDRBMzAwRUQ2MTk3
IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjU2M0U1MUI3
QThDNTAwMDlDRjc4NyAvKiBBUElXaW5kb3dGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RjQ4RDJBODUyMTU4M0E3RTAwQzY3NTJCIC8qIEFwcEtpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFENEMxOTMxQjM5RjMzMjAwQUJDMjhFIC8qIEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hl
L1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCShy
ZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9X
ZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBXZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyOjpzZXRXZWJzaXRlRGF0YVN0b3JlKGNvbnN0IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIEFTU0VSVCghcGFyYW1ldGVycy5tZWRpYUtleVN0
b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKTsKICAgICBtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9y
eSA9IHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5OwogfQogCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNDk3NTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMiBAQAorMjAxOS0wOS0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBhYnN0cmFjdGlv
bnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMTY1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgor
CiAyMDE5LTA5LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
U3RvcCB1c2luZyB0ZXN0UnVubmVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWRfREVQUkVDQVRF
RCgpIGluIGh0dHAvdGVzdHMvY29va2llcy9wcml2YXRlLWNvb2tpZS1zdG9yYWdlLmh0bWwKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJl
dmlzaW9uIDI0OTczMikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMzQwLDkgKzM0MCwxMSBAQCB3ZWJraXQub3JnL2Iv
MTQ5MDg3IFsgRGVidWcgXSBodHRwL3Rlc3RzCiB3ZWJraXQub3JnL2IvMTQ5MDg3IFsgUmVsZWFz
ZSBdIGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLXZhbGlkYXRpb24uaHRt
bCBbIFBhc3MgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMTQ5MDg3IFsgRGVidWcgXSBodHRwL3Rl
c3RzL2NhY2hlL2Rpc2stY2FjaGUvZGlzay1jYWNoZS1sYXN0LW1vZGlmaWVkLmh0bWwgWyBQYXNz
IEZhaWx1cmUgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMTQ5MDg3IFsgRGVidWcgXSBodHRwL3Rl
c3RzL2NhY2hlL2Rpc2stY2FjaGUvZGlzay1jYWNoZS12YXJ5Lmh0bWwgWyBQYXNzIEZhaWx1cmUg
VGltZW91dCBdCi13ZWJraXQub3JnL2IvMTQ3MDc1IFsgRGVidWcgXSBodHRwL3Rlc3RzL2NhY2hl
L2Rpc2stY2FjaGUvZGlzay1jYWNoZS1kaXNhYmxlLmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91
dCBdCiB3ZWJraXQub3JnL2IvMTQ5MDg3IFsgRGVidWcgXSBodHRwL3Rlc3RzL2NhY2hlL2Rpc2st
Y2FjaGUvZGlzay1jYWNoZS12YXJ5LW5vLWJvZHkuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0
IF0KIAorIyBUaGlzIHRlc3QgbGVhdmVzIHN0YXRlIGJlaGluZCBmb3IgZnV0dXJlIHRlc3RzCit3
ZWJraXQub3JnL2IvMTQ3MDc1IGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hl
LWRpc2FibGUuaHRtbCBbIFNraXAgXQorCiB3ZWJraXQub3JnL2IvMTc5Nzk2IGh0dHAvdGVzdHMv
Y2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLXZhbGlkYXRpb24tYmFjay1uYXZpZ2F0aW9uLXBv
bGljeS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE1MDI0MSB3ZWJhcmNo
aXZlL2xvYWRpbmcvb2JqZWN0Lmh0bWwgWyBQYXNzIENyYXNoIF0gCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378537</attachid>
            <date>2019-09-10 21:24:07 -0700</date>
            <delta_ts>2019-09-11 03:41:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201655-20190910212406.patch</filename>
            <type>text/plain</type>
            <size>212552</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2NyBAQAorMjAxOS0wOS0xMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB1bm5l
Y2Vzc2FyeSBhYnN0cmFjdGlvbnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBmb3Vy
IHRoaW5ncyB0byBzaW1wbGlmeSBXZWJzaXRlRGF0YVN0b3JlIGNvZGU6CisgICAgICAgIDEuIEl0
IHJlbW92ZXMgQVBJOjpXZWJzaXRlRGF0YVN0b3JlLCB3aGljaCB3YXMganVzdCBhbiB1bm5lY2Vz
c2FyeSB3cmFwcGVyIGFyb3VuZCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUuCisgICAgICAgIDIu
IEl0IGRlcHJlY2F0ZXMgdGhlIHVudXNlZCBhbGlhc2VzIG9mIFdlYnNpdGVEYXRhU3RvcmUsIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYW5kIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJl
ZgorICAgICAgICAzLiBJdCByZW1vdmVzIHRoZSB1bnVzZWQgQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIHByb3BlcnRpZXMgdGhhdCBoYXZlIGJlZW4gbW92ZWQgdG8gV2Vic2l0ZURhdGFTdG9y
ZS4KKyAgICAgICAgNC4gSXQgbWFrZXMgV0tXZWJzaXRlRGF0YVN0b3JlLl9kZWxlZ2F0ZSB3ZWFr
IGluc3RlYWQgb2Ygc3Ryb25nLCBhcyBhbHJlYWR5IGFubm90YXRlZCBpbiBXS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZSBpbiBiZWhh
dmlvciBmcm9tIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBQbGF0Zm9ybUZUVy5jbWFrZToKKyAg
ICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAg
ICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tp
ZVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgorICAg
ICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAg
IChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6CisgICAg
ICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgIChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURh
dGFTdG9yZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
RGF0YVN0b3JlLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
UG9saWNpZXMuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlUG9saWNpZXM6OmRhdGEpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFw
cGxpY2F0aW9uQ2FjaGVPcmlnaW5zKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJEZWxldGVBbGxFbnRyaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
UG9saWN5TGlzdGVuZXIuY3BwOgorICAgICAgICAodXNlV2l0aFBvbGljaWVzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCk6CisgICAgICAgIChXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KToKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAoV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLUmVzb3VyY2VDYWNo
ZU1hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENh
Y2hlT3JpZ2lucyk6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZv
ck9yaWdpbik6CisgICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFs
bE9yaWdpbnMpOgorICAgICAgICAodG9XZWJzaXRlRGF0YVR5cGVzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0VHlwZUlEKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdl
dERlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlTm9u
UGVyc2lzdGVudERhdGFTdG9yZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVX
aXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29v
a2llU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZVdpdGhDb21wbGV0aW9uSGFuZGxlcik6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RT
ZWVuKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVBy
ZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKToKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3Rp
bmdUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbSk6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRv
TGl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSk6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5n
VGVzdCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hvdWxkQ2xh
c3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNaW5pbXVtVGlt
ZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0dyYW5kZmF0aGVyaW5nVGltZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzTWF4U3RhdGlzdGljc0VudHJpZXMpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1BydW5lRW50cmllc0Rvd25Ubyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9y
ZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vycyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcCk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9u
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVu
dFN0YXRlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVz
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGb3JPcmlnaW4p
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsSW5kZXhlZERhdGFiYXNlcyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnMpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemVGb3JPcmlnaW4pOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmln
aW5TdG9yYWdlUXVvdGEpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdKToK
KyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdKToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIGh0dHBDb29raWVTdG9yZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6bW9kaWZpZWRTaW5jZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOmZv
ckRhdGFSZWNvcmRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgX2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKToKKyAgICAgICAgKCtbV0tXZWJzaXRl
RGF0YVN0b3JlIF9kZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZ10pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3aXRoT3B0aW9u
czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Blck9yaWdpblN0b3Jh
Z2VRdW90YV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFBlck9yaWdpblN0
b3JhZ2VRdW90YTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnldKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRDYWNoZVN0
b3JhZ2VEaXJlY3Rvcnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk6XSk6CisgICAgICAg
ICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOl0pOgor
ICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcl0p
OgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldEFsbG93c0NlbGx1bGFyQWNjZXNz
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93c0NlbGx1bGFyQWNjZXNz
XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJveHlDb25maWd1cmF0aW9u
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFNvdXJj
ZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXJdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXI6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0QWxsb3dzVExTRmFs
bGJhY2s6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dzVExTRmFsbGJh
Y2tdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm94eUNvbmZpZ3VyYXRpb25d
KToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zv
cjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9z
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRJc1ByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERv
bWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3Jl
IF9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOl0pOgorICAgICAgICAoLVtXS1dlYnNp
dGVEYXRhU3RvcmUgX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyXSk6CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHNldF9kZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAg
ICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29y
a1Byb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ondl
YnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bV93ZWJQcm9jZXNzQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRl
bnNpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRyeVRha2VQcmV3YXJt
ZWRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNlbmRXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp0ZW1w
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxEZWZhdWx0RGF0
YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHRE
YXRhU3RvcmVGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2wgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAg
ICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6
IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRIU1RTRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBEZWxldGVkLgorICAg
ICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6Ondl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOS0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEhhbmdzIG9uIFN3aXNz
LmNvbSBkdWUgdG8gdGhlIHdlYiBwcm9jZXNzIGJlaW5nIGJsb2NrZWQgb24gU3RvcmFnZUFyZWFN
YXA6OkxvYWRWYWx1ZXNJZk5lZWRlZApJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAg
ICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAotICAgIFVJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAogICAgIFVJ
UHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcApJbmRleDogU291cmNl
L1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGxpc3QoQVBQRU5E
IFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKIAot
ICAgIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCi0KICAgICBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKIAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVy
V2luLmNwcApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNyArMzE3LDYgQEAgVUlQcm9j
ZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVu
dFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElVc2VyU3R5bGVTaGVldC5jcHAKLVVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElXaW5kb3dGZWF0dXJlcy5jcHAKIApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yNzQsNyArMjc0LDYgQEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubQogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElDb250ZW50UnVsZUxpc3RTdG9yZUNv
Y29hLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUhUVFBDb29raWVTdG9yZUNvY29hLm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tCi1VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9MZWdhY3lCdW5kbGVGb3JDbGFzcy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0
dHJpYnV0ZWRTdHJpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3Qu
bW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9Tb3VyY2VzR1RLLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw2IEBAIFVJ
UHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9n
dGsvV0tWaWV3LmNwcAogCiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVz
dC5jcHAgQG5vLXVuaWZ5CkBAIC0yMzIsNiArMjMxLDcgQEAgVUlQcm9jZXNzL2NhaXJvL0JhY2tp
bmdTdG9yZUNhaXJvLmNwcCBAbgogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcCBAbm8tdW5pZnkKIAogVUlQcm9jZXNzL2dzdHJlYW1lci9JbnN0YWxsTWlzc2lu
Z01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0LmNwcAogVUlQcm9jZXNzL2dzdHJlYW1lci9X
ZWJQYWdlUHJveHlHU3RyZWFtZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHJldmlzaW9u
IDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTExNCw3ICsxMTQsNiBAQCBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMu
Y3BwCiBVSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKIAogVUlQcm9jZXNzL0FQSS9nbGli
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlR0xpYi5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJ
L2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXBwbGljYXRpb25JbmZvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwIEBuby11bmlmeQpAQCAtMTkyLDYgKzE5MSw3IEBA
IFVJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3YKIAogVUlQcm9jZXNzL2ds
aWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5
R0xpYi5jcHAKK1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5p
ZnkKIAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKIFVJ
UHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJu
aW5nLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsNyAr
NDE2LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgICwg
bV9wcmVmZXJlbmNlcygqbV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpKQogICAgICwgbV91
c2VyQ29udGVudENvbnRyb2xsZXIoKm1fY29uZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRl
ZExpbmtTdG9yZSgpKQotICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+
d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpCisgICAgLCBtX3dlYnNpdGVE
YXRhU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKQogICAgICwgbV91
c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQoKSkKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgeyBtX2NvbmZpZ3VyYXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5KCkgfQogICAgICwgbV90cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZp
Z3VyYXRpb24tPnRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCkBAIC0y
ODY3LDggKzI4NjcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9s
CiAgICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gZGF0YTsKICAgICBpZiAocG9saWNp
ZXMpIHsKICAgICAgICAgZGF0YSA9IHBvbGljaWVzLT5kYXRhKCk7Ci0gICAgICAgIGlmIChwb2xp
Y2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpICYmICZwb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgp
LT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSkgewotICAgICAg
ICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCktPndl
YnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAgaWYgKHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3Jl
KCkgJiYgcG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlLnB0
cigpKSB7CisgICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gKnBvbGljaWVzLT53ZWJzaXRl
RGF0YVN0b3JlKCk7CiAgICAgICAgICAgICBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6WWVzOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24g
MjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDQsOCArMjQ0LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nl
c3NQb29sKEFQSTo6UHJvYwogICAgICAgICBQcm9jZXNzOjpzZXRJZGVudGlmaWVyKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKICAgICB9KTsKIAotICAgIGlmICghbV93
ZWJzaXRlRGF0YVN0b3JlICYmIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZUV4aXN0cygpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSAm
JiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCisgICAgICAgIG1f
d2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsK
IAogICAgIGZvciAoYXV0byYgc2NoZW1lIDogbV9jb25maWd1cmF0aW9uLT5hbHdheXNSZXZhbGlk
YXRlZFVSTFNjaGVtZXMoKSkKICAgICAgICAgbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2
YWxpZGF0ZWQuYWRkKHNjaGVtZSk7CkBAIC00ODMsMTQgKzQ4MywxOSBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKLSAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZW5kaW5nQ29va2ll
cyA9IGNvcHlUb1ZlY3RvcihtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5w
ZW5kaW5nQ29va2llcygpKTsKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuY2xlYXJQZW5kaW5nQ29va2llcygpOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1
bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fd2Vi
c2l0ZURhdGFTdG9yZS0+cGVuZGluZ0Nvb2tpZXMoKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFT
dG9yZS0+Y2xlYXJQZW5kaW5nQ29va2llcygpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAg
ICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyKCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNr
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJh
Y2soKSA/IEFsbG93c1RMU0ZhbGxiYWNrOjpZZXMgOiBBbGxvd3NUTFNGYWxsYmFjazo6Tm87Ci0j
ZW5kaWYKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkubmV0
d29ya2luZ0hhc0JlZ3VuKCk7CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllciA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKCk7CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRl
bnRpZmllciA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyKCk7CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNrID0gbV93ZWJzaXRl
RGF0YVN0b3JlLT5hbGxvd3NUTFNGYWxsYmFjaygpID8gQWxsb3dzVExTRmFsbGJhY2s6OlllcyA6
IEFsbG93c1RMU0ZhbGxiYWNrOjpObzsKKyNlbmRpZgorICAgICAgICBtX3dlYnNpdGVEYXRhU3Rv
cmUtPnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCk7CisgICAgICAgIHBhcmFtZXRlcnMu
ZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLm5ldHdv
cmtDYWNoZURpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb2x2ZWROZXR3b3JrQ2Fj
aGVEaXJlY3RvcnkoKTsKKyAgICAgICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVk
TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuZGVm
YXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLm5ldHdvcmtD
YWNoZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3
b3JrU2Vzc2lvblBhcmFtZXRlcnMubmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKKworICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPm5ldHdvcmtpbmdIYXNCZWd1bigpOwog
ICAgIH0KIAogICAgIHBhcmFtZXRlcnMuY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWwoKTsKQEAgLTUw
Miw5ICs1MDcsNiBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAg
ICAgZm9yIChhdXRvJiBzY2hlbWUgOiBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJv
dG9jb2xzKQogICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9t
UHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwogCi0gICAgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJl
Y3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmRpc2tDYWNoZURpcmVjdG9yeSgpOwotICAgIGlmICgh
cGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5k
aXNrQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJ
T04pCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJl
dmFsaWRhdGlvbiA9IG1fY29uZmlndXJhdGlvbi0+ZGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0
aW9uRW5hYmxlZCgpOwogI2VuZGlmCkBAIC01NDIsMjIgKzU0NCwyNSBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QgPSBjb3B5VG9WZWN0b3IobV9zY2hl
bWVzVG9SZWdpc3RlckFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QpOwogCiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCi0gICAgLy8gKioqKioqKioqCi0gICAgLy8gSU1QT1JUQU5UOiBE
byBub3QgY2hhbmdlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRhdGFiYXNl
cyBvbiBkaXNrIHdpdGhvdXQgZmlyc3QgY29uc3VsdGluZyBhIHJldmlld2VyIGZyb20gQXBwbGUg
KDxyZGFyOi8vcHJvYmxlbS8xNzQ1NDcxMj4pCi0gICAgLy8gKioqKioqKioqCi0gICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnkg
PSBtX2NvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgaWYg
KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGly
ZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFy
YW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKS5pbmRl
eGVkRGF0YWJhc2VEaXJlY3Rvcnk7Ci0gICAgCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRh
U3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
Ci0gICAgbmV0d29ya1Byb2Nlc3MtPmNyZWF0ZVN5bUxpbmtGb3JGaWxlVXBncmFkZShwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSk7
CisgICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUgJiYgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dERhdGFTdG9yZUV4aXN0cygpKSB7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0
b3JlLT5yZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOworICAgIH0KKyAgICBpZiAobV93
ZWJzaXRlRGF0YVN0b3JlKSB7CisgICAgICAgIC8vICoqKioqKioqKgorICAgICAgICAvLyBJTVBP
UlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQg
ZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJv
bSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKKyAgICAgICAgLy8gKioqKioqKioq
CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvbHZlZEluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSgpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAg
ICAgbmV0d29ya1Byb2Nlc3MtPmNyZWF0ZVN5bUxpbmtGb3JGaWxlVXBncmFkZShwYXJhbWV0ZXJz
LmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSk7Cisg
ICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKG1fd2Vi
c2l0ZURhdGFTdG9yZSkKLSAgICAgICAgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVz
b2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgICAgIHBhcmFt
ZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFT
dG9yZS0+cmVzb2x2ZWRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAg
aWYgKCFwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpCi0gICAg
ICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9ICBBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KCk7CisgICAgICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSA9ICBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRX
cml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnksIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CiAKICAgICBpZiAoIW1fc2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlLmlz
RW1wdHkoKSkKQEAgLTU2NiwxNiArNTcxLDE2IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlBy
b2Nlc3NQb29sOjplbnMKICAgICBwYXJhbWV0ZXJzLnNob3VsZERpc2FibGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgPSBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Rlcm1pbmF0aW9uRGVsYXk7CiAjZW5kaWYKIAotICAgIGF1dG8gbG9jYWxTdG9yYWdlRGly
ZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0b3JlID8gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkucmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IG51bGxTdHJpbmco
KTsKKyAgICBhdXRvIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/
IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IG51
bGxTdHJpbmcoKTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgbG9j
YWxTdG9yYWdlRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxT
dG9yYWdlRGlyZWN0b3J5KCk7CisgICAgICAgIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxv
Y2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRl
ZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7CiAKICAgICBpZiAobV93ZWJzaXRlRGF0YVN0b3JlKQotICAgICAgICBwYXJhbWV0ZXJz
LmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkucmVzb2x2ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBtX3dlYnNpdGVE
YXRhU3RvcmUtPnJlc29sdmVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogICAg
IGlmIChwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKKyAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAKICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKQEAgLTYwMSwxNyArNjA2LDE3IEBAIE5l
dHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICB9IGVsc2UgaWYgKG1f
d2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOwog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgICAgIGVuYWJsZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5oYXNTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKCk7CisgICAgICAg
IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQgPSBtX3dlYnNpdGVE
YXRhU3RvcmUtPmhhc1N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soKTsKICNlbmRpZgogICAgICAg
ICBpZiAoZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljcykgewotICAgICAgICAgICAgYXV0byBu
ZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5wYXJhbWV0ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzOworICAgICAgICAg
ICAgYXV0byBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPnBh
cmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnM7CiAgICAgICAgICAgICBzaG91bGRJ
bmNsdWRlTG9jYWxob3N0ID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNob3VsZEluY2x1ZGVM
b2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgICAgICAgICBlbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVu
YWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7CiAgICAgICAgICAgICBtYW51YWxQ
cmV2YWxlbnRSZXNvdXJjZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KIAotICAgICAgICBw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90
YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnBlck9yaWdpblN0b3Jh
Z2VRdW90YSgpOwotICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJz
LnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5wZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhKCk7CisgICAg
ICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFn
ZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5wZXJPcmlnaW5TdG9yYWdlUXVvdGEoKTsKKyAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5
T3JpZ2luU3RvcmFnZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5wZXJUaGlyZFBhcnR5T3Jp
Z2luU3RvcmFnZVF1b3RhKCk7CiAgICAgfQogCiAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3M7CkBAIC03MDIsOCArNzA3
LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udAogCiAgICAgaWYg
KCF3ZWJzaXRlRGF0YVN0b3JlKSB7CiAgICAgICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQot
ICAgICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7Ci0gICAgICAgIHdlYnNpdGVEYXRhU3RvcmUgPSAmbV93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgICAgICAgICBtX3dlYnNp
dGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7
CisgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7CiAg
ICAgfQogCiAgICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkpCkBAIC03
OTUsMTIgKzgwMCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRDYWNoZVBhZ2UK
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkK
IHsKICAgICBtX3Jlc29sdmVkUGF0aHMuaW5qZWN0ZWRCdW5kbGVQYXRoID0gcmVzb2x2ZVBhdGhG
b3JTYW5kYm94RXh0ZW5zaW9uKGluamVjdGVkQnVuZGxlUGF0aCgpKTsKLSAgICBtX3Jlc29sdmVk
UGF0aHMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3Jp
dGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMud2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4
dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpOwotICAg
IG1fcmVzb2x2ZWRQYXRocy5tZWRpYUNhY2hlRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJl
YWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5tZWRp
YUNhY2hlRGlyZWN0b3J5KCkpOwotICAgIG1fcmVzb2x2ZWRQYXRocy5tZWRpYUtleVN0b3JhZ2VE
aXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4
dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0g
ICAgbV9yZXNvbHZlZFBhdGhzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IHJlc29sdmVBbmRD
cmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlv
bi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSk7Ci0KICAgICBtX3Jlc29sdmVkUGF0aHMu
YWRkaXRpb25hbFdlYlByb2Nlc3NTYW5kYm94RXh0ZW5zaW9uUGF0aHMucmVzZXJ2ZUNhcGFjaXR5
KG1fY29uZmlndXJhdGlvbi0+YWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkUGF0aHMoKS5zaXpl
KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IG1fY29uZmlndXJhdGlvbi0+YWRkaXRp
b25hbFJlYWRBY2Nlc3NBbGxvd2VkUGF0aHMoKSkKICAgICAgICAgbV9yZXNvbHZlZFBhdGhzLmFk
ZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnVuY2hlY2tlZEFwcGVuZChy
ZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24ocGF0aC5kYXRhKCkpKTsKQEAgLTgzNyw3ICs4
MzYsNyBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6CiAjaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgLy8gSW4gcGxhdGZvcm1zIHVzaW5nIEJ1
YmJsZXdyYXAgZm9yIHNhbmRib3hpbmcsIHByZXdhcm1lZCBwcm9jZXNzIGlzIGxhdW5jaGVkIHVz
aW5nIHRoZSBXZWJQcm9jZXNzUG9vbCBwcmltYXJ5IFdlYnNpdGVEYXRhU3RvcmUsCiAgICAgLy8g
c28gd2UgZG9uJ3QgdXNlIGl0IGluIGNhc2Ugb2YgdXNpbmcgYSBkaWZmZXJlbnQgV2Vic2l0ZURh
dGFTdG9yZS4KLSAgICBpZiAobV9zYW5kYm94RW5hYmxlZCAmJiBtX3dlYnNpdGVEYXRhU3RvcmUg
JiYgJm1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpICE9ICZ3ZWJzaXRlRGF0
YVN0b3JlKQorICAgIGlmIChtX3NhbmRib3hFbmFibGVkICYmIG1fd2Vic2l0ZURhdGFTdG9yZSAm
JiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCkgIT0gJndlYnNpdGVEYXRhU3RvcmUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogI2VuZGlmCiAKQEAgLTg4MCwyOSArODc5LDE5IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnNlbmRXZWJQcm9jZXNzRGF0YVMKICAgICB3ZWJzaXRlRGF0YVN0b3JlLnJl
c29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCk7CiAKICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkQXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpOwotICAgIGlmIChwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkgPSBtX3Jlc29sdmVkUGF0aHMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKICAgICBp
ZiAoIXBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBh
cmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlw
ZTo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGly
ZWN0b3J5TmFtZSA9IHdlYnNpdGVEYXRhU3RvcmUuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3Vi
ZGlyZWN0b3J5TmFtZSgpOwotICAgIGlmIChwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLmFwcGxp
Y2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZpZ3VyYXRpb24tPmFw
cGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsKIAogICAgIHBhcmFtZXRl
cnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkRGF0
YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBpZiAocGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkgPSBtX3Jlc29sdmVkUGF0aHMud2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgaWYgKCFw
YXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVy
cy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdy
aXRlLCBwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsK
IAogICAgIHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUu
cmVzb2x2ZWRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgaWYgKHBhcmFtZXRlcnMubWVkaWFD
YWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHBhcmFtZXRlcnMubWVkaWFDYWNoZURp
cmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5tZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgIGlmICgh
cGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5t
ZWRpYUNhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBh
cmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBwYXJh
bWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2
ZWRNZWRpYUtleXNEaXJlY3RvcnkoKTsKLSAgICBpZiAocGFyYW1ldGVycy5tZWRpYUtleVN0b3Jh
Z2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFn
ZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5tZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnk7CiAg
ICAgaWYgKCFwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAg
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRo
KHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpU
eXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKIApAQCAtMTEwNyw3ICsxMDk2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
cHJvY2Vzc0RpZEZpbmlzaExhdQogICAgIG1fY29ubmVjdGlvbkNsaWVudC5kaWRDcmVhdGVDb25u
ZWN0aW9uKHRoaXMsIHByb2Nlc3MtPndlYkNvbm5lY3Rpb24oKSk7CiAKICAgICBpZiAobV93ZWJz
aXRlRGF0YVN0b3JlKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3Rv
cmUoKS5kaWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpOworICAgICAgICBtX3dlYnNpdGVEYXRhU3Rv
cmUtPmRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKQEAgLTExODYsNyAr
MTE3NSw3IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3MKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZU5ld1dlYlByb2Nlc3MoJndlYnNpdGVEYXRhU3RvcmUpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBtdXN0TWF0Y2hEYXRhU3RvcmUgPSBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKSAmJiAmd2Vic2l0ZURhdGFTdG9y
ZSAhPSAmQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCktPndlYnNpdGVE
YXRhU3RvcmUoKTsKKyAgICBib29sIG11c3RNYXRjaERhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKSAmJiAmd2Vic2l0ZURhdGFTdG9yZSAhPSBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CiAjZWxzZQogICAgIGJvb2wg
bXVzdE1hdGNoRGF0YVN0b3JlID0gZmFsc2U7CiAjZW5kaWYKQEAgLTEyMjAsNyArMTIwOSw3IEBA
IFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUKICAgICAgICAgLy8gV2Ug
dHJ5IHRvIGF2b2lkIGNyZWF0aW5nIHRoZSBkZWZhdWx0IGRhdGEgc3RvcmUgYXMgbG9uZyBhcyBw
b3NzaWJsZS4KICAgICAgICAgLy8gQnV0IGlmIHRoZXJlIGlzIGFuIGF0dGVtcHQgdG8gY3JlYXRl
IGEgd2ViIHBhZ2Ugd2l0aG91dCBhbnkgc3BlY2lmaWVkIGRhdGEgc3RvcmUsIHRoZW4gd2UgaGF2
ZSB0byBjcmVhdGUgaXQuCiAgICAgICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQotICAgICAg
ICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlKCkucHRyKCk7CisgICAgICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CiAKICAgICAgICAgcGFnZUNv
bmZpZ3VyYXRpb24tPnNldFdlYnNpdGVEYXRhU3RvcmUobV93ZWJzaXRlRGF0YVN0b3JlLmdldCgp
KTsKICAgICB9CkBAIC0xMjMxLDggKzEyMjAsOCBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9j
ZXNzUG9vbDo6Y3JlYXRlCiAgICAgICAgIC8vIFNoYXJpbmcgcHJvY2Vzc2VzLCBlLmcuIHdoZW4g
Y3JlYXRpbmcgdGhlIHBhZ2UgdmlhIHdpbmRvdy5vcGVuKCkuCiAgICAgICAgIHByb2Nlc3MgPSAm
cGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPmVuc3VyZVJ1bm5pbmdQcm9jZXNzKCk7
CiAgICAgICAgIC8vIFdlIGRvIG5vdCBzdXBwb3J0IHNldmVyYWwgV2Vic2l0ZURhdGFTdG9yZXMg
c2hhcmluZyBhIHNpbmdsZSBwcm9jZXNzLgotICAgICAgICBBU1NFUlQocHJvY2Vzcy5nZXQoKSA9
PSBtX2R1bW15UHJvY2Vzc1Byb3h5IHx8ICZwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFT
dG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUo
KSk7Ci0gICAgICAgIEFTU0VSVCgmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPndl
YnNpdGVEYXRhU3RvcmUoKSA9PSAmcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUo
KS0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgQVNTRVJUKHByb2Nlc3MuZ2V0KCkgPT0g
bV9kdW1teVByb2Nlc3NQcm94eSB8fCBwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9y
ZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBBU1NFUlQoJnBh
Z2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gcGFn
ZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSk7CiAgICAgfSBlbHNlIGlmICghbV9p
c0RlbGF5ZWRXZWJQcm9jZXNzTGF1bmNoRGlzYWJsZWQpIHsKICAgICAgICAgLy8gSW4gdGhlIGNv
bW1vbiBjYXNlLCB3ZSBkZWxheSBwcm9jZXNzIGxhdW5jaCB1bnRpbCBzb21ldGhpbmcgaXMgYWN0
dWFsbHkgbG9hZGVkIGluIHRoZSBwYWdlLgogICAgICAgICBpZiAoIW1fZHVtbXlQcm9jZXNzUHJv
eHkpIHsKQEAgLTEyNDIsNyArMTIzMSw3IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQ
b29sOjpjcmVhdGUKICAgICAgICAgfQogICAgICAgICBwcm9jZXNzID0gbV9kdW1teVByb2Nlc3NQ
cm94eTsKICAgICB9IGVsc2UKLSAgICAgICAgcHJvY2VzcyA9ICZwcm9jZXNzRm9yUmVnaXN0cmFi
bGVEb21haW4ocGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLCBudWxscHRyLCB7IH0pOworICAgICAgICBwcm9jZXNzID0gJnByb2Nlc3NGb3JS
ZWdpc3RyYWJsZURvbWFpbigqcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSwg
bnVsbHB0ciwgeyB9KTsKIAogICAgIEFTU0VSVChwcm9jZXNzKTsKIApAQCAtMTI5Miw3ICsxMjgx
LDcgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6bWF5SGF2ZVJlZ2lzdGVyZWRTZQogCiAgICAgU3Ry
aW5nIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBzdG9yZS5yZXNvbHZlZFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKICAgICBpZiAoc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCktPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KTsKKyAgICAgICAgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCktPnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKIAogICAgIHJldHVybiBtX21heUhhdmVSZWdpc3RlcmVk
U2VydmljZVdvcmtlcnMuZW5zdXJlKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnks
IFsmXSB7CiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgY29tcHV0YXRpb24gb24gYSBiYWNr
Z3JvdW5kIHRocmVhZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkFQ
SURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJBUElQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFj
ay5oIgogI2luY2x1ZGUgIkhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50ZXIu
aCIKQEAgLTQ0LDYgKzQzLDcgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0Q29ubmVjdGlvbkNsaWVu
dC5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHkuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Dcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KQEAgLTIwMiw4ICsyMDIsOCBAQCBwdWJsaWM6CiAgICAgLy8gRGlzY29ubmVjdCB0aGUg
cHJvY2VzcyBmcm9tIHRoZSBjb250ZXh0LgogICAgIHZvaWQgZGlzY29ubmVjdFByb2Nlc3MoV2Vi
UHJvY2Vzc1Byb3h5Kik7CiAKLSAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRh
U3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KLSAgICB2
b2lkIHNldFByaW1hcnlEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUp
IHsgbV93ZWJzaXRlRGF0YVN0b3JlID0gJmRhdGFTdG9yZTsgfQorICAgIFdlYnNpdGVEYXRhU3Rv
cmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUu
Z2V0KCk7IH0KKyAgICB2b2lkIHNldFByaW1hcnlEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYg
ZGF0YVN0b3JlKSB7IG1fd2Vic2l0ZURhdGFTdG9yZSA9ICZkYXRhU3RvcmU7IH0KIAogICAgIFJl
ZjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VD
b25maWd1cmF0aW9uPiYmKTsKIApAQCAtNjc2LDcgKzY3Niw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX21lbW9yeVNhbXBsZXJFbmFibGVkIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9tZW1vcnlT
YW1wbGVySW50ZXJ2YWwgeyAxNDAwLjAgfTsKIAotICAgIFJlZlB0cjxBUEk6OldlYnNpdGVEYXRh
U3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4g
bV93ZWJzaXRlRGF0YVN0b3JlOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IGNoYXIqLCBS
ZWZQdHI8V2ViQ29udGV4dFN1cHBsZW1lbnQ+LCBQdHJIYXNoPGNvbnN0IGNoYXIqPj4gV2ViQ29u
dGV4dFN1cHBsZW1lbnRNYXA7CiAgICAgV2ViQ29udGV4dFN1cHBsZW1lbnRNYXAgbV9zdXBwbGVt
ZW50czsKQEAgLTc2MSwxMiArNzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBQYXRocyB7
CiAgICAgICAgIFN0cmluZyBpbmplY3RlZEJ1bmRsZVBhdGg7Ci0gICAgICAgIFN0cmluZyBhcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJl
Y3Rvcnk7Ci0gICAgICAgIFN0cmluZyBtZWRpYUNhY2hlRGlyZWN0b3J5OwotICAgICAgICBTdHJp
bmcgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgdWlQcm9jZXNzQnVu
ZGxlUmVzb3VyY2VQYXRoOwotICAgICAgICBTdHJpbmcgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5
OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgU3RyaW5nIGNvb2tpZVN0b3Jh
Z2VEaXJlY3Rvcnk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENv
b2tpZVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JlLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDkgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElIVFRQQ29v
a2llU3RvcmUuaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRl
ICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgor
I2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSFRUUENvb2tpZVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDcgKzQ4LDYgQEAgZW51bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDog
dWludAogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9i
c2VydmVyOwotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIAogY2xhc3MgSFRUUENvb2tpZVN0b3Jl
IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+
IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29u
ZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUxLDEyICsxNTEsMTIgQEAgdm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0VmlzaXRl
ZExpbmtTdAogICAgIG1fdmlzaXRlZExpbmtTdG9yZSA9IHZpc2l0ZWRMaW5rU3RvcmU7CiB9CiAK
LUFQSTo6V2Vic2l0ZURhdGFTdG9yZSogUGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3Rv
cmUoKQorV2Vic2l0ZURhdGFTdG9yZSogUGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3Rv
cmUoKQogewogICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7CiB9CiAKLXZvaWQg
UGFnZUNvbmZpZ3VyYXRpb246OnNldFdlYnNpdGVEYXRhU3RvcmUoQVBJOjpXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQordm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0V2Vic2l0
ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIG1f
d2Vic2l0ZURhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmU7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNp
b24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEyICs0NCwxMiBAQCBjbGFzcyBXZWJQcmVm
ZXJlbmNlczsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxl
cjsKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OworY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKIH0KIAogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEFwcGxpY2F0aW9uTWFuaWZl
c3Q7Ci1jbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogCiBj
bGFzcyBQYWdlQ29uZmlndXJhdGlvbiA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6
UGFnZUNvbmZpZ3VyYXRpb24+IHsKQEAgLTg0LDggKzg0LDggQEAgcHVibGljOgogICAgIFdlYktp
dDo6VmlzaXRlZExpbmtTdG9yZSogdmlzaXRlZExpbmtTdG9yZSgpOwogICAgIHZvaWQgc2V0Vmlz
aXRlZExpbmtTdG9yZShXZWJLaXQ6OlZpc2l0ZWRMaW5rU3RvcmUqKTsKIAotICAgIFdlYnNpdGVE
YXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3Rv
cmUoV2Vic2l0ZURhdGFTdG9yZSopOworICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmUqKTsKIAogICAgIFdlYnNpdGVQb2xpY2llcyogZGVmYXVsdFdlYnNpdGVQ
b2xpY2llcygpIGNvbnN0OwogICAgIHZvaWQgc2V0RGVmYXVsdFdlYnNpdGVQb2xpY2llcyhXZWJz
aXRlUG9saWNpZXMqKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxX
ZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV9yZWxhdGVkUGFnZTsKICAgICBSZWZQdHI8V2ViS2l0OjpW
aXNpdGVkTGlua1N0b3JlPiBtX3Zpc2l0ZWRMaW5rU3RvcmU7CiAKLSAgICBSZWZQdHI8V2Vic2l0
ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKICAgICBSZWZQdHI8V2Vic2l0ZVBvbGlj
aWVzPiBtX2RlZmF1bHRXZWJzaXRlUG9saWNpZXM7CiAKICAgICBib29sIG1fdHJlYXRzU0hBMVNp
Z25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUgeyB0cnVlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDgg
KzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAog
bmFtZXNwYWNlIEFQSSB7CiAKQEAgLTM2LDM1ICszNiw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24+IFByb2Nlc3NQb28KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24pOwogfQogCi1SZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbihjb25zdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uJiBsZWdhY3lD
b25maWd1cmF0aW9uKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1
YmRpcmVjdG9yeU5hbWUgPSBsZWdhY3lDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tDYWNoZURp
cmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Ci0g
ICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJh
dGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9pbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9y
eSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29u
ZmlndXJhdGlvbi0+bV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBsZWdhY3lD
b25maWd1cmF0aW9uLmRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNv
bmZpZ3VyYXRpb24tPm1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ucmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fd2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KCk7Ci0KLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKLX0KLQogUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKQotICAgIDogbV9hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KCkpCi0gICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUoIkZpbGVzIikKLSAgICAsIG1fZGlza0NhY2hlRGlyZWN0b3J5KFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSkKLSAgICAsIG1fbWVkaWFD
YWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9y
eSgpKQotICAgICwgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fbG9jYWxTdG9y
YWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoKSkKLSAgICAsIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSkKLSAg
ICAsIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpCi0gICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkK
LSAgICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQogewogfQogCkBAIC03
NywxOCArNDksOCBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAg
ICAgYXV0byBjb3B5ID0gdGhpcy0+Y3JlYXRlKCk7CiAKICAgICBjb3B5LT5tX2NhY2hlTW9kZWwg
PSB0aGlzLT5tX2NhY2hlTW9kZWw7Ci0gICAgY29weS0+bV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSB0
aGlzLT5tX2Rpc2tDYWNoZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZVNwZWN1bGF0
aXZlVmFsaWRhdGlvbkVuYWJsZWQgPSB0aGlzLT5tX2Rpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRh
dGlvbkVuYWJsZWQ7Ci0gICAgY29weS0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gdGhp
cy0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwotICAgIGNvcHktPm1fYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IHRoaXMtPm1fYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKLSAgICBjb3B5LT5tX21lZGlhQ2FjaGVEaXJlY3Rvcnkg
PSB0aGlzLT5tX21lZGlhQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgY29weS0+bV9pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSA9IHRoaXMtPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAg
Y29weS0+bV9pbmplY3RlZEJ1bmRsZVBhdGggPSB0aGlzLT5tX2luamVjdGVkQnVuZGxlUGF0aDsK
LSAgICBjb3B5LT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9yYWdl
RGlyZWN0b3J5OwotICAgIGNvcHktPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5
ID0gdGhpcy0+bV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgY29weS0+
bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5OwotICAgIGNvcHktPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHRo
aXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKLSAgICBjb3B5LT5tX3dlYlNR
TERhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAg
ICBjb3B5LT5tX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9jYWNoZVBhcnRp
dGlvbmVkVVJMU2NoZW1lczsKICAgICBjb3B5LT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1l
cyA9IHRoaXMtPm1fYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOwogICAgIGNvcHktPm1fYWRk
aXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkUGF0aHMgPSB0aGlzLT5tX2FkZGl0aW9uYWxSZWFkQWNj
ZXNzQWxsb3dlZFBhdGhzOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBBUEkgewog
Y2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8
T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY3JlYXRlKCk7Ci0gICAgc3RhdGlj
IFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7
Ci0gICAgc3RhdGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IGNyZWF0ZVdpdGhXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihjb25zdCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uJik7CiAKICAgICBleHBsaWNpdCBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24o
KTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKQEAgLTc5LDM4ICs3
Nyw5IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FjaGVNb2RlbDsgfQogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6
OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkgeyBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9CiAK
LSAgICBjb25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0QXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSkgeyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBhcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgYXBwbGljYXRpb25DYWNo
ZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcm
IGRpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5
OyB9Ci0gICAgdm9pZCBzZXREaXNrQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGRp
c2tDYWNoZURpcmVjdG9yeSkgeyBtX2Rpc2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVj
dG9yeTsgfQotCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldE1lZGlh
Q2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkpIHsg
bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbWVkaWFDYWNoZURpcmVjdG9yeTsgfQotICAgIAotICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSkgeyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0
YWJhc2VEaXJlY3Rvcnk7IH0KLQogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRs
ZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlUGF0aDsgfQogICAgIHZvaWQg
c2V0SW5qZWN0ZWRCdW5kbGVQYXRoKGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBh
dGgpIHsgbV9pbmplY3RlZEJ1bmRsZVBhdGggPSBpbmplY3RlZEJ1bmRsZVBhdGg7IH0KIAotICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpIHsgbV9sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0
IFdURjo6U3RyaW5nJiBkZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7
IHJldHVybiBtX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQg
c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBk
aXJlY3RvcnkpIHsgbV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSBkaXJlY3Rv
cnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgp
IGNvbnN0IHsgcmV0dXJuIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNl
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiB3ZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSkgeyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gd2ViU1FMRGF0YWJhc2VE
aXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0g
ICAgdm9pZCBzZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBt
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9
IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KSB7IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7IH0KLQogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmlu
Zz4mIGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKCkgeyByZXR1cm4gbV9jYWNoZVBhcnRpdGlv
bmVkVVJMU2NoZW1lczsgfQogICAgIHZvaWQgc2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMo
VmVjdG9yPFdURjo6U3RyaW5nPiYmIGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKSB7IG1fY2Fj
aGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMgPSBXVEZNb3ZlKGNhY2hlUGFydGl0aW9uZWRVUkxTY2hl
bWVzKTsgfQogCkBAIC0xODYsMTcgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rpc2tD
YWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFdlYktpdDo6
Q2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwgeyBXZWJLaXQ6OkNhY2hlTW9kZWw6OlByaW1hcnlXZWJC
cm93c2VyIH07CiAKLSAgICBXVEY6OlN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7
Ci0gICAgV1RGOjpTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lOwotICAgIFdURjo6U3RyaW5nIG1fZGlza0NhY2hlRGlyZWN0b3J5OwotICAgIFdURjo6U3Ry
aW5nIG1fbWVkaWFDYWNoZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBtX2luZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5OwogICAgIFdURjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwot
ICAgIFdURjo6U3RyaW5nIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5n
IG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1f
d2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7Ci0gICAgV1RGOjpTdHJpbmcgbV9tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeTsKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNj
aGVtZXM7CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2No
ZW1lczsKICAgICBWZWN0b3I8V1RGOjpDU3RyaW5nPiBtX2FkZGl0aW9uYWxSZWFkQWNjZXNzQWxs
b3dlZFBhdGhzOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVE
YXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElXZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCShub25leGlzdGVudCkKQEAg
LTEsMTY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0KLSNpbmNsdWRlICJXZWJLaXQySW5pdGlh
bGl6ZS5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKLQotbmFtZXNwYWNlIEFQSSB7
Ci0KLXN0YXRpYyBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mIGdsb2JhbERlZmF1bHREYXRhU3Rv
cmUoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4+IGdsb2JhbERlZmF1bHREYXRhU3RvcmU7Ci0gICAgcmV0dXJuIGdsb2JhbERlZmF1bHREYXRh
U3RvcmUuZ2V0KCk7Ci19Ci0KLQotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmUoKQotewotICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIo
KTsKLQotICAgIGF1dG8mIHN0b3JlID0gZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpOwotICAgIGlm
ICghc3RvcmUpCi0gICAgICAgIHN0b3JlID0gYWRvcHRSZWYobmV3IFdlYnNpdGVEYXRhU3RvcmUo
ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSkpOwotCi0gICAgcmV0dXJuICpzdG9yZTsKLX0KLQotdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpCi17Ci0gICAgZ2xvYmFs
RGVmYXVsdERhdGFTdG9yZSgpID0gbnVsbHB0cjsKLX0KLQotYm9vbCBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkKLXsKLSAgICByZXR1cm4gISFnbG9iYWxEZWZhdWx0
RGF0YVN0b3JlKCk7Ci19Ci0KLVJlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3Jl
OjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJzaXRlRGF0YVN0b3JlKTsKLX0KLQotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNp
dGVEYXRhU3RvcmU6OmNyZWF0ZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbj4mJiBjb25maWd1cmF0aW9uLCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQot
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUoV1RGTW92ZShjb25m
aWd1cmF0aW9uKSwgc2Vzc2lvbklEKSk7Ci19Ci0KLVdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVE
YXRhU3RvcmUoKQotICAgIDogbV93ZWJzaXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudCgpKQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjpX
ZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
PiYmIGNvbmZpZ3VyYXRpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICA6IG1fd2Vi
c2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQpKQotewotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjp+V2Vi
c2l0ZURhdGFTdG9yZSgpCi17Ci19Ci0KLUhUVFBDb29raWVTdG9yZSYgV2Vic2l0ZURhdGFTdG9y
ZTo6aHR0cENvb2tpZVN0b3JlKCkKLXsKLSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5j
b29raWVTdG9yZSgpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjogaW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUt
PmNvbmZpZ3VyYXRpb24oKS5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotfQotCi1ib29s
IFdlYnNpdGVEYXRhU3RvcmU6OmlzUGVyc2lzdGVudCgpCi17Ci0gICAgcmV0dXJuIG1fd2Vic2l0
ZURhdGFTdG9yZS0+aXNQZXJzaXN0ZW50KCk7Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3dl
YnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Ci19Ci0KLXZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9v
bCBlbmFibGVkKQotewotICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fd2Vi
c2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOwotfQotCi12
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUo
Ym9vbCBlbmFibGVkKQotewotICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGVkKTsKLX0KLQotI2lmICFQTEFURk9STShDT0NPQSkK
LVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KCkKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU2MzY5IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU2MzcwCi0gICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Ci19Ci0KLVdURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVj
dG9yeSgpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4KLSAgICByZXR1cm4gV1RGOjpTdHJp
bmcoKTsKLX0KLSNlbmRpZgotCi0jaWYgIVVTRShHTElCKQotV1RGOjpTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0g
ICAgLy8gTm90IGltcGxlbWVudGVkLgotICAgIHJldHVybiBXVEY6OlN0cmluZygpOwotfQotI2Vu
ZGlmCi0KLVJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCi17Ci0gICAgYXV0byBj
b25maWd1cmF0aW9uID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5zZXRQZXJzaXN0ZW50KHRydWUpOwotCi0gICAg
Y29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShkZWZhdWx0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlv
bkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKCJGaWxlcyIpOwotICAgIGNvbmZpZ3VyYXRp
b24tPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5
KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2Fj
aGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSk7Ci0KLSAgICBjb25maWd1
cmF0aW9uLT5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0SW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeShkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShk
ZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0
TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0g
ICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFn
ZURpcmVjdG9yeShkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOwot
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnko
ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkpOwotCi0gICAgcmV0dXJu
IGNvbmZpZ3VyYXRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lv
biAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFT
dG9yZS5oCShub25leGlzdGVudCkKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKLSNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgQVBJIHsKLQotY2xhc3MgV2Vi
c2l0ZURhdGFTdG9yZSBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6V2Vi
c2l0ZURhdGFTdG9yZT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9y
ZT4gZGVmYXVsdERhdGFTdG9yZSgpOwotICAgIHN0YXRpYyBib29sIGRlZmF1bHREYXRhU3RvcmVF
eGlzdHMoKTsKLSAgICBzdGF0aWMgdm9pZCBkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGlu
ZygpOwotCi0gICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoUmVmPFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYsIGNvbnN0IFBBTDo6U2Vzc2lvbklE
Jik7Ci0gICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50
RGF0YVN0b3JlKCk7Ci0KLSAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7Ci0gICAg
dmlydHVhbCB+V2Vic2l0ZURhdGFTdG9yZSgpOwotCi0gICAgYm9vbCBpc1BlcnNpc3RlbnQoKTsK
LQotICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdDsKLSAgICB2
b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOwotICAgIGJvb2wgcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sKTsKLQotICAgIFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSgpIHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5n
ZXQoKTsgfQotICAgIEhUVFBDb29raWVTdG9yZSYgaHR0cENvb2tpZVN0b3JlKCk7Ci0KLSAgICBX
VEY6OlN0cmluZyBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotCi0gICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGlj
IFdURjo6U3RyaW5nIGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBX
VEY6OlN0cmluZyBkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6
OlN0cmluZyBkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsK
LSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwot
ICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
OwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRXZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSgpOwotI2lmIFVTRShHTElCKQotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZh
dWx0SFNUU0RpcmVjdG9yeSgpOwotI2VuZGlmCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1
bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3Ry
aW5nIGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOwotCi0gICAgc3Rh
dGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZhdWx0RGF0
YVN0b3JlQ29uZmlndXJhdGlvbigpOwotCi1wcml2YXRlOgotICAgIGVudW0gU2hvdWxkQ3JlYXRl
RGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0b3J5LCBEb250Q3JlYXRlRGlyZWN0b3J5IH07Ci0KLSAg
ICBXZWJzaXRlRGF0YVN0b3JlKCk7Ci0KLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgdGVtcERpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5
TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5ID0gQ3JlYXRlRGlyZWN0b3J5KTsKLSAgICBzdGF0
aWMgV1RGOjpTdHJpbmcgY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyB3
ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0
cmluZyYgZGlyZWN0b3J5TmFtZSk7Ci0KLSAgICBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
PiBtX3dlYnNpdGVEYXRhU3RvcmU7Ci19OwotCi19CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAkocmV2aXNpb24gMjQ5NzMy
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDE0ICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgogCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURh
dGFTdG9yZS5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJz
aXRlUG9saWNpZXNEYXRhLmgiCiAKIG5hbWVzcGFjZSBBUEkgewogCiBXZWJzaXRlUG9saWNpZXM6
OldlYnNpdGVQb2xpY2llcygpID0gZGVmYXVsdDsKIAotV2Vic2l0ZVBvbGljaWVzOjpXZWJzaXRl
UG9saWNpZXMoYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBPcHRpb25TZXQ8V2ViS2l0OjpX
ZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxsb3dlZEF1dG9wbGF5UXVpcmtzLCBXZWJLaXQ6OldlYnNp
dGVBdXRvcGxheVBvbGljeSBhdXRvcGxheVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFk
ZXJGaWVsZD4mJiBsZWdhY3lDdXN0b21IZWFkZXJGaWVsZHMsIFZlY3RvcjxXZWJDb3JlOjpDdXN0
b21IZWFkZXJGaWVsZHM+JiYgY3VzdG9tSGVhZGVyRmllbGRzLCBXZWJLaXQ6OldlYnNpdGVQb3BV
cFBvbGljeSBwb3BVcFBvbGljeSwgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURh
dGFTdG9yZSkKK1dlYnNpdGVQb2xpY2llczo6V2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJs
b2NrZXJzRW5hYmxlZCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IGFs
bG93ZWRBdXRvcGxheVF1aXJrcywgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3kgYXV0b3Bs
YXlQb2xpY3ksIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYgbGVnYWN5Q3VzdG9t
SGVhZGVyRmllbGRzLCBWZWN0b3I8V2ViQ29yZTo6Q3VzdG9tSGVhZGVyRmllbGRzPiYmIGN1c3Rv
bUhlYWRlckZpZWxkcywgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3ksIFJl
ZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKICAgICA6
IG1fY29udGVudEJsb2NrZXJzRW5hYmxlZChjb250ZW50QmxvY2tlcnNFbmFibGVkKQogICAgICwg
bV9hbGxvd2VkQXV0b3BsYXlRdWlya3MoYWxsb3dlZEF1dG9wbGF5UXVpcmtzKQogICAgICwgbV9h
dXRvcGxheVBvbGljeShhdXRvcGxheVBvbGljeSkKQEAgLTg0LDcgKzg0LDcgQEAgV2Vic2l0ZVBv
bGljaWVzOjp+V2Vic2l0ZVBvbGljaWVzKCkKIHsKIH0KIAotdm9pZCBXZWJzaXRlUG9saWNpZXM6
OnNldFdlYnNpdGVEYXRhU3RvcmUoUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURh
dGFTdG9yZSkKK3ZvaWQgV2Vic2l0ZVBvbGljaWVzOjpzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0
cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+JiYgd2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBt
X3dlYnNpdGVEYXRhU3RvcmUgPSBXVEZNb3ZlKHdlYnNpdGVEYXRhU3RvcmUpOwogfQpAQCAtMTA4
LDcgKzEwOCw3IEBAIFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSBXZWJzaXRlUG9saWMKICNl
bmRpZgogICAgICAgICBXVEZNb3ZlKGN1c3RvbUhlYWRlckZpZWxkcyksCiAgICAgICAgIHBvcFVw
UG9saWN5KCksCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA/IE9wdGlvbmFsPFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IHsgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkucGFyYW1ldGVycygpIH0gOiBXVEY6Om51bGxvcHQsCisgICAgICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZSA/IE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnM+IHsgbV93ZWJzaXRlRGF0YVN0b3JlLT5wYXJhbWV0ZXJzKCkgfSA6IFdURjo6bnVsbG9wdCwK
ICAgICAgICAgbV9jdXN0b21Vc2VyQWdlbnQsCiAgICAgICAgIG1fY3VzdG9tSmF2YVNjcmlwdFVz
ZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzLAogICAgICAgICBtX2N1c3RvbU5hdmlnYXRvclBs
YXRmb3JtLApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xp
Y2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlUG9saWNpZXMuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMyArNDEs
MTIgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xh
c3MgV2Vic2l0ZURhdGFTdG9yZTsKIHN0cnVjdCBXZWJzaXRlUG9saWNpZXNEYXRhOwogfQogCiBu
YW1lc3BhY2UgQVBJIHsKIAotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKLQogY2xhc3MgV2Vic2l0
ZVBvbGljaWVzIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6V2Vic2l0ZVBvbGljaWVzPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlUG9s
aWNpZXM+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZVBvbGljaWVzKTsg
fQpAQCAtNzksOCArNzgsOCBAQCBwdWJsaWM6CiAgICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xp
Y3kgcG9wVXBQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3BvcFVwUG9saWN5OyB9CiAgICAgdm9p
ZCBzZXRQb3BVcFBvbGljeShXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSBwb2xpY3kpIHsgbV9w
b3BVcFBvbGljeSA9IHBvbGljeTsgfQogCi0gICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURh
dGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQotICAg
IHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJik7Cisg
ICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9CisgICAgdm9pZCBzZXRXZWJzaXRlRGF0
YVN0b3JlKFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+JiYpOwogCiAgICAgV2ViS2l0
OjpXZWJzaXRlUG9saWNpZXNEYXRhIGRhdGEoKTsKIApAQCAtMTE4LDcgKzExNyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEFsbG93Q29udGVudENoYW5nZU9ic2VydmVyUXVpcmsoYm9vbCBhbGxv
dykgeyBtX2FsbG93Q29udGVudENoYW5nZU9ic2VydmVyUXVpcmsgPSBhbGxvdzsgfQogCiBwcml2
YXRlOgotICAgIFdlYnNpdGVQb2xpY2llcyhib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9w
dGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiwgV2ViS2l0OjpXZWJzaXRlQXV0
b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYsIFZlY3RvcjxX
ZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+JiYsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5
LCBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJik7CisgICAgV2Vic2l0ZVBvbGljaWVzKGJvb2wg
Y29udGVudEJsb2NrZXJzRW5hYmxlZCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5
UXVpcms+LCBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhU
VFBIZWFkZXJGaWVsZD4mJiwgVmVjdG9yPFdlYkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4mJiwg
V2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3ksIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU+JiYpOwogCiAgICAgYm9vbCBtX2NvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgeyB0cnVlIH07CiAg
ICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IG1fYWxsb3dlZEF1dG9w
bGF5UXVpcmtzOwpAQCAtMTI5LDcgKzEyOCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdlYkNv
cmU6OkhUVFBIZWFkZXJGaWVsZD4gbV9sZWdhY3lDdXN0b21IZWFkZXJGaWVsZHM7CiAgICAgVmVj
dG9yPFdlYkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4gbV9jdXN0b21IZWFkZXJGaWVsZHM7CiAg
ICAgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3kgbV9wb3BVcFBvbGljeSB7IFdlYktpdDo6V2Vi
c2l0ZVBvcFVwUG9saWN5OjpEZWZhdWx0IH07Ci0gICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+
IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
PiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAgICAgV1RGOjpTdHJpbmcgbV9jdXN0b21Vc2VyQWdlbnQ7
CiAgICAgV1RGOjpTdHJpbmcgbV9jdXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lm
aWNRdWlya3M7CiAgICAgV1RGOjpTdHJpbmcgbV9jdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElX
ZWJzaXRlRGF0YVN0b3JlV2luLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+Ci0KLW5hbWVzcGFjZSBBUEkgewotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIik7Ci19Ci0KLVN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQ2FjaGVTdG9yYWdlIik7Ci19Ci0K
LVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkK
LXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0NhY2hl
Iik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJJbmRleGVkREIiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCAiU2VydmljZVdvcmtlcnMiKTsKLX0KLQotU3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKLX0KLQotU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkK
LXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlTdG9y
YWdlIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJXZWJTUUwiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOwotfQotCi1TdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCksIGRpcmVjdG9yeU5hbWUpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnlOYW1lKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksIGRpcmVjdG9yeU5hbWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAyNDk3MzIp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBj
b3B5KQpAQCAtNjksNyArNjksNiBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNzIFBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjsKIGNsYXNzIFNlc3Npb25TdGF0ZTsKIGNsYXNzIFVzZXJT
Y3JpcHQ7Ci1jbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogY2xhc3MgV2Vic2l0ZVBvbGljaWVzOwog
Y2xhc3MgV2luZG93RmVhdHVyZXM7CiB9CkBAIC0xMTMsNiArMTEyLDcgQEAgY2xhc3MgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbmFnZXI7CiBjbGFzcyBXZWJUZXh0Q2hlY2tlcjsKIGNsYXNz
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OwogY2xhc3MgV2ViVmlld3BvcnRBdHRyaWJ1
dGVzOworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOwogCiBXS19BRERfQVBJX01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVJlZiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSkKQEAgLTE2OSw3ICsxNjksNyBAQCBX
S19BRERfQVBJX01BUFBJTkcoV0tVc2VyTWVkaWFQZXJtaXNzaW9uCiBXS19BRERfQVBJX01BUFBJ
TkcoV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFJlZiwgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJTY3JpcHRSZWYsIEFQSTo6VXNl
clNjcmlwdCkKIFdLX0FERF9BUElfTUFQUElORyhXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZiwgV2Vi
Vmlld3BvcnRBdHRyaWJ1dGVzKQotV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiwgQVBJOjpXZWJzaXRlRGF0YVN0b3JlKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiwgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlKQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYsIFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tXZWJzaXRlUG9saWNp
ZXNSZWYsIEFQSTo6V2Vic2l0ZVBvbGljaWVzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2luZG93
RmVhdHVyZXNSZWYsIEFQSTo6V2luZG93RmVhdHVyZXMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
LmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDQyICsy
NiwxOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0
ZURhdGFTdG9yZS5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYnNpdGVE
YXRhUmVjb3JkLmgiCi0KIFdLVHlwZUlEIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRUeXBl
SUQoKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
QVBJVHlwZSk7CisgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFu
YWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJS
ZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9uIGNhbGxiYWNrKQor
dm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnMo
V0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiwgdm9pZCosIFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9uKQogewotICAgIGF1dG8mIHdl
YnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0
ZURhdGFTdG9yZVJlZj4oYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUuZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFU
eXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2td
KGF1dG8gZGF0YVJlY29yZHMpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+
IHNlY3VyaXR5T3JpZ2luczsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDog
ZGF0YVJlY29yZHMpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0
YVJlY29yZC5vcmlnaW5zKQotICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy5hcHBlbmQo
QVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBjYWxsYmFjayhXZWJLaXQ6OnRvQVBJKEFQSTo6QXJyYXk6OmNy
ZWF0ZShXVEZNb3ZlKHNlY3VyaXR5T3JpZ2lucykpLnB0cigpKSwgbnVsbHB0ciwgY29udGV4dCk7
Ci0gICAgfSk7CiB9CiAKLXZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJp
ZXNGb3JPcmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hl
TWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pCit2b2lkIFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYpCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9y
ZSA9IFdlYktpdDo6dG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVm
PihhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0KLSAgICBX
ZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJlY29yZC5hZGQo
V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCBXZWJL
aXQ6OnRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7Ci0KLSAgICB3ZWJz
aXRlRGF0YVN0b3JlLnJlbW92ZURhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlLCB7IGRhdGFSZWNvcmQgfSwgW10geyB9KTsKIH0KIAotdm9pZCBX
S0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0FwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyKQordm9pZCBXS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVm
KQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChyZWludGVy
cHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oYXBwbGljYXRpb25DYWNoZU1hbmFnZXIp
KS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YShX
ZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIC1XYWxs
VGltZTo6aW5maW5pdHkoKSwgW10geyB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmgJKHJl
dmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTggKzI3LDE5IEBACiAj
ZGVmaW5lIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dL
QmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lmZGVmIF9fY3Bs
dXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlckdldFR5cGVJRCgpOworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQXBw
bGljYXRpb25DYWNoZU1hbmFnZXJHZXRUeXBlSUQoKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiB0
eXBlZGVmIHZvaWQgKCpXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNo
ZU9yaWdpbnNGdW5jdGlvbikoV0tBcnJheVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotV0tfRVhQ
T1JUIHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5zKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIs
IHZvaWQqIGNvbnRleHQsIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRp
b25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lucyhXS0FwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0Fw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiBm
dW5jdGlvbikgV0tfQ19BUElfREVQUkVDQVRFRDsKIAotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBv
cmlnaW4pOwotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFs
bEVudHJpZXMoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFu
YWdlcik7CitXS19FWFBPUlQgdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlRW50
cmllc0Zvck9yaWdpbihXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbikgV0tfQ19BUElfREVQUkVDQVRF
RDsKK1dLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVBbGxFbnRy
aWVzKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIp
IFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlz
dGVuZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiAr
MjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXS0ZyYW1lUG9saWN5TGlz
dGVuZXIuaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJB
UElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3Jl
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5MCArMjYsMzggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkFQSUFy
cmF5LmgiCi0jaW5jbHVkZSAiQVBJRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVE
YXRhU3RvcmUuaCIKLSNpbmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgotI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCi0jaW5jbHVkZSAiV2Vic2l0
ZURhdGFTdG9yZS5oIgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLXVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCgp
CiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7Cisg
ICAgcmV0dXJuIDA7CiB9CiAKIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdl
dE9yaWdpbktleSgpCiB7Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmlu
Zzo6Y3JlYXRlKCJXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURldGFpbHNPcmlnaW5L
ZXkiKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHJldHVybiBudWxs
cHRyOwogfQogCiBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlv
blRpbWVLZXkoKQogewotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6
OmNyZWF0ZSgiV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclN0b3JhZ2VEZXRhaWxzQ3JlYXRpb25U
aW1lS2V5IikubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAogV0tTdHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9k
aWZpY2F0aW9uVGltZUtleSgpCiB7Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6
OlN0cmluZzo6Y3JlYXRlKCJXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyU3RvcmFnZURldGFpbHNN
b2RpZmljYXRpb25UaW1lS2V5IikubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zRnVuY3Rpb24gY2FsbGJhY2spCi0KK3ZvaWQgV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJSZWYsIHZvaWQqLCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlW
YWx1ZVN0b3JhZ2VPcmlnaW5zRnVuY3Rpb24pCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9y
ZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oa2V5VmFs
dWVTdG9yYWdlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0ZURhdGFT
dG9yZS5mZXRjaERhdGEoeyBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURh
dGFUeXBlOjpTZXNzaW9uU3RvcmFnZSB9LCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10oYXV0byBk
YXRhUmVjb3JkcykgewotICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gc2VjdXJp
dHlPcmlnaW5zOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVj
b3JkcykgewotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBkYXRhUmVjb3Jk
Lm9yaWdpbnMpCi0gICAgICAgICAgICAgICAgc2VjdXJpdHlPcmlnaW5zLmFwcGVuZChBUEk6OlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUob3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGNhbGxiYWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHNl
Y3VyaXR5T3JpZ2lucykpLnB0cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAK
LXZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCog
Y29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdp
bkZ1bmN0aW9uIGNhbGxiYWNrKQordm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9y
YWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwgdm9pZCosIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5jdGlvbikK
IHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8
V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSktPndlYnNpdGVE
YXRhU3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLmdldExvY2FsU3RvcmFnZURldGFpbHMo
W2NvbnRleHQsIGNhbGxiYWNrXShhdXRvJiYgZGV0YWlscykgewotICAgICAgICBWZWN0b3I8UmVm
UHRyPEFQSTo6T2JqZWN0Pj4gcmVzdWx0OwotICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShkZXRhaWxzLnNpemUoKSk7Ci0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkZXRh
aWwgOiBkZXRhaWxzKSB7Ci0gICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFQSTo6
T2JqZWN0Pj4gZGV0YWlsTWFwOwotICAgICAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBvcmln
aW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRldGFpbC5vcmlnaW5JZGVudGlmaWVyKS0+c2Vj
dXJpdHlPcmlnaW4oKSk7Ci0KLSAgICAgICAgICAgIGRldGFpbE1hcC5zZXQodG9JbXBsKFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdpbktleSgpKS0+c3RyaW5nKCksIG9yaWdpbik7Ci0g
ICAgICAgICAgICBpZiAoZGV0YWlsLmNyZWF0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRh
aWxNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVL
ZXkoKSktPnN0cmluZygpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKGRldGFpbC5jcmVhdGlvblRpbWUt
PnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkpOwotICAgICAgICAgICAgaWYgKGRldGFpbC5t
b2RpZmljYXRpb25UaW1lKQotICAgICAgICAgICAgICAgIGRldGFpbE1hcC5zZXQodG9JbXBsKFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRpbWVLZXkoKSktPnN0cmluZygp
LCBBUEk6OkRvdWJsZTo6Y3JlYXRlKGRldGFpbC5tb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2lu
Y2VFcG9jaCgpLnZhbHVlKCkpKTsKLQotICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVu
ZChBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKGRldGFpbE1hcCkpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGNhbGxiYWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHJl
c3VsdCkpLnB0cigpKSwgbnVsbHB0ciwgY29udGV4dCk7Ci0gICAgfSk7CiB9CiAKLXZvaWQgV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJl
ZiBvcmlnaW4pCit2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JP
cmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmKQog
ewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRlcnByZXRfY2FzdDxX
S1dlYnNpdGVEYXRhU3RvcmVSZWY+KGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpKS0+d2Vic2l0ZURh
dGFTdG9yZSgpOwotICAgIFdlYnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgZGF0YVJl
Y29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIHRvSW1wbChvcmlnaW4pLT5z
ZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7Ci0gICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFU
eXBlOjpTZXNzaW9uU3RvcmFnZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0
YSgpKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEoeyBXZWJzaXRlRGF0YVR5cGU6
OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURhdGFUeXBlOjpTZXNzaW9uU3RvcmFnZSB9LCB7IGRhdGFS
ZWNvcmQgfSwgW10geyB9KTsKIH0KIAotdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxl
dGVBbGxFbnRyaWVzKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyKQordm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3Jl
ID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihrZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0
b3JlLnJlbW92ZURhdGEoeyBXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZSwgV2Vic2l0ZURh
dGFUeXBlOjpTZXNzaW9uU3RvcmFnZSB9LCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtdIHsgfSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDMwICsyNywzMSBAQAogI2RlZmluZSBXS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXJfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0Rl
cHJlY2F0ZWQuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgog
Ci1XS19FWFBPUlQgV0tUeXBlSUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlEKCk7
CitXS19FWFBPUlQgV0tUeXBlSUQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0VHlwZUlEKCkg
V0tfQ19BUElfREVQUkVDQVRFRDsKIAogLyogVmFsdWUgdHlwZTogV0tTZWN1cml0eU9yaWdpblJl
ZiAqLwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9y
aWdpbktleSgpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ckdldE9yaWdpbktleSgpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5cGU6IFdL
RG91YmxlUmVmLCBzZWNvbmRzIHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLwotV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtl
eSgpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENy
ZWF0aW9uVGltZUtleSgpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5cGU6IFdL
RG91YmxlUmVmLCBzZWNvbmRzIHNpbmNlIEphbnVhcnkgMXN0LCAxOTcwIFVUQyAqLwotV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlvblRp
bWVLZXkoKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRNb2RpZmljYXRpb25UaW1lS2V5KCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogdHlwZWRlZiB2
b2lkICgqV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1
bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7Ci1XS19FWFBPUlQgdm9pZCBX
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0
LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zRnVuY3Rp
b24gZnVuY3Rpb24pOworV0tfRVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0
S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFs
dWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
R2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKSBXS19DX0FQSV9ERVBS
RUNBVEVEOwogCiB0eXBlZGVmIHZvaWQgKCpXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9y
YWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdLRXJyb3JSZWYsIHZvaWQq
KTsKLVdLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRh
aWxzQnlPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1h
bmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VE
ZXRhaWxzQnlPcmlnaW5GdW5jdGlvbiBmdW5jdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9y
YWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24gZnVu
Y3Rpb24pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKLVdLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2lu
KTsKLVdLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUFsbEVudHJp
ZXMoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIpOwor
V0tfRVhQT1JUIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9y
aWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwg
V0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CitXS19FWFBP
UlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLS2V5VmFs
dWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSBXS19DX0FQSV9ERVBS
RUNBVEVEOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCShy
ZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291
cmNlQ2FjaGVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNjcgKzI2LDE5IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5oIgog
Ci0jaW5jbHVkZSAiQVBJQXJyYXkuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgi
Ci0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNvcmQuaCIK
LQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tSZXNvdXJjZUNhY2hlTWFu
YWdlckdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6QVBJVHlwZSk7Ci19Ci0KLXN0YXRpYyBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0b1dl
YnNpdGVEYXRhVHlwZXMoV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikKLXsK
LSAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzIHsgV2Vic2l0
ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSB9OwotCi0gICAgaWYgKGNhY2hlc1RvQ2xlYXIgPT0gV0tS
ZXNvdXJjZUNhY2hlc1RvQ2xlYXJBbGwpCi0gICAgICAgIHdlYnNpdGVEYXRhVHlwZXMuYWRkKFdl
YnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKTsKLQotICAgIHJldHVybiB3ZWJzaXRlRGF0YVR5cGVz
OworICAgIHJldHVybiAwOwogfQogCi12b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNo
ZU9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIHZvaWQqIGNv
bnRleHQsIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxs
YmFjaykKK3ZvaWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2lucyhXS1Jlc291
cmNlQ2FjaGVNYW5hZ2VyUmVmLCB2b2lkKiwgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hl
T3JpZ2luc0Z1bmN0aW9uKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB0b0ltcGwo
cmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGNhY2hlTWFuYWdlcikpLT53
ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5mZXRjaERhdGEodG9XZWJz
aXRlRGF0YVR5cGVzKFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyQWxsKSwgeyB9LCBbY29udGV4dCwg
Y2FsbGJhY2tdKGF1dG8gZGF0YVJlY29yZHMpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6
Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2luczsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRh
UmVjb3JkIDogZGF0YVJlY29yZHMpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3Jp
Z2luIDogZGF0YVJlY29yZC5vcmlnaW5zKQotICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lu
cy5hcHBlbmQoQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdp
bigpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5Ojpj
cmVhdGUoV1RGTW92ZShzZWN1cml0eU9yaWdpbnMpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRleHQp
OwotICAgIH0pOwogfQogCi12b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9y
T3JpZ2luKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5hZ2VyLCBXS1NlY3VyaXR5
T3JpZ2luUmVmIG9yaWdpbiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikK
K3ZvaWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4oV0tSZXNvdXJj
ZUNhY2hlTWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiwgV0tSZXNvdXJjZUNhY2hlc1Rv
Q2xlYXIpCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVycHJl
dF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oY2FjaGVNYW5hZ2VyKSktPndlYnNpdGVEYXRh
U3RvcmUoKTsKLQotICAgIFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gZGF0YVJlY29yZHM7Ci0K
LSAgICB7Ci0gICAgICAgIFdlYnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNvcmQ7Ci0gICAgICAgIGRh
dGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUsIHRvSW1wbChvcmlnaW4p
LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7Ci0KLSAgICAgICAgZGF0YVJlY29yZHMuYXBwZW5k
KGRhdGFSZWNvcmQpOwotICAgIH0KLQotICAgIGlmIChjYWNoZXNUb0NsZWFyID09IFdLUmVzb3Vy
Y2VDYWNoZXNUb0NsZWFyQWxsKSB7Ci0gICAgICAgIFdlYnNpdGVEYXRhUmVjb3JkIGRhdGFSZWNv
cmQ7Ci0gICAgICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCB0
b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotCi0gICAgICAgIGRhdGFS
ZWNvcmRzLmFwcGVuZChkYXRhUmVjb3JkKTsKLSAgICB9Ci0KLSAgICB3ZWJzaXRlRGF0YVN0b3Jl
LnJlbW92ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKGNhY2hlc1RvQ2xlYXIpLCBkYXRhUmVjb3Jk
cywgW10geyB9KTsKIH0KIAotdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZv
ckFsbE9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBjYWNoZU1hbmFnZXIsIFdLUmVz
b3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpCit2b2lkIFdLUmVzb3VyY2VDYWNoZU1h
bmFnZXJDbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmLCBX
S1Jlc291cmNlQ2FjaGVzVG9DbGVhcikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0g
dG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihjYWNoZU1hbmFn
ZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0
YSh0b1dlYnNpdGVEYXRhVHlwZXMoY2FjaGVzVG9DbGVhciksIC1XYWxsVGltZTo6aW5maW5pdHko
KSwgW10geyB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVz
b3VyY2VDYWNoZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmgJKHJldmlzaW9uIDI0OTczMikKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyX2gKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tE
ZXByZWNhdGVkLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0zOCwx
MyArMzksMTMgQEAgZW51bSB7CiB9OwogdHlwZWRlZiB1aW50MzJfdCBXS1Jlc291cmNlQ2FjaGVz
VG9DbGVhcjsKIAotV0tfRVhQT1JUIFdLVHlwZUlEIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRU
eXBlSUQoKTsKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0VHlw
ZUlEKCkgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tSZXNvdXJjZUNh
Y2hlTWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVm
LCB2b2lkKik7Ci1XS19FWFBPUlQgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVP
cmlnaW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY29udGV4dFJlZiwgdm9pZCogY29udGV4
dCwgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9u
KTsKK1dLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMo
V0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBjb250ZXh0UmVmLCB2b2lkKiBjb250ZXh0LCBXS1Jl
c291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zRnVuY3Rpb24gZnVuY3Rpb24pIFdLX0Nf
QVBJX0RFUFJFQ0FURUQ7CiAKLVdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJD
bGVhckNhY2hlRm9yT3JpZ2luKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5nZXIs
IFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNo
ZXNUb0NsZWFyKTsKLVdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNh
Y2hlRm9yQWxsT3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwg
V0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcik7CitXS19FWFBPUlQgdm9pZCBX
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNlQ2FjaGVN
YW5hZ2VyUmVmIGNhY2hlTWFuZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tSZXNv
dXJjZUNhY2hlc1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dL
X0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yQWxsT3JpZ2lu
cyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwgV0tSZXNvdXJjZUNhY2hl
c1RvQ2xlYXIgY2FjaGVzVG9DbGVhcikgV0tfQ19BUElfREVQUkVDQVRFRDsKIAogI2lmZGVmIF9f
Y3BsdXNwbHVzCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURh
dGFTdG9yZS5oIgorI2luY2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yZS5oIgogI2luY2x1ZGUgIk1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJTaG91bGRHcmFu
ZGZhdGhlclN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKQEAgLTQxLDI5ICs0
MSwzMCBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFG
ZXRjaE9wdGlvbi5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhUmVjb3JkLmgiCisjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1
ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIFdL
VHlwZUlEIFdLV2Vic2l0ZURhdGFTdG9yZUdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIFdlYktp
dDo6dG9BUEkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2Vi
S2l0Ojp0b0FQSShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkFQSVR5cGUpOwogfQogCiBXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RGVmYXVsdERhdGFTdG9yZSgp
CiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlKCkucHRyKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpKTsKIH0KIAogV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNyZWF0ZU5vblBlcnNpc3RlbnREYXRh
U3RvcmUoKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKS5sZWFrUmVmKCkpOworICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNp
c3RlbnQoKS5sZWFrUmVmKCkpOwogfQogCiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYgV0tXZWJzaXRl
RGF0YVN0b3JlQ3JlYXRlV2l0aENvbmZpZ3VyYXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvblJlZiBjb25maWd1cmF0aW9uKQogewogICAgIGF1dG8gc2Vzc2lvbklEID0gV2ViS2l0
Ojp0b0ltcGwoY29uZmlndXJhdGlvbiktPmlzUGVyc2lzdGVudCgpID8gUEFMOjpTZXNzaW9uSUQ6
OmdlbmVyYXRlUGVyc2lzdGVudFNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRl
RXBoZW1lcmFsU2Vzc2lvbklEKCk7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y3JlYXRlKCpXZWJLaXQ6OnRvSW1wbChjb25maWd1cmF0aW9uKSwgc2Vz
c2lvbklEKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmNyZWF0ZSgqV2ViS2l0Ojp0b0ltcGwoY29uZmlndXJhdGlvbiksIHNl
c3Npb25JRCkubGVha1JlZigpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBib29sIGVuYWJsZSkKQEAgLTgzLDEzICs4NCwxMyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFJlc291cmNlTG9hZFN0CiAKIFdLSFRUUENvb2tpZVN0b3JlUmVmIFdLV2Vic2l0ZURh
dGFTdG9yZUdldEhUVFBDb29raWVTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT5odHRwQ29va2llU3RvcmUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmNvb2tpZVN0b3JlKCkpOwogfQogCiB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVXaXRoQ29t
cGxldGlvbkhhbmRsZXIoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBl
bmFibGUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWJ1Z01v
ZGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGVuYWJsZSwgW2Nv
bnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGUsIFtjb250ZXh0
LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0
KTsKICAgICB9KTsKICNlbHNlCkBAIC0xMDAsNyArMTAxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRSZXNvdXJjZUxvYWRTdAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlYnVnTW9kZUZ1bmN0aW9uIGNvbXBsZXRpb25I
YW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFByZXZhbGVu
dFJlc291cmNlRm9yRGVidWdNb2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+c2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlv
bkhhbmRsZXJdIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7
CiAjZWxzZQpAQCAtMTEwLDcgKzExMSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVz
b3VyY2VMb2FkU3QKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0xhc3RTZWVu
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGRv
dWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
TGFzdFNlZW5GdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRMYXN0U2VlbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjb21wbGV0aW9u
SGFuZGxlcl0geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldExhc3RTZWVu
KFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgU2Vjb25kcyB7IHNl
Y29uZHMgfSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTEyMSw3ICsxMjIsNyBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0CiB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250
ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlv
biBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9
ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZhbHVlKQogICAgICAg
ICB3ZWJzaXRlRGF0YVN0b3JlLnNldFByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7
CkBAIC0xMzksNyArMTQwLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
UHJldgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJl
c291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhv
c3QsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NWZXJ5UHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIHdlYnNpdGVEYXRh
U3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCk7
CisgICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpOwogCiAgICAgaWYgKHZhbHVlKQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlLnNldFZlcnlQ
cmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmco
KSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewpAQCAtMTU3LDcgKzE1OCw3IEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ZlcnkKIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlRHVtcFJlc291cmNl
TG9hZFN0YXRpc3RpY3NGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNp
dGVEYXRhU3RvcmUoKS5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbY29udGV4dCwgY2FsbGJh
Y2tdIChjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKKyAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5kdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbY29udGV4
dCwgY2FsbGJhY2tdIChjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKICAg
ICAgICAgY2FsbGJhY2soV2ViS2l0Ojp0b0FQSShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmltcGwo
KSksIGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTE2OCw3ICsxNjksNyBAQCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJjZUxvYWRTCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZUlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZUlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNQcmV2YWxlbnRSZXNvdXJjZShVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFj
a10oYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+aXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ByZXZhbGVudFJlc291
cmNlKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzUHJldmFsZW50UmVzb3VyY2UsIGNvbnRleHQpOwog
ICAgIH0pOwogI2Vsc2UKQEAgLTE3OSw3ICsxODAsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZUlzU3RhdGlzdGljc1ByZXZhCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1Zl
cnlQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLmlzVmVyeVByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29s
IGlzVmVyeVByZXZhbGVudFJlc291cmNlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+aXNWZXJ5UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNWZXJ5UHJldmFsZW50
UmVzb3VyY2UpIHsKICAgICAgICAgY2FsbGJhY2soaXNWZXJ5UHJldmFsZW50UmVzb3VyY2UsIGNv
bnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTE5MCw3ICsxOTEsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ZlcnlQCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3Rh
dGlzdGljc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgc3VicmVzb3VyY2VIb3N0LCBXS1N0cmluZ1JlZiB0
b3BGcmFtZUhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGlj
c1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXJGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5k
ZXIoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJyZXNvdXJjZUhvc3QpLT5zdHJpbmcoKSks
IFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29u
dGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKSB7Cisg
ICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJj
ZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VIb3N0KS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwg
W2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikg
ewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIsIGNvbnRl
eHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIwMSw3ICsyMDIsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgc3ViRnJhbWVIb3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhv
c3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVy
ZWRBc1N1YkZyYW1lVW5kZXJGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5pc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChzdWJGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJv
b2wgaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoc3ViRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlz
UmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcikgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVy
ZWRBc1N1YkZyYW1lVW5kZXIsIGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIxMiw3ICsy
MTMsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0
ZWRGcm9tLCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZFRvLCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvRnVuY3Rp
b24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdp
c3RlcmVkQXNSZWRpcmVjdGluZ1RvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGly
ZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRp
cmVjdGVkVG8pLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVy
ZWRBc1JlZGlyZWN0aW5nVG8pIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5p
c1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVn
aXN0ZXJlZEFzUmVkaXJlY3RpbmdUbykgewogICAgICAgICBjYWxsYmFjayhpc1JlZ2lzdGVyZWRB
c1JlZGlyZWN0aW5nVG8sIGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTIyMyw3ICsyMjQs
NyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzCiB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSwg
dm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRl
cmFjdGlvbkZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgYXV0byYgZGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIGRhdGFTdG9yZSA9
ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpOwogCiAgICAgaWYgKHZhbHVlKQogICAgICAg
ICBkYXRhU3RvcmUubG9nVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CkBAIC0yNDEs
NyArMjQyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSAogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0
aW9uRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuaGFzSGFkVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlv
bikgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0hhZFVzZXJJbnRlcmFj
dGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0
LCBjYWxsYmFja10oYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgY2FsbGJh
Y2soaGFzSGFkVXNlckludGVyYWN0aW9uLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0y
NTIsMTQgKzI1MywxNCBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hhc0hh
CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFs
dWUpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0R3JhbmRmYXRoZXJl
ZChVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIHZhbHVlLCBbXSB7
IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldEdyYW5kZmF0aGVyZWQo
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCB2YWx1ZSwgW10geyB9
KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5k
ZmF0aGVyZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYg
aG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRm
YXRoZXJlZEZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFT
dG9yZSgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc0dyYW5kZmF0aGVyZWQp
IHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5oYXNIYWRVc2VySW50ZXJhY3Rp
b24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwg
Y2FsbGJhY2tdKGJvb2wgaXNHcmFuZGZhdGhlcmVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzR3Jh
bmRmYXRoZXJlZCwgY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMjcwLDQ5ICsyNzEsNDkg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NHcmFuZAogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5n
UmVmIHRvcEZyYW1lSG9zdCkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCkt
PnN0cmluZygpKSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5z
ZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCkt
PnN0cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgdG9w
RnJhbWVIb3N0KQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJl
c291cmNlVW5kZXJUb3BGcmFtZURvbWFpbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3Qp
LT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3Ry
aW5nKCkpLCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+
c3RyaW5nKCkpLCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVk
aXJlY3RlZFRvKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5z
dHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0
cmluZygpKSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8p
LT5zdHJpbmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9z
dFJlZGlyZWN0ZWRGcm9tKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNl
dFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3Rl
ZEZyb20pLT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RS
ZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJp
bmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKS5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVj
dGVkVG8pLT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJl
Y3RlZFRvKS0+c3RyaW5nKCkpLCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVm
IGhvc3RSZWRpcmVjdGVkRnJvbSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KS5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBs
KGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0
ZWRGcm9tKS0+c3RyaW5nKCkpLCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVk
aXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBmcm9tSG9z
dCwgV0tTdHJpbmdSZWYgdG9Ib3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZ1bmN0aW9uIGNhbGxi
YWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldENyb3NzU2l0ZUxv
YWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
ZnJvbUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9Ib3N0KS0+
c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5zZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGZyb21Ib3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKHRvSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7
CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTMyMyw3ICsz
MjQsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDcm9zCiB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBj
b250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRl
cmFjdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHNlY29uZHMgfSwg
W2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4
dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxz
ZQpAQCAtMzM0LDcgKzMzNSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c1RpbWUKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNz
QW5kRGF0YVJlY29yZHMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHNGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5zY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoW2Nv
bnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2No
ZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFtjb250ZXh0LCBjYWxsYmFj
a10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0zNDUs
NyArMzQ2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vzcwogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nRnVuY3Rpb24gY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDb29r
aWVCbG9ja2luZ1VwZGF0ZShbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdKCkgeworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUo
W2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSgpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMzU2LDIxICszNTcsMjEgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQwogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc3VibWl0VGVsZW1l
dHJ5KCk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c3VibWl0VGVsZW1ldHJ5
KCk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90
aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmLCBib29sIHZhbHVlKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUsIFtd
IHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0Tm90aWZ5UGFnZXNX
aGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCh2YWx1ZSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0KFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0RnVuY3Rpb24gY2FsbGJh
Y2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0SXNSdW5uaW5nUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1Rlc3QodmFsdWUsIFtjb250ZXh0LCBjYWxsYmFja10geworICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NUZXN0KHZhbHVlLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJh
Y2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMzgxLDQ5ICszODIsNDkgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdQogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1Jl
bW92YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTaG91bGRDbGFzc2lmeVJlc291
cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSwgW10oKSB7IH0pOworICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3Jl
RGF0YVJlY29yZHNSZW1vdmFsKHZhbHVlLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2Fz
Q2FwdHVyZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXROb3RpZnlQYWdlc1doZW5U
ZWxlbWV0cnlXYXNDYXB0dXJlZCh2YWx1ZSwgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKHZh
bHVlLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzKQogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVt
b3ZhbChTZWNvbmRzIHsgc2Vjb25kcyB9LCBbXSgpIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNl
Y29uZHMgeyBzZWNvbmRzIH0sIFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMpCiB7CiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBzZWNvbmRz
IH0sIFtdKCkgeyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRHcmFu
ZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyB7IHNlY29uZHMgfSwgW10oKSB7IH0pOwogI2VuZGlmCiB9
CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc01heFN0YXRpc3RpY3NFbnRy
aWVzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2lnbmVkIGVudHJpZXMp
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TWF4U3RhdGlzdGljc0Vu
dHJpZXMoZW50cmllcywgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKGVudHJpZXMsIFtdKCkgeyB9KTsKICNlbmRpZgog
fQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcnVuZUVudHJpZXNEb3du
VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdW5zaWduZWQgZW50cmllcykK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQcnVuZUVudHJpZXNEb3du
VG8oZW50cmllcywgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PnNldFBydW5lRW50cmllc0Rvd25UbyhlbnRyaWVzLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnRTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRT
dG9yZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViS2l0OjpTaG91bGRHcmFu
ZGZhdGhlclN0YXRpc3RpY3M6OlllcywgW2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0
ZW50KFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBj
YWxsYmFja10oKSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UK
QEAgLTQzNCw3ICs0MzUsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVh
ckluCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudFN0b3JlTW9kaWZpZWRTaW5jZUhvdXJzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIHVuc2lnbmVkIGhvdXJzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VI
b3Vyc0Z1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWU6Om5vdygpIC0g
U2Vjb25kczo6ZnJvbUhvdXJzKGhvdXJzKSwgV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3M6OlllcywgW2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1l
Ojpub3coKSAtIFNlY29uZHM6OmZyb21Ib3Vycyhob3VycyksIFdlYktpdDo6U2hvdWxkR3JhbmRm
YXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAgICAgIGNh
bGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTQ0NSw3ICs0NDYsNyBAQCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNr
KQogewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0g
V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M7Ci0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEo
ZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFj
a10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5
cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewog
ICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTQ1Myw3ICs0NTQsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhclRoCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29sIGluY2x1ZGVIdHRw
T25seUNvb2tpZXMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NE
ZWxldGVDb29raWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywg
W2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+
c3RyaW5nKCkpLCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBbY29udGV4dCwgY2FsbGJhY2tdIHsK
ICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNDY0LDcgKzQ2
NSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0RlbGV0ZUMKIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlRnVuY3Rpb24gY2FsbGJhY2sp
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaGFzTG9jYWxTdG9yYWdlRm9y
VGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250
ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNMb2NhbFN0b3JhZ2UpIHsKKyAgICBXZWJLaXQ6OnRvSW1w
bChkYXRhU3RvcmVSZWYpLT5oYXNMb2NhbFN0b3JhZ2VGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2Vi
S2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhh
c0xvY2FsU3RvcmFnZSkgewogICAgICAgICBjYWxsYmFjayhoYXNMb2NhbFN0b3JhZ2UsIGNvbnRl
eHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTQ3NSw3ICs0NzYsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NIYXNMb2NhCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NDYWNoZU1heEFnZUNhcChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBk
b3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc0NhY2hlTWF4QWdlQ2FwRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
U2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJj
ZXMoU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNh
bGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTQ4Niw3ICs0ODcsNyBAQCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhhc0lzb2xhdGVkU2Vzc2lvbkZvclRl
c3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4
dCwgY2FsbGJhY2tdKGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9uKSB7CisgICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+aGFzSXNvbGF0ZWRTZXNzaW9uRm9yVGVzdGluZyhVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9v
bCBoYXNJc29sYXRlZFNlc3Npb24pIHsKICAgICAgICAgY2FsbGJhY2soaGFzSXNvbGF0ZWRTZXNz
aW9uLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC01MDEsNyArNTAyLDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUbwogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihjb250ZXh0KTsKICAgICB9KTsKIAotICAgIGF1dG8mIHN0b3JlID0gV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHN0b3JlID0g
KldlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZik7CiAgICAgc3RvcmUuY2xlYXJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzSW5XZWJQcm9jZXNzZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNr
QWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRDYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlcyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dy
ZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICBzdG9yZS5yZXNldENyb3NzU2l0ZUxvYWRzV2l0
aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tB
Z2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKQEAgLTUxNiw3ICs1MTcsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NSZXNldFRvCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJl
bW92ZUFsbEZldGNoQ2FjaGVzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVSZW1vdmFsRnVu
Y3Rpb24gY2FsbGJhY2spCiB7CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBl
PiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU7Ci0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEo
ZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10gewor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAt
V2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxs
YmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTUyOCw3ICs1MjksNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGCiAgICAgVmVjdG9yPFdlYktpdDo6V2Vic2l0
ZURhdGFSZWNvcmQ+IGRhdGFSZWNvcmRzID0geyBXVEZNb3ZlKGRhdGFSZWNvcmQpIH07CiAKICAg
ICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6
V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZTsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIGRhdGFSZWNvcmRz
LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgZGF0YVJlY29yZHMsIFtjb250ZXh0LCBjYWxsYmFja10g
ewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KQEAgLTUzNiw3ICs1Mzcs
NyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGCiB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXMoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3Zl
QWxsSW5kZXhlZERhdGFiYXNlc0NhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNldDxX
ZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU6OkluZGV4ZWREQkRhdGFiYXNlczsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5m
aW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+cmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2Nv
bnRleHQsIGNhbGxiYWNrXSB7CiAgICAgaWYgKGNhbGxiYWNrKQogICAgICAgICBjYWxsYmFjayhj
b250ZXh0KTsKICAgICB9KTsKQEAgLTU0NSw3ICs1NDYsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVJlbW92ZUFsbEluZGV4ZWRECiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUxvY2Fs
U3RvcmFnZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2VDYWxsYmFjayBjYWxsYmFjaykK
IHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdl
YktpdDo6V2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2U7Ci0gICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCAt
V2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6Omlu
ZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBpZiAoY2FsbGJhY2spCiAg
ICAgICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKQEAgLTU1NSw3ICs1NTYsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXCiB7CiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4g
ZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25zOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4
dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVE
YXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2td
IHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTY2LDcg
KzU2Nyw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVcKIAogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlT3JpZ2lucyhXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRG
ZXRjaENhY2hlT3JpZ2luc0Z1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU6OkRPTUNhY2hlLCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0
YVJlY29yZHMpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5mZXRjaERhdGEo
V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCB7IH0sIFtjb250ZXh0LCBjYWxsYmFj
a10gKGF1dG8gZGF0YVJlY29yZHMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVj
dD4+IHNlY3VyaXR5T3JpZ2luczsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3Jk
IDogZGF0YVJlY29yZHMpIHsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDog
ZGF0YVJlY29yZC5vcmlnaW5zKQpAQCAtNTgwLDcgKzU4MSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemUKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRl
RGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hP
cHRpb246OkNvbXB1dGVTaXplczsKIAotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRP
TUNhY2hlLCBmZXRjaE9wdGlvbnMsIFtvcmlnaW4sIGNvbnRleHQsIGNhbGxiYWNrXSAoYXV0byBk
YXRhUmVjb3JkcykgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmZldGNoRGF0
YShXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGUsIGZldGNoT3B0aW9ucywgW29yaWdp
biwgY29udGV4dCwgY2FsbGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CiAgICAgICAgIGF1dG8g
b3JpZ2luRGF0YSA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFdl
YktpdDo6dG9JbXBsKG9yaWdpbiktPnN0cmluZygpKS0+ZGF0YSgpOwogICAgICAgICBmb3IgKGF1
dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVjb3JkcykgewogICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiByZWNvcmRPcmlnaW4gOiBkYXRhUmVjb3JkLm9yaWdpbnMpIHsKQEAgLTU5NywyMyArNTk4
LDIzIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZVNpemUKIAogV0tTdHJp
bmdSZWYgV0tXZWJzaXRlRGF0YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKLSAgICByZXR1cm4g
V2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRl
RGF0YVN0b3JlKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5z
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOwogfQogCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShX
ZWJLaXQ6OnRvSW1wbChzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KS0+c3RyaW5n
KCkpOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkoV2ViS2l0Ojp0b0ltcGwoc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSktPnN0cmluZygpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgdWludDY0X3QgcXVvdGEpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnNldFBlck9yaWdpblN0b3JhZ2VRdW90YShxdW90YSk7CisgICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKHF1
b3RhKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsbERldmljZU9yaWVudGF0
aW9uUGVybWlzc2lvbnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKICNp
ZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vz
c0NvbnRyb2xsZXIoKS5jbGVhclBlcm1pc3Npb25zKCk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+ZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKCku
Y2xlYXJQZXJtaXNzaW9ucygpOwogI2VuZGlmCiB9CiAKQEAgLTcxMywxNCArNzE0LDE0IEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0aGVudGljYXQKICAgICAgICAgY29uZmlndXJh
dGlvbi5uZmMgPSBXVEZNb3ZlKG5mYyk7CiAgICAgfQogCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbihXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZUNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbEZ1
bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlw
ZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkFkQ2xpY2tBdHRyaWJ1dGlv
bnM7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250
ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92
ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBj
YWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2ll
cy5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZVBvbGljaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIgKzI3LDEyIEBA
CiAjaW5jbHVkZSAiV0tXZWJzaXRlUG9saWNpZXMuaCIKIAogI2luY2x1ZGUgIkFQSURpY3Rpb25h
cnkuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiQVBJV2Vi
c2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tBcnJh
eS5oIgogI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgi
CisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZkN1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAJKHJldmlzaW9uIDI0OTcz
MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmgiCiAKLSNp
bmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisj
aW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3VybFByb3h5
U2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShyZXZp
c2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vi
c2l0ZURhdGFTdG9yZUNvY29hLm1tCShub25leGlzdGVudCkKQEAgLTEsMTk3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0
ZURhdGFTdG9yZS5oIgotCi0jaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgotI2luY2x1ZGUg
IlNhbmRib3hVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
LSNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0jZW5kaWYKLQot
bmFtZXNwYWNlIEFQSSB7Ci0KLU5TU3RyaW5nICpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRz
S2V5ID0gQCJXZWJEYXRhYmFzZURpcmVjdG9yeSI7Ci1OU1N0cmluZyAqV2ViU3RvcmFnZURpcmVj
dG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJl
bmNlS2V5IjsKLU5TU3RyaW5nICpXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5RGVmYXVsdHNLZXkg
PSBAIldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnkiOwotTlNTdHJpbmcgKldlYktpdE1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSI7Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIC8v
IFRoaXMgcXVpcmsgdXNlZCB0byBtYWtlIHRoZXNlIGFwcHMgc2hhcmUgYXBwbGljYXRpb24gY2Fj
aGUgc3RvcmFnZSwgYnV0IGRvZXNuJ3QgYWNjb21wbGlzaCB0aGF0IGFueSBtb3JlLgotICAgIC8v
IFByZXNlcnZpbmcgaXQgYXZvaWRzIHRoZSBuZWVkIHRvIG1pZ3JhdGUgZGF0YSB3aGVuIHVwZ3Jh
ZGluZy4KLSAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSBzaG91bGQganVzdCBoYXZlIFNhZmFyaSwg
V2ViQXBwLCBhbmQgd2ViYm9va21hcmtzZCBjcmVhdGUgYSBkYXRhIHN0b3JlIHdpdGgKLSAgICAv
LyB0aGlzIGFwcGxpY2F0aW9uIGNhY2hlIHBhdGgsIGJ1dCB0aGF0J3Mgbm90IHN1cHBvcnRlZCBh
cyBvZiByaWdodCBub3cuCi0gICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmls
ZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkFwcCgpIHx8IFdlYkNv
cmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkJvb2ttYXJrc0QoKSkgewotICAgICAgICBOU1N0cmlu
ZyAqY2FjaGVQYXRoID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJdOwotCi0gICAg
ICAgIHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY2FjaGVQ
YXRoLnN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0
dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkNhY2hlU3RvcmFnZSIpOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKLXsKLSAg
ICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtD
YWNoZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFD
YWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oIk1lZGlhQ2FjaGUiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4g
d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4ZWREQiIp
OwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJTZXJ2aWNlV29ya2VycyIpOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAg
ICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkxv
Y2FsU3RvcmFnZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUtleXMiKTsKLX0KLQotV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkK
LXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oIldlYlNRTCIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkphdmFTY3JpcHRDb3JlRGVidWciLCBEb250Q3JlYXRl
RGlyZWN0b3J5KTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5
TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHNob3VsZENyZWF0ZURpcmVjdG9yeSkKLXsKLSAg
ICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKnRl
bXBVUkw7Ci0gICAgCi0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBO
U1VSTCAqdXJsID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpOU1RlbXBvcmFyeURpcmVjdG9yeSgp
IGlzRGlyZWN0b3J5OllFU107Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgCi0gICAgICAgIGlmICghV2ViS2l0Ojpw
cm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVu
dGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgICAg
ICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRp
ZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKLSAgICAgICAg
ICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZp
ZXIgaXNEaXJlY3Rvcnk6WUVTXTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcFVS
TCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rv
cnk6WUVTXSByZXRhaW5dOwotICAgIH0pOwotICAgIAotICAgIE5TVVJMICp1cmwgPSBbdGVtcFVS
TCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZ
RVNdOwotCi0gICAgaWYgKHNob3VsZENyZWF0ZURpcmVjdG9yeSA9PSBDcmVhdGVEaXJlY3RvcnkK
LSAgICAgICAgJiYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVj
dG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6
bmlsIGVycm9yOm51bGxwdHJdKSkKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRl
IGRpcmVjdG9yeSAlQCIsIHVybCk7Ci0gICAgCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5w
YXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RG
OjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBv
bmNlVG9rZW47Ci0gICAgc3RhdGljIE5TVVJMICpjYWNoZVVSTDsKLQotICAgIGRpc3BhdGNoX29u
Y2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TQ2FjaGVzRGlyZWN0b3J5IGluRG9tYWlu
Ok5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJy
b3I6bnVsbHB0cl07Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLQotICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRh
aW5lcigpKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1
bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYgKCFidW5k
bGVJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9j
ZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICB1cmwgPSBbdXJs
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5
OllFU107Ci0gICAgICAgIH0KLQotICAgICAgICBjYWNoZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOwotICAg
IH0pOwotCi0gICAgTlNVUkwgKnVybCA9IFtjYWNoZVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOwotICAgIGlmICghW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVy
bWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKLSAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7Ci0K
LSAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
OwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFt
ZSkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMg
TlNVUkwgKndlYnNpdGVEYXRhVVJMOwotCi0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBe
ewotICAgICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBV
UkxGb3JEaXJlY3Rvcnk6TlNMaWJyYXJ5RGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1h
c2sgYXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07Ci0g
ICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLQotICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldl
YktpdCIgaXNEaXJlY3Rvcnk6WUVTXTsKLQotICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hh
c0NvbnRhaW5lcigpKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9
IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOwotICAgICAgICAgICAgaWYg
KCFidW5kbGVJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBb
TlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICB1cmwg
PSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGly
ZWN0b3J5OllFU107Ci0gICAgICAgIH0KLQotICAgICAgICB3ZWJzaXRlRGF0YVVSTCA9IFtbdXJs
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0RpcmVjdG9yeTpZ
RVNdIHJldGFpbl07Ci0gICAgfSk7Ci0KLSAgICBOU1VSTCAqdXJsID0gW3dlYnNpdGVEYXRhVVJM
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllF
U107Ci0gICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVj
dG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6
bmlsIGVycm9yOm51bGxwdHJdKQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUg
ZGlyZWN0b3J5ICVAIiwgdXJsKTsKLQotICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5m
aWxlU3lzdGVtUmVwcmVzZW50YXRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlLm1tCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUs
MTcgKzEwNSwxNyBAQCBwcml2YXRlOgogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilkZWZhdWx0
RGF0YVN0b3JlCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlKCkpOworICAgIHJldHVybiB3cmFwcGVyKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpKTsKIH0KIAogKyAoV0tXZWJzaXRlRGF0YVN0b3Jl
ICopbm9uUGVyc2lzdGVudERhdGFTdG9yZQogewotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpKTsKKyAgICByZXR1
cm4gd3JhcHBlcihXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQo
KSk7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5BUEk6
OldlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgX3dlYnNpdGVEYXRh
U3RvcmUtPldlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKTsKIAog
ICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCArIChOU1NldCAqKWFs
bFdlYnNpdGVEYXRhVHlwZXMKIAogLSAoV0tIVFRQQ29va2llU3RvcmUgKilodHRwQ29va2llU3Rv
cmUKIHsKLSAgICByZXR1cm4gd3JhcHBlcihfd2Vic2l0ZURhdGFTdG9yZS0+aHR0cENvb2tpZVN0
b3JlKCkpOworICAgIHJldHVybiB3cmFwcGVyKF93ZWJzaXRlRGF0YVN0b3JlLT5jb29raWVTdG9y
ZSgpKTsKIH0KIAogc3RhdGljIFdhbGxUaW1lIHRvU3lzdGVtQ2xvY2tUaW1lKE5TRGF0ZSAqZGF0
ZSkKQEAgLTE4Niw3ICsxODYsNyBAQCAtICh2b2lkKWZldGNoRGF0YVJlY29yZHNPZlR5cGVzOihO
U1NldCAqCiAtICh2b2lkKXJlbW92ZURhdGFPZlR5cGVzOihOU1NldCAqKWRhdGFUeXBlcyBtb2Rp
ZmllZFNpbmNlOihOU0RhdGUgKilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lk
KSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMo
ZGF0YVR5cGVzKSwgdG9TeXN0ZW1DbG9ja1RpbWUoZGF0ZSA/IGRhdGUgOiBbTlNEYXRlIGRpc3Rh
bnRQYXN0XSksIFtjb21wbGV0aW9uSGFuZGxlckNvcHldIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9y
ZS0+cmVtb3ZlRGF0YShXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCB0b1N5
c3RlbUNsb2NrVGltZShkYXRlID8gZGF0ZSA6IFtOU0RhdGUgZGlzdGFudFBhc3RdKSwgW2NvbXBs
ZXRpb25IYW5kbGVyQ29weV0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkoKTsKICAg
ICB9KTsKIH0KQEAgLTIwNSw3ICsyMDUsNyBAQCAtICh2b2lkKXJlbW92ZURhdGFPZlR5cGVzOihO
U1NldCAqKWRhdGFUCiB7CiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpOwogCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFU
eXBlcyksIHRvV2Vic2l0ZURhdGFSZWNvcmRzKGRhdGFSZWNvcmRzKSwgW2NvbXBsZXRpb25IYW5k
bGVyQ29weV0geworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5yZW1vdmVEYXRhKFdlYktpdDo6dG9X
ZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIHRvV2Vic2l0ZURhdGFSZWNvcmRzKGRhdGFSZWNv
cmRzKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
ckNvcHkoKTsKICAgICB9KTsKIH0KQEAgLTI0MCwxMiArMjQwLDEyIEBAICsgKE5TU2V0PE5TU3Ry
aW5nICo+ICopX2FsbFdlYnNpdGVEYXRhVHkKIAogKyAoQk9PTClfZGVmYXVsdERhdGFTdG9yZUV4
aXN0cwogewotICAgIHJldHVybiBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3Rv
cmVFeGlzdHMoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGF0YVN0b3JlRXhpc3RzKCk7CiB9CiAKICsgKHZvaWQpX2RlbGV0ZURlZmF1bHREYXRhU3RvcmVG
b3JUZXN0aW5nCiB7Ci0gICAgcmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVsZXRlRGVm
YXVsdERhdGFTdG9yZUZvclRlc3RpbmcoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwogfQogCiAtIChpbnN0
YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gKiljb25maWd1cmF0aW9uCkBAIC0yNTMsNyArMjUzLDcgQEAgLSAoaW5zdGFuY2V0
eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRpb246KAogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0byBjb25maWcgPSBjb25maWd1cmF0
aW9uLmlzUGVyc2lzdGVudCA/IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24oKSA6IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246
OmNyZWF0ZSgpOworICAgIGF1dG8gY29uZmlnID0gY29uZmlndXJhdGlvbi5pc1BlcnNpc3RlbnQg
PyBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9u
KCkgOiBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKIAog
ICAgIFJFTEVBU0VfQVNTRVJUKGNvbmZpZy0+aXNQZXJzaXN0ZW50KCkgPT0gY29uZmlndXJhdGlv
bi5pc1BlcnNpc3RlbnQpOwogCkBAIC0zMTIsNyArMzEyLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9p
bml0V2l0aENvbmZpZ3VyYXRpb246KAogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBjb25maWd1cmF0
aW9uLmlzUGVyc2lzdGVudCA/IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZVBlcnNpc3RlbnRTZXNz
aW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25JRCgpOwog
Ci0gICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OldlYnNpdGVEYXRhU3Rv
cmU+KHNlbGYsIFdURk1vdmUoY29uZmlnKSwgc2Vzc2lvbklEKTsKKyAgICBBUEk6Ok9iamVjdDo6
Y29uc3RydWN0SW5XcmFwcGVyPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4oc2VsZiwgV1RGTW92
ZShjb25maWcpLCBzZXNzaW9uSUQpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0zMjUsNyAr
MzI1LDcgQEAgLSAodm9pZClfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0PAogICAgIGlm
IChvcHRpb25zICYgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9uQ29tcHV0ZVNpemVzKQog
ICAgICAgICBmZXRjaE9wdGlvbnMuYWRkKFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6
Q29tcHV0ZVNpemVzKTsKIAotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuZmV0Y2hEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIGZldGNo
T3B0aW9ucywgW2NvbXBsZXRpb25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXJDb3B5KV0oYXV0byB3ZWJzaXRlRGF0YVJlY29yZHMpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9y
ZS0+ZmV0Y2hEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIGZldGNo
T3B0aW9ucywgW2NvbXBsZXRpb25IYW5kbGVyQ29weSA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXJDb3B5KV0oYXV0byB3ZWJzaXRlRGF0YVJlY29yZHMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0
cjxBUEk6Ok9iamVjdD4+IGVsZW1lbnRzOwogICAgICAgICBlbGVtZW50cy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHdlYnNpdGVEYXRhUmVjb3Jkcy5zaXplKCkpOwogCkBAIC0zMzgsMTggKzMzOCwx
OCBAQCAtICh2b2lkKV9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczooTlNTZXQ8CiAKIC0gKEJPT0wp
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0
YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQo
KTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKCk7CiB9CiAKIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
OihCT09MKWVuYWJsZWQKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOworICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsK
IH0KIAogLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZQogewogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgp
OworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rl
YnVnTW9kZSgpOwogI2Vsc2UKICAgICByZXR1cm4gTk87CiAjZW5kaWYKQEAgLTM1OCw3ICszNTgs
NyBAQCAtIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlCiAtICh2b2lkKV9z
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOihCT09MKWVuYWJsZWQKIHsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFi
bGVkKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rl
YnVnTW9kZShlbmFibGVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2Vu
ZGlmCkBAIC0zNjYsMTA2ICszNjYsMTA2IEBAIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEZWJ1Z00KIAogLSAoTlNVSW50ZWdlcilfcGVyT3JpZ2luU3RvcmFnZVF1b3RhCiB7Ci0g
ICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGVyT3JpZ2lu
U3RvcmFnZVF1b3RhKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5wZXJPcmlnaW5T
dG9yYWdlUXVvdGEoKTsKIH0KIAogLSAodm9pZClfc2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhOihO
U1VJbnRlZ2VyKXNpemUKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldFBlck9yaWdpblN0b3JhZ2VRdW90YShzaXplKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9y
ZS0+c2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKHNpemUpOwogfQogCiAtIChOU1N0cmluZyAqKV9j
YWNoZVN0b3JhZ2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICByZXR1cm4gX3dl
YnNpdGVEYXRhU3RvcmUtPmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwogfQogCiAtICh2b2lkKV9z
ZXRDYWNoZVN0b3JhZ2VEaXJlY3Rvcnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CiB7Ci0gICAgX3dl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRDYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkoZGlyZWN0b3J5KTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2FjaGVTdG9yYWdlRGly
ZWN0b3J5KGRpcmVjdG9yeSk7CiB9CiAKIC0gKE5TU3RyaW5nICopX3NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAg
cmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KCk7CiB9CiAKIC0gKHZvaWQpX3NldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnk6KE5TU3RyaW5nICopZGlyZWN0b3J5CiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKS5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRpcmVj
dG9yeSk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoZGlyZWN0b3J5KTsKIH0KIAogLSAodm9pZClfc2V0Qm91bmRJbnRlcmZhY2VJ
ZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihpZGVudGlm
aWVyKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVy
KGlkZW50aWZpZXIpOwogfQogCiAtIChOU1N0cmluZyAqKV9ib3VuZEludGVyZmFjZUlkZW50aWZp
ZXIKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5i
b3VuZEludGVyZmFjZUlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUt
PmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcigpOwogfQogCiAtICh2b2lkKV9zZXRBbGxvd3NDZWxs
dWxhckFjY2VzczooQk9PTClhbGxvd3MKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNldEFsbG93c0NlbGx1bGFyQWNjZXNzKGFsbG93cyA/IFdlYktpdDo6QWxs
b3dzQ2VsbHVsYXJBY2Nlc3M6OlllcyA6IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6Ok5v
KTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0QWxsb3dzQ2VsbHVsYXJBY2Nlc3MoYWxsb3dz
ID8gV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzIDogV2ViS2l0OjpBbGxvd3NDZWxs
dWxhckFjY2Vzczo6Tm8pOwogfQogCiAtIChCT09MKV9hbGxvd3NDZWxsdWxhckFjY2Vzcwogewot
ICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmFsbG93c0Nl
bGx1bGFyQWNjZXNzKCkgPT0gV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzOworICAg
IHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+YWxsb3dzQ2VsbHVsYXJBY2Nlc3MoKSA9PSBXZWJL
aXQ6OkFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXM7CiB9CiAKIC0gKHZvaWQpX3NldFByb3h5Q29u
ZmlndXJhdGlvbjooTlNEaWN0aW9uYXJ5ICopY29uZmlndXJhdGlvbgogewotICAgIF93ZWJzaXRl
RGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UHJveHlDb25maWd1cmF0aW9uKChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpY29uZmlndXJhdGlvbik7CisgICAgX3dlYnNpdGVEYXRhU3Rv
cmUtPnNldFByb3h5Q29uZmlndXJhdGlvbigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNvbmZp
Z3VyYXRpb24pOwogfQogCiAtIChOU1N0cmluZyAqKV9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3Rv
cmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dl
YnNpdGVEYXRhU3RvcmUtPnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOwogfQog
CiAtICh2b2lkKV9zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI6KE5TU3RyaW5n
ICopaWRlbnRpZmllcgogewotICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoaWRlbnRpZmllcikp
CisgICAgaWYgKCFfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKGlkZW50aWZpZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5l
cmljRXhjZXB0aW9uIGZvcm1hdDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIgY2Fubm90IGJlIGNhbGxlZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJdOwogfQogCiAt
IChOU1N0cmluZyAqKV9zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIKIHsKLSAg
ICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBs
aWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3Rv
cmUtPnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpOwogfQogCiAtICh2b2lk
KV9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRl
bnRpZmllcgogewotICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRpZmllcikpCisg
ICAgaWYgKCFfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyKGlkZW50aWZpZXIpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5l
cmljRXhjZXB0aW9uIGZvcm1hdDpAIl9zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXIgY2Fubm90IGJlIGNhbGxlZCBhZnRlciBuZXR3b3JraW5nIGhhcyBiZWd1biJdOwogfQog
CiAtICh2b2lkKV9zZXRBbGxvd3NUTFNGYWxsYmFjazooQk9PTClhbGxvd3MKIHsKLSAgICBpZiAo
IV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0QWxsb3dzVExTRmFsbGJh
Y2soYWxsb3dzKSkKKyAgICBpZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRBbGxvd3NUTFNGYWxs
YmFjayhhbGxvd3MpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNHZW5lcmljRXhjZXB0
aW9uIGZvcm1hdDpAIl9zZXRBbGxvd3NUTFNGYWxsYmFjayBjYW5ub3QgYmUgY2FsbGVkIGFmdGVy
IG5ldHdvcmtpbmcgaGFzIGJlZ3VuIl07CiB9CiAKIC0gKEJPT0wpX2FsbG93c1RMU0ZhbGxiYWNr
CiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxs
b3dzVExTRmFsbGJhY2soKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmFsbG93c1RM
U0ZhbGxiYWNrKCk7CiB9CiAKIC0gKE5TRGljdGlvbmFyeSAqKV9wcm94eUNvbmZpZ3VyYXRpb24K
IHsKLSAgICByZXR1cm4gKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKV93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkucHJveHlDb25maWd1cmF0aW9uKCk7CisgICAgcmV0dXJuIChf
X2JyaWRnZSBOU0RpY3Rpb25hcnkgKilfd2Vic2l0ZURhdGFTdG9yZS0+cHJveHlDb25maWd1cmF0
aW9uKCk7CiB9CiAKIC0gKE5TVVJMICopX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5CiB7Ci0g
ICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X3dlYnNpdGVEYXRhU3RvcmUtPmluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICByZXR1cm4gW05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpfd2Vic2l0ZURhdGFTdG9yZS0+Y29uZmlndXJhdGlvbigpLmlu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIAogLSAodm9p
ZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFN1Ym1pdFRlbGVtZXRyeTooQk9PTCl2
YWx1ZQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgYXV0byog
c3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKTsKKyAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCk7CiAgICAgaWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC00ODAsMTMgKzQ4MCwxMyBAQCAtICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VGVzdGluCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjYWxsYmFjaykgewotICAgICAgICBf
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN0YXRpc3RpY3NUZXN0aW5n
Q2FsbGJhY2soW2NhbGxiYWNrID0gbWFrZUJsb2NrUHRyKGNhbGxiYWNrKSwgc2VsZl0oY29uc3Qg
U3RyaW5nJiBldmVudCkgeworICAgICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0U3RhdGlzdGlj
c1Rlc3RpbmdDYWxsYmFjayhbY2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoY2FsbGJhY2spLCBzZWxm
XShjb25zdCBTdHJpbmcmIGV2ZW50KSB7CiAgICAgICAgICAgICBjYWxsYmFjayhzZWxmLCBldmVu
dCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3dlYnNpdGVE
YXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNr
KG51bGxwdHIpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRTdGF0aXN0aWNzVGVzdGluZ0Nh
bGxiYWNrKG51bGxwdHIpOwogI2VuZGlmCiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCAtICh2b2lk
KV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooCiAgICAgfQogCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHdlYlBhZ2VQcm94eS0+aWRlbnRp
ZmllcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXShhdXRvIGRvbWFpbnMpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+Z2V0QWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXMod2ViUGFnZVByb3h5LT5pZGVudGlmaWVyKCksIFtjb21wbGV0aW9uSGFu
ZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZG9tYWlucykgewog
ICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gYXBpRG9tYWluczsKICAgICAgICAg
YXBpRG9tYWlucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRvbWFpbnMuc2l6ZSgpKTsKICAgICAg
ICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKQpAQCAtNTI0LDcgKzUyNCw3IEBAIC0gKHZv
aWQpX2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOigKIC0gKHZvaWQpX3NjaGVkdWxlQ29v
a2llQmxvY2tpbmdVcGRhdGU6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAg
X3dlYnNpdGVEYXRhU3RvcmUtPnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbXBsZXRp
b25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTM1LDcgKzUzNSw3IEBA
IC0gKHZvaWQpX3NjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGU6KHYKIC0gKHZvaWQpX3NldFBy
ZXZhbGVudERvbWFpbjooTlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFBy
ZXZhbGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0
UHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogICAgIH0pOwogI2Vsc2UKQEAgLTU0Niw3ICs1NDYsNyBAQCAtICh2b2lkKV9zZXRQcmV2
YWxlbnREb21haW46KE5TVVJMICopZG9tCiAtICh2b2lkKV9nZXRJc1ByZXZhbGVudERvbWFpbjoo
TlNVUkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBf
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmlzUHJldmFsZW50UmVzb3VyY2Uo
VVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildKGJvb2wgZW5hYmxlZCkgeworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5pc1ByZXZh
bGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGVuYWJsZWQpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZW5hYmxlZCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTU3LDcgKzU1Nyw3IEBAIC0g
KHZvaWQpX2dldElzUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWQKIC0gKHZvaWQpX2NsZWFyUHJl
dmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuY2xlYXJQ
cmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmNs
ZWFyUHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgIH0pOwogI2Vsc2UKQEAgLTU2OCw3ICs1NjgsNyBAQCAtICh2b2lkKV9jbGVh
clByZXZhbGVudERvbWFpbjooTlNVUkwgKilkCiAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGljc0Fu
ZERhdGFSZWNvcmRzOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3Np
bmcoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNv
cmRzUHJvY2Vzc2luZyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXSgpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKICNl
bHNlCkBAIC01NzgsMTggKzU3OCwxOCBAQCAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGljc0FuZERh
dGFSZWNvcmRzCiAKIC0gKGJvb2wpX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyCiB7Ci0gICAg
cmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoV2ViQ29yZTo6c2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGFiYXNlRmlsZW5hbWUoX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3Rv
cmUoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhXZWJDb3JlOjpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YWJhc2VGaWxlbmFtZShfd2Vic2l0ZURhdGFTdG9yZS0+c2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSgpKSk7CiB9CiAKIC0gKGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdh
dGU+KV9kZWxlZ2F0ZQogewotICAgIHJldHVybiBfZGVsZWdhdGUuZ2V0KCk7CisgICAgcmV0dXJu
IF9kZWxlZ2F0ZS5nZXQoKS5nZXQoKTsKIH0KIAogLSAodm9pZClzZXRfZGVsZWdhdGU6KGlkIDxf
V0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAgX2RlbGVnYXRlID0g
ZGVsZWdhdGU7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRD
bGllbnQobWFrZVVuaXF1ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PihkZWxlZ2F0ZSkpOwor
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRDbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJzaXRlRGF0
YVN0b3JlQ2xpZW50PihkZWxlZ2F0ZSkpOwogfQogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlSW50ZXJuYWwuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDEyICsyNSwxMyBAQAogCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRl
LmgiCiAKLSNpbXBvcnQgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQgIldLT2JqZWN0
LmgiCisjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW1wb3J0IDx3dGYvV2Vha09iakNQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJU
cmFpdHM8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVy
VHJhaXRzPFdlYnNpdGVEYXRhU3RvcmU+IHsKICAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBXS1dl
YnNpdGVEYXRhU3RvcmU7CiB9OwogCkBAIC0zOCw3ICszOSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0
IFdyYXBwZXJUcmFpdHM8QVBJOjpXZWIKIAogQGludGVyZmFjZSBXS1dlYnNpdGVEYXRhU3RvcmUg
KCkgPFdLT2JqZWN0PiB7CiBAcGFja2FnZQotICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6Oldl
YnNpdGVEYXRhU3RvcmU+IF93ZWJzaXRlRGF0YVN0b3JlOwotICAgIFJldGFpblB0cjxpZCA8X1dL
V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsKKyAgICBBUEk6Ok9iamVjdFN0
b3JhZ2U8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBfd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBX
ZWFrT2JqQ1B0cjxpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsK
IH0KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNp
dGVEYXRhU3RvcmVHTGliLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDI0OTczMikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVH
TGliLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTcgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgPHd0Zi9GaWxl
U3lzdGVtLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgotCi0jaWYgUExBVEZP
Uk0oR1RLKQotI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid2Via2l0Z3RrIgotI2VsaWYgUExBVEZP
Uk0oV1BFKQotI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid3BlIgotI2VuZGlmCi0KLW5hbWVzcGFj
ZSBBUEkgewotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJhcHBsaWNh
dGlvbnMiKTsKLX0KLQotLy8gRklYTUU6IFRoZSBvdGhlciBkaXJlY3RvcmllcyBpbiB0aGlzIGZp
bGUgYXJlIHNoYXJlZCBiZXR3ZWVuIGFsbCBhcHBsaWNhdGlvbnMgdXNpbmcgV2ViS2l0R1RLLgot
Ly8gV2h5IGlzIG9ubHkgdGhpcyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRpY3VsYXIg
YXBwbGljYXRpb24/Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29y
a0NhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgp
KSwgIldlYktpdENhY2hlIikpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19n
ZXRfcHJnbmFtZSgpKSwgIkNhY2hlU3RvcmFnZSIpKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICBy
ZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9E
SVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIgR19ESVJfU0VQQVJBVE9SX1Mg
ImluZGV4ZWRkYiIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdf
RElSX1NFUEFSQVRPUl9TICJzZXJ2aWNld29ya2VycyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1
cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJF
Q1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImxvY2Fsc3RvcmFnZSIpOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17
Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJtZWRpYWtleXMiKTsKLX0KLQotU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJl
Y3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGV2aWNlaWRoYXNo
c2FsdHMiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1Mg
ImRhdGFiYXNlcyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
SFNUU0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TKTsKLX0K
LQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmlu
ZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwotfQotCi1XVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGly
ZWN0b3J5TmFtZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5j
cHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBA
IHN0cnVjdCBfV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGUgewogICAgIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoZGF0YU1hbmFnZXIpOwot
ICAgICAgICByZXR1cm4gd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKGRhdGFN
YW5hZ2VyKS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCk7CisgICAgICAgIHJldHVybiB3
ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoZGF0YU1hbmFnZXIpLnNlc3Npb25J
RCgpOwogICAgIH0KIAogICAgIH5fV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGUoKQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsMTggKzMx
MSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRTZXRQcm9wZXJ0eSgKICAgICB9CiB9
CiAKLXN0YXRpYyBpbmxpbmUgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiB3ZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbihj
b25zdCBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgcHJvY2Vzc1Bvb2xjb25maWd1cmFy
aW9uKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uOjpjcmVhdGUoKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KFN0cmluZyhwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24uYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0
b3J5KFN0cmluZyhwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24uZGlza0NhY2hlRGlyZWN0b3J5KCkp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShTdHJpbmco
cHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpKTsKLSAg
ICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nKHByb2Nlc3NQ
b29sY29uZmlndXJhcmlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3Vy
YXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShTdHJpbmcocHJvY2Vz
c1Bvb2xjb25maWd1cmFyaW9uLmRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpKSk7
Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShTdHJpbmco
cHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkpOwot
ICAgIHJldHVybiBjb25maWd1cmF0aW9uOwotfQotCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250
ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogewogICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF93ZWJfY29udGV4dF9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZChvYmplY3QpOwpAQCAt
MzM1LDI0ICszMjMsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQo
CiAKICAgICBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0ID0gV0VCS0lUX1dFQl9DT05URVhU
KG9iamVjdCk7CiAgICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSB3ZWJDb250ZXh0
LT5wcml2OwotICAgIGlmIChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIgJiYgIXdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9pc19lcGhlbWVyYWwocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdl
dCgpKSkgewotICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0
ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldERpc2tDYWNo
ZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdl
ci5nZXQoKSkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKLSAgICAgICAgY29uZmlndXJh
dGlvbi5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9v
ZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFn
ZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkocHJpdi0+
d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEhT
VFNTdG9yYWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2NhY2hlX2RpcmVj
dG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci1BTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICBjb25maWd1cmF0aW9uLnNldFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KHByaXYt
PndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAotICAgIH0gZWxzZSBpZiAoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc051
bGwoKSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoRmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0
b3JhZ2VEaXJlY3RvcnkuZGF0YSgpKSk7CiAKICAgICBwcml2LT5wcm9jZXNzUG9vbCA9IFdlYlBy
b2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlvbik7CiAKLSAgICBpZiAoIXByaXYtPndlYnNp
dGVEYXRhTWFuYWdlcikKLSAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyID0gYWRvcHRH
UmVmKHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZSh3ZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSkpOwot
ICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRQcmltYXJ5RGF0YVN0b3JlKHdlYmtpdFdlYnNpdGVE
YXRhTWFuYWdlckdldERhdGFTdG9yZShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKTsK
LQogICAgIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFByb2Nlc3NQb29sKHByaXYtPndlYnNp
dGVEYXRhTWFuYWdlci5nZXQoKSwgKnByaXYtPnByb2Nlc3NQb29sKTsKIAogICAgIHByaXYtPnRs
c0Vycm9yc1BvbGljeSA9IFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMOwpAQCAtNzc3LDcg
Kzc1MCw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2NsZWFyX2NhY2hlKFdlYksKICAgICBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzOwogICAgIHdlYnNpdGVE
YXRhVHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUpOwogICAgIHdlYnNpdGVE
YXRhVHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKTsKLSAgICBhdXRvJiB3ZWJz
aXRlRGF0YVN0b3JlID0gd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKGNvbnRl
eHQtPnByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkud2Vic2l0ZURhdGFTdG9yZSgpOwor
ICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRE
YXRhU3RvcmUoY29udGV4dC0+cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKTsKICAgICB3
ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEod2Vic2l0ZURhdGFUeXBlcywgLVdhbGxUaW1lOjpp
bmZpbml0eSgpLCBbXSB7IH0pOwogfQogCkBAIC0xNDc0LDEyICsxNDQ3LDggQEAgdm9pZCB3ZWJr
aXRfd2ViX2NvbnRleHRfc2V0X3dlYl9leHRlbnNpbwogICoKICAqIERlcHJlY2F0ZWQ6IDIuMTAu
IFVzZSB3ZWJraXRfd2ViX2NvbnRleHRfbmV3X3dpdGhfd2Vic2l0ZV9kYXRhX21hbmFnZXIoKSBp
bnN0ZWFkLgogICovCi12b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNoZV9kaXJl
Y3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogZGlyZWN0b3J5KQor
dm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KFdlYktpdFdl
YkNvbnRleHQqLCBjb25zdCBjaGFyKikKIHsKLSAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfQ09OVEVYVChjb250ZXh0KSk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChkaXJlY3Rvcnkp
OwotCi0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5zZXRE
aXNrQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSwg
bmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMCwxMiArMjAsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUu
aCIKICNpbmNsdWRlICJXZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
YktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbi5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgpAQCAtOTUsNyArOTUsNyBAQCBzdHJ1Y3QgX1dlYktp
dFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUgCiAgICAgICAgIEFTU0VSVChwcm9jZXNzUG9vbHMu
aXNFbXB0eSgpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiB3
ZWJzaXRlRGF0YVN0b3JlOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IHdl
YnNpdGVEYXRhU3RvcmU7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBiYXNlRGF0YURpcmVjdG9yeTsK
ICAgICBHVW5pcXVlUHRyPGNoYXI+IGJhc2VDYWNoZURpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRy
PGNoYXI+IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKQEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJTZXRQCiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgUFJPUF9JU19FUEhFTUVSQUw6CiAgICAgICAgIGlmIChnX3ZhbHVlX2dldF9ib29sZWFuKHZh
bHVlKSkKLSAgICAgICAgICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKKyAgICAg
ICAgICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwg
cHJvcElELCBwYXJhbVNwZWMpOwpAQCAtMzg0LDI4ICszODQsMjggQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyXwogV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJr
aXRXZWJzaXRlRGF0YU1hbmFnZXJDcmVhdGUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBt
YW5hZ2VyID0gV0VCS0lUX1dFQlNJVEVfREFUQV9NQU5BR0VSKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJTSVRFX0RBVEFfTUFOQUdFUiwgbnVsbHB0cikpOwotICAgIG1hbmFnZXItPnByaXYt
PndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAg
ICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSk7CiAKICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIAotQVBJOjpXZWJzaXRl
RGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyKQorV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJr
aXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
KiBtYW5hZ2VyKQogewogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUqIHByaXYg
PSBtYW5hZ2VyLT5wcml2OwogICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSkgewogICAg
ICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
Y3JlYXRlKCk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVjdG9y
eSghcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpKTsK
ICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCFwcml2LT5k
aXNrQ2FjaGVEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3Rv
cnkpKTsKKyAgICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+ZGlz
a0NhY2hlRGlyZWN0b3J5LmdldCgpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CiAgICAg
ICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoIXByaXYtPmFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5LmdldCgpKSk7CisgICAgICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnku
Z2V0KCkpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoIXByaXYtPndlYlNRTERpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0
KCkpKTsKKyAgICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25m
aWd1cmF0aW9uLT5zZXRIU1RTU3RvcmFnZURpcmVjdG9yeSghcHJpdi0+aHN0c0NhY2hlRGlyZWN0
b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJl
Y3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5LmdldCgpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24t
PnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICAgICAgcHJpdi0+d2Vic2l0ZURh
dGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJh
dGlvbiksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgICAgICAgICAg
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpIDogRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5oc3RzQ2FjaGVE
aXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KCkpOworICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuICpw
cml2LT53ZWJzaXRlRGF0YVN0b3JlOwpAQCAtNTQyLDcgKzU0Miw3IEBAIGNvbnN0IGdjaGFyKiB3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBpZiAoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgcHJpdi0+bG9jYWxT
dG9yYWdlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJp
di0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsK
ICAgICByZXR1cm4gcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpOwogfQogCkBAIC01
NjYsNyArNTY2LDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgog
CiAgICAgaWYgKCFwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkpIHsKICAgICAgICAgLy8gVGhlIGRl
ZmF1bHQgZGlyZWN0b3J5IGFscmVhZHkgaGFzIHRoZSBzdWJkaXJlY3RvcnkuCi0gICAgICAgIHBy
aXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChGaWxlU3lzdGVtOjpkaXJlY3Rv
cnlOYW1lKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5y
ZXNldChnX3N0cmR1cChGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7
CiAgICAgfQogICAgIHJldHVybiBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CkBA
IC01OTAsNyArNTkwLDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghcHJpdi0+YXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSkKLSAgICAgICAgcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5y
ZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAg
cmV0dXJuIHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CiAKQEAgLTYx
Myw3ICs2MTMsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFwcml2LT5pbmRleGVkREJEaXJlY3Rv
cnkpCi0gICAgICAgIHByaXYtPmluZGV4ZWREQkRpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpLnV0
ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+aW5kZXhlZERCRGlyZWN0b3J5LnJlc2V0KGdf
c3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOwogICAgIHJldHVybiBwcml2LT5pbmRleGVkREJE
aXJlY3RvcnkuZ2V0KCk7CiB9CiAKQEAgLTYzOCw3ICs2MzgsNyBAQCBjb25zdCBnY2hhciogd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
aWYgKCFwcml2LT53ZWJTUUxEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPndlYlNRTERpcmVjdG9y
eS5yZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+d2ViU1FMRGly
ZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOwogICAgIHJldHVybiBwcml2
LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCk7CiB9CiAKQEAgLTY2MSw3ICs2NjEsNyBAQCBjb25zdCBn
Y2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgaWYgKCFwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPmhz
dHNDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRIU1RTRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5oc3Rz
Q2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0SFNUU0RpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1cm4gcHJpdi0+
aHN0c0NhY2hlRGlyZWN0b3J5LmdldCgpOwogfQogCkBAIC03MzUsNyArNzM1LDcgQEAgdm9pZCB3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2goVwogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpKTsKIAogICAgIEdSZWZQdHI8
R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyhtYW5hZ2VyLCBjYW5jZWxsYWJsZSwg
Y2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0gICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmZldGNoRGF0YSh0b1dlYnNpdGVEYXRhVHlwZXModHlwZXMp
LCBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMsIFt0YXNrID0gV1RGTW92ZSh0
YXNrKV0gKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gcmVjb3JkcykgeworICAgIG1hbmFnZXIt
PnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPmZldGNoRGF0YSh0b1dlYnNpdGVEYXRhVHlwZXModHlw
ZXMpLCBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMsIFt0YXNrID0gV1RGTW92
ZSh0YXNrKV0gKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gcmVjb3JkcykgewogICAgICAgICBH
TGlzdCogZGF0YUxpc3QgPSBudWxscHRyOwogICAgICAgICB3aGlsZSAoIXJlY29yZHMuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogZGF0YSA9IHdlYmtpdFdlYnNpdGVEYXRhQ3Jl
YXRlKHJlY29yZHMudGFrZUxhc3QoKSkpCkBAIC04MDksNyArODA5LDcgQEAgdm9pZCB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfcmVtb3ZlKAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJl
bW92ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKHR5cGVzKSwgcmVjb3JkcywgW3Rhc2sgPSBXVEZN
b3ZlKHRhc2spXSB7CisgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+cmVtb3Zl
RGF0YSh0b1dlYnNpdGVEYXRhVHlwZXModHlwZXMpLCByZWNvcmRzLCBbdGFzayA9IFdURk1vdmUo
dGFzayldIHsKICAgICAgICAgZ190YXNrX3JldHVybl9ib29sZWFuKHRhc2suZ2V0KCksIFRSVUUp
OwogICAgIH0pOwogfQpAQCAtODYxLDcgKzg2MSw3IEBAIHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2NsZWFyKFcKIAogICAgIFdhbGxUaW1lIHRpbWVQb2ludCA9IHRpbWVTcGFuID8g
V2FsbFRpbWU6Om5vdygpIC0gU2Vjb25kczo6ZnJvbU1pY3Jvc2Vjb25kcyh0aW1lU3BhbikgOiBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCk7CiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFk
b3B0R1JlZihnX3Rhc2tfbmV3KG1hbmFnZXIsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRh
dGEpKTsKLSAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkucmVtb3ZlRGF0YSh0b1dlYnNpdGVEYXRhVHlwZXModHlwZXMpLCB0aW1lUG9pbnQsIFt0
YXNrID0gV1RGTW92ZSh0YXNrKV0geworICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3Rv
cmUtPnJlbW92ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKHR5cGVzKSwgdGltZVBvaW50LCBbdGFz
ayA9IFdURk1vdmUodGFzayldIHsKICAgICAgICAgZ190YXNrX3JldHVybl9ib29sZWFuKHRhc2su
Z2V0KCksIFRSVUUpOwogICAgIH0pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdl
clByaXZhdGUuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xOSwxMiArMTksMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBUElXZWJz
aXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YVN0b3JlLmgiCiAKIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogd2Via2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiYmKTsKLUFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5h
Z2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciopOworV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyKik7CiB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFBy
b2Nlc3NQb29sKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciosIFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2wmKTsKIHZvaWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyUmVtb3ZlUHJvY2Vzc1Bvb2woV2Vi
S2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiwgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpOwogY29uc3Qg
VmVjdG9yPFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqPiYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
R2V0UHJvY2Vzc1Bvb2xzKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciopOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzU4LDcgKzEzNTgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVD
b29rCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SX0FORF9ERVRBSUxT
KE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdodHRwT25seScgd2FzIG5vdCBmb3Vu
ZC4iKTsKIAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSogY29va2llTWFuYWdlciA9IG1fcHJv
Y2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotICAgIGNvb2tp
ZU1hbmFnZXItPnNldENvb2tpZXMocGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgp
LCB7IGNvb2tpZSB9LCBbY2FsbGJhY2sgPSBjYWxsYmFjay5jb3B5UmVmKCldKENhbGxiYWNrQmFz
ZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBjb29raWVNYW5hZ2VyLT5zZXRDb29raWVzKHBhZ2UtPnNl
c3Npb25JRCgpLCB7IGNvb2tpZSB9LCBbY2FsbGJhY2sgPSBjYWxsYmFjay5jb3B5UmVmKCldKENh
bGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yID09IENhbGxiYWNr
QmFzZTo6RXJyb3I6Ok5vbmUpCiAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsK
ICAgICAgICAgZWxzZQpAQCAtMTM3OCw3ICsxMzc4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6ZGVsZXRlQWxsQ29vawogICAgIFN0cmluZyBob3N0ID0gYWN0aXZlVVJMLmhvc3QoKS50
b1N0cmluZygpOwogCiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0g
bV9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAg
Y29va2llTWFuYWdlci0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhwYWdlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuc2Vzc2lvbklEKCksIHsgaG9zdCwgZG9tYWluQnlBZGRpbmdEb3RQcmVmaXhJZk5l
ZWRlZChob3N0KSB9KTsKKyAgICBjb29raWVNYW5hZ2VyLT5kZWxldGVDb29raWVzRm9ySG9zdG5h
bWVzKHBhZ2UtPnNlc3Npb25JRCgpLCB7IGhvc3QsIGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZO
ZWVkZWQoaG9zdCkgfSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldFNlc3Np
b25QZXJtaXNzaW9ucyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlNlc3Npb25QZXJtaXNzaW9uRGF0YT4+JiBvdXRfcGVy
bWlzc2lvbnMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDYgQEAKICNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJBUElTdHJp
bmcuaCIKICNpbXBvcnQgIkFQSVVSTC5oIgotI2ltcG9ydCAiQVBJV2Vic2l0ZURhdGFTdG9yZS5o
IgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2ltcG9y
dCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbkNvY29hLmgiCiAjaW1wb3J0ICJB
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKQEAgLTY0LDYgKzYzLDcgQEAKICNpbXBv
cnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0
ICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIKKyNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bXBvcnQgIl9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tF
cnJvclJlY292ZXJ5QXR0ZW1wdGluZy5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5h
bC5oIgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04Nyw3ICs4Nyw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNz
UHJveHkKICAgICBjb25uZWN0KCk7CiAKICAgICBpZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9
IG1fcHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFTdG9yZSgpKQotICAgICAgICBtX3dlYnNpdGVEYXRh
U3RvcmVzLnNldCh3ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklE
KCksIG1ha2VSZWYod2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpKSk7CisgICAg
ICAgIG1fd2Vic2l0ZURhdGFTdG9yZXMuc2V0KHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgp
LCBtYWtlUmVmKCp3ZWJzaXRlRGF0YVN0b3JlKSk7CiB9CiAKIE5ldHdvcmtQcm9jZXNzUHJveHk6
On5OZXR3b3JrUHJvY2Vzc1Byb3h5KCkKQEAgLTExMzQsMTQgKzExMzQsMTQgQEAgV2Vic2l0ZURh
dGFTdG9yZSogTmV0d29ya1Byb2Nlc3NQcm94eTo6dwogICAgICAgICByZXR1cm4gaXRlcmF0b3It
PnZhbHVlLmdldCgpOwogCiAgICAgaWYgKGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBtX3Byb2Nl
c3NQb29sLndlYnNpdGVEYXRhU3RvcmUoKSkgewotICAgICAgICBpZiAoc2Vzc2lvbklEID09IHdl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSkKLSAgICAgICAg
ICAgIHJldHVybiAmd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAg
ICBpZiAoc2Vzc2lvbklEID09IHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKQorICAgICAg
ICAgICAgcmV0dXJuIHdlYnNpdGVEYXRhU3RvcmU7CiAgICAgfQogCiAgICAgaWYgKHNlc3Npb25J
RCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiAmQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0
YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICByZXR1cm4gV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnJldHJpZXZlQ2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0
YVN0b3JlLmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgiCiAjaWYgRU5BQkxF
KExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eS5oIgpAQCAtMzYsNiArMzUsNyBAQAogI2luY2x1ZGUgIlByb2Nl
c3NUaHJvdHRsZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc1NpdGVOYXZpZ2F0
aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5o
PgogI2luY2x1ZGUgPG1lbW9yeT4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyNDk3
MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTUgKzI2LDE2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCisjaW5jbHVkZSAiQVBJSFRU
UENvb2tpZVN0b3JlLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFSZWNvcmQuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRl
RGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRl
ICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5oIgogI2luY2x1ZGUgIk1vY2tBdXRoZW50aWNhdG9y
TWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNz
U3RhdHVzLmgiCisjaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzTWVzc2FnZXMuaCIKQEAgLTEzOSw2ICsxNDAsNTcgQEAgV2Vic2l0ZURhdGFTdG9yZTo6
V2Vic2l0ZURhdGFTdG9yZShQQUw6OgogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9
CiAKK3N0YXRpYyBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mIGdsb2JhbERlZmF1bHREYXRhU3Rv
cmUoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4+IGdsb2JhbERlZmF1bHREYXRhU3RvcmU7CisgICAgcmV0dXJuIGdsb2JhbERlZmF1bHREYXRh
U3RvcmUuZ2V0KCk7Cit9CisKK1JlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGF0YVN0b3JlKCkKK3sKKyAgICBJbml0aWFsaXplV2ViS2l0MigpOworCisgICAg
YXV0byYgc3RvcmUgPSBnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCk7CisgICAgaWYgKCFzdG9yZSkK
KyAgICAgICAgc3RvcmUgPSBhZG9wdFJlZihuZXcgV2Vic2l0ZURhdGFTdG9yZShkZWZhdWx0RGF0
YVN0b3JlQ29uZmlndXJhdGlvbigpLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
KSk7CisKKyAgICByZXR1cm4gKnN0b3JlOworfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmRl
bGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCkKK3sKKyAgICBnbG9iYWxEZWZhdWx0RGF0
YVN0b3JlKCkgPSBudWxscHRyOworfQorCitib29sIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmVFeGlzdHMoKQoreworICAgIHJldHVybiAhIWdsb2JhbERlZmF1bHREYXRhU3RvcmUo
KTsKK30KKworUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKK3sKKyAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7
CisKKyAgICBjb25maWd1cmF0aW9uLT5zZXRQZXJzaXN0ZW50KHRydWUpOworCisgICAgY29uZmln
dXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShkZWZhdWx0QXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRDYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgp
KTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGRlZmF1bHRNZWRp
YUNhY2hlRGlyZWN0b3J5KCkpOworCisgICAgY29uZmlndXJhdGlvbi0+c2V0SW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOworICAg
IGNvbmZpZ3VyYXRpb24tPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoZGVm
YXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJh
dGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoZGVmYXVsdFdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShk
ZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eShkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1
cmF0aW9uLT5zZXREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdERldmlj
ZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpKTsKKworICAgIGNvbmZpZ3VyYXRpb24tPnNl
dEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRKYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpKTsKKworICAgIHJldHVybiBjb25maWd1cmF0aW9uOworfQorCiBX
ZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKQEAgLTE3MjgsNyArMTc4MCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6cmVzZXRDYWNoZU1heEFnZUMKIGJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6aXNBc3NvY2lhdGVk
UHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKSBjb25zdAogewogICAgIGlm
IChhdXRvKiBwcm9jZXNzUG9vbERhdGFTdG9yZSA9IHByb2Nlc3NQb29sLndlYnNpdGVEYXRhU3Rv
cmUoKSkKLSAgICAgICAgcmV0dXJuICZwcm9jZXNzUG9vbERhdGFTdG9yZS0+d2Vic2l0ZURhdGFT
dG9yZSgpID09IHRoaXM7CisgICAgICAgIHJldHVybiBwcm9jZXNzUG9vbERhdGFTdG9yZSA9PSB0
aGlzOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTc1NCw3ICsxODA2LDcgQEAgSGFzaFNl
dDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBXZWJzaXRlRAogICAgIH0KIAogICAgIGlmIChwcm9j
ZXNzUG9vbHMuaXNFbXB0eSgpICYmIGNvdW50ICYmIGVuc3VyZUFQb29sRXhpc3RzKSB7Ci0gICAg
ICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24obV9jb25maWd1cmF0aW9uKSk7CisgICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBXZWJQcm9j
ZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKSk7
CiAgICAgICAgIHByb2Nlc3NQb29scy5hZGQocHJvY2Vzc1Bvb2wucHRyKCkpOwogICAgIH0KIApA
QCAtMjAwMSw2ICsyMDUzLDI4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6YWRkU2VjS2V5UHJv
eHlTdG8KIH0KICNlbmRpZgogCisjaWYgIVBMQVRGT1JNKENPQ09BKQorV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTYzNjkgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYzNzAK
KyAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50LgorICAgIHJldHVybiBXVEY6OlN0cmluZygpOworfQorI2VuZGlm
CisKKyNpZiAhVVNFKEdMSUIpCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICAvLyBOb3QgaW1wbGVt
ZW50ZWQuCisgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJM
RShXRUJfQVVUSE4pCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiYmIGNv
bmZpZ3VyYXRpb24pCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyNDk3MzIpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTkyLDExICs5MiwxOSBAQCBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRTdGF0dXM7CiBzdHJ1Y3QgUGx1Z2luTW9kdWxlSW5mbzsKICNlbmRpZgogCi1jbGFzcyBX
ZWJzaXRlRGF0YVN0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1
YmxpYyBJZGVudGlmaWVkPFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
V2Vic2l0ZURhdGFTdG9yZT4gIHsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmUgOiBwdWJsaWMgQVBJ
OjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpXZWJzaXRlRGF0YVN0b3JlPiwgcHVibGlj
IElkZW50aWZpZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJz
aXRlRGF0YVN0b3JlPiAgewogcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9y
ZT4gZGVmYXVsdERhdGFTdG9yZSgpOworICAgIHN0YXRpYyBib29sIGRlZmF1bHREYXRhU3RvcmVF
eGlzdHMoKTsKKyAgICBzdGF0aWMgdm9pZCBkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGlu
ZygpOworICAgIHN0YXRpYyBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bj4gZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKKwogICAgIHN0YXRpYyBSZWY8V2Vi
c2l0ZURhdGFTdG9yZT4gY3JlYXRlTm9uUGVyc2lzdGVudCgpOwogICAgIHN0YXRpYyBSZWY8V2Vi
c2l0ZURhdGFTdG9yZT4gY3JlYXRlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4m
JiwgUEFMOjpTZXNzaW9uSUQpOwotICAgIHZpcnR1YWwgfldlYnNpdGVEYXRhU3RvcmUoKTsKKwor
ICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQpOworICAgIGV4cGxp
Y2l0IFdlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYm
LCBQQUw6OlNlc3Npb25JRCk7CisgICAgfldlYnNpdGVEYXRhU3RvcmUoKTsKIAogICAgIHN0YXRp
YyBXZWJzaXRlRGF0YVN0b3JlKiBleGlzdGluZ05vbkRlZmF1bHREYXRhU3RvcmVGb3JTZXNzaW9u
SUQoUEFMOjpTZXNzaW9uSUQpOwogCkBAIC0yNjUsMTAgKzI3MywyMyBAQCBwdWJsaWM6CiAgICAg
U09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3ImIHNvQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yKCkg
eyByZXR1cm4gbV9zb0F1dGhvcml6YXRpb25Db29yZGluYXRvci5nZXQoKTsgfQogI2VuZGlmCiAK
LXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShQQUw6OlNlc3Npb25JRCk7
Ci0gICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24+JiYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVm
YXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RG
OjpTdHJpbmcgZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6
OlN0cmluZyBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAgIHN0
YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CisgICAgc3Rh
dGljIFdURjo6U3RyaW5nIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CisgICAg
c3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOworI2lm
IFVTRShHTElCKQorICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SFNUU0RpcmVjdG9yeSgp
OworI2VuZGlmCisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0Q2FjaGVTdG9yYWdl
RGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHREZXZpY2VJZEhhc2hT
YWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEph
dmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKK3ByaXZhdGU6CiAgICAgdm9pZCBm
ZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBSZWZQdHI8V29ya1F1ZXVlPiYmLCBGdW5jdGlvbjx2b2lk
KFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5KTsKIAogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplKCk7CkBAIC0yNzksNiArMzAwLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
bGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzJik7
CiAjZW5kaWYKIAorICAgIFdlYnNpdGVEYXRhU3RvcmUoKTsKKworICAgIGVudW0gU2hvdWxkQ3Jl
YXRlRGlyZWN0b3J5IHsgQ3JlYXRlRGlyZWN0b3J5LCBEb250Q3JlYXRlRGlyZWN0b3J5IH07Cisg
ICAgc3RhdGljIFdURjo6U3RyaW5nIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUsIFNob3VsZENyZWF0ZURpcmVjdG9y
eSA9IENyZWF0ZURpcmVjdG9yeSk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGNhY2hlRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlO
YW1lKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpOworICAg
IAogICAgIEhhc2hTZXQ8UmVmUHRyPFdlYlByb2Nlc3NQb29sPj4gcHJvY2Vzc1Bvb2xzKHNpemVf
dCBjb3VudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIGJvb2wgZW5zdXJl
QVBvb2xFeGlzdHMgPSB0cnVlKSBjb25zdDsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAkocmV2
aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiAr
MjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5oIgogCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbigp
Ci0gICAgOiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQorICAgIDog
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpCiB7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIHByaXZhdGU6CiAgICAg
dWludDY0X3QgbV9wZXJPcmlnaW5TdG9yYWdlUXVvdGEgeyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFN
YW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSB9OwogICAgIFN0cmluZyBtX25ldHdvcmtDYWNoZURpcmVj
dG9yeTsKICAgICBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwotICAgIFN0cmlu
ZyBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7CisgICAgU3RyaW5n
IG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSB7ICJGaWxlcyJfcyB9
OwogICAgIFN0cmluZyBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1faW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0J
KHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiAjaW1wb3J0ICJDb29raWVT
dG9yYWdlVXRpbHNDRi5oIgorI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAi
U3RvcmFnZU1hbmFnZXIuaCIKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKQEAgLTIzMCw0ICsy
MzEsMTYxIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1SZW1vdmVSZWMKICAgICBX
ZWJDb3JlOjpyZW1vdmVSZWNlbnRseU1vZGlmaWVkUmVjZW50U2VhcmNoZXMob2xkZXN0VGltZVRv
UmVtb3ZlKTsKIH0KIAorTlNTdHJpbmcgKldlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXkg
PSBAIldlYkRhdGFiYXNlRGlyZWN0b3J5IjsKK05TU3RyaW5nICpXZWJTdG9yYWdlRGlyZWN0b3J5
RGVmYXVsdHNLZXkgPSBAIldlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VL
ZXkiOworTlNTdHJpbmcgKldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAi
V2ViS2l0TWVkaWFDYWNoZURpcmVjdG9yeSI7CitOU1N0cmluZyAqV2ViS2l0TWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5IjsKKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgLy8gVGhp
cyBxdWlyayB1c2VkIHRvIG1ha2UgdGhlc2UgYXBwcyBzaGFyZSBhcHBsaWNhdGlvbiBjYWNoZSBz
dG9yYWdlLCBidXQgZG9lc24ndCBhY2NvbXBsaXNoIHRoYXQgYW55IG1vcmUuCisgICAgLy8gUHJl
c2VydmluZyBpdCBhdm9pZHMgdGhlIG5lZWQgdG8gbWlncmF0ZSBkYXRhIHdoZW4gdXBncmFkaW5n
LgorICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlIHNob3VsZCBqdXN0IGhhdmUgU2FmYXJpLCBXZWJB
cHAsIGFuZCB3ZWJib29rbWFya3NkIGNyZWF0ZSBhIGRhdGEgc3RvcmUgd2l0aAorICAgIC8vIHRo
aXMgYXBwbGljYXRpb24gY2FjaGUgcGF0aCwgYnV0IHRoYXQncyBub3Qgc3VwcG9ydGVkIGFzIG9m
IHJpZ2h0IG5vdy4KKyAgICBpZiAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2Fm
YXJpKCkgfHwgV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViQXBwKCkgfHwgV2ViQ29yZTo6
SU9TQXBwbGljYXRpb246OmlzV2ViQm9va21hcmtzRCgpKSB7CisgICAgICAgIE5TU3RyaW5nICpj
YWNoZVBhdGggPSBbTlNIb21lRGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAiTGlicmFyeS9DYWNoZXMvY29tLmFwcGxlLldlYkFwcENhY2hlIl07CisKKyAgICAgICAg
cmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChjYWNoZVBhdGgu
c3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aCk7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4g
Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk9mZmxpbmVXZWJBcHBsaWNh
dGlvbkNhY2hlIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRD
YWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbigiQ2FjaGVTdG9yYWdlIik7Cit9CisKK1dURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTmV0d29ya0NhY2hl
Iik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hl
RGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbigiTWVkaWFDYWNoZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJz
aXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSW5kZXhlZERCIik7Cit9
CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIlNlcnZpY2VXb3JrZXJzIik7Cit9CisKK1dURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTG9jYWxT
dG9yYWdlIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhS2V5cyIpOworfQorCitXVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQorewor
ICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigi
V2ViU1FMIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlJlc291cmNlTG9hZFN0YXRpc3RpY3Mi
KTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbigiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIERvbnRDcmVhdGVEaXJl
Y3RvcnkpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1l
LCBTaG91bGRDcmVhdGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQoreworICAgIHN0
YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBOU1VSTCAqdGVtcFVS
TDsKKyAgICAKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIE5TVVJM
ICp1cmwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOk5TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgaXNE
aXJlY3Rvcnk6WUVTXTsKKyAgICAgICAgaWYgKCF1cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nl
c3NIYXNDb250YWluZXIoKSkgeworICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZp
ZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKKyAgICAgICAgICAg
IGlmICghYnVuZGxlSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVy
ID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOworICAgICAgICAgICAg
dXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBp
c0RpcmVjdG9yeTpZRVNdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0ZW1wVVJMID0g
W1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZ
RVNdIHJldGFpbl07CisgICAgfSk7CisgICAgCisgICAgTlNVUkwgKnVybCA9IFt0ZW1wVVJMIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107
CisKKyAgICBpZiAoc2hvdWxkQ3JlYXRlRGlyZWN0b3J5ID09IENyZWF0ZURpcmVjdG9yeQorICAg
ICAgICAmJiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5
QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwg
ZXJyb3I6bnVsbHB0cl0pKQorICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGly
ZWN0b3J5ICVAIiwgdXJsKTsKKyAgICAKKyAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGgu
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0
cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VU
b2tlbjsKKyAgICBzdGF0aWMgTlNVUkwgKmNhY2hlVVJMOworCisgICAgZGlzcGF0Y2hfb25jZSgm
b25jZVRva2VuLCBeeworICAgICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNDYWNoZXNEaXJlY3RvcnkgaW5Eb21haW46TlNV
c2VyRG9tYWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpu
dWxscHRyXTsKKyAgICAgICAgaWYgKCF1cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVy
KCkpIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxl
IG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1bmRsZUlk
ZW50aWZpZXIpCisgICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJ
bmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9IFt1cmwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVT
XTsKKyAgICAgICAgfQorCisgICAgICAgIGNhY2hlVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07CisgICAgfSk7
CisKKyAgICBOU1VSTCAqdXJsID0gW2NhY2hlVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisgICAgaWYgKCFbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRp
YXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQorICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKKworICAg
IHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Cit9
CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQor
eworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBOU1VS
TCAqd2Vic2l0ZURhdGFVUkw7CisKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Cisg
ICAgICAgIE5TVVJMICp1cmwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZv
ckRpcmVjdG9yeTpOU0xpYnJhcnlEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBh
cHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKKyAgICAg
ICAgaWYgKCF1cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
CisgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0
IiBpc0RpcmVjdG9yeTpZRVNdOworCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29u
dGFpbmVyKCkpIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05T
QnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1
bmRsZUlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1By
b2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9IFt1
cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rv
cnk6WUVTXTsKKyAgICAgICAgfQorCisgICAgICAgIHdlYnNpdGVEYXRhVVJMID0gW1t1cmwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2Vic2l0ZURhdGEiIGlzRGlyZWN0b3J5OllFU10g
cmV0YWluXTsKKyAgICB9KTsKKworICAgIE5TVVJMICp1cmwgPSBbd2Vic2l0ZURhdGFVUkwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsK
KyAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5
QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwg
ZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJl
Y3RvcnkgJUAiLCB1cmwpOworCisgICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbjsKK30KKwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3Jl
V2luLmNwcAkocmV2aXNpb24gMjQ5NzMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00NSw0ICs0Niw1OSBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OnBsYXRmb3JtUmVtb3ZlUmVjCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkK
K3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25D
YWNoZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFn
ZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
IkNhY2hlU3RvcmFnZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERCIik7Cit9CisKK1N0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCit7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlNlcnZpY2VXb3JrZXJz
Iik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9j
YWxTdG9yYWdlIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCit7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKK30KKwor
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlBy
b2Nlc3NQcm94eUdMaWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAJKHJldmlzaW9uIDI0OTczMikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDggKzQzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0
TGF1bmNoTwogICAgICAgICBpZiAoIWRhdGFTdG9yZSkgewogICAgICAgICAgICAgLy8gUHJld2Fy
bWVkIHByb2Nlc3NlcyBkb24ndCBoYXZlIGEgV2Vic2l0ZURhdGFTdG9yZSB5ZXQsIHNvIHVzZSB0
aGUgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlIGZyb20gdGhlIFdlYlByb2Nlc3NQb29sLgogICAg
ICAgICAgICAgLy8gVGhlIHByb2Nlc3Mgd29uJ3QgYmUgdXNlZCBpZiBjdXJyZW50IFdlYnNpdGVE
YXRhU3RvcmUgaXMgZGlmZmVyZW50IHRoYW4gdGhlIFdlYlByb2Nlc3NQb29sIHByaW1hcnkgb25l
LgotICAgICAgICAgICAgaWYgKGF1dG8qIGFwaURhdGFTdG9yZSA9IG1fcHJvY2Vzc1Bvb2wtPndl
YnNpdGVEYXRhU3RvcmUoKSkKLSAgICAgICAgICAgICAgICBkYXRhU3RvcmUgPSAmYXBpRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgICAgICAgICBkYXRhU3RvcmUgPSBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBBU1NFUlQoZGF0YVN0b3JlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIv
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCShm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVH
TGliLmNwcDoyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVE
YXRhU3RvcmVHTGliLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE3IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisKKyNpbmNsdWRl
IDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKwor
I2lmIFBMQVRGT1JNKEdUSykKKyNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndlYmtpdGd0ayIKKyNl
bGlmIFBMQVRGT1JNKFdQRSkKKyNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndwZSIKKyNlbmRpZgor
CituYW1lc3BhY2UgQVBJIHsKKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1Jf
UyAiYXBwbGljYXRpb25zIik7Cit9CisKKy8vIEZJWE1FOiBUaGUgb3RoZXIgZGlyZWN0b3JpZXMg
aW4gdGhpcyBmaWxlIGFyZSBzaGFyZWQgYmV0d2VlbiBhbGwgYXBwbGljYXRpb25zIHVzaW5nIFdl
YktpdEdUSy4KKy8vIFdoeSBpcyBvbmx5IHRoaXMgZGlyZWN0b3J5IG5hbWVzcGFjZWQgdG8gYSBw
YXJ0aWN1bGFyIGFwcGxpY2F0aW9uPworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0
X3ByZ25hbWUoKSksICJXZWJLaXRDYWNoZSIpKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNh
Y2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2UiKSk7Cit9CisKK1dURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgp
Cit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJkYXRhYmFzZXMiIEdfRElSX1NF
UEFSQVRPUl9TICJpbmRleGVkZGIiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJ
UkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAic2VydmljZXdvcmtlcnMiKTsKK30KKworV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCit7
CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJsb2NhbHN0b3JhZ2UiKTsKK30KKwor
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAibWVkaWFrZXlzIik7
Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNT
dG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRl
dmljZWlkaGFzaHNhbHRzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRh
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NF
UEFSQVRPUl9TICJkYXRhYmFzZXMiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFU
T1JfUyk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJB
VE9SX1MgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3Qg
V1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKK30K
KworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfZGF0YV9k
aXIoKSksIGRpcmVjdG9yeU5hbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdM
aWIuY3BwCShyZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGli
L1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiAjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CkBAIC0zNSw3ICsz
NSw3IEBACiAjZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCiAjZW5kaWYKIAotbmFtZXNwYWNl
IEFQSSB7CituYW1lc3BhY2UgV2ViS2l0IHsKIAogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogewpJbmRleDogU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDk3
MzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDYgQEAKIAkJMUEzMDA2NkUxMTEwRjRGNzAwMzE5
MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzAwNjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZl
bmVzc1RpbWVyLmggKi87IH07CiAJCTFBMzM0REVEMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdl
QXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTMzNERFQjE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFN
YXBNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkxQTMzNERFRTE2REU4Rjg4MDA2QThFMzgg
LyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUEzMzRERUMxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVh
TWFwTWVzc2FnZXMuaCAqLzsgfTsKLQkJMUEzNjM1QUExQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdl
YnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBMzYzNUE4MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmgg
Ki87IH07CiAJCTFBM0M4ODgwMThBNUFCQUUwMEM0Qzk2MiAvKiBXS1ByZWZlcmVuY2VzSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0M4
ODdGMThBNUFCQUUwMEM0Qzk2MiAvKiBXS1ByZWZlcmVuY2VzSW50ZXJuYWwuaCAqLzsgfTsKIAkJ
MUEzQ0MxNjcxODkwNkFDRjAwMUU2RUQ4IC8qIFdLV2ViVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzQ0MxNjUxODkwNkFDRjAwMUU2RUQ4IC8q
IFdLV2ViVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsg
fTsKIAkJMUEzQ0MxNjkxODkwN0VCMDAwMUU2RUQ4IC8qIFdLUHJvY2Vzc1Bvb2xJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzQ0MxNjgx
ODkwN0VCMDAwMUU2RUQ4IC8qIFdLUHJvY2Vzc1Bvb2xJbnRlcm5hbC5oICovOyB9OwpAQCAtMTcy
NSw2ICsxNzI0LDggQEAKIAkJCWNvbXBpbGVyU3BlYyA9IGNvbS5hcHBsZS5jb21waWxlcnMucHJv
eHkuc2NyaXB0OwogCQkJZmlsZVBhdHRlcm5zID0gIiouaCI7CiAJCQlmaWxlVHlwZSA9IHBhdHRl
cm4ucHJveHk7CisJCQlpbnB1dEZpbGVzID0gKAorCQkJKTsKIAkJCWlzRWRpdGFibGUgPSAxOwog
CQkJb3V0cHV0RmlsZXMgPSAoCiAJCQkJIiQoSEVBREVSX09VVFBVVF9ESVIpLyQoSU5QVVRfRklM
RV9OQU1FKSIsCkBAIC0yMTIxLDkgKzIxMjIsNiBAQAogCQkxQTMzNERFQTE2REU4QjY4MDA2QThF
MzggLyogU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3RvcmFnZUFyZWFNYXAubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMzM0REVCMTZERThGODgw
MDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5j
cHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VBcmVhTWFwTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUEzMzRE
RUMxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmg7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTFBMzYzNUE3MUEzMTQ0QTMwMEVENjE5NyAv
KiBBUElXZWJzaXRlRGF0YVN0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFQSVdlYnNpdGVEYXRhU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkxQTM2MzVBODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElXZWJzaXRlRGF0YVN0b3JlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBMzYzNUFCMUEzMTQ1RTUwMEVENjE5NyAvKiBB
UElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBBUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBM0E3M0NCMUE0OEM2RDQwMDcyMzFCMyAvKiBBUElQYWdlR3JvdXBIYW5k
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJUGFnZUdyb3Vw
SGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEzQTczQ0MxQTQ4QzZE
NDAwNzIzMUIzIC8qIEFQSVBhZ2VHcm91cEhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBUElQYWdlR3JvdXBIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUEzQzg4N0YxOEE1QUJBRTAwQzRDOTYyIC8qIFdLUHJlZmVyZW5jZXNJbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByZWZlcmVuY2VzSW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYzNjcsNyArNjM2NSw2IEBACiAJCQkJ
N0NFRkE5NjAxQUMwOTk5MzAwQjkxMEZEIC8qIEFQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2Eu
bW0gKi8sCiAJCQkJNUNBNDZFN0EyMUYxQTIzOTAwQ0U4NkI0IC8qIEFQSUhUVFBDb29raWVTdG9y
ZUNvY29hLm1tICovLAogCQkJCUZFRDNDMURBMUI0NDdBRTgwMEUwRUI3RiAvKiBBUElTZXJpYWxp
emVkU2NyaXB0VmFsdWVDb2NvYS5tbSAqLywKLQkJCQkxQTM2MzVBQjFBMzE0NUU1MDBFRDYxOTcg
LyogQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tICovLAogCQkJCTFBRkRFNjQzMTk1MTBCNTUw
MEM0OEZGQSAvKiBMZWdhY3lCdW5kbGVGb3JDbGFzcy5tbSAqLywKIAkJCQkxQzIwOTM1RTIyMzE4
Q0IwMDAwMjZBMzkgLyogTlNBdHRyaWJ1dGVkU3RyaW5nLmggKi8sCiAJCQkJMUMyMDkzNUYyMjMx
OENCMDAwMDI2QTM5IC8qIE5TQXR0cmlidXRlZFN0cmluZy5tbSAqLywKQEAgLTc5NzcsOCArNzk3
NCw2IEBACiAJCQkJMkQ4Nzg2MjIxQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVzZXJTdHlsZVNoZWV0
LmggKi8sCiAJCQkJMUFFMjg2ODExQzdGOTM4NjAwNjlBQzRGIC8qIEFQSVdlYnNpdGVEYXRhUmVj
b3JkLmNwcCAqLywKIAkJCQkxQUUyODY4MjFDN0Y5Mzg2MDA2OUFDNEYgLyogQVBJV2Vic2l0ZURh
dGFSZWNvcmQuaCAqLywKLQkJCQkxQTM2MzVBNzFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0
ZURhdGFTdG9yZS5jcHAgKi8sCi0JCQkJMUEzNjM1QTgxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdl
YnNpdGVEYXRhU3RvcmUuaCAqLywKIAkJCQk1QzhERDM3RDFGRTQ1MDExMDBGMkE1NTYgLyogQVBJ
V2Vic2l0ZVBvbGljaWVzLmNwcCAqLywKIAkJCQk1QzhERDM3QzFGRTQ1MDExMDBGMkE1NTYgLyog
QVBJV2Vic2l0ZVBvbGljaWVzLmggKi8sCiAJCQkJMUE2NTYzRTIxQjdBOEM1MDAwOUNGNzg3IC8q
IEFQSVdpbmRvd0ZlYXR1cmVzLmNwcCAqLywKQEAgLTkzODIsNyArOTM3Nyw2IEBACiAJCQkJQzVF
MUFGRUQxNkIyMTAxNzAwNkNDMUYyIC8qIEFQSVdlYkFyY2hpdmUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUM1RTFBRkVGMTZCMjEwMjkwMDZDQzFGMiAvKiBBUElXZWJBcmNoaXZlUmVzb3VyY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBRTI4Njg0MUM3RjkzODYwMDY5QUM0RiAvKiBBUElXZWJzaXRl
RGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUEzNjM1QUExQTMxNDRBMzAwRUQ2MTk3
IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjU2M0U1MUI3
QThDNTAwMDlDRjc4NyAvKiBBUElXaW5kb3dGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RjQ4RDJBODUyMTU4M0E3RTAwQzY3NTJCIC8qIEFwcEtpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFENEMxOTMxQjM5RjMzMjAwQUJDMjhFIC8qIEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hl
L1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCShy
ZXZpc2lvbiAyNDk3MzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9X
ZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBXZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyOjpzZXRXZWJzaXRlRGF0YVN0b3JlKGNvbnN0IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIEFTU0VSVCghcGFyYW1ldGVycy5tZWRpYUtleVN0
b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKTsKICAgICBtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9y
eSA9IHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5OwogfQogCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNDk3NTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMiBAQAorMjAxOS0wOS0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBhYnN0cmFjdGlv
bnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMTY1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgor
CiAyMDE5LTA5LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
U3RvcCB1c2luZyB0ZXN0UnVubmVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWRfREVQUkVDQVRF
RCgpIGluIGh0dHAvdGVzdHMvY29va2llcy9wcml2YXRlLWNvb2tpZS1zdG9yYWdlLmh0bWwKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJl
dmlzaW9uIDI0OTczMikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMzQwLDcgKzM0MCw2IEBAIHdlYmtpdC5vcmcvYi8x
NDkwODcgWyBEZWJ1ZyBdIGh0dHAvdGVzdHMKIHdlYmtpdC5vcmcvYi8xNDkwODcgWyBSZWxlYXNl
IF0gaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUtdmFsaWRhdGlvbi5odG1s
IFsgUGFzcyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8xNDkwODcgWyBEZWJ1ZyBdIGh0dHAvdGVz
dHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLWxhc3QtbW9kaWZpZWQuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBUaW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8xNDkwODcgWyBEZWJ1ZyBdIGh0dHAvdGVz
dHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLXZhcnkuaHRtbCBbIFBhc3MgRmFpbHVyZSBU
aW1lb3V0IF0KLXdlYmtpdC5vcmcvYi8xNDcwNzUgWyBEZWJ1ZyBdIGh0dHAvdGVzdHMvY2FjaGUv
ZGlzay1jYWNoZS9kaXNrLWNhY2hlLWRpc2FibGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0
IF0KIHdlYmtpdC5vcmcvYi8xNDkwODcgWyBEZWJ1ZyBdIGh0dHAvdGVzdHMvY2FjaGUvZGlzay1j
YWNoZS9kaXNrLWNhY2hlLXZhcnktbm8tYm9keS5odG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQg
XQogCiB3ZWJraXQub3JnL2IvMTc5Nzk2IGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNr
LWNhY2hlLXZhbGlkYXRpb24tYmFjay1uYXZpZ2F0aW9uLXBvbGljeS5odG1sIFsgUGFzcyBGYWls
dXJlIF0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCShy
ZXZpc2lvbiAyNDk3MzIpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0
aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMTYyLDYgKzE2Miw5IEBAIHdlYmtpdC5vcmcvYi8xMDU5
NTIgZmFzdC9sb2FkZXIvc3VibWl0LWYKIAogd2Via2l0Lm9yZy9iLzE0OTA4NyBodHRwL3Rlc3Rz
L2NhY2hlL2Rpc2stY2FjaGUvZGlzay1jYWNoZS1jYW5jZWwuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
CiAKKyMgVGhpcyB0ZXN0IGxlYXZlcyBzdGF0ZSBiZWhpbmQgZm9yIGZ1dHVyZSB0ZXN0cyBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkKK3dlYmtpdC5vcmcvYi8xNDcwNzUgaHR0cC90ZXN0cy9jYWNoZS9k
aXNrLWNhY2hlL2Rpc2stY2FjaGUtZGlzYWJsZS5odG1sIFsgU2tpcCBdCisKIHdlYmtpdC5vcmcv
Yi8xNDExMjIgZWRpdGluZy9zZWxlY3Rpb24vcHJvZ3JhbW1hdGljLXNlbGVjdGlvbi1vbi1tYWMt
aXMtZGlyZWN0aW9ubGVzcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogaHR0cC90ZXN0cy9hcHBj
YWNoZS9kZWNpZGUtbmF2aWdhdGlvbi1wb2xpY3ktYWZ0ZXItZGVsYXkuaHRtbCBbIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378554</attachid>
            <date>2019-09-11 03:41:50 -0700</date>
            <delta_ts>2019-09-20 16:12:14 -0700</delta_ts>
            <desc>Updated patch with GLib API fixes</desc>
            <filename>wk2-website-data.diff</filename>
            <type>text/plain</type>
            <size>207326</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNzllMjRmODg2Ni4uZTVkZjY1YjU0NGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxOS0wOS0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgor
CisgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBhYnN0cmFjdGlvbnMgYXJvdW5kIFdlYnNpdGVE
YXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMTY1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE5LTA5LTExICBTYWFt
IEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSExTTF0gRW5zdXJlIHN0
cnVjdHMvYXJyYXlzIHdpdGggcG9pbnRlcnMgYXMgZmllbGRzIGFyZSBkaXNhbGxvd2VkCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNjBhNzJk
OWY3OWIuLmE0OTFmNWY4YmFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0zNDAsNyArMzQwLDYgQEAgd2Via2l0Lm9yZy9iLzE0OTA4NyBb
IERlYnVnIF0gaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUtdmFsaWRhdGlv
bi4KIHdlYmtpdC5vcmcvYi8xNDkwODcgWyBSZWxlYXNlIF0gaHR0cC90ZXN0cy9jYWNoZS9kaXNr
LWNhY2hlL2Rpc2stY2FjaGUtdmFsaWRhdGlvbi5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIHdlYmtp
dC5vcmcvYi8xNDkwODcgWyBEZWJ1ZyBdIGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNr
LWNhY2hlLWxhc3QtbW9kaWZpZWQuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KIHdlYmtp
dC5vcmcvYi8xNDkwODcgWyBEZWJ1ZyBdIGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNr
LWNhY2hlLXZhcnkuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KLXdlYmtpdC5vcmcvYi8x
NDcwNzUgWyBEZWJ1ZyBdIGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLWRp
c2FibGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8xNDkwODcg
WyBEZWJ1ZyBdIGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLXZhcnktbm8t
Ym9keS5odG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgXQogCiB3ZWJraXQub3JnL2IvMTc5Nzk2
IGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLXZhbGlkYXRpb24tYmFjay1u
YXZpZ2F0aW9uLXBvbGljeS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYmE2YzNiZGY0ZTQuLjNjZmQ3YzEyYmExIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTYyLDYgKzE2
Miw5IEBAIHdlYmtpdC5vcmcvYi8xMDU5NTIgZmFzdC9sb2FkZXIvc3VibWl0LWZvcm0td2hpbGUt
cGFyc2luZy0yLmh0bWwgWyBQYXNzIEZhaWx1cmUKIAogd2Via2l0Lm9yZy9iLzE0OTA4NyBodHRw
L3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvZGlzay1jYWNoZS1jYW5jZWwuaHRtbCBbIFBhc3MgRmFp
bHVyZSBdCiAKKyMgVGhpcyB0ZXN0IGxlYXZlcyBzdGF0ZSBiZWhpbmQgZm9yIGZ1dHVyZSB0ZXN0
cyBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKK3dlYmtpdC5vcmcvYi8xNDcwNzUgaHR0cC90ZXN0cy9j
YWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUtZGlzYWJsZS5odG1sIFsgU2tpcCBdCisKIHdlYmtp
dC5vcmcvYi8xNDExMjIgZWRpdGluZy9zZWxlY3Rpb24vcHJvZ3JhbW1hdGljLXNlbGVjdGlvbi1v
bi1tYWMtaXMtZGlyZWN0aW9ubGVzcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogaHR0cC90ZXN0
cy9hcHBjYWNoZS9kZWNpZGUtbmF2aWdhdGlvbi1wb2xpY3ktYWZ0ZXItZGVsYXkuaHRtbCBbIFBh
c3MgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCAwNzg1ZmIxNzI5NC4uNTgwYzk3NjZhYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjY3IEBACisyMDE5LTA5LTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGFic3RyYWN0aW9ucyBh
cm91bmQgV2Vic2l0ZURhdGFTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAxNjU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIGZvdXIgdGhpbmdzIHRvIHNpbXBsaWZ5IFdl
YnNpdGVEYXRhU3RvcmUgY29kZToKKyAgICAgICAgMS4gSXQgcmVtb3ZlcyBBUEk6OldlYnNpdGVE
YXRhU3RvcmUsIHdoaWNoIHdhcyBqdXN0IGFuIHVubmVjZXNzYXJ5IHdyYXBwZXIgYXJvdW5kIFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZS4KKyAgICAgICAgMi4gSXQgZGVwcmVjYXRlcyB0aGUgdW51
c2VkIGFsaWFzZXMgb2YgV2Vic2l0ZURhdGFTdG9yZSwgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
clJlZiBhbmQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmCisgICAgICAgIDMuIEl0IHJlbW92
ZXMgdGhlIHVudXNlZCBBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0aGF0
IGhhdmUgYmVlbiBtb3ZlZCB0byBXZWJzaXRlRGF0YVN0b3JlLgorICAgICAgICA0LiBJdCBtYWtl
cyBXS1dlYnNpdGVEYXRhU3RvcmUuX2RlbGVnYXRlIHdlYWsgaW5zdGVhZCBvZiBzdHJvbmcsIGFz
IGFscmVhZHkgYW5ub3RhdGVkIGluIFdLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAorICAgICAg
ICBUaGVyZSBzaG91bGQgYmUgbm8gY2hhbmdlIGluIGJlaGF2aW9yIGZyb20gdGhpcyBwYXRjaC4K
KworICAgICAgICAqIFBsYXRmb3JtRlRXLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNt
YWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogU291cmNlc1dQRS50eHQ6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1
cmF0aW9uOjp3ZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OnNldFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bjo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOjpjb3B5KToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uOjpjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHA6CisgICAgICAg
IChBUEk6OldlYnNpdGVQb2xpY2llczo6ZGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElXZWJzaXRlUG9saWNpZXMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldFR5cGVJRCk6CisgICAg
ICAgIChXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnMp
OgorICAgICAgICAoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmln
aW4pOgorICAgICAgICAoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHA6Cisg
ICAgICAgICh1c2VXaXRoUG9saWNpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyR2V0VHlwZUlEKToKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE9yaWdp
bktleSk6CisgICAgICAgIChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVL
ZXkpOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGlt
ZUtleSk6CisgICAgICAgIChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRLZXlWYWx1ZVN0b3Jh
Z2VPcmlnaW5zKToKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VE
ZXRhaWxzQnlPcmlnaW4pOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRl
RW50cmllc0Zvck9yaWdpbik6CisgICAgICAgIChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxl
dGVBbGxFbnRyaWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1h
bmFnZXIuY3BwOgorICAgICAgICAoV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldFR5cGVJRCk6Cisg
ICAgICAgIChXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zKToKKyAgICAgICAg
KFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2luKToKKyAgICAgICAgKFdL
UmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yQWxsT3JpZ2lucyk6CisgICAgICAgICh0
b1dlYnNpdGVEYXRhVHlwZXMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXRUeXBl
SUQpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0RGVmYXVsdERhdGFTdG9yZSk6Cisg
ICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUNyZWF0ZVdpdGhDb25maWd1cmF0aW9uKToKKyAg
ICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdldEhUVFBDb29raWVTdG9yZSk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlV2l0aENv
bXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZSk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTGFzdFNlZW4pOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlRHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UpOgor
ICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291
cmNlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRB
c1N1YnJlc291cmNlVW5kZXIpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0
aWNzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3Rv
cmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKToKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24pOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWQpOgor
ICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BG
cmFtZU9yaWdpbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8pOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9t
KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0VG8pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1Rv
cEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKToKKyAgICAgICAgKFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0Fu
ZERhdGFSZWNvcmRzKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NVcGRh
dGVDb29raWVCbG9ja2luZyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
U3VibWl0VGVsZW1ldHJ5KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3Rp
Y3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKToKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0KToKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURh
dGFSZWNvcmRzUmVtb3ZhbCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzTm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQpOgorICAgICAgICAoV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVt
b3ZhbCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzR3JhbmRmYXRo
ZXJpbmdUaW1lKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNYXhT
dGF0aXN0aWNzRW50cmllcyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzUHJ1bmVFbnRyaWVzRG93blRvKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKToKKyAgICAgICAgKFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlTW9kaWZp
ZWRTaW5jZUhvdXJzKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVh
clRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWwpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc0RlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UpOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsRmV0Y2hDYWNoZXMpOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlUmVtb3ZlRmV0Y2hDYWNoZUZvck9yaWdpbik6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVS
ZW1vdmVBbGxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucyk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVHZXRGZXRjaENhY2hlT3JpZ2lucyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3Rv
cmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdpbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3Rv
cmVDb3B5U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgIChXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFBlck9yaWdpblN0b3JhZ2VRdW90YSk6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsbERldmljZU9yaWVudGF0aW9uUGVybWlzc2lv
bnMpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0aGVudGljYXRpb25Nb2Nr
Q29uZmlndXJhdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFkQ2xpY2tB
dHRyaWJ1dGlvbnNUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFsKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoK1tXS1dl
YnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0pOgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgZGVhbGxvY10pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgaHR0cENv
b2tpZVN0b3JlXSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSByZW1vdmVEYXRhT2ZU
eXBlczptb2RpZmllZFNpbmNlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dl
YnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6Zm9yRGF0YVJlY29yZHM6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9yZSBfZGVmYXVsdERhdGFT
dG9yZUV4aXN0c10pOgorICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUgX2RlbGV0ZURlZmF1
bHREYXRhU3RvcmVGb3JUZXN0aW5nXSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUg
X2ZldGNoRGF0YVJlY29yZHNPZlR5cGVzOndpdGhPcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkXSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQ6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6XSk6CisgICAgICAgICgt
W1dLV2Vic2l0ZURhdGFTdG9yZSBfcGVyT3JpZ2luU3RvcmFnZVF1b3RhXSk6CisgICAgICAgICgt
W1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhOl0pOgorICAgICAg
ICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2NhY2hlU3RvcmFnZURpcmVjdG9yeV0pOgorICAgICAg
ICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldENhY2hlU3RvcmFnZURpcmVjdG9yeTpdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3Jl
IF9zZXRCb3VuZEludGVyZmFjZUlkZW50aWZpZXI6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyXSk6CisgICAgICAgICgtW1dLV2Vic2l0
ZURhdGFTdG9yZSBfc2V0QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6XSk6CisgICAgICAgICgtW1dLV2Vi
c2l0ZURhdGFTdG9yZSBfYWxsb3dzQ2VsbHVsYXJBY2Nlc3NdKToKKyAgICAgICAgKC1bV0tXZWJz
aXRlRGF0YVN0b3JlIF9zZXRQcm94eUNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dLV2Vi
c2l0ZURhdGFTdG9yZSBfc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyXSk6CisgICAg
ICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NvdXJjZUFwcGxpY2F0
aW9uU2Vjb25kYXJ5SWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUg
X3NldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjpdKToKKyAgICAgICAgKC1b
V0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRBbGxvd3NUTFNGYWxsYmFjazpdKToKKyAgICAgICAgKC1b
V0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd3NUTFNGYWxsYmFja10pOgorICAgICAgICAoLVtXS1dl
YnNpdGVEYXRhU3RvcmUgX3Byb3h5Q29uZmlndXJhdGlvbl0pOgorICAgICAgICAoLVtXS1dlYnNp
dGVEYXRhU3RvcmUgX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5XSk6CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldFNob3VsZFN1Ym1pdFRl
bGVtZXRyeTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NjaGVkdWxlQ29va2llQmxvY2tpbmdV
cGRhdGU6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJldmFsZW50RG9t
YWluOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUg
X2dldElzUHJldmFsZW50RG9tYWluOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX2NsZWFyUHJldmFsZW50RG9tYWluOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Byb2Nlc3NTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHM6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfaGFzUmVnaXN0
ZXJlZFNlcnZpY2VXb3JrZXJdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9kZWxl
Z2F0ZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgc2V0X2RlbGVnYXRlOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRh
U3RvcmVXaW4uY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAg
ICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KTog
RGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpOiBEZWxldGVk
LgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OmFkZFNpbmdsZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpkZWxldGVBbGxDb29raWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3b3JrUHJvY2Vzc1Byb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6d2Vic2l0ZURhdGFTdG9yZUZyb21TZXNz
aW9uSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3dlYlByb2Nlc3NDYWNo
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6dHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2VuZFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRGaW5pc2hMYXVu
Y2hpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJlZ2lz
dHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdl
YlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bWF5SGF2ZVJlZ2lzdGVy
ZWRTZXJ2aWNlV29ya2Vycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Omdsb2JhbERlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3Rz
KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNv
bmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjppc0Fzc29j
aWF0ZWRQcm9jZXNzUG9vbCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnByb2Nlc3NQb29scyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvd2lu
L1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9nbGliL1dl
YnNpdGVEYXRhU3RvcmVHTGliLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwLgorICAgICAgICAoQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6IERlbGV0
ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVE
aXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4K
KyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpOiBE
ZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRI
YXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAg
ICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkpOiBEZWxl
dGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTA5LTExICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0
c0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogU2NydWJiaW5nIG9uIHRlZC5jb20g
ZG9lcyBub3Qgd29yayB3ZWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRX
LmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5jbWFrZQppbmRleCA4NGRlOTcwODkx
MS4uZWZiNzdiZDFkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1GVFcuY21h
a2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5jbWFrZQpAQCAtNDYsOCArNDYsNiBA
QCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogCiAgICAgVUlQcm9jZXNzL0FQSS9DL3dpbi9X
S1ZpZXcuY3BwCiAKLSAgICBVSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2lu
LmNwcAotCiAgICAgVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAKICAgICBVSVByb2Nlc3MvTGF1bmNoZXIvd2luL1By
b2Nlc3NMYXVuY2hlcldpbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
aW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGQ4NzIyZWRj
N2NiLi4yNmM5YmVhNTA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBAIC00Niw4ICs0Niw2
IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvd2lu
L1dLVmlldy5jcHAKIAotICAgIFVJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVX
aW4uY3BwCi0KICAgICBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVBy
b3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4v
UHJvY2Vzc0xhdW5jaGVyV2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMmIxMjNmMTFiMmQuLjFjMTQ2
ODE0N2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTMxNyw3ICszMTcsNiBAQCBVSVByb2Nlc3MvQVBJL0FQ
SVVSTFNjaGVtZVRhc2suY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuY3Bw
CiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJT
dHlsZVNoZWV0LmNwcAotVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAogVUlQ
cm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVdpbmRv
d0ZlYXR1cmVzLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYTdkOTA4M2MwZTIuLjE2
ZDAwYjA4OTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNzQsNyArMjc0LDYgQEAgVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9B
UElIVFRQQ29va2llU3RvcmVDb2NvYS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxp
emVkU2NyaXB0VmFsdWVDb2NvYS5tbQotVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvTGVnYWN5QnVuZGxlRm9yQ2xhc3Mu
bW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tCiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLQmFja0ZvcndhcmRMaXN0Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAppbmRleCAzMTUy
ZWZjN2QyYS4uN2JlZGYyMWRhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dU
Sy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtMTI1LDcgKzEyNSw2
IEBAIFVJUHJvY2Vzcy9BUEkvQy9ndGsvV0tUZXh0Q2hlY2tlckd0ay5jcHAKIFVJUHJvY2Vzcy9B
UEkvQy9ndGsvV0tWaWV3LmNwcAogCiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmVHTGliLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRl
RGF0YVN0b3JlR0xpYi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbklu
Zm8uY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9u
UmVxdWVzdC5jcHAgQG5vLXVuaWZ5CkBAIC0yMzIsNiArMjMxLDcgQEAgVUlQcm9jZXNzL2NhaXJv
L0JhY2tpbmdTdG9yZUNhaXJvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9nbGliL1JlbW90ZUlu
c3BlY3RvckNsaWVudC5jcHAKIFVJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAK
IFVJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCitVSVByb2Nlc3MvZ2xpYi9X
ZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAgQG5vLXVuaWZ5CiAKIFVJUHJvY2Vzcy9nc3RyZWFtZXIv
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdC5jcHAKIFVJUHJvY2Vz
cy9nc3RyZWFtZXIvV2ViUGFnZVByb3h5R1N0cmVhbWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKaW5k
ZXggOWQ3MTJlYzQwM2IuLmMwZjdlZmYxNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNXUEUudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKQEAgLTExNCw3
ICsxMTQsNiBAQCBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMuY3BwCiBVSVBy
b2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKIAogVUlQcm9jZXNzL0FQSS9nbGliL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlR0xpYi5jcHAgQG5vLXVuaWZ5Ci1VSVByb2Nlc3MvQVBJL2dsaWIvQVBJ
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXBwbGlj
YXRpb25JbmZvLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRoZW50
aWNhdGlvblJlcXVlc3QuY3BwIEBuby11bmlmeQpAQCAtMTkyLDYgKzE5MSw3IEBAIFVJUHJvY2Vz
cy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyLmNwcAogCiBVSVByb2Nlc3MvZ2xp
Yi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlH
TGliLmNwcAorVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlm
eQogCiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcAogVUlQ
cm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAppbmRleCAxYzg1
ODNhMjU4Zi4uY2Y3MDZkNTZmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCkBAIC0yNiw5ICsyNiw5IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JlLmgiCiAKLSNpbmNsdWRlICJB
UElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3Jl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tp
ZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCmlu
ZGV4IDhmN2JmM2I5MDEwLi4yZTQxZjYyNGQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuaApAQCAtNDgsNyArNDgsNiBAQCBlbnVtIGNs
YXNzIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgOiB1aW50OF90OwogbmFtZXNwYWNlIEFQSSB7CiAK
IGNsYXNzIEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyOwotY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKIAogY2xhc3MgSFRUUENvb2tpZVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4
IDhlNjA4NTcxOWY4Li4yYWZlMzNiNjFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC0xNTEsMTIgKzE1MSwxMiBA
QCB2b2lkIFBhZ2VDb25maWd1cmF0aW9uOjpzZXRWaXNpdGVkTGlua1N0b3JlKFZpc2l0ZWRMaW5r
U3RvcmUqIHZpc2l0ZWRMaW5rU3RvcmUpCiAgICAgbV92aXNpdGVkTGlua1N0b3JlID0gdmlzaXRl
ZExpbmtTdG9yZTsKIH0KIAotQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiBQYWdlQ29uZmlndXJhdGlv
bjo6d2Vic2l0ZURhdGFTdG9yZSgpCitXZWJzaXRlRGF0YVN0b3JlKiBQYWdlQ29uZmlndXJhdGlv
bjo6d2Vic2l0ZURhdGFTdG9yZSgpCiB7CiAgICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5n
ZXQoKTsKIH0KIAotdm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0V2Vic2l0ZURhdGFTdG9yZShB
UEk6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUpCit2b2lkIFBhZ2VDb25maWd1
cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRh
U3RvcmUpCiB7CiAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gd2Vic2l0ZURhdGFTdG9yZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9u
LmgKaW5kZXggMWFmZGNiNDhlZGYuLmMzMzQxNDIxOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaApAQCAtNDQsMTIgKzQ0LDEy
IEBAIGNsYXNzIFdlYlByZWZlcmVuY2VzOwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBjbGFzcyBX
ZWJVUkxTY2hlbWVIYW5kbGVyOwogY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk7
CitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogfQogCiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3Mg
QXBwbGljYXRpb25NYW5pZmVzdDsKLWNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBjbGFzcyBXZWJz
aXRlUG9saWNpZXM7CiAKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uIDogcHVibGljIE9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpQYWdlQ29uZmlndXJhdGlvbj4gewpAQCAtODQsOCArODQsOCBAQCBw
dWJsaWM6CiAgICAgV2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlKiB2aXNpdGVkTGlua1N0b3JlKCk7
CiAgICAgdm9pZCBzZXRWaXNpdGVkTGlua1N0b3JlKFdlYktpdDo6VmlzaXRlZExpbmtTdG9yZSop
OwogCi0gICAgV2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHZvaWQg
c2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlKik7CisgICAgV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgdm9pZCBzZXRXZWJzaXRlRGF0
YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSopOwogCiAgICAgV2Vic2l0ZVBvbGljaWVz
KiBkZWZhdWx0V2Vic2l0ZVBvbGljaWVzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREZWZhdWx0V2Vi
c2l0ZVBvbGljaWVzKFdlYnNpdGVQb2xpY2llcyopOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3JlbGF0ZWRQYWdlOwogICAg
IFJlZlB0cjxXZWJLaXQ6OlZpc2l0ZWRMaW5rU3RvcmU+IG1fdmlzaXRlZExpbmtTdG9yZTsKIAot
ICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVm
UHRyPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwogICAgIFJl
ZlB0cjxXZWJzaXRlUG9saWNpZXM+IG1fZGVmYXVsdFdlYnNpdGVQb2xpY2llczsKIAogICAgIGJv
b2wgbV90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSB7IHRydWUgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5jcHAKaW5kZXggNmI4ZDFlOGNmOWEuLmE0ZTQ0MTQzM2IzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmNwcApAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogCi0jaW5jbHVkZSAiQVBJ
V2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiBuYW1lc3BhY2UgQVBJIHsKIApAQCAtMzYsMzUgKzM2
LDcgQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uOjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbik7CiB9CiAKLVJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKGNv
bnN0IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24mIGxlZ2FjeUNvbmZpZ3Vy
YXRpb24pCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uOjpjcmVhdGUoKTsKLQotICAgIGNvbmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
OwotICAgIGNvbmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0
b3J5TmFtZSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3Vi
ZGlyZWN0b3J5TmFtZSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fZGlza0NhY2hlRGlyZWN0b3J5
ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25m
aWd1cmF0aW9uLT5tX21lZGlhQ2FjaGVEaXJlY3RvcnkgPSBsZWdhY3lDb25maWd1cmF0aW9uLm1l
ZGlhQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0aW9uLT5tX2luZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeSgpOwotICAgIGNvbmZpZ3VyYXRpb24tPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbGVn
YWN5Q29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBjb25maWd1cmF0
aW9uLT5tX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3Vy
YXRpb24uZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJh
dGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5t
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gbGVnYWN5Q29uZmlndXJhdGlvbi5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7Ci0gICAgY29uZmlndXJhdGlvbi0+bV93ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSA9IGxlZ2FjeUNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoKTsKLQotICAgIHJldHVybiBjb25maWd1cmF0aW9uOwotfQotCiBQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpCi0gICAgOiBtX2FwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkoKSkKLSAgICAsIG1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZSgiRmlsZXMiKQotICAgICwgbV9kaXNrQ2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKQotICAgICwgbV9tZWRpYUNhY2hlRGly
ZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkpCi0g
ICAgLCBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKQotICAgICwgbV9sb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKQot
ICAgICwgbV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpKQotICAgICwgbV93
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKSkKLSAgICAsIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKQotICAgICwg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpCiB7CiB9CiAKQEAgLTc3LDE4ICs0
OSw4IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjo6Y29weSgpCiAgICAgYXV0byBjb3B5ID0gdGhpcy0+Y3JlYXRlKCk7CiAKICAgICBjb3B5
LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9kZWw7Ci0gICAgY29weS0+bV9kaXNrQ2Fj
aGVEaXJlY3RvcnkgPSB0aGlzLT5tX2Rpc2tDYWNoZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2Rp
c2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgPSB0aGlzLT5tX2Rpc2tDYWNoZVNw
ZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQ7Ci0gICAgY29weS0+bV9hcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5ID0gdGhpcy0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwotICAgIGNvcHkt
Pm1fYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IHRoaXMtPm1fYXBw
bGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKLSAgICBjb3B5LT5tX21lZGlh
Q2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX21lZGlhQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgY29weS0+
bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1faW5kZXhlZERCRGF0YWJhc2VE
aXJlY3Rvcnk7CiAgICAgY29weS0+bV9pbmplY3RlZEJ1bmRsZVBhdGggPSB0aGlzLT5tX2luamVj
dGVkQnVuZGxlUGF0aDsKLSAgICBjb3B5LT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMt
Pm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1fZGV2aWNlSWRIYXNoU2FsdHNT
dG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rv
cnk7Ci0gICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5OwotICAgIGNvcHktPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKLSAg
ICBjb3B5LT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+bV93ZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzID0gdGhp
cy0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBjb3B5LT5tX2Fsd2F5c1JldmFs
aWRhdGVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOwog
ICAgIGNvcHktPm1fYWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkUGF0aHMgPSB0aGlzLT5tX2Fk
ZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFBhdGhzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4IDc5
Njk4YTgxNDEzLi40MTM2OTA4YzczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtNDUsOCArNDUs
NiBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBmaW5h
bCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+
IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVh
dGVXaXRoTGVnYWN5T3B0aW9ucygpOwotICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uPiBjcmVhdGVXaXRoV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiYpOwogCiAgICAgZXhwbGljaXQgUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CiAgICAgdmlydHVhbCB+UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uKCk7CkBAIC03OSwzOCArNzcsOSBAQCBwdWJsaWM6CiAgICAgV2ViS2l0OjpDYWNoZU1v
ZGVsIGNhY2hlTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlTW9kZWw7IH0KICAgICB2b2lk
IHNldENhY2hlTW9kZWwoV2ViS2l0OjpDYWNoZU1vZGVsIGNhY2hlTW9kZWwpIHsgbV9jYWNoZU1v
ZGVsID0gY2FjaGVNb2RlbDsgfQogCi0gICAgY29uc3QgV1RGOjpTdHJpbmcmIGFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnk7IH0KLSAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpT
dHJpbmcmIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpIHsgbV9hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5ID0gYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsgfQotCi0gICAgY29uc3QgV1RGOjpT
dHJpbmcmIGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKSBjb25zdCB7
IHJldHVybiBtX2FwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7IH0KLQot
ICAgIGNvbnN0IFdURjo6U3RyaW5nJiBkaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX2Rpc2tDYWNoZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0RGlza0NhY2hlRGlyZWN0b3J5
KGNvbnN0IFdURjo6U3RyaW5nJiBkaXNrQ2FjaGVEaXJlY3RvcnkpIHsgbV9kaXNrQ2FjaGVEaXJl
Y3RvcnkgPSBkaXNrQ2FjaGVEaXJlY3Rvcnk7IH0KLQotICAgIGNvbnN0IFdURjo6U3RyaW5nJiBt
ZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUNhY2hlRGlyZWN0b3J5
OyB9Ci0gICAgdm9pZCBzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBt
ZWRpYUNhY2hlRGlyZWN0b3J5KSB7IG1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1lZGlhQ2FjaGVE
aXJlY3Rvcnk7IH0KLSAgICAKLSAgICBjb25zdCBXVEY6OlN0cmluZyYgaW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
OyB9Ci0gICAgdm9pZCBzZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShjb25zdCBXVEY6OlN0
cmluZyYgaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkpIHsgbV9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeSA9IGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OyB9Ci0KICAgICBjb25zdCBXVEY6
OlN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1
bmRsZVBhdGg7IH0KICAgICB2b2lkIHNldEluamVjdGVkQnVuZGxlUGF0aChjb25zdCBXVEY6OlN0
cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKSB7IG1faW5qZWN0ZWRCdW5kbGVQYXRoID0gaW5qZWN0
ZWRCdW5kbGVQYXRoOyB9CiAKLSAgICBjb25zdCBXVEY6OlN0cmluZyYgbG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICB2
b2lkIHNldExvY2FsU3RvcmFnZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgbG9jYWxTdG9y
YWdlRGlyZWN0b3J5KSB7IG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGly
ZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgZGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VE
aXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9y
eShjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5KSB7IG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9y
YWdlRGlyZWN0b3J5ID0gZGlyZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgd2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3dlYlNRTERhdGFiYXNlRGly
ZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShjb25zdCBXVEY6
OlN0cmluZyYgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpIHsgbV93ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeSA9IHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9Ci0KLSAgICBjb25zdCBXVEY6OlN0cmlu
ZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eShjb25zdCBXVEY6OlN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkgeyBtX21lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9Ci0KLSAg
ICBjb25zdCBXVEY6OlN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsgfQotICAgIHZv
aWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYg
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkgeyBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkgPSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OyB9Ci0KICAgICBj
b25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcygpIHsg
cmV0dXJuIG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7IH0KICAgICB2b2lkIHNldENhY2hl
UGFydGl0aW9uZWRVUkxTY2hlbWVzKFZlY3RvcjxXVEY6OlN0cmluZz4mJiBjYWNoZVBhcnRpdGlv
bmVkVVJMU2NoZW1lcykgeyBtX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzID0gV1RGTW92ZShj
YWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyk7IH0KIApAQCAtMTg2LDE3ICsxNTUsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkIHsg
ZmFsc2UgfTsKICAgICBXZWJLaXQ6OkNhY2hlTW9kZWwgbV9jYWNoZU1vZGVsIHsgV2ViS2l0OjpD
YWNoZU1vZGVsOjpQcmltYXJ5V2ViQnJvd3NlciB9OwogCi0gICAgV1RGOjpTdHJpbmcgbV9hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5OwotICAgIFdURjo6U3RyaW5nIG1fYXBwbGljYXRpb25DYWNo
ZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKLSAgICBXVEY6OlN0cmluZyBtX2Rpc2tDYWNoZURp
cmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgV1RG
OjpTdHJpbmcgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKICAgICBXVEY6OlN0cmluZyBt
X2luamVjdGVkQnVuZGxlUGF0aDsKLSAgICBXVEY6OlN0cmluZyBtX2xvY2FsU3RvcmFnZURpcmVj
dG9yeTsKLSAgICBXVEY6OlN0cmluZyBtX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9y
eTsKLSAgICBXVEY6OlN0cmluZyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwotICAgIFdURjo6
U3RyaW5nIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKLSAgICBXVEY6OlN0cmluZyBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBt
X2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9h
bHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXM7CiAgICAgVmVjdG9yPFdURjo6Q1N0cmluZz4gbV9h
ZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRQYXRoczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTU0NmRlMzlkMzIuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDE2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotCi0jaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxp
emUuaCIKLSNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCi0KLW5hbWVzcGFjZSBBUEkgewot
Ci1zdGF0aWMgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiBnbG9iYWxEZWZhdWx0RGF0YVN0b3Jl
KCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+
PiBnbG9iYWxEZWZhdWx0RGF0YVN0b3JlOwotICAgIHJldHVybiBnbG9iYWxEZWZhdWx0RGF0YVN0
b3JlLmdldCgpOwotfQotCi0KLVJlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGF0YVN0b3JlKCkKLXsKLSAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7
Ci0KLSAgICBhdXRvJiBzdG9yZSA9IGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKTsKLSAgICBpZiAo
IXN0b3JlKQotICAgICAgICBzdG9yZSA9IGFkb3B0UmVmKG5ldyBXZWJzaXRlRGF0YVN0b3JlKGRl
ZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpKTsKLQotICAgIHJldHVybiAqc3RvcmU7Ci19Ci0KLXZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcoKQotewotICAgIGdsb2JhbERl
ZmF1bHREYXRhU3RvcmUoKSA9IG51bGxwdHI7Ci19Ci0KLWJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpCi17Ci0gICAgcmV0dXJuICEhZ2xvYmFsRGVmYXVsdERh
dGFTdG9yZSgpOwotfQotCi1SZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6
Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2Vic2l0ZURhdGFTdG9yZSk7Ci19Ci0KLVJlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRl
RGF0YVN0b3JlOjpjcmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24+JiYgY29uZmlndXJhdGlvbiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKLXsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlKFdURk1vdmUoY29uZmln
dXJhdGlvbiksIHNlc3Npb25JRCkpOwotfQotCi1XZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0
YVN0b3JlKCkKLSAgICA6IG1fd2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKSkKLXsKLX0KLQotV2Vic2l0ZURhdGFTdG9yZTo6V2Vi
c2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4m
JiBjb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgOiBtX3dlYnNp
dGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGTW92ZShjb25m
aWd1cmF0aW9uKSwgc2Vzc2lvbklEKSkKLXsKLX0KLQotV2Vic2l0ZURhdGFTdG9yZTo6fldlYnNp
dGVEYXRhU3RvcmUoKQotewotfQotCi1IVFRQQ29va2llU3RvcmUmIFdlYnNpdGVEYXRhU3RvcmU6
Omh0dHBDb29raWVTdG9yZSgpCi17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+Y29v
a2llU3RvcmUoKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6IGluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5j
b25maWd1cmF0aW9uKCkuaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKLX0KLQotYm9vbCBX
ZWJzaXRlRGF0YVN0b3JlOjppc1BlcnNpc3RlbnQoKQotewotICAgIHJldHVybiBtX3dlYnNpdGVE
YXRhU3RvcmUtPmlzUGVyc2lzdGVudCgpOwotfQotCi1ib29sIFdlYnNpdGVEYXRhU3RvcmU6OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV93ZWJz
aXRlRGF0YVN0b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOwotfQotCi12b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKLXsKLSAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGVuYWJsZWQpOwotfQotCi1ib29sIFdlYnNpdGVEYXRhU3RvcmU6OnJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoKSBjb25zdAotewotICAgIHJldHVybiBtX3dlYnNp
dGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoKTsKLX0KLQotdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJv
b2wgZW5hYmxlZCkKLXsKLSAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEZWJ1Z01vZGUoZW5hYmxlZCk7Ci19Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi1X
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgp
Ci17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NjM2OSBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NjM3MAotICAgIHJldHVybiBXVEY6OlN0cmluZygpOwotfQotCi1XVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnkoKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgcmV0dXJuIFdURjo6U3RyaW5n
KCk7Ci19Ci0jZW5kaWYKLQotI2lmICFVU0UoR0xJQikKLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAg
IC8vIE5vdCBpbXBsZW1lbnRlZC4KLSAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKLX0KLSNlbmRp
ZgotCi1SZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQotewotICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0
ZSgpOwotCi0gICAgY29uZmlndXJhdGlvbi0+c2V0UGVyc2lzdGVudCh0cnVlKTsKLQotICAgIGNv
bmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdEFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgiRmlsZXMiKTsKLSAgICBjb25maWd1cmF0aW9u
LT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNhY2hl
RGlyZWN0b3J5KGRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkpOwotCi0gICAgY29uZmlndXJh
dGlvbi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoZGVmYXVsdEluZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkoZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoZGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldExv
Y2FsU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAg
IGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeShkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VE
aXJlY3RvcnkoZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpKTsKLQot
ICAgIGNvbmZpZ3VyYXRpb24tPnNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KGRl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpKTsKLQotICAgIHJldHVybiBj
b25maWd1cmF0aW9uOwotfQotCi19IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiYjA4YzEzZTFmMS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAorKysgL2Rldi9udWxsCkBAIC0x
LDg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAi
QVBJSFRUUENvb2tpZVN0b3JlLmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgotI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotbmFtZXNwYWNlIEFQSSB7Ci0KLWNsYXNzIFdlYnNpdGVEYXRhU3RvcmUgZmluYWwgOiBwdWJs
aWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OldlYnNpdGVEYXRhU3RvcmU+IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGRlZmF1bHREYXRhU3RvcmUoKTsKLSAg
ICBzdGF0aWMgYm9vbCBkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCk7Ci0gICAgc3RhdGljIHZvaWQg
ZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcoKTsKLQotICAgIHN0YXRpYyBSZWY8V2Vi
c2l0ZURhdGFTdG9yZT4gY3JlYXRlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiYmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOwotICAgIHN0YXRpYyBSZWY8V2Vic2l0
ZURhdGFTdG9yZT4gY3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpOwotCi0gICAgZXhwbGlj
aXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOwotICAgIHZpcnR1YWwgfldlYnNpdGVEYXRhU3RvcmUo
KTsKLQotICAgIGJvb2wgaXNQZXJzaXN0ZW50KCk7Ci0KLSAgICBib29sIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZChib29sKTsKLSAgICBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01v
ZGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUo
Ym9vbCk7Ci0KLSAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUo
KSB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KLSAgICBIVFRQQ29va2llU3Rv
cmUmIGh0dHBDb29raWVTdG9yZSgpOwotCi0gICAgV1RGOjpTdHJpbmcgaW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKTsKLQotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0Q2FjaGVT
dG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE1lZGlhQ2Fj
aGVEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRl
ZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVm
YXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcg
ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBX
VEY6OlN0cmluZyBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKLSNpZiBVU0UoR0xJ
QikKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEhTVFNEaXJlY3RvcnkoKTsKLSNlbmRp
ZgotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SmF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoKTsKLQotICAgIHN0YXRpYyBSZWY8V2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbj4gZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsKLQot
cHJpdmF0ZToKLSAgICBlbnVtIFNob3VsZENyZWF0ZURpcmVjdG9yeSB7IENyZWF0ZURpcmVjdG9y
eSwgRG9udENyZWF0ZURpcmVjdG9yeSB9OwotCi0gICAgV2Vic2l0ZURhdGFTdG9yZSgpOwotCi0g
ICAgc3RhdGljIFdURjo6U3RyaW5nIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUsIFNob3VsZENyZWF0ZURpcmVjdG9y
eSA9IENyZWF0ZURpcmVjdG9yeSk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGNhY2hlRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlO
YW1lKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpOwotCi0g
ICAgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwotfTsK
LQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQ
b2xpY2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGlj
aWVzLmNwcAppbmRleCBmYzBjMmRlYmZhOC4uM2M1MzViNzExZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCkBAIC0yNiwxNCAr
MjYsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNp
ZXMuaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJz
aXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgogCiBuYW1l
c3BhY2UgQVBJIHsKIAogV2Vic2l0ZVBvbGljaWVzOjpXZWJzaXRlUG9saWNpZXMoKSA9IGRlZmF1
bHQ7CiAKLVdlYnNpdGVQb2xpY2llczo6V2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJsb2Nr
ZXJzRW5hYmxlZCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+IGFsbG93
ZWRBdXRvcGxheVF1aXJrcywgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3kgYXV0b3BsYXlQ
b2xpY3ksIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYgbGVnYWN5Q3VzdG9tSGVh
ZGVyRmllbGRzLCBWZWN0b3I8V2ViQ29yZTo6Q3VzdG9tSGVhZGVyRmllbGRzPiYmIGN1c3RvbUhl
YWRlckZpZWxkcywgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3kgcG9wVXBQb2xpY3ksIFJlZlB0
cjxXZWJzaXRlRGF0YVN0b3JlPiYmIHdlYnNpdGVEYXRhU3RvcmUpCitXZWJzaXRlUG9saWNpZXM6
OldlYnNpdGVQb2xpY2llcyhib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNldDxX
ZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiBhbGxvd2VkQXV0b3BsYXlRdWlya3MsIFdlYktp
dDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5IGF1dG9wbGF5UG9saWN5LCBWZWN0b3I8V2ViQ29yZTo6
SFRUUEhlYWRlckZpZWxkPiYmIGxlZ2FjeUN1c3RvbUhlYWRlckZpZWxkcywgVmVjdG9yPFdlYkNv
cmU6OkN1c3RvbUhlYWRlckZpZWxkcz4mJiBjdXN0b21IZWFkZXJGaWVsZHMsIFdlYktpdDo6V2Vi
c2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9saWN5LCBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlPiYmIHdlYnNpdGVEYXRhU3RvcmUpCiAgICAgOiBtX2NvbnRlbnRCbG9ja2Vyc0VuYWJsZWQo
Y29udGVudEJsb2NrZXJzRW5hYmxlZCkKICAgICAsIG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtzKGFs
bG93ZWRBdXRvcGxheVF1aXJrcykKICAgICAsIG1fYXV0b3BsYXlQb2xpY3koYXV0b3BsYXlQb2xp
Y3kpCkBAIC04NCw3ICs4NCw3IEBAIFdlYnNpdGVQb2xpY2llczo6fldlYnNpdGVQb2xpY2llcygp
CiB7CiB9CiAKLXZvaWQgV2Vic2l0ZVBvbGljaWVzOjpzZXRXZWJzaXRlRGF0YVN0b3JlKFJlZlB0
cjxXZWJzaXRlRGF0YVN0b3JlPiYmIHdlYnNpdGVEYXRhU3RvcmUpCit2b2lkIFdlYnNpdGVQb2xp
Y2llczo6c2V0V2Vic2l0ZURhdGFTdG9yZShSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
PiYmIHdlYnNpdGVEYXRhU3RvcmUpCiB7CiAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gV1RGTW92
ZSh3ZWJzaXRlRGF0YVN0b3JlKTsKIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCBXZWJLaXQ6OldlYnNp
dGVQb2xpY2llc0RhdGEgV2Vic2l0ZVBvbGljaWVzOjpkYXRhKCkKICNlbmRpZgogICAgICAgICBX
VEZNb3ZlKGN1c3RvbUhlYWRlckZpZWxkcyksCiAgICAgICAgIHBvcFVwUG9saWN5KCksCi0gICAg
ICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA/IE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnM+IHsgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFy
YW1ldGVycygpIH0gOiBXVEY6Om51bGxvcHQsCisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA/
IE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IHsgbV93ZWJzaXRl
RGF0YVN0b3JlLT5wYXJhbWV0ZXJzKCkgfSA6IFdURjo6bnVsbG9wdCwKICAgICAgICAgbV9jdXN0
b21Vc2VyQWdlbnQsCiAgICAgICAgIG1fY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNw
ZWNpZmljUXVpcmtzLAogICAgICAgICBtX2N1c3RvbU5hdmlnYXRvclBsYXRmb3JtLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCmluZGV4IDhk
MmE3MWIxODJhLi44NWE4NGM4MDE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaApAQCAtNDEsMTMgKzQxLDEyIEBACiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYnNpdGVEYXRhU3Rv
cmU7CiBzdHJ1Y3QgV2Vic2l0ZVBvbGljaWVzRGF0YTsKIH0KIAogbmFtZXNwYWNlIEFQSSB7CiAK
LWNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7Ci0KIGNsYXNzIFdlYnNpdGVQb2xpY2llcyBmaW5hbCA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OldlYnNpdGVQb2xpY2ll
cz4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2Vic2l0ZVBvbGljaWVzPiBjcmVhdGUoKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVQb2xpY2llcyk7IH0KQEAgLTc5LDggKzc4LDgg
QEAgcHVibGljOgogICAgIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9saWN5KCkg
Y29uc3QgeyByZXR1cm4gbV9wb3BVcFBvbGljeTsgfQogICAgIHZvaWQgc2V0UG9wVXBQb2xpY3ko
V2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3kgcG9saWN5KSB7IG1fcG9wVXBQb2xpY3kgPSBwb2xp
Y3k7IH0KIAotICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7
IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFdlYnNpdGVE
YXRhU3RvcmUoUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYpOworICAgIFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vic2l0ZURh
dGFTdG9yZS5nZXQoKTsgfQorICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShSZWZQdHI8V2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlPiYmKTsKIAogICAgIFdlYktpdDo6V2Vic2l0ZVBvbGljaWVz
RGF0YSBkYXRhKCk7CiAKQEAgLTExOCw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRB
bGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZlclF1aXJrKGJvb2wgYWxsb3cpIHsgbV9hbGxvd0NvbnRl
bnRDaGFuZ2VPYnNlcnZlclF1aXJrID0gYWxsb3c7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJzaXRl
UG9saWNpZXMoYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBPcHRpb25TZXQ8V2ViS2l0OjpX
ZWJzaXRlQXV0b3BsYXlRdWlyaz4sIFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5LCBWZWN0
b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPiYmLCBWZWN0b3I8V2ViQ29yZTo6Q3VzdG9tSGVh
ZGVyRmllbGRzPiYmLCBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSwgUmVmUHRyPFdlYnNpdGVE
YXRhU3RvcmU+JiYpOworICAgIFdlYnNpdGVQb2xpY2llcyhib29sIGNvbnRlbnRCbG9ja2Vyc0Vu
YWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiwgV2ViS2l0OjpX
ZWJzaXRlQXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYs
IFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+JiYsIFdlYktpdDo6V2Vic2l0ZVBv
cFVwUG9saWN5LCBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiYmKTsKIAogICAgIGJv
b2wgbV9jb250ZW50QmxvY2tlcnNFbmFibGVkIHsgdHJ1ZSB9OwogICAgIE9wdGlvblNldDxXZWJL
aXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiBtX2FsbG93ZWRBdXRvcGxheVF1aXJrczsKQEAgLTEy
OSw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmll
bGQ+IG1fbGVnYWN5Q3VzdG9tSGVhZGVyRmllbGRzOwogICAgIFZlY3RvcjxXZWJDb3JlOjpDdXN0
b21IZWFkZXJGaWVsZHM+IG1fY3VzdG9tSGVhZGVyRmllbGRzOwogICAgIFdlYktpdDo6V2Vic2l0
ZVBvcFVwUG9saWN5IG1fcG9wVXBQb2xpY3kgeyBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeTo6
RGVmYXVsdCB9OwotICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3Rv
cmU7CisgICAgUmVmUHRyPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0
b3JlOwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tVXNlckFnZW50OwogICAgIFdURjo6U3RyaW5n
IG1fY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzOwogICAgIFdU
Rjo6U3RyaW5nIG1fY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCmluZGV4IDVlOWE5MDMyYjdkLi4wMGQxNjI3MjcwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKQEAgLTY5LDcgKzY5LDYg
QEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiBjbGFzcyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b247CiBjbGFzcyBTZXNzaW9uU3RhdGU7CiBjbGFzcyBVc2VyU2NyaXB0OwotY2xhc3MgV2Vic2l0
ZURhdGFTdG9yZTsKIGNsYXNzIFdlYnNpdGVQb2xpY2llczsKIGNsYXNzIFdpbmRvd0ZlYXR1cmVz
OwogfQpAQCAtMTEzLDYgKzExMiw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW5hZ2VyOwogY2xhc3MgV2ViVGV4dENoZWNrZXI7CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTsKIGNsYXNzIFdlYlZpZXdwb3J0QXR0cmlidXRlczsKK2NsYXNzIFdlYnNpdGVE
YXRhU3RvcmU7CiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKIAogV0tfQURE
X0FQSV9NQVBQSU5HKFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYsIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkpCkBAIC0xNjksNyArMTY5LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdL
VXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUmVmLCBVc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94
eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmLCBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNl
clNjcmlwdFJlZiwgQVBJOjpVc2VyU2NyaXB0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVmlld3Bv
cnRBdHRyaWJ1dGVzUmVmLCBXZWJWaWV3cG9ydEF0dHJpYnV0ZXMpCi1XS19BRERfQVBJX01BUFBJ
TkcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBBUEk6OldlYnNpdGVEYXRhU3RvcmUpCitXS19BRERf
QVBJX01BUFBJTkcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmUpCiBXS19BRERfQVBJX01BUFBJTkcoV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvblJl
ZiwgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbikKIFdLX0FERF9BUElfTUFQ
UElORyhXS1dlYnNpdGVQb2xpY2llc1JlZiwgQVBJOjpXZWJzaXRlUG9saWNpZXMpCiBXS19BRERf
QVBJX01BUFBJTkcoV0tXaW5kb3dGZWF0dXJlc1JlZiwgQVBJOjpXaW5kb3dGZWF0dXJlcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlci5jcHAKaW5kZXggZjg1OTZhYjI2MjAuLjVkODI5YTZkYTRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLmNwcApAQCAtMjYsNDIgKzI2LDE5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oIgogCi0jaW5jbHVkZSAiQVBJ
QXJyYXkuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSAiV0tB
UElDYXN0LmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFSZWNvcmQuaCIKLQogV0tUeXBlSUQgV0tB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6
dG9BUEkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpBUElUeXBlKTsKKyAgICByZXR1cm4gMDsKIH0K
IAotdm9pZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdp
bnMoV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwg
dm9pZCogY29udGV4dCwgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5zRnVuY3Rpb24gY2FsbGJhY2spCit2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lucyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVm
LCB2b2lkKiwgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5zRnVuY3Rpb24pCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IFdlYktpdDo6dG9J
bXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihhcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5m
ZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNh
Y2hlLCB7IH0sIFtjb250ZXh0LCBjYWxsYmFja10oYXV0byBkYXRhUmVjb3JkcykgewotICAgICAg
ICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gc2VjdXJpdHlPcmlnaW5zOwotICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVjb3JkcykgewotICAgICAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBkYXRhUmVjb3JkLm9yaWdpbnMpCi0gICAgICAgICAg
ICAgICAgc2VjdXJpdHlPcmlnaW5zLmFwcGVuZChBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
b3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxiYWNr
KFdlYktpdDo6dG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoc2VjdXJpdHlPcmlnaW5z
KSkucHRyKCkpLCBudWxscHRyLCBjb250ZXh0KTsKLSAgICB9KTsKIH0KIAotdm9pZCBXS0FwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0FwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVm
IG9yaWdpbikKK3ZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JP
cmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZikK
IHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwocmVpbnRlcnBy
ZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyKSkt
PndlYnNpdGVEYXRhU3RvcmUoKTsKLQotICAgIFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQgZGF0
YVJlY29yZDsKLSAgICBkYXRhUmVjb3JkLmFkZChXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6T2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIFdlYktpdDo6dG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5
T3JpZ2luKCkuZGF0YSgpKTsKLQotICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3ZlRGF0YShXZWJL
aXQ6OldlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHsgZGF0YVJl
Y29yZCB9LCBbXSB7IH0pOwogfQogCi12b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxl
dGVBbGxFbnRyaWVzKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIpCit2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVz
KFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYpCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFT
dG9yZSA9IFdlYktpdDo6dG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3Jl
UmVmPihhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAg
d2Vic2l0ZURhdGFTdG9yZS5yZW1vdmVEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpPZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZSwgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbXSB7IH0pOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5oCmluZGV4IDA2NWE0NjJkNDJkLi42ZTBmOWI4NzQ5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXIuaApAQCAtMjcsMTggKzI3LDE5IEBACiAjZGVmaW5lIFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdl
YktpdC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsK
ICNlbmRpZgogCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckdl
dFR5cGVJRCgpOworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJH
ZXRUeXBlSUQoKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiB0eXBlZGVmIHZvaWQgKCpXS0FwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyR2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbikoV0tB
cnJheVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlckdldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5zKFdLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLQXBw
bGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luc0Z1bmN0aW9uIGZ1
bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2lucyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyLCB2b2lkKiBjb250ZXh0LCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
R2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbikgV0tfQ19BUElfREVQ
UkVDQVRFRDsKIAotV0tfRVhQT1JUIHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0
ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlv
bkNhY2hlTWFuYWdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pOwotV0tfRVhQT1JUIHZv
aWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tBcHBsaWNhdGlv
bkNhY2hlTWFuYWdlclJlZiBhcHBsaWNhdGlvbkNhY2hlTWFuYWdlcik7CitXS19FWFBPUlQgdm9p
ZCBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS0FwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyUmVmIGFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLCBXS1NlY3VyaXR5
T3JpZ2luUmVmIG9yaWdpbikgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCB2b2lkIFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKFdLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXJSZWYgYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7
CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggYmU5MmQwYTE5OTQu
LmI5NTNhYTM3ODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTI2LDEyICsyNiwxMiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldLRnJhbWVQb2xpY3lMaXN0ZW5lci5oIgogCi0jaW5j
bHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2ll
cy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJX
ZWJzaXRlUG9saWNpZXNEYXRhLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyLmNwcAppbmRleCA4M2M0ODI2ZjdhNy4uZWNjZjBmMTMwNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyLmNwcApAQCAtMjYsOTAgKzI2LDM4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgiCiAKLSNpbmNsdWRlICJBUElBcnJheS5oIgot
I2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3Jl
LmgiCi0jaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIuaCIKLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIK
LSNpbmNsdWRlICJXZWJzaXRlRGF0YVJlY29yZC5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwotCiBXS1R5cGVJRCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRUeXBlSUQoKQogewotICAg
IHJldHVybiB0b0FQSShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OkFQSVR5cGUpOworICAgIHJldHVy
biAwOwogfQogCiBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRPcmlnaW5L
ZXkoKQogewotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0
ZSgiV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclN0b3JhZ2VEZXRhaWxzT3JpZ2luS2V5IikubGVh
a1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAogV0tTdHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5
KCkKIHsKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUo
IldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJTdG9yYWdlRGV0YWlsc0NyZWF0aW9uVGltZUtleSIp
LmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIFdLU3RyaW5nUmVmIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldE1vZGlmaWNhdGlv
blRpbWVLZXkoKQogewotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6
OmNyZWF0ZSgiV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclN0b3JhZ2VEZXRhaWxzTW9kaWZpY2F0
aW9uVGltZUtleSIpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFs
dWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9y
YWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5
VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9uIGNhbGxiYWNrKQotCit2b2lkIFdLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyUmVmLCB2b2lkKiwgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9y
YWdlT3JpZ2luc0Z1bmN0aW9uKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB0b0lt
cGwocmVpbnRlcnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGtleVZhbHVlU3RvcmFn
ZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUuZmV0
Y2hEYXRhKHsgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6
U2Vzc2lvblN0b3JhZ2UgfSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdKGF1dG8gZGF0YVJlY29y
ZHMpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHNlY3VyaXR5T3JpZ2lu
czsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsK
LSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5z
KQotICAgICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy5hcHBlbmQoQVBJOjpTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKG9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShzZWN1cml0eU9y
aWdpbnMpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwotICAgIH0pOwogfQogCi12b2lkIFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW4oV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQs
IFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3JhZ2VEZXRhaWxzQnlPcmlnaW5GdW5jdGlv
biBjYWxsYmFjaykKK3ZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFp
bHNCeU9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYsIHZvaWQqLCBXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luRnVuY3Rpb24pCiB7Ci0gICAg
YXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0
ZURhdGFTdG9yZVJlZj4oa2V5VmFsdWVTdG9yYWdlTWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3Jl
KCk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5nZXRMb2NhbFN0b3JhZ2VEZXRhaWxzKFtjb250ZXh0
LCBjYWxsYmFja10oYXV0byYmIGRldGFpbHMpIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6
Ok9iamVjdD4+IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
ZGV0YWlscy5zaXplKCkpOwotCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZGV0YWlsIDogZGV0
YWlscykgewotICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBUEk6Ok9iamVjdD4+
IGRldGFpbE1hcDsKLSAgICAgICAgICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gb3JpZ2luID0gQVBJ
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bURhdGFiYXNlSWRlbnRpZmllcihkZXRhaWwub3JpZ2luSWRlbnRpZmllciktPnNlY3VyaXR5T3Jp
Z2luKCkpOwotCi0gICAgICAgICAgICBkZXRhaWxNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRPcmlnaW5LZXkoKSktPnN0cmluZygpLCBvcmlnaW4pOwotICAgICAgICAg
ICAgaWYgKGRldGFpbC5jcmVhdGlvblRpbWUpCi0gICAgICAgICAgICAgICAgZGV0YWlsTWFwLnNl
dCh0b0ltcGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0Q3JlYXRpb25UaW1lS2V5KCkpLT5z
dHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShkZXRhaWwuY3JlYXRpb25UaW1lLT5zZWNvbmRz
U2luY2VFcG9jaCgpLnZhbHVlKCkpKTsKLSAgICAgICAgICAgIGlmIChkZXRhaWwubW9kaWZpY2F0
aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpE
b3VibGU6OmNyZWF0ZShkZXRhaWwubW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2go
KS52YWx1ZSgpKSk7Ci0KLSAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoQVBJOjpE
aWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShkZXRhaWxNYXApKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShyZXN1bHQpKS5w
dHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwotICAgIH0pOwogfQogCi12b2lkIFdLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2lu
KQordm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZikKIHsKLSAgICBh
dXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9JbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRl
RGF0YVN0b3JlUmVmPihrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUo
KTsKLSAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgIGRhdGFSZWNvcmQuYWRk
KFdlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlLCB0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlP
cmlnaW4oKS5kYXRhKCkpOwotICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6U2Vz
c2lvblN0b3JhZ2UsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7Ci0g
ICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1vdmVEYXRhKHsgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0
b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6U2Vzc2lvblN0b3JhZ2UgfSwgeyBkYXRhUmVjb3JkIH0s
IFtdIHsgfSk7CiB9CiAKLXZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50
cmllcyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlcikK
K3ZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJSZWYpCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1w
bChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oa2V5VmFsdWVTdG9yYWdl
TWFuYWdlcikpLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1v
dmVEYXRhKHsgV2Vic2l0ZURhdGFUeXBlOjpMb2NhbFN0b3JhZ2UsIFdlYnNpdGVEYXRhVHlwZTo6
U2Vzc2lvblN0b3JhZ2UgfSwgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbXSB7IH0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXIuaAppbmRleCBkOTJhZGFkYWQzNC4uNGZlOGQyOWY5YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ci5oCkBAIC0yNywzMCArMjcsMzEgQEAKICNkZWZpbmUgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
X2gKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEZXBy
ZWNhdGVkLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAot
V0tfRVhQT1JUIFdLVHlwZUlEIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCgpOwor
V0tfRVhQT1JUIFdLVHlwZUlEIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFR5cGVJRCgpIFdL
X0NfQVBJX0RFUFJFQ0FURUQ7CiAKIC8qIFZhbHVlIHR5cGU6IFdLU2VjdXJpdHlPcmlnaW5SZWYg
Ki8KLVdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRPcmln
aW5LZXkoKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRPcmlnaW5LZXkoKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAvKiBWYWx1ZSB0eXBlOiBXS0Rv
dWJsZVJlZiwgc2Vjb25kcyBzaW5jZSBKYW51YXJ5IDFzdCwgMTk3MCBVVEMgKi8KLVdLX0VYUE9S
VCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVhdGlvblRpbWVLZXko
KTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRDcmVh
dGlvblRpbWVLZXkoKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAvKiBWYWx1ZSB0eXBlOiBXS0Rv
dWJsZVJlZiwgc2Vjb25kcyBzaW5jZSBKYW51YXJ5IDFzdCwgMTk3MCBVVEMgKi8KLVdLX0VYUE9S
VCBXS1N0cmluZ1JlZiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1l
S2V5KCk7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0
TW9kaWZpY2F0aW9uVGltZUtleSgpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CiAKIHR5cGVkZWYgdm9p
ZCAoKldLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnNGdW5j
dGlvbikoV0tBcnJheVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwotV0tfRVhQT1JUIHZvaWQgV0tL
ZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwg
V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2luc0Z1bmN0aW9u
IGZ1bmN0aW9uKTsKK1dLX0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldEtl
eVZhbHVlU3RvcmFnZU9yaWdpbnMoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVl
U3RvcmFnZU1hbmFnZXIsIHZvaWQqIGNvbnRleHQsIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdl
dEtleVZhbHVlU3RvcmFnZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlvbikgV0tfQ19BUElfREVQUkVD
QVRFRDsKIAogdHlwZWRlZiB2b2lkICgqV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFn
ZURldGFpbHNCeU9yaWdpbkZ1bmN0aW9uKShXS0FycmF5UmVmLCBXS0Vycm9yUmVmLCB2b2lkKik7
Ci1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWls
c0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyLCB2b2lkKiBjb250ZXh0LCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0
YWlsc0J5T3JpZ2luRnVuY3Rpb24gZnVuY3Rpb24pOworV0tfRVhQT1JUIHZvaWQgV0tLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVlU3RvcmFn
ZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlciwgdm9pZCogY29udGV4dCwgV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbkZ1bmN0aW9uIGZ1bmN0
aW9uKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCi1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
clJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbik7
Ci1XS19FWFBPUlQgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJEZWxldGVBbGxFbnRyaWVz
KFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZiBrZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKTsKK1dL
X0VYUE9SVCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmln
aW4oV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIsIFdL
U2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luKSBXS19DX0FQSV9ERVBSRUNBVEVEOworV0tfRVhQT1JU
IHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXJSZWYga2V5VmFsdWVTdG9yYWdlTWFuYWdlcikgV0tfQ19BUElfREVQUkVD
QVRFRDsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDQ0MmZj
OGY4NmM0Li42YjVhMGM4OWZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKQEAgLTI2LDY3ICsyNiwxOSBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldLUmVzb3VyY2VDYWNoZU1hbmFnZXIu
aCIKIAotI2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9y
ZS5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhUmVjb3Jk
LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLUmVzb3VyY2VDYWNo
ZU1hbmFnZXJHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OkFQSVR5cGUpOwotfQotCi1zdGF0aWMgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
dG9XZWJzaXRlRGF0YVR5cGVzKFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIp
Ci17Ci0gICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcyB7IFdl
YnNpdGVEYXRhVHlwZTo6TWVtb3J5Q2FjaGUgfTsKLQotICAgIGlmIChjYWNoZXNUb0NsZWFyID09
IFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyQWxsKQotICAgICAgICB3ZWJzaXRlRGF0YVR5cGVzLmFk
ZChXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSk7Ci0KLSAgICByZXR1cm4gd2Vic2l0ZURhdGFU
eXBlczsKKyAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0
Q2FjaGVPcmlnaW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5hZ2VyLCB2b2lk
KiBjb250ZXh0LCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zRnVuY3Rpb24g
Y2FsbGJhY2spCit2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnMoV0tS
ZXNvdXJjZUNhY2hlTWFuYWdlclJlZiwgdm9pZCosIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRD
YWNoZU9yaWdpbnNGdW5jdGlvbikKIHsKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gdG9J
bXBsKHJlaW50ZXJwcmV0X2Nhc3Q8V0tXZWJzaXRlRGF0YVN0b3JlUmVmPihjYWNoZU1hbmFnZXIp
KS0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHdlYnNpdGVEYXRhU3RvcmUuZmV0Y2hEYXRhKHRv
V2Vic2l0ZURhdGFUeXBlcyhXS1Jlc291cmNlQ2FjaGVzVG9DbGVhckFsbCksIHsgfSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShhdXRvIGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8
QVBJOjpPYmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IG9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykKLSAgICAgICAgICAgICAgICBzZWN1cml0eU9y
aWdpbnMuYXBwZW5kKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvcmlnaW4uc2VjdXJpdHlP
cmlnaW4oKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FsbGJhY2sodG9BUEkoQVBJOjpBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoc2VjdXJpdHlPcmlnaW5zKSkucHRyKCkpLCBudWxscHRyLCBjb250
ZXh0KTsKLSAgICB9KTsKIH0KIAotdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyQ2xlYXJDYWNo
ZUZvck9yaWdpbihXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFuYWdlciwgV0tTZWN1
cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xl
YXIpCit2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2luKFdLUmVz
b3VyY2VDYWNoZU1hbmFnZXJSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYsIFdLUmVzb3VyY2VDYWNo
ZXNUb0NsZWFyKQogewotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB0b0ltcGwocmVpbnRl
cnByZXRfY2FzdDxXS1dlYnNpdGVEYXRhU3RvcmVSZWY+KGNhY2hlTWFuYWdlcikpLT53ZWJzaXRl
RGF0YVN0b3JlKCk7Ci0KLSAgICBWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFSZWNvcmRz
OwotCi0gICAgewotICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRhUmVjb3JkOwotICAgICAg
ICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlLCB0b0ltcGwob3Jp
Z2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOwotCi0gICAgICAgIGRhdGFSZWNvcmRzLmFw
cGVuZChkYXRhUmVjb3JkKTsKLSAgICB9Ci0KLSAgICBpZiAoY2FjaGVzVG9DbGVhciA9PSBXS1Jl
c291cmNlQ2FjaGVzVG9DbGVhckFsbCkgewotICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCBkYXRh
UmVjb3JkOwotICAgICAgICBkYXRhUmVjb3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNo
ZSwgdG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKLQotICAgICAgICBk
YXRhUmVjb3Jkcy5hcHBlbmQoZGF0YVJlY29yZCk7Ci0gICAgfQotCi0gICAgd2Vic2l0ZURhdGFT
dG9yZS5yZW1vdmVEYXRhKHRvV2Vic2l0ZURhdGFUeXBlcyhjYWNoZXNUb0NsZWFyKSwgZGF0YVJl
Y29yZHMsIFtdIHsgfSk7CiB9CiAKLXZvaWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2Fj
aGVGb3JBbGxPcmlnaW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5hZ2VyLCBX
S1Jlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKQordm9pZCBXS1Jlc291cmNlQ2Fj
aGVNYW5hZ2VyQ2xlYXJDYWNoZUZvckFsbE9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJl
ZiwgV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXIpCiB7Ci0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9y
ZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vic2l0ZURhdGFTdG9yZVJlZj4oY2FjaGVN
YW5hZ2VyKSktPndlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92
ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKGNhY2hlc1RvQ2xlYXIpLCAtV2FsbFRpbWU6OmluZmlu
aXR5KCksIFtdIHsgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmgKaW5kZXggN2Y0YmI2YzUxYzguLjA5YmRmZmJi
NjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNl
Q2FjaGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tSZXNv
dXJjZUNhY2hlTWFuYWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXJfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdl
YktpdC9XS0RlcHJlY2F0ZWQuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsK
QEAgLTM4LDEzICszOSwxMyBAQCBlbnVtIHsKIH07CiB0eXBlZGVmIHVpbnQzMl90IFdLUmVzb3Vy
Y2VDYWNoZXNUb0NsZWFyOwogCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tSZXNvdXJjZUNhY2hlTWFu
YWdlckdldFR5cGVJRCgpOworV0tfRVhQT1JUIFdLVHlwZUlEIFdLUmVzb3VyY2VDYWNoZU1hbmFn
ZXJHZXRUeXBlSUQoKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiB0eXBlZGVmIHZvaWQgKCpXS1Jl
c291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zRnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdL
RXJyb3JSZWYsIHZvaWQqKTsKLVdLX0VYUE9SVCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJH
ZXRDYWNoZU9yaWdpbnMoV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBjb250ZXh0UmVmLCB2b2lk
KiBjb250ZXh0LCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zRnVuY3Rpb24g
ZnVuY3Rpb24pOworV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hl
T3JpZ2lucyhXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNvbnRleHRSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJHZXRDYWNoZU9yaWdpbnNGdW5jdGlvbiBmdW5jdGlv
bikgV0tfQ19BUElfREVQUkVDQVRFRDsKIAotV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUNhY2hl
TWFuYWdlckNsZWFyQ2FjaGVGb3JPcmlnaW4oV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBjYWNo
ZU1hbmdlciwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLUmVzb3VyY2VDYWNoZXNUb0Ns
ZWFyIGNhY2hlc1RvQ2xlYXIpOwotV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdl
ckNsZWFyQ2FjaGVGb3JBbGxPcmlnaW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVN
YW5hZ2VyLCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKTsKK1dLX0VYUE9S
VCB2b2lkIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJDbGVhckNhY2hlRm9yT3JpZ2luKFdLUmVzb3Vy
Y2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5nZXIsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2lu
LCBXS1Jlc291cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKSBXS19DX0FQSV9ERVBSRUNB
VEVEOworV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckNsZWFyQ2FjaGVGb3JB
bGxPcmlnaW5zKFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgY2FjaGVNYW5hZ2VyLCBXS1Jlc291
cmNlQ2FjaGVzVG9DbGVhciBjYWNoZXNUb0NsZWFyKSBXS19DX0FQSV9ERVBSRUNBVEVEOwogCiAj
aWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDE4N2U4MWEzODZjLi4zNGFl
NDEzZmM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmgiCiAKICNpbmNsdWRlICJBUElBcnJheS5oIgotI2luY2x1ZGUg
IkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIK
ICNpbmNsdWRlICJNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVk
ZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CkBAIC00MSwyOSArNDEsMzAgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUg
IldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVJlY29yZC5o
IgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5
cGUuaCIKICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCiBXS1R5cGVJRCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRUeXBlSUQoKQogewotICAg
IHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpBUElUeXBl
KTsKIH0KIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUdldERlZmF1
bHREYXRhU3RvcmUoKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0FQSShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKSk7
CiB9CiAKIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVOb25Q
ZXJzaXN0ZW50RGF0YVN0b3JlKCkKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkubGVha1JlZigp
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpj
cmVhdGVOb25QZXJzaXN0ZW50KCkubGVha1JlZigpKTsKIH0KIAogV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNyZWF0ZVdpdGhDb25maWd1cmF0aW9uKFdLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbikKIHsKICAgICBhdXRvIHNlc3Np
b25JRCA9IFdlYktpdDo6dG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5pc1BlcnNpc3RlbnQoKSA/IFBB
TDo6U2Vzc2lvbklEOjpnZW5lcmF0ZVBlcnNpc3RlbnRTZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lv
bklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25JRCgpOwotICAgIHJldHVybiBXZWJLaXQ6OnRv
QVBJKCZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZSgqV2ViS2l0Ojp0b0ltcGwoY29uZmln
dXJhdGlvbiksIHNlc3Npb25JRCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQ
SSgmV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoKldlYktpdDo6dG9JbXBsKGNvbmZp
Z3VyYXRpb24pLCBzZXNzaW9uSUQpLmxlYWtSZWYoKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUpCkBAIC04MywxMyArODQsMTMgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZgogCiBXS0hUVFBDb29raWVTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3Rv
cmVHZXRIVFRQQ29va2llU3RvcmUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikK
IHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+aHR0cENvb2tpZVN0b3JlKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5jb29raWVTdG9yZSgpKTsKIH0KIAogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlV2l0aENvbXBsZXRp
b25IYW5kbGVyKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wgZW5hYmxl
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVidWdNb2RlRnVu
Y3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShlbmFibGUsIFtjb250ZXh0
LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoZW5hYmxlLCBbY29udGV4dCwgY29t
cGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAg
ICAgfSk7CiAjZWxzZQpAQCAtMTAwLDcgKzEwMSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZVdpdGhDb21wbGV0aW9uSGFuZGxlcihX
CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NQcmV2YWxl
bnRSZXNvdXJjZUZvckRlYnVnTW9kZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0
aXN0aWNzRGVidWdNb2RlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUo
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29t
cGxldGlvbkhhbmRsZXJdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRQ
cmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0xMTAsNyArMTEx
LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoV0sKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc0xhc3RTZWVuKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdL
U3RyaW5nUmVmIGhvc3QsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzTGFzdFNlZW5GdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRMYXN0U2VlbihVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFNlY29uZHMgeyBzZWNvbmRzIH0sIFtj
b250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPnNldExhc3RTZWVuKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgU2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAg
LTEyMSw3ICsxMjIsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0
U2VlbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLAogdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCogY29u
dGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRnVuY3Rp
b24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUg
PSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKTsKIAogICAgIGlmICh2YWx1ZSkKICAgICAg
ICAgd2Vic2l0ZURhdGFTdG9yZS5zZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0g
ewpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhCiB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSwg
dm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRS
ZXNvdXJjZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvJiB3ZWJz
aXRlRGF0YVN0b3JlID0gKldlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZik7CiAKICAgICBpZiAo
dmFsdWUpCiAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUuc2V0VmVyeVByZXZhbGVudFJlc291cmNl
KFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNv
bXBsZXRpb25IYW5kbGVyXSB7CkBAIC0xNTcsNyArMTU4LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVEdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNp
dGVEYXRhU3RvcmVEdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Z1bmN0aW9uIGNhbGxiYWNrKQog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmR1bXBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKFtjb250ZXh0LCBjYWxsYmFja10gKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcykgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmR1bXBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKFtjb250ZXh0LCBjYWxsYmFja10gKGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcykgewogICAgICAgICBjYWxsYmFjayhXZWJLaXQ6OnRvQVBJKHJlc291
cmNlTG9hZFN0YXRpc3RpY3MuaW1wbCgpKSwgY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAt
MTY4LDcgKzE2OSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlRHVtcFJlc291cmNlTG9hZFN0
YXRpc3RpY3MoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yCiB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZUlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZUlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY2FsbGJhY2sp
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNQcmV2YWxlbnRSZXNvdXJj
ZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBj
YWxsYmFja10oYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+aXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ByZXZhbGVu
dFJlc291cmNlKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzUHJldmFsZW50UmVzb3VyY2UsIGNvbnRl
eHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTE3OSw3ICsxODAsNyBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZUlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhUwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50
UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYg
aG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUHJldmFs
ZW50UmVzb3VyY2VGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ZlcnlQcmV2
YWxlbnRSZXNvdXJjZSkgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzVmVy
eVByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzVmVyeVByZXZhbGVudFJlc291cmNlKSB7
CiAgICAgICAgIGNhbGxiYWNrKGlzVmVyeVByZXZhbGVudFJlc291cmNlLCBjb250ZXh0KTsKICAg
ICB9KTsKICNlbHNlCkBAIC0xOTAsNyArMTkxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGQK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3VicmVzb3Vy
Y2VVbmRlcihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBz
dWJyZXNvdXJjZUhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCwgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRl
ckZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgp
LmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBs
KHN1YnJlc291cmNlSG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0
b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lz
dGVyZWRBc1N1YnJlc291cmNlVW5kZXIpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5pc1JlZ2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIoVVJMKFVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChzdWJyZXNvdXJjZUhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNS
ZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzUmVnaXN0
ZXJlZEFzU3VicmVzb3VyY2VVbmRlciwgY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMjAx
LDcgKzIwMiw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJl
ZEFzU3VicmVzb3VyY2VVbmRlcihXS1dlYnNpdGVEYXRhU3RvCiB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgc3ViRnJhbWVIb3N0LCBXS1N0cmluZ1Jl
ZiB0b3BGcmFtZUhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlz
dGljc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXJGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5pc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIo
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChzdWJGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwodG9wRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwg
Y2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKSB7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxi
YWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcikgewogICAgICAgICBjYWxsYmFj
ayhpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIsIGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UK
QEAgLTIxMiw3ICsyMTMsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1Jl
Z2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoV0tXZWJzaXRlRGF0YVN0b3JlUgogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJv
bSwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUb0Z1bmN0aW9uIGNh
bGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmlzUmVnaXN0ZXJl
ZEFzUmVkaXJlY3RpbmdUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVk
RnJvbSktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3Rl
ZFRvKS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNS
ZWRpcmVjdGluZ1RvKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNSZWdp
c3RlcmVkQXNSZWRpcmVjdGluZ1RvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGly
ZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRp
cmVjdGVkVG8pLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVy
ZWRBc1JlZGlyZWN0aW5nVG8pIHsKICAgICAgICAgY2FsbGJhY2soaXNSZWdpc3RlcmVkQXNSZWRp
cmVjdGluZ1RvLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yMjMsNyArMjI0LDcgQEAg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNSZWRpcmVjdGlu
Z1RvKFdLV2Vic2l0ZURhdGFTdG9yZVIKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uRnVuY3Rpb24gY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAg
ICBhdXRvJiBkYXRhU3RvcmUgPSBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRl
RGF0YVN0b3JlKCk7CisgICAgYXV0byYgZGF0YVN0b3JlID0gKldlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZik7CiAKICAgICBpZiAodmFsdWUpCiAgICAgICAgIGRhdGFTdG9yZS5sb2dVc2VySW50
ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29u
dGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKQEAgLTI0MSw3ICsyNDIsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRl
RGF0YVN0b3JlUmVmCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hhc0hhZFVz
ZXJJbnRlcmFjdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmlu
Z1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NI
YXNIYWRVc2VySW50ZXJhY3Rpb25GdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFz
SGFkVXNlckludGVyYWN0aW9uKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
aGFzSGFkVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbikg
ewogICAgICAgICBjYWxsYmFjayhoYXNIYWRVc2VySW50ZXJhY3Rpb24sIGNvbnRleHQpOwogICAg
IH0pOwogI2Vsc2UKQEAgLTI1MiwxNCArMjUzLDE0IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
SXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFs
dWUpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0R3JhbmRmYXRoZXJl
ZChVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIHZhbHVlLCBbXSB7
IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldEdyYW5kZmF0aGVyZWQo
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCB2YWx1ZSwgW10geyB9
KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5k
ZmF0aGVyZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYg
aG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRm
YXRoZXJlZEZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFT
dG9yZSgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc0dyYW5kZmF0aGVyZWQp
IHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5oYXNIYWRVc2VySW50ZXJhY3Rp
b24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwg
Y2FsbGJhY2tdKGJvb2wgaXNHcmFuZGZhdGhlcmVkKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzR3Jh
bmRmYXRoZXJlZCwgY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMjcwLDQ5ICsyNzEsNDkg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmUKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3Qp
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U3ViZnJhbWVVbmRlclRv
cEZyYW1lRG9tYWluKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtdIHsg
fSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0U3ViZnJhbWVVbmRlclRv
cEZyYW1lRG9tYWluKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwg
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtdIHsg
fSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCkKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJh
bWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9KTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9
KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtdIHsgfSk7
CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0U3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJM
KFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbXSB7
IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0RnJvbShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkp
LCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5z
dHJpbmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVj
dGVkVG8pCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
KSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkp
LCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmco
KSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygp
KSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZy
b20pCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0VG9wRnJhbWVVbmlx
dWVSZWRpcmVjdEZyb20oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkp
LCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygp
KSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0RnJvbShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJp
bmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3Ry
aW5nKCkpLCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgZnJvbUhvc3QsIFdLU3RyaW5nUmVmIHRv
SG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Nyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25GdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGZyb21Ib3N0KS0+c3RyaW5n
KCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvSG9zdCktPnN0cmluZygpKSwgW2NvbnRl
eHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0Q3Jv
c3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChmcm9tSG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0
b0hvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFj
ayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0zMjMsNyArMzI0LDcgQEAgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bihXS1dlYnNpdGVEYXQKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWVU
b0xpdmVVc2VySW50ZXJhY3Rpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
ZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bihTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29u
ZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhj
b250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0zMzQsNyArMzM1LDcgQEAgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihXS1dlYnNp
dGVEYXRhU3RvcmUKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0
aXN0aWNzQW5kRGF0YVJlY29yZHMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
dm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0
aWNzQW5kRGF0YVJlY29yZHNGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3Np
bmcoW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFtjb250ZXh0LCBj
YWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBA
IC0zNDUsNyArMzQ2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUHJvY2Vz
c1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcyhXS1dlYnNpdGVEYXRhU3QKIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRp
c3RpY3NVcGRhdGVDb29raWVCbG9ja2luZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ29va2llQmxvY2tpbmdV
cGRhdGUoW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1w
bChkYXRhU3RvcmVSZWYpLT5zY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFtjb250ZXh0LCBj
b21wbGV0aW9uSGFuZGxlcl0oKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQp
OwogICAgIH0pOwogI2Vsc2UKQEAgLTM1NiwyMSArMzU3LDIxIEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnko
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5zdWJtaXRUZWxlbWV0cnkoKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT5zdWJtaXRUZWxlbWV0cnkoKTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVT
Y2FubmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wgdmFsdWUpCiB7
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1w
bChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0Tm90aWZ5UGFnZXNXaGVuRGF0
YVJlY29yZHNXZXJlU2Nhbm5lZCh2YWx1ZSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHZh
bHVlLCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc0lzUnVubmluZ1Rlc3QoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
Ym9vbCB2YWx1ZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c0lzUnVubmluZ1Rlc3RGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNp
dGVEYXRhU3RvcmUoKS5zZXRJc1J1bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdCh2YWx1
ZSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+c2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3QodmFsdWUsIFtjb250ZXh0
LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNl
CkBAIC0zODEsNDkgKzM4Miw0OSBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3Rp
Y3NJc1J1bm5pbmdUZXN0KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rvcgogdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVE
YXRhUmVjb3Jkc1JlbW92YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9v
bCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTaG91bGRD
bGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSwgW10oKSB7IH0p
OworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFNob3VsZENsYXNzaWZ5UmVz
b3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKHZhbHVlLCBbXSgpIHsgfSk7CiAjZW5kaWYK
IH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVu
VGVsZW1ldHJ5V2FzQ2FwdHVyZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
Ym9vbCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXROb3Rp
ZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCh2YWx1ZSwgW10oKSB7IH0pOworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdh
c0NhcHR1cmVkKHZhbHVlLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFs
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzKQogewog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE1pbmltdW1UaW1lQmV0d2VlbkRh
dGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHsgc2Vjb25kcyB9LCBbXSgpIHsgfSk7CisgICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29y
ZHNSZW1vdmFsKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMpCiB7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29u
ZHMgeyBzZWNvbmRzIH0sIFtdKCkgeyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyB7IHNlY29uZHMgfSwgW10oKSB7IH0p
OwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc01heFN0
YXRpc3RpY3NFbnRyaWVzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVuc2ln
bmVkIGVudHJpZXMpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TWF4
U3RhdGlzdGljc0VudHJpZXMoZW50cmllcywgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKGVudHJpZXMsIFtdKCkgeyB9
KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcnVu
ZUVudHJpZXNEb3duVG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdW5zaWdu
ZWQgZW50cmllcykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQcnVu
ZUVudHJpZXNEb3duVG8oZW50cmllcywgW10oKSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPnNldFBydW5lRW50cmllc0Rvd25UbyhlbnRyaWVzLCBbXSgpIHsgfSk7CiAj
ZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9y
eUFuZFBlcnNpc3RlbnRTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnRTdG9yZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViS2l0
OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6OlllcywgW2NvbnRleHQsIGNhbGxiYWNrXSgp
IHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zY2hlZHVsZUNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMs
IFtjb250ZXh0LCBjYWxsYmFja10oKSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAg
IH0pOwogI2Vsc2UKQEAgLTQzNCw3ICs0MzUsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlKFdLV2Vic2l0ZURhdGFTdAog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnRTdG9yZU1vZGlmaWVkU2luY2VIb3VycyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCB1bnNpZ25lZCBob3Vycywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnNG
dW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5z
Y2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lOjpub3coKSAtIFNlY29u
ZHM6OmZyb21Ib3Vycyhob3VycyksIFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNz
OjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGltZTo6bm93
KCkgLSBTZWNvbmRzOjpmcm9tSG91cnMoaG91cnMpLCBXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVy
U3RhdGlzdGljczo6WWVzLCBbY29udGV4dCwgY2FsbGJhY2tdKCkgewogICAgICAgICBjYWxsYmFj
ayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00NDUsNyArNDQ2LDcgQEAgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1v
ZGlmaWVkU2luY2VIb3UKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhy
b3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdo
V2Vic2l0ZURhdGFSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAgICAgT3B0aW9uU2V0PFdl
YktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlw
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIFdhbGxUaW1lOjpm
cm9tUmF3U2Vjb25kcygwKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0YShkYXRhVHlwZXMsIFdhbGxUaW1lOjpmcm9tUmF3
U2Vjb25kcygwKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRl
eHQpOwogICAgIH0pOwogfQpAQCAtNDUzLDcgKzQ1NCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbChXS1dlYnNpdGVEYXRh
U3RvCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVz
dGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0
LCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NEZWxldGVDb29raWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNr
KQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmRlbGV0ZUNvb2tpZXNGb3JU
ZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgaW5jbHVk
ZUh0dHBPbmx5Q29va2llcywgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBbY29u
dGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiAj
ZWxzZQpAQCAtNDY0LDcgKzQ2NSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c0RlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkCiB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2UoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZUZ1bmN0aW9uIGNhbGxiYWNr
KQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhhc0xvY2FsU3RvcmFnZUZv
clRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29u
dGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzTG9jYWxTdG9yYWdlKSB7CisgICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+aGFzTG9jYWxTdG9yYWdlRm9yVGVzdGluZyhVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBo
YXNMb2NhbFN0b3JhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soaGFzTG9jYWxTdG9yYWdlLCBjb250
ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00NzUsNyArNDc2LDcgQEAgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmUKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdl
Q2FwKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VD
YXBGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KS5zZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHsgc2Vjb25k
cyB9LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5zZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHsgc2Vj
b25kcyB9LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7
CiAgICAgfSk7CiAjZWxzZQpAQCAtNDg2LDcgKzQ4Nyw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb24o
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lv
bkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgp
Lmhhc0lzb2xhdGVkU2Vzc2lvbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSXNvbGF0ZWRTZXNz
aW9uKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aGFzSXNvbGF0ZWRTZXNz
aW9uRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNJc29sYXRlZFNlc3Npb24pIHsKICAgICAgICAg
Y2FsbGJhY2soaGFzSXNvbGF0ZWRTZXNzaW9uLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBA
IC01MDEsNyArNTAyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRU
b0NvbnNpc3RlbnRTdGF0ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGEKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAKLSAgICBhdXRvJiBzdG9yZSA9IFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBhdXRvJiBz
dG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpOwogICAgIHN0b3JlLmNsZWFyUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0luV2ViUHJvY2Vzc2VzKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBj
YWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIHN0b3JlLnJlc2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRDcm9zc1NpdGVM
b2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoW2NhbGxiYWNrQWdncmVnYXRvciA9IGNh
bGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CkBAIC01MTYsNyArNTE3LDcgQEAgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGEKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsRmV0
Y2hDYWNoZXMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlRmV0Y2hDYWNoZVJlbW92YWxGdW5jdGlvbiBjYWxs
YmFjaykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBl
cyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZTsKLSAgICBXZWJLaXQ6OnRvSW1w
bChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMs
IC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6
aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRl
eHQpOwogICAgIH0pOwogfQpAQCAtNTI4LDcgKzUyOSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlUmVtb3ZlRmV0Y2hDYWNoZUZvck9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlCiAgICAgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IGRhdGFSZWNvcmRzID0g
eyBXVEZNb3ZlKGRhdGFSZWNvcmQpIH07CiAKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRl
RGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZTsK
LSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVt
b3ZlRGF0YShkYXRhVHlwZXMsIGRhdGFSZWNvcmRzLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgZGF0
YVJlY29yZHMsIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0
KTsKICAgICB9KTsKIH0KQEAgLTUzNiw3ICs1MzcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVJlbW92ZUZldGNoQ2FjaGVGb3JPcmlnaW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURh
dGFTdG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFjayBjYWxsYmFjaykKIHsKICAg
ICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6
V2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXM7Ci0gICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCAt
V2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6Omlu
ZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgIGlmIChjYWxsYmFjaykKICAgICAg
ICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CkBAIC01NDUsNyArNTQ2LDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmUKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9y
YWdlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdL
V2Vic2l0ZURhdGFTdG9yZVJlbW92ZUxvY2FsU3RvcmFnZUNhbGxiYWNrIGNhbGxiYWNrKQogewog
ICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0
OjpXZWJzaXRlRGF0YVR5cGU6OkxvY2FsU3RvcmFnZTsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxs
VGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5p
dHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGlmIChjYWxsYmFjaykKICAgICAg
ICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwpAQCAtNTU1LDcgKzU1Niw3IEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpX
ZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zOwotICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRhdGFU
eXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxU
aW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2so
Y29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTY2LDcgKzU2Nyw3IEBAIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlUmVtb3ZlQWxsU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmCiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdp
bnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFjaykKIHsK
LSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZmV0
Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgeyB9LCBbY29udGV4dCwg
Y2FsbGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+ZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgeyB9
LCBbY29udGV4dCwgY2FsbGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CiAgICAgICAgIFZlY3Rv
cjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7CiAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7CiAgICAgICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIG9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykKQEAgLTU4MCw3ICs1ODEsNyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplRm9yT3JpZ2luKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcgogewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNp
dGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucyA9IFdlYktpdDo6V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbjo6Q29tcHV0ZVNpemVzOwogCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLmZldGNoRGF0YShXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6
RE9NQ2FjaGUsIGZldGNoT3B0aW9ucywgW29yaWdpbiwgY29udGV4dCwgY2FsbGJhY2tdIChhdXRv
IGRhdGFSZWNvcmRzKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZmV0Y2hE
YXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgZmV0Y2hPcHRpb25zLCBbb3Jp
Z2luLCBjb250ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0YVJlY29yZHMpIHsKICAgICAgICAgYXV0
byBvcmlnaW5EYXRhID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmco
V2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+c3RyaW5nKCkpLT5kYXRhKCk7CiAgICAgICAgIGZvciAo
YXV0byYgZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIHJlY29yZE9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykgewpAQCAtNTk3LDIzICs1
OTgsMjMgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdp
bihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3IKIAogV0tTdHJpbmdSZWYgV0tXZWJzaXRl
RGF0YVN0b3JlQ29weVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGll
ZEFQSShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5KCkpOwogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuc2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShXZWJLaXQ6OnRvSW1wbChz
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KS0+c3RyaW5nKCkpOworICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkoV2ViS2l0Ojp0b0ltcGwoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSkt
PnN0cmluZygpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRQZXJPcmlnaW5TdG9y
YWdlUXVvdGEoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdWludDY0X3QgcXVv
dGEpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldFBlck9yaWdpblN0b3JhZ2VRdW90YShxdW90YSk7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+c2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKHF1b3RhKTsKIH0KIAogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsbERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbnMo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKICNpZiBFTkFCTEUoREVWSUNF
X09SSUVOVEFUSU9OKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVE
YXRhU3RvcmUoKS5kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIoKS5j
bGVhclBlcm1pc3Npb25zKCk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZGV2
aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKCkuY2xlYXJQZXJtaXNzaW9u
cygpOwogI2VuZGlmCiB9CiAKQEAgLTcxMywxNCArNzE0LDE0IEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihXS1dlYnNpdGVEYXRh
U3RvcmVSCiAgICAgICAgIGNvbmZpZ3VyYXRpb24ubmZjID0gV1RGTW92ZShuZmMpOwogICAgIH0K
IAotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlv
bikpOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAjZW5kaWYKIH0K
IAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbnNUaHJvdWdo
V2Vic2l0ZURhdGFSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Ro
cm91Z2hXZWJzaXRlRGF0YVJlbW92YWxGdW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlOjpBZENsaWNrQXR0cmlidXRpb25zOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6
OmZyb21SYXdTZWNvbmRzKDApLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21S
YXdTZWNvbmRzKDApLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29u
dGV4dCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVQb2xpY2llcy5jcHAKaW5kZXggYWVhNGI4YjczZjIuLmQ2ZmVkYzMwOGFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2ll
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNp
ZXMuY3BwCkBAIC0yNywxMiArMjcsMTIgQEAKICNpbmNsdWRlICJXS1dlYnNpdGVQb2xpY2llcy5o
IgogCiAjaW5jbHVkZSAiQVBJRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRh
U3RvcmUuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJXS0FycmF5LmgiCiAjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5Lmgi
CiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgi
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwu
Y3BwCmluZGV4IDhjMjA1ZmRiNDZmLi5mMTgwNzZiYWZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvY3VybC9XS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZkN1cmwuY3BwCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiV0tXZWJzaXRlRGF0YVN0b3JlUmVmQ3VybC5oIgogCi0jaW5jbHVkZSAiQVBJV2Vic2l0
ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0N1cmxQcm94eVNldHRpbmdzLmg+CiAjaW5j
bHVkZSA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjODVhYTQ0NGMxOC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgL2Rldi9udWxsCkBAIC0x
LDE5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNp
b24uaCIKLSNpbmNsdWRlICJTYW5kYm94VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLQotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0jaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBBUEkgewotCi1OU1N0cmluZyAqV2ViRGF0YWJhc2VE
aXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViRGF0YWJhc2VEaXJlY3RvcnkiOwotTlNTdHJpbmcg
KldlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TG9jYWxTdG9yYWdlRGF0
YWJhc2VQYXRoUHJlZmVyZW5jZUtleSI7Ci1OU1N0cmluZyAqV2ViS2l0TWVkaWFDYWNoZURpcmVj
dG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5IjsKLU5TU3RyaW5n
ICpXZWJLaXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkiOwotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCi17Ci0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICAvLyBUaGlzIHF1aXJrIHVzZWQgdG8gbWFrZSB0aGVzZSBhcHBzIHNoYXJl
IGFwcGxpY2F0aW9uIGNhY2hlIHN0b3JhZ2UsIGJ1dCBkb2Vzbid0IGFjY29tcGxpc2ggdGhhdCBh
bnkgbW9yZS4KLSAgICAvLyBQcmVzZXJ2aW5nIGl0IGF2b2lkcyB0aGUgbmVlZCB0byBtaWdyYXRl
IGRhdGEgd2hlbiB1cGdyYWRpbmcuCi0gICAgLy8gRklYTUU6IElkZWFsbHkgd2Ugc2hvdWxkIGp1
c3QgaGF2ZSBTYWZhcmksIFdlYkFwcCwgYW5kIHdlYmJvb2ttYXJrc2QgY3JlYXRlIGEgZGF0YSBz
dG9yZSB3aXRoCi0gICAgLy8gdGhpcyBhcHBsaWNhdGlvbiBjYWNoZSBwYXRoLCBidXQgdGhhdCdz
IG5vdCBzdXBwb3J0ZWQgYXMgb2YgcmlnaHQgbm93LgotICAgIGlmIChXZWJDb3JlOjpJT1NBcHBs
aWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNX
ZWJBcHAoKSB8fCBXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNXZWJCb29rbWFya3NEKCkpIHsK
LSAgICAgICAgTlNTdHJpbmcgKmNhY2hlUGF0aCA9IFtOU0hvbWVEaXJlY3RvcnkoKSBzdHJpbmdC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJMaWJyYXJ5L0NhY2hlcy9jb20uYXBwbGUuV2ViQXBw
Q2FjaGUiXTsKLQotICAgICAgICByZXR1cm4gV2ViS2l0OjpzdHJpbmdCeVJlc29sdmluZ1N5bWxp
bmtzSW5QYXRoKGNhY2hlUGF0aC5zdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoKTsKLSAgICB9Ci0j
ZW5kaWYKLQotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bigiT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJu
IGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJDYWNoZVN0b3JhZ2UiKTsK
LX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKCJOZXR3b3JrQ2FjaGUiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB0ZW1wRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUNhY2hlIik7Ci19Ci0KLVdURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgp
Ci17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKCJJbmRleGVkREIiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQotewotICAgIHJldHVybiBj
YWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiU2VydmljZVdvcmtlcnMiKTsK
LX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKCJMb2NhbFN0b3JhZ2UiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVy
biB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTWVkaWFLZXlz
Iik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKCJXZWJTUUwiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQotewotICAg
IHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQotewotICAgIHJldHVy
biB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJKYXZhU2NyaXB0Q29yZURl
YnVnIiwgRG9udENyZWF0ZURpcmVjdG9yeSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OnRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpT
dHJpbmcmIGRpcmVjdG9yeU5hbWUsIFNob3VsZENyZWF0ZURpcmVjdG9yeSBzaG91bGRDcmVhdGVE
aXJlY3RvcnkpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAg
c3RhdGljIE5TVVJMICp0ZW1wVVJMOwotICAgIAotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tl
biwgXnsKLSAgICAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6TlNUZW1w
b3JhcnlEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwotICAgICAgICBpZiAoIXVybCkKLSAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIAotICAgICAg
ICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7Ci0gICAgICAgICAgICBOU1N0
cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVu
dGlmaWVyOwotICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQotICAgICAgICAgICAg
ICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vz
c05hbWU7Ci0gICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIHRlbXBVUkwgPSBbW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJX
ZWJLaXQiIGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsKLSAgICB9KTsKLSAgICAKLSAgICBOU1VS
TCAqdXJsID0gW3RlbXBVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5h
bWUgaXNEaXJlY3Rvcnk6WUVTXTsKLQotICAgIGlmIChzaG91bGRDcmVhdGVEaXJlY3RvcnkgPT0g
Q3JlYXRlRGlyZWN0b3J5Ci0gICAgICAgICYmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVz
OllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkpCi0gICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwotICAgIAotICAgIHJldHVybiB1
cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Ci19Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQotewotICAgIHN0YXRpYyBk
aXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBOU1VSTCAqY2FjaGVVUkw7Ci0K
LSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIE5TVVJMICp1cmwgPSBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9yeTpOU0NhY2hlc0Rp
cmVjdG9yeSBpbkRvbWFpbjpOU1VzZXJEb21haW5NYXNrIGFwcHJvcHJpYXRlRm9yVVJMOm51bGxw
dHIgY3JlYXRlOk5PIGVycm9yOm51bGxwdHJdOwotICAgICAgICBpZiAoIXVybCkKLSAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICAgICAgaWYgKCFXZWJLaXQ6
OnByb2Nlc3NIYXNDb250YWluZXIoKSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlk
ZW50aWZpZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKLSAgICAg
ICAgICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKLSAgICAgICAgICAgICAgICBidW5kbGVJZGVu
dGlmaWVyID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOwotICAgICAg
ICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRlbnRp
ZmllciBpc0RpcmVjdG9yeTpZRVNdOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FjaGVVUkwgPSBb
W3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllF
U10gcmV0YWluXTsKLSAgICB9KTsKLQotICAgIE5TVVJMICp1cmwgPSBbY2FjaGVVUkwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKLSAg
ICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRV
Ukw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJy
b3I6bnVsbHB0cl0pCi0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3Rv
cnkgJUAiLCB1cmwpOwotCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbjsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJp
bmcmIGRpcmVjdG9yeU5hbWUpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47Ci0gICAgc3RhdGljIE5TVVJMICp3ZWJzaXRlRGF0YVVSTDsKLQotICAgIGRpc3BhdGNoX29u
Y2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TTGlicmFyeURpcmVjdG9yeSBpbkRvbWFp
bjpOU1VzZXJEb21haW5NYXNrIGFwcHJvcHJpYXRlRm9yVVJMOm51bGxwdHIgY3JlYXRlOk5PIGVy
cm9yOm51bGxwdHJdOwotICAgICAgICBpZiAoIXVybCkKLSAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU107Ci0KLSAgICAgICAgaWYgKCFX
ZWJLaXQ6OnByb2Nlc3NIYXNDb250YWluZXIoKSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKmJ1
bmRsZUlkZW50aWZpZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsK
LSAgICAgICAgICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKLSAgICAgICAgICAgICAgICBidW5k
bGVJZGVudGlmaWVyID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOwot
ICAgICAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxl
SWRlbnRpZmllciBpc0RpcmVjdG9yeTpZRVNdOwotICAgICAgICB9Ci0KLSAgICAgICAgd2Vic2l0
ZURhdGFVUkwgPSBbW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJzaXRlRGF0
YSIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOwotICAgIH0pOwotCi0gICAgTlNVUkwgKnVybCA9
IFt3ZWJzaXRlRGF0YVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFt
ZSBpc0RpcmVjdG9yeTpZRVNdOwotICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVz
OllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKLSAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7Ci0KLSAgICByZXR1cm4gdXJsLmFi
c29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwotfQotCi19IC8vIG5hbWVz
cGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDM3NDk3N2IzNzdlLi5kMjQzN2Y3NmYwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlLm1tCkBAIC0xMDUsMTcgKzEwNSwxNyBAQCBwcml2YXRlOgogCiArIChXS1dlYnNp
dGVEYXRhU3RvcmUgKilkZWZhdWx0RGF0YVN0b3JlCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkpOworICAgIHJldHVybiB3cmFw
cGVyKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpKTsKIH0KIAog
KyAoV0tXZWJzaXRlRGF0YVN0b3JlICopbm9uUGVyc2lzdGVudERhdGFTdG9yZQogewotICAgIHJl
dHVybiB3cmFwcGVyKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERh
dGFTdG9yZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcihXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OmNyZWF0ZU5vblBlcnNpc3RlbnQoKSk7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT5BUEk6OldlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0YVN0b3Jl
KCk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPldlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6fldl
YnNpdGVEYXRhU3RvcmUoKTsKIAogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KQEAgLTE2OSw3ICsx
NjksNyBAQCBwcml2YXRlOgogCiAtIChXS0hUVFBDb29raWVTdG9yZSAqKWh0dHBDb29raWVTdG9y
ZQogewotICAgIHJldHVybiB3cmFwcGVyKF93ZWJzaXRlRGF0YVN0b3JlLT5odHRwQ29va2llU3Rv
cmUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUtPmNvb2tpZVN0b3Jl
KCkpOwogfQogCiBzdGF0aWMgV2FsbFRpbWUgdG9TeXN0ZW1DbG9ja1RpbWUoTlNEYXRlICpkYXRl
KQpAQCAtMTg2LDcgKzE4Niw3IEBAIHN0YXRpYyBXYWxsVGltZSB0b1N5c3RlbUNsb2NrVGltZShO
U0RhdGUgKmRhdGUpCiAtICh2b2lkKXJlbW92ZURhdGFPZlR5cGVzOihOU1NldCAqKWRhdGFUeXBl
cyBtb2RpZmllZFNpbmNlOihOU0RhdGUgKilkYXRlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJD
b3B5ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBfd2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRh
VHlwZXMoZGF0YVR5cGVzKSwgdG9TeXN0ZW1DbG9ja1RpbWUoZGF0ZSA/IGRhdGUgOiBbTlNEYXRl
IGRpc3RhbnRQYXN0XSksIFtjb21wbGV0aW9uSGFuZGxlckNvcHldIHsKKyAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+cmVtb3ZlRGF0YShXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMp
LCB0b1N5c3RlbUNsb2NrVGltZShkYXRlID8gZGF0ZSA6IFtOU0RhdGUgZGlzdGFudFBhc3RdKSwg
W2NvbXBsZXRpb25IYW5kbGVyQ29weV0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHko
KTsKICAgICB9KTsKIH0KQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6
V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNv
cgogewogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKTsKIAotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucmVtb3ZlRGF0YShXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCB0b1dl
YnNpdGVEYXRhUmVjb3JkcyhkYXRhUmVjb3JkcyksIFtjb21wbGV0aW9uSGFuZGxlckNvcHldIHsK
KyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+cmVtb3ZlRGF0YShXZWJLaXQ6OnRvV2Vic2l0ZURhdGFU
eXBlcyhkYXRhVHlwZXMpLCB0b1dlYnNpdGVEYXRhUmVjb3JkcyhkYXRhUmVjb3JkcyksIFtjb21w
bGV0aW9uSGFuZGxlckNvcHldIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KCk7CiAg
ICAgfSk7CiB9CkBAIC0yNDAsMTIgKzI0MCwxMiBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vi
c2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgog
CiArIChCT09MKV9kZWZhdWx0RGF0YVN0b3JlRXhpc3RzCiB7Ci0gICAgcmV0dXJuIEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpOworICAgIHJldHVybiBXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKIH0KIAogKyAo
dm9pZClfZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcKIHsKLSAgICByZXR1cm4gQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOwor
ICAgIHJldHVybiBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHREYXRhU3Rv
cmVGb3JUZXN0aW5nKCk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhDb25maWd1cmF0
aW9uOihfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KQEAg
LTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+
IHRvV2Vic2l0ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0byBjb25maWcg
PSBjb25maWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKSA6IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb246OmNyZWF0ZSgpOworICAgIGF1dG8gY29uZmlnID0gY29uZmlndXJhdGlvbi5p
c1BlcnNpc3RlbnQgPyBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVD
b25maWd1cmF0aW9uKCkgOiBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpj
cmVhdGUoKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKGNvbmZpZy0+aXNQZXJzaXN0ZW50KCkgPT0g
Y29uZmlndXJhdGlvbi5pc1BlcnNpc3RlbnQpOwogCkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGlj
IFZlY3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiB0b1dlYnNpdGVEYXRhUmVjb3JkcyhO
U0FycmF5ICpkYXRhUmVjb3IKIAogICAgIGF1dG8gc2Vzc2lvbklEID0gY29uZmlndXJhdGlvbi5p
c1BlcnNpc3RlbnQgPyBQQUw6OlNlc3Npb25JRDo6Z2VuZXJhdGVQZXJzaXN0ZW50U2Vzc2lvbklE
KCkgOiBQQUw6OlNlc3Npb25JRDo6Z2VuZXJhdGVFcGhlbWVyYWxTZXNzaW9uSUQoKTsKIAotICAg
IEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPihz
ZWxmLCBXVEZNb3ZlKGNvbmZpZyksIHNlc3Npb25JRCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0
cnVjdEluV3JhcHBlcjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+KHNlbGYsIFdURk1vdmUoY29u
ZmlnKSwgc2Vzc2lvbklEKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMzI1LDcgKzMyNSw3
IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9XZWJzaXRlRGF0
YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAgICAgaWYgKG9wdGlvbnMgJiBfV0tXZWJzaXRl
RGF0YVN0b3JlRmV0Y2hPcHRpb25Db21wdXRlU2l6ZXMpCiAgICAgICAgIGZldGNoT3B0aW9ucy5h
ZGQoV2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpOwogCi0gICAg
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0Ojp0
b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwgZmV0Y2hPcHRpb25zLCBbY29tcGxldGlvbkhh
bmRsZXJDb3B5ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlckNvcHkpXShhdXRvIHdlYnNpdGVE
YXRhUmVjb3JkcykgeworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5mZXRjaERhdGEoV2ViS2l0Ojp0
b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwgZmV0Y2hPcHRpb25zLCBbY29tcGxldGlvbkhh
bmRsZXJDb3B5ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlckNvcHkpXShhdXRvIHdlYnNpdGVE
YXRhUmVjb3JkcykgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gZWxlbWVu
dHM7CiAgICAgICAgIGVsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkod2Vic2l0ZURhdGFS
ZWNvcmRzLnNpemUoKSk7CiAKQEAgLTMzOCwxOCArMzM4LDE4IEBAIHN0YXRpYyBWZWN0b3I8V2Vi
S2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0
YVJlY29yCiAKIC0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkCiB7Ci0gICAg
cmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7CiB9CiAKIC0gKHZvaWQpX3NldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVu
YWJsZWQpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChlbmFibGVkKTsKIH0KIAogLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rl
YnVnTW9kZQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgcmV0
dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZSgpOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSgpOwogI2Vsc2UKICAgICByZXR1cm4gTk87CiAjZW5k
aWYKQEAgLTM1OCw3ICszNTgsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFS
ZWNvcmQ+IHRvV2Vic2l0ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogLSAodm9pZClf
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTooQk9PTCllbmFibGVkCiB7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoZW5h
YmxlZCk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
ZWJ1Z01vZGUoZW5hYmxlZCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFibGVkKTsKICNl
bmRpZgpAQCAtMzY2LDEwNiArMzY2LDEwNiBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0
ZURhdGFSZWNvcmQ+IHRvV2Vic2l0ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogCiAt
IChOU1VJbnRlZ2VyKV9wZXJPcmlnaW5TdG9yYWdlUXVvdGEKIHsKLSAgICByZXR1cm4gX3dlYnNp
dGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZXJPcmlnaW5TdG9yYWdlUXVvdGEoKTsK
KyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPnBlck9yaWdpblN0b3JhZ2VRdW90YSgpOwog
fQogCiAtICh2b2lkKV9zZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGE6KE5TVUludGVnZXIpc2l6ZQog
ewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UGVyT3JpZ2lu
U3RvcmFnZVF1b3RhKHNpemUpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRQZXJPcmlnaW5T
dG9yYWdlUXVvdGEoc2l6ZSk7CiB9CiAKIC0gKE5TU3RyaW5nICopX2NhY2hlU3RvcmFnZURpcmVj
dG9yeQogewotICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgp
LmNhY2hlU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+
Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCk7CiB9CiAKIC0gKHZvaWQpX3NldENhY2hlU3RvcmFnZURp
cmVjdG9yeTooTlNTdHJpbmcgKilkaXJlY3RvcnkKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShkaXJlY3RvcnkpOwor
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoZGlyZWN0b3J5
KTsKIH0KIAogLSAoTlNTdHJpbmcgKilfc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eQogewotICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKKyAgICByZXR1cm4gX3dlYnNpdGVE
YXRhU3RvcmUtPnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKIH0KIAogLSAo
dm9pZClfc2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTooTlNTdHJpbmcgKilk
aXJlY3RvcnkKIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNl
dFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShkaXJl
Y3RvcnkpOwogfQogCiAtICh2b2lkKV9zZXRCb3VuZEludGVyZmFjZUlkZW50aWZpZXI6KE5TU3Ry
aW5nICopaWRlbnRpZmllcgogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkuc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT5zZXRCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoaWRlbnRpZmllcik7CiB9
CiAKIC0gKE5TU3RyaW5nICopX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllcgogewotICAgIHJldHVy
biBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmJvdW5kSW50ZXJmYWNlSWRl
bnRpZmllcigpOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+Ym91bmRJbnRlcmZhY2VJ
ZGVudGlmaWVyKCk7CiB9CiAKIC0gKHZvaWQpX3NldEFsbG93c0NlbGx1bGFyQWNjZXNzOihCT09M
KWFsbG93cwogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0
QWxsb3dzQ2VsbHVsYXJBY2Nlc3MoYWxsb3dzID8gV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vz
czo6WWVzIDogV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6Tm8pOworICAgIF93ZWJzaXRl
RGF0YVN0b3JlLT5zZXRBbGxvd3NDZWxsdWxhckFjY2VzcyhhbGxvd3MgPyBXZWJLaXQ6OkFsbG93
c0NlbGx1bGFyQWNjZXNzOjpZZXMgOiBXZWJLaXQ6OkFsbG93c0NlbGx1bGFyQWNjZXNzOjpObyk7
CiB9CiAKIC0gKEJPT0wpX2FsbG93c0NlbGx1bGFyQWNjZXNzCiB7Ci0gICAgcmV0dXJuIF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYWxsb3dzQ2VsbHVsYXJBY2Nlc3MoKSA9
PSBXZWJLaXQ6OkFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXM7CisgICAgcmV0dXJuIF93ZWJzaXRl
RGF0YVN0b3JlLT5hbGxvd3NDZWxsdWxhckFjY2VzcygpID09IFdlYktpdDo6QWxsb3dzQ2VsbHVs
YXJBY2Nlc3M6OlllczsKIH0KIAogLSAodm9pZClfc2V0UHJveHlDb25maWd1cmF0aW9uOihOU0Rp
Y3Rpb25hcnkgKiljb25maWd1cmF0aW9uCiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKS5zZXRQcm94eUNvbmZpZ3VyYXRpb24oKF9fYnJpZGdlIENGRGljdGlvbmFy
eVJlZiljb25maWd1cmF0aW9uKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UHJveHlDb25m
aWd1cmF0aW9uKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpY29uZmlndXJhdGlvbik7CiB9CiAK
IC0gKE5TU3RyaW5nICopX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcgogewotICAg
IHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNvdXJjZUFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcigpOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+
c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CiB9CiAKIC0gKHZvaWQpX3NldFNv
dXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyCiB7
Ci0gICAgaWYgKCFfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFNvdXJj
ZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICBpZiAoIV93ZWJz
aXRlRGF0YVN0b3JlLT5zZXRTb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoaWRlbnRp
ZmllcikpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0dlbmVyaWNFeGNlcHRpb24gZm9y
bWF0OkAiX3NldFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciBjYW5ub3QgYmUgY2Fs
bGVkIGFmdGVyIG5ldHdvcmtpbmcgaGFzIGJlZ3VuIl07CiB9CiAKIC0gKE5TU3RyaW5nICopX3Nv
dXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcgogewotICAgIHJldHVybiBfd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllcigpOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+c291cmNlQXBwbGlj
YXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7CiB9CiAKIC0gKHZvaWQpX3NldFNvdXJjZUFwcGxp
Y2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyCiB7Ci0gICAg
aWYgKCFfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFNvdXJjZUFwcGxp
Y2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICBpZiAoIV93ZWJzaXRl
RGF0YVN0b3JlLT5zZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoaWRlbnRp
ZmllcikpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0dlbmVyaWNFeGNlcHRpb24gZm9y
bWF0OkAiX3NldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciBjYW5ub3QgYmUg
Y2FsbGVkIGFmdGVyIG5ldHdvcmtpbmcgaGFzIGJlZ3VuIl07CiB9CiAKIC0gKHZvaWQpX3NldEFs
bG93c1RMU0ZhbGxiYWNrOihCT09MKWFsbG93cwogewotICAgIGlmICghX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRBbGxvd3NUTFNGYWxsYmFjayhhbGxvd3MpKQorICAg
IGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPnNldEFsbG93c1RMU0ZhbGxiYWNrKGFsbG93cykpCiAg
ICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0dlbmVyaWNFeGNlcHRpb24gZm9ybWF0OkAiX3Nl
dEFsbG93c1RMU0ZhbGxiYWNrIGNhbm5vdCBiZSBjYWxsZWQgYWZ0ZXIgbmV0d29ya2luZyBoYXMg
YmVndW4iXTsKIH0KIAogLSAoQk9PTClfYWxsb3dzVExTRmFsbGJhY2sKIHsKLSAgICByZXR1cm4g
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5hbGxvd3NUTFNGYWxsYmFjaygp
OworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+YWxsb3dzVExTRmFsbGJhY2soKTsKIH0K
IAogLSAoTlNEaWN0aW9uYXJ5ICopX3Byb3h5Q29uZmlndXJhdGlvbgogewotICAgIHJldHVybiAo
X19icmlkZ2UgTlNEaWN0aW9uYXJ5ICopX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3Rv
cmUoKS5wcm94eUNvbmZpZ3VyYXRpb24oKTsKKyAgICByZXR1cm4gKF9fYnJpZGdlIE5TRGljdGlv
bmFyeSAqKV93ZWJzaXRlRGF0YVN0b3JlLT5wcm94eUNvbmZpZ3VyYXRpb24oKTsKIH0KIAogLSAo
TlNVUkwgKilfaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gW05TVVJM
IGZpbGVVUkxXaXRoUGF0aDpfd2Vic2l0ZURhdGFTdG9yZS0+aW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOworICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoOl93ZWJzaXRlRGF0YVN0b3JlLT5jb25maWd1cmF0aW9uKCkuaW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwogfQogCiAtICh2b2lkKV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5OihCT09MKXZhbHVlCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRl
RGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwor
ICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKTsKICAgICBpZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ4MCwxMyArNDgw
LDEzIEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9XZWJzaXRl
RGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChjYWxsYmFjaykgewotICAgICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNldFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soW2NhbGxiYWNrID0gbWFrZUJsb2NrUHRy
KGNhbGxiYWNrKSwgc2VsZl0oY29uc3QgU3RyaW5nJiBldmVudCkgeworICAgICAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0U3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhbY2FsbGJhY2sgPSBtYWtl
QmxvY2tQdHIoY2FsbGJhY2spLCBzZWxmXShjb25zdCBTdHJpbmcmIGV2ZW50KSB7CiAgICAgICAg
ICAgICBjYWxsYmFjayhzZWxmLCBldmVudCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRT
dGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKG51bGxwdHIpOworICAgIF93ZWJzaXRlRGF0YVN0b3Jl
LT5zZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKG51bGxwdHIpOwogI2VuZGlmCiB9CiAKQEAg
LTUwOSw3ICs1MDksNyBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+
IHRvV2Vic2l0ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogICAgIH0KIAogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh3ZWJQYWdlUHJveHkt
PmlkZW50aWZpZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0oYXV0byBkb21haW5zKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmdldEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHdlYlBhZ2VQcm94eS0+aWRlbnRpZmllcigpLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvIGRvbWFp
bnMpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFwaURvbWFpbnM7CiAg
ICAgICAgIGFwaURvbWFpbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkb21haW5zLnNpemUoKSk7
CiAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykKQEAgLTUyNCw3ICs1MjQsNyBA
QCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0ZURhdGFS
ZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogLSAodm9pZClfc2NoZWR1bGVDb29raWVCbG9ja2lu
Z1VwZGF0ZToodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShbY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+c2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShbY29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKICAgICB9KTsKICNlbHNlCkBAIC01MzUsNyArNTM1LDcgQEAgc3RhdGljIFZl
Y3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiB0b1dlYnNpdGVEYXRhUmVjb3JkcyhOU0Fy
cmF5ICpkYXRhUmVjb3IKIC0gKHZvaWQpX3NldFByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb21h
aW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFByZXZhbGVudFJlc291cmNlKFVSTChkb21haW4p
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgp
IHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFp
biksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
KCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogI2Vsc2UKQEAgLTU0
Niw3ICs1NDYsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRv
V2Vic2l0ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogLSAodm9pZClfZ2V0SXNQcmV2
YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShC
T09MKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5pc1ByZXZh
bGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGVuYWJsZWQpIHsKKyAgICBfd2Vic2l0ZURhdGFT
dG9yZS0+aXNQcmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBlbmFibGVkKSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGVuYWJsZWQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTU1Nyw3
ICs1NTcsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vi
c2l0ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogLSAodm9pZClfY2xlYXJQcmV2YWxl
bnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lk
KSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5jbGVhclByZXZh
bGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+Y2xlYXJQ
cmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTY4LDcgKzU2OCw3IEBAIHN0YXRpYyBWZWN0b3I8V2Vi
S2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0
YVJlY29yCiAtICh2b2lkKV9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOih2b2lkIChe
KSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hl
ZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CisgICAgX3dlYnNpdGVEYXRh
U3RvcmUtPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKICNlbHNlCkBAIC01NzgsMTggKzU3OCwx
OCBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0ZURh
dGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogCiAtIChib29sKV9oYXNSZWdpc3RlcmVkU2Vy
dmljZVdvcmtlcgogewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKFdlYkNvcmU6
OnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhYmFzZUZpbGVuYW1lKF93ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eSgpKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoV2ViQ29yZTo6c2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGFiYXNlRmlsZW5hbWUoX3dlYnNpdGVEYXRhU3RvcmUtPnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSkpOwogfQogCiAtIChpZCA8X1dLV2Vi
c2l0ZURhdGFTdG9yZURlbGVnYXRlPilfZGVsZWdhdGUKIHsKLSAgICByZXR1cm4gX2RlbGVnYXRl
LmdldCgpOworICAgIHJldHVybiBfZGVsZWdhdGUuZ2V0KCkuZ2V0KCk7CiB9CiAKIC0gKHZvaWQp
c2V0X2RlbGVnYXRlOihpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPilkZWxlZ2F0ZQog
ewogICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJz
aXRlRGF0YVN0b3JlKCkuc2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8V2Vic2l0ZURhdGFTdG9yZUNs
aWVudD4oZGVsZWdhdGUpKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2xpZW50KG1ha2VV
bmlxdWVSZWY8V2Vic2l0ZURhdGFTdG9yZUNsaWVudD4oZGVsZWdhdGUpKTsKIH0KIAogQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaAppbmRleCA2YjQ5OTc5YzBiOS4uMDgxOGU0ZDI0ZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oCkBAIC0yNSwxMiArMjUsMTMgQEAKIAogI2lt
cG9ydCAiV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIgogCi0jaW1wb3J0ICJBUElXZWJzaXRl
RGF0YVN0b3JlLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9ydCAiV2Vic2l0ZURhdGFT
dG9yZS5oIgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi10ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZT4gewordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxXZWJzaXRlRGF0YVN0b3JlPiB7
CiAgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gV0tXZWJzaXRlRGF0YVN0b3JlOwogfTsKIApAQCAt
MzgsNyArMzksNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPEFQSTo6V2Vic2l0
ZURhdGFTdG9yZT4gewogCiBAaW50ZXJmYWNlIFdLV2Vic2l0ZURhdGFTdG9yZSAoKSA8V0tPYmpl
Y3Q+IHsKIEBwYWNrYWdlCi0gICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQSTo6V2Vic2l0ZURhdGFT
dG9yZT4gX3dlYnNpdGVEYXRhU3RvcmU7Ci0gICAgUmV0YWluUHRyPGlkIDxfV0tXZWJzaXRlRGF0
YVN0b3JlRGVsZWdhdGU+ID4gX2RlbGVnYXRlOworICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU+IF93ZWJzaXRlRGF0YVN0b3JlOworICAgIFdlYWtPYmpDUHRy
PGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+ID4gX2RlbGVnYXRlOwogfQogQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2ll
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29r
aWVNYW5hZ2VyLmNwcAppbmRleCA4MzI3YWU5MzA4NC4uZDM2ZDBiNzZlZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvb2tpZU1hbmFn
ZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHN0cnVjdCBfV2ViS2l0Q29va2llTWFuYWdlclByaXZh
dGUgewogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0CiAgICAgewogICAgICAg
ICBBU1NFUlQoZGF0YU1hbmFnZXIpOwotICAgICAgICByZXR1cm4gd2Via2l0V2Vic2l0ZURhdGFN
YW5hZ2VyR2V0RGF0YVN0b3JlKGRhdGFNYW5hZ2VyKS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lv
bklEKCk7CisgICAgICAgIHJldHVybiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3Rv
cmUoZGF0YU1hbmFnZXIpLnNlc3Npb25JRCgpOwogICAgIH0KIAogICAgIH5fV2ViS2l0Q29va2ll
TWFuYWdlclByaXZhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA1OTdhNGI0NGQ4Mi4uYzhmNWFiOTFhZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwCkBAIC0zMTEsMTggKzMxMSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNv
bnRleHRTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgY29uc3QgR1Zh
CiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbj4gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25Gb3JXZWJQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24oY29uc3QgQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIHByb2Nlc3NQb29s
Y29uZmlndXJhcmlvbikKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtD
YWNoZURpcmVjdG9yeShTdHJpbmcocHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLmRpc2tDYWNoZURp
cmVjdG9yeSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoU3RyaW5nKHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFN0cmlu
Zyhwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpKTsKLSAg
ICBjb25maWd1cmF0aW9uLT5zZXREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoU3Ry
aW5nKHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJl
Y3RvcnkoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoU3RyaW5nKHByb2Nlc3NQb29sY29uZmlndXJhcmlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KCkpKTsKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKLX0KLQogc3RhdGljIHZvaWQgd2Vi
a2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBHX09CSkVD
VF9DTEFTUyh3ZWJraXRfd2ViX2NvbnRleHRfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2Jq
ZWN0KTsKQEAgLTMzNSwyMiArMzIzLDE0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRD
b25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBXZWJLaXRXZWJDb250ZXh0KiB3ZWJD
b250ZXh0ID0gV0VCS0lUX1dFQl9DT05URVhUKG9iamVjdCk7CiAgICAgV2ViS2l0V2ViQ29udGV4
dFByaXZhdGUqIHByaXYgPSB3ZWJDb250ZXh0LT5wcml2OwotICAgIGlmIChwcml2LT53ZWJzaXRl
RGF0YU1hbmFnZXIgJiYgIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhlbWVyYWwo
cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkgewotICAgICAgICBjb25maWd1cmF0aW9u
LnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3Rv
cmFnZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotICAgICAg
ICBjb25maWd1cmF0aW9uLnNldERpc2tDYWNoZURpcmVjdG9yeShGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0
b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJl
Y3RvcnkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVj
dG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3Vy
YXRpb24uc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0
X2luZGV4ZWRkYl9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwor
CisgICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIpCisgICAgICAgIHByaXYtPndlYnNp
dGVEYXRhTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3
KCJsb2NhbC1zdG9yYWdlLWRpcmVjdG9yeSIsIHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5k
YXRhKCksIG51bGxwdHIpKTsKKworICAgIGlmICghd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2lzX2VwaGVtZXJhbChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKQogICAgICAgICBj
b25maWd1cmF0aW9uLnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF9oc3RzX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7
Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICBjb25maWd1cmF0
aW9uLnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJz
cWxfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLUFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIH0gZWxzZSBpZiAoIXByaXYtPmxvY2FsU3Rv
cmFnZURpcmVjdG9yeS5pc051bGwoKSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZGF0YSgpKSk7CiAKICAgICBwcml2LT5w
cm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlvbik7Ci0KLSAg
ICBpZiAoIXByaXYtPndlYnNpdGVEYXRhTWFuYWdlcikKLSAgICAgICAgcHJpdi0+d2Vic2l0ZURh
dGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZSh3ZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbihj
b25maWd1cmF0aW9uKSkpOwogICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRQcmltYXJ5RGF0YVN0
b3JlKHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShwcml2LT53ZWJzaXRlRGF0
YU1hbmFnZXIuZ2V0KCkpKTsKIAogICAgIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFByb2Nl
c3NQb29sKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSwgKnByaXYtPnByb2Nlc3NQb29s
KTsKQEAgLTc3Nyw3ICs3NTcsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9jbGVhcl9jYWNo
ZShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+IHdlYnNpdGVEYXRhVHlwZXM7CiAgICAgd2Vic2l0ZURhdGFUeXBlcy5hZGQoV2Vic2l0ZURh
dGFUeXBlOjpNZW1vcnlDYWNoZSk7CiAgICAgd2Vic2l0ZURhdGFUeXBlcy5hZGQoV2Vic2l0ZURh
dGFUeXBlOjpEaXNrQ2FjaGUpOwotICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB3ZWJraXRX
ZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoY29udGV4dC0+cHJpdi0+d2Vic2l0ZURhdGFN
YW5hZ2VyLmdldCgpKS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgYXV0byYgd2Vic2l0ZURhdGFT
dG9yZSA9IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShjb250ZXh0LT5wcml2
LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpOwogICAgIHdlYnNpdGVEYXRhU3RvcmUucmVtb3Zl
RGF0YSh3ZWJzaXRlRGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtdIHsgfSk7CiB9
CiAKQEAgLTE0NzQsMTIgKzE0NTQsOSBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfd2Vi
X2V4dGVuc2lvbnNfaW5pdGlhbGl6YXRpb25fdXNlcl9kYXRhKFdlYktpdFdlYkNvbgogICoKICAq
IERlcHJlY2F0ZWQ6IDIuMTAuIFVzZSB3ZWJraXRfd2ViX2NvbnRleHRfbmV3X3dpdGhfd2Vic2l0
ZV9kYXRhX21hbmFnZXIoKSBpbnN0ZWFkLgogICovCi12b2lkIHdlYmtpdF93ZWJfY29udGV4dF9z
ZXRfZGlza19jYWNoZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29uc3Qg
Y2hhciogZGlyZWN0b3J5KQordm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2FjaGVf
ZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqLCBjb25zdCBjaGFyKikKIHsKLSAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7Ci0gICAgZ19yZXR1cm5f
aWZfZmFpbChkaXJlY3RvcnkpOwotCi0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmNv
bmZpZ3VyYXRpb24oKS5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oZGlyZWN0b3J5KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CisgICAgZ193YXJu
aW5nKCJ3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5IGlzIGRlcHJl
Y2F0ZWQgYW5kIGRvZXMgbm90aGluZywgdXNlIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciBpbnN0
ZWFkIik7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKaW5kZXggN2JiNzJl
Zjg4OWYuLjc5NDlmM2E2NDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKQEAgLTIwLDEy
ICsyMCwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVE
YXRhTWFuYWdlci5oIgogCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1
ZGUgIldlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRXZWJzaXRlRGF0YVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZl
dGNoT3B0aW9uLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPGds
aWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CkBAIC05NSw3ICs5NSw3IEBAIHN0cnVjdCBfV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyUHJpdmF0ZSB7CiAgICAgICAgIEFTU0VSVChwcm9jZXNzUG9vbHMuaXNFbXB0eSgp
KTsKICAgICB9CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiB3ZWJzaXRlRGF0
YVN0b3JlOworICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiB3ZWJzaXRlRGF0YVN0b3JlOwog
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gYmFzZURhdGFEaXJlY3Rvcnk7CiAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBiYXNlQ2FjaGVEaXJlY3Rvcnk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBsb2NhbFN0b3Jh
Z2VEaXJlY3Rvcnk7CkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2Vic2l0
ZURhdGFNYW5hZ2VyU2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIGMK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAgICAgaWYg
KGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKQotICAgICAgICAgICAgbWFuYWdlci0+cHJpdi0+
d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lz
dGVudERhdGFTdG9yZSgpOworICAgICAgICAgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFT
dG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BF
UlRZX0lEKG9iamVjdCwgcHJvcElELCBwYXJhbVNwZWMpOwpAQCAtMzgxLDMxICszODEsMjUgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsYXNzX2luaXQoV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyQ2xhc3MKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZs
YWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsK
IH0KIAotV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJD
cmVhdGUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24p
Ci17Ci0gICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0gV0VCS0lUX1dFQlNJ
VEVfREFUQV9NQU5BR0VSKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJTSVRFX0RBVEFfTUFO
QUdFUiwgbnVsbHB0cikpOwotICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBB
UEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKLQotICAgIHJldHVybiBtYW5hZ2VyOwot
fQotCi1BUEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERh
dGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIpCitXZWJzaXRlRGF0YVN0
b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyKiBtYW5hZ2VyKQogewogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZh
dGUqIHByaXYgPSBtYW5hZ2VyLT5wcml2OwogICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFTdG9y
ZSkgewogICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFn
ZURpcmVjdG9yeSghcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogRmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0
b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpKSk7
CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeSghcHJpdi0+
ZGlza0NhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0
b3J5KSk7CisgICAgICAgICAgICBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hl
RGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5kaXNrQ2FjaGVE
aXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKICAgICAgICAgY29u
ZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSghcHJpdi0+YXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnku
Z2V0KCkpKTsKKyAgICAgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAg
ICAgY29uZmlndXJhdGlvbi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoIXByaXYtPmlu
ZGV4ZWREQkRpcmVjdG9yeSA/CisgICAgICAgICAgICBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+aW5kZXhlZERCRGlyZWN0b3J5LmdldCgpKSk7CiAg
ICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCFwcml2LT53
ZWJTUUxEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKSk7CisgICAg
ICAgICAgICBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+
d2ViU1FMRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldEhTVFNT
dG9yYWdlRGlyZWN0b3J5KCFwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkgPwotICAgICAgICAgICAg
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpIDogRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5oc3RzQ2FjaGVEaXJl
Y3RvcnkuZ2V0KCkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCkpOwotICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgICAgICAgICBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0SFNUU0RpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICAgICAg
Y29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICAgICAgcHJpdi0+
d2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZp
Z3VyYXRpb24pLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gKnByaXYtPndlYnNpdGVEYXRhU3RvcmU7CkBAIC01NDIsNyArNTM2LDcgQEAg
Y29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFn
ZV9kaXJlY3RvcnkoV2ViS2l0V2Vic2kKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBp
ZiAoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgcHJpdi0+bG9jYWxTdG9y
YWdlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dExvY2FsU3RvcmFnZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+
bG9jYWxTdG9yYWdlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgcmV0dXJu
IHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKTsKIH0KIApAQCAtNTY2LDcgKzU2MCw3
IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2Fj
aGVfZGlyZWN0b3J5KFdlYktpdFdlYnNpdGVECiAKICAgICBpZiAoIXByaXYtPmRpc2tDYWNoZURp
cmVjdG9yeSkgewogICAgICAgICAvLyBUaGUgZGVmYXVsdCBkaXJlY3RvcnkgYWxyZWFkeSBoYXMg
dGhlIHN1YmRpcmVjdG9yeS4KLSAgICAgICAgcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LnJlc2V0
KGdfc3RyZHVwKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAg
ICAgcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKEZpbGVTeXN0ZW06OmRp
cmVjdG9yeU5hbWUoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQogICAgIHJldHVybiBwcml2LT5kaXNrQ2FjaGVE
aXJlY3RvcnkuZ2V0KCk7CiB9CkBAIC01OTAsNyArNTg0LDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJl
Y3RvcnkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIXByaXYtPmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkucmVzZXQoZ19zdHJkdXAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+YXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1
cm4gcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKTsKIH0KIApAQCAtNjEzLDcg
KzYwNyw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2lu
ZGV4ZWRkYl9kaXJlY3RvcnkoV2ViS2l0V2Vic2l0ZURhCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgaWYgKCFwcml2LT5pbmRleGVkREJEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPmlu
ZGV4ZWREQkRpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAg
ICAgcHJpdi0+aW5kZXhlZERCRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsK
ICAgICByZXR1cm4gcHJpdi0+aW5kZXhlZERCRGlyZWN0b3J5LmdldCgpOwogfQogCkBAIC02Mzgs
NyArNjMyLDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRf
d2Vic3FsX2RpcmVjdG9yeShXZWJLaXRXZWJzaXRlRGF0YU0KICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBpZiAoIXByaXYtPndlYlNRTERpcmVjdG9yeSkKLSAgICAgICAgcHJpdi0+d2Vi
U1FMRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2
LT53ZWJTUUxEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOwogICAgIHJldHVybiBw
cml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCk7CiB9CiAKQEAgLTY2MSw3ICs2NTUsNyBAQCBjb25z
dCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2NhY2hlX2RpcmVj
dG9yeShXZWJLaXRXZWJzaXRlRAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICgh
cHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5KQotICAgICAgICBwcml2LT5oc3RzQ2FjaGVEaXJlY3Rv
cnkucmVzZXQoZ19zdHJkdXAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVj
dG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5
LnJlc2V0KGdfc3RyZHVwKFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RTRGlyZWN0b3J5KCku
dXRmOCgpLmRhdGEoKSkpOwogICAgIHJldHVybiBwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkuZ2V0
KCk7CiB9CiAKQEAgLTczNSw3ICs3MjksNyBAQCB2b2lkIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9mZXRjaChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIsIFdlYktpdAogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIp
KTsKIAogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyhtYW5h
Z2VyLCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0gICAgbWFuYWdlci0+cHJp
di0+d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmZldGNoRGF0YSh0b1dlYnNp
dGVEYXRhVHlwZXModHlwZXMpLCBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMs
IFt0YXNrID0gV1RGTW92ZSh0YXNrKV0gKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gcmVjb3Jk
cykgeworICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPmZldGNoRGF0YSh0b1dl
YnNpdGVEYXRhVHlwZXModHlwZXMpLCBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6
ZXMsIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0gKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gcmVj
b3JkcykgewogICAgICAgICBHTGlzdCogZGF0YUxpc3QgPSBudWxscHRyOwogICAgICAgICB3aGls
ZSAoIXJlY29yZHMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogZGF0YSA9IHdl
YmtpdFdlYnNpdGVEYXRhQ3JlYXRlKHJlY29yZHMudGFrZUxhc3QoKSkpCkBAIC04MDksNyArODAz
LDcgQEAgdm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfcmVtb3ZlKFdlYktpdFdlYnNp
dGVEYXRhTWFuYWdlciogbWFuYWdlciwgV2ViS2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5y
ZW1vdmVEYXRhKHRvV2Vic2l0ZURhdGFUeXBlcyh0eXBlcyksIHJlY29yZHMsIFt0YXNrID0gV1RG
TW92ZSh0YXNrKV0geworICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPnJlbW92
ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKHR5cGVzKSwgcmVjb3JkcywgW3Rhc2sgPSBXVEZNb3Zl
KHRhc2spXSB7CiAgICAgICAgIGdfdGFza19yZXR1cm5fYm9vbGVhbih0YXNrLmdldCgpLCBUUlVF
KTsKICAgICB9KTsKIH0KQEAgLTg2MSw3ICs4NTUsNyBAQCB2b2lkIHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9jbGVhcihXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIsIFdlYktp
dAogCiAgICAgV2FsbFRpbWUgdGltZVBvaW50ID0gdGltZVNwYW4gPyBXYWxsVGltZTo6bm93KCkg
LSBTZWNvbmRzOjpmcm9tTWljcm9zZWNvbmRzKHRpbWVTcGFuKSA6IFdhbGxUaW1lOjpmcm9tUmF3
U2Vjb25kcygwKTsKICAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19u
ZXcobWFuYWdlciwgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOwotICAgIG1hbmFn
ZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRh
KHRvV2Vic2l0ZURhdGFUeXBlcyh0eXBlcyksIHRpbWVQb2ludCwgW3Rhc2sgPSBXVEZNb3ZlKHRh
c2spXSB7CisgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+cmVtb3ZlRGF0YSh0
b1dlYnNpdGVEYXRhVHlwZXModHlwZXMpLCB0aW1lUG9pbnQsIFt0YXNrID0gV1RGTW92ZSh0YXNr
KV0gewogICAgICAgICBnX3Rhc2tfcmV0dXJuX2Jvb2xlYW4odGFzay5nZXQoKSwgVFJVRSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgKaW5kZXggODU0MTE4
YTE3MDUuLjJhNTg5ZTI3ZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5o
CkBAIC0xOSwxMiArMTksMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBUElXZWJz
aXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YVN0b3JlLmgiCiAKLVdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogd2Via2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiYmKTsKLUFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5h
Z2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciopOworV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyKik7CiB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFBy
b2Nlc3NQb29sKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciosIFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2wmKTsKIHZvaWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyUmVtb3ZlUHJvY2Vzc1Bvb2woV2Vi
S2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiwgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpOwogY29uc3Qg
VmVjdG9yPFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqPiYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
R2V0UHJvY2Vzc1Bvb2xzKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdp
bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyZWY2ZjU2ZTNmLi4wMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRh
U3RvcmVXaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5o
IgotCi0jaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLQotbmFtZXNwYWNlIEFQSSB7Ci0KLVN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
Ci17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9u
Q2FjaGUiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3Jh
Z2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJDYWNoZVN0b3JhZ2UiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRO
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOwotfQotCi1TdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJTZXJ2aWNlV29ya2Vy
cyIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxv
Y2FsU3RvcmFnZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQotewotICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCi17Ci0gICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7Ci19Ci0K
LVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCi17Ci0gICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA0N2Y5MTc0MDUyNC4uM2Vi
MmE0MmI5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0xMzU4LDcgKzEzNTgsNyBAQCB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5nbGVDb29raWUoY29uc3QgU3RyaW5nJiBi
cm93c2luZ0NvbnRleHRIYW5kbGUsCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SX0FORF9ERVRBSUxTKE1pc3NpbmdQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdodHRw
T25seScgd2FzIG5vdCBmb3VuZC4iKTsKIAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSogY29v
a2llTWFuYWdlciA9IG1fcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclBy
b3h5PigpOwotICAgIGNvb2tpZU1hbmFnZXItPnNldENvb2tpZXMocGFnZS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnNlc3Npb25JRCgpLCB7IGNvb2tpZSB9LCBbY2FsbGJhY2sgPSBjYWxsYmFjay5jb3B5
UmVmKCldKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBjb29raWVNYW5hZ2VyLT5z
ZXRDb29raWVzKHBhZ2UtPnNlc3Npb25JRCgpLCB7IGNvb2tpZSB9LCBbY2FsbGJhY2sgPSBjYWxs
YmFjay5jb3B5UmVmKCldKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgaWYg
KGVycm9yID09IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCiAgICAgICAgICAgICBjYWxsYmFj
ay0+c2VuZFN1Y2Nlc3MoKTsKICAgICAgICAgZWxzZQpAQCAtMTM3OCw3ICsxMzc4LDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcyhFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmkKICAgICBTdHJpbmcgaG9zdCA9IGFjdGl2ZVVSTC5ob3N0KCku
dG9TdHJpbmcoKTsKIAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSogY29va2llTWFuYWdlciA9
IG1fcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwotICAg
IGNvb2tpZU1hbmFnZXItPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMocGFnZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNlc3Npb25JRCgpLCB7IGhvc3QsIGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZO
ZWVkZWQoaG9zdCkgfSk7CisgICAgY29va2llTWFuYWdlci0+ZGVsZXRlQ29va2llc0Zvckhvc3Ru
YW1lcyhwYWdlLT5zZXNzaW9uSUQoKSwgeyBob3N0LCBkb21haW5CeUFkZGluZ0RvdFByZWZpeElm
TmVlZGVkKGhvc3QpIH0pOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpnZXRTZXNz
aW9uUGVybWlzc2lvbnMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpTZXNzaW9uUGVybWlzc2lvbkRhdGE+PiYgb3V0X3Bl
cm1pc3Npb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tCmluZGV4IDdhMzM2NDIzYmIxLi42YjE1YzA2YmQ5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMzMsNyArMzMs
NiBAQAogI2ltcG9ydCAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIkFQSVN0cmlu
Zy5oIgogI2ltcG9ydCAiQVBJVVJMLmgiCi0jaW1wb3J0ICJBUElXZWJzaXRlRGF0YVN0b3JlLmgi
CiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW1wb3J0
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EuaCIKICNpbXBvcnQgIkF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgpAQCAtNjQsNiArNjMsNyBAQAogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQg
IldlYlByb3RlY3Rpb25TcGFjZS5oIgorI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2lt
cG9ydCAiX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0Vy
cm9yUmVjb3ZlcnlBdHRlbXB0aW5nLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFs
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzMTE0NmJmNjFjZi4uYjk5MTdmYmZiZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcApAQCAtODcsNyArODcsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkKICAgICBjb25uZWN0KCk7CiAK
ICAgICBpZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IG1fcHJvY2Vzc1Bvb2wud2Vic2l0ZURh
dGFTdG9yZSgpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmVzLnNldCh3ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCksIG1ha2VSZWYod2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZXMu
c2V0KHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBtYWtlUmVmKCp3ZWJzaXRlRGF0YVN0
b3JlKSk7CiB9CiAKIE5ldHdvcmtQcm9jZXNzUHJveHk6On5OZXR3b3JrUHJvY2Vzc1Byb3h5KCkK
QEAgLTExMzQsMTQgKzExMzQsMTQgQEAgV2Vic2l0ZURhdGFTdG9yZSogTmV0d29ya1Byb2Nlc3NQ
cm94eTo6d2Vic2l0ZURhdGFTdG9yZUZyb21TZXNzaW9uSUQoUEFMOjpTZXNzaW8KICAgICAgICAg
cmV0dXJuIGl0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIAogICAgIGlmIChhdXRvKiB3ZWJzaXRlRGF0
YVN0b3JlID0gbV9wcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3JlKCkpIHsKLSAgICAgICAgaWYg
KHNlc3Npb25JRCA9PSB3ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lv
bklEKCkpCi0gICAgICAgICAgICByZXR1cm4gJndlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKTsKKyAgICAgICAgaWYgKHNlc3Npb25JRCA9PSB3ZWJzaXRlRGF0YVN0b3JlLT5zZXNz
aW9uSUQoKSkKKyAgICAgICAgICAgIHJldHVybiB3ZWJzaXRlRGF0YVN0b3JlOwogICAgIH0KIAog
ICAgIGlmIChzZXNzaW9uSUQgIT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gJkFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgcmV0dXJu
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA4MGRmZTYwYTI0OC4uYzY5YjdjZWZk
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NQ
cm94eS5oIgogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAjaW5j
bHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKQEAgLTM2LDYgKzM1LDcg
QEAKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxtZW1vcnk+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAppbmRl
eCA4ZTMxZjA3MDE1My4uYTVmYWYzZmQ1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcApAQCAtMjcsNyArMjcs
NiBAQAogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvbi5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJTYWZlQnJvd3NpbmdXYXJu
aW5nLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYzNjNWE2NDNkZWQuLjk4N2Q0NDUxZDE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQxNiw3ICs0MTYsNyBAQCBX
ZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogICAgICwgbV9wcmVmZXJlbmNlcygqbV9jb25maWd1cmF0
aW9uLT5wcmVmZXJlbmNlcygpKQogICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoKm1fY29u
ZmlndXJhdGlvbi0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5r
U3RvcmUoKm1fY29uZmlndXJhdGlvbi0+dmlzaXRlZExpbmtTdG9yZSgpKQotICAgICwgbV93ZWJz
aXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRl
RGF0YVN0b3JlKCkpCisgICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUoKm1fY29uZmlndXJhdGlvbi0+
d2Vic2l0ZURhdGFTdG9yZSgpKQogICAgICwgbV91c2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQo
KSkKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgeyBtX2NvbmZpZ3VyYXRp
b24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCkgfQogICAgICwgbV90cmVhdHNTSEEx
Q2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZpZ3VyYXRpb24tPnRyZWF0c1NIQTFTaWduZWRD
ZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCkBAIC0yODY3LDggKzI4NjcsOCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBv
bGljeUFjdGlvbiwgQQogICAgIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IGRhdGE7CiAg
ICAgaWYgKHBvbGljaWVzKSB7CiAgICAgICAgIGRhdGEgPSBwb2xpY2llcy0+ZGF0YSgpOwotICAg
ICAgICBpZiAocG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKSAmJiAmcG9saWNpZXMtPndlYnNp
dGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpICE9IHdlYnNpdGVEYXRhU3RvcmUucHRy
KCkpIHsKLSAgICAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUgPSBwb2xpY2llcy0+d2Vic2l0ZURh
dGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgICAgIGlmIChwb2xpY2llcy0+d2Vi
c2l0ZURhdGFTdG9yZSgpICYmIHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0
ZURhdGFTdG9yZS5wdHIoKSkgeworICAgICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9ICpwb2xp
Y2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpOwogICAgICAgICAgICAgcHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCA9IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6OlllczsKICAgICAgICAg
fQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRl
eCA2YmI1NmE0MTIwNy4uMzA1MmQ4Y2YwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTI0NCw4ICsyNDQsOCBAQCBXZWJQcm9jZXNzUG9vbDo6V2Vi
UHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24p
CiAgICAgICAgIFByb2Nlc3M6OnNldElkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXI6OmdlbmVyYXRlKCkpOwogICAgIH0pOwogCi0gICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUg
JiYgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCi0gICAg
ICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERh
dGFTdG9yZSgpOworICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlICYmIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKSkKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3Jl
ID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpOwogCiAgICAgZm9yIChhdXRv
JiBzY2hlbWUgOiBtX2NvbmZpZ3VyYXRpb24tPmFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcygp
KQogICAgICAgICBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNBbHdheXNSZXZhbGlkYXRlZC5hZGQoc2No
ZW1lKTsKQEAgLTQ4MywxNCArNDgzLDE5IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nl
c3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAg
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGlmICht
X3dlYnNpdGVEYXRhU3RvcmUpIHsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3Jl
UGFyYW1ldGVycy5wZW5kaW5nQ29va2llcyA9IGNvcHlUb1ZlY3RvcihtX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZW5kaW5nQ29va2llcygpKTsKLSAgICAgICAgbV93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuY2xlYXJQZW5kaW5nQ29va2llcygpOwor
ICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29r
aWVzID0gY29weVRvVmVjdG9yKG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVuZGluZ0Nvb2tpZXMoKSk7
CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+Y2xlYXJQZW5kaW5nQ29va2llcygpOwogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJh
bWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0
RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc291cmNlQXBwbGlj
YXRpb25TZWNvbmRhcnlJZGVudGlmaWVyID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7Ci0gICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNrID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuYWxsb3dzVExTRmFsbGJhY2soKSA/IEFsbG93c1RMU0ZhbGxiYWNrOjpZZXMgOiBB
bGxvd3NUTFNGYWxsYmFjazo6Tm87CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9y
ZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllciA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKCk7CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFt
ZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllciA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25TZWNvbmRh
cnlJZGVudGlmaWVyKCk7CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFt
ZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsbG93c1RMU0ZhbGxiYWNrID0gbV93ZWJz
aXRlRGF0YVN0b3JlLT5hbGxvd3NUTFNGYWxsYmFjaygpID8gQWxsb3dzVExTRmFsbGJhY2s6Olll
cyA6IEFsbG93c1RMU0ZhbGxiYWNrOjpObzsKICNlbmRpZgotICAgICAgICBtX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JraW5nSGFzQmVndW4oKTsKKyAgICAgICAg
bV93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpOworICAg
ICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPnJl
c29sdmVkTmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CisgICAgICAgIGlmICghbV93ZWJzaXRlRGF0
YVN0b3JlLT5yZXNvbHZlZE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9y
eShwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5uZXR3b3JrQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9y
ZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLm5ldHdvcmtDYWNoZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CisKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3b3Jr
aW5nSGFzQmVndW4oKTsKICAgICB9CiAKICAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBjYWNo
ZU1vZGVsKCk7CkBAIC01MDIsOSArNTA3LDYgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAg
ICBmb3IgKGF1dG8mIHNjaGVtZSA6IG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90
b2NvbHMpCiAgICAgICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Q
cm90b2NvbHMuYXBwZW5kKHNjaGVtZSk7CiAKLSAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVj
dG9yeSA9IG1fY29uZmlndXJhdGlvbi0+ZGlza0NhY2hlRGlyZWN0b3J5KCk7Ci0gICAgaWYgKCFw
YXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLmRp
c2tDYWNoZURpcmVjdG9yeSwgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElP
TikKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2
YWxpZGF0aW9uID0gbV9jb25maWd1cmF0aW9uLT5kaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRp
b25FbmFibGVkKCk7CiAjZW5kaWYKQEAgLTU0MiwyMiArNTQ0LDI1IEBAIE5ldHdvcmtQcm9jZXNz
UHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0
b3JlKiB3aXRoCiAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ2FuRGlzcGxh
eU9ubHlJZkNhblJlcXVlc3QgPSBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzQ2Fu
RGlzcGxheU9ubHlJZkNhblJlcXVlc3QpOwogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
Ci0gICAgLy8gKioqKioqKioqCi0gICAgLy8gSU1QT1JUQU5UOiBEbyBub3QgY2hhbmdlIHRoZSBk
aXJlY3Rvcnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRhdGFiYXNlcyBvbiBkaXNrIHdpdGhvdXQg
Zmlyc3QgY29uc3VsdGluZyBhIHJldmlld2VyIGZyb20gQXBwbGUgKDxyZGFyOi8vcHJvYmxlbS8x
NzQ1NDcxMj4pCi0gICAgLy8gKioqKioqKioqCi0gICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24t
PmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0gICAgaWYgKHBhcmFtZXRlcnMuZGVmYXVs
dERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkK
LSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0
YWJhc2VEaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUo
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKS5pbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnk7Ci0gICAgCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRl
RGlyZWN0b3J5KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmlu
ZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Ci0gICAgbmV0d29ya1Byb2Nl
c3MtPmNyZWF0ZVN5bUxpbmtGb3JGaWxlVXBncmFkZShwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSk7CisgICAgaWYgKCFtX3dlYnNp
dGVEYXRhU3RvcmUgJiYgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygp
KSB7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHREYXRhU3RvcmUoKTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvbHZlRGlyZWN0
b3JpZXNJZk5lY2Vzc2FyeSgpOworICAgIH0KKyAgICBpZiAobV93ZWJzaXRlRGF0YVN0b3JlKSB7
CisgICAgICAgIC8vICoqKioqKioqKgorICAgICAgICAvLyBJTVBPUlRBTlQ6IERvIG5vdCBjaGFu
Z2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0YWJhc2VzIG9uIGRpc2sg
d2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBBcHBsZSAoPHJkYXI6Ly9w
cm9ibGVtLzE3NDU0NzEyPikKKyAgICAgICAgLy8gKioqKioqKioqCisgICAgICAgIHBhcmFtZXRl
cnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0g
bV93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvbHZlZEluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSgpOwor
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rv
cnkocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VE
aXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgbmV0d29ya1Byb2Nlc3Mt
PmNyZWF0ZVN5bUxpbmtGb3JGaWxlVXBncmFkZShwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQ
YXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSk7CisgICAgfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKLSAg
ICAgICAgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gbV93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb2x2ZWRTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb2x2ZWRTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpCi0gICAgICAgIHBhcmFtZXRlcnMuc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9ICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgICAgIHBh
cmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9ICBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJh
bWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIHBhcmFtZXRlcnMuc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBp
ZiAoIW1fc2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlLmlzRW1wdHkoKSkKQEAgLTU2Niwx
NiArNTcxLDE2IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVO
ZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgcGFyYW1ldGVycy5zaG91
bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gbV9zaG91bGRE
aXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5OwogI2VuZGlmCiAKLSAg
ICBhdXRvIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/IG1fd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc29sdmVkTG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkgOiBudWxsU3RyaW5nKCk7CisgICAgYXV0byBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
PSBtX3dlYnNpdGVEYXRhU3RvcmUgPyBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVkTG9jYWxT
dG9yYWdlRGlyZWN0b3J5KCkgOiBudWxsU3RyaW5nKCk7CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VE
aXJlY3RvcnkpCi0gICAgICAgIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOworICAgICAgICBsb2NhbFN0
b3JhZ2VEaXJlY3RvcnkgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCk7CiAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGxvY2FsU3RvcmFnZURp
cmVjdG9yeSwgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9y
ZSkKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc29sdmVkUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSgpOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQ
YXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvbHZlZFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkoKTsKICAgICBpZiAocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFy
YW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KCk7CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkgPSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSgpOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVh
ZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHBh
cmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCkBA
IC02MDEsMTcgKzYwNiwxNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6
ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAgIH0gZWxzZSBp
ZiAobV93ZWJzaXRlRGF0YVN0b3JlKSB7CiAgICAgICAgIGVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KCk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICAgICAgZW5hYmxl
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudCA9IG1fd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhhc1N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soKTsKKyAg
ICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudCA9IG1fd2Vi
c2l0ZURhdGFTdG9yZS0+aGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygpOwogI2VuZGlmCiAg
ICAgICAgIGlmIChlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSB7Ci0gICAgICAgICAgICBh
dXRvIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycyA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnM7CisgICAg
ICAgICAgICBhdXRvIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycyA9IG1fd2Vic2l0ZURhdGFTdG9y
ZS0+cGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKICAgICAgICAgICAgIHNo
b3VsZEluY2x1ZGVMb2NhbGhvc3QgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2hvdWxkSW5j
bHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAgICAgICAgICAgIGVuYWJs
ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRl
cnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTsKICAgICAgICAgICAgIG1h
bnVhbFByZXZhbGVudFJlc291cmNlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAgICAgfQogCi0gICAg
ICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVyT3JpZ2luU3RvcmFn
ZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGVyT3JpZ2lu
U3RvcmFnZVF1b3RhKCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFt
ZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEoKTsK
KyAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJPcmlnaW5T
dG9yYWdlUXVvdGEgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPnBlck9yaWdpblN0b3JhZ2VRdW90YSgp
OworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlclRoaXJk
UGFydHlPcmlnaW5TdG9yYWdlUXVvdGEgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPnBlclRoaXJkUGFy
dHlPcmlnaW5TdG9yYWdlUXVvdGEoKTsKICAgICB9CiAKICAgICBwYXJhbWV0ZXJzLmRlZmF1bHRE
YXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5lbmFibGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKQEAgLTcwMiw4
ICs3MDcsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogCiAgICAgaWYgKCF3ZWJzaXRlRGF0
YVN0b3JlKSB7CiAgICAgICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQotICAgICAgICAgICAg
bV93ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlKCkucHRyKCk7Ci0gICAgICAgIHdlYnNpdGVEYXRhU3RvcmUgPSAmbV93ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUg
PSBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CisgICAgICAgIHdl
YnNpdGVEYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7CiAgICAgfQogCiAgICAg
aWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkpCkBAIC03OTUsMTIgKzgwMCw2
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRDYWNoZVBhZ2UoV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzKQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzb2x2ZVBhdGhzRm9yU2FuZGJv
eEV4dGVuc2lvbnMoKQogewogICAgIG1fcmVzb2x2ZWRQYXRocy5pbmplY3RlZEJ1bmRsZVBhdGgg
PSByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oaW5qZWN0ZWRCdW5kbGVQYXRoKCkpOwot
ICAgIG1fcmVzb2x2ZWRQYXRocy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gcmVzb2x2ZUFu
ZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0
aW9uLT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOwotICAgIG1fcmVzb2x2ZWRQYXRocy53
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3Rv
cnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+d2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLm1lZGlhQ2FjaGVEaXJlY3RvcnkgPSByZXNv
bHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZp
Z3VyYXRpb24tPm1lZGlhQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgbV9yZXNvbHZlZFBhdGhzLm1l
ZGlhS2V5U3RvcmFnZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3Rv
cnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+bWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpKTsKLSAgICBtX3Jlc29sdmVkUGF0aHMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5
ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24o
bV9jb25maWd1cmF0aW9uLT5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKLQogICAgIG1f
cmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy5y
ZXNlcnZlQ2FwYWNpdHkobV9jb25maWd1cmF0aW9uLT5hZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93
ZWRQYXRocygpLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogbV9jb25maWd1
cmF0aW9uLT5hZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRQYXRocygpKQogICAgICAgICBtX3Jl
c29sdmVkUGF0aHMuYWRkaXRpb25hbFdlYlByb2Nlc3NTYW5kYm94RXh0ZW5zaW9uUGF0aHMudW5j
aGVja2VkQXBwZW5kKHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihwYXRoLmRhdGEoKSkp
OwpAQCAtODM3LDcgKzgzNiw3IEBAIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQ
b29sOjp0cnlUYWtlUHJld2FybWVkUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlCiAjaWYgUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgLy8gSW4gcGxhdGZvcm1zIHVzaW5nIEJ1YmJs
ZXdyYXAgZm9yIHNhbmRib3hpbmcsIHByZXdhcm1lZCBwcm9jZXNzIGlzIGxhdW5jaGVkIHVzaW5n
IHRoZSBXZWJQcm9jZXNzUG9vbCBwcmltYXJ5IFdlYnNpdGVEYXRhU3RvcmUsCiAgICAgLy8gc28g
d2UgZG9uJ3QgdXNlIGl0IGluIGNhc2Ugb2YgdXNpbmcgYSBkaWZmZXJlbnQgV2Vic2l0ZURhdGFT
dG9yZS4KLSAgICBpZiAobV9zYW5kYm94RW5hYmxlZCAmJiBtX3dlYnNpdGVEYXRhU3RvcmUgJiYg
Jm1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpICE9ICZ3ZWJzaXRlRGF0YVN0
b3JlKQorICAgIGlmIChtX3NhbmRib3hFbmFibGVkICYmIG1fd2Vic2l0ZURhdGFTdG9yZSAmJiBt
X3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCkgIT0gJndlYnNpdGVEYXRhU3RvcmUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogI2VuZGlmCiAKQEAgLTg4MCwyOSArODc5LDE5IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnNlbmRXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MsCiAgICAgd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlRGlyZWN0b3JpZXNJZk5l
Y2Vzc2FyeSgpOwogCiAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0g
d2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlZEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAg
ICBpZiAocGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAg
ICAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbV9yZXNvbHZlZFBh
dGhzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLmFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLmFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1l
dGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBwYXJh
bWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSB3ZWJzaXRl
RGF0YVN0b3JlLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsKLSAg
ICBpZiAocGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1l
LmlzRW1wdHkoKSkKLSAgICAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVT
dWJkaXJlY3RvcnlOYW1lID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbkNhY2hlRmxhdEZp
bGVTdWJkaXJlY3RvcnlOYW1lKCk7CiAKICAgICBwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGly
ZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlZERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0g
ICAgaWYgKHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAg
ICAgICBwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbV9yZXNvbHZlZFBhdGhz
LndlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwogICAgIGlmICghcGFyYW1ldGVycy53ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBwYXJhbWV0ZXJzLm1l
ZGlhQ2FjaGVEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkTWVkaWFDYWNoZURp
cmVjdG9yeSgpOwotICAgIGlmIChwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkuaXNFbXB0
eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkgPSBtX3Jlc29sdmVk
UGF0aHMubWVkaWFDYWNoZURpcmVjdG9yeTsKICAgICBpZiAoIXBhcmFtZXRlcnMubWVkaWFDYWNo
ZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSwg
U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgcGFyYW1ldGVycy5tZWRpYUtleVN0b3Jh
Z2VEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5
KCk7Ci0gICAgaWYgKHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHko
KSkKLSAgICAgICAgcGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkgPSBtX3Jlc29s
dmVkUGF0aHMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5OwogICAgIGlmICghcGFyYW1ldGVycy5t
ZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLm1lZGlhS2V5
U3RvcmFnZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBwYXJh
bWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKQEAgLTEx
MDcsNyArMTA5Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NEaWRGaW5pc2hMYXVu
Y2hpbmcoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAgIG1fY29ubmVjdGlvbkNsaWVudC5k
aWRDcmVhdGVDb25uZWN0aW9uKHRoaXMsIHByb2Nlc3MtPndlYkNvbm5lY3Rpb24oKSk7CiAKICAg
ICBpZiAobV93ZWJzaXRlRGF0YVN0b3JlKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5kaWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpOworICAgICAgICBtX3dl
YnNpdGVEYXRhU3RvcmUtPmRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykK
QEAgLTExODYsNyArMTE3NSw3IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0b3JlJiB3CiAgICAgICAgIHJl
dHVybiBjcmVhdGVOZXdXZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlKTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIGJvb2wgbXVzdE1hdGNoRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0g
JkFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0
b3JlKCk7CisgICAgYm9vbCBtdXN0TWF0Y2hEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwogI2Vsc2UKICAgICBib29sIG11c3RN
YXRjaERhdGFTdG9yZSA9IGZhbHNlOwogI2VuZGlmCkBAIC0xMjIwLDcgKzEyMDksNyBAQCBSZWY8
V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBw
YWdlQ2xpZW50LCBSZWY8QVBJOgogICAgICAgICAvLyBXZSB0cnkgdG8gYXZvaWQgY3JlYXRpbmcg
dGhlIGRlZmF1bHQgZGF0YSBzdG9yZSBhcyBsb25nIGFzIHBvc3NpYmxlLgogICAgICAgICAvLyBC
dXQgaWYgdGhlcmUgaXMgYW4gYXR0ZW1wdCB0byBjcmVhdGUgYSB3ZWIgcGFnZSB3aXRob3V0IGFu
eSBzcGVjaWZpZWQgZGF0YSBzdG9yZSwgdGhlbiB3ZSBoYXZlIHRvIGNyZWF0ZSBpdC4KICAgICAg
ICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUpCi0gICAgICAgICAgICBtX3dlYnNpdGVEYXRhU3Rv
cmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKKyAg
ICAgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmUoKS5wdHIoKTsKIAogICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0V2Vic2l0
ZURhdGFTdG9yZShtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCkpOwogICAgIH0KQEAgLTEyMzEsOCAr
MTIyMCw4IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdl
KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgICAgIC8vIFNoYXJpbmcgcHJv
Y2Vzc2VzLCBlLmcuIHdoZW4gY3JlYXRpbmcgdGhlIHBhZ2UgdmlhIHdpbmRvdy5vcGVuKCkuCiAg
ICAgICAgIHByb2Nlc3MgPSAmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPmVuc3Vy
ZVJ1bm5pbmdQcm9jZXNzKCk7CiAgICAgICAgIC8vIFdlIGRvIG5vdCBzdXBwb3J0IHNldmVyYWwg
V2Vic2l0ZURhdGFTdG9yZXMgc2hhcmluZyBhIHNpbmdsZSBwcm9jZXNzLgotICAgICAgICBBU1NF
UlQocHJvY2Vzcy5nZXQoKSA9PSBtX2R1bW15UHJvY2Vzc1Byb3h5IHx8ICZwYWdlQ29uZmlndXJh
dGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJnByb2Nlc3Mt
PndlYnNpdGVEYXRhU3RvcmUoKSk7Ci0gICAgICAgIEFTU0VSVCgmcGFnZUNvbmZpZ3VyYXRpb24t
PnJlbGF0ZWRQYWdlKCktPndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmcGFnZUNvbmZpZ3VyYXRpb24t
PndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgQVNTRVJU
KHByb2Nlc3MuZ2V0KCkgPT0gbV9kdW1teVByb2Nlc3NQcm94eSB8fCBwYWdlQ29uZmlndXJhdGlv
bi0+d2Vic2l0ZURhdGFTdG9yZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwor
ICAgICAgICBBU1NFUlQoJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT53ZWJzaXRl
RGF0YVN0b3JlKCkgPT0gcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSk7CiAg
ICAgfSBlbHNlIGlmICghbV9pc0RlbGF5ZWRXZWJQcm9jZXNzTGF1bmNoRGlzYWJsZWQpIHsKICAg
ICAgICAgLy8gSW4gdGhlIGNvbW1vbiBjYXNlLCB3ZSBkZWxheSBwcm9jZXNzIGxhdW5jaCB1bnRp
bCBzb21ldGhpbmcgaXMgYWN0dWFsbHkgbG9hZGVkIGluIHRoZSBwYWdlLgogICAgICAgICBpZiAo
IW1fZHVtbXlQcm9jZXNzUHJveHkpIHsKQEAgLTEyNDIsNyArMTIzMSw3IEBAIFJlZjxXZWJQYWdl
UHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGll
bnQsIFJlZjxBUEk6CiAgICAgICAgIH0KICAgICAgICAgcHJvY2VzcyA9IG1fZHVtbXlQcm9jZXNz
UHJveHk7CiAgICAgfSBlbHNlCi0gICAgICAgIHByb2Nlc3MgPSAmcHJvY2Vzc0ZvclJlZ2lzdHJh
YmxlRG9tYWluKHBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVE
YXRhU3RvcmUoKSwgbnVsbHB0ciwgeyB9KTsKKyAgICAgICAgcHJvY2VzcyA9ICZwcm9jZXNzRm9y
UmVnaXN0cmFibGVEb21haW4oKnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCks
IG51bGxwdHIsIHsgfSk7CiAKICAgICBBU1NFUlQocHJvY2Vzcyk7CiAKQEAgLTEyOTIsNyArMTI4
MSw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtl
cnMoY29uc3QgV2Vic2l0ZURhdGFTdG9yZSYgc3RvCiAKICAgICBTdHJpbmcgc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHN0b3JlLnJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSgpOwogICAgIGlmIChzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRp
b24oKS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgICAgICBzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpOwogCiAgICAgcmV0dXJuIG1fbWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycy5l
bnN1cmUoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgWyZdIHsKICAgICAgICAg
Ly8gRklYTUU6IE1ha2UgdGhpcyBjb21wdXRhdGlvbiBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggN2IzNTc3ZjliNmQu
LjkwNzA5ZmQ4ZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
QEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAi
QVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCi0j
aW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlN
YXAuaCIKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJIaWRkZW5QYWdl
VGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyLmgiCkBAIC00NCw2ICs0Myw3IEBACiAjaW5j
bHVkZSAiV2ViQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJl
bmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2aWdhdGlvbkRh
dGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBAIC0yMDIsOCArMjAyLDggQEAg
cHVibGljOgogICAgIC8vIERpc2Nvbm5lY3QgdGhlIHByb2Nlc3MgZnJvbSB0aGUgY29udGV4dC4K
ICAgICB2b2lkIGRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSopOwogCi0gICAgQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV93
ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRQcmltYXJ5RGF0YVN0b3JlKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKSB7IG1fd2Vic2l0ZURhdGFTdG9yZSA9ICZk
YXRhU3RvcmU7IH0KKyAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29u
c3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9CisgICAgdm9pZCBzZXRQcmlt
YXJ5RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkgeyBtX3dlYnNpdGVEYXRh
U3RvcmUgPSAmZGF0YVN0b3JlOyB9CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQ
YWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAKQEAgLTY3
Niw3ICs2NzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tZW1vcnlTYW1wbGVyRW5hYmxlZCB7
IGZhbHNlIH07CiAgICAgZG91YmxlIG1fbWVtb3J5U2FtcGxlckludGVydmFsIHsgMTQwMC4wIH07
CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7
CisgICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKIAogICAg
IHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgUmVmUHRyPFdlYkNvbnRleHRTdXBwbGVtZW50
PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IFdlYkNvbnRleHRTdXBwbGVtZW50TWFwOwogICAgIFdl
YkNvbnRleHRTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVudHM7CkBAIC03NjEsMTIgKzc2MSw3IEBA
IHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgUGF0aHMgewogICAgICAgICBTdHJpbmcgaW5qZWN0ZWRC
dW5kbGVQYXRoOwotICAgICAgICBTdHJpbmcgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKLSAg
ICAgICAgU3RyaW5nIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwotICAgICAgICBTdHJpbmcgbWVk
aWFDYWNoZURpcmVjdG9yeTsKLSAgICAgICAgU3RyaW5nIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9y
eTsKICAgICAgICAgU3RyaW5nIHVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aDsKLSAgICAgICAg
U3RyaW5nIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDg0OWI2NmQ2OTFlLi5mNjRiYjVhMDE3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2lt
cG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiAjaW1wb3J0ICJDb29raWVTdG9yYWdlVXRpbHND
Ri5oIgorI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiU3RvcmFnZU1hbmFn
ZXIuaCIKICNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9y
dCAiV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCIKQEAgLTIzMCw0ICsyMzEsMTYxIEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1SZW1vdmVSZWNlbnRTZWFyY2hlcyhXYWxsVGlt
ZSBvbGRlc3RUaW1lVG9SZW1vdmUpCiAgICAgV2ViQ29yZTo6cmVtb3ZlUmVjZW50bHlNb2RpZmll
ZFJlY2VudFNlYXJjaGVzKG9sZGVzdFRpbWVUb1JlbW92ZSk7CiB9CiAKK05TU3RyaW5nICpXZWJE
YXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJEYXRhYmFzZURpcmVjdG9yeSI7CitO
U1N0cmluZyAqV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRMb2NhbFN0
b3JhZ2VEYXRhYmFzZVBhdGhQcmVmZXJlbmNlS2V5IjsKK05TU3RyaW5nICpXZWJLaXRNZWRpYUNh
Y2hlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnkiOwor
TlNTdHJpbmcgKldlYktpdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAi
V2ViS2l0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSI7CisKK1dURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKK3sKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorICAgIC8vIFRoaXMgcXVpcmsgdXNlZCB0byBtYWtlIHRoZXNlIGFw
cHMgc2hhcmUgYXBwbGljYXRpb24gY2FjaGUgc3RvcmFnZSwgYnV0IGRvZXNuJ3QgYWNjb21wbGlz
aCB0aGF0IGFueSBtb3JlLgorICAgIC8vIFByZXNlcnZpbmcgaXQgYXZvaWRzIHRoZSBuZWVkIHRv
IG1pZ3JhdGUgZGF0YSB3aGVuIHVwZ3JhZGluZy4KKyAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSBz
aG91bGQganVzdCBoYXZlIFNhZmFyaSwgV2ViQXBwLCBhbmQgd2ViYm9va21hcmtzZCBjcmVhdGUg
YSBkYXRhIHN0b3JlIHdpdGgKKyAgICAvLyB0aGlzIGFwcGxpY2F0aW9uIGNhY2hlIHBhdGgsIGJ1
dCB0aGF0J3Mgbm90IHN1cHBvcnRlZCBhcyBvZiByaWdodCBub3cuCisgICAgaWYgKFdlYkNvcmU6
OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0
aW9uOjppc1dlYkFwcCgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkJvb2ttYXJr
c0QoKSkgeworICAgICAgICBOU1N0cmluZyAqY2FjaGVQYXRoID0gW05TSG9tZURpcmVjdG9yeSgp
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzL2NvbS5hcHBs
ZS5XZWJBcHBDYWNoZSJdOworCisgICAgICAgIHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2
aW5nU3ltbGlua3NJblBhdGgoY2FjaGVQYXRoLnN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGgpOwor
ICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKCJPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSIpOworfQorCitXVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAg
ICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkNhY2hlU3Rv
cmFnZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29y
a0NhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHRl
bXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhQ2FjaGUiKTsKK30KKwor
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oIkluZGV4ZWREQiIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAg
cmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJTZXJ2aWNlV29y
a2VycyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxT
dG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oIkxvY2FsU3RvcmFnZSIpOworfQorCitXVEY6OlN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCit7Cisg
ICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJN
ZWRpYUtleXMiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIldlYlNRTCIpOworfQorCitXVEY6OlN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgp
Cit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCit7Cisg
ICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkphdmFTY3Jp
cHRDb3JlRGVidWciLCBEb250Q3JlYXRlRGlyZWN0b3J5KTsKK30KKworV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHNob3Vs
ZENyZWF0ZURpcmVjdG9yeSkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tl
bjsKKyAgICBzdGF0aWMgTlNVUkwgKnRlbXBVUkw7CisgICAgCisgICAgZGlzcGF0Y2hfb25jZSgm
b25jZVRva2VuLCBeeworICAgICAgICBOU1VSTCAqdXJsID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpOU1RlbXBvcmFyeURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CisgICAgICAgIGlmICgh
dXJsKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
CisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKKyAgICAgICAg
ICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1
bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCisgICAg
ICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZv
XS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgdGVtcFVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOworICAgIH0pOworICAgIAor
ICAgIE5TVVJMICp1cmwgPSBbdGVtcFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGly
ZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOworCisgICAgaWYgKHNob3VsZENyZWF0ZURpcmVj
dG9yeSA9PSBDcmVhdGVEaXJlY3RvcnkKKyAgICAgICAgJiYgKCFbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGly
ZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKSkKKyAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CisgICAgCisgICAg
cmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKK30K
KworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAg
c3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgc3RhdGljIE5TVVJMICpjYWNo
ZVVSTDsKKworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgTlNVUkwg
KnVybCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5T
Q2FjaGVzRGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JV
Ukw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07CisgICAgICAgIGlmICghdXJsKQor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICBpZiAo
IVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7CisgICAgICAgICAgICBOU1N0cmluZyAq
YnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVy
OworICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIGJ1
bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7
CisgICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5k
bGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107CisgICAgICAgIH0KKworICAgICAgICBjYWNo
ZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJl
Y3Rvcnk6WUVTXSByZXRhaW5dOworICAgIH0pOworCisgICAgTlNVUkwgKnVybCA9IFtjYWNoZVVS
TCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZ
RVNdOworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJl
Y3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVz
Om5pbCBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRl
IGRpcmVjdG9yeSAlQCIsIHVybCk7CisKKyAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGgu
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBX
VEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90
IG9uY2VUb2tlbjsKKyAgICBzdGF0aWMgTlNVUkwgKndlYnNpdGVEYXRhVVJMOworCisgICAgZGlz
cGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNMaWJyYXJ5RGlyZWN0b3J5
IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVh
dGU6Tk8gZXJyb3I6bnVsbHB0cl07CisgICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXTsKKworICAgICAg
ICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7CisgICAgICAgICAgICBOU1N0
cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVu
dGlmaWVyOworICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQorICAgICAgICAgICAg
ICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vz
c05hbWU7CisgICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107CisgICAgICAgIH0KKworICAgICAg
ICB3ZWJzaXRlRGF0YVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldl
YnNpdGVEYXRhIiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07CisgICAgfSk7CisKKyAgICBOU1VS
TCAqdXJsID0gW3dlYnNpdGVEYXRhVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJl
Y3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGly
ZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQorICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKKworICAgIHJldHVy
biB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKaW5kZXggOTVhZWRmZTE0MzcuLjQxZGZlMjJlMjBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcApAQCAtMjYsMTUgKzI2LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCisjaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JlLmgi
CiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJ
V2Vic2l0ZURhdGFSZWNvcmQuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJEZXZpY2VJZEhhc2hT
YWx0U3RvcmFnZS5oIgogI2luY2x1ZGUgIk1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaG91bGRHcmFuZGZh
dGhlclN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCisjaW5j
bHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMu
aCIKQEAgLTEzOSw2ICsxNDAsNTcgQEAgV2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9y
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKIH0KIAorc3RhdGljIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiYgZ2xvYmFsRGVmYXVsdERh
dGFTdG9yZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxXZWJzaXRlRGF0
YVN0b3JlPj4gZ2xvYmFsRGVmYXVsdERhdGFTdG9yZTsKKyAgICByZXR1cm4gZ2xvYmFsRGVmYXVs
dERhdGFTdG9yZS5nZXQoKTsKK30KKworUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKQoreworICAgIEluaXRpYWxpemVXZWJLaXQyKCk7CisK
KyAgICBhdXRvJiBzdG9yZSA9IGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIXN0
b3JlKQorICAgICAgICBzdG9yZSA9IGFkb3B0UmVmKG5ldyBXZWJzaXRlRGF0YVN0b3JlKGRlZmF1
bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCkpKTsKKworICAgIHJldHVybiAqc3RvcmU7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcoKQoreworICAgIGdsb2JhbERlZmF1
bHREYXRhU3RvcmUoKSA9IG51bGxwdHI7Cit9CisKK2Jvb2wgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZUV4aXN0cygpCit7CisgICAgcmV0dXJuICEhZ2xvYmFsRGVmYXVsdERhdGFT
dG9yZSgpOworfQorCitSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4g
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQoreworICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVh
dGUoKTsKKworICAgIGNvbmZpZ3VyYXRpb24tPnNldFBlcnNpc3RlbnQodHJ1ZSk7CisKKyAgICBj
b25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFn
ZURpcmVjdG9yeShkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3Vy
YXRpb24tPnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0
b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVs
dE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSk7CisKKyAgICBjb25maWd1cmF0aW9uLT5zZXRJbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSk7
CisgICAgY29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9y
eShkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKKyAgICBjb25m
aWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0V2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0
b3J5KGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+
c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpOworICAgIGNv
bmZpZ3VyYXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0
RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOworCisgICAgY29uZmlndXJhdGlv
bi0+c2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoZGVmYXVsdEphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5KCkpOworCisgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Cit9
CisKIFdlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0YVN0b3JlKCkKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMTcyOCw3ICsxNzgwLDcgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKENvbXBsZXRp
b25IYW5kbGUKIGJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6aXNBc3NvY2lhdGVkUHJvY2Vzc1Bvb2wo
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKSBjb25zdAogewogICAgIGlmIChhdXRvKiBwcm9j
ZXNzUG9vbERhdGFTdG9yZSA9IHByb2Nlc3NQb29sLndlYnNpdGVEYXRhU3RvcmUoKSkKLSAgICAg
ICAgcmV0dXJuICZwcm9jZXNzUG9vbERhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHRo
aXM7CisgICAgICAgIHJldHVybiBwcm9jZXNzUG9vbERhdGFTdG9yZSA9PSB0aGlzOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApAQCAtMTc1NCw3ICsxODA2LDcgQEAgSGFzaFNldDxSZWZQdHI8V2Vi
UHJvY2Vzc1Bvb2w+PiBXZWJzaXRlRGF0YVN0b3JlOjpwcm9jZXNzUG9vbHMoc2l6ZV90IGNvdW50
LCBib28KICAgICB9CiAKICAgICBpZiAocHJvY2Vzc1Bvb2xzLmlzRW1wdHkoKSAmJiBjb3VudCAm
JiBlbnN1cmVBUG9vbEV4aXN0cykgewotICAgICAgICBhdXRvIHByb2Nlc3NQb29sID0gV2ViUHJv
Y2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0
aFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKG1fY29uZmlndXJhdGlvbikpOworICAgICAg
ICBhdXRvIHByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkpOwogICAgICAgICBwcm9jZXNzUG9vbHMuYWRkKHBy
b2Nlc3NQb29sLnB0cigpKTsKICAgICB9CiAKQEAgLTIwMDEsNiArMjA1MywyOCBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OmFkZFNlY0tleVByb3h5U3RvcmUoUmVmPFNlY0tleVByb3h5U3RvcmU+
JiYgc3RvcmUpCiB9CiAjZW5kaWYKIAorI2lmICFQTEFURk9STShDT0NPQSkKK1dURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU2MzY5IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2
MzcwCisgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCit7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKK30KKyNl
bmRpZgorCisjaWYgIVVTRShHTElCKQorV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgLy8gTm90IGlt
cGxlbWVudGVkLgorICAgIHJldHVybiBXVEY6OlN0cmluZygpOworfQorI2VuZGlmCisKICNpZiBF
TkFCTEUoV0VCX0FVVEhOKQogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24m
JiBjb25maWd1cmF0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGY1MmZhZGVlOGM4Li5hZTcyOTc3
MjQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtOTIsMTEgKzkyLDE5IEBAIGVudW0gY2xhc3MgU3RvcmFn
ZUFjY2Vzc1Byb21wdFN0YXR1czsKIHN0cnVjdCBQbHVnaW5Nb2R1bGVJbmZvOwogI2VuZGlmCiAK
LWNsYXNzIFdlYnNpdGVEYXRhU3RvcmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJzaXRlRGF0YVN0
b3JlPiwgcHVibGljIElkZW50aWZpZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxXZWJzaXRlRGF0YVN0b3JlPiAgeworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZSA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OldlYnNpdGVEYXRhU3RvcmU+
LCBwdWJsaWMgSWRlbnRpZmllZDxXZWJzaXRlRGF0YVN0b3JlPiwgcHVibGljIENhbk1ha2VXZWFr
UHRyPFdlYnNpdGVEYXRhU3RvcmU+ICB7CiBwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJzaXRl
RGF0YVN0b3JlPiBkZWZhdWx0RGF0YVN0b3JlKCk7CisgICAgc3RhdGljIGJvb2wgZGVmYXVsdERh
dGFTdG9yZUV4aXN0cygpOworICAgIHN0YXRpYyB2b2lkIGRlbGV0ZURlZmF1bHREYXRhU3RvcmVG
b3JUZXN0aW5nKCk7CisgICAgc3RhdGljIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uPiBkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpOworCiAgICAgc3RhdGlj
IFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50KCk7CiAgICAgc3RhdGlj
IFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7Ci0gICAgdmlydHVhbCB+V2Vic2l0ZURhdGFTdG9y
ZSgpOworCisgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShQQUw6OlNlc3Npb25JRCk7Cisg
ICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24+JiYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB+V2Vic2l0ZURhdGFTdG9yZSgpOwogCiAg
ICAgc3RhdGljIFdlYnNpdGVEYXRhU3RvcmUqIGV4aXN0aW5nTm9uRGVmYXVsdERhdGFTdG9yZUZv
clNlc3Npb25JRChQQUw6OlNlc3Npb25JRCk7CiAKQEAgLTI2NSwxMCArMjczLDIzIEBAIHB1Ymxp
YzoKICAgICBTT0F1dGhvcml6YXRpb25Db29yZGluYXRvciYgc29BdXRob3JpemF0aW9uQ29vcmRp
bmF0b3IoKSB7IHJldHVybiBtX3NvQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLmdldCgpOyB9CiAj
ZW5kaWYKIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vz
c2lvbklEKTsKLSAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHN0YXRpYyBXVEY6OlN0
cmluZyBkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgIHN0
YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgc3Rh
dGljIFdURjo6U3RyaW5nIGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7
CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsK
KyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCk7CisjaWYgVVNFKEdMSUIpCisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRIU1RTRGly
ZWN0b3J5KCk7CisjZW5kaWYKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdERldmlj
ZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBk
ZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKIAorcHJpdmF0ZToKICAg
ICB2b2lkIGZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFJlZlB0cjxXb3JrUXVldWU+JiYsIEZ1bmN0
aW9uPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPik+JiYgYXBwbHkpOwogCiAgICAgdm9p
ZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTI3OSw2ICszMDAsMTMgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHBsYXRmb3JtU2V0TmV0d29ya1BhcmFtZXRlcnMoV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMmKTsKICNlbmRpZgogCisgICAgV2Vic2l0ZURhdGFTdG9yZSgpOworCisgICAgZW51bSBT
aG91bGRDcmVhdGVEaXJlY3RvcnkgeyBDcmVhdGVEaXJlY3RvcnksIERvbnRDcmVhdGVEaXJlY3Rv
cnkgfTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRl
RGlyZWN0b3J5ID0gQ3JlYXRlRGlyZWN0b3J5KTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgY2Fj
aGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRp
cmVjdG9yeU5hbWUpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyB3ZWJzaXRlRGF0YURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFt
ZSk7CisgICAgCiAgICAgSGFzaFNldDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBwcm9jZXNzUG9v
bHMoc2l6ZV90IGNvdW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwgYm9v
bCBlbnN1cmVBUG9vbEV4aXN0cyA9IHRydWUpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5k
ZXggNGQ0NGRkMWQ2YWQuLmU5YzdmY2ExOTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uY3BwCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIgogCi0jaW5jbHVkZSAi
QVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCi0gICAgOiBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSgpKQorICAgIDogbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4
IDYyMzI5MTU1N2QyLi41Y2QwYjIxOGQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5oCkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX3Bl
ck9yaWdpblN0b3JhZ2VRdW90YSB7IFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1
bHRRdW90YSgpIH07CiAgICAgU3RyaW5nIG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5OwogICAgIFN0
cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7Ci0gICAgU3RyaW5nIG1fYXBwbGljYXRp
b25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZTsKKyAgICBTdHJpbmcgbV9hcHBsaWNhdGlv
bkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lIHsgIkZpbGVzIl9zIH07CiAgICAgU3RyaW5n
IG1fbWVkaWFDYWNoZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeTsKICAgICBTdHJpbmcgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvd2luL1dl
YnNpdGVEYXRhU3RvcmVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCmluZGV4IDYwZGQyZTI5NTE0Li4zNWE0YjI0
MGUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvd2lu
L1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIApAQCAtNDUsNCArNDYsNTkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9y
bVJlbW92ZVJlY2VudFNlYXJjaGVzKFdhbGxUaW1lKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxp
Y2F0aW9uQ2FjaGUiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJDYWNoZVN0b3JhZ2UiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOworfQorCitTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJTZXJ2aWNl
V29ya2VycyIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIkxvY2FsU3RvcmFnZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKK30KKworU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOworfQorCitTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQor
eworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7
Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjps
b2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKaW5kZXggZWVmODgyNmQyNmQuLjljYTFjNmIw
YjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQ
cm94eUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vz
c1Byb3h5R0xpYi5jcHAKQEAgLTQzLDggKzQzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnBs
YXRmb3JtR2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGwK
ICAgICAgICAgaWYgKCFkYXRhU3RvcmUpIHsKICAgICAgICAgICAgIC8vIFByZXdhcm1lZCBwcm9j
ZXNzZXMgZG9uJ3QgaGF2ZSBhIFdlYnNpdGVEYXRhU3RvcmUgeWV0LCBzbyB1c2UgdGhlIHByaW1h
cnkgV2Vic2l0ZURhdGFTdG9yZSBmcm9tIHRoZSBXZWJQcm9jZXNzUG9vbC4KICAgICAgICAgICAg
IC8vIFRoZSBwcm9jZXNzIHdvbid0IGJlIHVzZWQgaWYgY3VycmVudCBXZWJzaXRlRGF0YVN0b3Jl
IGlzIGRpZmZlcmVudCB0aGFuIHRoZSBXZWJQcm9jZXNzUG9vbCBwcmltYXJ5IG9uZS4KLSAgICAg
ICAgICAgIGlmIChhdXRvKiBhcGlEYXRhU3RvcmUgPSBtX3Byb2Nlc3NQb29sLT53ZWJzaXRlRGF0
YVN0b3JlKCkpCi0gICAgICAgICAgICAgICAgZGF0YVN0b3JlID0gJmFwaURhdGFTdG9yZS0+d2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgICAgICAgICAgZGF0YVN0b3JlID0gbV9wcm9jZXNzUG9vbC0+
d2Vic2l0ZURhdGFTdG9yZSgpOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKGRhdGFTdG9y
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJz
aXRlRGF0YVN0b3JlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNp
dGVEYXRhU3RvcmVHTGliLmNwcApzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAK
cmVuYW1lIHRvIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdM
aWIuY3BwCmluZGV4IGJkMWE2MWU2ZjViLi5lMzMxNjE2N2Q2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3Bw
CkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAK
ICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQ
dHIuaD4KQEAgLTM1LDcgKzM1LDcgQEAKICNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndwZSIKICNl
bmRpZgogCi1uYW1lc3BhY2UgQVBJIHsKK25hbWVzcGFjZSBXZWJLaXQgewogCiBXVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA4ZWQ4ZTY3ZTk1NC4uMTZjY2UxOTBhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc4LDcgKzE3OCw2IEBACiAJCTFBMzAwNjZF
MTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTMwMDY2QzExMTBGNEY3MDAzMTkzN0Mg
LyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovOyB9OwogCQkxQTMzNERFRDE2REU4Rjg4MDA2QThF
MzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8q
IFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUEzMzRERUUxNkRF
OEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzM0REVDMTZERThGODgwMDZBOEUzOCAv
KiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggKi87IH07Ci0JCTFBMzYzNUFBMUEzMTQ0QTMwMEVE
NjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTM2MzVBODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0
ZURhdGFTdG9yZS5oICovOyB9OwogCQkxQTNDODg4MDE4QTVBQkFFMDBDNEM5NjIgLyogV0tQcmVm
ZXJlbmNlc0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTNDODg3RjE4QTVBQkFFMDBDNEM5NjIgLyogV0tQcmVmZXJlbmNlc0ludGVybmFs
LmggKi87IH07CiAJCTFBM0NDMTY3MTg5MDZBQ0YwMDFFNkVEOCAvKiBXS1dlYlZpZXcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0NDMTY1MTg5MDZB
Q0YwMDFFNkVEOCAvKiBXS1dlYlZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
dWJsaWMsICk7IH07IH07CiAJCTFBM0NDMTY5MTg5MDdFQjAwMDFFNkVEOCAvKiBXS1Byb2Nlc3NQ
b29sSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBM0NDMTY4MTg5MDdFQjAwMDFFNkVEOCAvKiBXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCAq
LzsgfTsKQEAgLTE3MjUsNiArMTcyNCw4IEBACiAJCQljb21waWxlclNwZWMgPSBjb20uYXBwbGUu
Y29tcGlsZXJzLnByb3h5LnNjcmlwdDsKIAkJCWZpbGVQYXR0ZXJucyA9ICIqLmgiOwogCQkJZmls
ZVR5cGUgPSBwYXR0ZXJuLnByb3h5OworCQkJaW5wdXRGaWxlcyA9ICgKKwkJCSk7CiAJCQlpc0Vk
aXRhYmxlID0gMTsKIAkJCW91dHB1dEZpbGVzID0gKAogCQkJCSIkKEhFQURFUl9PVVRQVVRfRElS
KS8kKElOUFVUX0ZJTEVfTkFNRSkiLApAQCAtMjEyMSw5ICsyMTIyLDYgQEAKIAkJMUEzMzRERUEx
NkRFOEI2ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN0b3Jh
Z2VBcmVhTWFwLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTMz
NERFQjE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RvcmFnZUFyZWFNYXBNZXNz
YWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlQXJl
YU1hcE1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CiAJCTFBMzM0REVDMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0b3JhZ2VBcmVhTWFwTWVzc2Fn
ZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZUFyZWFNYXBNZXNzYWdl
cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQkxQTM2MzVBNzFBMzE0
NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBUElXZWJzaXRlRGF0YVN0b3JlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUEzNjM1QTgxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVE
YXRhU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJV2Vic2l0ZURh
dGFTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTM2MzVBQjFBMzE0NUU1
MDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTNBNzNDQjFBNDhDNkQ0MDA3MjMxQjMgLyogQVBJ
UGFnZUdyb3VwSGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFQSVBhZ2VHcm91cEhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
M0E3M0NDMUE0OEM2RDQwMDcyMzFCMyAvKiBBUElQYWdlR3JvdXBIYW5kbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJUGFnZUdyb3VwSGFuZGxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBM0M4ODdGMThBNUFCQUUwMEM0Qzk2MiAvKiBXS1ByZWZlcmVu
Y2VzSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcmVmZXJl
bmNlc0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzY3LDcgKzYz
NjUsNiBAQAogCQkJCTdDRUZBOTYwMUFDMDk5OTMwMEI5MTBGRCAvKiBBUElDb250ZW50UnVsZUxp
c3RTdG9yZUNvY29hLm1tICovLAogCQkJCTVDQTQ2RTdBMjFGMUEyMzkwMENFODZCNCAvKiBBUElI
VFRQQ29va2llU3RvcmVDb2NvYS5tbSAqLywKIAkJCQlGRUQzQzFEQTFCNDQ3QUU4MDBFMEVCN0Yg
LyogQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0gKi8sCi0JCQkJMUEzNjM1QUIxQTMx
NDVFNTAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSAqLywKIAkJCQkxQUZE
RTY0MzE5NTEwQjU1MDBDNDhGRkEgLyogTGVnYWN5QnVuZGxlRm9yQ2xhc3MubW0gKi8sCiAJCQkJ
MUMyMDkzNUUyMjMxOENCMDAwMDI2QTM5IC8qIE5TQXR0cmlidXRlZFN0cmluZy5oICovLAogCQkJ
CTFDMjA5MzVGMjIzMThDQjAwMDAyNkEzOSAvKiBOU0F0dHJpYnV0ZWRTdHJpbmcubW0gKi8sCkBA
IC03OTc3LDggKzc5NzQsNiBAQAogCQkJCTJEODc4NjIyMUJEQjU4RkYwMEQwMkFCQiAvKiBBUElV
c2VyU3R5bGVTaGVldC5oICovLAogCQkJCTFBRTI4NjgxMUM3RjkzODYwMDY5QUM0RiAvKiBBUElX
ZWJzaXRlRGF0YVJlY29yZC5jcHAgKi8sCiAJCQkJMUFFMjg2ODIxQzdGOTM4NjAwNjlBQzRGIC8q
IEFQSVdlYnNpdGVEYXRhUmVjb3JkLmggKi8sCi0JCQkJMUEzNjM1QTcxQTMxNDRBMzAwRUQ2MTk3
IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuY3BwICovLAotCQkJCTFBMzYzNUE4MUEzMTQ0QTMwMEVE
NjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmggKi8sCiAJCQkJNUM4REQzN0QxRkU0NTAxMTAw
RjJBNTU2IC8qIEFQSVdlYnNpdGVQb2xpY2llcy5jcHAgKi8sCiAJCQkJNUM4REQzN0MxRkU0NTAx
MTAwRjJBNTU2IC8qIEFQSVdlYnNpdGVQb2xpY2llcy5oICovLAogCQkJCTFBNjU2M0UyMUI3QThD
NTAwMDlDRjc4NyAvKiBBUElXaW5kb3dGZWF0dXJlcy5jcHAgKi8sCkBAIC05MzgyLDcgKzkzNzcs
NiBAQAogCQkJCUM1RTFBRkVEMTZCMjEwMTcwMDZDQzFGMiAvKiBBUElXZWJBcmNoaXZlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDNUUxQUZFRjE2QjIxMDI5MDA2Q0MxRjIgLyogQVBJV2ViQXJjaGl2
ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUyODY4NDFDN0Y5Mzg2MDA2OUFDNEYg
LyogQVBJV2Vic2l0ZURhdGFSZWNvcmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBMzYzNUFBMUEz
MTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTY1NjNFNTFCN0E4QzUwMDA5Q0Y3ODcgLyogQVBJV2luZG93RmVhdHVyZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUY0OEQyQTg1MjE1ODNBN0UwMEM2NzUyQiAvKiBBcHBLaXRTUEkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBRDRDMTkzMUIzOUYzMzIwMEFCQzI4RSAvKiBBcHBsaWNhdGlvblN0
YXRlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIu
Y3BwCmluZGV4IDg2MzY0YjA3NmE5Li45MDM5OTBiZjk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5jcHAKQEAgLTM3LDcgKzM3LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIHZvaWQgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6c2V0V2Vic2l0ZURhdGFTdG9yZShj
b25zdCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBB
U1NFUlQoIXBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CiAg
ICAgbV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFn
ZURpcmVjdG9yeTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379279</attachid>
            <date>2019-09-20 16:12:16 -0700</date>
            <delta_ts>2019-09-20 16:20:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201655-20190920161215.patch</filename>
            <type>text/plain</type>
            <size>165586</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxNjEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzMyBAQAorMjAxOS0wOS0yMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB1bm5l
Y2Vzc2FyeSBhYnN0cmFjdGlvbnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogUGxhdGZvcm1GVFcuY21ha2U6Cisg
ICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzV1BFLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29r
aWVTdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAg
ICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUpOgorICAgICAg
ICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0V2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0
ZVBvbGljaWVzOjpXZWJzaXRlUG9saWNpZXMpOgorICAgICAgICAoQVBJOjpXZWJzaXRlUG9saWNp
ZXM6OnNldFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoQVBJOjpXZWJzaXRlUG9saWNpZXM6
OmRhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0Q2FjaGVNb2RlbCk6
CisgICAgICAgIChXS0NvbnRleHRHZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9y
ZUdldFR5cGVJRCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXREZWZhdWx0RGF0YVN0
b3JlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUNyZWF0ZU5vblBlcnNpc3RlbnREYXRh
U3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlV2l0aENvbmZpZ3VyYXRp
b24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0SFRUUENvb2tpZVN0b3JlKToKKyAg
ICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01v
ZGVXaXRoQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKToKKyAg
ICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0U2Vlbik6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UpOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJj
ZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVEdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFs
ZW50UmVzb3VyY2UpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVn
aXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKToKKyAgICAgICAgKFdLV2Vic2l0
ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8pOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbik6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJh
Y3Rpb24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0dyYW5kZmF0
aGVyZWQpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3JhbmRmYXRo
ZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3ViZnJhbWVV
bmRlclRvcEZyYW1lT3JpZ2luKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyk6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdEZyb20pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RvcEZy
YW1lVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24pOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJh
Y3Rpb24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0
aXN0aWNzQW5kRGF0YVJlY29yZHMpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0lzUnVubmluZ1Rlc3QpOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2Vz
QmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCk6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJl
Y29yZHNSZW1vdmFsKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NH
cmFuZGZhdGhlcmluZ1RpbWUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc01heFN0YXRpc3RpY3NFbnRyaWVzKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NQcnVuZUVudHJpZXNEb3duVG8pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUpOgorICAgICAgICAo
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3Rv
cmVNb2RpZmllZFNpbmNlSG91cnMpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbCk6CisgICAgICAgIChXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZSk6CisgICAgICAgIChXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXApOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbik6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxGZXRjaENhY2hlcyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hlRm9yT3JpZ2luKToKKyAgICAgICAgKFdL
V2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXMpOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKFdLV2Vic2l0ZURh
dGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKToKKyAgICAgICAgKFdL
V2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVPcmlnaW5zKToKKyAgICAgICAgKFdLV2Vic2l0
ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplRm9yT3JpZ2luKToKKyAgICAgICAgKFdLV2Vic2l0
ZURhdGFTdG9yZUNvcHlTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rv
cnkpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZpY2VPcmllbnRhdGlv
blBlcm1pc3Npb25zKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFdlYkF1dGhlbnRp
Y2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ2xl
YXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTogUmVtb3ZlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAg
ICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdKToKKyAgICAgICAgKCtb
V0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdKToKKyAgICAgICAgKC1b
V0tXZWJzaXRlRGF0YVN0b3JlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIGh0dHBDb29raWVTdG9yZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgcmVt
b3ZlRGF0YU9mVHlwZXM6bW9kaWZpZWRTaW5jZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOmZvckRhdGFSZWNvcmRz
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUgX2Rl
ZmF1bHREYXRhU3RvcmVFeGlzdHNdKToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIF9k
ZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZ10pOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgX2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRl
RGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3aXRoT3B0aW9uczpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVdKToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOl0pOgor
ICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2NhY2hlU3RvcmFnZURpcmVjdG9yeV0pOgor
ICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldENhY2hlU3RvcmFnZURpcmVjdG9yeTpd
KToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0
YVN0b3JlIF9zZXRCb3VuZEludGVyZmFjZUlkZW50aWZpZXI6XSk6CisgICAgICAgICgtW1dLV2Vi
c2l0ZURhdGFTdG9yZSBfYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyXSk6CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfc2V0QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6XSk6CisgICAgICAgICgt
W1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dzQ2VsbHVsYXJBY2Nlc3NdKToKKyAgICAgICAgKC1b
V0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRQcm94eUNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgt
W1dLV2Vic2l0ZURhdGFTdG9yZSBfc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyXSk6
CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0U291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NvdXJjZUFw
cGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjpdKToKKyAgICAg
ICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm94eUNvbmZpZ3VyYXRpb25dKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeV0pOgorICAg
ICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91
bGRTdWJtaXRUZWxlbWV0cnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpdKToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zvcjpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zY2hlZHVsZUNvb2tp
ZUJsb2NraW5nVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFBy
ZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRl
RGF0YVN0b3JlIF9nZXRJc1ByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERvbWFpbjpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm9jZXNzU3Rh
dGlzdGljc0FuZERhdGFSZWNvcmRzOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUg
X2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyXSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFT
dG9yZSBfZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIHNldF9kZWxl
Z2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRh
U3RvcmVHTGliLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYnNpdGVEYXRhTWFu
YWdlclNldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERh
dGFTdG9yZSk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xvY2Fs
X3N0b3JhZ2VfZGlyZWN0b3J5KToKKyAgICAgICAgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeSk6CisgICAg
ICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3Rvcnkp
OgorICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0
b3J5KToKKyAgICAgICAgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19jYWNo
ZV9kaXJlY3RvcnkpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNo
KToKKyAgICAgICAgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9yZW1vdmUpOgorICAgICAg
ICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyKToKKyAgICAgICAgKHdlYmtpdFdl
YnNpdGVEYXRhTWFuYWdlckNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3b3JrUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6d2Vic2l0ZURhdGFTdG9yZUZyb21TZXNzaW9uSUQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2Vp
dmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3dlYlByb2Nlc3NDYWNoZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
dHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjptYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGly
ZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6dGVt
cERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2xvYmFsRGVmYXVsdERh
dGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRh
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVEZWZhdWx0
RGF0YVN0b3JlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmlzQXNzb2NpYXRlZFByb2Nlc3NQb29sIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2Fj
aGVTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExv
Y2FsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExhdW5jaE9wdGlvbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9y
ZUdMaWIuY3BwLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KTogRGVs
ZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpOiBEZWxldGVkLgor
ICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0
b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KTogRGVs
ZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdEhTVFNEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOiBEZWxldGVk
LgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6c2V0V2Vic2l0ZURhdGFT
dG9yZSk6CisKIDIwMTktMDktMjAgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSBzb21lIHN1cHBvcnQgZm9yIDwgaU9TIDEzCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm1GVFcuY21ha2UJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZv
cm1GVFcuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDYgQEAgbGlzdChBUFBFTkQg
V2ViS2l0X1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcAogCi0g
ICAgVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKLQogICAgIFVJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdy
YXBoaWNzLmNwcAogCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL3dpbi9Qcm9jZXNzTGF1bmNoZXJX
aW4uY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHJldmlzaW9uIDI1MDEyMikKKysr
IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDgg
KzQ2LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9BUEkv
Qy93aW4vV0tWaWV3LmNwcAogCi0gICAgVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFT
dG9yZVdpbi5jcHAKLQogICAgIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdB
cmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAogCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVy
L3dpbi9Qcm9jZXNzTGF1bmNoZXJXaW4uY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHJldmlzaW9uIDI1
MDE0OCkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMx
OCw3ICszMTgsNiBAQCBVSVByb2Nlc3MvQVBJL0FQSVVSTFNjaGVtZVRhc2suY3BwCiBVSVByb2Nl
c3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3Jp
cHQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcAotVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNp
ZXMuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVdpbmRvd0ZlYXR1cmVzLmNwcAogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI3NCw3ICsyNzQsNiBAQCBVSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tCiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJSFRUUENv
b2tpZVN0b3JlQ29jb2EubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlw
dFZhbHVlQ29jb2EubW0KLVVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNv
Y29hLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL0xlZ2FjeUJ1bmRsZUZvckNsYXNzLm1tCiBVSVBy
b2Nlc3MvQVBJL0NvY29hL05TQXR0cmlidXRlZFN0cmluZy5tbQogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0JhY2tGb3J3YXJkTGlzdC5tbQpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CShyZXZpc2lvbiAy
NTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xMjUsNyArMTI1LDYgQEAgVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1RleHRDaGVja2VyR3RrLmNw
cAogVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuY3BwCiAKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9B
UElDb250ZW50UnVsZUxpc3RTdG9yZUdMaWIuY3BwIEBuby11bmlmeQotVUlQcm9jZXNzL0FQSS9n
bGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9JY29uRGF0YWJhc2UuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEFwcGxpY2F0aW9uSW5mby5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcCBAbm8tdW5pZnkKQEAgLTIzMiw2ICsyMzEsNyBAQCBV
SVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIEBuCiBVSVByb2Nlc3MvZ2xpYi9S
ZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdM
aWIuY3BwCiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAorVUlQcm9jZXNz
L2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogCiBVSVByb2Nlc3MvZ3N0
cmVhbWVyL0luc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QuY3BwCiBV
SVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU291cmNlc1dQRS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3Vy
Y2VzV1BFLnR4dAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzV1BF
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw2IEBAIFVJUHJvY2Vzcy9BUEkvQy9X
S1ZpZXdwb3J0QXR0cmlidXRlcy5jcHAKIFVJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcAog
CiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVHTGliLmNwcCBAbm8t
dW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAgQG5v
LXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBAbm8tdW5pZnkKIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3BwIEBuby11bmlmeQogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAgQG5vLXVuaWZ5
CkBAIC0xOTIsNiArMTkxLDcgQEAgVUlQcm9jZXNzL2dlb2NsdWUvR2VvY2x1ZUdlb2xvY2F0aW9u
UHJvdgogCiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCiBVSVByb2Nlc3Mv
Z2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAorVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFT
dG9yZUdMaWIuY3BwIEBuby11bmlmeQogCiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNz
TGF1bmNoZXJHTGliLmNwcAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5j
aGVyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJveHkuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5LmgiCiAKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uLmgiCi0jaW5jbHVkZSAiQVBJV2Vi
c2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1
ZGUgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1
MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQxNiw3ICs0MTYsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQ
YWdlQ2xpZW50JiBwCiAgICAgLCBtX3ByZWZlcmVuY2VzKCptX2NvbmZpZ3VyYXRpb24tPnByZWZl
cmVuY2VzKCkpCiAgICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcigqbV9jb25maWd1cmF0aW9u
LT51c2VyQ29udGVudENvbnRyb2xsZXIoKSkKICAgICAsIG1fdmlzaXRlZExpbmtTdG9yZSgqbV9j
b25maWd1cmF0aW9uLT52aXNpdGVkTGlua1N0b3JlKCkpCi0gICAgLCBtX3dlYnNpdGVEYXRhU3Rv
cmUobV9jb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUo
KSkKKyAgICAsIG1fd2Vic2l0ZURhdGFTdG9yZSgqbV9jb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0
YVN0b3JlKCkpCiAgICAgLCBtX3VzZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2VudCgpKQogICAgICwg
bV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB7IG1fY29uZmlndXJhdGlvbi0+b3ZlcnJp
ZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKSB9CiAgICAgLCBtX3RyZWF0c1NIQTFDZXJ0aWZpY2F0
ZXNBc0luc2VjdXJlKG1fY29uZmlndXJhdGlvbi0+dHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRl
c0FzSW5zZWN1cmUoKSkKQEAgLTI4NjYsOCArMjg2Niw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZE5hdmlnYXRpb25Qb2wKICAgICBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiBk
YXRhOwogICAgIGlmIChwb2xpY2llcykgewogICAgICAgICBkYXRhID0gcG9saWNpZXMtPmRhdGEo
KTsKLSAgICAgICAgaWYgKHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCkgJiYgJnBvbGljaWVz
LT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0
b3JlLnB0cigpKSB7Ci0gICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gcG9saWNpZXMtPndl
YnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICBpZiAocG9saWNp
ZXMtPndlYnNpdGVEYXRhU3RvcmUoKSAmJiBwb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9
IHdlYnNpdGVEYXRhU3RvcmUucHRyKCkpIHsKKyAgICAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUg
PSAqcG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKTsKICAgICAgICAgICAgIHByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQgPSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpZZXM7CiAg
ICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCShyZXZpc2lvbiAyNTAxNDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw4ICsyNDQsOCBAQCBXZWJQ
cm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jCiAgICAgICAgIFByb2Nlc3M6OnNl
dElkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI6OmdlbmVyYXRlKCkpOwogICAg
IH0pOwogCi0gICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUgJiYgQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9y
ZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpOworICAgIGlmICgh
bV93ZWJzaXRlRGF0YVN0b3JlICYmIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERh
dGFTdG9yZUV4aXN0cygpKQorICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKIAogICAgIGZvciAoYXV0byYgc2No
ZW1lIDogbV9jb25maWd1cmF0aW9uLT5hbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMoKSkKICAg
ICAgICAgbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2YWxpZGF0ZWQuYWRkKHNjaGVtZSk7
CkBAIC00ODMsMTMgKzQ4MywxMyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9v
bDo6ZW5zCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsK
IAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZh
dWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZW5kaW5nQ29va2llcyA9IGNvcHlUb1ZlY3RvcihtX3dl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZW5kaW5nQ29va2llcygpKTsKLSAg
ICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuY2xlYXJQZW5kaW5n
Q29va2llcygpOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJz
LnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVuZGlu
Z0Nvb2tpZXMoKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+Y2xlYXJQZW5kaW5nQ29v
a2llcygpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHRE
YXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zb3VyY2VBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3Rv
cmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKLSAgICAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyID0gbV93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVy
KCk7CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IG1f
d2Vic2l0ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCk7Cisg
ICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9IG1fd2Vi
c2l0ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7CiAj
ZW5kaWYKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkubmV0
d29ya2luZ0hhc0JlZ3VuKCk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+bmV0d29ya2lu
Z0hhc0JlZ3VuKCk7CiAgICAgfQogCiAgICAgcGFyYW1ldGVycy5jYWNoZU1vZGVsID0gTGVnYWN5
R2xvYmFsU2V0dGluZ3M6OnNpbmdsZXRvbigpLmNhY2hlTW9kZWwoKTsKQEAgLTU0MSw4ICs1NDEs
OCBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgLy8gKioq
KioqKioqCiAgICAgLy8gSU1QT1JUQU5UOiBEbyBub3QgY2hhbmdlIHRoZSBkaXJlY3Rvcnkgc3Ry
dWN0dXJlIGZvciBpbmRleGVkIGRhdGFiYXNlcyBvbiBkaXNrIHdpdGhvdXQgZmlyc3QgY29uc3Vs
dGluZyBhIHJldmlld2VyIGZyb20gQXBwbGUgKDxyZGFyOi8vcHJvYmxlbS8xNzQ1NDcxMj4pCiAg
ICAgLy8gKioqKioqKioqCi0gICAgaWYgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERh
dGFTdG9yZUV4aXN0cygpKQotICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJh
bWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVycygpLmluZGV4
ZWREYXRhYmFzZURpcmVjdG9yeTsKKyAgICBpZiAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCktPnBhcmFtZXRlcnMoKS5pbmRleGVkRGF0YWJh
c2VEaXJlY3Rvcnk7CiAgICAgCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQ
YXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFt
ZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5
LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CkBAIC01NTIsOSArNTUyLDkgQEAgTmV0d29ya1Byb2Nl
c3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIHBhcmFtZXRlcnMuc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgp
OworICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnkg
PSBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSgpOwogICAgIGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5KQotICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkgPSAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkgPSAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLnNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBpZiAoIW1fc2NoZW1lc1Nl
cnZpY2VXb3JrZXJzQ2FuSGFuZGxlLmlzRW1wdHkoKSkKQEAgLTU2MywxNiArNTYzLDE2IEBAIE5l
dHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICBwYXJhbWV0ZXJzLnNo
b3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgPSBtX3Nob3Vs
ZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXk7CiAjZW5kaWYKIAot
ICAgIGF1dG8gbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0YVN0b3JlID8gbV93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb2x2ZWRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKSA6IG51bGxTdHJpbmcoKTsKKyAgICBhdXRvIGxvY2FsU3RvcmFnZURpcmVjdG9y
eSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb2x2ZWRMb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoKSA6IG51bGxTdHJpbmcoKTsKICAgICBpZiAoIWxvY2FsU3RvcmFn
ZURpcmVjdG9yeSkKLSAgICAgICAgbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgICAgIGxvY2Fs
U3RvcmFnZURpcmVjdG9yeSA9IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpOwogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFt
ZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwogICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMu
bG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGlmIChtX3dlYnNp
dGVEYXRhU3RvcmUpCi0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvbHZlZFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKKyAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0
RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVzb2x2ZWRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAgICAgaWYgKHBhcmFtZXRlcnMuZGVmYXVsdERh
dGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHRE
YXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHRE
YXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwogCkBAIC01OTgsMTcgKzU5OCwxNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5
JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgfSBlbHNlIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUp
IHsKICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fd2Vic2l0ZURhdGFT
dG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
aGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygpOworICAgICAgICBlbmFibGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5oYXNTdGF0
aXN0aWNzVGVzdGluZ0NhbGxiYWNrKCk7CiAjZW5kaWYKICAgICAgICAgaWYgKGVuYWJsZVJlc291
cmNlTG9hZFN0YXRpc3RpY3MpIHsKLSAgICAgICAgICAgIGF1dG8gbmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1ldGVy
cygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKKyAgICAgICAgICAgIGF1dG8gbmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5wYXJhbWV0ZXJzKCkubmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzOwogICAgICAgICAgICAgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCA9
IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOwogICAgICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RlYnVnTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5lbmFibGVSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGVidWdNb2RlOwogICAgICAgICAgICAgbWFudWFsUHJldmFsZW50UmVzb3VyY2Ug
PSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFBy
ZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0
RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVvdGEgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZXJPcmlnaW5TdG9yYWdlUXVvdGEoKTsKLSAgICAg
ICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJUaGlyZFBhcnR5T3Jp
Z2luU3RvcmFnZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
cGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOworICAgICAgICBwYXJhbWV0ZXJzLmRl
ZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90YSA9IG1fd2Vic2l0
ZURhdGFTdG9yZS0+cGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7CisgICAgICAgIHBhcmFtZXRlcnMu
ZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90
YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgp
OwogICAgIH0KIAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBlbmFi
bGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNjkxLDggKzY5MSw4IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnQKIAogICAgIGlmICghd2Vic2l0ZURhdGFTdG9y
ZSkgewogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgp
LnB0cigpOwotICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gJm1fd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CisgICAgICAg
IHdlYnNpdGVEYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7CiAgICAgfQogCiAg
ICAgUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEIHJlZ2lzdHJhYmxlRG9tYWluV2l0aFNl
c3Npb25JRCB7IFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVnaXN0cmFibGVEb21haW4gfSwgc2Vzc2lv
bklEIH07CkBAIC04MDMsNyArODAzLDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJv
Y2Vzc1Bvb2w6OgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIC8vIElu
IHBsYXRmb3JtcyB1c2luZyBCdWJibGV3cmFwIGZvciBzYW5kYm94aW5nLCBwcmV3YXJtZWQgcHJv
Y2VzcyBpcyBsYXVuY2hlZCB1c2luZyB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBXZWJzaXRl
RGF0YVN0b3JlLAogICAgIC8vIHNvIHdlIGRvbid0IHVzZSBpdCBpbiBjYXNlIG9mIHVzaW5nIGEg
ZGlmZmVyZW50IFdlYnNpdGVEYXRhU3RvcmUuCi0gICAgaWYgKG1fc2FuZGJveEVuYWJsZWQgJiYg
bV93ZWJzaXRlRGF0YVN0b3JlICYmICZtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3Rv
cmUoKSAhPSAmd2Vic2l0ZURhdGFTdG9yZSkKKyAgICBpZiAobV9zYW5kYm94RW5hYmxlZCAmJiBt
X3dlYnNpdGVEYXRhU3RvcmUgJiYgbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpICE9ICZ3ZWJzaXRl
RGF0YVN0b3JlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogCkBAIC0xMDgwLDcg
KzEwODAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkRmluaXNoTGF1CiAgICAg
bV9jb25uZWN0aW9uQ2xpZW50LmRpZENyZWF0ZUNvbm5lY3Rpb24odGhpcywgcHJvY2Vzcy0+d2Vi
Q29ubmVjdGlvbigpKTsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIG1f
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmRpZENyZWF0ZU5ldHdvcmtQcm9j
ZXNzKCk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+ZGlkQ3JlYXRlTmV0d29ya1Byb2Nl
c3MoKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzKQpAQCAtMTE1OSw3ICsxMTU5LDcgQEAgV2ViUHJvY2Vzc1Byb3h5
JiBXZWJQcm9jZXNzUG9vbDo6cHJvY2VzcwogICAgICAgICByZXR1cm4gY3JlYXRlTmV3V2ViUHJv
Y2Vzcygmd2Vic2l0ZURhdGFTdG9yZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29s
IG11c3RNYXRjaERhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZUV4aXN0cygpICYmICZ3ZWJzaXRlRGF0YVN0b3JlICE9ICZBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGJvb2wgbXVz
dE1hdGNoRGF0YVN0b3JlID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0
b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CiAjZWxzZQogICAgIGJvb2wgbXVzdE1hdGNo
RGF0YVN0b3JlID0gZmFsc2U7CiAjZW5kaWYKQEAgLTExOTMsNyArMTE5Myw3IEBAIFJlZjxXZWJQ
YWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUKICAgICAgICAgLy8gV2UgdHJ5IHRvIGF2
b2lkIGNyZWF0aW5nIHRoZSBkZWZhdWx0IGRhdGEgc3RvcmUgYXMgbG9uZyBhcyBwb3NzaWJsZS4K
ICAgICAgICAgLy8gQnV0IGlmIHRoZXJlIGlzIGFuIGF0dGVtcHQgdG8gY3JlYXRlIGEgd2ViIHBh
Z2Ugd2l0aG91dCBhbnkgc3BlY2lmaWVkIGRhdGEgc3RvcmUsIHRoZW4gd2UgaGF2ZSB0byBjcmVh
dGUgaXQuCiAgICAgICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQotICAgICAgICAgICAgbV93
ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3Jl
KCkucHRyKCk7CisgICAgICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKIAogICAgICAgICBwYWdlQ29u
ZmlndXJhdGlvbi0+c2V0V2Vic2l0ZURhdGFTdG9yZShtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCkp
OwogICAgIH0KQEAgLTEyMDQsOCArMTIwNCw4IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nl
c3NQb29sOjpjcmVhdGUKICAgICAgICAgLy8gU2hhcmluZyBwcm9jZXNzZXMsIGUuZy4gd2hlbiBj
cmVhdGluZyB0aGUgcGFnZSB2aWEgd2luZG93Lm9wZW4oKS4KICAgICAgICAgcHJvY2VzcyA9ICZw
YWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKS0+ZW5zdXJlUnVubmluZ1Byb2Nlc3MoKTsK
ICAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgc2V2ZXJhbCBXZWJzaXRlRGF0YVN0b3JlcyBz
aGFyaW5nIGEgc2luZ2xlIHByb2Nlc3MuCi0gICAgICAgIEFTU0VSVChwcm9jZXNzLmdldCgpID09
IG1fZHVtbXlQcm9jZXNzUHJveHkgfHwgJnBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0
b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgp
KTsKLSAgICAgICAgQVNTRVJUKCZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpID09ICZwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgp
LT53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBBU1NFUlQocHJvY2Vzcy5nZXQoKSA9PSBt
X2R1bW15UHJvY2Vzc1Byb3h5IHx8IHBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3Jl
KCkgPT0gJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIEFTU0VSVCgmcGFn
ZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPndlYnNpdGVEYXRhU3RvcmUoKSA9PSBwYWdl
Q29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKICAgICB9IGVsc2UgaWYgKCFtX2lz
RGVsYXllZFdlYlByb2Nlc3NMYXVuY2hEaXNhYmxlZCkgewogICAgICAgICAvLyBJbiB0aGUgY29t
bW9uIGNhc2UsIHdlIGRlbGF5IHByb2Nlc3MgbGF1bmNoIHVudGlsIHNvbWV0aGluZyBpcyBhY3R1
YWxseSBsb2FkZWQgaW4gdGhlIHBhZ2UuCiAgICAgICAgIGlmICghbV9kdW1teVByb2Nlc3NQcm94
eSkgewpAQCAtMTIxNSw3ICsxMjE1LDcgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZQogICAgICAgICB9CiAgICAgICAgIHByb2Nlc3MgPSBtX2R1bW15UHJvY2Vzc1By
b3h5OwogICAgIH0gZWxzZQotICAgICAgICBwcm9jZXNzID0gJnByb2Nlc3NGb3JSZWdpc3RyYWJs
ZURvbWFpbihwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0
YVN0b3JlKCksIG51bGxwdHIsIHsgfSk7CisgICAgICAgIHByb2Nlc3MgPSAmcHJvY2Vzc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKCpwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLCBu
dWxscHRyLCB7IH0pOwogCiAgICAgQVNTRVJUKHByb2Nlc3MpOwogCkBAIC0xMjY1LDcgKzEyNjUs
NyBAQCBib29sIFdlYlByb2Nlc3NQb29sOjptYXlIYXZlUmVnaXN0ZXJlZFNlCiAKICAgICBTdHJp
bmcgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHN0b3JlLnJlc29sdmVkU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAgIGlmIChzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFT
dG9yZUNvbmZpZ3VyYXRpb24oKS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgp
OworICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0gV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLT5zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CiAKICAgICByZXR1cm4gbV9tYXlIYXZlUmVn
aXN0ZXJlZFNlcnZpY2VXb3JrZXJzLmVuc3VyZShzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5LCBbJl0gewogICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIGNvbXB1dGF0aW9uIG9u
IGEgYmFja2dyb3VuZCB0aHJlYWQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgJKHJldmlzaW9uIDI1MDE0OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNs
dWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAi
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFT
dG9yZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJHZW5lcmlj
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXND
b3VudGVyLmgiCkBAIC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dENvbm5lY3Rp
b25DbGllbnQuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJh
YmxlRG9tYWluLmg+CkBAIC0yMDQsOCArMjA0LDggQEAgcHVibGljOgogICAgIC8vIERpc2Nvbm5l
Y3QgdGhlIHByb2Nlc3MgZnJvbSB0aGUgY29udGV4dC4KICAgICB2b2lkIGRpc2Nvbm5lY3RQcm9j
ZXNzKFdlYlByb2Nlc3NQcm94eSopOwogCi0gICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlKiB3ZWJz
aXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9
Ci0gICAgdm9pZCBzZXRQcmltYXJ5RGF0YVN0b3JlKEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgZGF0
YVN0b3JlKSB7IG1fd2Vic2l0ZURhdGFTdG9yZSA9ICZkYXRhU3RvcmU7IH0KKyAgICBXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3dl
YnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFByaW1hcnlEYXRhU3RvcmUoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpIHsgbV93ZWJzaXRlRGF0YVN0b3JlID0g
JmRhdGFTdG9yZTsgfQogCiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdl
Q2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogCkBAIC02NzcsNyArNjc3
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWVtb3J5U2FtcGxlckVuYWJsZWQgeyBmYWxzZSB9
OwogICAgIGRvdWJsZSBtX21lbW9yeVNhbXBsZXJJbnRlcnZhbCB7IDE0MDAuMCB9OwogCi0gICAg
UmVmUHRyPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOworICAgIFJl
ZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKIAogICAg
IHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgUmVmUHRyPFdlYkNvbnRleHRTdXBwbGVtZW50
PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IFdlYkNvbnRleHRTdXBwbGVtZW50TWFwOwogICAgIFdl
YkNvbnRleHRTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVudHM7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAkocmV2aXNpb24g
MjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9y
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNp
dGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFn
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5oCShy
ZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENv
b2tpZVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgZW51bSBjbGFzcyBI
VFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludAogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEFQ
SVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyOwotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsK
IAogY2xhc3MgSFRUUENvb2tpZVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0
OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcAkocmV2aXNp
b24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEyICsxNTEsMTIgQEAgdm9pZCBQYWdl
Q29uZmlndXJhdGlvbjo6c2V0VmlzaXRlZExpbmtTdAogICAgIG1fdmlzaXRlZExpbmtTdG9yZSA9
IHZpc2l0ZWRMaW5rU3RvcmU7CiB9CiAKLUFQSTo6V2Vic2l0ZURhdGFTdG9yZSogUGFnZUNvbmZp
Z3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQorV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlKiBQ
YWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSgpCiB7CiAgICAgcmV0dXJuIG1fd2Vi
c2l0ZURhdGFTdG9yZS5nZXQoKTsKIH0KIAotdm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0V2Vi
c2l0ZURhdGFTdG9yZShBUEk6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUpCit2
b2lkIFBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUg
PSB3ZWJzaXRlRGF0YVN0b3JlOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NCwxMiArNDQsMTIgQEAgY2xhc3MgV2ViUHJlZmVyZW5jZXM7CiBjbGFzcyBX
ZWJQcm9jZXNzUG9vbDsKIGNsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXI7CiBjbGFzcyBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiB9CiAKIG5h
bWVzcGFjZSBBUEkgewogCiBjbGFzcyBBcHBsaWNhdGlvbk1hbmlmZXN0OwotY2xhc3MgV2Vic2l0
ZURhdGFTdG9yZTsKIGNsYXNzIFdlYnNpdGVQb2xpY2llczsKIAogY2xhc3MgUGFnZUNvbmZpZ3Vy
YXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlBhZ2VDb25maWd1cmF0aW9u
PiB7CkBAIC04NCw4ICs4NCw4IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OlZpc2l0ZWRMaW5rU3Rv
cmUqIHZpc2l0ZWRMaW5rU3RvcmUoKTsKICAgICB2b2lkIHNldFZpc2l0ZWRMaW5rU3RvcmUoV2Vi
S2l0OjpWaXNpdGVkTGlua1N0b3JlKik7CiAKLSAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRl
RGF0YVN0b3JlKCk7Ci0gICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3Rv
cmUqKTsKKyAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKTsK
KyAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlKik7
CiAKICAgICBXZWJzaXRlUG9saWNpZXMqIGRlZmF1bHRXZWJzaXRlUG9saWNpZXMoKSBjb25zdDsK
ICAgICB2b2lkIHNldERlZmF1bHRXZWJzaXRlUG9saWNpZXMoV2Vic2l0ZVBvbGljaWVzKik7CkBA
IC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJv
eHk+IG1fcmVsYXRlZFBhZ2U7CiAgICAgUmVmUHRyPFdlYktpdDo6VmlzaXRlZExpbmtTdG9yZT4g
bV92aXNpdGVkTGlua1N0b3JlOwogCi0gICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vi
c2l0ZURhdGFTdG9yZTsKKyAgICBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dl
YnNpdGVEYXRhU3RvcmU7CiAgICAgUmVmUHRyPFdlYnNpdGVQb2xpY2llcz4gbV9kZWZhdWx0V2Vi
c2l0ZVBvbGljaWVzOwogCiAgICAgYm9vbCBtX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNB
c0luc2VjdXJlIHsgdHJ1ZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9u
IDI1MDE0OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCiAK
LSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bv
b2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKIG5hbWVzcGFjZSBBUEkgewog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVE
YXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyNTAxNTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNjggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFQ
SVdlYnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgIldlYktpdDJJbml0aWFsaXplLmgiCi0j
aW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgotCi1uYW1lc3BhY2UgQVBJIHsKLQotc3RhdGlj
IFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiYgZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpCi17Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPj4gZ2xvYmFs
RGVmYXVsdERhdGFTdG9yZTsKLSAgICByZXR1cm4gZ2xvYmFsRGVmYXVsdERhdGFTdG9yZS5nZXQo
KTsKLX0KLQotCi1SZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dERhdGFTdG9yZSgpCi17Ci0gICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwotCi0gICAg
YXV0byYgc3RvcmUgPSBnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCk7Ci0gICAgaWYgKCFzdG9yZSkK
LSAgICAgICAgc3RvcmUgPSBhZG9wdFJlZihuZXcgV2Vic2l0ZURhdGFTdG9yZShkZWZhdWx0RGF0
YVN0b3JlQ29uZmlndXJhdGlvbigpLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
KSk7Ci0KLSAgICByZXR1cm4gKnN0b3JlOwotfQotCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmRl
bGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCkKLXsKLSAgICBnbG9iYWxEZWZhdWx0RGF0
YVN0b3JlKCkgPSBudWxscHRyOwotfQotCi1ib29sIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmVFeGlzdHMoKQotewotICAgIHJldHVybiAhIWdsb2JhbERlZmF1bHREYXRhU3RvcmUo
KTsKLX0KLQotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5v
blBlcnNpc3RlbnREYXRhU3RvcmUoKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNp
dGVEYXRhU3RvcmUpOwotfQotCi1SZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9y
ZTo6Y3JlYXRlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNv
bmZpZ3VyYXRpb24sIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFTdG9yZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
LCBzZXNzaW9uSUQpKTsKLX0KLQotV2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZSgp
Ci0gICAgOiBtX3dlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVh
dGVOb25QZXJzaXN0ZW50KCkpCi17Ci19Ci0KLVdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRh
U3RvcmUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYgY29uZmln
dXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogbV93ZWJzaXRlRGF0YVN0
b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlv
biksIHNlc3Npb25JRCkpCi17Ci19Ci0KLVdlYnNpdGVEYXRhU3RvcmU6On5XZWJzaXRlRGF0YVN0
b3JlKCkKLXsKLX0KLQotSFRUUENvb2tpZVN0b3JlJiBXZWJzaXRlRGF0YVN0b3JlOjpodHRwQ29v
a2llU3RvcmUoKQotewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPmNvb2tpZVN0b3Jl
KCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OiBpbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+Y29uZmlndXJh
dGlvbigpLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci19Ci0KLWJvb2wgV2Vic2l0ZURh
dGFTdG9yZTo6aXNQZXJzaXN0ZW50KCkKLXsKLSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3Jl
LT5pc1BlcnNpc3RlbnQoKTsKLX0KLQotYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFT
dG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKLX0KLQotdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQp
Ci17Ci0gICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChlbmFibGVkKTsKLX0KLQotYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGVidWdNb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0
b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKCk7Ci19Ci0KLXZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sIGVuYWJs
ZWQpCi17Ci0gICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGVidWdNb2RlKGVuYWJsZWQpOwotfQotCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotV1RGOjpTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQotewotICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTYzNjkgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTYzNzAKLSAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKLXsK
LSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgIHJldHVybiBXVEY6OlN0cmluZygpOwotfQot
I2VuZGlmCi0KLSNpZiAhVVNFKEdMSUIpCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICAvLyBOb3Qg
aW1wbGVtZW50ZWQuCi0gICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Ci19Ci0jZW5kaWYKLQotUmVm
PFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKLQot
ICAgIGNvbmZpZ3VyYXRpb24tPnNldFBlcnNpc3RlbnQodHJ1ZSk7Ci0KLSAgICBjb25maWd1cmF0
aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkZpbGVzIik7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0Q2Fj
aGVTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAg
Y29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1bHROZXR3b3JrQ2Fj
aGVEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFDYWNoZURpcmVjdG9y
eShkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKLSAgICBjb25m
aWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRlZmF1bHRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24t
PnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVs
dExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwot
ICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlv
bi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHREZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0KLSAgICBjb25maWd1cmF0aW9uLT5zZXRKYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnkoKSk7Ci0KLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElXZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw4
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkFQ
SUhUVFBDb29raWVTdG9yZS5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKLSNpbmNs
dWRlIDxwYWwvU2Vzc2lvbklELmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBBUEkgewotCi1jbGFzcyBXZWJzaXRlRGF0YVN0b3JlIGZpbmFsIDogcHVibGlj
IE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpXZWJzaXRlRGF0YVN0b3JlPiB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBkZWZhdWx0RGF0YVN0b3JlKCk7Ci0gICAg
c3RhdGljIGJvb2wgZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpOwotICAgIHN0YXRpYyB2b2lkIGRl
bGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7Ci0KLSAgICBzdGF0aWMgUmVmPFdlYnNp
dGVEYXRhU3RvcmU+IGNyZWF0ZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbj4mJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKLSAgICBzdGF0aWMgUmVmPFdlYnNpdGVE
YXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKLQotICAgIGV4cGxpY2l0
IFdlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24+JiYsIFBBTDo6U2Vzc2lvbklEKTsKLSAgICB2aXJ0dWFsIH5XZWJzaXRlRGF0YVN0b3JlKCk7
Ci0KLSAgICBib29sIGlzUGVyc2lzdGVudCgpOwotCi0gICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZCgpIGNvbnN0OwotICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQoYm9vbCk7Ci0gICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2Rl
KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGJv
b2wpOwotCi0gICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKCkg
eyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9Ci0gICAgSFRUUENvb2tpZVN0b3Jl
JiBodHRwQ29va2llU3RvcmUoKTsKLQotICAgIFdURjo6U3RyaW5nIGluZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5KCk7Ci0KLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdENhY2hlU3Rv
cmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TmV0d29ya0Nh
Y2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRNZWRpYUNhY2hl
RGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZh
dWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRl
ZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RG
OjpTdHJpbmcgZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0jaWYgVVNFKEdMSUIp
Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRIU1RTRGlyZWN0b3J5KCk7Ci0jZW5kaWYK
LSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5KCk7Ci0KLSAgICBzdGF0aWMgUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24+IGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7Ci0KLXBy
aXZhdGU6Ci0gICAgZW51bSBTaG91bGRDcmVhdGVEaXJlY3RvcnkgeyBDcmVhdGVEaXJlY3Rvcnks
IERvbnRDcmVhdGVEaXJlY3RvcnkgfTsKLQotICAgIFdlYnNpdGVEYXRhU3RvcmUoKTsKLQotICAg
IHN0YXRpYyBXVEY6OlN0cmluZyB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnkg
PSBDcmVhdGVEaXJlY3RvcnkpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFt
ZSk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKLQotICAg
IFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKLX07Ci0K
LX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
UG9saWNpZXMuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTQgKzI2
LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVz
LmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5jbHVkZSAiV2Vic2l0
ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKIAogbmFtZXNw
YWNlIEFQSSB7CiAKIFdlYnNpdGVQb2xpY2llczo6V2Vic2l0ZVBvbGljaWVzKCkgPSBkZWZhdWx0
OwogCi1XZWJzaXRlUG9saWNpZXM6OldlYnNpdGVQb2xpY2llcyhib29sIGNvbnRlbnRCbG9ja2Vy
c0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiBhbGxvd2Vk
QXV0b3BsYXlRdWlya3MsIFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5IGF1dG9wbGF5UG9s
aWN5LCBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPiYmIGxlZ2FjeUN1c3RvbUhlYWRl
ckZpZWxkcywgVmVjdG9yPFdlYkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4mJiBjdXN0b21IZWFk
ZXJGaWVsZHMsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9saWN5LCBSZWZQdHI8
V2Vic2l0ZURhdGFTdG9yZT4mJiB3ZWJzaXRlRGF0YVN0b3JlKQorV2Vic2l0ZVBvbGljaWVzOjpX
ZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBPcHRpb25TZXQ8V2Vi
S2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxsb3dlZEF1dG9wbGF5UXVpcmtzLCBXZWJLaXQ6
OldlYnNpdGVBdXRvcGxheVBvbGljeSBhdXRvcGxheVBvbGljeSwgVmVjdG9yPFdlYkNvcmU6OkhU
VFBIZWFkZXJGaWVsZD4mJiBsZWdhY3lDdXN0b21IZWFkZXJGaWVsZHMsIFZlY3RvcjxXZWJDb3Jl
OjpDdXN0b21IZWFkZXJGaWVsZHM+JiYgY3VzdG9tSGVhZGVyRmllbGRzLCBXZWJLaXQ6OldlYnNp
dGVQb3BVcFBvbGljeSBwb3BVcFBvbGljeSwgUmVmUHRyPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZT4mJiB3ZWJzaXRlRGF0YVN0b3JlKQogICAgIDogbV9jb250ZW50QmxvY2tlcnNFbmFibGVkKGNv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQpCiAgICAgLCBtX2FsbG93ZWRBdXRvcGxheVF1aXJrcyhhbGxv
d2VkQXV0b3BsYXlRdWlya3MpCiAgICAgLCBtX2F1dG9wbGF5UG9saWN5KGF1dG9wbGF5UG9saWN5
KQpAQCAtODQsNyArODQsNyBAQCBXZWJzaXRlUG9saWNpZXM6On5XZWJzaXRlUG9saWNpZXMoKQog
ewogfQogCi12b2lkIFdlYnNpdGVQb2xpY2llczo6c2V0V2Vic2l0ZURhdGFTdG9yZShSZWZQdHI8
V2Vic2l0ZURhdGFTdG9yZT4mJiB3ZWJzaXRlRGF0YVN0b3JlKQordm9pZCBXZWJzaXRlUG9saWNp
ZXM6OnNldFdlYnNpdGVEYXRhU3RvcmUoUmVmUHRyPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZT4m
JiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IFdURk1vdmUo
d2Vic2l0ZURhdGFTdG9yZSk7CiB9CkBAIC0xMDgsNyArMTA4LDcgQEAgV2ViS2l0OjpXZWJzaXRl
UG9saWNpZXNEYXRhIFdlYnNpdGVQb2xpYwogI2VuZGlmCiAgICAgICAgIFdURk1vdmUoY3VzdG9t
SGVhZGVyRmllbGRzKSwKICAgICAgICAgcG9wVXBQb2xpY3koKSwKLSAgICAgICAgbV93ZWJzaXRl
RGF0YVN0b3JlID8gT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycz4g
eyBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wYXJhbWV0ZXJzKCkgfSA6
IFdURjo6bnVsbG9wdCwKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID8gT3B0aW9uYWw8V2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycz4geyBtX3dlYnNpdGVEYXRhU3RvcmUtPnBh
cmFtZXRlcnMoKSB9IDogV1RGOjpudWxsb3B0LAogICAgICAgICBtX2N1c3RvbVVzZXJBZ2VudCwK
ICAgICAgICAgbV9jdXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3Ms
CiAgICAgICAgIG1fY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm0sCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCShyZXZpc2lvbiAyNTAx
MjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDEyICs0MiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHN0cnVjdCBXZWJzaXRlUG9saWNpZXNEYXRhOworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIH0K
IAogbmFtZXNwYWNlIEFQSSB7CiAKLWNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7Ci0KIGNsYXNzIFdl
YnNpdGVQb2xpY2llcyBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6
OlR5cGU6OldlYnNpdGVQb2xpY2llcz4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2Vic2l0
ZVBvbGljaWVzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVQb2xpY2ll
cyk7IH0KQEAgLTc5LDggKzc4LDggQEAgcHVibGljOgogICAgIFdlYktpdDo6V2Vic2l0ZVBvcFVw
UG9saWN5IHBvcFVwUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9wb3BVcFBvbGljeTsgfQogICAg
IHZvaWQgc2V0UG9wVXBQb2xpY3koV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3kgcG9saWN5KSB7
IG1fcG9wVXBQb2xpY3kgPSBwb2xpY3k7IH0KIAotICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNp
dGVEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0K
LSAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYp
OworICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0
IHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQorICAgIHZvaWQgc2V0V2Vic2l0
ZURhdGFTdG9yZShSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiYmKTsKIAogICAgIFdl
YktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSBkYXRhKCk7CiAKQEAgLTExOCw3ICsxMTcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRBbGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZlclF1aXJrKGJvb2wg
YWxsb3cpIHsgbV9hbGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZlclF1aXJrID0gYWxsb3c7IH0KIAog
cHJpdmF0ZToKLSAgICBXZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVk
LCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4sIFdlYktpdDo6V2Vic2l0
ZUF1dG9wbGF5UG9saWN5LCBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPiYmLCBWZWN0
b3I8V2ViQ29yZTo6Q3VzdG9tSGVhZGVyRmllbGRzPiYmLCBXZWJLaXQ6OldlYnNpdGVQb3BVcFBv
bGljeSwgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYpOworICAgIFdlYnNpdGVQb2xpY2llcyhi
b29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRv
cGxheVF1aXJrPiwgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3Jl
OjpIVFRQSGVhZGVyRmllbGQ+JiYsIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+
JiYsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5LCBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlPiYmKTsKIAogICAgIGJvb2wgbV9jb250ZW50QmxvY2tlcnNFbmFibGVkIHsgdHJ1ZSB9
OwogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiBtX2FsbG93ZWRB
dXRvcGxheVF1aXJrczsKQEAgLTEyOSw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxX
ZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+IG1fbGVnYWN5Q3VzdG9tSGVhZGVyRmllbGRzOwogICAg
IFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+IG1fY3VzdG9tSGVhZGVyRmllbGRz
OwogICAgIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IG1fcG9wVXBQb2xpY3kgeyBXZWJLaXQ6
OldlYnNpdGVQb3BVcFBvbGljeTo6RGVmYXVsdCB9OwotICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0
b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tVXNlckFn
ZW50OwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tSmF2YVNjcmlwdFVzZXJBZ2VudEFzU2l0ZVNw
ZWNpZmljUXVpcmtzOwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm07
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNp
b24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDYgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247
CiBjbGFzcyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247CiBjbGFzcyBTZXNzaW9uU3RhdGU7CiBj
bGFzcyBVc2VyU2NyaXB0OwotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIGNsYXNzIFdlYnNpdGVQ
b2xpY2llczsKIGNsYXNzIFdpbmRvd0ZlYXR1cmVzOwogfQpAQCAtMTEzLDYgKzExMiw3IEBAIGNs
YXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOwogY2xhc3MgV2ViVGV4dENoZWNr
ZXI7CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIGNsYXNzIFdlYlZpZXdw
b3J0QXR0cmlidXRlczsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBjbGFzcyBXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbjsKIAogV0tfQUREX0FQSV9NQVBQSU5HKFdLQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VSZWYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpCkBAIC0xNjksNyAr
MTY5LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlck1lZGlhUGVybWlzc2lvbgogV0tfQURE
X0FQSV9NQVBQSU5HKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYsIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0UHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyU2NyaXB0UmVm
LCBBUEk6OlVzZXJTY3JpcHQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tWaWV3cG9ydEF0dHJpYnV0
ZXNSZWYsIFdlYlZpZXdwb3J0QXR0cmlidXRlcykKLVdLX0FERF9BUElfTUFQUElORyhXS1dlYnNp
dGVEYXRhU3RvcmVSZWYsIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSkKK1dLX0FERF9BUElfTUFQUElO
RyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSkKIFdLX0FE
RF9BUElfTUFQUElORyhXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uUmVmLCBXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vi
c2l0ZVBvbGljaWVzUmVmLCBBUEk6OldlYnNpdGVQb2xpY2llcykKIFdLX0FERF9BUElfTUFQUElO
RyhXS1dpbmRvd0ZlYXR1cmVzUmVmLCBBUEk6OldpbmRvd0ZlYXR1cmVzKQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNTAxNDgp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMjEsMTIgKzMyMSwxMiBAQCB2b2lkIFdLQ29udGV4dENsZWFyVmlzaXRlZExp
bmtzKFdLQ29udGV4CiAKIHZvaWQgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbChXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgV0tDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiB7Ci0gICAgTGVnYWN5R2xvYmFs
U2V0dGluZ3M6OnNpbmdsZXRvbigpLnNldENhY2hlTW9kZWwoV2ViS2l0Ojp0b0NhY2hlTW9kZWwo
Y2FjaGVNb2RlbCkpOworICAgIFdlYktpdDo6TGVnYWN5R2xvYmFsU2V0dGluZ3M6OnNpbmdsZXRv
bigpLnNldENhY2hlTW9kZWwoV2ViS2l0Ojp0b0NhY2hlTW9kZWwoY2FjaGVNb2RlbCkpOwogfQog
CiBXS0NhY2hlTW9kZWwgV0tDb250ZXh0R2V0Q2FjaGVNb2RlbChXS0NvbnRleHRSZWYgY29udGV4
dFJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShMZWdhY3lHbG9iYWxTZXR0aW5nczo6
c2luZ2xldG9uKCkuY2FjaGVNb2RlbCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJL
aXQ6OkxlZ2FjeUdsb2JhbFNldHRpbmdzOjpzaW5nbGV0b24oKS5jYWNoZU1vZGVsKCkpOwogfQog
CiB2b2lkIFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJPZlByb2Nlc3NlcyhXS0NvbnRleHRSZWYs
IHVuc2lnbmVkKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBv
bGljeUxpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRh
U3RvcmUuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIKICNpbmNs
dWRlICJXZWJGcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNs
dWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5o
IgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCShyZXZpc2lv
biAyNTAxNTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAi
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgiCiAKICNpbmNsdWRlICJBUElBcnJheS5oIgotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUu
aCIKICNpbmNsdWRlICJNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgiCiAjaW5j
bHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCkBAIC00MSwyOSArNDEsMzAgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1
ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVJlY29y
ZC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0
YVR5cGUuaCIKICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL1VSTC5oPgogCiBXS1R5cGVJRCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRUeXBlSUQoKQogewot
ICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6QVBJVHlwZSk7
CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpBUElU
eXBlKTsKIH0KIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUdldERl
ZmF1bHREYXRhU3RvcmUoKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpKTsKKyAgICByZXR1cm4gV2ViS2l0
Ojp0b0FQSShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIo
KSk7CiB9CiAKIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3RvcmVDcmVhdGVO
b25QZXJzaXN0ZW50RGF0YVN0b3JlKCkKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkubGVha1Jl
ZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpjcmVhdGVOb25QZXJzaXN0ZW50KCkubGVha1JlZigpKTsKIH0KIAogV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNyZWF0ZVdpdGhDb25maWd1cmF0aW9uKFdLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbikKIHsKICAgICBhdXRvIHNl
c3Npb25JRCA9IFdlYktpdDo6dG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5pc1BlcnNpc3RlbnQoKSA/
IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZVBlcnNpc3RlbnRTZXNzaW9uSUQoKSA6IFBBTDo6U2Vz
c2lvbklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25JRCgpOwotICAgIHJldHVybiBXZWJLaXQ6
OnRvQVBJKCZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZSgqV2ViS2l0Ojp0b0ltcGwoY29u
ZmlndXJhdGlvbiksIHNlc3Npb25JRCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0FQSSgmV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoKldlYktpdDo6dG9JbXBsKGNv
bmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQpLmxlYWtSZWYoKSk7CiB9CiAKIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUpCkBAIC04MywxMyArODQsMTMgQEAgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdAogCiBXS0hUVFBDb29raWVTdG9y
ZVJlZiBXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29va2llU3RvcmUoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aHR0cENvb2tpZVN0b3JlKCkpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5jb29raWVTdG9yZSgp
KTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGVidWdNb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIGJvb2wgZW5hYmxlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzRGVidWdNb2RlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVn
TW9kZShlbmFibGUsIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUo
ZW5hYmxlLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMTAwLDcgKzEwMSw3IEBAIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3QKIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdN
b2RlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NEZWJ1Z01vZGVGdW5j
dGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKS5zZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFByZXZhbGVudFJlc291cmNlRm9y
RGVidWdNb2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2Nv
bnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNv
bnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTExMCw3ICsxMTEsNyBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NMYXN0U2VlbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0
cmluZ1JlZiBob3N0LCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc0xhc3RTZWVuRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TGFzdFNlZW4oVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vjb25kcyB9LCBbY29u
dGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5zZXRMYXN0U2VlbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmco
KSksIFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0x
MjEsNyArMTIyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTGFzdAog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2
YWx1ZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1ByZXZhbGVu
dFJlc291cmNlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHdl
YnNpdGVEYXRhU3RvcmUgPSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKTsKIAogICAgIGlm
ICh2YWx1ZSkKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS5zZXRQcmV2YWxlbnRSZXNvdXJjZShV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21w
bGV0aW9uSGFuZGxlcl0gewpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc1ByZXYKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBh
dXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSAqV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKTsKIAogICAgIGlmICh2YWx1ZSkKICAgICAgICAgd2Vic2l0ZURh
dGFTdG9yZS5zZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKQEAgLTE1
Nyw3ICsxNTgsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NWZXJ5CiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZUR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
W2NvbnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZHVtcFJlc291cmNlTG9hZFN0
YXRpc3RpY3MoW2NvbnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKSB7CiAgICAgICAgIGNhbGxiYWNrKFdlYktpdDo6dG9BUEkocmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5pbXBsKCkpLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0xNjgsNyAr
MTY5LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVEdW1wUmVzb3VyY2VMb2FkUwogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZ1bmN0aW9u
IGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmlzUHJldmFs
ZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBb
Y29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSkgeworICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wg
aXNQcmV2YWxlbnRSZXNvdXJjZSkgewogICAgICAgICBjYWxsYmFjayhpc1ByZXZhbGVudFJlc291
cmNlLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0xNzksNyArMTgwLDcgQEAgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YQogdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlSXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiBjYWxsYmFjaykK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5pc1ZlcnlQcmV2YWxlbnRSZXNv
dXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0
LCBjYWxsYmFja10oYm9vbCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSkgeworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzVmVyeVByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29s
IGlzVmVyeVByZXZhbGVudFJlc291cmNlKSB7CiAgICAgICAgIGNhbGxiYWNrKGlzVmVyeVByZXZh
bGVudFJlc291cmNlLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0xOTAsNyArMTkxLDcg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UAogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIHN1YnJlc291cmNlSG9z
dCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyRnVuY3Rpb24gY2Fs
bGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdpc3RlcmVk
QXNTdWJyZXNvdXJjZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3VicmVzb3VyY2VI
b3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCkt
PnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3VicmVz
b3VyY2VVbmRlcikgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzUmVnaXN0
ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHN1YnJlc291
cmNlSG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhv
c3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1
YnJlc291cmNlVW5kZXIpIHsKICAgICAgICAgY2FsbGJhY2soaXNSZWdpc3RlcmVkQXNTdWJyZXNv
dXJjZVVuZGVyLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yMDEsNyArMjAyLDcgQEAg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpcwogdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIHN1YkZyYW1lSG9zdCwgV0tTdHJp
bmdSZWYgdG9wRnJhbWVIb3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0
YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVu
ZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVIb3N0KS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRl
eHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcikgeworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRlcihV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHN1YkZyYW1lSG9zdCktPnN0cmluZygpKSwgVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBj
YWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpIHsKICAgICAgICAgY2Fs
bGJhY2soaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyLCBjb250ZXh0KTsKICAgICB9KTsKICNl
bHNlCkBAIC0yMTIsNyArMjEzLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3Rp
Y3NSZWdpcwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNS
ZWRpcmVjdGluZ1RvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3RSZWRpcmVjdGVkRnJvbSwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbywgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVnaXN0ZXJlZEFzUmVk
aXJlY3RpbmdUb0Z1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2td
KGJvb2wgaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFVSTChVUkwoKSwgV2Vi
S2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxs
YmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8pIHsKICAgICAgICAgY2FsbGJh
Y2soaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNl
CkBAIC0yMjMsNyArMjI0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NS
ZWdpcwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVy
YWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhv
c3QsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3Rp
Y3NIYXNIYWRVc2VySW50ZXJhY3Rpb25GdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8mIGRhdGFTdG9yZSA9
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBh
dXRvJiBkYXRhU3RvcmUgPSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKTsKIAogICAgIGlm
ICh2YWx1ZSkKICAgICAgICAgZGF0YVN0b3JlLmxvZ1VzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9uSGFu
ZGxlcl0gewpAQCAtMjQxLDcgKzI0Miw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc0hhc0gKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+
d2Vic2l0ZURhdGFTdG9yZSgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNI
YWRVc2VySW50ZXJhY3Rpb24pIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5o
YXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3Ry
aW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKSB7
CiAgICAgICAgIGNhbGxiYWNrKGhhc0hhZFVzZXJJbnRlcmFjdGlvbiwgY29udGV4dCk7CiAgICAg
fSk7CiAjZWxzZQpAQCAtMjUyLDE0ICsyNTMsMTQgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NIYXNIYQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzR3Jh
bmRmYXRoZXJlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1Jl
ZiBob3N0LCBib29sIHZhbHVlKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnNldEdyYW5kZmF0aGVyZWQoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5n
KCkpLCB2YWx1ZSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5z
ZXRHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygp
KSwgdmFsdWUsIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlz
U3RhdGlzdGljc0dyYW5kZmF0aGVyZWRGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPndlYnNpdGVEYXRhU3RvcmUoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wg
aXNHcmFuZGZhdGhlcmVkKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aGFz
SGFkVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzR3JhbmRmYXRoZXJlZCkgewogICAgICAg
ICBjYWxsYmFjayhpc0dyYW5kZmF0aGVyZWQsIGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAg
LTI3MCw0OSArMjcxLDQ5IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzR3Jh
bmQKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BG
cmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1Jl
ZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJz
aXRlRGF0YVN0b3JlKCkuc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluKFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3Jp
Z2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRh
U3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRv
cEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBs
KHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8o
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tT
dHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRh
U3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RS
ZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwoKSwgV2Vi
S2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbXSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RG
cm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNp
dGVEYXRhU3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJvbShVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBbXSB7IH0pOworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RGcm9tKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFtdIHsgfSk7CiAjZW5k
aWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlx
dWVSZWRpcmVjdFRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8pCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbXSB7IH0pOworICAgIFdlYktpdDo6
dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0Ojp0
b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW10geyB9KTsKICNlbmRpZgogfQog
CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0RnJvbShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBo
b3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZyb20pCiB7CiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oVVJMKFVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSwgW10geyB9KTsKKyAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBbXSB7IH0pOwogI2VuZGlm
CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRX
aXRoTGlua0RlY29yYXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tT
dHJpbmdSZWYgZnJvbUhvc3QsIFdLU3RyaW5nUmVmIHRvSG9zdCwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRp
b25GdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUo
KS5zZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGZyb21Ib3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKHRvSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3Jh
dGlvbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChmcm9tSG9zdCktPnN0cmlu
ZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b0hvc3QpLT5zdHJpbmcoKSksIFtjb250
ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNl
bHNlCkBAIC0zMjMsNyArMzI0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzQ3Jvcwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVz
ZXJJbnRlcmFjdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUg
c2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1Rp
bWVUb0xpdmVVc2VySW50ZXJhY3Rpb25GdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29u
ZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyB7IHNl
Y29uZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQp
OwogICAgIH0pOwogI2Vsc2UKQEAgLTMzNCw3ICszMzUsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NUaW1lCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQ
cm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcm9j
ZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHNQcm9jZXNzaW5nKFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhb
Y29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7
CiAjZWxzZQpAQCAtMzQ1LDcgKzM0Niw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc1Byb2Nlc3MKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUNvb2tp
ZUJsb2NraW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZ0Z1bmN0
aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbnRleHQsIGNvbXBsZXRpb25IYW5k
bGVyXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zY2hlZHVsZUNvb2tp
ZUJsb2NraW5nVXBkYXRlKFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0oKSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTM1NiwyMSAr
MzU3LDIxIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUMKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeShXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlUmVmKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnN1Ym1pdFRlbGVtZXRyeSgpOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PnN1Ym1pdFRlbGVtZXRyeSgpOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVT
Y2FubmVkKHZhbHVlLCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFsdWUsIFtdIHsgfSk7
CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5u
aW5nVGVzdChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIHZhbHVlLCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5nVGVz
dEZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgp
LnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KHZhbHVlLCBbY29udGV4dCwg
Y2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRJc1J1bm5p
bmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdCh2YWx1ZSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7
CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTM4MSw0OSAr
MzgyLDQ5IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0lzUnUKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVm
b3JlRGF0YVJlY29yZHNSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IGJvb2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U2hv
dWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwodmFsdWUsIFtdKCkg
eyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTaG91bGRDbGFzc2lm
eVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSwgW10oKSB7IH0pOwogI2Vu
ZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2Vz
V2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIGJvb2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
LSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0
Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQodmFsdWUsIFtdKCkgeyB9KTsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0
cnlXYXNDYXB0dXJlZCh2YWx1ZSwgW10oKSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVt
b3ZhbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25kcykK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRNaW5pbXVtVGltZUJldHdl
ZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyB7IHNlY29uZHMgfSwgW10oKSB7IH0pOworICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFS
ZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHsgc2Vjb25kcyB9LCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0K
IAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJpbmdUaW1l
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzKQogewog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEdyYW5kZmF0aGVyaW5nVGltZShT
ZWNvbmRzIHsgc2Vjb25kcyB9LCBbXSgpIHsgfSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtdKCkg
eyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NN
YXhTdGF0aXN0aWNzRW50cmllcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB1
bnNpZ25lZCBlbnRyaWVzKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNl
dE1heFN0YXRpc3RpY3NFbnRyaWVzKGVudHJpZXMsIFtdKCkgeyB9KTsKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT5zZXRNYXhTdGF0aXN0aWNzRW50cmllcyhlbnRyaWVzLCBbXSgp
IHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
UHJ1bmVFbnRyaWVzRG93blRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHVu
c2lnbmVkIGVudHJpZXMpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
LSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0
UHJ1bmVFbnRyaWVzRG93blRvKGVudHJpZXMsIFtdKCkgeyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1w
bChkYXRhU3RvcmVSZWYpLT5zZXRQcnVuZUVudHJpZXNEb3duVG8oZW50cmllcywgW10oKSB7IH0p
OwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
Ziwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50U3RvcmVGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdl
YktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFj
a10oKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1bGVDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudChXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6
WWVzLCBbY29udGV4dCwgY2FsbGJhY2tdKCkgewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsK
ICAgICB9KTsKICNlbHNlCkBAIC00MzQsNyArNDM1LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzQ2xlYXJJbgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3VycyhXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB1bnNpZ25lZCBob3Vycywgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3Rv
cmVNb2RpZmllZFNpbmNlSG91cnNGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdh
bGxUaW1lOjpub3coKSAtIFNlY29uZHM6OmZyb21Ib3Vycyhob3VycyksIFdlYktpdDo6U2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFja10oKSB7CisgICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudChXYWxsVGltZTo6bm93KCkgLSBTZWNvbmRzOjpmcm9tSG91cnMoaG91cnMpLCBXZWJL
aXQ6OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzLCBbY29udGV4dCwgY2FsbGJhY2td
KCkgewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00NDUs
NyArNDQ2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbgogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1v
dmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdL
V2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxG
dW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKDApLCBb
Y29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5y
ZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKDApLCBbY29udGV4
dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9CkBA
IC00NTMsNyArNDU0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJU
aAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3Rp
bmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwg
Ym9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaykK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kZWxldGVDb29raWVzRm9yVGVz
dGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIGluY2x1ZGVI
dHRwT25seUNvb2tpZXMsIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0
Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgW2NvbnRl
eHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTQ2NCw3ICs0NjUsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NE
ZWxldGVDCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZUZ1
bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhh
c0xvY2FsU3RvcmFnZUZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+
c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzTG9jYWxTdG9yYWdlKSB7Cisg
ICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aGFzTG9jYWxTdG9yYWdlRm9yVGVzdGlu
ZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBj
YWxsYmFja10oYm9vbCBoYXNMb2NhbFN0b3JhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soaGFzTG9j
YWxTdG9yYWdlLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00NzUsNyArNDc2LDcgQEAg
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYQogdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9uIGNhbGxiYWNrKQogewog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjYWxsYmFja10g
eworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldENhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjYWxsYmFj
a10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00ODYs
NyArNDg3LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaAogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9uKFdLV2Vic2l0
ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb25GdW5jdGlv
biBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5oYXNJc29s
YXRlZFNlc3Npb25Gb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhhc0lzb2xhdGVkU2Vzc2lvbikgewor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0lzb2xhdGVkU2Vzc2lvbkZvclRl
c3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4
dCwgY2FsbGJhY2tdKGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9uKSB7CiAgICAgICAgIGNhbGxiYWNr
KGhhc0lzb2xhdGVkU2Vzc2lvbiwgY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTAxLDcg
KzUwMiw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG8KICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAKLSAgICBhdXRvJiBzdG9y
ZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAg
ICBhdXRvJiBzdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpOwogICAgIHN0b3Jl
LmNsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljc0luV2ViUHJvY2Vzc2VzKFtjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIHN0b3JlLnJl
c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoW2NhbGxiYWNrQWdncmVnYXRv
ciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRD
cm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoW2NhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CkBAIC01MTYsNyArNTE3
LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUbwogdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxGZXRjaENhY2hlcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRj
aENhY2hlUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNldDxXZWJLaXQ6
OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRP
TUNhY2hlOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4
dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVE
YXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2td
IHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9CkBAIC01MjgsNyArNTI5
LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hlRgogICAgIFZlY3Rv
cjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiBkYXRhUmVjb3JkcyA9IHsgV1RGTW92ZShkYXRh
UmVjb3JkKSB9OwogCiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRh
VHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU7Ci0gICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5
cGVzLCBkYXRhUmVjb3JkcywgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0YShkYXRhVHlwZXMsIGRhdGFSZWNvcmRzLCBbY29u
dGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9
CkBAIC01MzYsNyArNTM3LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENh
Y2hlRgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRGF0YWJhc2VzKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFjayBjYWxsYmFjaykKIHsK
ICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktp
dDo6V2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXM7Ci0gICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVz
LCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6
OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgIGlmIChjYWxsYmFjaykKICAg
ICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CkBAIC01NDUsNyArNTQ2LDcgQEAgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRAogdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
Ziwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlQ2Fs
bGJhY2sgY2FsbGJhY2spCiB7CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBl
PiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6TG9jYWxTdG9yYWdlOwotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVE
YXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2td
IHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBl
cywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAg
aWYgKGNhbGxiYWNrKQogICAgICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CkBA
IC01NTUsNyArNTU2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxTZXJ2aWNl
VwogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpX
ZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uczsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5m
aW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+cmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW2Nv
bnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwog
I2Vsc2UKQEAgLTU2Niw3ICs1NjcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFs
bFNlcnZpY2VXCiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnMo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJz
aXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZmV0Y2hE
YXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgeyB9LCBbY29udGV4dCwgY2Fs
bGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+ZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgeyB9LCBb
Y29udGV4dCwgY2FsbGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CiAgICAgICAgIFZlY3RvcjxS
ZWZQdHI8QVBJOjpPYmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7CiAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIG9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykKQEAgLTU4MCw3ICs1ODEsNyBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplCiB7CiAgICAgT3B0aW9uU2V0
PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zID0gV2ViS2l0OjpX
ZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXM7CiAKLSAgICBXZWJLaXQ6OnRvSW1w
bChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZmV0Y2hEYXRhKFdlYktpdDo6V2Vi
c2l0ZURhdGFUeXBlOjpET01DYWNoZSwgZmV0Y2hPcHRpb25zLCBbb3JpZ2luLCBjb250ZXh0LCBj
YWxsYmFja10gKGF1dG8gZGF0YVJlY29yZHMpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRPTUNhY2hlLCBmZXRj
aE9wdGlvbnMsIFtvcmlnaW4sIGNvbnRleHQsIGNhbGxiYWNrXSAoYXV0byBkYXRhUmVjb3Jkcykg
ewogICAgICAgICBhdXRvIG9yaWdpbkRhdGEgPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlRnJvbVN0cmluZyhXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zdHJpbmcoKSktPmRhdGEoKTsK
ICAgICAgICAgZm9yIChhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKICAgICAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgcmVjb3JkT3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKSB7
CkBAIC01OTcsMTIgKzU5OCwxMiBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2Fj
aGVTaXplCiAKIFdLU3RyaW5nUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNvcHlTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYp
CiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKIH0K
IAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkoV2ViS2l0Ojp0b0ltcGwoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSktPnN0cmluZygpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5z
ZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdlYktpdDo6dG9JbXBsKHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLT5zdHJpbmcoKSk7CiB9CiAKIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiwgdWludDY0X3QpCkBAIC02MTIsNyArNjEzLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRQZXJPcmlnaW5TdG9yYQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVDbGVhckFsbERldmlj
ZU9yaWVudGF0aW9uUGVybWlzc2lvbnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZikKIHsKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbkFjY2Vzc0NvbnRyb2xsZXIoKS5jbGVhclBlcm1pc3Npb25zKCk7CisgICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250
cm9sbGVyKCkuY2xlYXJQZXJtaXNzaW9ucygpOwogI2VuZGlmCiB9CiAKQEAgLTcxMiwxNCArNzEz
LDE0IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0aGVudGljYXQKICAgICAgICAg
Y29uZmlndXJhdGlvbi5uZmMgPSBXVEZNb3ZlKG5mYyk7CiAgICAgfQogCi0gICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92
YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRh
UmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkFkQ2xpY2tB
dHRyaWJ1dGlvbnM7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMo
MCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCksIFtj
b250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVQb2xpY2llcy5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIg
KzI3LDEyIEBACiAjaW5jbHVkZSAiV0tXZWJzaXRlUG9saWNpZXMuaCIKIAogI2luY2x1ZGUgIkFQ
SURpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVk
ZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVk
ZSAiV0tBcnJheS5oIgogI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLUmV0
YWluUHRyLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHJldmlzaW9uIDI1
MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW0JKG5vbmV4aXN0ZW50KQpAQCAtMSwxOTcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCi0KLSNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCi0jaW5jbHVkZSAiU2FuZGJv
eFV0aWxpdGllcy5oIgotI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotI2ltcG9y
dCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KLSNlbmRpZgotCi1uYW1lc3Bh
Y2UgQVBJIHsKLQotTlNTdHJpbmcgKldlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBA
IldlYkRhdGFiYXNlRGlyZWN0b3J5IjsKLU5TU3RyaW5nICpXZWJTdG9yYWdlRGlyZWN0b3J5RGVm
YXVsdHNLZXkgPSBAIldlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VLZXki
OwotTlNTdHJpbmcgKldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2Vi
S2l0TWVkaWFDYWNoZURpcmVjdG9yeSI7Ci1OU1N0cmluZyAqV2ViS2l0TWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
IjsKLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKQotewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLy8gVGhpcyBx
dWlyayB1c2VkIHRvIG1ha2UgdGhlc2UgYXBwcyBzaGFyZSBhcHBsaWNhdGlvbiBjYWNoZSBzdG9y
YWdlLCBidXQgZG9lc24ndCBhY2NvbXBsaXNoIHRoYXQgYW55IG1vcmUuCi0gICAgLy8gUHJlc2Vy
dmluZyBpdCBhdm9pZHMgdGhlIG5lZWQgdG8gbWlncmF0ZSBkYXRhIHdoZW4gdXBncmFkaW5nLgot
ICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlIHNob3VsZCBqdXN0IGhhdmUgU2FmYXJpLCBXZWJBcHAs
IGFuZCB3ZWJib29rbWFya3NkIGNyZWF0ZSBhIGRhdGEgc3RvcmUgd2l0aAotICAgIC8vIHRoaXMg
YXBwbGljYXRpb24gY2FjaGUgcGF0aCwgYnV0IHRoYXQncyBub3Qgc3VwcG9ydGVkIGFzIG9mIHJp
Z2h0IG5vdy4KLSAgICBpZiAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJp
KCkgfHwgV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViQXBwKCkgfHwgV2ViQ29yZTo6SU9T
QXBwbGljYXRpb246OmlzV2ViQm9va21hcmtzRCgpKSB7Ci0gICAgICAgIE5TU3RyaW5nICpjYWNo
ZVBhdGggPSBbTlNIb21lRGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiTGlicmFyeS9DYWNoZXMvY29tLmFwcGxlLldlYkFwcENhY2hlIl07Ci0KLSAgICAgICAgcmV0
dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChjYWNoZVBhdGguc3Ry
aW5nQnlTdGFuZGFyZGl6aW5nUGF0aCk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gY2Fj
aGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk9mZmxpbmVXZWJBcHBsaWNhdGlv
bkNhY2hlIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbigiQ2FjaGVTdG9yYWdlIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVy
biBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTmV0d29ya0NhY2hlIik7
Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbigiTWVkaWFDYWNoZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRl
RGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSW5kZXhlZERCIik7Ci19Ci0K
LVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oIlNlcnZpY2VXb3JrZXJzIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVy
biB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTG9jYWxTdG9y
YWdlIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhS2V5cyIpOwotfQotCi1XVEY6OlN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAg
IHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiV2Vi
U1FMIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsK
LX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbigiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIERvbnRDcmVhdGVEaXJlY3Rv
cnkpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBT
aG91bGRDcmVhdGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQotewotICAgIHN0YXRp
YyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBOU1VSTCAqdGVtcFVSTDsK
LSAgICAKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIE5TVVJMICp1
cmwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOk5TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgaXNEaXJl
Y3Rvcnk6WUVTXTsKLSAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NI
YXNDb250YWluZXIoKSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIg
PSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKLSAgICAgICAgICAgIGlm
ICghYnVuZGxlSWRlbnRpZmllcikKLSAgICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVyID0g
W05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOwotICAgICAgICAgICAgdXJs
ID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBpc0Rp
cmVjdG9yeTpZRVNdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wVVJMID0gW1t1
cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNd
IHJldGFpbl07Ci0gICAgfSk7Ci0gICAgCi0gICAgTlNVUkwgKnVybCA9IFt0ZW1wVVJMIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107Ci0K
LSAgICBpZiAoc2hvdWxkQ3JlYXRlRGlyZWN0b3J5ID09IENyZWF0ZURpcmVjdG9yeQotICAgICAg
ICAmJiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRV
Ukw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJy
b3I6bnVsbHB0cl0pKQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0
b3J5ICVAIiwgdXJsKTsKLSAgICAKLSAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmlu
ZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tl
bjsKLSAgICBzdGF0aWMgTlNVUkwgKmNhY2hlVVJMOwotCi0gICAgZGlzcGF0Y2hfb25jZSgmb25j
ZVRva2VuLCBeewotICAgICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNDYWNoZXNEaXJlY3RvcnkgaW5Eb21haW46TlNVc2Vy
RG9tYWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxs
cHRyXTsKLSAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotCi0gICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkp
IHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1h
aW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50
aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZv
IHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKLSAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsK
LSAgICAgICAgfQotCi0gICAgICAgIGNhY2hlVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07Ci0gICAgfSk7Ci0K
LSAgICBOU1VSTCAqdXJsID0gW2NhY2hlVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpk
aXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107Ci0gICAgaWYgKCFbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRl
RGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQotICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKLQotICAgIHJl
dHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Ci19Ci0K
LVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQotewot
ICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBOU1VSTCAq
d2Vic2l0ZURhdGFVUkw7Ci0KLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAg
ICAgIE5TVVJMICp1cmwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRp
cmVjdG9yeTpOU0xpYnJhcnlEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHBy
b3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKLSAgICAgICAg
aWYgKCF1cmwpCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0g
ICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBp
c0RpcmVjdG9yeTpZRVNdOwotCi0gICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFp
bmVyKCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVu
ZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAoIWJ1bmRs
ZUlkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nl
c3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKLSAgICAgICAgICAgIHVybCA9IFt1cmwg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6
WUVTXTsKLSAgICAgICAgfQotCi0gICAgICAgIHdlYnNpdGVEYXRhVVJMID0gW1t1cmwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2Vic2l0ZURhdGEiIGlzRGlyZWN0b3J5OllFU10gcmV0
YWluXTsKLSAgICB9KTsKLQotICAgIE5TVVJMICp1cmwgPSBbd2Vic2l0ZURhdGFVUkwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKLSAg
ICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRV
Ukw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJy
b3I6bnVsbHB0cl0pCi0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3Rv
cnkgJUAiLCB1cmwpOwotCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0JKHJldmlzaW9uIDI1MDE1MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNSwxNyArMTA1
LDE3IEBAIHByaXZhdGU6CiAKICsgKFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRlZmF1bHREYXRhU3Rv
cmUKIHsKLSAgICByZXR1cm4gd3JhcHBlcihBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXIoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGF0YVN0b3JlKCkpOwogfQogCiArIChXS1dlYnNpdGVEYXRhU3RvcmUgKilub25Q
ZXJzaXN0ZW50RGF0YVN0b3JlCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkpOworICAgIHJldHVybiB3cmFw
cGVyKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudCgpKTsKIH0K
IAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPkFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpOwogCiAgICAgW3N1
cGVyIGRlYWxsb2NdOwogfQpAQCAtMTY5LDcgKzE2OSw3IEBAICsgKE5TU2V0ICopYWxsV2Vic2l0
ZURhdGFUeXBlcwogCiAtIChXS0hUVFBDb29raWVTdG9yZSAqKWh0dHBDb29raWVTdG9yZQogewot
ICAgIHJldHVybiB3cmFwcGVyKF93ZWJzaXRlRGF0YVN0b3JlLT5odHRwQ29va2llU3RvcmUoKSk7
CisgICAgcmV0dXJuIHdyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUtPmNvb2tpZVN0b3JlKCkpOwog
fQogCiBzdGF0aWMgV2FsbFRpbWUgdG9TeXN0ZW1DbG9ja1RpbWUoTlNEYXRlICpkYXRlKQpAQCAt
MTg2LDcgKzE4Niw3IEBAIC0gKHZvaWQpZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KE5TU2V0ICoK
IC0gKHZvaWQpcmVtb3ZlRGF0YU9mVHlwZXM6KE5TU2V0ICopZGF0YVR5cGVzIG1vZGlmaWVkU2lu
Y2U6KE5TRGF0ZSAqKWRhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBs
ZXRpb25IYW5kbGVyCiB7CiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpOwotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkucmVtb3ZlRGF0YShXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyhkYXRhVHlw
ZXMpLCB0b1N5c3RlbUNsb2NrVGltZShkYXRlID8gZGF0ZSA6IFtOU0RhdGUgZGlzdGFudFBhc3Rd
KSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0geworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5yZW1v
dmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyksIHRvU3lzdGVtQ2xv
Y2tUaW1lKGRhdGUgPyBkYXRlIDogW05TRGF0ZSBkaXN0YW50UGFzdF0pLCBbY29tcGxldGlvbkhh
bmRsZXJDb3B5XSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weSgpOwogICAgIH0pOwog
fQpAQCAtMjA1LDcgKzIwNSw3IEBAIC0gKHZvaWQpcmVtb3ZlRGF0YU9mVHlwZXM6KE5TU2V0ICop
ZGF0YVQKIHsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcik7CiAKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnJlbW92ZURhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwg
dG9XZWJzaXRlRGF0YVJlY29yZHMoZGF0YVJlY29yZHMpLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5
XSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnJlbW92ZURhdGEoV2ViS2l0Ojp0b1dlYnNpdGVE
YXRhVHlwZXMoZGF0YVR5cGVzKSwgdG9XZWJzaXRlRGF0YVJlY29yZHMoZGF0YVJlY29yZHMpLCBb
Y29tcGxldGlvbkhhbmRsZXJDb3B5XSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weSgp
OwogICAgIH0pOwogfQpAQCAtMjQwLDEyICsyNDAsMTIgQEAgKyAoTlNTZXQ8TlNTdHJpbmcgKj4g
KilfYWxsV2Vic2l0ZURhdGFUeQogCiArIChCT09MKV9kZWZhdWx0RGF0YVN0b3JlRXhpc3RzCiB7
Ci0gICAgcmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUV4aXN0
cygpOworICAgIHJldHVybiBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3Rv
cmVFeGlzdHMoKTsKIH0KIAogKyAodm9pZClfZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3Rp
bmcKIHsKLSAgICByZXR1cm4gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWxldGVEZWZhdWx0RGF0
YVN0b3JlRm9yVGVzdGluZygpOworICAgIHJldHVybiBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OmRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7CiB9CiAKIC0gKGluc3RhbmNldHlw
ZSlfaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biAqKWNvbmZpZ3VyYXRpb24KQEAgLTI1Myw3ICsyNTMsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjooCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBhdXRvIGNvbmZpZyA9IGNvbmZpZ3VyYXRpb24uaXNQ
ZXJzaXN0ZW50ID8gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmln
dXJhdGlvbigpIDogV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRl
KCk7CisgICAgYXV0byBjb25maWcgPSBjb25maWd1cmF0aW9uLmlzUGVyc2lzdGVudCA/IFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKSA6IFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogCiAgICAgUkVM
RUFTRV9BU1NFUlQoY29uZmlnLT5pc1BlcnNpc3RlbnQoKSA9PSBjb25maWd1cmF0aW9uLmlzUGVy
c2lzdGVudCk7CiAKQEAgLTMxNyw3ICszMTcsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRo
Q29uZmlndXJhdGlvbjooCiAKICAgICBhdXRvIHNlc3Npb25JRCA9IGNvbmZpZ3VyYXRpb24uaXNQ
ZXJzaXN0ZW50ID8gUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlUGVyc2lzdGVudFNlc3Npb25JRCgp
IDogUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlRXBoZW1lcmFsU2Vzc2lvbklEKCk7CiAKLSAgICBB
UEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4oc2Vs
ZiwgV1RGTW92ZShjb25maWcpLCBzZXNzaW9uSUQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1
Y3RJbldyYXBwZXI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPihzZWxmLCBXVEZNb3ZlKGNvbmZp
ZyksIHNlc3Npb25JRCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTMzMCw3ICszMzAsNyBA
QCAtICh2b2lkKV9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczooTlNTZXQ8CiAgICAgaWYgKG9wdGlv
bnMgJiBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25Db21wdXRlU2l6ZXMpCiAgICAgICAg
IGZldGNoT3B0aW9ucy5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRl
U2l6ZXMpOwogCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5mZXRj
aERhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwgZmV0Y2hPcHRpb25z
LCBbY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlckNvcHkp
XShhdXRvIHdlYnNpdGVEYXRhUmVjb3JkcykgeworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5mZXRj
aERhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwgZmV0Y2hPcHRpb25z
LCBbY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlckNvcHkp
XShhdXRvIHdlYnNpdGVEYXRhUmVjb3JkcykgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6
T2JqZWN0Pj4gZWxlbWVudHM7CiAgICAgICAgIGVsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkod2Vic2l0ZURhdGFSZWNvcmRzLnNpemUoKSk7CiAKQEAgLTM0MywxOCArMzQzLDE4IEBAIC0g
KHZvaWQpX2ZldGNoRGF0YVJlY29yZHNPZlR5cGVzOihOU1NldDwKIAogLSAoQk9PTClfcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUt
PndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOworICAg
IHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQo
KTsKIH0KIAogLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wp
ZW5hYmxlZAogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgX3dlYnNpdGVEYXRh
U3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOwogfQogCiAt
IChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlCiB7CiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKCk7CisgICAg
cmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2Rl
KCk7CiAjZWxzZQogICAgIHJldHVybiBOTzsKICNlbmRpZgpAQCAtMzYzLDcgKzM2Myw3IEBAIC0g
KEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUKIC0gKHZvaWQpX3NldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6KEJPT0wpZW5hYmxlZAogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKGVuYWJsZWQpOwor
ICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2Rl
KGVuYWJsZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKQEAg
LTM4MCw2OCArMzgwLDY4IEBAIC0gKHZvaWQpX3NldFBlck9yaWdpblN0b3JhZ2VRdW90YTooTlNV
SW4KIAogLSAoTlNTdHJpbmcgKilfY2FjaGVTdG9yYWdlRGlyZWN0b3J5CiB7Ci0gICAgcmV0dXJu
IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuY2FjaGVTdG9yYWdlRGlyZWN0
b3J5KCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5jYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkoKTsKIH0KIAogLSAodm9pZClfc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5OihOU1N0cmluZyAq
KWRpcmVjdG9yeQogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgX3dlYnNpdGVEYXRhU3Rv
cmUtPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShkaXJlY3RvcnkpOwogfQogCiAtIChOU1N0cmlu
ZyAqKV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5CiB7Ci0gICAgcmV0dXJuIF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeSgpOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+c2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogfQogCiAtICh2b2lkKV9zZXRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeQogewotICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeShkaXJlY3RvcnkpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRpcmVjdG9yeSk7CiB9CiAKIC0gKHZv
aWQpX3NldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyCiB7
Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRCb3VuZEludGVy
ZmFjZUlkZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldEJv
dW5kSW50ZXJmYWNlSWRlbnRpZmllcihpZGVudGlmaWVyKTsKIH0KIAogLSAoTlNTdHJpbmcgKilf
Ym91bmRJbnRlcmZhY2VJZGVudGlmaWVyCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkuYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKCk7CisgICAgcmV0
dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5ib3VuZEludGVyZmFjZUlkZW50aWZpZXIoKTsKIH0KIAog
LSAodm9pZClfc2V0QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6KEJPT0wpYWxsb3dzCiB7Ci0gICAgX3dl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRBbGxvd3NDZWxsdWxhckFjY2Vz
cyhhbGxvd3MgPyBXZWJLaXQ6OkFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMgOiBXZWJLaXQ6OkFs
bG93c0NlbGx1bGFyQWNjZXNzOjpObyk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldEFsbG93
c0NlbGx1bGFyQWNjZXNzKGFsbG93cyA/IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6Olll
cyA6IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6Ok5vKTsKIH0KIAogLSAoQk9PTClfYWxs
b3dzQ2VsbHVsYXJBY2Nlc3MKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKS5hbGxvd3NDZWxsdWxhckFjY2VzcygpID09IFdlYktpdDo6QWxsb3dzQ2Vs
bHVsYXJBY2Nlc3M6OlllczsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPmFsbG93c0Nl
bGx1bGFyQWNjZXNzKCkgPT0gV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vzczo6WWVzOwogfQog
CiAtICh2b2lkKV9zZXRQcm94eUNvbmZpZ3VyYXRpb246KE5TRGljdGlvbmFyeSAqKWNvbmZpZ3Vy
YXRpb24KIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFBy
b3h5Q29uZmlndXJhdGlvbigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNvbmZpZ3VyYXRpb24p
OworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRQcm94eUNvbmZpZ3VyYXRpb24oKF9fYnJpZGdl
IENGRGljdGlvbmFyeVJlZiljb25maWd1cmF0aW9uKTsKIH0KIAogLSAoTlNTdHJpbmcgKilfc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0
YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5zb3VyY2VBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIoKTsKIH0KIAogLSAodm9pZClfc2V0U291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBpZiAoIV93ZWJzaXRl
RGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPnNldFNv
dXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihpZGVudGlmaWVyKSkKICAgICAgICAgW05T
RXhjZXB0aW9uIHJhaXNlOk5TR2VuZXJpY0V4Y2VwdGlvbiBmb3JtYXQ6QCJfc2V0U291cmNlQXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyIGNhbm5vdCBiZSBjYWxsZWQgYWZ0ZXIgbmV0d29ya2lu
ZyBoYXMgYmVndW4iXTsKIH0KIAogLSAoTlNTdHJpbmcgKilfc291cmNlQXBwbGljYXRpb25TZWNv
bmRhcnlJZGVudGlmaWVyCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKCk7CisgICAg
cmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5zb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50
aWZpZXIoKTsKIH0KIAogLSAodm9pZClfc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBpZiAoIV93ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyKGlkZW50aWZpZXIpKQorICAgIGlmICghX3dlYnNpdGVEYXRhU3RvcmUtPnNldFNvdXJj
ZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSkKICAgICAgICAgW05T
RXhjZXB0aW9uIHJhaXNlOk5TR2VuZXJpY0V4Y2VwdGlvbiBmb3JtYXQ6QCJfc2V0U291cmNlQXBw
bGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyIGNhbm5vdCBiZSBjYWxsZWQgYWZ0ZXIgbmV0d29y
a2luZyBoYXMgYmVndW4iXTsKIH0KIApAQCAtNDU2LDE4ICs0NTYsMTggQEAgLSAoQk9PTClfYWxs
b3dzVExTRmFsbGJhY2sKIAogLSAoTlNEaWN0aW9uYXJ5ICopX3Byb3h5Q29uZmlndXJhdGlvbgog
ewotICAgIHJldHVybiAoX19icmlkZ2UgTlNEaWN0aW9uYXJ5ICopX3dlYnNpdGVEYXRhU3RvcmUt
PndlYnNpdGVEYXRhU3RvcmUoKS5wcm94eUNvbmZpZ3VyYXRpb24oKTsKKyAgICByZXR1cm4gKF9f
YnJpZGdlIE5TRGljdGlvbmFyeSAqKV93ZWJzaXRlRGF0YVN0b3JlLT5wcm94eUNvbmZpZ3VyYXRp
b24oKTsKIH0KIAogLSAoTlNVUkwgKilfaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkKIHsKLSAg
ICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfd2Vic2l0ZURhdGFTdG9yZS0+aW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOworICAgIHJldHVybiBbTlNV
UkwgZmlsZVVSTFdpdGhQYXRoOl93ZWJzaXRlRGF0YVN0b3JlLT5jb25maWd1cmF0aW9uKCkuaW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwogfQogCiAtICh2b2lk
KV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5OihCT09MKXZh
bHVlCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBhdXRvKiBz
dG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpOworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRhU3RvcmUtPnJlc291
cmNlTG9hZFN0YXRpc3RpY3MoKTsKICAgICBpZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAK
QEAgLTQ4MiwxMyArNDgyLDEzIEBAIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NU
ZXN0aW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGNhbGxiYWNrKSB7Ci0gICAgICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U3RhdGlzdGljc1Rlc3RpbmdD
YWxsYmFjayhbY2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoY2FsbGJhY2spLCBzZWxmXShjb25zdCBT
dHJpbmcmIGV2ZW50KSB7CisgICAgICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRTdGF0aXN0aWNz
VGVzdGluZ0NhbGxiYWNrKFtjYWxsYmFjayA9IG1ha2VCbG9ja1B0cihjYWxsYmFjayksIHNlbGZd
KGNvbnN0IFN0cmluZyYgZXZlbnQpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKHNlbGYsIGV2ZW50
KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2so
bnVsbHB0cik7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFN0YXRpc3RpY3NUZXN0aW5nQ2Fs
bGJhY2sobnVsbHB0cik7CiAjZW5kaWYKIH0KIApAQCAtNTExLDcgKzUxMSw3IEBAIC0gKHZvaWQp
X2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOigKICAgICB9CiAKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMod2ViUGFnZVByb3h5LT5pZGVudGlm
aWVyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildKGF1dG8gZG9tYWlucykgeworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5nZXRBbGxTdG9yYWdl
QWNjZXNzRW50cmllcyh3ZWJQYWdlUHJveHktPmlkZW50aWZpZXIoKSwgW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBkb21haW5zKSB7CiAg
ICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlEb21haW5zOwogICAgICAgICBh
cGlEb21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZG9tYWlucy5zaXplKCkpOwogICAgICAg
ICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCkBAIC01MjYsNyArNTI2LDcgQEAgLSAodm9p
ZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6KAogLSAodm9pZClfc2NoZWR1bGVDb29r
aWVCbG9ja2luZ1VwZGF0ZToodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKKyAgICBf
d2Vic2l0ZURhdGFTdG9yZS0+c2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKICNlbHNlCkBAIC01MzcsNyArNTM3LDcgQEAg
LSAodm9pZClfc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZToodgogLSAodm9pZClfc2V0UHJl
dmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UHJl
dmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgeworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRQ
cmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTQ4LDcgKzU0OCw3IEBAIC0gKHZvaWQpX3NldFByZXZh
bGVudERvbWFpbjooTlNVUkwgKilkb20KIC0gKHZvaWQpX2dldElzUHJldmFsZW50RG9tYWluOihO
U1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlv
bkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNQcmV2YWxlbnRSZXNvdXJjZShV
UkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0oYm9vbCBlbmFibGVkKSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmlzUHJldmFs
ZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZW5hYmxlZCkgewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihlbmFibGVkKTsKICAgICB9KTsKICNlbHNlCkBAIC01NTksNyArNTU5LDcgQEAgLSAo
dm9pZClfZ2V0SXNQcmV2YWxlbnREb21haW46KE5TVVJMICopZAogLSAodm9pZClfY2xlYXJQcmV2
YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2
b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5jbGVhclBy
ZXZhbGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+Y2xl
YXJQcmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTcwLDcgKzU3MCw3IEBAIC0gKHZvaWQpX2NsZWFy
UHJldmFsZW50RG9tYWluOihOU1VSTCAqKWQKIC0gKHZvaWQpX3Byb2Nlc3NTdGF0aXN0aWNzQW5k
RGF0YVJlY29yZHM6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2lu
ZyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgp
IHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHNQcm9jZXNzaW5nKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogI2Vs
c2UKQEAgLTU4MCwxOCArNTgwLDE4IEBAIC0gKHZvaWQpX3Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0
YVJlY29yZHMKIAogLSAoYm9vbClfaGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXIKIHsKLSAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhXZWJDb3JlOjpzZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSkpOworICAgIHJldHVybiBG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKFdlYkNvcmU6OnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhYmFzZUZpbGVuYW1lKF93ZWJzaXRlRGF0YVN0b3JlLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5KCkpKTsKIH0KIAogLSAoaWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0
ZT4pX2RlbGVnYXRlCiB7Ci0gICAgcmV0dXJuIF9kZWxlZ2F0ZS5nZXQoKTsKKyAgICByZXR1cm4g
X2RlbGVnYXRlLmdldCgpLmdldCgpOwogfQogCiAtICh2b2lkKXNldF9kZWxlZ2F0ZTooaWQgPF9X
S1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4pZGVsZWdhdGUKIHsKICAgICBfZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldENs
aWVudChtYWtlVW5pcXVlUmVmPFdlYnNpdGVEYXRhU3RvcmVDbGllbnQ+KGRlbGVnYXRlKSk7Cisg
ICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldENsaWVudChtYWtlVW5pcXVlUmVmPFdlYnNpdGVEYXRh
U3RvcmVDbGllbnQ+KGRlbGVnYXRlKSk7CiB9CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmVJbnRlcm5hbC5oCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpA
QCAtMjUsMTIgKzI1LDEzIEBACiAKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUu
aCIKIAotI2ltcG9ydCAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2ltcG9ydCAiV0tPYmplY3Qu
aCIKKyNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0
ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRy
YWl0czxBUEk6OldlYnNpdGVEYXRhU3RvcmU+IHsKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJU
cmFpdHM8V2Vic2l0ZURhdGFTdG9yZT4gewogICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IFdLV2Vi
c2l0ZURhdGFTdG9yZTsKIH07CiAKQEAgLTM4LDcgKzM5LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
V3JhcHBlclRyYWl0czxBUEk6OldlYgogCiBAaW50ZXJmYWNlIFdLV2Vic2l0ZURhdGFTdG9yZSAo
KSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCi0gICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZT4gX3dlYnNpdGVEYXRhU3RvcmU7Ci0gICAgUmV0YWluUHRyPGlkIDxfV0tX
ZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+ID4gX2RlbGVnYXRlOworICAgIEFQSTo6T2JqZWN0U3Rv
cmFnZTxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IF93ZWJzaXRlRGF0YVN0b3JlOworICAgIFdl
YWtPYmpDUHRyPGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+ID4gX2RlbGVnYXRlOwog
fQogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0
ZURhdGFTdG9yZUdMaWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkocmV2aXNpb24gMjUwMTIyKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdM
aWIuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTA3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNyBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotCi0jaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0KLSNpZiBQTEFURk9S
TShHVEspCi0jZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3ZWJraXRndGsiCi0jZWxpZiBQTEFURk9S
TShXUEUpCi0jZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCi0jZW5kaWYKLQotbmFtZXNwYWNl
IEFQSSB7Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImFwcGxpY2F0
aW9ucyIpOwotfQotCi0vLyBGSVhNRTogVGhlIG90aGVyIGRpcmVjdG9yaWVzIGluIHRoaXMgZmls
ZSBhcmUgc2hhcmVkIGJldHdlZW4gYWxsIGFwcGxpY2F0aW9ucyB1c2luZyBXZWJLaXRHVEsuCi0v
LyBXaHkgaXMgb25seSB0aGlzIGRpcmVjdG9yeSBuYW1lc3BhY2VkIHRvIGEgcGFydGljdWxhciBh
cHBsaWNhdGlvbj8KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkp
LCAiV2ViS2l0Q2FjaGUiKSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dl
dF9wcmduYW1lKCkpLCAiQ2FjaGVTdG9yYWdlIikpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJ
UkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGF0YWJhc2VzIiBHX0RJUl9TRVBBUkFUT1JfUyAi
aW5kZXhlZGRiIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0
ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19E
SVJfU0VQQVJBVE9SX1MgInNlcnZpY2V3b3JrZXJzIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVy
biB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVD
VE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAibG9jYWxzdG9yYWdlIik7Ci19Ci0KLVdURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKLXsK
LSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
QkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgIm1lZGlha2V5cyIpOwotfQotCi1TdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJkZXZpY2VpZGhhc2hz
YWx0cyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAi
ZGF0YWJhc2VzIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRI
U1RTRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MpOwotfQot
Ci1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5n
JiBkaXJlY3RvcnlOYW1lKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7Ci19Ci0KLVdURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQotewotICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBkaXJl
Y3RvcnlOYW1lKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlci5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDcgKzk1LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlIAog
ICAgICAgICBBU1NFUlQocHJvY2Vzc1Bvb2xzLmlzRW1wdHkoKSk7CiAgICAgfQogCi0gICAgUmVm
UHRyPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4gd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBSZWZQdHI8
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiB3ZWJzaXRlRGF0YVN0b3JlOwogICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gYmFzZURhdGFEaXJlY3Rvcnk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBiYXNlQ2Fj
aGVEaXJlY3Rvcnk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7
CkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
U2V0UAogICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfSVNfRVBIRU1FUkFMOgogICAgICAg
ICBpZiAoZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpCi0gICAgICAgICAgICBtYW5hZ2VyLT5w
cml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25Q
ZXJzaXN0ZW50RGF0YVN0b3JlKCk7CisgICAgICAgICAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRl
RGF0YVN0b3JlID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50
RGF0YVN0b3JlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JK
RUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwgcGFyYW1TcGVjKTsK
QEAgLTM4MSwzMSArMzgxLDIzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl8KICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1f
UkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKIH0KIAotV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJDcmVhdGUoUmVmPFdlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCi17Ci0gICAgV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyID0gV0VCS0lUX1dFQlNJVEVfREFUQV9NQU5BR0VSKGdf
b2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJTSVRFX0RBVEFfTUFOQUdFUiwgbnVsbHB0cikpOwot
ICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpKTsKLQotICAgIHJldHVybiBtYW5hZ2VyOwotfQotCi1BUEk6OldlYnNpdGVE
YXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIpCitXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtp
dFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIq
IG1hbmFnZXIpCiB7CiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZSogcHJpdiA9
IG1hbmFnZXItPnByaXY7CiAgICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0YVN0b3JlKSB7CiAgICAg
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpj
cmVhdGUoKTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVj
dG9yeS5nZXQoKSkpOworICAgICAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKSkpOwog
ICAgICAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoIXByaXYtPmRp
c2tDYWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9y
eSkpOworICAgICAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29y
a0NhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5kaXNr
Q2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKICAgICAg
ICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSghcHJpdi0+YXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkuZ2V0KCkpKTsKKyAgICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5n
ZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSghcHJpdi0+d2ViU1FMRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQo
KSkpOworICAgICAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZp
Z3VyYXRpb24tPnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5KCFwcml2LT5oc3RzQ2FjaGVEaXJlY3Rv
cnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVj
dG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
cml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi0+
c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpOwotICAgICAgICBwcml2LT53ZWJzaXRlRGF0
YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0
aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgICAgICAgICBX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RTRGlyZWN0b3J5KCkgOiBGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmhzdHNDYWNoZURp
cmVjdG9yeS5nZXQoKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgICAgIHByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gKnBy
aXYtPndlYnNpdGVEYXRhU3RvcmU7CkBAIC01NDIsNyArNTM0LDcgQEAgY29uc3QgZ2NoYXIqIHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IGlmICghcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5KQotICAgICAgICBwcml2LT5sb2NhbFN0
b3JhZ2VEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2
LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOwog
ICAgIHJldHVybiBwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCk7CiB9CiAKQEAgLTU2
Niw3ICs1NTgsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCiAK
ICAgICBpZiAoIXByaXYtPmRpc2tDYWNoZURpcmVjdG9yeSkgewogICAgICAgICAvLyBUaGUgZGVm
YXVsdCBkaXJlY3RvcnkgYWxyZWFkeSBoYXMgdGhlIHN1YmRpcmVjdG9yeS4KLSAgICAgICAgcHJp
di0+ZGlza0NhY2hlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKEZpbGVTeXN0ZW06OmRpcmVjdG9y
eU5hbWUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCkpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LnJl
c2V0KGdfc3RyZHVwKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpLnV0ZjgoKS5kYXRhKCkpKTsK
ICAgICB9CiAgICAgcmV0dXJuIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKTsKIH0KQEAg
LTU5MCw3ICs1ODIsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFwcml2LT5hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KQotICAgICAgICBwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LnJl
c2V0KGdfc3RyZHVwKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIHByaXYtPmFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICBy
ZXR1cm4gcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKTsKIH0KIApAQCAtNjEz
LDcgKzYwNSw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIXByaXYtPmluZGV4ZWREQkRpcmVjdG9y
eSkKLSAgICAgICAgcHJpdi0+aW5kZXhlZERCRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkudXRm
OCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5pbmRleGVkREJEaXJlY3RvcnkucmVzZXQoZ19z
dHJkdXAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgcmV0dXJuIHByaXYtPmluZGV4ZWREQkRp
cmVjdG9yeS5nZXQoKTsKIH0KIApAQCAtNjM4LDcgKzYzMCw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBp
ZiAoIXByaXYtPndlYlNRTERpcmVjdG9yeSkKLSAgICAgICAgcHJpdi0+d2ViU1FMRGlyZWN0b3J5
LnJlc2V0KGdfc3RyZHVwKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT53ZWJTUUxEaXJl
Y3RvcnkucmVzZXQoZ19zdHJkdXAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgcmV0dXJuIHByaXYt
PndlYlNRTERpcmVjdG9yeS5nZXQoKTsKIH0KIApAQCAtNjYxLDcgKzY1Myw3IEBAIGNvbnN0IGdj
aGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBpZiAoIXByaXYtPmhzdHNDYWNoZURpcmVjdG9yeSkKLSAgICAgICAgcHJpdi0+aHN0
c0NhY2hlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdEhTVFNEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIHByaXYtPmhzdHND
YWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRIU1RTRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOwogICAgIHJldHVybiBwcml2LT5o
c3RzQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CiAKQEAgLTczNSw3ICs3MjcsNyBAQCB2b2lkIHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9mZXRjaChXCiAgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdlcikpOwogCiAgICAgR1JlZlB0cjxH
VGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KG1hbmFnZXIsIGNhbmNlbGxhYmxlLCBj
YWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkuZmV0Y2hEYXRhKHRvV2Vic2l0ZURhdGFUeXBlcyh0eXBlcyks
IFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcywgW3Rhc2sgPSBXVEZNb3ZlKHRh
c2spXSAoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiByZWNvcmRzKSB7CisgICAgbWFuYWdlci0+
cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+ZmV0Y2hEYXRhKHRvV2Vic2l0ZURhdGFUeXBlcyh0eXBl
cyksIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcywgW3Rhc2sgPSBXVEZNb3Zl
KHRhc2spXSAoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiByZWNvcmRzKSB7CiAgICAgICAgIEdM
aXN0KiBkYXRhTGlzdCA9IG51bGxwdHI7CiAgICAgICAgIHdoaWxlICghcmVjb3Jkcy5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBkYXRhID0gd2Via2l0V2Vic2l0ZURhdGFDcmVh
dGUocmVjb3Jkcy50YWtlTGFzdCgpKSkKQEAgLTgwOSw3ICs4MDEsNyBAQCB2b2lkIHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9yZW1vdmUoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVt
b3ZlRGF0YSh0b1dlYnNpdGVEYXRhVHlwZXModHlwZXMpLCByZWNvcmRzLCBbdGFzayA9IFdURk1v
dmUodGFzayldIHsKKyAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlLT5yZW1vdmVE
YXRhKHRvV2Vic2l0ZURhdGFUeXBlcyh0eXBlcyksIHJlY29yZHMsIFt0YXNrID0gV1RGTW92ZSh0
YXNrKV0gewogICAgICAgICBnX3Rhc2tfcmV0dXJuX2Jvb2xlYW4odGFzay5nZXQoKSwgVFJVRSk7
CiAgICAgfSk7CiB9CkBAIC04NjEsNyArODUzLDcgQEAgdm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfY2xlYXIoVwogCiAgICAgV2FsbFRpbWUgdGltZVBvaW50ID0gdGltZVNwYW4gPyBX
YWxsVGltZTo6bm93KCkgLSBTZWNvbmRzOjpmcm9tTWljcm9zZWNvbmRzKHRpbWVTcGFuKSA6IFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcygwKTsKICAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRv
cHRHUmVmKGdfdGFza19uZXcobWFuYWdlciwgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0
YSkpOwotICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3Rv
cmUoKS5yZW1vdmVEYXRhKHRvV2Vic2l0ZURhdGFUeXBlcyh0eXBlcyksIHRpbWVQb2ludCwgW3Rh
c2sgPSBXVEZNb3ZlKHRhc2spXSB7CisgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9y
ZS0+cmVtb3ZlRGF0YSh0b1dlYnNpdGVEYXRhVHlwZXModHlwZXMpLCB0aW1lUG9pbnQsIFt0YXNr
ID0gV1RGTW92ZSh0YXNrKV0gewogICAgICAgICBnX3Rhc2tfcmV0dXJuX2Jvb2xlYW4odGFzay5n
ZXQoKSwgVFJVRSk7CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
UHJpdmF0ZS5oCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE5LDEyICsxOSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFQSVdlYnNp
dGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldl
YnNpdGVEYXRhU3RvcmUuaCIKIAotV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiB3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJDcmVhdGUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24+JiYpOwotQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKik7CitXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIqKTsKIHZvaWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQWRkUHJv
Y2Vzc1Bvb2woV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiwgV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bCYpOwogdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJSZW1vdmVQcm9jZXNzUG9vbChXZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIqLCBXZWJLaXQ6OldlYlByb2Nlc3NQb29sJik7CiBjb25zdCBW
ZWN0b3I8V2ViS2l0OjpXZWJQcm9jZXNzUG9vbCo+JiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJH
ZXRQcm9jZXNzUG9vbHMoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFT
dG9yZVdpbi5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw4
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50
ZXJ0YWlubWVudCBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCi0KLSNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgot
Ci1uYW1lc3BhY2UgQVBJIHsKLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkNhY2hlU3RvcmFnZSIpOwotfQotCi1TdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIpOwotfQotCi1T
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5kZXhlZERC
Iik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIlNlcnZpY2VXb3JrZXJzIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIpOwotfQot
Ci1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViU1FMIik7
Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYg
ZGlyZWN0b3J5TmFtZSkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCBkaXJlY3RvcnlOYW1lKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5TmFtZSkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkaXJl
Y3RvcnlOYW1lKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAyNTAx
MjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQgIkFQSVBhZ2VDb25maWd1
cmF0aW9uLmgiCiAjaW1wb3J0ICJBUElTdHJpbmcuaCIKICNpbXBvcnQgIkFQSVVSTC5oIgotI2lt
cG9ydCAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbi5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbkNvY29hLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIu
aCIKQEAgLTY0LDYgKzYzLDcgQEAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAi
V2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm90ZWN0aW9uU3BhY2UuaCIKKyNpbXBv
cnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQgIl9XS0NvbnRlbnRSdWxlTGlzdEFjdGlv
bkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5oIgogI2lt
cG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZp
c2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBAIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Ok5ldHdvcmtQcm9jZXNzUHJveHkKICAgICBjb25uZWN0KCk7CiAKICAgICBp
ZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IG1fcHJvY2Vzc1Bvb2wud2Vic2l0ZURhdGFTdG9y
ZSgpKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmVzLnNldCh3ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCksIG1ha2VSZWYod2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZXMuc2V0KHdl
YnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBtYWtlUmVmKCp3ZWJzaXRlRGF0YVN0b3JlKSk7
CiB9CiAKIE5ldHdvcmtQcm9jZXNzUHJveHk6On5OZXR3b3JrUHJvY2Vzc1Byb3h5KCkKQEAgLTEx
MjUsMTQgKzExMjUsMTQgQEAgV2Vic2l0ZURhdGFTdG9yZSogTmV0d29ya1Byb2Nlc3NQcm94eTo6
dwogICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCiAgICAgaWYgKGF1dG8q
IHdlYnNpdGVEYXRhU3RvcmUgPSBtX3Byb2Nlc3NQb29sLndlYnNpdGVEYXRhU3RvcmUoKSkgewot
ICAgICAgICBpZiAoc2Vzc2lvbklEID09IHdlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3Rv
cmUoKS5zZXNzaW9uSUQoKSkKLSAgICAgICAgICAgIHJldHVybiAmd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICBpZiAoc2Vzc2lvbklEID09IHdlYnNpdGVEYXRh
U3RvcmUtPnNlc3Npb25JRCgpKQorICAgICAgICAgICAgcmV0dXJuIHdlYnNpdGVEYXRhU3RvcmU7
CiAgICAgfQogCiAgICAgaWYgKHNlc3Npb25JRCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiAmQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKTsK
KyAgICByZXR1cm4gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCku
cHRyKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmV0cmlldmVDYWNoZVN0b3Jh
Z2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShy
ZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJB
dXhpbGlhcnlQcm9jZXNzUHJveHkuaCIKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NP
TF9NQU5BR0VSKQogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmgi
CkBAIC0zNiw2ICszNSw3IEBACiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIgog
I2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDI1MDE1MCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiwxNSArMjYsMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJz
aXRlRGF0YVN0b3JlLmgiCiAKKyNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKICNpbmNs
dWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBUElXZWJzaXRl
RGF0YVJlY29yZC5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRl
ICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIkRldmljZUlkSGFzaFNhbHRTdG9y
YWdlLmgiCiAjaW5jbHVkZSAiTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNob3VsZEdyYW5kZmF0aGVyU3Rh
dGlzdGljcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKKyNpbmNsdWRlICJX
ZWJLaXQySW5pdGlhbGl6ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NDYWNoZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAt
MTUzLDYgKzE1NCw1NyBAQCBXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgpCiAg
ICAgfQogfQogCitzdGF0aWMgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiBnbG9iYWxEZWZhdWx0
RGF0YVN0b3JlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPFdlYnNpdGVE
YXRhU3RvcmU+PiBnbG9iYWxEZWZhdWx0RGF0YVN0b3JlOworICAgIHJldHVybiBnbG9iYWxEZWZh
dWx0RGF0YVN0b3JlLmdldCgpOworfQorCitSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCit7CisgICAgSW5pdGlhbGl6ZVdlYktpdDIoKTsK
KworICAgIGF1dG8mIHN0b3JlID0gZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgpOworICAgIGlmICgh
c3RvcmUpCisgICAgICAgIHN0b3JlID0gYWRvcHRSZWYobmV3IFdlYnNpdGVEYXRhU3RvcmUoZGVm
YXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSkpOworCisgICAgcmV0dXJuICpzdG9yZTsKK30KKwordm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpCit7CisgICAgZ2xvYmFsRGVm
YXVsdERhdGFTdG9yZSgpID0gbnVsbHB0cjsKK30KKworYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkKK3sKKyAgICByZXR1cm4gISFnbG9iYWxEZWZhdWx0RGF0
YVN0b3JlKCk7Cit9CisKK1JlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
PiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCit7Cisg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNy
ZWF0ZSgpOworCisgICAgY29uZmlndXJhdGlvbi0+c2V0UGVyc2lzdGVudCh0cnVlKTsKKworICAg
IGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0Q2FjaGVTdG9y
YWdlRGlyZWN0b3J5KGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmln
dXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFDYWNoZURpcmVjdG9yeShkZWZh
dWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKTsKKworICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgp
KTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOworICAgIGNv
bmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9u
LT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkoZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7CisgICAg
Y29uZmlndXJhdGlvbi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1
bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CisKKyAgICBjb25maWd1cmF0
aW9uLT5zZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShkZWZhdWx0SmF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSk7CisKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbjsK
K30KKwogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjptYXliZVJlZ2lzdGVyV2l0aFNlc3Npb25JRE1h
cCgpCiB7CiAgICAgaWYgKG1fc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpIHsKQEAgLTE3MjYsNyArMTc3OCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
cmVzZXRDYWNoZU1heEFnZUMKIGJvb2wgV2Vic2l0ZURhdGFTdG9yZTo6aXNBc3NvY2lhdGVkUHJv
Y2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKSBjb25zdAogewogICAgIGlmIChh
dXRvKiBwcm9jZXNzUG9vbERhdGFTdG9yZSA9IHByb2Nlc3NQb29sLndlYnNpdGVEYXRhU3RvcmUo
KSkKLSAgICAgICAgcmV0dXJuICZwcm9jZXNzUG9vbERhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9y
ZSgpID09IHRoaXM7CisgICAgICAgIHJldHVybiBwcm9jZXNzUG9vbERhdGFTdG9yZSA9PSB0aGlz
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMjA1Niw0ICsyMTA4LDI2IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6Z2V0TG9jYWxTdG9yYWdlRGUKICAgICBBU1NFUlQoIWNvbXBsZXRpb25I
YW5kbGVyKTsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkKK1dURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICAvLyBGSVhNRTog
SW1wbGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzY5
IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzcwCisgICAg
cmV0dXJuIFdURjo6U3RyaW5nKCk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudC4KKyAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKK30KKyNlbmRpZgorCisj
aWYgIVVTRShHTElCKQorV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmlj
ZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgLy8gTm90IGltcGxlbWVudGVk
LgorICAgIHJldHVybiBXVEY6OlN0cmluZygpOworfQorI2VuZGlmCisKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgJKHJldmlzaW9uIDI1MDE1MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTEgKzkyLDE5
IEBAIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFN0YXR1czsKIHN0cnVjdCBQbHVnaW5N
b2R1bGVJbmZvOwogI2VuZGlmCiAKLWNsYXNzIFdlYnNpdGVEYXRhU3RvcmUgOiBwdWJsaWMgUmVm
Q291bnRlZDxXZWJzaXRlRGF0YVN0b3JlPiwgcHVibGljIElkZW50aWZpZWQ8V2Vic2l0ZURhdGFT
dG9yZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJzaXRlRGF0YVN0b3JlPiAgeworY2xhc3Mg
V2Vic2l0ZURhdGFTdG9yZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OldlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMgSWRlbnRpZmllZDxXZWJzaXRlRGF0YVN0b3Jl
PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYnNpdGVEYXRhU3RvcmU+ICB7CiBwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBkZWZhdWx0RGF0YVN0b3JlKCk7CisgICAg
c3RhdGljIGJvb2wgZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpOworICAgIHN0YXRpYyB2b2lkIGRl
bGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7CisgICAgc3RhdGljIFJlZjxXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKTsK
KyAgICAKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3Rl
bnQoKTsKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZShSZWY8V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYsIFBBTDo6U2Vzc2lvbklEKTsKLSAgICB2aXJ0dWFs
IH5XZWJzaXRlRGF0YVN0b3JlKCk7CisKKyAgICBXZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lv
bklEKTsKKyAgICBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIH5XZWJzaXRlRGF0YVN0b3JlKCk7CiAKICAg
ICBzdGF0aWMgV2Vic2l0ZURhdGFTdG9yZSogZXhpc3RpbmdOb25EZWZhdWx0RGF0YVN0b3JlRm9y
U2Vzc2lvbklEKFBBTDo6U2Vzc2lvbklEKTsKIApAQCAtMjYxLDEwICsyNjksMjMgQEAgcHVibGlj
OgogICAgIFNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yJiBzb0F1dGhvcml6YXRpb25Db29yZGlu
YXRvcigpIHsgcmV0dXJuIG1fc29BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IuZ2V0KCk7IH0KICNl
bmRpZgogCisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRMb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0
QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZh
dWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKKyNpZiBVU0UoR0xJQikKKyAgICBzdGF0aWMg
V1RGOjpTdHJpbmcgZGVmYXVsdEhTVFNEaXJlY3RvcnkoKTsKKyNlbmRpZgorICAgIHN0YXRpYyBX
VEY6OlN0cmluZyBkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0
aWMgV1RGOjpTdHJpbmcgZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHN0YXRp
YyBXVEY6OlN0cmluZyBkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBX
VEY6OlN0cmluZyBkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHN0YXRp
YyBXVEY6OlN0cmluZyBkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCk7
CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeSgpOworICAgIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3Jl
KFBBTDo6U2Vzc2lvbklEKTsKLSAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlKFJlZjxXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOwotCiAgICAgdm9p
ZCBmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBSZWZQdHI8V29ya1F1ZXVlPiYmLCBGdW5jdGlvbjx2
b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5KTsKIAogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplKCk7CkBAIC0yNzUsNiArMjk2LDEzIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwbGF0Zm9ybVNldE5ldHdvcmtQYXJhbWV0ZXJzKFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
Jik7CiAjZW5kaWYKIAorICAgIFdlYnNpdGVEYXRhU3RvcmUoKTsKKworICAgIGVudW0gY2xhc3Mg
U2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHsgTm8sIFllcyB9OworICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5n
JiBkaXJlY3RvcnlOYW1lLCBTaG91bGRDcmVhdGVEaXJlY3RvcnkgPSBTaG91bGRDcmVhdGVEaXJl
Y3Rvcnk6Olllcyk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGNhY2hlRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKKyAg
ICBzdGF0aWMgV1RGOjpTdHJpbmcgd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpOworCiAgICAgSGFzaFNl
dDxSZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+PiBwcm9jZXNzUG9vbHMoc2l6ZV90IGNvdW50ID0gc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwgYm9vbCBlbnN1cmVBUG9vbEV4aXN0cyA9
IHRydWUpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyNTAxNTAp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
IgogCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0JKHJldmlzaW9uIDI1MDE1MCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5o
IgogCiAjaW1wb3J0ICJDb29raWVTdG9yYWdlVXRpbHNDRi5oIgorI2ltcG9ydCAiU2FuZGJveFV0
aWxpdGllcy5oIgogI2ltcG9ydCAiU3RvcmFnZU1hbmFnZXIuaCIKICNpbXBvcnQgIldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMuaCIKQEAgLTIyOSw0ICsyMzAsMTYxIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxh
dGZvcm1SZW1vdmVSZWMKICAgICBXZWJDb3JlOjpyZW1vdmVSZWNlbnRseU1vZGlmaWVkUmVjZW50
U2VhcmNoZXMob2xkZXN0VGltZVRvUmVtb3ZlKTsKIH0KIAorTlNTdHJpbmcgKldlYkRhdGFiYXNl
RGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYkRhdGFiYXNlRGlyZWN0b3J5IjsKK05TU3RyaW5n
ICpXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdExvY2FsU3RvcmFnZURh
dGFiYXNlUGF0aFByZWZlcmVuY2VLZXkiOworTlNTdHJpbmcgKldlYktpdE1lZGlhQ2FjaGVEaXJl
Y3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVkaWFDYWNoZURpcmVjdG9yeSI7CitOU1N0cmlu
ZyAqV2ViS2l0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRN
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5IjsKKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQoreworI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisgICAgLy8gVGhpcyBxdWlyayB1c2VkIHRvIG1ha2UgdGhlc2UgYXBwcyBzaGFy
ZSBhcHBsaWNhdGlvbiBjYWNoZSBzdG9yYWdlLCBidXQgZG9lc24ndCBhY2NvbXBsaXNoIHRoYXQg
YW55IG1vcmUuCisgICAgLy8gUHJlc2VydmluZyBpdCBhdm9pZHMgdGhlIG5lZWQgdG8gbWlncmF0
ZSBkYXRhIHdoZW4gdXBncmFkaW5nLgorICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlIHNob3VsZCBq
dXN0IGhhdmUgU2FmYXJpLCBXZWJBcHAsIGFuZCB3ZWJib29rbWFya3NkIGNyZWF0ZSBhIGRhdGEg
c3RvcmUgd2l0aAorICAgIC8vIHRoaXMgYXBwbGljYXRpb24gY2FjaGUgcGF0aCwgYnV0IHRoYXQn
cyBub3Qgc3VwcG9ydGVkIGFzIG9mIHJpZ2h0IG5vdy4KKyAgICBpZiAoV2ViQ29yZTo6SU9TQXBw
bGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCkgfHwgV2ViQ29yZTo6SU9TQXBwbGljYXRpb246Omlz
V2ViQXBwKCkgfHwgV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViQm9va21hcmtzRCgpKSB7
CisgICAgICAgIE5TU3RyaW5nICpjYWNoZVBhdGggPSBbTlNIb21lRGlyZWN0b3J5KCkgc3RyaW5n
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiTGlicmFyeS9DYWNoZXMvY29tLmFwcGxlLldlYkFw
cENhY2hlIl07CisKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1s
aW5rc0luUGF0aChjYWNoZVBhdGguc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aCk7CisgICAgfQor
I2VuZGlmCisKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oIk9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVy
biBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiQ2FjaGVTdG9yYWdlIik7
Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVE
aXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbigiTmV0d29ya0NhY2hlIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gdGVtcERpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTWVkaWFDYWNoZSIpOworfQorCitXVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnko
KQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbigiSW5kZXhlZERCIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4g
Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlNlcnZpY2VXb3JrZXJzIik7
Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbigiTG9jYWxTdG9yYWdlIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1
cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhS2V5
cyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbigiV2ViU1FMIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKK3sKKyAg
ICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlJl
c291cmNlTG9hZFN0YXRpc3RpY3MiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1
cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSmF2YVNjcmlwdENvcmVE
ZWJ1ZyIsIFNob3VsZENyZWF0ZURpcmVjdG9yeTo6Tm8pOworfQorCitXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjp0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnkgc2hvdWxk
Q3JlYXRlRGlyZWN0b3J5KQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2Vu
OworICAgIHN0YXRpYyBOU1VSTCAqdGVtcFVSTDsKKyAgICAKKyAgICBkaXNwYXRjaF9vbmNlKCZv
bmNlVG9rZW4sIF57CisgICAgICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
Ok5TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICAgICAgaWYgKCF1
cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAK
KyAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250YWluZXIoKSkgeworICAgICAgICAg
ICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVu
ZGxlSWRlbnRpZmllcjsKKyAgICAgICAgICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKKyAgICAg
ICAgICAgICAgICBidW5kbGVJZGVudGlmaWVyID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9d
LnByb2Nlc3NOYW1lOworICAgICAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBpc0RpcmVjdG9yeTpZRVNdOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICB0ZW1wVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07CisgICAgfSk7CisgICAgCisg
ICAgTlNVUkwgKnVybCA9IFt0ZW1wVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJl
Y3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisKKyAgICBpZiAoc2hvdWxkQ3JlYXRlRGlyZWN0
b3J5ID09IFNob3VsZENyZWF0ZURpcmVjdG9yeTo6WWVzCisgICAgICAgICYmICghW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVy
bWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkpCisg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwor
ICAgIAorICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50
YXRpb247Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1l
KQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBO
U1VSTCAqY2FjaGVVUkw7CisKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAg
ICAgIE5TVVJMICp1cmwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRp
cmVjdG9yeTpOU0NhY2hlc0RpcmVjdG9yeSBpbkRvbWFpbjpOU1VzZXJEb21haW5NYXNrIGFwcHJv
cHJpYXRlRm9yVVJMOm51bGxwdHIgY3JlYXRlOk5PIGVycm9yOm51bGxwdHJdOworICAgICAgICBp
ZiAoIXVybCkKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAg
ICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250YWluZXIoKSkgeworICAgICAgICAgICAg
TlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxl
SWRlbnRpZmllcjsKKyAgICAgICAgICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKKyAgICAgICAg
ICAgICAgICBidW5kbGVJZGVudGlmaWVyID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnBy
b2Nlc3NOYW1lOworICAgICAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6YnVuZGxlSWRlbnRpZmllciBpc0RpcmVjdG9yeTpZRVNdOworICAgICAgICB9CisKKyAg
ICAgICAgY2FjaGVVUkwgPSBbW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJL
aXQiIGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsKKyAgICB9KTsKKworICAgIE5TVVJMICp1cmwg
PSBbY2FjaGVVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNE
aXJlY3Rvcnk6WUVTXTsKKyAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
Y3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMg
YXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOworCisgICAgcmV0dXJuIHVybC5hYnNvbHV0
ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKK30KKworV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgc3RhdGljIGRpc3Bh
dGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgc3RhdGljIE5TVVJMICp3ZWJzaXRlRGF0YVVSTDsK
KworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgTlNVUkwgKnVybCA9
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TTGlicmFy
eURpcmVjdG9yeSBpbkRvbWFpbjpOU1VzZXJEb21haW5NYXNrIGFwcHJvcHJpYXRlRm9yVVJMOm51
bGxwdHIgY3JlYXRlOk5PIGVycm9yOm51bGxwdHJdOworICAgICAgICBpZiAoIXVybCkKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAgICAgdXJsID0gW3Vy
bCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU107
CisKKyAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250YWluZXIoKSkgeworICAgICAg
ICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0u
YnVuZGxlSWRlbnRpZmllcjsKKyAgICAgICAgICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKKyAg
ICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVyID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0lu
Zm9dLnByb2Nlc3NOYW1lOworICAgICAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBpc0RpcmVjdG9yeTpZRVNdOworICAgICAgICB9
CisKKyAgICAgICAgd2Vic2l0ZURhdGFVUkwgPSBbW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCJXZWJzaXRlRGF0YSIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOworICAgIH0pOwor
CisgICAgTlNVUkwgKnVybCA9IFt3ZWJzaXRlRGF0YVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOworICAgIGlmICghW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVy
bWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKKyAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CisK
KyAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
OworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS93aW4v
V2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvd2luL1dlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCShyZXZpc2lvbiAy
NTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS93aW4vV2Vic2l0
ZURhdGFTdG9yZVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKQEAgLTQ1LDQgKzQ2LDU5IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1SZW1v
dmVSZWMKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIik7Cit9CisKK1N0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQ2FjaGVTdG9yYWdlIik7Cit9
CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29ya0Nh
Y2hlIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCksICJJbmRleGVkREIiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiU2VydmljZVdvcmtlcnMiKTsKK30KKworU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKK30KKwor
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZp
bGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFLZXlT
dG9yYWdlIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCksICJXZWJTUUwiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOworfQorCitTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksIGRpcmVjdG9yeU5hbWUpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3Qg
U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksIGRpcmVjdG9yeU5hbWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJv
eHlHTGliLmNwcAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsOCArNDMs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPCiAgICAgICAgIGlm
ICghZGF0YVN0b3JlKSB7CiAgICAgICAgICAgICAvLyBQcmV3YXJtZWQgcHJvY2Vzc2VzIGRvbid0
IGhhdmUgYSBXZWJzaXRlRGF0YVN0b3JlIHlldCwgc28gdXNlIHRoZSBwcmltYXJ5IFdlYnNpdGVE
YXRhU3RvcmUgZnJvbSB0aGUgV2ViUHJvY2Vzc1Bvb2wuCiAgICAgICAgICAgICAvLyBUaGUgcHJv
Y2VzcyB3b24ndCBiZSB1c2VkIGlmIGN1cnJlbnQgV2Vic2l0ZURhdGFTdG9yZSBpcyBkaWZmZXJl
bnQgdGhhbiB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBvbmUuCi0gICAgICAgICAgICBpZiAo
YXV0byogYXBpRGF0YVN0b3JlID0gbV9wcm9jZXNzUG9vbC0+d2Vic2l0ZURhdGFTdG9yZSgpKQot
ICAgICAgICAgICAgICAgIGRhdGFTdG9yZSA9ICZhcGlEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3Rv
cmUoKTsKKyAgICAgICAgICAgIGRhdGFTdG9yZSA9IG1fcHJvY2Vzc1Bvb2wtPndlYnNpdGVEYXRh
U3RvcmUoKTsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChkYXRhU3RvcmUpOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3Jl
R0xpYi5jcHAJKHJldmlzaW9uIDI1MDEyMikJKGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwOjI1MDEyMikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgSWdh
bGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSVdl
YnNpdGVEYXRhU3RvcmUuaCIKKworI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVk
ZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorCisjaWYgUExBVEZPUk0oR1RLKQorI2RlZmluZSBC
QVNFX0RJUkVDVE9SWSAid2Via2l0Z3RrIgorI2VsaWYgUExBVEZPUk0oV1BFKQorI2RlZmluZSBC
QVNFX0RJUkVDVE9SWSAid3BlIgorI2VuZGlmCisKK25hbWVzcGFjZSBBUEkgeworCitXVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
Cit7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJB
U0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJhcHBsaWNhdGlvbnMiKTsKK30KKworLy8g
RklYTUU6IFRoZSBvdGhlciBkaXJlY3RvcmllcyBpbiB0aGlzIGZpbGUgYXJlIHNoYXJlZCBiZXR3
ZWVuIGFsbCBhcHBsaWNhdGlvbnMgdXNpbmcgV2ViS2l0R1RLLgorLy8gV2h5IGlzIG9ubHkgdGhp
cyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24/CitXVEY6
OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkK
K3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hlIikp
OworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdl
RGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIkNh
Y2hlU3RvcmFnZSIpKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQ
QVJBVE9SX1MgImRhdGFiYXNlcyIgR19ESVJfU0VQQVJBVE9SX1MgImluZGV4ZWRkYiIpOworfQor
CitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJz
ZXJ2aWNld29ya2VycyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJB
VE9SX1MgImxvY2Fsc3RvcmFnZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdf
RElSX1NFUEFSQVRPUl9TICJtZWRpYWtleXMiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJ
UkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGV2aWNlaWRoYXNoc2FsdHMiKTsKK30KKworV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIpOworfQor
CitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpCit7
CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TKTsKK30KKworV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQor
eworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkK
K3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNo
ZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBX
VEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9X
ZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0
YVN0b3JlLmgiCiAKICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9n
bGliL0dVbmlxdWVQdHIuaD4KQEAgLTM1LDcgKzM1LDcgQEAKICNkZWZpbmUgQkFTRV9ESVJFQ1RP
UlkgIndwZSIKICNlbmRpZgogCi1uYW1lc3BhY2UgQVBJIHsKK25hbWVzcGFjZSBXZWJLaXQgewog
CiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSgpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1MDE0OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgs
NiBAQAogCQkxQTMwMDY2RTExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzMDA2NkMx
MTEwRjRGNzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKIAkJMUEzMzRE
RUQxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzM0REVCMTZE
RThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07
CiAJCTFBMzM0REVFMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTMzNERFQzE2
REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oICovOyB9OwotCQkxQTM2
MzVBQTFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzNjM1QTgxQTMxNDRBMzAwRUQ2
MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCAqLzsgfTsKIAkJMUEzQzg4ODAxOEE1QUJBRTAw
QzRDOTYyIC8qIFdLUHJlZmVyZW5jZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzQzg4N0YxOEE1QUJBRTAwQzRDOTYyIC8qIFdLUHJl
ZmVyZW5jZXNJbnRlcm5hbC5oICovOyB9OwogCQkxQTNDQzE2NzE4OTA2QUNGMDAxRTZFRDggLyog
V0tXZWJWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQTNDQzE2NTE4OTA2QUNGMDAxRTZFRDggLyogV0tXZWJWaWV3LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkxQTNDQzE2OTE4OTA3RUIwMDAxRTZF
RDggLyogV0tQcm9jZXNzUG9vbEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNDQzE2ODE4OTA3RUIwMDAxRTZFRDggLyogV0tQcm9jZXNz
UG9vbEludGVybmFsLmggKi87IH07CkBAIC0yMTIzLDkgKzIxMjIsNiBAQAogCQkxQTMzNERFQTE2
REU4QjY4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXAubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3RvcmFn
ZUFyZWFNYXAubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMzM0
REVCMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTdG9yYWdlQXJlYU1hcE1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3JhZ2VBcmVh
TWFwTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJMUEzMzRERUMxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3RvcmFnZUFyZWFNYXBNZXNzYWdl
cy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlQXJlYU1hcE1lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTFBMzYzNUE3MUEzMTQ0
QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVdlYnNpdGVEYXRhU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxQTM2MzVBODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURh
dGFTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElXZWJzaXRlRGF0
YVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBMzYzNUFCMUEzMTQ1RTUw
MEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBM0E3M0NCMUE0OEM2RDQwMDcyMzFCMyAvKiBBUElQ
YWdlR3JvdXBIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QVBJUGFnZUdyb3VwSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEz
QTczQ0MxQTQ4QzZENDAwNzIzMUIzIC8qIEFQSVBhZ2VHcm91cEhhbmRsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBUElQYWdlR3JvdXBIYW5kbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUEzQzg4N0YxOEE1QUJBRTAwQzRDOTYyIC8qIFdLUHJlZmVyZW5j
ZXNJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByZWZlcmVu
Y2VzSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYzNzEsNyArNjM2
Nyw2IEBACiAJCQkJN0NFRkE5NjAxQUMwOTk5MzAwQjkxMEZEIC8qIEFQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlQ29jb2EubW0gKi8sCiAJCQkJNUNBNDZFN0EyMUYxQTIzOTAwQ0U4NkI0IC8qIEFQSUhU
VFBDb29raWVTdG9yZUNvY29hLm1tICovLAogCQkJCUZFRDNDMURBMUI0NDdBRTgwMEUwRUI3RiAv
KiBBUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbSAqLywKLQkJCQkxQTM2MzVBQjFBMzE0
NUU1MDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tICovLAogCQkJCTFBRkRF
NjQzMTk1MTBCNTUwMEM0OEZGQSAvKiBMZWdhY3lCdW5kbGVGb3JDbGFzcy5tbSAqLywKIAkJCQkx
QzIwOTM1RTIyMzE4Q0IwMDAwMjZBMzkgLyogTlNBdHRyaWJ1dGVkU3RyaW5nLmggKi8sCiAJCQkJ
MUMyMDkzNUYyMjMxOENCMDAwMDI2QTM5IC8qIE5TQXR0cmlidXRlZFN0cmluZy5tbSAqLywKQEAg
LTc5ODMsOCArNzk3OCw2IEBACiAJCQkJMkQ4Nzg2MjIxQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVz
ZXJTdHlsZVNoZWV0LmggKi8sCiAJCQkJMUFFMjg2ODExQzdGOTM4NjAwNjlBQzRGIC8qIEFQSVdl
YnNpdGVEYXRhUmVjb3JkLmNwcCAqLywKIAkJCQkxQUUyODY4MjFDN0Y5Mzg2MDA2OUFDNEYgLyog
QVBJV2Vic2l0ZURhdGFSZWNvcmQuaCAqLywKLQkJCQkxQTM2MzVBNzFBMzE0NEEzMDBFRDYxOTcg
LyogQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAgKi8sCi0JCQkJMUEzNjM1QTgxQTMxNDRBMzAwRUQ2
MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCAqLywKIAkJCQk1QzhERDM3RDFGRTQ1MDExMDBG
MkE1NTYgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmNwcCAqLywKIAkJCQk1QzhERDM3QzFGRTQ1MDEx
MDBGMkE1NTYgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmggKi8sCiAJCQkJMUE2NTYzRTIxQjdBOEM1
MDAwOUNGNzg3IC8qIEFQSVdpbmRvd0ZlYXR1cmVzLmNwcCAqLywKQEAgLTkzODgsNyArOTM4MSw2
IEBACiAJCQkJQzVFMUFGRUQxNkIyMTAxNzAwNkNDMUYyIC8qIEFQSVdlYkFyY2hpdmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUM1RTFBRkVGMTZCMjEwMjkwMDZDQzFGMiAvKiBBUElXZWJBcmNoaXZl
UmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTI4Njg0MUM3RjkzODYwMDY5QUM0RiAv
KiBBUElXZWJzaXRlRGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUEzNjM1QUExQTMx
NDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNjU2M0U1MUI3QThDNTAwMDlDRjc4NyAvKiBBUElXaW5kb3dGZWF0dXJlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRjQ4RDJBODUyMTU4M0E3RTAwQzY3NTJCIC8qIEFwcEtpdFNQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFENEMxOTMxQjM5RjMzMjAwQUJDMjhFIC8qIEFwcGxpY2F0aW9uU3Rh
dGVUcmFja2VyLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXIuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBXZWJNZWRp
YUtleVN0b3JhZ2VNYW5hZ2VyOjpzZXRXZWJzaXRlRGF0YVN0b3JlKGNvbnN0IFdlYlByb2Nlc3NE
YXRhU3RvcmVQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIEFTU0VSVCghcGFyYW1ldGVy
cy5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKTsKICAgICBtX21lZGlhS2V5U3Rv
cmFnZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5OwogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379280</attachid>
            <date>2019-09-20 16:20:44 -0700</date>
            <delta_ts>2019-09-20 16:34:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201655-20190920162043.patch</filename>
            <type>text/plain</type>
            <size>167972</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDE2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA5LTIwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHVu
bmVjZXNzYXJ5IGFic3RyYWN0aW9ucyBhcm91bmQgV2Vic2l0ZURhdGFTdG9yZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNjU1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorCiAyMDE5LTA5LTIwICBLZWl0aCBSb2xs
aW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgY2hlY2sgb2Ygc2V0U291
cmNlQXBwUGlkIHNlbGVjdG9yIHRoYXQncyBubyBsb25nZXIgbmVlZGVkCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2Ev
RGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0JKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lk
IERhdGFiYXNlTWFuYWdlcjo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VQYXRoKQogeworICAgIGlmIChkYXRhYmFzZVBhdGguaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKICAgICAvLyBUaGUgcGF0aCBuZWVkcyB0byBleGlzdCBzbyB0aGF0IHdlIGNhbiByZXNv
bHZlIGl0IHZpYSByZWFsUGF0aCgpLgogICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhk
YXRhYmFzZVBhdGgpKQogICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoZGF0
YWJhc2VQYXRoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxNjEpCisrKyBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzMyBAQAorMjAxOS0wOS0y
MCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlbW92ZSB1bm5lY2Vzc2FyeSBhYnN0cmFjdGlvbnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY1NQor
CisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogUGxhdGZvcm1G
VFcuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzR1RL
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzV1BFLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQ
Q29va2llU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0
aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3Rv
cmUpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0V2Vic2l0ZURhdGFTdG9y
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAgICAgICAg
KEFQSTo6V2Vic2l0ZVBvbGljaWVzOjpXZWJzaXRlUG9saWNpZXMpOgorICAgICAgICAoQVBJOjpX
ZWJzaXRlUG9saWNpZXM6OnNldFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoQVBJOjpXZWJz
aXRlUG9saWNpZXM6OmRhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBv
bGljaWVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0
Q2FjaGVNb2RlbCk6CisgICAgICAgIChXS0NvbnRleHRHZXRDYWNoZU1vZGVsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZUdldFR5cGVJRCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXRE
ZWZhdWx0RGF0YVN0b3JlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUNyZWF0ZU5vblBl
cnNpc3RlbnREYXRhU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlV2l0
aENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0SFRUUENvb2tp
ZVN0b3JlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEZWJ1Z01vZGVXaXRoQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVi
dWdNb2RlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0U2Vl
bik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2UpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ZlcnlQcmV2
YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVEdW1wUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3Rp
Y3NWZXJ5UHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNT
dGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcik6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5n
VG8pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJ
bnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NIYXNI
YWRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc0dyYW5kZmF0aGVyZWQpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0
aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAo
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29y
YXRpb24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMpOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKToKKyAgICAgICAgKFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkpOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5u
ZWQpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0lzUnVubmluZ1Rl
c3QpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1Nob3VsZENsYXNz
aWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKToKKyAgICAgICAgKFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTWluaW11bVRpbWVC
ZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc01heFN0YXRpc3RpY3NFbnRyaWVzKToKKyAgICAgICAgKFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcnVuZUVudHJpZXNEb3duVG8pOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnMpOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbCk6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmcpOgor
ICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZSk6Cisg
ICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXApOgor
ICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbik6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxGZXRjaENhY2hlcyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hlRm9yT3JpZ2luKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXMpOgor
ICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlKToKKyAgICAgICAg
KFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVPcmlnaW5zKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplRm9yT3JpZ2luKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZUNvcHlTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdKToK
KyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdKToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIGh0dHBDb29raWVTdG9yZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6bW9kaWZpZWRTaW5jZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOmZv
ckRhdGFSZWNvcmRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgX2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKToKKyAgICAgICAgKCtbV0tXZWJzaXRl
RGF0YVN0b3JlIF9kZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZ10pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3aXRoT3B0aW9u
czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2NhY2hlU3RvcmFnZURp
cmVjdG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldENhY2hlU3RvcmFn
ZURpcmVjdG9yeTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9y
ZSBfc2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTpdKToKKyAgICAgICAgKC1b
V0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRCb3VuZEludGVyZmFjZUlkZW50aWZpZXI6XSk6CisgICAg
ICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyXSk6Cisg
ICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6XSk6
CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dzQ2VsbHVsYXJBY2Nlc3NdKToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRQcm94eUNvbmZpZ3VyYXRpb246XSk6
CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyXSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0U291cmNlQXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3Rv
cmUgX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3NldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmll
cjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm94eUNvbmZpZ3VyYXRpb25d
KToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zv
cjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9z
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRJc1ByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERv
bWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3Jl
IF9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOl0pOgorICAgICAgICAoLVtXS1dlYnNp
dGVEYXRhU3RvcmUgX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyXSk6CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHNldF9kZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdFdl
YnNpdGVEYXRhTWFuYWdlclNldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFdlYnNpdGVEYXRh
TWFuYWdlckdldERhdGFTdG9yZSk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KToKKyAgICAgICAgKHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkpOgorICAgICAgICAod2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVj
dG9yeSk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRk
Yl9kaXJlY3RvcnkpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93
ZWJzcWxfZGlyZWN0b3J5KToKKyAgICAgICAgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfaHN0c19jYWNoZV9kaXJlY3RvcnkpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2ZldGNoKToKKyAgICAgICAgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9yZW1v
dmUpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyKToKKyAgICAg
ICAgKHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3b3JrUHJvY2Vzc1Byb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6d2Vic2l0ZURhdGFTdG9yZUZyb21T
ZXNzaW9uSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3dlYlByb2Nlc3ND
YWNoZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6dHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjptYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0
d29ya0NhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFT
Y3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2xv
YmFsRGVmYXVsdERhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmlzQXNzb2NpYXRlZFByb2Nlc3NQb29sIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3Jl
V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGli
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExhdW5j
aE9wdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vi
c2l0ZURhdGFTdG9yZUdMaWIuY3BwLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVk
LgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGly
ZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnkp
OiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxT
dG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGly
ZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6c2V0
V2Vic2l0ZURhdGFTdG9yZSk6CisKIDIwMTktMDktMjAgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzb21lIHN1cHBvcnQgZm9yIDwgaU9TIDEzCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1GVFcuY21ha2UJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1GVFcuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDYgQEAg
bGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9BUEkvQy93aW4vV0tW
aWV3LmNwcAogCi0gICAgVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5j
cHAKLQogICAgIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlD
b29yZGluYXRlZEdyYXBoaWNzLmNwcAogCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL3dpbi9Qcm9j
ZXNzTGF1bmNoZXJXaW4uY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHJldmlzaW9u
IDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDggKzQ2LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKIAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcAogCi0gICAgVUlQcm9jZXNzL0FQSS93aW4vQVBJ
V2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKLQogICAgIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAogCiAgICAgVUlQcm9j
ZXNzL0xhdW5jaGVyL3dpbi9Qcm9jZXNzTGF1bmNoZXJXaW4uY3BwCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJ
KHJldmlzaW9uIDI1MDE0OCkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTMxOCw3ICszMTgsNiBAQCBVSVByb2Nlc3MvQVBJL0FQSVVSTFNjaGVtZVRhc2su
Y3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuY3BwCiBVSVByb2Nlc3MvQVBJ
L0FQSVVzZXJTY3JpcHQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcAot
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAogVUlQcm9jZXNzL0FQSS9BUElX
ZWJzaXRlUG9saWNpZXMuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVdpbmRvd0ZlYXR1cmVzLmNwcAog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI3NCw3ICsyNzQsNiBA
QCBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tCiBVSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0KIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJSFRUUENvb2tpZVN0b3JlQ29jb2EubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2Vy
aWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0KLVVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL0xlZ2FjeUJ1bmRsZUZvckNs
YXNzLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL05TQXR0cmlidXRlZFN0cmluZy5tbQogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdC5tbQpJbmRleDogU291cmNlL1dlYktpdC9T
b3VyY2VzR1RLLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0
CShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDYgQEAgVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1RleHRD
aGVja2VyR3RrLmNwcAogVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuY3BwCiAKIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9BUElDb250ZW50UnVsZUxpc3RTdG9yZUdMaWIuY3BwIEBuby11bmlmeQotVUlQ
cm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5pZnkKIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEFwcGxpY2F0aW9uSW5mby5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcCBAbm8tdW5pZnkKQEAgLTIzMiw2
ICsyMzEsNyBAQCBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIEBuCiBVSVBy
b2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCiBVSVByb2Nlc3MvZ2xpYi9XZWJQ
cm9jZXNzUG9vbEdMaWIuY3BwCiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNw
cAorVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogCiBV
SVByb2Nlc3MvZ3N0cmVhbWVyL0luc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3QuY3BwCiBVSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9Tb3VyY2VzV1BFLnR4dAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktp
dC9Tb3VyY2VzV1BFLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw2IEBAIFVJUHJv
Y2Vzcy9BUEkvQy9XS1ZpZXdwb3J0QXR0cmlidXRlcy5jcHAKIFVJUHJvY2Vzcy9BUEkvQy93cGUv
V0tWaWV3LmNwcAogCiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVH
TGliLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3Jl
R0xpYi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBA
bm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3BwIEBu
by11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5j
cHAgQG5vLXVuaWZ5CkBAIC0xOTIsNiArMTkxLDcgQEAgVUlQcm9jZXNzL2dlb2NsdWUvR2VvY2x1
ZUdlb2xvY2F0aW9uUHJvdgogCiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3Bw
CiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAorVUlQcm9jZXNzL2dsaWIv
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogCiBVSVByb2Nlc3MvTGF1bmNoZXIv
Z2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnVi
Ymxld3JhcExhdW5jaGVyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuY3BwCShyZXZpc2lvbiAyNTAxMjIp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5LmgiCiAKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uLmgiCi0jaW5j
bHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2ll
cy5oIgogI2luY2x1ZGUgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZVByb3h5LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNiw3ICs0MTYsNyBAQCBXZWJQYWdlUHJveHk6Oldl
YlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwCiAgICAgLCBtX3ByZWZlcmVuY2VzKCptX2NvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VzKCkpCiAgICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcigqbV9j
b25maWd1cmF0aW9uLT51c2VyQ29udGVudENvbnRyb2xsZXIoKSkKICAgICAsIG1fdmlzaXRlZExp
bmtTdG9yZSgqbV9jb25maWd1cmF0aW9uLT52aXNpdGVkTGlua1N0b3JlKCkpCi0gICAgLCBtX3dl
YnNpdGVEYXRhU3RvcmUobV9jb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNp
dGVEYXRhU3RvcmUoKSkKKyAgICAsIG1fd2Vic2l0ZURhdGFTdG9yZSgqbV9jb25maWd1cmF0aW9u
LT53ZWJzaXRlRGF0YVN0b3JlKCkpCiAgICAgLCBtX3VzZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2Vu
dCgpKQogICAgICwgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB7IG1fY29uZmlndXJh
dGlvbi0+b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKSB9CiAgICAgLCBtX3RyZWF0c1NI
QTFDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKG1fY29uZmlndXJhdGlvbi0+dHJlYXRzU0hBMVNpZ25l
ZENlcnRpZmljYXRlc0FzSW5zZWN1cmUoKSkKQEAgLTI4NjYsOCArMjg2Niw4IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2wKICAgICBPcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiBkYXRhOwogICAgIGlmIChwb2xpY2llcykgewogICAgICAgICBkYXRhID0gcG9s
aWNpZXMtPmRhdGEoKTsKLSAgICAgICAgaWYgKHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCkg
JiYgJnBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3
ZWJzaXRlRGF0YVN0b3JlLnB0cigpKSB7Ci0gICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0g
cG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAg
ICBpZiAocG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKSAmJiBwb2xpY2llcy0+d2Vic2l0ZURh
dGFTdG9yZSgpICE9IHdlYnNpdGVEYXRhU3RvcmUucHRyKCkpIHsKKyAgICAgICAgICAgIHdlYnNp
dGVEYXRhU3RvcmUgPSAqcG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKTsKICAgICAgICAgICAg
IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50OjpZZXM7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyNTAxNDgpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw4ICsy
NDQsOCBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jCiAgICAgICAg
IFByb2Nlc3M6OnNldElkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI6OmdlbmVy
YXRlKCkpOwogICAgIH0pOwogCi0gICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUgJiYgQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCi0gICAgICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgp
OworICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlICYmIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpKQorICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUg
PSBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKIAogICAgIGZv
ciAoYXV0byYgc2NoZW1lIDogbV9jb25maWd1cmF0aW9uLT5hbHdheXNSZXZhbGlkYXRlZFVSTFNj
aGVtZXMoKSkKICAgICAgICAgbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2YWxpZGF0ZWQu
YWRkKHNjaGVtZSk7CkBAIC00ODMsMTMgKzQ4MywxMyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBX
ZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMg
cGFyYW1ldGVyczsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKLSAgICAgICAgcGFy
YW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZW5kaW5nQ29va2llcyA9IGNvcHlU
b1ZlY3RvcihtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZW5kaW5nQ29v
a2llcygpKTsKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
Y2xlYXJQZW5kaW5nQ29va2llcygpOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fd2Vic2l0ZURhdGFT
dG9yZS0+cGVuZGluZ0Nvb2tpZXMoKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+Y2xl
YXJQZW5kaW5nQ29va2llcygpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5z
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKLSAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyID0gbV93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRh
cnlJZGVudGlmaWVyKCk7CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFt
ZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllciA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyKCk7CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMu
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRp
ZmllciA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyKCk7CiAjZW5kaWYKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkubmV0d29ya2luZ0hhc0JlZ3VuKCk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9y
ZS0+bmV0d29ya2luZ0hhc0JlZ3VuKCk7CiAgICAgfQogCiAgICAgcGFyYW1ldGVycy5jYWNoZU1v
ZGVsID0gTGVnYWN5R2xvYmFsU2V0dGluZ3M6OnNpbmdsZXRvbigpLmNhY2hlTW9kZWwoKTsKQEAg
LTU0MSw4ICs1NDEsOCBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5z
CiAgICAgLy8gKioqKioqKioqCiAgICAgLy8gSU1QT1JUQU5UOiBEbyBub3QgY2hhbmdlIHRoZSBk
aXJlY3Rvcnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRhdGFiYXNlcyBvbiBkaXNrIHdpdGhvdXQg
Zmlyc3QgY29uc3VsdGluZyBhIHJldmlld2VyIGZyb20gQXBwbGUgKDxyZGFyOi8vcHJvYmxlbS8x
NzQ1NDcxMj4pCiAgICAgLy8gKioqKioqKioqCi0gICAgaWYgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpKQotICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHRE
YXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1l
dGVycygpLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKKyAgICBpZiAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCisgICAgICAgIHBhcmFtZXRlcnMu
ZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0gV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCktPnBhcmFtZXRlcnMoKS5p
bmRleGVkRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmRlZmF1
bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkp
IHsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFi
YXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4
ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CkBAIC01NTIsOSArNTUyLDkgQEAg
TmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIHBhcmFt
ZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeSgpOworICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVkU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAgIGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkgPSAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgICAgICBwYXJhbWV0ZXJzLnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0
ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIHBhcmFtZXRlcnMuc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBpZiAo
IW1fc2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlLmlzRW1wdHkoKSkKQEAgLTU2MywxNiAr
NTYzLDE2IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICBw
YXJhbWV0ZXJzLnNob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVs
YXkgPSBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXk7
CiAjZW5kaWYKIAotICAgIGF1dG8gbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0
YVN0b3JlID8gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb2x2ZWRM
b2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IG51bGxTdHJpbmcoKTsKKyAgICBhdXRvIGxvY2FsU3Rv
cmFnZURpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/IG1fd2Vic2l0ZURhdGFTdG9yZS0+
cmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IG51bGxTdHJpbmcoKTsKICAgICBpZiAo
IWxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0g
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Cisg
ICAgICAgIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERh
dGFTdG9yZVBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGly
ZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURp
cmVjdG9yeShsb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9y
ZVBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAg
IGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5y
ZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKKyAgICAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVz
b2x2ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAgICAgaWYgKHBhcmFtZXRl
cnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAgICAgICBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogCiAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMu
ZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCkBAIC01OTgsMTcgKzU5OCwxNyBAQCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgfSBlbHNlIGlmIChtX3dlYnNp
dGVEYXRhU3RvcmUpIHsKICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1f
d2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgICAgICBlbmFibGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygpOworICAgICAgICBlbmFi
bGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0YVN0
b3JlLT5oYXNTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKCk7CiAjZW5kaWYKICAgICAgICAgaWYg
KGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKLSAgICAgICAgICAgIGF1dG8gbmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKKyAgICAgICAgICAgIGF1
dG8gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5wYXJhbWV0
ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzOwogICAgICAgICAgICAgc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNsdWRlTG9jYWxo
b3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgICAgICAgICAgZW5hYmxlUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5lbmFibGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAgICAgICAgICAgbWFudWFsUHJldmFs
ZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKLSAgICAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVvdGEgPSBt
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZXJPcmlnaW5TdG9yYWdlUXVv
dGEoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJU
aGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOworICAgICAgICBw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90
YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdp
blN0b3JhZ2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyVGhpcmRQYXJ0eU9yaWdpblN0
b3JhZ2VRdW90YSgpOwogICAgIH0KIAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNjkxLDggKzY5MSw4IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnQKIAogICAgIGlmICghd2Vi
c2l0ZURhdGFTdG9yZSkgewogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAg
ICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dERhdGFTdG9yZSgpLnB0cigpOwotICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gJm1fd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICAgICAgbV93ZWJzaXRlRGF0
YVN0b3JlID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRy
KCk7CisgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7
CiAgICAgfQogCiAgICAgUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEIHJlZ2lzdHJhYmxl
RG9tYWluV2l0aFNlc3Npb25JRCB7IFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVnaXN0cmFibGVEb21h
aW4gfSwgc2Vzc2lvbklEIH07CkBAIC04MDMsNyArODAzLDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc1Bvb2w6OgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BF
KQogICAgIC8vIEluIHBsYXRmb3JtcyB1c2luZyBCdWJibGV3cmFwIGZvciBzYW5kYm94aW5nLCBw
cmV3YXJtZWQgcHJvY2VzcyBpcyBsYXVuY2hlZCB1c2luZyB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJp
bWFyeSBXZWJzaXRlRGF0YVN0b3JlLAogICAgIC8vIHNvIHdlIGRvbid0IHVzZSBpdCBpbiBjYXNl
IG9mIHVzaW5nIGEgZGlmZmVyZW50IFdlYnNpdGVEYXRhU3RvcmUuCi0gICAgaWYgKG1fc2FuZGJv
eEVuYWJsZWQgJiYgbV93ZWJzaXRlRGF0YVN0b3JlICYmICZtX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURhdGFTdG9yZSkKKyAgICBpZiAobV9zYW5kYm94
RW5hYmxlZCAmJiBtX3dlYnNpdGVEYXRhU3RvcmUgJiYgbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgp
ICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgog
CkBAIC0xMDgwLDcgKzEwODAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkRmlu
aXNoTGF1CiAgICAgbV9jb25uZWN0aW9uQ2xpZW50LmRpZENyZWF0ZUNvbm5lY3Rpb24odGhpcywg
cHJvY2Vzcy0+d2ViQ29ubmVjdGlvbigpKTsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUp
Ci0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmRpZENyZWF0
ZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+ZGlkQ3JlYXRl
TmV0d29ya1Byb2Nlc3MoKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQpAQCAtMTE1OSw3ICsxMTU5LDcgQEAgV2Vi
UHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6cHJvY2VzcwogICAgICAgICByZXR1cm4gY3Jl
YXRlTmV3V2ViUHJvY2Vzcygmd2Vic2l0ZURhdGFTdG9yZSk7CiAKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBib29sIG11c3RNYXRjaERhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpICYmICZ3ZWJzaXRlRGF0YVN0b3JlICE9ICZBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwor
ICAgIGJvb2wgbXVzdE1hdGNoRGF0YVN0b3JlID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CiAjZWxzZQogICAgIGJv
b2wgbXVzdE1hdGNoRGF0YVN0b3JlID0gZmFsc2U7CiAjZW5kaWYKQEAgLTExOTMsNyArMTE5Myw3
IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUKICAgICAgICAgLy8g
V2UgdHJ5IHRvIGF2b2lkIGNyZWF0aW5nIHRoZSBkZWZhdWx0IGRhdGEgc3RvcmUgYXMgbG9uZyBh
cyBwb3NzaWJsZS4KICAgICAgICAgLy8gQnV0IGlmIHRoZXJlIGlzIGFuIGF0dGVtcHQgdG8gY3Jl
YXRlIGEgd2ViIHBhZ2Ugd2l0aG91dCBhbnkgc3BlY2lmaWVkIGRhdGEgc3RvcmUsIHRoZW4gd2Ug
aGF2ZSB0byBjcmVhdGUgaXQuCiAgICAgICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQotICAg
ICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlKCkucHRyKCk7CisgICAgICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKIAogICAg
ICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0V2Vic2l0ZURhdGFTdG9yZShtX3dlYnNpdGVEYXRh
U3RvcmUuZ2V0KCkpOwogICAgIH0KQEAgLTEyMDQsOCArMTIwNCw4IEBAIFJlZjxXZWJQYWdlUHJv
eHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUKICAgICAgICAgLy8gU2hhcmluZyBwcm9jZXNzZXMs
IGUuZy4gd2hlbiBjcmVhdGluZyB0aGUgcGFnZSB2aWEgd2luZG93Lm9wZW4oKS4KICAgICAgICAg
cHJvY2VzcyA9ICZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKS0+ZW5zdXJlUnVubmlu
Z1Byb2Nlc3MoKTsKICAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgc2V2ZXJhbCBXZWJzaXRl
RGF0YVN0b3JlcyBzaGFyaW5nIGEgc2luZ2xlIHByb2Nlc3MuCi0gICAgICAgIEFTU0VSVChwcm9j
ZXNzLmdldCgpID09IG1fZHVtbXlQcm9jZXNzUHJveHkgfHwgJnBhZ2VDb25maWd1cmF0aW9uLT53
ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmcHJvY2Vzcy0+d2Vic2l0
ZURhdGFTdG9yZSgpKTsKLSAgICAgICAgQVNTRVJUKCZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRl
ZFBhZ2UoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09ICZwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0
ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBBU1NFUlQocHJvY2Vz
cy5nZXQoKSA9PSBtX2R1bW15UHJvY2Vzc1Byb3h5IHx8IHBhZ2VDb25maWd1cmF0aW9uLT53ZWJz
aXRlRGF0YVN0b3JlKCkgPT0gJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAg
IEFTU0VSVCgmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPndlYnNpdGVEYXRhU3Rv
cmUoKSA9PSBwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKICAgICB9IGVs
c2UgaWYgKCFtX2lzRGVsYXllZFdlYlByb2Nlc3NMYXVuY2hEaXNhYmxlZCkgewogICAgICAgICAv
LyBJbiB0aGUgY29tbW9uIGNhc2UsIHdlIGRlbGF5IHByb2Nlc3MgbGF1bmNoIHVudGlsIHNvbWV0
aGluZyBpcyBhY3R1YWxseSBsb2FkZWQgaW4gdGhlIHBhZ2UuCiAgICAgICAgIGlmICghbV9kdW1t
eVByb2Nlc3NQcm94eSkgewpAQCAtMTIxNSw3ICsxMjE1LDcgQEAgUmVmPFdlYlBhZ2VQcm94eT4g
V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZQogICAgICAgICB9CiAgICAgICAgIHByb2Nlc3MgPSBtX2R1
bW15UHJvY2Vzc1Byb3h5OwogICAgIH0gZWxzZQotICAgICAgICBwcm9jZXNzID0gJnByb2Nlc3NG
b3JSZWdpc3RyYWJsZURvbWFpbihwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgp
LT53ZWJzaXRlRGF0YVN0b3JlKCksIG51bGxwdHIsIHsgfSk7CisgICAgICAgIHByb2Nlc3MgPSAm
cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKCpwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURh
dGFTdG9yZSgpLCBudWxscHRyLCB7IH0pOwogCiAgICAgQVNTRVJUKHByb2Nlc3MpOwogCkBAIC0x
MjY1LDcgKzEyNjUsNyBAQCBib29sIFdlYlByb2Nlc3NQb29sOjptYXlIYXZlUmVnaXN0ZXJlZFNl
CiAKICAgICBTdHJpbmcgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHN0b3Jl
LnJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAgIGlmIChz
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeSgpOworICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
ID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlv
bigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CiAKICAgICByZXR1cm4g
bV9tYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzLmVuc3VyZShzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5LCBbJl0gewogICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIGNv
bXB1dGF0aW9uIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI1MDE0OCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4
LDYgQEAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCi0jaW5jbHVkZSAiQVBJ
V2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNYXAuaCIKICNpbmNs
dWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJIaWRkZW5QYWdlVGhyb3R0bGluZ0F1
dG9JbmNyZWFzZXNDb3VudGVyLmgiCkBAIC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSAiV2ViQ29u
dGV4dENvbm5lY3Rpb25DbGllbnQuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9y
ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBAIC0yMDQsOCArMjA0LDggQEAgcHVibGljOgogICAg
IC8vIERpc2Nvbm5lY3QgdGhlIHByb2Nlc3MgZnJvbSB0aGUgY29udGV4dC4KICAgICB2b2lkIGRp
c2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSopOwogCi0gICAgQVBJOjpXZWJzaXRlRGF0
YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0
b3JlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRQcmltYXJ5RGF0YVN0b3JlKEFQSTo6V2Vic2l0ZURh
dGFTdG9yZSYgZGF0YVN0b3JlKSB7IG1fd2Vic2l0ZURhdGFTdG9yZSA9ICZkYXRhU3RvcmU7IH0K
KyAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7
IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFByaW1hcnlE
YXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpIHsgbV93ZWJzaXRl
RGF0YVN0b3JlID0gJmRhdGFTdG9yZTsgfQogCiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRl
V2ViUGFnZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogCkBA
IC02NzcsNyArNjc3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWVtb3J5U2FtcGxlckVuYWJs
ZWQgeyBmYWxzZSB9OwogICAgIGRvdWJsZSBtX21lbW9yeVNhbXBsZXJJbnRlcnZhbCB7IDE0MDAu
MCB9OwogCi0gICAgUmVmUHRyPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0
b3JlOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFT
dG9yZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgUmVmUHRyPFdlYkNvbnRl
eHRTdXBwbGVtZW50PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IFdlYkNvbnRleHRTdXBwbGVtZW50
TWFwOwogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVudHM7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNw
cAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKIAotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRh
U3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Q29va2llU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Lmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3Jl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29r
aWVTdG9yZS5oCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSFRUUENvb2tpZVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAg
ZW51bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludAogbmFtZXNwYWNlIEFQSSB7
CiAKIGNsYXNzIEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyOwotY2xhc3MgV2Vic2l0
ZURhdGFTdG9yZTsKIAogY2xhc3MgSFRUUENvb2tpZVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVj
dEltcGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+IHsKIHB1YmxpYzoKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9u
LmNwcAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVBhZ2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEyICsxNTEsMTIg
QEAgdm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0VmlzaXRlZExpbmtTdAogICAgIG1fdmlzaXRl
ZExpbmtTdG9yZSA9IHZpc2l0ZWRMaW5rU3RvcmU7CiB9CiAKLUFQSTo6V2Vic2l0ZURhdGFTdG9y
ZSogUGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQorV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlKiBQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSgpCiB7CiAgICAg
cmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsKIH0KIAotdm9pZCBQYWdlQ29uZmlndXJh
dGlvbjo6c2V0V2Vic2l0ZURhdGFTdG9yZShBUEk6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVE
YXRhU3RvcmUpCit2b2lkIFBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBtX3dlYnNp
dGVEYXRhU3RvcmUgPSB3ZWJzaXRlRGF0YVN0b3JlOwogfQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI1
MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTIgQEAgY2xhc3MgV2ViUHJlZmVyZW5j
ZXM7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIGNsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXI7CiBj
bGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKK2NsYXNzIFdlYnNpdGVEYXRhU3Rv
cmU7CiB9CiAKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBBcHBsaWNhdGlvbk1hbmlmZXN0Owot
Y2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIGNsYXNzIFdlYnNpdGVQb2xpY2llczsKIAogY2xhc3Mg
UGFnZUNvbmZpZ3VyYXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlBhZ2VD
b25maWd1cmF0aW9uPiB7CkBAIC04NCw4ICs4NCw4IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OlZp
c2l0ZWRMaW5rU3RvcmUqIHZpc2l0ZWRMaW5rU3RvcmUoKTsKICAgICB2b2lkIHNldFZpc2l0ZWRM
aW5rU3RvcmUoV2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlKik7CiAKLSAgICBXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdl
YnNpdGVEYXRhU3RvcmUqKTsKKyAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVE
YXRhU3RvcmUoKTsKKyAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlKik7CiAKICAgICBXZWJzaXRlUG9saWNpZXMqIGRlZmF1bHRXZWJzaXRlUG9saWNp
ZXMoKSBjb25zdDsKICAgICB2b2lkIHNldERlZmF1bHRXZWJzaXRlUG9saWNpZXMoV2Vic2l0ZVBv
bGljaWVzKik7CkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViS2l0
OjpXZWJQYWdlUHJveHk+IG1fcmVsYXRlZFBhZ2U7CiAgICAgUmVmUHRyPFdlYktpdDo6VmlzaXRl
ZExpbmtTdG9yZT4gbV92aXNpdGVkTGlua1N0b3JlOwogCi0gICAgUmVmUHRyPFdlYnNpdGVEYXRh
U3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAgICAgUmVmUHRyPFdlYnNpdGVQb2xpY2llcz4g
bV9kZWZhdWx0V2Vic2l0ZVBvbGljaWVzOwogCiAgICAgYm9vbCBtX3RyZWF0c1NIQTFTaWduZWRD
ZXJ0aWZpY2F0ZXNBc0luc2VjdXJlIHsgdHJ1ZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5j
cHAJKHJldmlzaW9uIDI1MDE0OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKIG5hbWVz
cGFjZSBBUEkgewogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyNTAxNTApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAJKG5vbmV4aXN0ZW50KQpA
QCAtMSwxNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgIldlYktpdDJJbml0
aWFsaXplLmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgotCi1uYW1lc3BhY2UgQVBJ
IHsKLQotc3RhdGljIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiYgZ2xvYmFsRGVmYXVsdERhdGFT
dG9yZSgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxXZWJzaXRlRGF0YVN0
b3JlPj4gZ2xvYmFsRGVmYXVsdERhdGFTdG9yZTsKLSAgICByZXR1cm4gZ2xvYmFsRGVmYXVsdERh
dGFTdG9yZS5nZXQoKTsKLX0KLQotCi1SZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCi17Ci0gICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0
MigpOwotCi0gICAgYXV0byYgc3RvcmUgPSBnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCk7Ci0gICAg
aWYgKCFzdG9yZSkKLSAgICAgICAgc3RvcmUgPSBhZG9wdFJlZihuZXcgV2Vic2l0ZURhdGFTdG9y
ZShkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpKSk7Ci0KLSAgICByZXR1cm4gKnN0b3JlOwotfQotCi12b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OmRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCkKLXsKLSAgICBnbG9i
YWxEZWZhdWx0RGF0YVN0b3JlKCkgPSBudWxscHRyOwotfQotCi1ib29sIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKQotewotICAgIHJldHVybiAhIWdsb2JhbERlZmF1
bHREYXRhU3RvcmUoKTsKLX0KLQotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3Rv
cmU6OmNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKQotewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUpOwotfQotCi1SZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vi
c2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFTdG9yZShXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQpKTsKLX0KLQotV2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0
ZURhdGFTdG9yZSgpCi0gICAgOiBtX3dlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50KCkpCi17Ci19Ci0KLVdlYnNpdGVEYXRhU3RvcmU6
OldlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24+JiYgY29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogbV93
ZWJzaXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUo
Y29uZmlndXJhdGlvbiksIHNlc3Npb25JRCkpCi17Ci19Ci0KLVdlYnNpdGVEYXRhU3RvcmU6On5X
ZWJzaXRlRGF0YVN0b3JlKCkKLXsKLX0KLQotSFRUUENvb2tpZVN0b3JlJiBXZWJzaXRlRGF0YVN0
b3JlOjpodHRwQ29va2llU3RvcmUoKQotewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUt
PmNvb2tpZVN0b3JlKCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OiBpbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9y
ZS0+Y29uZmlndXJhdGlvbigpLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci19Ci0KLWJv
b2wgV2Vic2l0ZURhdGFTdG9yZTo6aXNQZXJzaXN0ZW50KCkKLXsKLSAgICByZXR1cm4gbV93ZWJz
aXRlRGF0YVN0b3JlLT5pc1BlcnNpc3RlbnQoKTsKLX0KLQotYm9vbCBXZWJzaXRlRGF0YVN0b3Jl
OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
d2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKLX0KLQot
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChi
b29sIGVuYWJsZWQpCi17Ci0gICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKLX0KLQotYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV93
ZWJzaXRlRGF0YVN0b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKCk7Ci19Ci0K
LXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShib29sIGVuYWJsZWQpCi17Ci0gICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGVidWdNb2RlKGVuYWJsZWQpOwotfQotCi0jaWYgIVBMQVRGT1JNKENPQ09B
KQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3Rv
cnkoKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTYzNjkgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTYzNzAKLSAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKLX0KLQotV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGly
ZWN0b3J5KCkKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgIHJldHVybiBXVEY6OlN0
cmluZygpOwotfQotI2VuZGlmCi0KLSNpZiAhVVNFKEdMSUIpCi1XVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKLXsK
LSAgICAvLyBOb3QgaW1wbGVtZW50ZWQuCi0gICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Ci19Ci0j
ZW5kaWYKLQotUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKLXsKLSAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpj
cmVhdGUoKTsKLQotICAgIGNvbmZpZ3VyYXRpb24tPnNldFBlcnNpc3RlbnQodHJ1ZSk7Ci0KLSAg
ICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGRlZmF1bHRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0
aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkZpbGVzIik7Ci0gICAgY29uZmlndXJh
dGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1
bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFD
YWNoZURpcmVjdG9yeShkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1
cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGRlZmF1bHRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOwotICAgIGNv
bmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9u
LT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkoZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7Ci0gICAg
Y29uZmlndXJhdGlvbi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1
bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0KLSAgICBjb25maWd1cmF0
aW9uLT5zZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShkZWZhdWx0SmF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSk7Ci0KLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yZS5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBBUEkgewotCi1jbGFzcyBXZWJzaXRlRGF0YVN0b3JlIGZp
bmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpXZWJzaXRlRGF0YVN0b3JlPiB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBkZWZhdWx0RGF0YVN0
b3JlKCk7Ci0gICAgc3RhdGljIGJvb2wgZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpOwotICAgIHN0
YXRpYyB2b2lkIGRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7Ci0KLSAgICBzdGF0
aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbj4mJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKLSAgICBzdGF0aWMg
UmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKLQot
ICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24+JiYsIFBBTDo6U2Vzc2lvbklEKTsKLSAgICB2aXJ0dWFsIH5XZWJzaXRl
RGF0YVN0b3JlKCk7Ci0KLSAgICBib29sIGlzUGVyc2lzdGVudCgpOwotCi0gICAgYm9vbCByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0OwotICAgIHZvaWQgc2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCk7Ci0gICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGVidWdNb2RlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGVidWdNb2RlKGJvb2wpOwotCi0gICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRl
RGF0YVN0b3JlKCkgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9Ci0gICAgSFRU
UENvb2tpZVN0b3JlJiBodHRwQ29va2llU3RvcmUoKTsKLQotICAgIFdURjo6U3RyaW5nIGluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0KLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVs
dEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVm
YXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZh
dWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1
bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZh
dWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6
OlN0cmluZyBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6
U3RyaW5nIGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAg
ICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0j
aWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRIU1RTRGlyZWN0b3J5
KCk7Ci0jZW5kaWYKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFT
Y3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7Ci0KLSAgICBzdGF0aWMgUmVmPFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0
aW9uKCk7Ci0KLXByaXZhdGU6Ci0gICAgZW51bSBTaG91bGRDcmVhdGVEaXJlY3RvcnkgeyBDcmVh
dGVEaXJlY3RvcnksIERvbnRDcmVhdGVEaXJlY3RvcnkgfTsKLQotICAgIFdlYnNpdGVEYXRhU3Rv
cmUoKTsKLQotICAgIHN0YXRpYyBXVEY6OlN0cmluZyB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBTaG91bGRDcmVh
dGVEaXJlY3RvcnkgPSBDcmVhdGVEaXJlY3RvcnkpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBj
YWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYg
ZGlyZWN0b3J5TmFtZSk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlO
YW1lKTsKLQotICAgIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFT
dG9yZTsKLX07Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlUG9saWNpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsMTQgKzI2LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJV2Vi
c2l0ZVBvbGljaWVzLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEu
aCIKIAogbmFtZXNwYWNlIEFQSSB7CiAKIFdlYnNpdGVQb2xpY2llczo6V2Vic2l0ZVBvbGljaWVz
KCkgPSBkZWZhdWx0OwogCi1XZWJzaXRlUG9saWNpZXM6OldlYnNpdGVQb2xpY2llcyhib29sIGNv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1
aXJrPiBhbGxvd2VkQXV0b3BsYXlRdWlya3MsIFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5
IGF1dG9wbGF5UG9saWN5LCBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPiYmIGxlZ2Fj
eUN1c3RvbUhlYWRlckZpZWxkcywgVmVjdG9yPFdlYkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4m
JiBjdXN0b21IZWFkZXJGaWVsZHMsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9s
aWN5LCBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJiB3ZWJzaXRlRGF0YVN0b3JlKQorV2Vic2l0
ZVBvbGljaWVzOjpXZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBP
cHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxsb3dlZEF1dG9wbGF5UXVp
cmtzLCBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeSBhdXRvcGxheVBvbGljeSwgVmVjdG9y
PFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiBsZWdhY3lDdXN0b21IZWFkZXJGaWVsZHMsIFZl
Y3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+JiYgY3VzdG9tSGVhZGVyRmllbGRzLCBX
ZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSBwb3BVcFBvbGljeSwgUmVmUHRyPFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZT4mJiB3ZWJzaXRlRGF0YVN0b3JlKQogICAgIDogbV9jb250ZW50QmxvY2tl
cnNFbmFibGVkKGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCiAgICAgLCBtX2FsbG93ZWRBdXRvcGxh
eVF1aXJrcyhhbGxvd2VkQXV0b3BsYXlRdWlya3MpCiAgICAgLCBtX2F1dG9wbGF5UG9saWN5KGF1
dG9wbGF5UG9saWN5KQpAQCAtODQsNyArODQsNyBAQCBXZWJzaXRlUG9saWNpZXM6On5XZWJzaXRl
UG9saWNpZXMoKQogewogfQogCi12b2lkIFdlYnNpdGVQb2xpY2llczo6c2V0V2Vic2l0ZURhdGFT
dG9yZShSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJiB3ZWJzaXRlRGF0YVN0b3JlKQordm9pZCBX
ZWJzaXRlUG9saWNpZXM6OnNldFdlYnNpdGVEYXRhU3RvcmUoUmVmUHRyPFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZT4mJiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIG1fd2Vic2l0ZURhdGFTdG9y
ZSA9IFdURk1vdmUod2Vic2l0ZURhdGFTdG9yZSk7CiB9CkBAIC0xMDgsNyArMTA4LDcgQEAgV2Vi
S2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIFdlYnNpdGVQb2xpYwogI2VuZGlmCiAgICAgICAgIFdU
Rk1vdmUoY3VzdG9tSGVhZGVyRmllbGRzKSwKICAgICAgICAgcG9wVXBQb2xpY3koKSwKLSAgICAg
ICAgbV93ZWJzaXRlRGF0YVN0b3JlID8gT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycz4geyBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wYXJh
bWV0ZXJzKCkgfSA6IFdURjo6bnVsbG9wdCwKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID8g
T3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycz4geyBtX3dlYnNpdGVE
YXRhU3RvcmUtPnBhcmFtZXRlcnMoKSB9IDogV1RGOjpudWxsb3B0LAogICAgICAgICBtX2N1c3Rv
bVVzZXJBZ2VudCwKICAgICAgICAgbV9jdXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3Bl
Y2lmaWNRdWlya3MsCiAgICAgICAgIG1fY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm0sCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCShy
ZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZVBvbGljaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEyICs0MiwxMSBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHN0cnVjdCBXZWJzaXRlUG9saWNpZXNEYXRhOworY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKIH0KIAogbmFtZXNwYWNlIEFQSSB7CiAKLWNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7
Ci0KIGNsYXNzIFdlYnNpdGVQb2xpY2llcyBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6OldlYnNpdGVQb2xpY2llcz4gewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8V2Vic2l0ZVBvbGljaWVzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YnNpdGVQb2xpY2llcyk7IH0KQEAgLTc5LDggKzc4LDggQEAgcHVibGljOgogICAgIFdlYktpdDo6
V2Vic2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9wb3BVcFBv
bGljeTsgfQogICAgIHZvaWQgc2V0UG9wVXBQb2xpY3koV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xp
Y3kgcG9saWN5KSB7IG1fcG9wVXBQb2xpY3kgPSBwb2xpY3k7IH0KIAotICAgIFdlYnNpdGVEYXRh
U3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3Rv
cmUuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoUmVmUHRyPFdlYnNpdGVE
YXRhU3RvcmU+JiYpOworICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFT
dG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQorICAgIHZv
aWQgc2V0V2Vic2l0ZURhdGFTdG9yZShSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiYm
KTsKIAogICAgIFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSBkYXRhKCk7CiAKQEAgLTExOCw3
ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZl
clF1aXJrKGJvb2wgYWxsb3cpIHsgbV9hbGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZlclF1aXJrID0g
YWxsb3c7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4sIFdl
YktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5LCBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZp
ZWxkPiYmLCBWZWN0b3I8V2ViQ29yZTo6Q3VzdG9tSGVhZGVyRmllbGRzPiYmLCBXZWJLaXQ6Oldl
YnNpdGVQb3BVcFBvbGljeSwgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYpOworICAgIFdlYnNp
dGVQb2xpY2llcyhib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6
OldlYnNpdGVBdXRvcGxheVF1aXJrPiwgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3ksIFZl
Y3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYsIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21I
ZWFkZXJGaWVsZHM+JiYsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5LCBSZWZQdHI8V2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlPiYmKTsKIAogICAgIGJvb2wgbV9jb250ZW50QmxvY2tlcnNFbmFi
bGVkIHsgdHJ1ZSB9OwogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJr
PiBtX2FsbG93ZWRBdXRvcGxheVF1aXJrczsKQEAgLTEyOSw3ICsxMjgsNyBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+IG1fbGVnYWN5Q3VzdG9tSGVhZGVy
RmllbGRzOwogICAgIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+IG1fY3VzdG9t
SGVhZGVyRmllbGRzOwogICAgIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IG1fcG9wVXBQb2xp
Y3kgeyBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeTo6RGVmYXVsdCB9OwotICAgIFJlZlB0cjxX
ZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwogICAgIFdURjo6U3RyaW5nIG1f
Y3VzdG9tVXNlckFnZW50OwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tSmF2YVNjcmlwdFVzZXJB
Z2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzOwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tTmF2aWdh
dG9yUGxhdGZvcm07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNh
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNh
c3QuaAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDYgQEAgY2xhc3MgUGFnZUNv
bmZpZ3VyYXRpb247CiBjbGFzcyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247CiBjbGFzcyBTZXNz
aW9uU3RhdGU7CiBjbGFzcyBVc2VyU2NyaXB0OwotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIGNs
YXNzIFdlYnNpdGVQb2xpY2llczsKIGNsYXNzIFdpbmRvd0ZlYXR1cmVzOwogfQpAQCAtMTEzLDYg
KzExMiw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOwogY2xhc3Mg
V2ViVGV4dENoZWNrZXI7CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIGNs
YXNzIFdlYlZpZXdwb3J0QXR0cmlidXRlczsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBjbGFz
cyBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKIAogV0tfQUREX0FQSV9NQVBQSU5HKFdL
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkp
CkBAIC0xNjksNyArMTY5LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlck1lZGlhUGVybWlz
c2lvbgogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYs
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tV
c2VyU2NyaXB0UmVmLCBBUEk6OlVzZXJTY3JpcHQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tWaWV3
cG9ydEF0dHJpYnV0ZXNSZWYsIFdlYlZpZXdwb3J0QXR0cmlidXRlcykKLVdLX0FERF9BUElfTUFQ
UElORyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSkKK1dLX0FE
RF9BUElfTUFQUElORyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZSkKIFdLX0FERF9BUElfTUFQUElORyhXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
UmVmLCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKQogV0tfQUREX0FQSV9N
QVBQSU5HKFdLV2Vic2l0ZVBvbGljaWVzUmVmLCBBUEk6OldlYnNpdGVQb2xpY2llcykKIFdLX0FE
RF9BUElfTUFQUElORyhXS1dpbmRvd0ZlYXR1cmVzUmVmLCBBUEk6OldpbmRvd0ZlYXR1cmVzKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZp
c2lvbiAyNTAxNDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjEsMTIgKzMyMSwxMiBAQCB2b2lkIFdLQ29udGV4dENs
ZWFyVmlzaXRlZExpbmtzKFdLQ29udGV4CiAKIHZvaWQgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbChX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiB7Ci0gICAg
TGVnYWN5R2xvYmFsU2V0dGluZ3M6OnNpbmdsZXRvbigpLnNldENhY2hlTW9kZWwoV2ViS2l0Ojp0
b0NhY2hlTW9kZWwoY2FjaGVNb2RlbCkpOworICAgIFdlYktpdDo6TGVnYWN5R2xvYmFsU2V0dGlu
Z3M6OnNpbmdsZXRvbigpLnNldENhY2hlTW9kZWwoV2ViS2l0Ojp0b0NhY2hlTW9kZWwoY2FjaGVN
b2RlbCkpOwogfQogCiBXS0NhY2hlTW9kZWwgV0tDb250ZXh0R2V0Q2FjaGVNb2RlbChXS0NvbnRl
eHRSZWYgY29udGV4dFJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShMZWdhY3lHbG9i
YWxTZXR0aW5nczo6c2luZ2xldG9uKCkuY2FjaGVNb2RlbCgpKTsKKyAgICByZXR1cm4gV2ViS2l0
Ojp0b0FQSShXZWJLaXQ6OkxlZ2FjeUdsb2JhbFNldHRpbmdzOjpzaW5nbGV0b24oKS5jYWNoZU1v
ZGVsKCkpOwogfQogCiB2b2lkIFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJPZlByb2Nlc3NlcyhX
S0NvbnRleHRSZWYsIHVuc2lnbmVkKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCShyZXZpc2lvbiAyNTAx
MjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVu
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCIKIAotI2luY2x1ZGUgIkFQ
SVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bv
b2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZVBv
bGljaWVzRGF0YS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwCShyZXZpc2lvbiAyNTAxNTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBA
CiAjaW5jbHVkZSAiV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgiCiAKICNpbmNsdWRlICJBUElBcnJh
eS5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJBUElIVFRQ
Q29va2llU3RvcmUuaCIKICNpbmNsdWRlICJNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uLmgiCiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCkBAIC00MSwyOSArNDEsMzAgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0
YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRlICJXZWJz
aXRlRGF0YVJlY29yZC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBXS1R5cGVJRCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRU
eXBlSUQoKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpBUElUeXBlKTsKIH0KIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURh
dGFTdG9yZUdldERlZmF1bHREYXRhU3RvcmUoKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJ
KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRh
U3RvcmUoKS5wdHIoKSk7CiB9CiAKIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1dlYnNpdGVEYXRh
U3RvcmVDcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkKIHsKLSAgICByZXR1cm4gV2ViS2l0
Ojp0b0FQSSgmQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0
b3JlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50KCkubGVha1JlZigpKTsKIH0KIAogV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNyZWF0ZVdpdGhDb25maWd1cmF0
aW9uKFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbikKIHsK
ICAgICBhdXRvIHNlc3Npb25JRCA9IFdlYktpdDo6dG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5pc1Bl
cnNpc3RlbnQoKSA/IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZVBlcnNpc3RlbnRTZXNzaW9uSUQo
KSA6IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25JRCgpOwotICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZSgqV2ViS2l0
Ojp0b0ltcGwoY29uZmlndXJhdGlvbiksIHNlc3Npb25JRCkubGVha1JlZigpKTsKKyAgICByZXR1
cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoKldlYktp
dDo6dG9JbXBsKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQpLmxlYWtSZWYoKSk7CiB9CiAKIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUpCkBAIC04MywxMyAr
ODQsMTMgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdAogCiBXS0hU
VFBDb29raWVTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29va2llU3RvcmUoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0
b0FQSSgmV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aHR0cENvb2tpZVN0b3JlKCkpOwor
ICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5j
b29raWVTdG9yZSgpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGVidWdNb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wgZW5hYmxlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVidWdNb2RlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZShlbmFibGUsIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEZWJ1Z01vZGUoZW5hYmxlLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMTAwLDcg
KzEwMSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3QKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291
cmNlRm9yRGVidWdNb2RlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3Ry
aW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NE
ZWJ1Z01vZGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9u
SGFuZGxlcl0geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFByZXZhbGVu
dFJlc291cmNlRm9yRGVidWdNb2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTExMCw3ICsxMTEsNyBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0CiB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0U2VlbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0xhc3RTZWVuRnVuY3Rpb24gY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TGFzdFNlZW4o
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vj
b25kcyB9LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICBXZWJLaXQ6OnRvSW1w
bChkYXRhU3RvcmVSZWYpLT5zZXRMYXN0U2VlbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjb21wbGV0aW9u
SGFuZGxlcl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsK
ICNlbHNlCkBAIC0xMjEsNyArMTIyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzTGFzdAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYg
aG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0
b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwor
ICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KTsKIAogICAgIGlmICh2YWx1ZSkKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS5zZXRQcmV2YWxl
bnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ByZXYKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlRnVuY3Rp
b24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUg
PSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKTsKIAogICAgIGlmICh2YWx1ZSkKICAgICAg
ICAgd2Vic2l0ZURhdGFTdG9yZS5zZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRs
ZXJdIHsKQEAgLTE1Nyw3ICsxNTgsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NWZXJ5CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdL
V2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRnVuY3Rpb24gY2FsbGJh
Y2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZHVtcFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoW2NvbnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZHVtcFJl
c291cmNlTG9hZFN0YXRpc3RpY3MoW2NvbnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSB7CiAgICAgICAgIGNhbGxiYWNrKFdlYktpdDo6dG9BUEko
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy5pbXBsKCkpLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNl
CkBAIC0xNjgsNyArMTY5LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVEdW1wUmVzb3VyY2VM
b2FkUwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+
c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSkg
eworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzUHJldmFsZW50UmVzb3VyY2Uo
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2Fs
bGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSkgewogICAgICAgICBjYWxsYmFjayhpc1By
ZXZhbGVudFJlc291cmNlLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0xNzksNyArMTgw
LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YQogdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlv
biBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5pc1ZlcnlQ
cmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmco
KSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSkgewor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzVmVyeVByZXZhbGVudFJlc291cmNl
KFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNh
bGxiYWNrXShib29sIGlzVmVyeVByZXZhbGVudFJlc291cmNlKSB7CiAgICAgICAgIGNhbGxiYWNr
KGlzVmVyeVByZXZhbGVudFJlc291cmNlLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0x
OTAsNyArMTkxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UAog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJj
ZVVuZGVyKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIHN1
YnJlc291cmNlSG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0LCB2b2lkKiBjb250ZXh0LCBX
S1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVy
RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
c3VicmVzb3VyY2VIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRv
cEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0
ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKHN1YnJlc291cmNlSG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1Jl
Z2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIpIHsKICAgICAgICAgY2FsbGJhY2soaXNSZWdpc3Rl
cmVkQXNTdWJyZXNvdXJjZVVuZGVyLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yMDEs
NyArMjAyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpcwogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVy
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIHN1YkZyYW1l
SG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyRnVuY3Rpb24gY2Fs
bGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdpc3RlcmVk
QXNTdWJGcmFtZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVIb3N0KS0+
c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRl
cikgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzUmVnaXN0ZXJlZEFzU3Vi
RnJhbWVVbmRlcihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHN1YkZyYW1lSG9zdCktPnN0cmlu
ZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSks
IFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpIHsK
ICAgICAgICAgY2FsbGJhY2soaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyLCBjb250ZXh0KTsK
ICAgICB9KTsKICNlbHNlCkBAIC0yMTIsNyArMjEzLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVJc1N0YXRpc3RpY3NSZWdpcwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NS
ZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSwgV0tTdHJpbmdSZWYgaG9zdFJlZGly
ZWN0ZWRUbywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVn
aXN0ZXJlZEFzUmVkaXJlY3RpbmdUb0Z1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSwgVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbY29udGV4
dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKSB7CisgICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8pIHsKICAg
ICAgICAgY2FsbGJhY2soaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvLCBjb250ZXh0KTsKICAg
ICB9KTsKICNlbHNlCkBAIC0yMjMsNyArMjI0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpcwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFz
SGFkVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdL
U3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb25GdW5jdGlvbiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8m
IGRhdGFTdG9yZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKTsKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KTsKIAogICAgIGlmICh2YWx1ZSkKICAgICAgICAgZGF0YVN0b3JlLmxvZ1VzZXJJbnRlcmFjdGlv
bihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBj
b21wbGV0aW9uSGFuZGxlcl0gewpAQCAtMjQxLDcgKzI0Miw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc0hhc0gKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0
aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlz
U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFj
a10oYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24pIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSGFkVXNlcklu
dGVyYWN0aW9uKSB7CiAgICAgICAgIGNhbGxiYWNrKGhhc0hhZFVzZXJJbnRlcmFjdGlvbiwgY29u
dGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMjUyLDE0ICsyNTMsMTQgQEAgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NIYXNIYQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNldEdyYW5kZmF0aGVyZWQoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCB2YWx1ZSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5zZXRHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgdmFsdWUsIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWRGdW5jdGlvbiBjYWxsYmFjaykKIHsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24o
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2Fs
bGJhY2tdKGJvb2wgaXNHcmFuZGZhdGhlcmVkKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+aGFzSGFkVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzR3JhbmRmYXRoZXJl
ZCkgewogICAgICAgICBjYWxsYmFjayhpc0dyYW5kZmF0aGVyZWQsIGNvbnRleHQpOwogICAgIH0p
OwogI2Vsc2UKQEAgLTI3MCw0OSArMjcxLDQ5IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNT
dGF0aXN0aWNzR3JhbmQKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YmZy
YW1lVW5kZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlu
KFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlu
KFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtdIHsgfSk7CiAjZW5kaWYK
IH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3Ry
aW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCkKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oVVJM
KFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9KTsKKyAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4o
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9KTsKICNlbmRpZgog
fQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbXSB7IH0pOwogI2VuZGlm
CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3Ry
aW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJv
bShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBbXSB7IH0pOwor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJM
KFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFtd
IHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8pCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVj
dFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbXSB7IH0pOwor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW10geyB9KTsK
ICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZyb20pCiB7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZy
b20oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSwgW10geyB9KTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0RnJvbShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBbXSB7
IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Ny
b3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgZnJvbUhvc3QsIFdLU3RyaW5nUmVmIHRvSG9zdCwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRo
TGlua0RlY29yYXRpb25GdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNp
dGVEYXRhU3RvcmUoKS5zZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGlu
ZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGZyb21Ib3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKHRvSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNr
XSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0Q3Jvc3NTaXRlTG9hZFdp
dGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChmcm9t
SG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b0hvc3QpLT5zdHJp
bmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsK
ICAgICB9KTsKICNlbHNlCkBAIC0zMjMsNyArMzI0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRTdGF0aXN0aWNzQ3Jvcwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb25GdW5jdGlvbiBjYWxsYmFjaykKIHsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUaW1lVG9MaXZlVXNlckludGVy
YWN0aW9uKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24o
U2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxi
YWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTMzNCw3ICszMzUsNyBAQCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzRnVuY3Rpb24gY2FsbGJhY2sp
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVTdGF0aXN0aWNz
QW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRz
UHJvY2Vzc2luZyhbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4
dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMzQ1LDcgKzM0Niw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3MKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c1VwZGF0ZUNvb2tpZUJsb2NraW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NVcGRhdGVDb29raWVC
bG9ja2luZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbnRleHQsIGNv
bXBsZXRpb25IYW5kbGVyXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5z
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0o
KSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UK
QEAgLTM1NiwyMSArMzU3LDIxIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Vw
ZGF0ZUMKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKQogewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnN1Ym1pdFRlbGVtZXRyeSgpOworICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPnN1Ym1pdFRlbGVtZXRyeSgpOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXROb3RpZnlQYWdlc1doZW5EYXRh
UmVjb3Jkc1dlcmVTY2FubmVkKHZhbHVlLCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFs
dWUsIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzSXNSdW5uaW5nVGVzdChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBi
b29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
SXNSdW5uaW5nVGVzdEZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KHZhbHVl
LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT5zZXRJc1J1bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdCh2YWx1ZSwgW2NvbnRleHQs
IGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UK
QEAgLTM4MSw0OSArMzgyLDQ5IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c0lzUnUKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5
UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIGJvb2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkuc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwo
dmFsdWUsIFtdKCkgeyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRT
aG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSwgW10o
KSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIGJvb2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0
YVN0b3JlKCkuc2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQodmFsdWUsIFtd
KCkgeyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXROb3RpZnlQYWdl
c1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCh2YWx1ZSwgW10oKSB7IH0pOwogI2VuZGlmCiB9CiAK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRh
dGFSZWNvcmRzUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3Vi
bGUgc2Vjb25kcykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRNaW5p
bXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyB7IHNlY29uZHMgfSwgW10o
KSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE1pbmltdW1UaW1l
QmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHsgc2Vjb25kcyB9LCBbXSgpIHsgfSk7
CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzR3JhbmRm
YXRoZXJpbmdUaW1lKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBz
ZWNvbmRzKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEdyYW5kZmF0
aGVyaW5nVGltZShTZWNvbmRzIHsgc2Vjb25kcyB9LCBbXSgpIHsgfSk7CisgICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBzZWNv
bmRzIH0sIFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NNYXhTdGF0aXN0aWNzRW50cmllcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCB1bnNpZ25lZCBlbnRyaWVzKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKGVudHJpZXMsIFtdKCkgeyB9KTsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRNYXhTdGF0aXN0aWNzRW50cmllcyhl
bnRyaWVzLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzUHJ1bmVFbnRyaWVzRG93blRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIHVuc2lnbmVkIGVudHJpZXMpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0
YVN0b3JlKCkuc2V0UHJ1bmVFbnRyaWVzRG93blRvKGVudHJpZXMsIFtdKCkgeyB9KTsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRQcnVuZUVudHJpZXNEb3duVG8oZW50cmll
cywgW10oKSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50KFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250
ZXh0LCBjYWxsYmFja10oKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2No
ZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVy
U3RhdGlzdGljczo6WWVzLCBbY29udGV4dCwgY2FsbGJhY2tdKCkgewogICAgICAgICBjYWxsYmFj
ayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00MzQsNyArNDM1LDcgQEAgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vy
cyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB1bnNpZ25lZCBob3Vycywgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnNGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50KFdhbGxUaW1lOjpub3coKSAtIFNlY29uZHM6OmZyb21Ib3Vycyhob3VycyksIFdl
YktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFj
a10oKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1bGVDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGltZTo6bm93KCkgLSBTZWNvbmRzOjpmcm9tSG91cnMo
aG91cnMpLCBXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzLCBbY29udGV4
dCwgY2FsbGJhY2tdKCkgewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNl
bHNlCkBAIC00NDUsNyArNDQ2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
Q2xlYXJJbgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vi
c2l0ZURhdGFSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRl
RGF0YVJlbW92YWxGdW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpX
ZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKDApLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRz
KDApLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAg
ICAgfSk7CiB9CkBAIC00NTMsNyArNDU0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0
aXN0aWNzQ2xlYXJUaAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29v
a2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJp
bmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCB2b2lkKiBjb250ZXh0LCBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmdGdW5jdGlv
biBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kZWxldGVD
b29raWVzRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmco
KSksIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgaW5jbHVkZUh0dHBPbmx5Q29v
a2llcywgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwog
ICAgIH0pOwogI2Vsc2UKQEAgLTQ2NCw3ICs0NjUsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NEZWxldGVDCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNM
b2NhbFN0b3JhZ2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xv
Y2FsU3RvcmFnZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLmhhc0xvY2FsU3RvcmFnZUZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzTG9jYWxT
dG9yYWdlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aGFzTG9jYWxTdG9y
YWdlRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNMb2NhbFN0b3JhZ2UpIHsKICAgICAgICAgY2Fs
bGJhY2soaGFzTG9jYWxTdG9yYWdlLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00NzUs
NyArNDc2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYQogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9uIGNh
bGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldENhY2hlTWF4
QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0
LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldENhY2hl
TWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250
ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNl
bHNlCkBAIC00ODYsNyArNDg3LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzQ2FjaAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNz
aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNl
c3Npb25GdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKS5oYXNJc29sYXRlZFNlc3Npb25Gb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhhc0lzb2xhdGVk
U2Vzc2lvbikgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0lzb2xhdGVk
U2Vzc2lvbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5n
KCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9uKSB7CiAgICAg
ICAgIGNhbGxiYWNrKGhhc0lzb2xhdGVkU2Vzc2lvbiwgY29udGV4dCk7CiAgICAgfSk7CiAjZWxz
ZQpAQCAtNTAxLDcgKzUwMiw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jl
c2V0VG8KICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAKLSAg
ICBhdXRvJiBzdG9yZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRh
U3RvcmUoKTsKKyAgICBhdXRvJiBzdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
OwogICAgIHN0b3JlLmNsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljc0luV2ViUHJvY2Vzc2VzKFtj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwog
ICAgIHN0b3JlLnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoW2NhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAg
c3RvcmUucmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoW2Nh
bGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CkBA
IC01MTYsNyArNTE3LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRU
bwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxGZXRjaENhY2hlcyhXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVSZW1vdmVGZXRjaENhY2hlUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlv
blNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRl
RGF0YVR5cGU6OkRPTUNhY2hlOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0
eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4
dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9CkBA
IC01MjgsNyArNTI5LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hl
RgogICAgIFZlY3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiBkYXRhUmVjb3JkcyA9IHsg
V1RGTW92ZShkYXRhUmVjb3JkKSB9OwogCiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU7Ci0g
ICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92
ZURhdGEoZGF0YVR5cGVzLCBkYXRhUmVjb3JkcywgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0YShkYXRhVHlwZXMsIGRhdGFS
ZWNvcmRzLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7
CiAgICAgfSk7CiB9CkBAIC01MzYsNyArNTM3LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVS
ZW1vdmVGZXRjaENhY2hlRgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVk
RGF0YWJhc2VzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFjayBj
YWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFU
eXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXM7Ci0gICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURh
dGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10g
eworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVz
LCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgIGlmIChj
YWxsYmFjaykKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CkBAIC01NDUsNyAr
NTQ2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRAogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9j
YWxTdG9yYWdlQ2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6TG9jYWxT
dG9yYWdlOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4
dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVE
YXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2td
IHsKICAgICAgICAgaWYgKGNhbGxiYWNrKQogICAgICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7
CiAgICAgfSk7CkBAIC01NTUsNyArNTU2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1v
dmVBbGxTZXJ2aWNlVwogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uczsKLSAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1X
YWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5m
aW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQp
OwogICAgIH0pOwogI2Vsc2UKQEAgLTU2Niw3ICs1NjcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVJlbW92ZUFsbFNlcnZpY2VXCiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hD
YWNoZU9yaWdpbnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29u
dGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxs
YmFjaykKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkuZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgeyB9LCBb
Y29udGV4dCwgY2FsbGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CisgICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+ZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01D
YWNoZSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CiAgICAg
ICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7CiAgICAgICAg
IGZvciAoY29uc3QgYXV0byYgZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7CiAgICAgICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykKQEAgLTU4MCw3
ICs1ODEsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplCiB7CiAg
ICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25z
ID0gV2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXM7CiAKLSAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZmV0Y2hEYXRh
KFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgZmV0Y2hPcHRpb25zLCBbb3JpZ2lu
LCBjb250ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0YVJlY29yZHMpIHsKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRP
TUNhY2hlLCBmZXRjaE9wdGlvbnMsIFtvcmlnaW4sIGNvbnRleHQsIGNhbGxiYWNrXSAoYXV0byBk
YXRhUmVjb3JkcykgewogICAgICAgICBhdXRvIG9yaWdpbkRhdGEgPSBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zdHJpbmco
KSktPmRhdGEoKTsKICAgICAgICAgZm9yIChhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMp
IHsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjb3JkT3JpZ2luIDogZGF0YVJlY29y
ZC5vcmlnaW5zKSB7CkBAIC01OTcsMTIgKzU5OCwxMiBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZUdldEZldGNoQ2FjaGVTaXplCiAKIFdLU3RyaW5nUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNvcHlT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdL
U3RyaW5nUmVmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpCiB7Ci0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV2ViS2l0Ojp0b0ltcGwoc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSktPnN0cmluZygpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdlYktpdDo6
dG9JbXBsKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLT5zdHJpbmcoKSk7CiB9
CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiwgdWludDY0X3QpCkBAIC02MTIsNyArNjEzLDcgQEAgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRQZXJPcmlnaW5TdG9yYQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVD
bGVhckFsbERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZikKIHsKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIoKS5jbGVhclBlcm1pc3Npb25zKCk7Cisg
ICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25BY2Nlc3NDb250cm9sbGVyKCkuY2xlYXJQZXJtaXNzaW9ucygpOwogI2VuZGlmCiB9CiAKQEAg
LTcxMiwxNCArNzEzLDE0IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0aGVudGlj
YXQKICAgICAgICAgY29uZmlndXJhdGlvbi5uZmMgPSBXVEZNb3ZlKG5mYyk7CiAgICAgfQogCi0g
ICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7
CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICNlbmRpZgogfQogCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJz
aXRlRGF0YVJlbW92YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3Vn
aFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNldDxX
ZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU6OkFkQ2xpY2tBdHRyaWJ1dGlvbnM7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0
KTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZVBvbGljaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiV0tXZWJzaXRlUG9saWNpZXMuaCIKIAog
I2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3Jl
LmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgogI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgogI2lu
Y2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0J
KHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9B
UElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKG5vbmV4aXN0ZW50KQpAQCAtMSwxOTcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBUElX
ZWJzaXRlRGF0YVN0b3JlLmgiCi0KLSNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCi0jaW5j
bHVkZSAiU2FuZGJveFV0aWxpdGllcy5oIgotI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0KLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KLSNlbmRp
ZgotCi1uYW1lc3BhY2UgQVBJIHsKLQotTlNTdHJpbmcgKldlYkRhdGFiYXNlRGlyZWN0b3J5RGVm
YXVsdHNLZXkgPSBAIldlYkRhdGFiYXNlRGlyZWN0b3J5IjsKLU5TU3RyaW5nICpXZWJTdG9yYWdl
RGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFBy
ZWZlcmVuY2VLZXkiOwotTlNTdHJpbmcgKldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnlEZWZhdWx0
c0tleSA9IEAiV2ViS2l0TWVkaWFDYWNoZURpcmVjdG9yeSI7Ci1OU1N0cmluZyAqV2ViS2l0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5IjsKLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQotewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgLy8gVGhpcyBxdWlyayB1c2VkIHRvIG1ha2UgdGhlc2UgYXBwcyBzaGFyZSBhcHBsaWNhdGlv
biBjYWNoZSBzdG9yYWdlLCBidXQgZG9lc24ndCBhY2NvbXBsaXNoIHRoYXQgYW55IG1vcmUuCi0g
ICAgLy8gUHJlc2VydmluZyBpdCBhdm9pZHMgdGhlIG5lZWQgdG8gbWlncmF0ZSBkYXRhIHdoZW4g
dXBncmFkaW5nLgotICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlIHNob3VsZCBqdXN0IGhhdmUgU2Fm
YXJpLCBXZWJBcHAsIGFuZCB3ZWJib29rbWFya3NkIGNyZWF0ZSBhIGRhdGEgc3RvcmUgd2l0aAot
ICAgIC8vIHRoaXMgYXBwbGljYXRpb24gY2FjaGUgcGF0aCwgYnV0IHRoYXQncyBub3Qgc3VwcG9y
dGVkIGFzIG9mIHJpZ2h0IG5vdy4KLSAgICBpZiAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246Omlz
TW9iaWxlU2FmYXJpKCkgfHwgV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViQXBwKCkgfHwg
V2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViQm9va21hcmtzRCgpKSB7Ci0gICAgICAgIE5T
U3RyaW5nICpjYWNoZVBhdGggPSBbTlNIb21lRGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiTGlicmFyeS9DYWNoZXMvY29tLmFwcGxlLldlYkFwcENhY2hlIl07Ci0K
LSAgICAgICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChj
YWNoZVBhdGguc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aCk7Ci0gICAgfQotI2VuZGlmCi0KLSAg
ICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiQ2FjaGVTdG9yYWdlIik7Ci19Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTmV0
d29ya0NhY2hlIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRN
ZWRpYUNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbigiTWVkaWFDYWNoZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSW5kZXhl
ZERCIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlNlcnZpY2VXb3JrZXJzIik7Ci19Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bigiTG9jYWxTdG9yYWdlIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhS2V5cyIpOwotfQotCi1X
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbigiV2ViU1FMIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlJlc291cmNlTG9hZFN0
YXRpc3RpY3MiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEph
dmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gdGVtcERpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIERvbnRD
cmVhdGVEaXJlY3RvcnkpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1w
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJl
Y3RvcnlOYW1lLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQot
ewotICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBOU1VS
TCAqdGVtcFVSTDsKLSAgICAKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAg
ICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOk5TVGVtcG9yYXJ5RGlyZWN0
b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKLSAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFXZWJL
aXQ6OnByb2Nlc3NIYXNDb250YWluZXIoKSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRs
ZUlkZW50aWZpZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKLSAgICAgICAgICAgICAgICBidW5kbGVJ
ZGVudGlmaWVyID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOwotICAg
ICAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRl
bnRpZmllciBpc0RpcmVjdG9yeTpZRVNdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0
ZW1wVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0Rp
cmVjdG9yeTpZRVNdIHJldGFpbl07Ci0gICAgfSk7Ci0gICAgCi0gICAgTlNVUkwgKnVybCA9IFt0
ZW1wVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0
b3J5OllFU107Ci0KLSAgICBpZiAoc2hvdWxkQ3JlYXRlRGlyZWN0b3J5ID09IENyZWF0ZURpcmVj
dG9yeQotICAgICAgICAmJiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRl
RGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmli
dXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pKQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBj
cmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKLSAgICAKLSAgICByZXR1cm4gdXJsLmFic29sdXRl
VVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwotfQotCi1XVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25j
ZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKmNhY2hlVVJMOwotCi0gICAgZGlzcGF0
Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNDYWNoZXNEaXJlY3RvcnkgaW5E
b21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpO
TyBlcnJvcjpudWxscHRyXTsKLSAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFz
Q29udGFpbmVyKCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0g
W05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAo
IWJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtO
U1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKLSAgICAgICAgICAgIHVybCA9
IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJl
Y3Rvcnk6WUVTXTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhY2hlVVJMID0gW1t1cmwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07
Ci0gICAgfSk7Ci0KLSAgICBOU1VSTCAqdXJsID0gW2NhY2hlVVJMIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107Ci0gICAgaWYgKCFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRo
SW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJd
KQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJs
KTsKLQotICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50
YXRpb247Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3Rv
cnlOYW1lKQotewotICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0
YXRpYyBOU1VSTCAqd2Vic2l0ZURhdGFVUkw7Ci0KLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9r
ZW4sIF57Ci0gICAgICAgIE5TVVJMICp1cmwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIFVSTEZvckRpcmVjdG9yeTpOU0xpYnJhcnlEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9t
YWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRy
XTsKLSAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotCi0gICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdOwotCi0gICAgICAgIGlmICghV2ViS2l0Ojpwcm9j
ZXNzSGFzQ29udGFpbmVyKCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlm
aWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmll
ciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKLSAgICAgICAgICAg
IHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIg
aXNEaXJlY3Rvcnk6WUVTXTsKLSAgICAgICAgfQotCi0gICAgICAgIHdlYnNpdGVEYXRhVVJMID0g
W1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2Vic2l0ZURhdGEiIGlzRGlyZWN0
b3J5OllFU10gcmV0YWluXTsKLSAgICB9KTsKLQotICAgIE5TVVJMICp1cmwgPSBbd2Vic2l0ZURh
dGFVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rv
cnk6WUVTXTsKLSAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRl
RGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmli
dXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCi0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNy
ZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwotCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5w
YXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVBJCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0JKHJldmlzaW9uIDI1MDE1MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEwNSwxNyArMTA1LDE3IEBAIHByaXZhdGU6CiAKICsgKFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRl
ZmF1bHREYXRhU3RvcmUKIHsKLSAgICByZXR1cm4gd3JhcHBlcihBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXIoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkpOwogfQogCiArIChXS1dlYnNpdGVEYXRh
U3RvcmUgKilub25QZXJzaXN0ZW50RGF0YVN0b3JlCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkpOworICAg
IHJldHVybiB3cmFwcGVyKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lz
dGVudCgpKTsKIH0KIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUt
PkFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgp
OwogCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtMTY5LDcgKzE2OSw3IEBAICsgKE5TU2V0
ICopYWxsV2Vic2l0ZURhdGFUeXBlcwogCiAtIChXS0hUVFBDb29raWVTdG9yZSAqKWh0dHBDb29r
aWVTdG9yZQogewotICAgIHJldHVybiB3cmFwcGVyKF93ZWJzaXRlRGF0YVN0b3JlLT5odHRwQ29v
a2llU3RvcmUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUtPmNvb2tp
ZVN0b3JlKCkpOwogfQogCiBzdGF0aWMgV2FsbFRpbWUgdG9TeXN0ZW1DbG9ja1RpbWUoTlNEYXRl
ICpkYXRlKQpAQCAtMTg2LDcgKzE4Niw3IEBAIC0gKHZvaWQpZmV0Y2hEYXRhUmVjb3Jkc09mVHlw
ZXM6KE5TU2V0ICoKIC0gKHZvaWQpcmVtb3ZlRGF0YU9mVHlwZXM6KE5TU2V0ICopZGF0YVR5cGVz
IG1vZGlmaWVkU2luY2U6KE5TRGF0ZSAqKWRhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNv
cHkgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpOwotICAgIF93ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShXZWJLaXQ6OnRvV2Vic2l0ZURhdGFU
eXBlcyhkYXRhVHlwZXMpLCB0b1N5c3RlbUNsb2NrVGltZShkYXRlID8gZGF0ZSA6IFtOU0RhdGUg
ZGlzdGFudFBhc3RdKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0geworICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT5yZW1vdmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFUeXBlcyks
IHRvU3lzdGVtQ2xvY2tUaW1lKGRhdGUgPyBkYXRlIDogW05TRGF0ZSBkaXN0YW50UGFzdF0pLCBb
Y29tcGxldGlvbkhhbmRsZXJDb3B5XSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weSgp
OwogICAgIH0pOwogfQpAQCAtMjA1LDcgKzIwNSw3IEBAIC0gKHZvaWQpcmVtb3ZlRGF0YU9mVHlw
ZXM6KE5TU2V0ICopZGF0YVQKIHsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcik7CiAKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMo
ZGF0YVR5cGVzKSwgdG9XZWJzaXRlRGF0YVJlY29yZHMoZGF0YVJlY29yZHMpLCBbY29tcGxldGlv
bkhhbmRsZXJDb3B5XSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnJlbW92ZURhdGEoV2ViS2l0
Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwgdG9XZWJzaXRlRGF0YVJlY29yZHMoZGF0
YVJlY29yZHMpLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5XSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyQ29weSgpOwogICAgIH0pOwogfQpAQCAtMjQwLDEyICsyNDAsMTIgQEAgKyAoTlNTZXQ8
TlNTdHJpbmcgKj4gKilfYWxsV2Vic2l0ZURhdGFUeQogCiArIChCT09MKV9kZWZhdWx0RGF0YVN0
b3JlRXhpc3RzCiB7Ci0gICAgcmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERh
dGFTdG9yZUV4aXN0cygpOworICAgIHJldHVybiBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKIH0KIAogKyAodm9pZClfZGVsZXRlRGVmYXVsdERhdGFT
dG9yZUZvclRlc3RpbmcKIHsKLSAgICByZXR1cm4gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWxl
dGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOworICAgIHJldHVybiBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7CiB9CiAKIC0g
KGluc3RhbmNldHlwZSlfaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KQEAgLTI1Myw3ICsyNTMsNyBAQCAtIChpbnN0
YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBhdXRvIGNvbmZpZyA9IGNvbmZp
Z3VyYXRpb24uaXNQZXJzaXN0ZW50ID8gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0
YVN0b3JlQ29uZmlndXJhdGlvbigpIDogV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbjo6Y3JlYXRlKCk7CisgICAgYXV0byBjb25maWcgPSBjb25maWd1cmF0aW9uLmlzUGVyc2lz
dGVudCA/IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oKSA6IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgp
OwogCiAgICAgUkVMRUFTRV9BU1NFUlQoY29uZmlnLT5pc1BlcnNpc3RlbnQoKSA9PSBjb25maWd1
cmF0aW9uLmlzUGVyc2lzdGVudCk7CiAKQEAgLTMxNyw3ICszMTcsNyBAQCAtIChpbnN0YW5jZXR5
cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooCiAKICAgICBhdXRvIHNlc3Npb25JRCA9IGNvbmZp
Z3VyYXRpb24uaXNQZXJzaXN0ZW50ID8gUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlUGVyc2lzdGVu
dFNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlRXBoZW1lcmFsU2Vzc2lvbklE
KCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6V2Vic2l0ZURh
dGFTdG9yZT4oc2VsZiwgV1RGTW92ZShjb25maWcpLCBzZXNzaW9uSUQpOworICAgIEFQSTo6T2Jq
ZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPihzZWxmLCBX
VEZNb3ZlKGNvbmZpZyksIHNlc3Npb25JRCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTMz
MCw3ICszMzAsNyBAQCAtICh2b2lkKV9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczooTlNTZXQ8CiAg
ICAgaWYgKG9wdGlvbnMgJiBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25Db21wdXRlU2l6
ZXMpCiAgICAgICAgIGZldGNoT3B0aW9ucy5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0
aW9uOjpDb21wdXRlU2l6ZXMpOwogCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwg
ZmV0Y2hPcHRpb25zLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlckNvcHkpXShhdXRvIHdlYnNpdGVEYXRhUmVjb3JkcykgeworICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT5mZXRjaERhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwg
ZmV0Y2hPcHRpb25zLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlckNvcHkpXShhdXRvIHdlYnNpdGVEYXRhUmVjb3JkcykgewogICAgICAgICBWZWN0b3I8
UmVmUHRyPEFQSTo6T2JqZWN0Pj4gZWxlbWVudHM7CiAgICAgICAgIGVsZW1lbnRzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkod2Vic2l0ZURhdGFSZWNvcmRzLnNpemUoKSk7CiAKQEAgLTM0MywxOCAr
MzQzLDE4IEBAIC0gKHZvaWQpX2ZldGNoRGF0YVJlY29yZHNPZlR5cGVzOihOU1NldDwKIAogLSAo
Qk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQKIHsKLSAgICByZXR1cm4gX3dlYnNp
dGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZCgpOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQoKTsKIH0KIAogLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQ6KEJPT0wpZW5hYmxlZAogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7CisgICAg
X3dlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJs
ZWQpOwogfQogCiAtIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICByZXR1cm4gX3dlYnNpdGVE
YXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdN
b2RlKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGVidWdNb2RlKCk7CiAjZWxzZQogICAgIHJldHVybiBOTzsKICNlbmRpZgpAQCAtMzYzLDcg
KzM2Myw3IEBAIC0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUKIC0gKHZv
aWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6KEJPT0wpZW5hYmxlZAogewog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2Rl
KGVuYWJsZWQpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGVidWdNb2RlKGVuYWJsZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7
CiAjZW5kaWYKQEAgLTM4MCw2OCArMzgwLDY4IEBAIC0gKHZvaWQpX3NldFBlck9yaWdpblN0b3Jh
Z2VRdW90YTooTlNVSW4KIAogLSAoTlNTdHJpbmcgKilfY2FjaGVTdG9yYWdlRGlyZWN0b3J5CiB7
Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuY2FjaGVT
dG9yYWdlRGlyZWN0b3J5KCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5jYWNoZVN0
b3JhZ2VEaXJlY3RvcnkoKTsKIH0KIAogLSAodm9pZClfc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5
OihOU1N0cmluZyAqKWRpcmVjdG9yeQogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgX3dl
YnNpdGVEYXRhU3RvcmUtPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShkaXJlY3RvcnkpOwogfQog
CiAtIChOU1N0cmluZyAqKV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5CiB7Ci0g
ICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9y
ZS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogfQogCiAtICh2b2lkKV9z
ZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9y
eQogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShkaXJlY3RvcnkpOworICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRpcmVjdG9yeSk7
CiB9CiAKIC0gKHZvaWQpX3NldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcjooTlNTdHJpbmcgKilp
ZGVudGlmaWVyCiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXRCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAgX3dlYnNpdGVEYXRh
U3RvcmUtPnNldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihpZGVudGlmaWVyKTsKIH0KIAogLSAo
TlNTdHJpbmcgKilfYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyCiB7Ci0gICAgcmV0dXJuIF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYm91bmRJbnRlcmZhY2VJZGVudGlmaWVy
KCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5ib3VuZEludGVyZmFjZUlkZW50aWZp
ZXIoKTsKIH0KIAogLSAodm9pZClfc2V0QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6KEJPT0wpYWxsb3dz
CiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRBbGxvd3ND
ZWxsdWxhckFjY2VzcyhhbGxvd3MgPyBXZWJLaXQ6OkFsbG93c0NlbGx1bGFyQWNjZXNzOjpZZXMg
OiBXZWJLaXQ6OkFsbG93c0NlbGx1bGFyQWNjZXNzOjpObyk7CisgICAgX3dlYnNpdGVEYXRhU3Rv
cmUtPnNldEFsbG93c0NlbGx1bGFyQWNjZXNzKGFsbG93cyA/IFdlYktpdDo6QWxsb3dzQ2VsbHVs
YXJBY2Nlc3M6OlllcyA6IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6Ok5vKTsKIH0KIAog
LSAoQk9PTClfYWxsb3dzQ2VsbHVsYXJBY2Nlc3MKIHsKLSAgICByZXR1cm4gX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5hbGxvd3NDZWxsdWxhckFjY2VzcygpID09IFdlYktp
dDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6OlllczsKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3Rv
cmUtPmFsbG93c0NlbGx1bGFyQWNjZXNzKCkgPT0gV2ViS2l0OjpBbGxvd3NDZWxsdWxhckFjY2Vz
czo6WWVzOwogfQogCiAtICh2b2lkKV9zZXRQcm94eUNvbmZpZ3VyYXRpb246KE5TRGljdGlvbmFy
eSAqKWNvbmZpZ3VyYXRpb24KIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnNldFByb3h5Q29uZmlndXJhdGlvbigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNv
bmZpZ3VyYXRpb24pOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRQcm94eUNvbmZpZ3VyYXRp
b24oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZiljb25maWd1cmF0aW9uKTsKIH0KIAogLSAoTlNT
dHJpbmcgKilfc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyCiB7Ci0gICAgcmV0dXJu
IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5zb3VyY2VB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKIH0KIAogLSAodm9pZClfc2V0U291cmNlQXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBp
ZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgIGlmICghX3dlYnNpdGVEYXRh
U3RvcmUtPnNldFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihpZGVudGlmaWVyKSkK
ICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TR2VuZXJpY0V4Y2VwdGlvbiBmb3JtYXQ6QCJf
c2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyIGNhbm5vdCBiZSBjYWxsZWQgYWZ0
ZXIgbmV0d29ya2luZyBoYXMgYmVndW4iXTsKIH0KIAogLSAoTlNTdHJpbmcgKilfc291cmNlQXBw
bGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0
b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlm
aWVyKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5zb3VyY2VBcHBsaWNhdGlvblNl
Y29uZGFyeUlkZW50aWZpZXIoKTsKIH0KIAogLSAodm9pZClfc2V0U291cmNlQXBwbGljYXRpb25T
ZWNvbmRhcnlJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBpZiAoIV93
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U291cmNlQXBwbGljYXRpb25T
ZWNvbmRhcnlJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgIGlmICghX3dlYnNpdGVEYXRhU3Rv
cmUtPnNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSkK
ICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TR2VuZXJpY0V4Y2VwdGlvbiBmb3JtYXQ6QCJf
c2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyIGNhbm5vdCBiZSBjYWxsZWQg
YWZ0ZXIgbmV0d29ya2luZyBoYXMgYmVndW4iXTsKIH0KIApAQCAtNDU2LDE4ICs0NTYsMTggQEAg
LSAoQk9PTClfYWxsb3dzVExTRmFsbGJhY2sKIAogLSAoTlNEaWN0aW9uYXJ5ICopX3Byb3h5Q29u
ZmlndXJhdGlvbgogewotICAgIHJldHVybiAoX19icmlkZ2UgTlNEaWN0aW9uYXJ5ICopX3dlYnNp
dGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wcm94eUNvbmZpZ3VyYXRpb24oKTsKKyAg
ICByZXR1cm4gKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKV93ZWJzaXRlRGF0YVN0b3JlLT5wcm94
eUNvbmZpZ3VyYXRpb24oKTsKIH0KIAogLSAoTlNVUkwgKilfaW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkKIHsKLSAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfd2Vic2l0ZURhdGFT
dG9yZS0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOworICAg
IHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl93ZWJzaXRlRGF0YVN0b3JlLT5jb25maWd1
cmF0aW9uKCkuaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwog
fQogCiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkU3VibWl0VGVsZW1l
dHJ5OihCT09MKXZhbHVlCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
LSAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNpdGVEYXRh
U3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKICAgICBpZiAoIXN0b3JlKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTQ4MiwxMyArNDgyLDEzIEBAIC0gKHZvaWQpX3NldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NUZXN0aW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGNhbGxiYWNrKSB7
Ci0gICAgICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U3RhdGlz
dGljc1Rlc3RpbmdDYWxsYmFjayhbY2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoY2FsbGJhY2spLCBz
ZWxmXShjb25zdCBTdHJpbmcmIGV2ZW50KSB7CisgICAgICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5z
ZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKFtjYWxsYmFjayA9IG1ha2VCbG9ja1B0cihjYWxs
YmFjayksIHNlbGZdKGNvbnN0IFN0cmluZyYgZXZlbnQpIHsKICAgICAgICAgICAgIGNhbGxiYWNr
KHNlbGYsIGV2ZW50KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN0YXRpc3RpY3NUZXN0
aW5nQ2FsbGJhY2sobnVsbHB0cik7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFN0YXRpc3Rp
Y3NUZXN0aW5nQ2FsbGJhY2sobnVsbHB0cik7CiAjZW5kaWYKIH0KIApAQCAtNTExLDcgKzUxMSw3
IEBAIC0gKHZvaWQpX2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOigKICAgICB9CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkuZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMod2ViUGFnZVBy
b3h5LT5pZGVudGlmaWVyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcildKGF1dG8gZG9tYWlucykgeworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5n
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh3ZWJQYWdlUHJveHktPmlkZW50aWZpZXIoKSwgW2Nv
bXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byBk
b21haW5zKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlEb21haW5z
OwogICAgICAgICBhcGlEb21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZG9tYWlucy5zaXpl
KCkpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCkBAIC01MjYsNyArNTI2
LDcgQEAgLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6KAogLSAodm9pZClf
c2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZToodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhh
bmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDb29raWVCbG9ja2luZ1Vw
ZGF0ZShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIp
XSgpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0
ZShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgp
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKICNlbHNlCkBAIC01Mzcs
NyArNTM3LDcgQEAgLSAodm9pZClfc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZToodgogLSAo
dm9pZClfc2V0UHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkuc2V0UHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxl
ciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgeworICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTQ4LDcgKzU0OCw3IEBAIC0gKHZv
aWQpX3NldFByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb20KIC0gKHZvaWQpX2dldElzUHJldmFs
ZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNQcmV2YWxl
bnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBlbmFibGVkKSB7CisgICAgX3dlYnNpdGVEYXRhU3Rv
cmUtPmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZW5hYmxlZCkgewogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihlbmFibGVkKTsKICAgICB9KTsKICNlbHNlCkBAIC01NTksNyAr
NTU5LDcgQEAgLSAodm9pZClfZ2V0SXNQcmV2YWxlbnREb21haW46KE5TVVJMICopZAogLSAodm9p
ZClfY2xlYXJQcmV2YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3Rv
cmUoKS5jbGVhclByZXZhbGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTcwLDcgKzU3MCw3IEBAIC0g
KHZvaWQpX2NsZWFyUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWQKIC0gKHZvaWQpX3Byb2Nlc3NT
dGF0aXN0aWNzQW5kRGF0YVJlY29yZHM6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVy
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vic2l0ZURh
dGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNv
cmRzUHJvY2Vzc2luZyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2NoZWR1bGVTdGF0aXN0aWNz
QW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgIH0pOwogI2Vsc2UKQEAgLTU4MCwxOCArNTgwLDE4IEBAIC0gKHZvaWQpX3Byb2Nlc3NTdGF0
aXN0aWNzQW5kRGF0YVJlY29yZHMKIAogLSAoYm9vbClfaGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3Jr
ZXIKIHsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhXZWJDb3JlOjpzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShfd2Vic2l0ZURhdGFTdG9yZS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSkpOwor
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKFdlYkNvcmU6OnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhYmFzZUZpbGVuYW1lKF93ZWJzaXRlRGF0YVN0b3JlLT5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKIH0KIAogLSAoaWQgPF9XS1dlYnNpdGVEYXRh
U3RvcmVEZWxlZ2F0ZT4pX2RlbGVnYXRlCiB7Ci0gICAgcmV0dXJuIF9kZWxlZ2F0ZS5nZXQoKTsK
KyAgICByZXR1cm4gX2RlbGVnYXRlLmdldCgpLmdldCgpOwogfQogCiAtICh2b2lkKXNldF9kZWxl
Z2F0ZTooaWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4pZGVsZWdhdGUKIHsKICAgICBf
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFT
dG9yZSgpLnNldENsaWVudChtYWtlVW5pcXVlUmVmPFdlYnNpdGVEYXRhU3RvcmVDbGllbnQ+KGRl
bGVnYXRlKSk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldENsaWVudChtYWtlVW5pcXVlUmVm
PFdlYnNpdGVEYXRhU3RvcmVDbGllbnQ+KGRlbGVnYXRlKSk7CiB9CiAKIEBlbmQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5h
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaAkod29y
a2luZyBjb3B5KQpAQCAtMjUsMTIgKzI1LDEzIEBACiAKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFT
dG9yZVByaXZhdGUuaCIKIAotI2ltcG9ydCAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2ltcG9y
dCAiV0tPYmplY3QuaCIKKyNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbXBvcnQgPHd0
Zi9XZWFrT2JqQ1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdGVtcGxhdGU8PiBzdHJ1
Y3QgV3JhcHBlclRyYWl0czxBUEk6OldlYnNpdGVEYXRhU3RvcmU+IHsKK3RlbXBsYXRlPD4gc3Ry
dWN0IFdyYXBwZXJUcmFpdHM8V2Vic2l0ZURhdGFTdG9yZT4gewogICAgIHVzaW5nIFdyYXBwZXJD
bGFzcyA9IFdLV2Vic2l0ZURhdGFTdG9yZTsKIH07CiAKQEAgLTM4LDcgKzM5LDcgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OldlYgogCiBAaW50ZXJmYWNlIFdLV2Vic2l0
ZURhdGFTdG9yZSAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCi0gICAgQVBJOjpPYmplY3RTdG9y
YWdlPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4gX3dlYnNpdGVEYXRhU3RvcmU7Ci0gICAgUmV0YWlu
UHRyPGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+ID4gX2RlbGVnYXRlOworICAgIEFQ
STo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IF93ZWJzaXRlRGF0YVN0
b3JlOworICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+ID4g
X2RlbGVnYXRlOwogfQogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkocmV2aXNp
b24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0
ZURhdGFTdG9yZUdMaWIuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTA3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotCi0jaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+Ci0K
LSNpZiBQTEFURk9STShHVEspCi0jZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3ZWJraXRndGsiCi0j
ZWxpZiBQTEFURk9STShXUEUpCi0jZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCi0jZW5kaWYK
LQotbmFtZXNwYWNlIEFQSSB7Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9S
X1MgImFwcGxpY2F0aW9ucyIpOwotfQotCi0vLyBGSVhNRTogVGhlIG90aGVyIGRpcmVjdG9yaWVz
IGluIHRoaXMgZmlsZSBhcmUgc2hhcmVkIGJldHdlZW4gYWxsIGFwcGxpY2F0aW9ucyB1c2luZyBX
ZWJLaXRHVEsuCi0vLyBXaHkgaXMgb25seSB0aGlzIGRpcmVjdG9yeSBuYW1lc3BhY2VkIHRvIGEg
cGFydGljdWxhciBhcHBsaWNhdGlvbj8KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dl
dF9wcmduYW1lKCkpLCAiV2ViS2l0Q2FjaGUiKSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBj
YWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAiQ2FjaGVTdG9yYWdlIikpOwotfQotCi1XVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnko
KQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGF0YWJhc2VzIiBHX0RJUl9T
RVBBUkFUT1JfUyAiaW5kZXhlZGRiIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKLXsKLSAgICBy
ZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9E
SVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgInNlcnZpY2V3b3JrZXJzIik7Ci19Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAibG9jYWxzdG9yYWdlIik7Ci19Ci0K
LVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgIm1lZGlha2V5cyIp
OwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRz
U3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJk
ZXZpY2VpZGhhc2hzYWx0cyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0
YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9T
RVBBUkFUT1JfUyAiZGF0YWJhc2VzIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRIU1RTRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJB
VE9SX1MpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFS
QVRPUl9TICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7Ci19
Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQot
ewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFf
ZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29r
aWVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4
LDcgKzU4LDcgQEAgc3RydWN0IF9XZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZSB7CiAgICAgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChkYXRh
TWFuYWdlcik7Ci0gICAgICAgIHJldHVybiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRh
U3RvcmUoZGF0YU1hbmFnZXIpLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKTsKKyAgICAg
ICAgcmV0dXJuIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShkYXRhTWFuYWdl
cikuc2Vzc2lvbklEKCk7CiAgICAgfQogCiAgICAgfl9XZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0
ZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDEyICsyMCwxMiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oIgogCi0jaW5jbHVkZSAi
QVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYktpdENvb2tpZU1hbmFnZXJQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYnNp
dGVEYXRhTWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YVByaXZh
dGUuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8
cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CkBAIC05NSw3ICs5
NSw3IEBAIHN0cnVjdCBfV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZSAKICAgICAgICAg
QVNTRVJUKHByb2Nlc3NQb29scy5pc0VtcHR5KCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxBUEk6
OldlYnNpdGVEYXRhU3RvcmU+IHdlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZT4gd2Vic2l0ZURhdGFTdG9yZTsKICAgICBHVW5pcXVlUHRyPGNoYXI+
IGJhc2VEYXRhRGlyZWN0b3J5OwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gYmFzZUNhY2hlRGlyZWN0
b3J5OwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwpAQCAtMTgx
LDcgKzE4MSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlclNldFAKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAgICAgaWYgKGdf
dmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKQotICAgICAgICAgICAgbWFuYWdlci0+cHJpdi0+d2Vi
c2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVu
dERhdGFTdG9yZSgpOworICAgICAgICAgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9y
ZSA9IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9y
ZSgpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJO
X0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CkBAIC0zODEs
MzEgKzM4MSwyMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfCiAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklU
RSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CiB9CiAKLVdlYktpdFdlYnNpdGVEYXRhTWFu
YWdlciogd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKFJlZjxXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQotewotICAgIFdlYktpdFdlYnNpdGVEYXRh
TWFuYWdlciogbWFuYWdlciA9IFdFQktJVF9XRUJTSVRFX0RBVEFfTUFOQUdFUihnX29iamVjdF9u
ZXcoV0VCS0lUX1RZUEVfV0VCU0lURV9EQVRBX01BTkFHRVIsIG51bGxwdHIpKTsKLSAgICBtYW5h
Z2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVh
dGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSk7Ci0KLSAgICByZXR1cm4gbWFuYWdlcjsKLX0KLQotQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
JiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyKiBtYW5hZ2VyKQorV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRl
RGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2Vy
KQogewogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUqIHByaXYgPSBtYW5hZ2Vy
LT5wcml2OwogICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7
CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldExvY2FsU3RvcmFnZURpcmVjdG9yeSghcHJpdi0+
bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0
KCkpKTsKKyAgICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAg
Y29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCFwcml2LT5kaXNrQ2FjaGVE
aXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0
d29ya0NhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5k
aXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAg
ICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURp
cmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+ZGlza0NhY2hlRGly
ZWN0b3J5LmdldCgpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CiAgICAgICAgIGNvbmZp
Z3VyYXRpb24tPnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoIXByaXYtPmFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Lmdl
dCgpKSk7CisgICAgICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpKTsK
ICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoIXByaXYt
PndlYlNRTERpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpKTsKKyAg
ICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0aW9u
LT5zZXRIU1RTU3RvcmFnZURpcmVjdG9yeSghcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5ID8KLSAg
ICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKSA6
IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+aHN0
c0NhY2hlRGlyZWN0b3J5LmdldCgpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIFBB
TDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgICAgICAgICAgV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5oc3RzQ2FjaGVEaXJlY3Rvcnku
Z2V0KCkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkpOworICAgICAgICBwcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0aW9uKSwgUEFMOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuICpwcml2LT53ZWJz
aXRlRGF0YVN0b3JlOwpAQCAtNTQyLDcgKzUzNCw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIXBy
aXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgcHJpdi0+bG9jYWxTdG9yYWdlRGly
ZWN0b3J5LnJlc2V0KGdfc3RyZHVwKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+bG9jYWxT
dG9yYWdlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1
cm4gcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpOwogfQogCkBAIC01NjYsNyArNTU4
LDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgogCiAgICAgaWYg
KCFwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkpIHsKICAgICAgICAgLy8gVGhlIGRlZmF1bHQgZGly
ZWN0b3J5IGFscmVhZHkgaGFzIHRoZSBzdWJkaXJlY3RvcnkuCi0gICAgICAgIHByaXYtPmRpc2tD
YWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4
KCkuZGF0YSgpKSk7CisgICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0
cmR1cChGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQog
ICAgIHJldHVybiBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CkBAIC01OTAsNyAr
NTgyLDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSkKLSAgICAgICAgcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5yZXNldChnX3N0
cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgcmV0dXJuIHBy
aXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CiAKQEAgLTYxMyw3ICs2MDUs
NyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgaWYgKCFwcml2LT5pbmRleGVkREJEaXJlY3RvcnkpCi0gICAg
ICAgIHByaXYtPmluZGV4ZWREQkRpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRh
KCkpKTsKKyAgICAgICAgcHJpdi0+aW5kZXhlZERCRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KCkudXRmOCgpLmRhdGEoKSkpOwogICAgIHJldHVybiBwcml2LT5pbmRleGVkREJEaXJlY3Rvcnku
Z2V0KCk7CiB9CiAKQEAgLTYzOCw3ICs2MzAsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFwcml2
LT53ZWJTUUxEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPndlYlNRTERpcmVjdG9yeS5yZXNldChn
X3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVj
dG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+d2ViU1FMRGlyZWN0b3J5LnJl
c2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOwogICAgIHJldHVybiBwcml2LT53ZWJTUUxE
aXJlY3RvcnkuZ2V0KCk7CiB9CiAKQEAgLTY2MSw3ICs2NTMsNyBAQCBjb25zdCBnY2hhciogd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
aWYgKCFwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPmhzdHNDYWNoZURp
cmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRIU1RT
RGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5oc3RzQ2FjaGVEaXJl
Y3RvcnkucmVzZXQoZ19zdHJkdXAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNU
U0RpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1cm4gcHJpdi0+aHN0c0NhY2hl
RGlyZWN0b3J5LmdldCgpOwogfQogCkBAIC03MzUsNyArNzI3LDcgQEAgdm9pZCB3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2goVwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpKTsKIAogICAgIEdSZWZQdHI8R1Rhc2s+IHRh
c2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyhtYW5hZ2VyLCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ss
IHVzZXJEYXRhKSk7Ci0gICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLmZldGNoRGF0YSh0b1dlYnNpdGVEYXRhVHlwZXModHlwZXMpLCBXZWJzaXRl
RGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMsIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0gKFZl
Y3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gcmVjb3JkcykgeworICAgIG1hbmFnZXItPnByaXYtPndl
YnNpdGVEYXRhU3RvcmUtPmZldGNoRGF0YSh0b1dlYnNpdGVEYXRhVHlwZXModHlwZXMpLCBXZWJz
aXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMsIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0g
KFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gcmVjb3JkcykgewogICAgICAgICBHTGlzdCogZGF0
YUxpc3QgPSBudWxscHRyOwogICAgICAgICB3aGlsZSAoIXJlY29yZHMuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICBpZiAoYXV0byogZGF0YSA9IHdlYmtpdFdlYnNpdGVEYXRhQ3JlYXRlKHJlY29y
ZHMudGFrZUxhc3QoKSkpCkBAIC04MDksNyArODAxLDcgQEAgdm9pZCB3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfcmVtb3ZlKAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbWFuYWdl
ci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEo
dG9XZWJzaXRlRGF0YVR5cGVzKHR5cGVzKSwgcmVjb3JkcywgW3Rhc2sgPSBXVEZNb3ZlKHRhc2sp
XSB7CisgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZS0+cmVtb3ZlRGF0YSh0b1dl
YnNpdGVEYXRhVHlwZXModHlwZXMpLCByZWNvcmRzLCBbdGFzayA9IFdURk1vdmUodGFzayldIHsK
ICAgICAgICAgZ190YXNrX3JldHVybl9ib29sZWFuKHRhc2suZ2V0KCksIFRSVUUpOwogICAgIH0p
OwogfQpAQCAtODYxLDcgKzg1Myw3IEBAIHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2NsZWFyKFcKIAogICAgIFdhbGxUaW1lIHRpbWVQb2ludCA9IHRpbWVTcGFuID8gV2FsbFRpbWU6
Om5vdygpIC0gU2Vjb25kczo6ZnJvbU1pY3Jvc2Vjb25kcyh0aW1lU3BhbikgOiBXYWxsVGltZTo6
ZnJvbVJhd1NlY29uZHMoMCk7CiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihn
X3Rhc2tfbmV3KG1hbmFnZXIsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKLSAg
ICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVt
b3ZlRGF0YSh0b1dlYnNpdGVEYXRhVHlwZXModHlwZXMpLCB0aW1lUG9pbnQsIFt0YXNrID0gV1RG
TW92ZSh0YXNrKV0geworICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPnJlbW92
ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKHR5cGVzKSwgdGltZVBvaW50LCBbdGFzayA9IFdURk1v
dmUodGFzayldIHsKICAgICAgICAgZ190YXNrX3JldHVybl9ib29sZWFuKHRhc2suZ2V0KCksIFRS
VUUpOwogICAgIH0pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUu
aAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwx
MiArMTksMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0
b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0
YVN0b3JlLmgiCiAKLVdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogd2Via2l0V2Vic2l0ZURhdGFN
YW5hZ2VyQ3JlYXRlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYm
KTsKLUFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0
YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciopOworV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlJiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyKik7CiB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckFkZFByb2Nlc3NQb29s
KFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciosIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKTsKIHZv
aWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyUmVtb3ZlUHJvY2Vzc1Bvb2woV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyKiwgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpOwogY29uc3QgVmVjdG9yPFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wqPiYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0UHJvY2Vz
c1Bvb2xzKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciopOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2luL0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4u
Y3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd2lu
L0FQSVdlYnNpdGVEYXRhU3RvcmVXaW4uY3BwCShub25leGlzdGVudCkKQEAgLTEsODggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1l
bnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vi
c2l0ZURhdGFTdG9yZS5oIgotCi0jaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLQotbmFtZXNw
YWNlIEFQSSB7Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KSwgIkFwcGxpY2F0aW9uQ2FjaGUiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksICJDYWNoZVN0b3JhZ2UiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKLX0KLQotU3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0g
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOwotfQot
Ci1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJTZXJ2aWNlV29ya2VycyIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VE
aXJlY3RvcnkoKSwgIkxvY2FsU3RvcmFnZSIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKLX0KLQotU3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0g
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOwotfQotCi1T
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNo
ZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpCi17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0
b3J5TmFtZSk7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUp
Ci17Ci0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFt
ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkocmV2aXNpb24gMjUwMTIyKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW1wb3J0ICJBUElQYWdlQ29uZmlndXJhdGlvbi5o
IgogI2ltcG9ydCAiQVBJU3RyaW5nLmgiCiAjaW1wb3J0ICJBUElVUkwuaCIKLSNpbXBvcnQgIkFQ
SVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb24uaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb25D
b2NvYS5oIgogI2ltcG9ydCAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCkBAIC02
NCw2ICs2Myw3IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nl
c3NQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvdGVjdGlvblNwYWNlLmgiCisjaW1wb3J0ICJXZWJz
aXRlRGF0YVN0b3JlLmgiCiAjaW1wb3J0ICJfV0tDb250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLRXJyb3JSZWNvdmVyeUF0dGVtcHRpbmcuaCIKICNpbXBvcnQgIl9X
S0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjUw
MTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpOZXR3b3JrUHJvY2Vzc1Byb3h5CiAgICAgY29ubmVjdCgpOwogCiAgICAgaWYgKGF1dG8q
IHdlYnNpdGVEYXRhU3RvcmUgPSBtX3Byb2Nlc3NQb29sLndlYnNpdGVEYXRhU3RvcmUoKSkKLSAg
ICAgICAgbV93ZWJzaXRlRGF0YVN0b3Jlcy5zZXQod2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNlc3Npb25JRCgpLCBtYWtlUmVmKHdlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKSkpOworICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmVzLnNldCh3ZWJzaXRlRGF0
YVN0b3JlLT5zZXNzaW9uSUQoKSwgbWFrZVJlZigqd2Vic2l0ZURhdGFTdG9yZSkpOwogfQogCiBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp+TmV0d29ya1Byb2Nlc3NQcm94eSgpCkBAIC0xMTI1LDE0ICsx
MTI1LDE0IEBAIFdlYnNpdGVEYXRhU3RvcmUqIE5ldHdvcmtQcm9jZXNzUHJveHk6OncKICAgICAg
ICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIAogICAgIGlmIChhdXRvKiB3ZWJzaXRl
RGF0YVN0b3JlID0gbV9wcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3JlKCkpIHsKLSAgICAgICAg
aWYgKHNlc3Npb25JRCA9PSB3ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vz
c2lvbklEKCkpCi0gICAgICAgICAgICByZXR1cm4gJndlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKTsKKyAgICAgICAgaWYgKHNlc3Npb25JRCA9PSB3ZWJzaXRlRGF0YVN0b3JlLT5z
ZXNzaW9uSUQoKSkKKyAgICAgICAgICAgIHJldHVybiB3ZWJzaXRlRGF0YVN0b3JlOwogICAgIH0K
IAogICAgIGlmIChzZXNzaW9uSUQgIT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gJkFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgcmV0
dXJuIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwog
fQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJldHJpZXZlQ2FjaGVTdG9yYWdlUGFyYW1l
dGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24g
MjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNl
CiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LmgiCiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdF
UikKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgpAQCAtMzYs
NiArMzUsNyBAQAogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9Dcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPG1lbW9yeT4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyNTAxNTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
MTUgKzI2LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFT
dG9yZS5oIgogCisjaW5jbHVkZSAiQVBJSFRUUENvb2tpZVN0b3JlLmgiCiAjaW5jbHVkZSAiQVBJ
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFSZWNv
cmQuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5oIgog
I2luY2x1ZGUgIk1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mu
aCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCisjaW5jbHVkZSAiV2ViS2l0Mklu
aXRpYWxpemUuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzQ2FjaGUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTE1Myw2ICsx
NTQsNTcgQEAgV2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKQogICAgIH0KIH0K
IAorc3RhdGljIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiYgZ2xvYmFsRGVmYXVsdERhdGFTdG9y
ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxXZWJzaXRlRGF0YVN0b3Jl
Pj4gZ2xvYmFsRGVmYXVsdERhdGFTdG9yZTsKKyAgICByZXR1cm4gZ2xvYmFsRGVmYXVsdERhdGFT
dG9yZS5nZXQoKTsKK30KKworUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREYXRhU3RvcmUoKQoreworICAgIEluaXRpYWxpemVXZWJLaXQyKCk7CisKKyAgICBh
dXRvJiBzdG9yZSA9IGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKTsKKyAgICBpZiAoIXN0b3JlKQor
ICAgICAgICBzdG9yZSA9IGFkb3B0UmVmKG5ldyBXZWJzaXRlRGF0YVN0b3JlKGRlZmF1bHREYXRh
U3RvcmVDb25maWd1cmF0aW9uKCksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkp
KTsKKworICAgIHJldHVybiAqc3RvcmU7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGVs
ZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcoKQoreworICAgIGdsb2JhbERlZmF1bHREYXRh
U3RvcmUoKSA9IG51bGxwdHI7Cit9CisKK2Jvb2wgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERh
dGFTdG9yZUV4aXN0cygpCit7CisgICAgcmV0dXJuICEhZ2xvYmFsRGVmYXVsdERhdGFTdG9yZSgp
OworfQorCitSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQoreworICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsK
KworICAgIGNvbmZpZ3VyYXRpb24tPnNldFBlcnNpc3RlbnQodHJ1ZSk7CisKKyAgICBjb25maWd1
cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGRlZmF1bHRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldENhY2hlU3RvcmFnZURpcmVj
dG9yeShkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24t
PnNldE5ldHdvcmtDYWNoZURpcmVjdG9yeShkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkp
OworICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoZGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkoKSk7CisKKyAgICBjb25maWd1cmF0aW9uLT5zZXRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeShkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSk7CisgICAg
Y29uZmlndXJhdGlvbi0+c2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShkZWZh
dWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0
aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGRl
ZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
KTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3Vy
YXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0RGV2aWNl
SWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkpOworCisgICAgY29uZmlndXJhdGlvbi0+c2V0
SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoZGVmYXVsdEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5KCkpOworCisgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Cit9CisKIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6bWF5YmVSZWdpc3RlcldpdGhTZXNzaW9uSURNYXAoKQogewog
ICAgIGlmIChtX3Nlc3Npb25JRCAhPSBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
KSB7CkBAIC0xNzI2LDcgKzE3NzgsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc2V0Q2Fj
aGVNYXhBZ2VDCiBib29sIFdlYnNpdGVEYXRhU3RvcmU6OmlzQXNzb2NpYXRlZFByb2Nlc3NQb29s
KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCkgY29uc3QKIHsKICAgICBpZiAoYXV0byogcHJv
Y2Vzc1Bvb2xEYXRhU3RvcmUgPSBwcm9jZXNzUG9vbC53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAg
ICAgIHJldHVybiAmcHJvY2Vzc1Bvb2xEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKSA9PSB0
aGlzOworICAgICAgICByZXR1cm4gcHJvY2Vzc1Bvb2xEYXRhU3RvcmUgPT0gdGhpczsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTIwNTYsNCArMjEwOCwyNiBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OmdldExvY2FsU3RvcmFnZURlCiAgICAgQVNTRVJUKCFjb21wbGV0aW9uSGFuZGxlcik7
CiB9CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVu
dC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjM2OSBhbmQgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjM3MAorICAgIHJldHVybiBX
VEY6OlN0cmluZygpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQuCisgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Cit9CisjZW5kaWYKKworI2lmICFVU0Uo
R0xJQikKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hT
YWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIC8vIE5vdCBpbXBsZW1lbnRlZC4KKyAgICBy
ZXR1cm4gV1RGOjpTdHJpbmcoKTsKK30KKyNlbmRpZgorCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShy
ZXZpc2lvbiAyNTAxNTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDExICs5MiwxOSBAQCBlbnVt
IGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRTdGF0dXM7CiBzdHJ1Y3QgUGx1Z2luTW9kdWxlSW5m
bzsKICNlbmRpZgogCi1jbGFzcyBXZWJzaXRlRGF0YVN0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8
V2Vic2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBJZGVudGlmaWVkPFdlYnNpdGVEYXRhU3RvcmU+LCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2Vic2l0ZURhdGFTdG9yZT4gIHsKK2NsYXNzIFdlYnNpdGVE
YXRhU3RvcmUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpXZWJz
aXRlRGF0YVN0b3JlPiwgcHVibGljIElkZW50aWZpZWQ8V2Vic2l0ZURhdGFTdG9yZT4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxXZWJzaXRlRGF0YVN0b3JlPiAgewogcHVibGljOgorICAgIHN0YXRp
YyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gZGVmYXVsdERhdGFTdG9yZSgpOworICAgIHN0YXRpYyBi
b29sIGRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKKyAgICBzdGF0aWMgdm9pZCBkZWxldGVEZWZh
dWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOworICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24+IGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCk7CisgICAgCiAg
ICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50KCk7CiAg
ICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoUmVmPFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7Ci0gICAgdmlydHVhbCB+V2Vic2l0
ZURhdGFTdG9yZSgpOworCisgICAgV2Vic2l0ZURhdGFTdG9yZShQQUw6OlNlc3Npb25JRCk7Cisg
ICAgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYs
IFBBTDo6U2Vzc2lvbklEKTsKKyAgICB+V2Vic2l0ZURhdGFTdG9yZSgpOwogCiAgICAgc3RhdGlj
IFdlYnNpdGVEYXRhU3RvcmUqIGV4aXN0aW5nTm9uRGVmYXVsdERhdGFTdG9yZUZvclNlc3Npb25J
RChQQUw6OlNlc3Npb25JRCk7CiAKQEAgLTI2MSwxMCArMjY5LDIzIEBAIHB1YmxpYzoKICAgICBT
T0F1dGhvcml6YXRpb25Db29yZGluYXRvciYgc29BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IoKSB7
IHJldHVybiBtX3NvQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLmdldCgpOyB9CiAjZW5kaWYKIAor
ICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCk7CisjaWYgVVNFKEdMSUIpCisgICAgc3RhdGljIFdURjo6U3Ry
aW5nIGRlZmF1bHRIU1RTRGlyZWN0b3J5KCk7CisjZW5kaWYKKyAgICBzdGF0aWMgV1RGOjpTdHJp
bmcgZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdURjo6
U3RyaW5nIGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpT
dHJpbmcgZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJp
bmcgZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpT
dHJpbmcgZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHN0
YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnko
KTsKKyAgICAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShQQUw6OlNl
c3Npb25JRCk7Ci0gICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShSZWY8V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24+JiYsIFBBTDo6U2Vzc2lvbklEKTsKLQogICAgIHZvaWQgZmV0Y2hE
YXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRl
RGF0YUZldGNoT3B0aW9uPiwgUmVmUHRyPFdvcmtRdWV1ZT4mJiwgRnVuY3Rpb248dm9pZChWZWN0
b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4mJiBhcHBseSk7CiAKICAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZSgpOwpAQCAtMjc1LDYgKzI5NiwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZv
cm1TZXROZXR3b3JrUGFyYW1ldGVycyhXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyYpOwogI2Vu
ZGlmCiAKKyAgICBXZWJzaXRlRGF0YVN0b3JlKCk7CisKKyAgICBlbnVtIGNsYXNzIFNob3VsZENy
ZWF0ZURpcmVjdG9yeSB7IE5vLCBZZXMgfTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgdGVtcERp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0
b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5ID0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpZ
ZXMpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CisgICAgc3RhdGlj
IFdURjo6U3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKKwogICAgIEhhc2hTZXQ8UmVmUHRy
PFdlYlByb2Nlc3NQb29sPj4gcHJvY2Vzc1Bvb2xzKHNpemVfdCBjb3VudCA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCksIGJvb2wgZW5zdXJlQVBvb2xFeGlzdHMgPSB0cnVlKSBj
b25zdDsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjUwMTUwKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKIAotI2lu
Y2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3Jl
LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tCShyZXZpc2lvbiAyNTAxNTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogI2lt
cG9ydCAiQ29va2llU3RvcmFnZVV0aWxzQ0YuaCIKKyNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMu
aCIKICNpbXBvcnQgIlN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgi
CkBAIC0yMjksNCArMjMwLDE2MSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtUmVt
b3ZlUmVjCiAgICAgV2ViQ29yZTo6cmVtb3ZlUmVjZW50bHlNb2RpZmllZFJlY2VudFNlYXJjaGVz
KG9sZGVzdFRpbWVUb1JlbW92ZSk7CiB9CiAKK05TU3RyaW5nICpXZWJEYXRhYmFzZURpcmVjdG9y
eURlZmF1bHRzS2V5ID0gQCJXZWJEYXRhYmFzZURpcmVjdG9yeSI7CitOU1N0cmluZyAqV2ViU3Rv
cmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGhQcmVmZXJlbmNlS2V5IjsKK05TU3RyaW5nICpXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5RGVm
YXVsdHNLZXkgPSBAIldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnkiOworTlNTdHJpbmcgKldlYktp
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSI7CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgIC8vIFRoaXMgcXVpcmsgdXNlZCB0byBtYWtlIHRoZXNlIGFwcHMgc2hhcmUgYXBwbGlj
YXRpb24gY2FjaGUgc3RvcmFnZSwgYnV0IGRvZXNuJ3QgYWNjb21wbGlzaCB0aGF0IGFueSBtb3Jl
LgorICAgIC8vIFByZXNlcnZpbmcgaXQgYXZvaWRzIHRoZSBuZWVkIHRvIG1pZ3JhdGUgZGF0YSB3
aGVuIHVwZ3JhZGluZy4KKyAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSBzaG91bGQganVzdCBoYXZl
IFNhZmFyaSwgV2ViQXBwLCBhbmQgd2ViYm9va21hcmtzZCBjcmVhdGUgYSBkYXRhIHN0b3JlIHdp
dGgKKyAgICAvLyB0aGlzIGFwcGxpY2F0aW9uIGNhY2hlIHBhdGgsIGJ1dCB0aGF0J3Mgbm90IHN1
cHBvcnRlZCBhcyBvZiByaWdodCBub3cuCisgICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9u
Ojppc01vYmlsZVNhZmFyaSgpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkFwcCgp
IHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1dlYkJvb2ttYXJrc0QoKSkgeworICAgICAg
ICBOU1N0cmluZyAqY2FjaGVQYXRoID0gW05TSG9tZURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIkxpYnJhcnkvQ2FjaGVzL2NvbS5hcHBsZS5XZWJBcHBDYWNoZSJd
OworCisgICAgICAgIHJldHVybiBXZWJLaXQ6OnN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBh
dGgoY2FjaGVQYXRoLnN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGgpOworICAgIH0KKyNlbmRpZgor
CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJPZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkNhY2hlU3RvcmFnZSIpOworfQorCitX
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Ik5ldHdvcmtDYWNoZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhQ2FjaGUiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKK3sKKyAg
ICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIklu
ZGV4ZWREQiIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNhY2hlRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJTZXJ2aWNlV29ya2VycyIpOworfQorCitX
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIkxvY2FsU3RvcmFnZSIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUtleXMiKTsKK30K
KworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oIldlYlNRTCIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCit7CisgICAgcmV0dXJu
IHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHRlbXBE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkphdmFTY3JpcHRDb3JlRGVidWciLCBT
aG91bGRDcmVhdGVEaXJlY3Rvcnk6Ok5vKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0
cmluZyYgZGlyZWN0b3J5TmFtZSwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5IHNob3VsZENyZWF0ZURp
cmVjdG9yeSkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBz
dGF0aWMgTlNVUkwgKnRlbXBVUkw7CisgICAgCisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2Vu
LCBeeworICAgICAgICBOU1VSTCAqdXJsID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpOU1RlbXBv
cmFyeURpcmVjdG9yeSgpIGlzRGlyZWN0b3J5OllFU107CisgICAgICAgIGlmICghdXJsKQorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgCisgICAgICAg
IGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKKyAgICAgICAgICAgIE5TU3Ry
aW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50
aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCisgICAgICAgICAgICAg
ICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNz
TmFtZTsKKyAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgdGVtcFVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldl
YktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOworICAgIH0pOworICAgIAorICAgIE5TVVJM
ICp1cmwgPSBbdGVtcFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFt
ZSBpc0RpcmVjdG9yeTpZRVNdOworCisgICAgaWYgKHNob3VsZENyZWF0ZURpcmVjdG9yeSA9PSBT
aG91bGRDcmVhdGVEaXJlY3Rvcnk6OlllcworICAgICAgICAmJiAoIVtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVE
aXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pKQorICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKKyAgICAKKyAg
ICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwor
fQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAg
ICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBzdGF0aWMgTlNVUkwgKmNh
Y2hlVVJMOworCisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBOU1VS
TCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6
TlNDYWNoZXNEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0ZUZv
clVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKKyAgICAgICAgaWYgKCF1cmwp
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgICAgIGlm
ICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKKyAgICAgICAgICAgIE5TU3RyaW5n
ICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZp
ZXI7CisgICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAg
YnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFt
ZTsKKyAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1
bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICAgICAgfQorCisgICAgICAgIGNh
Y2hlVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0Rp
cmVjdG9yeTpZRVNdIHJldGFpbl07CisgICAgfSk7CisKKyAgICBOU1VSTCAqdXJsID0gW2NhY2hl
VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5
OllFU107CisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURp
cmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0
ZXM6bmlsIGVycm9yOm51bGxwdHJdKQorICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVh
dGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKKworICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0
aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNl
X3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBOU1VSTCAqd2Vic2l0ZURhdGFVUkw7CisKKyAgICBk
aXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIE5TVVJMICp1cmwgPSBbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9yeTpOU0xpYnJhcnlEaXJlY3Rv
cnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNy
ZWF0ZTpOTyBlcnJvcjpudWxscHRyXTsKKyAgICAgICAgaWYgKCF1cmwpCisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgICAgIHVybCA9IFt1cmwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdOworCisgICAg
ICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKKyAgICAgICAgICAgIE5T
U3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlk
ZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCisgICAgICAgICAg
ICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9j
ZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICAgICAgfQorCisgICAg
ICAgIHdlYnNpdGVEYXRhVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
V2Vic2l0ZURhdGEiIGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsKKyAgICB9KTsKKworICAgIE5T
VVJMICp1cmwgPSBbd2Vic2l0ZURhdGFVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRp
cmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVE
aXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOworCisgICAgcmV0
dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKK30KKwog
fQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvd2luL1dlYnNpdGVE
YXRhU3RvcmVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcAkocmV2aXNpb24gMjUwMTIyKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvd2luL1dlYnNpdGVEYXRhU3Rv
cmVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFTdG9yZS5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00
NSw0ICs0Niw1OSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtUmVtb3ZlUmVjCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLCAiQXBwbGljYXRpb25DYWNoZSIpOworfQorCitTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkNhY2hlU3RvcmFnZSIpOworfQorCitTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCit7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk5ldHdvcmtDYWNoZSIpOwor
fQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiSW5k
ZXhlZERCIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKSwgIlNlcnZpY2VXb3JrZXJzIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTG9jYWxTdG9yYWdlIik7Cit9CisKK1N0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCit7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIk1lZGlhS2V5U3RvcmFnZSIp
OworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2Vi
U1FMIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKSwgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKK30KKworU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLCBkaXJlY3RvcnlOYW1lKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6Ondl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYg
ZGlyZWN0b3J5TmFtZSkKK3sKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgp
LCBkaXJlY3RvcnlOYW1lKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5j
cHAJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vi
UHJvY2Vzc1Byb3h5R0xpYi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDcgQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoTwogICAgICAgICBpZiAoIWRhdGFT
dG9yZSkgewogICAgICAgICAgICAgLy8gUHJld2FybWVkIHByb2Nlc3NlcyBkb24ndCBoYXZlIGEg
V2Vic2l0ZURhdGFTdG9yZSB5ZXQsIHNvIHVzZSB0aGUgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3Jl
IGZyb20gdGhlIFdlYlByb2Nlc3NQb29sLgogICAgICAgICAgICAgLy8gVGhlIHByb2Nlc3Mgd29u
J3QgYmUgdXNlZCBpZiBjdXJyZW50IFdlYnNpdGVEYXRhU3RvcmUgaXMgZGlmZmVyZW50IHRoYW4g
dGhlIFdlYlByb2Nlc3NQb29sIHByaW1hcnkgb25lLgotICAgICAgICAgICAgaWYgKGF1dG8qIGFw
aURhdGFTdG9yZSA9IG1fcHJvY2Vzc1Bvb2wtPndlYnNpdGVEYXRhU3RvcmUoKSkKLSAgICAgICAg
ICAgICAgICBkYXRhU3RvcmUgPSAmYXBpRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCk7Cisg
ICAgICAgICAgICBkYXRhU3RvcmUgPSBtX3Byb2Nlc3NQb29sLT53ZWJzaXRlRGF0YVN0b3JlKCk7
CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoZGF0YVN0b3JlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3Bw
CShyZXZpc2lvbiAyNTAxMjIpCShmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDoyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IElnYWxpYSBTLkwu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElXZWJzaXRlRGF0
YVN0b3JlLmgiCisKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9n
bGliL0dVbmlxdWVQdHIuaD4KKworI2lmIFBMQVRGT1JNKEdUSykKKyNkZWZpbmUgQkFTRV9ESVJF
Q1RPUlkgIndlYmtpdGd0ayIKKyNlbGlmIFBMQVRGT1JNKFdQRSkKKyNkZWZpbmUgQkFTRV9ESVJF
Q1RPUlkgIndwZSIKKyNlbmRpZgorCituYW1lc3BhY2UgQVBJIHsKKworV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQoreworICAg
IHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVD
VE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiYXBwbGljYXRpb25zIik7Cit9CisKKy8vIEZJWE1FOiBU
aGUgb3RoZXIgZGlyZWN0b3JpZXMgaW4gdGhpcyBmaWxlIGFyZSBzaGFyZWQgYmV0d2VlbiBhbGwg
YXBwbGljYXRpb25zIHVzaW5nIFdlYktpdEdUSy4KKy8vIFdoeSBpcyBvbmx5IHRoaXMgZGlyZWN0
b3J5IG5hbWVzcGFjZWQgdG8gYSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uPworV1RGOjpTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCit7CisgICAg
cmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJXZWJLaXRDYWNoZSIpKTsKK30KKwor
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9y
eSgpCit7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3Jh
Z2UiKSk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9T
ICJkYXRhYmFzZXMiIEdfRElSX1NFUEFSQVRPUl9TICJpbmRleGVkZGIiKTsKK30KKworV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAic2VydmljZXdv
cmtlcnMiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJs
b2NhbHN0b3JhZ2UiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBB
UkFUT1JfUyAibWVkaWFrZXlzIik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkg
R19ESVJfU0VQQVJBVE9SX1MgImRldmljZWlkaGFzaHNhbHRzIik7Cit9CisKK1dURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCit7Cisg
ICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJB
U0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJkYXRhYmFzZXMiKTsKK30KKworV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJ
UkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKK3sKKyAgICBy
ZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9E
SVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKK30K
KworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCkp
LCBkaXJlY3RvcnlOYW1lKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJp
bmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOworfQorCit9IC8vIG5h
bWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURh
dGFTdG9yZUdMaWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5o
IgogCiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5p
cXVlUHRyLmg+CkBAIC0zNSw3ICszNSw3IEBACiAjZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUi
CiAjZW5kaWYKIAotbmFtZXNwYWNlIEFQSSB7CituYW1lc3BhY2UgV2ViS2l0IHsKIAogV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KQogewpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyNTAxNDgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDYgQEAKIAkJ
MUEzMDA2NkUxMTEwRjRGNzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzAwNjZDMTExMEY0Rjcw
MDMxOTM3QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07CiAJCTFBMzM0REVEMTZERThG
ODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTMzNERFQjE2REU4Rjg4MDA2
QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkxQTMz
NERFRTE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzMzRERUMxNkRFOEY4ODAw
NkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCAqLzsgfTsKLQkJMUEzNjM1QUExQTMx
NDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzYzNUE4MUEzMTQ0QTMwMEVENjE5NyAvKiBB
UElXZWJzaXRlRGF0YVN0b3JlLmggKi87IH07CiAJCTFBM0M4ODgwMThBNUFCQUUwMEM0Qzk2MiAv
KiBXS1ByZWZlcmVuY2VzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBM0M4ODdGMThBNUFCQUUwMEM0Qzk2MiAvKiBXS1ByZWZlcmVuY2Vz
SW50ZXJuYWwuaCAqLzsgfTsKIAkJMUEzQ0MxNjcxODkwNkFDRjAwMUU2RUQ4IC8qIFdLV2ViVmll
dy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzQ0Mx
NjUxODkwNkFDRjAwMUU2RUQ4IC8qIFdLV2ViVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJMUEzQ0MxNjkxODkwN0VCMDAwMUU2RUQ4IC8qIFdL
UHJvY2Vzc1Bvb2xJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUEzQ0MxNjgxODkwN0VCMDAwMUU2RUQ4IC8qIFdLUHJvY2Vzc1Bvb2xJbnRl
cm5hbC5oICovOyB9OwpAQCAtMjEyMyw5ICsyMTIyLDYgQEAKIAkJMUEzMzRERUExNkRFOEI2ODAw
NkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFN0b3JhZ2VBcmVhTWFw
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTMzNERFQjE2REU4
Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2
ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TdG9yYWdlQXJlYU1hcE1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFB
MzM0REVDMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQkxQTM2MzVBNzFBMzE0NEEzMDBFRDYx
OTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBUElXZWJzaXRlRGF0YVN0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMUEzNjM1QTgxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJV2Vic2l0ZURhdGFTdG9yZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTM2MzVBQjFBMzE0NUU1MDBFRDYxOTcg
LyogQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQTNBNzNDQjFBNDhDNkQ0MDA3MjMxQjMgLyogQVBJUGFnZUdyb3Vw
SGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVBhZ2VH
cm91cEhhbmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBM0E3M0NDMUE0
OEM2RDQwMDcyMzFCMyAvKiBBUElQYWdlR3JvdXBIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVBJUGFnZUdyb3VwSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBM0M4ODdGMThBNUFCQUUwMEM0Qzk2MiAvKiBXS1ByZWZlcmVuY2VzSW50ZXJu
YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcmVmZXJlbmNlc0ludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MzcxLDcgKzYzNjcsNiBAQAog
CQkJCTdDRUZBOTYwMUFDMDk5OTMwMEI5MTBGRCAvKiBBUElDb250ZW50UnVsZUxpc3RTdG9yZUNv
Y29hLm1tICovLAogCQkJCTVDQTQ2RTdBMjFGMUEyMzkwMENFODZCNCAvKiBBUElIVFRQQ29va2ll
U3RvcmVDb2NvYS5tbSAqLywKIAkJCQlGRUQzQzFEQTFCNDQ3QUU4MDBFMEVCN0YgLyogQVBJU2Vy
aWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0gKi8sCi0JCQkJMUEzNjM1QUIxQTMxNDVFNTAwRUQ2
MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSAqLywKIAkJCQkxQUZERTY0MzE5NTEw
QjU1MDBDNDhGRkEgLyogTGVnYWN5QnVuZGxlRm9yQ2xhc3MubW0gKi8sCiAJCQkJMUMyMDkzNUUy
MjMxOENCMDAwMDI2QTM5IC8qIE5TQXR0cmlidXRlZFN0cmluZy5oICovLAogCQkJCTFDMjA5MzVG
MjIzMThDQjAwMDAyNkEzOSAvKiBOU0F0dHJpYnV0ZWRTdHJpbmcubW0gKi8sCkBAIC03OTgzLDgg
Kzc5NzgsNiBAQAogCQkJCTJEODc4NjIyMUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5bGVT
aGVldC5oICovLAogCQkJCTFBRTI4NjgxMUM3RjkzODYwMDY5QUM0RiAvKiBBUElXZWJzaXRlRGF0
YVJlY29yZC5jcHAgKi8sCiAJCQkJMUFFMjg2ODIxQzdGOTM4NjAwNjlBQzRGIC8qIEFQSVdlYnNp
dGVEYXRhUmVjb3JkLmggKi8sCi0JCQkJMUEzNjM1QTcxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdl
YnNpdGVEYXRhU3RvcmUuY3BwICovLAotCQkJCTFBMzYzNUE4MUEzMTQ0QTMwMEVENjE5NyAvKiBB
UElXZWJzaXRlRGF0YVN0b3JlLmggKi8sCiAJCQkJNUM4REQzN0QxRkU0NTAxMTAwRjJBNTU2IC8q
IEFQSVdlYnNpdGVQb2xpY2llcy5jcHAgKi8sCiAJCQkJNUM4REQzN0MxRkU0NTAxMTAwRjJBNTU2
IC8qIEFQSVdlYnNpdGVQb2xpY2llcy5oICovLAogCQkJCTFBNjU2M0UyMUI3QThDNTAwMDlDRjc4
NyAvKiBBUElXaW5kb3dGZWF0dXJlcy5jcHAgKi8sCkBAIC05Mzg4LDcgKzkzODEsNiBAQAogCQkJ
CUM1RTFBRkVEMTZCMjEwMTcwMDZDQzFGMiAvKiBBUElXZWJBcmNoaXZlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDNUUxQUZFRjE2QjIxMDI5MDA2Q0MxRjIgLyogQVBJV2ViQXJjaGl2ZVJlc291cmNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUyODY4NDFDN0Y5Mzg2MDA2OUFDNEYgLyogQVBJV2Vi
c2l0ZURhdGFSZWNvcmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBMzYzNUFBMUEzMTQ0QTMwMEVE
NjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTY1NjNF
NTFCN0E4QzUwMDA5Q0Y3ODcgLyogQVBJV2luZG93RmVhdHVyZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY0OEQyQTg1MjE1ODNBN0UwMEM2NzUyQiAvKiBBcHBLaXRTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBRDRDMTkzMUIzOUYzMzIwMEFCQzI4RSAvKiBBcHBsaWNhdGlvblN0YXRlVHJhY2tl
ci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFD
YWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNw
cAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2Fj
aGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcg
KzM3LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlcjo6c2V0V2Vic2l0ZURhdGFTdG9yZShjb25zdCBXZWJQcm9jZXNzRGF0YVN0b3Jl
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBBU1NFUlQoIXBhcmFtZXRlcnMubWVkaWFL
ZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CiAgICAgbV9tZWRpYUtleVN0b3JhZ2VEaXJl
Y3RvcnkgPSBwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379282</attachid>
            <date>2019-09-20 16:35:01 -0700</date>
            <delta_ts>2019-09-20 17:12:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201655-20190920163500.patch</filename>
            <type>text/plain</type>
            <size>169422</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDE2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA5LTIwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHVu
bmVjZXNzYXJ5IGFic3RyYWN0aW9ucyBhcm91bmQgV2Vic2l0ZURhdGFTdG9yZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNjU1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VNYW5hZ2VyOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorCiAyMDE5LTA5LTIwICBLZWl0aCBSb2xs
aW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgY2hlY2sgb2Ygc2V0U291
cmNlQXBwUGlkIHNlbGVjdG9yIHRoYXQncyBubyBsb25nZXIgbmVlZGVkCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2Ev
RGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0JKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lk
IERhdGFiYXNlTWFuYWdlcjo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VQYXRoKQogeworICAgIGlmIChkYXRhYmFzZVBhdGguaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKICAgICAvLyBUaGUgcGF0aCBuZWVkcyB0byBleGlzdCBzbyB0aGF0IHdlIGNhbiByZXNv
bHZlIGl0IHZpYSByZWFsUGF0aCgpLgogICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhk
YXRhYmFzZVBhdGgpKQogICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoZGF0
YWJhc2VQYXRoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTAxNjEpCisrKyBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzMyBAQAorMjAxOS0wOS0y
MCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlbW92ZSB1bm5lY2Vzc2FyeSBhYnN0cmFjdGlvbnMgYXJvdW5kIFdlYnNpdGVEYXRhU3RvcmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTY1NQor
CisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogUGxhdGZvcm1G
VFcuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzR1RL
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzV1BFLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQ
Q29va2llU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0
aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3Rv
cmUpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0V2Vic2l0ZURhdGFTdG9y
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAgICAgICAg
KEFQSTo6V2Vic2l0ZVBvbGljaWVzOjpXZWJzaXRlUG9saWNpZXMpOgorICAgICAgICAoQVBJOjpX
ZWJzaXRlUG9saWNpZXM6OnNldFdlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoQVBJOjpXZWJz
aXRlUG9saWNpZXM6OmRhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBv
bGljaWVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0
Q2FjaGVNb2RlbCk6CisgICAgICAgIChXS0NvbnRleHRHZXRDYWNoZU1vZGVsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vi
c2l0ZURhdGFTdG9yZUdldFR5cGVJRCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVHZXRE
ZWZhdWx0RGF0YVN0b3JlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUNyZWF0ZU5vblBl
cnNpc3RlbnREYXRhU3RvcmUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ3JlYXRlV2l0
aENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlR2V0SFRUUENvb2tp
ZVN0b3JlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEZWJ1Z01vZGVXaXRoQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVi
dWdNb2RlKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0U2Vl
bik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2UpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ZlcnlQcmV2
YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVEdW1wUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3Rp
Y3NWZXJ5UHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNT
dGF0aXN0aWNzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcik6CisgICAgICAgIChXS1dlYnNp
dGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZUlzU3RhdGlzdGljc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5n
VG8pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJ
bnRlcmFjdGlvbik6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NIYXNI
YWRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc0dyYW5kZmF0aGVyZWQpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0
aWNzR3JhbmRmYXRoZXJlZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAg
ICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3Rh
dGlzdGljc1RvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyk6CisgICAgICAgIChXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzVG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20pOgorICAgICAgICAo
V0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29y
YXRpb24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1RpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMpOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKToKKyAgICAgICAgKFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkpOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5u
ZWQpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0lzUnVubmluZ1Rl
c3QpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1Nob3VsZENsYXNz
aWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKToKKyAgICAgICAgKFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZCk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTWluaW11bVRpbWVC
ZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NHcmFuZGZhdGhlcmluZ1RpbWUpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc01heFN0YXRpc3RpY3NFbnRyaWVzKToKKyAgICAgICAgKFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NQcnVuZUVudHJpZXNEb3duVG8pOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUp
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnMpOgorICAgICAgICAoV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc0NsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbCk6CisgICAgICAg
IChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmcpOgor
ICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZSk6Cisg
ICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXApOgor
ICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbik6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZSk6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxGZXRjaENhY2hlcyk6
CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hlRm9yT3JpZ2luKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXMpOgor
ICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9jYWxTdG9yYWdlKToKKyAgICAgICAg
KFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKToK
KyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVPcmlnaW5zKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplRm9yT3JpZ2luKToKKyAgICAg
ICAgKFdLV2Vic2l0ZURhdGFTdG9yZUNvcHlTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV0tXZWJzaXRl
RGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdKToK
KyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdKToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIGh0dHBDb29raWVTdG9yZV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6bW9kaWZpZWRTaW5jZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOmZv
ckRhdGFSZWNvcmRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgX2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKToKKyAgICAgICAgKCtbV0tXZWJzaXRl
RGF0YVN0b3JlIF9kZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZ10pOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2luaXRXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczp3aXRoT3B0aW9u
czpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGVdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2NhY2hlU3RvcmFnZURp
cmVjdG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldENhY2hlU3RvcmFn
ZURpcmVjdG9yeTpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9y
ZSBfc2V0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTpdKToKKyAgICAgICAgKC1b
V0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRCb3VuZEludGVyZmFjZUlkZW50aWZpZXI6XSk6CisgICAg
ICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyXSk6Cisg
ICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6XSk6
CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dzQ2VsbHVsYXJBY2Nlc3NdKToK
KyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXRQcm94eUNvbmZpZ3VyYXRpb246XSk6
CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc291cmNlQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyXSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0U291cmNlQXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3Rv
cmUgX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcl0pOgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3NldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmll
cjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm94eUNvbmZpZ3VyYXRpb25d
KToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeV0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTZXRTaG91bGRTdWJtaXRUZWxlbWV0cnk6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURh
dGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zv
cjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9z
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldFByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRJc1ByZXZhbGVudERvbWFpbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERv
bWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3Jl
IF9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOl0pOgorICAgICAgICAoLVtXS1dlYnNp
dGVEYXRhU3RvcmUgX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyXSk6CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHNldF9kZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZUludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQ
SVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdFdl
YnNpdGVEYXRhTWFuYWdlclNldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdFdlYnNpdGVEYXRh
TWFuYWdlckdldERhdGFTdG9yZSk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KToKKyAgICAgICAgKHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkpOgorICAgICAgICAod2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVj
dG9yeSk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRk
Yl9kaXJlY3RvcnkpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93
ZWJzcWxfZGlyZWN0b3J5KToKKyAgICAgICAgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfaHN0c19jYWNoZV9kaXJlY3RvcnkpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2ZldGNoKToKKyAgICAgICAgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9yZW1v
dmUpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyKToKKyAgICAg
ICAgKHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3b3JrUHJvY2Vzc1Byb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6d2Vic2l0ZURhdGFTdG9yZUZyb21T
ZXNzaW9uSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3dlYlByb2Nlc3ND
YWNoZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6dHJ5VGFrZVByZXdhcm1lZFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjptYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0
d29ya0NhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRp
cmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFT
Y3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2xv
YmFsRGVmYXVsdERhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmlzQXNzb2NpYXRlZFByb2Nlc3NQb29sIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3Jl
V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGli
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExhdW5j
aE9wdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vi
c2l0ZURhdGFTdG9yZUdMaWIuY3BwLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVk
LgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGly
ZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnkp
OiBEZWxldGVkLgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxT
dG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGly
ZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eSk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6c2V0
V2Vic2l0ZURhdGFTdG9yZSk6CisKIDIwMTktMDktMjAgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzb21lIHN1cHBvcnQgZm9yIDwgaU9TIDEzCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1GVFcuY21ha2UJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1GVFcuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDYgQEAg
bGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9BUEkvQy93aW4vV0tW
aWV3LmNwcAogCi0gICAgVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFTdG9yZVdpbi5j
cHAKLQogICAgIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlD
b29yZGluYXRlZEdyYXBoaWNzLmNwcAogCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL3dpbi9Qcm9j
ZXNzTGF1bmNoZXJXaW4uY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHJldmlzaW9u
IDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDggKzQ2LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKIAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcAogCi0gICAgVUlQcm9jZXNzL0FQSS93aW4vQVBJ
V2Vic2l0ZURhdGFTdG9yZVdpbi5jcHAKLQogICAgIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAogCiAgICAgVUlQcm9j
ZXNzL0xhdW5jaGVyL3dpbi9Qcm9jZXNzTGF1bmNoZXJXaW4uY3BwCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJ
KHJldmlzaW9uIDI1MDE0OCkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTMxOCw3ICszMTgsNiBAQCBVSVByb2Nlc3MvQVBJL0FQSVVSTFNjaGVtZVRhc2su
Y3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuY3BwCiBVSVByb2Nlc3MvQVBJ
L0FQSVVzZXJTY3JpcHQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcAot
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAogVUlQcm9jZXNzL0FQSS9BUElX
ZWJzaXRlUG9saWNpZXMuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSVdpbmRvd0ZlYXR1cmVzLmNwcAog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI3NCw3ICsyNzQsNiBA
QCBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tCiBVSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0KIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJSFRUUENvb2tpZVN0b3JlQ29jb2EubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2Vy
aWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0KLVVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL0xlZ2FjeUJ1bmRsZUZvckNs
YXNzLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL05TQXR0cmlidXRlZFN0cmluZy5tbQogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdC5tbQpJbmRleDogU291cmNlL1dlYktpdC9T
b3VyY2VzR1RLLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0
CShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDYgQEAgVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1RleHRD
aGVja2VyR3RrLmNwcAogVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuY3BwCiAKIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9BUElDb250ZW50UnVsZUxpc3RTdG9yZUdMaWIuY3BwIEBuby11bmlmeQotVUlQ
cm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBAbm8tdW5pZnkKIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEFwcGxpY2F0aW9uSW5mby5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcCBAbm8tdW5pZnkKQEAgLTIzMiw2
ICsyMzEsNyBAQCBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIEBuCiBVSVBy
b2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCiBVSVByb2Nlc3MvZ2xpYi9XZWJQ
cm9jZXNzUG9vbEdMaWIuY3BwCiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNw
cAorVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogCiBV
SVByb2Nlc3MvZ3N0cmVhbWVyL0luc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3QuY3BwCiBVSVByb2Nlc3MvZ3N0cmVhbWVyL1dlYlBhZ2VQcm94eUdTdHJlYW1lci5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9Tb3VyY2VzV1BFLnR4dAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktp
dC9Tb3VyY2VzV1BFLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw2IEBAIFVJUHJv
Y2Vzcy9BUEkvQy9XS1ZpZXdwb3J0QXR0cmlidXRlcy5jcHAKIFVJUHJvY2Vzcy9BUEkvQy93cGUv
V0tWaWV3LmNwcAogCiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVH
TGliLmNwcCBAbm8tdW5pZnkKLVVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3Jl
R0xpYi5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBA
bm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBcHBsaWNhdGlvbkluZm8uY3BwIEBu
by11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5j
cHAgQG5vLXVuaWZ5CkBAIC0xOTIsNiArMTkxLDcgQEAgVUlQcm9jZXNzL2dlb2NsdWUvR2VvY2x1
ZUdlb2xvY2F0aW9uUHJvdgogCiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3Bw
CiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAorVUlQcm9jZXNzL2dsaWIv
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIEBuby11bmlmeQogCiBVSVByb2Nlc3MvTGF1bmNoZXIv
Z2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnVi
Ymxld3JhcExhdW5jaGVyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuY3BwCShyZXZpc2lvbiAyNTAxMjIp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5LmgiCiAKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uLmgiCi0jaW5j
bHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2ll
cy5oIgogI2luY2x1ZGUgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZVByb3h5LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNiw3ICs0MTYsNyBAQCBXZWJQYWdlUHJveHk6Oldl
YlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwCiAgICAgLCBtX3ByZWZlcmVuY2VzKCptX2NvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VzKCkpCiAgICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcigqbV9j
b25maWd1cmF0aW9uLT51c2VyQ29udGVudENvbnRyb2xsZXIoKSkKICAgICAsIG1fdmlzaXRlZExp
bmtTdG9yZSgqbV9jb25maWd1cmF0aW9uLT52aXNpdGVkTGlua1N0b3JlKCkpCi0gICAgLCBtX3dl
YnNpdGVEYXRhU3RvcmUobV9jb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNp
dGVEYXRhU3RvcmUoKSkKKyAgICAsIG1fd2Vic2l0ZURhdGFTdG9yZSgqbV9jb25maWd1cmF0aW9u
LT53ZWJzaXRlRGF0YVN0b3JlKCkpCiAgICAgLCBtX3VzZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2Vu
dCgpKQogICAgICwgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB7IG1fY29uZmlndXJh
dGlvbi0+b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKSB9CiAgICAgLCBtX3RyZWF0c1NI
QTFDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKG1fY29uZmlndXJhdGlvbi0+dHJlYXRzU0hBMVNpZ25l
ZENlcnRpZmljYXRlc0FzSW5zZWN1cmUoKSkKQEAgLTI4NjYsOCArMjg2Niw4IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2wKICAgICBPcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiBkYXRhOwogICAgIGlmIChwb2xpY2llcykgewogICAgICAgICBkYXRhID0gcG9s
aWNpZXMtPmRhdGEoKTsKLSAgICAgICAgaWYgKHBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCkg
JiYgJnBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3
ZWJzaXRlRGF0YVN0b3JlLnB0cigpKSB7Ci0gICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0g
cG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAg
ICBpZiAocG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKSAmJiBwb2xpY2llcy0+d2Vic2l0ZURh
dGFTdG9yZSgpICE9IHdlYnNpdGVEYXRhU3RvcmUucHRyKCkpIHsKKyAgICAgICAgICAgIHdlYnNp
dGVEYXRhU3RvcmUgPSAqcG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKTsKICAgICAgICAgICAg
IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50OjpZZXM7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyNTAxNDgpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw4ICsy
NDQsOCBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jCiAgICAgICAg
IFByb2Nlc3M6OnNldElkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI6OmdlbmVy
YXRlKCkpOwogICAgIH0pOwogCi0gICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUgJiYgQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCi0gICAgICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgp
OworICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlICYmIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpKQorICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUg
PSBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKTsKIAogICAgIGZv
ciAoYXV0byYgc2NoZW1lIDogbV9jb25maWd1cmF0aW9uLT5hbHdheXNSZXZhbGlkYXRlZFVSTFNj
aGVtZXMoKSkKICAgICAgICAgbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2YWxpZGF0ZWQu
YWRkKHNjaGVtZSk7CkBAIC00ODMsMTMgKzQ4MywxMyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBX
ZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMg
cGFyYW1ldGVyczsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpIHsKLSAgICAgICAgcGFy
YW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZW5kaW5nQ29va2llcyA9IGNvcHlU
b1ZlY3RvcihtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZW5kaW5nQ29v
a2llcygpKTsKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
Y2xlYXJQZW5kaW5nQ29va2llcygpOworICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fd2Vic2l0ZURhdGFT
dG9yZS0+cGVuZGluZ0Nvb2tpZXMoKSk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+Y2xl
YXJQZW5kaW5nQ29va2llcygpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5z
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKLSAg
ICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyID0gbV93ZWJz
aXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRh
cnlJZGVudGlmaWVyKCk7CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFt
ZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllciA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyKCk7CisgICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMu
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRp
ZmllciA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyKCk7CiAjZW5kaWYKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0
YVN0b3JlKCkubmV0d29ya2luZ0hhc0JlZ3VuKCk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9y
ZS0+bmV0d29ya2luZ0hhc0JlZ3VuKCk7CiAgICAgfQogCiAgICAgcGFyYW1ldGVycy5jYWNoZU1v
ZGVsID0gTGVnYWN5R2xvYmFsU2V0dGluZ3M6OnNpbmdsZXRvbigpLmNhY2hlTW9kZWwoKTsKQEAg
LTU0MSw4ICs1NDEsOCBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5z
CiAgICAgLy8gKioqKioqKioqCiAgICAgLy8gSU1QT1JUQU5UOiBEbyBub3QgY2hhbmdlIHRoZSBk
aXJlY3Rvcnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRhdGFiYXNlcyBvbiBkaXNrIHdpdGhvdXQg
Zmlyc3QgY29uc3VsdGluZyBhIHJldmlld2VyIGZyb20gQXBwbGUgKDxyZGFyOi8vcHJvYmxlbS8x
NzQ1NDcxMj4pCiAgICAgLy8gKioqKioqKioqCi0gICAgaWYgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpKQotICAgICAgICBwYXJhbWV0ZXJzLmRlZmF1bHRE
YXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1l
dGVycygpLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKKyAgICBpZiAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkpCisgICAgICAgIHBhcmFtZXRlcnMu
ZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0gV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCktPnBhcmFtZXRlcnMoKS5p
bmRleGVkRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmRlZmF1
bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkp
IHsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMuaW5kZXhlZERhdGFi
YXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLmluZGV4
ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CkBAIC01NTIsOSArNTUyLDkgQEAg
TmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIHBhcmFt
ZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeSgpOworICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlc29sdmVkU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAgIGlmICghcGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAgICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkgPSAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgICAgICBwYXJhbWV0ZXJzLnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0
ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIHBhcmFtZXRlcnMuc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBpZiAo
IW1fc2NoZW1lc1NlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlLmlzRW1wdHkoKSkKQEAgLTU2MywxNiAr
NTYzLDE2IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnMKICAgICBw
YXJhbWV0ZXJzLnNob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVs
YXkgPSBtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXk7
CiAjZW5kaWYKIAotICAgIGF1dG8gbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbV93ZWJzaXRlRGF0
YVN0b3JlID8gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb2x2ZWRM
b2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IG51bGxTdHJpbmcoKTsKKyAgICBhdXRvIGxvY2FsU3Rv
cmFnZURpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZSA/IG1fd2Vic2l0ZURhdGFTdG9yZS0+
cmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IG51bGxTdHJpbmcoKTsKICAgICBpZiAo
IWxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0g
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Cisg
ICAgICAgIGxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERh
dGFTdG9yZVBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGly
ZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURp
cmVjdG9yeShsb2NhbFN0b3JhZ2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9y
ZVBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAg
IGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFT
dG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5y
ZXNvbHZlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKKyAgICAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVz
b2x2ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAgICAgaWYgKHBhcmFtZXRl
cnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAgICAgICBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogCiAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMu
ZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCkBAIC01OTgsMTcgKzU5OCwxNyBAQCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zCiAgICAgfSBlbHNlIGlmIChtX3dlYnNp
dGVEYXRhU3RvcmUpIHsKICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1f
d2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgICAgICBlbmFibGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygpOworICAgICAgICBlbmFi
bGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gbV93ZWJzaXRlRGF0YVN0
b3JlLT5oYXNTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKCk7CiAjZW5kaWYKICAgICAgICAgaWYg
KGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3MpIHsKLSAgICAgICAgICAgIGF1dG8gbmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKKyAgICAgICAgICAgIGF1
dG8gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5wYXJhbWV0
ZXJzKCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzOwogICAgICAgICAgICAgc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNsdWRlTG9jYWxo
b3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgICAgICAgICAgZW5hYmxlUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5lbmFibGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAgICAgICAgICAgbWFudWFsUHJldmFs
ZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlz
dGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CiAKLSAgICAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJPcmlnaW5TdG9yYWdlUXVvdGEgPSBt
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wZXJPcmlnaW5TdG9yYWdlUXVv
dGEoKTsKLSAgICAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5wZXJU
aGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSgpOworICAgICAgICBw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90
YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyT3JpZ2luU3RvcmFnZVF1b3RhKCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdp
blN0b3JhZ2VRdW90YSA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGVyVGhpcmRQYXJ0eU9yaWdpblN0
b3JhZ2VRdW90YSgpOwogICAgIH0KIAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNjkxLDggKzY5MSw4IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnQKIAogICAgIGlmICghd2Vi
c2l0ZURhdGFTdG9yZSkgewogICAgICAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAg
ICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dERhdGFTdG9yZSgpLnB0cigpOwotICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gJm1fd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICAgICAgbV93ZWJzaXRlRGF0
YVN0b3JlID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRy
KCk7CisgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7
CiAgICAgfQogCiAgICAgUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEIHJlZ2lzdHJhYmxl
RG9tYWluV2l0aFNlc3Npb25JRCB7IFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVnaXN0cmFibGVEb21h
aW4gfSwgc2Vzc2lvbklEIH07CkBAIC04MDMsNyArODAzLDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc1Bvb2w6OgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BF
KQogICAgIC8vIEluIHBsYXRmb3JtcyB1c2luZyBCdWJibGV3cmFwIGZvciBzYW5kYm94aW5nLCBw
cmV3YXJtZWQgcHJvY2VzcyBpcyBsYXVuY2hlZCB1c2luZyB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJp
bWFyeSBXZWJzaXRlRGF0YVN0b3JlLAogICAgIC8vIHNvIHdlIGRvbid0IHVzZSBpdCBpbiBjYXNl
IG9mIHVzaW5nIGEgZGlmZmVyZW50IFdlYnNpdGVEYXRhU3RvcmUuCi0gICAgaWYgKG1fc2FuZGJv
eEVuYWJsZWQgJiYgbV93ZWJzaXRlRGF0YVN0b3JlICYmICZtX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURhdGFTdG9yZSkKKyAgICBpZiAobV9zYW5kYm94
RW5hYmxlZCAmJiBtX3dlYnNpdGVEYXRhU3RvcmUgJiYgbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgp
ICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgog
CkBAIC0xMDgwLDcgKzEwODAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkRmlu
aXNoTGF1CiAgICAgbV9jb25uZWN0aW9uQ2xpZW50LmRpZENyZWF0ZUNvbm5lY3Rpb24odGhpcywg
cHJvY2Vzcy0+d2ViQ29ubmVjdGlvbigpKTsKIAogICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUp
Ci0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmRpZENyZWF0
ZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+ZGlkQ3JlYXRl
TmV0d29ya1Byb2Nlc3MoKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQpAQCAtMTE1OSw3ICsxMTU5LDcgQEAgV2Vi
UHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6cHJvY2VzcwogICAgICAgICByZXR1cm4gY3Jl
YXRlTmV3V2ViUHJvY2Vzcygmd2Vic2l0ZURhdGFTdG9yZSk7CiAKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBib29sIG11c3RNYXRjaERhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpICYmICZ3ZWJzaXRlRGF0YVN0b3JlICE9ICZBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwor
ICAgIGJvb2wgbXVzdE1hdGNoRGF0YVN0b3JlID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkgJiYgJndlYnNpdGVEYXRhU3RvcmUgIT0gV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkucHRyKCk7CiAjZWxzZQogICAgIGJv
b2wgbXVzdE1hdGNoRGF0YVN0b3JlID0gZmFsc2U7CiAjZW5kaWYKQEAgLTExOTMsNyArMTE5Myw3
IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUKICAgICAgICAgLy8g
V2UgdHJ5IHRvIGF2b2lkIGNyZWF0aW5nIHRoZSBkZWZhdWx0IGRhdGEgc3RvcmUgYXMgbG9uZyBh
cyBwb3NzaWJsZS4KICAgICAgICAgLy8gQnV0IGlmIHRoZXJlIGlzIGFuIGF0dGVtcHQgdG8gY3Jl
YXRlIGEgd2ViIHBhZ2Ugd2l0aG91dCBhbnkgc3BlY2lmaWVkIGRhdGEgc3RvcmUsIHRoZW4gd2Ug
aGF2ZSB0byBjcmVhdGUgaXQuCiAgICAgICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQotICAg
ICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlKCkucHRyKCk7CisgICAgICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKIAogICAg
ICAgICBwYWdlQ29uZmlndXJhdGlvbi0+c2V0V2Vic2l0ZURhdGFTdG9yZShtX3dlYnNpdGVEYXRh
U3RvcmUuZ2V0KCkpOwogICAgIH0KQEAgLTEyMDQsOCArMTIwNCw4IEBAIFJlZjxXZWJQYWdlUHJv
eHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUKICAgICAgICAgLy8gU2hhcmluZyBwcm9jZXNzZXMs
IGUuZy4gd2hlbiBjcmVhdGluZyB0aGUgcGFnZSB2aWEgd2luZG93Lm9wZW4oKS4KICAgICAgICAg
cHJvY2VzcyA9ICZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKS0+ZW5zdXJlUnVubmlu
Z1Byb2Nlc3MoKTsKICAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgc2V2ZXJhbCBXZWJzaXRl
RGF0YVN0b3JlcyBzaGFyaW5nIGEgc2luZ2xlIHByb2Nlc3MuCi0gICAgICAgIEFTU0VSVChwcm9j
ZXNzLmdldCgpID09IG1fZHVtbXlQcm9jZXNzUHJveHkgfHwgJnBhZ2VDb25maWd1cmF0aW9uLT53
ZWJzaXRlRGF0YVN0b3JlKCktPndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmcHJvY2Vzcy0+d2Vic2l0
ZURhdGFTdG9yZSgpKTsKLSAgICAgICAgQVNTRVJUKCZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRl
ZFBhZ2UoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09ICZwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0
ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBBU1NFUlQocHJvY2Vz
cy5nZXQoKSA9PSBtX2R1bW15UHJvY2Vzc1Byb3h5IHx8IHBhZ2VDb25maWd1cmF0aW9uLT53ZWJz
aXRlRGF0YVN0b3JlKCkgPT0gJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAg
IEFTU0VSVCgmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPndlYnNpdGVEYXRhU3Rv
cmUoKSA9PSBwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKICAgICB9IGVs
c2UgaWYgKCFtX2lzRGVsYXllZFdlYlByb2Nlc3NMYXVuY2hEaXNhYmxlZCkgewogICAgICAgICAv
LyBJbiB0aGUgY29tbW9uIGNhc2UsIHdlIGRlbGF5IHByb2Nlc3MgbGF1bmNoIHVudGlsIHNvbWV0
aGluZyBpcyBhY3R1YWxseSBsb2FkZWQgaW4gdGhlIHBhZ2UuCiAgICAgICAgIGlmICghbV9kdW1t
eVByb2Nlc3NQcm94eSkgewpAQCAtMTIxNSw3ICsxMjE1LDcgQEAgUmVmPFdlYlBhZ2VQcm94eT4g
V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZQogICAgICAgICB9CiAgICAgICAgIHByb2Nlc3MgPSBtX2R1
bW15UHJvY2Vzc1Byb3h5OwogICAgIH0gZWxzZQotICAgICAgICBwcm9jZXNzID0gJnByb2Nlc3NG
b3JSZWdpc3RyYWJsZURvbWFpbihwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgp
LT53ZWJzaXRlRGF0YVN0b3JlKCksIG51bGxwdHIsIHsgfSk7CisgICAgICAgIHByb2Nlc3MgPSAm
cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKCpwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURh
dGFTdG9yZSgpLCBudWxscHRyLCB7IH0pOwogCiAgICAgQVNTRVJUKHByb2Nlc3MpOwogCkBAIC0x
MjY1LDcgKzEyNjUsNyBAQCBib29sIFdlYlByb2Nlc3NQb29sOjptYXlIYXZlUmVnaXN0ZXJlZFNl
CiAKICAgICBTdHJpbmcgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IHN0b3Jl
LnJlc29sdmVkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogICAgIGlmIChz
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeSgpOworICAgICAgICBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
ID0gV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlv
bigpLT5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCk7CiAKICAgICByZXR1cm4g
bV9tYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzLmVuc3VyZShzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5LCBbJl0gewogICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIGNv
bXB1dGF0aW9uIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDI1MDE0OCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4
LDYgQEAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCi0jaW5jbHVkZSAiQVBJ
V2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNYXAuaCIKICNpbmNs
dWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJIaWRkZW5QYWdlVGhyb3R0bGluZ0F1
dG9JbmNyZWFzZXNDb3VudGVyLmgiCkBAIC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSAiV2ViQ29u
dGV4dENvbm5lY3Rpb25DbGllbnQuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9y
ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBAIC0yMDQsOCArMjA0LDggQEAgcHVibGljOgogICAg
IC8vIERpc2Nvbm5lY3QgdGhlIHByb2Nlc3MgZnJvbSB0aGUgY29udGV4dC4KICAgICB2b2lkIGRp
c2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSopOwogCi0gICAgQVBJOjpXZWJzaXRlRGF0
YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0
b3JlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRQcmltYXJ5RGF0YVN0b3JlKEFQSTo6V2Vic2l0ZURh
dGFTdG9yZSYgZGF0YVN0b3JlKSB7IG1fd2Vic2l0ZURhdGFTdG9yZSA9ICZkYXRhU3RvcmU7IH0K
KyAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7
IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFByaW1hcnlE
YXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpIHsgbV93ZWJzaXRl
RGF0YVN0b3JlID0gJmRhdGFTdG9yZTsgfQogCiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRl
V2ViUGFnZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogCkBA
IC02NzcsNyArNjc3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWVtb3J5U2FtcGxlckVuYWJs
ZWQgeyBmYWxzZSB9OwogICAgIGRvdWJsZSBtX21lbW9yeVNhbXBsZXJJbnRlcnZhbCB7IDE0MDAu
MCB9OwogCi0gICAgUmVmUHRyPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0
b3JlOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFT
dG9yZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgUmVmUHRyPFdlYkNvbnRl
eHRTdXBwbGVtZW50PiwgUHRySGFzaDxjb25zdCBjaGFyKj4+IFdlYkNvbnRleHRTdXBwbGVtZW50
TWFwOwogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50TWFwIG1fc3VwcGxlbWVudHM7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNw
cAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElIVFRQQ29va2llU3RvcmUuaCIKIAotI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRh
U3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Q29va2llU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Lmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3Jl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29r
aWVTdG9yZS5oCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSFRUUENvb2tpZVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAg
ZW51bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludAogbmFtZXNwYWNlIEFQSSB7
CiAKIGNsYXNzIEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyOwotY2xhc3MgV2Vic2l0
ZURhdGFTdG9yZTsKIAogY2xhc3MgSFRUUENvb2tpZVN0b3JlIGZpbmFsIDogcHVibGljIE9iamVj
dEltcGw8T2JqZWN0OjpUeXBlOjpIVFRQQ29va2llU3RvcmU+IHsKIHB1YmxpYzoKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9u
LmNwcAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVBhZ2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDEyICsxNTEsMTIg
QEAgdm9pZCBQYWdlQ29uZmlndXJhdGlvbjo6c2V0VmlzaXRlZExpbmtTdAogICAgIG1fdmlzaXRl
ZExpbmtTdG9yZSA9IHZpc2l0ZWRMaW5rU3RvcmU7CiB9CiAKLUFQSTo6V2Vic2l0ZURhdGFTdG9y
ZSogUGFnZUNvbmZpZ3VyYXRpb246OndlYnNpdGVEYXRhU3RvcmUoKQorV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlKiBQYWdlQ29uZmlndXJhdGlvbjo6d2Vic2l0ZURhdGFTdG9yZSgpCiB7CiAgICAg
cmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsKIH0KIAotdm9pZCBQYWdlQ29uZmlndXJh
dGlvbjo6c2V0V2Vic2l0ZURhdGFTdG9yZShBUEk6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVE
YXRhU3RvcmUpCit2b2lkIFBhZ2VDb25maWd1cmF0aW9uOjpzZXRXZWJzaXRlRGF0YVN0b3JlKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBtX3dlYnNp
dGVEYXRhU3RvcmUgPSB3ZWJzaXRlRGF0YVN0b3JlOwogfQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI1
MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTIgQEAgY2xhc3MgV2ViUHJlZmVyZW5j
ZXM7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIGNsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXI7CiBj
bGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKK2NsYXNzIFdlYnNpdGVEYXRhU3Rv
cmU7CiB9CiAKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBBcHBsaWNhdGlvbk1hbmlmZXN0Owot
Y2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIGNsYXNzIFdlYnNpdGVQb2xpY2llczsKIAogY2xhc3Mg
UGFnZUNvbmZpZ3VyYXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlBhZ2VD
b25maWd1cmF0aW9uPiB7CkBAIC04NCw4ICs4NCw4IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OlZp
c2l0ZWRMaW5rU3RvcmUqIHZpc2l0ZWRMaW5rU3RvcmUoKTsKICAgICB2b2lkIHNldFZpc2l0ZWRM
aW5rU3RvcmUoV2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlKik7CiAKLSAgICBXZWJzaXRlRGF0YVN0
b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdl
YnNpdGVEYXRhU3RvcmUqKTsKKyAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVE
YXRhU3RvcmUoKTsKKyAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlKik7CiAKICAgICBXZWJzaXRlUG9saWNpZXMqIGRlZmF1bHRXZWJzaXRlUG9saWNp
ZXMoKSBjb25zdDsKICAgICB2b2lkIHNldERlZmF1bHRXZWJzaXRlUG9saWNpZXMoV2Vic2l0ZVBv
bGljaWVzKik7CkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViS2l0
OjpXZWJQYWdlUHJveHk+IG1fcmVsYXRlZFBhZ2U7CiAgICAgUmVmUHRyPFdlYktpdDo6VmlzaXRl
ZExpbmtTdG9yZT4gbV92aXNpdGVkTGlua1N0b3JlOwogCi0gICAgUmVmUHRyPFdlYnNpdGVEYXRh
U3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAgICAgUmVmUHRyPFdlYnNpdGVQb2xpY2llcz4g
bV9kZWZhdWx0V2Vic2l0ZVBvbGljaWVzOwogCiAgICAgYm9vbCBtX3RyZWF0c1NIQTFTaWduZWRD
ZXJ0aWZpY2F0ZXNBc0luc2VjdXJlIHsgdHJ1ZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5j
cHAJKHJldmlzaW9uIDI1MDE0OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAKIG5hbWVz
cGFjZSBBUEkgewogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyNTAxNTApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAJKG5vbmV4aXN0ZW50KQpA
QCAtMSwxNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgIldlYktpdDJJbml0
aWFsaXplLmgiCi0jaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgotCi1uYW1lc3BhY2UgQVBJ
IHsKLQotc3RhdGljIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiYgZ2xvYmFsRGVmYXVsdERhdGFT
dG9yZSgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxXZWJzaXRlRGF0YVN0
b3JlPj4gZ2xvYmFsRGVmYXVsdERhdGFTdG9yZTsKLSAgICByZXR1cm4gZ2xvYmFsRGVmYXVsdERh
dGFTdG9yZS5nZXQoKTsKLX0KLQotCi1SZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpCi17Ci0gICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0
MigpOwotCi0gICAgYXV0byYgc3RvcmUgPSBnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCk7Ci0gICAg
aWYgKCFzdG9yZSkKLSAgICAgICAgc3RvcmUgPSBhZG9wdFJlZihuZXcgV2Vic2l0ZURhdGFTdG9y
ZShkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpKSk7Ci0KLSAgICByZXR1cm4gKnN0b3JlOwotfQotCi12b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OmRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCkKLXsKLSAgICBnbG9i
YWxEZWZhdWx0RGF0YVN0b3JlKCkgPSBudWxscHRyOwotfQotCi1ib29sIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKQotewotICAgIHJldHVybiAhIWdsb2JhbERlZmF1
bHREYXRhU3RvcmUoKTsKLX0KLQotUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3Rv
cmU6OmNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKQotewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYnNpdGVEYXRhU3RvcmUpOwotfQotCi1SZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vi
c2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFTdG9yZShXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQpKTsKLX0KLQotV2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0
ZURhdGFTdG9yZSgpCi0gICAgOiBtX3dlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50KCkpCi17Ci19Ci0KLVdlYnNpdGVEYXRhU3RvcmU6
OldlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24+JiYgY29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIDogbV93
ZWJzaXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUo
Y29uZmlndXJhdGlvbiksIHNlc3Npb25JRCkpCi17Ci19Ci0KLVdlYnNpdGVEYXRhU3RvcmU6On5X
ZWJzaXRlRGF0YVN0b3JlKCkKLXsKLX0KLQotSFRUUENvb2tpZVN0b3JlJiBXZWJzaXRlRGF0YVN0
b3JlOjpodHRwQ29va2llU3RvcmUoKQotewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUt
PmNvb2tpZVN0b3JlKCk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OiBpbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9y
ZS0+Y29uZmlndXJhdGlvbigpLmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci19Ci0KLWJv
b2wgV2Vic2l0ZURhdGFTdG9yZTo6aXNQZXJzaXN0ZW50KCkKLXsKLSAgICByZXR1cm4gbV93ZWJz
aXRlRGF0YVN0b3JlLT5pc1BlcnNpc3RlbnQoKTsKLX0KLQotYm9vbCBXZWJzaXRlRGF0YVN0b3Jl
OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
d2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKLX0KLQot
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChi
b29sIGVuYWJsZWQpCi17Ci0gICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKLX0KLQotYm9vbCBXZWJzaXRlRGF0YVN0b3JlOjpy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV93
ZWJzaXRlRGF0YVN0b3JlLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKCk7Ci19Ci0K
LXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShib29sIGVuYWJsZWQpCi17Ci0gICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGVidWdNb2RlKGVuYWJsZWQpOwotfQotCi0jaWYgIVBMQVRGT1JNKENPQ09B
KQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3Rv
cnkoKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTYzNjkgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTYzNzAKLSAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKLX0KLQotV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGly
ZWN0b3J5KCkKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgIHJldHVybiBXVEY6OlN0
cmluZygpOwotfQotI2VuZGlmCi0KLSNpZiAhVVNFKEdMSUIpCi1XVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKLXsK
LSAgICAvLyBOb3QgaW1wbGVtZW50ZWQuCi0gICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Ci19Ci0j
ZW5kaWYKLQotUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKLXsKLSAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpj
cmVhdGUoKTsKLQotICAgIGNvbmZpZ3VyYXRpb24tPnNldFBlcnNpc3RlbnQodHJ1ZSk7Ci0KLSAg
ICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KGRlZmF1bHRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldEFwcGxpY2F0
aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoIkZpbGVzIik7Ci0gICAgY29uZmlndXJh
dGlvbi0+c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3Rv
cnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KGRlZmF1
bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7Ci0gICAgY29uZmlndXJhdGlvbi0+c2V0TWVkaWFD
YWNoZURpcmVjdG9yeShkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1
cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGRlZmF1bHRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgp
KTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0
b3J5KGRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOwotICAgIGNv
bmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KGRlZmF1bHRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKTsKLSAgICBjb25maWd1cmF0aW9u
LT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkpOwotICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkoZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSk7Ci0gICAg
Y29uZmlndXJhdGlvbi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KGRlZmF1
bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0KLSAgICBjb25maWd1cmF0
aW9uLT5zZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeShkZWZhdWx0SmF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSk7Ci0KLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIkFQSUhUVFBDb29raWVTdG9yZS5oIgotI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBBUEkgewotCi1jbGFzcyBXZWJzaXRlRGF0YVN0b3JlIGZp
bmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpXZWJzaXRlRGF0YVN0b3JlPiB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBkZWZhdWx0RGF0YVN0
b3JlKCk7Ci0gICAgc3RhdGljIGJvb2wgZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpOwotICAgIHN0
YXRpYyB2b2lkIGRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7Ci0KLSAgICBzdGF0
aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZShSZWY8V2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbj4mJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKLSAgICBzdGF0aWMg
UmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKLQot
ICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24+JiYsIFBBTDo6U2Vzc2lvbklEKTsKLSAgICB2aXJ0dWFsIH5XZWJzaXRl
RGF0YVN0b3JlKCk7Ci0KLSAgICBib29sIGlzUGVyc2lzdGVudCgpOwotCi0gICAgYm9vbCByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0OwotICAgIHZvaWQgc2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCk7Ci0gICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGVidWdNb2RlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGVidWdNb2RlKGJvb2wpOwotCi0gICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRl
RGF0YVN0b3JlKCkgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9Ci0gICAgSFRU
UENvb2tpZVN0b3JlJiBodHRwQ29va2llU3RvcmUoKTsKLQotICAgIFdURjo6U3RyaW5nIGluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0KLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVs
dEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVm
YXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZh
dWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1
bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZh
dWx0U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwotICAgIHN0YXRpYyBXVEY6
OlN0cmluZyBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdURjo6
U3RyaW5nIGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKTsKLSAg
ICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7Ci0j
aWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRIU1RTRGlyZWN0b3J5
KCk7Ci0jZW5kaWYKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoKTsKLSAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFT
Y3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7Ci0KLSAgICBzdGF0aWMgUmVmPFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IGRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0
aW9uKCk7Ci0KLXByaXZhdGU6Ci0gICAgZW51bSBTaG91bGRDcmVhdGVEaXJlY3RvcnkgeyBDcmVh
dGVEaXJlY3RvcnksIERvbnRDcmVhdGVEaXJlY3RvcnkgfTsKLQotICAgIFdlYnNpdGVEYXRhU3Rv
cmUoKTsKLQotICAgIHN0YXRpYyBXVEY6OlN0cmluZyB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lLCBTaG91bGRDcmVh
dGVEaXJlY3RvcnkgPSBDcmVhdGVEaXJlY3RvcnkpOwotICAgIHN0YXRpYyBXVEY6OlN0cmluZyBj
YWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYg
ZGlyZWN0b3J5TmFtZSk7Ci0gICAgc3RhdGljIFdURjo6U3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlO
YW1lKTsKLQotICAgIFJlZjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFT
dG9yZTsKLX07Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlUG9saWNpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsMTQgKzI2LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJV2Vi
c2l0ZVBvbGljaWVzLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEu
aCIKIAogbmFtZXNwYWNlIEFQSSB7CiAKIFdlYnNpdGVQb2xpY2llczo6V2Vic2l0ZVBvbGljaWVz
KCkgPSBkZWZhdWx0OwogCi1XZWJzaXRlUG9saWNpZXM6OldlYnNpdGVQb2xpY2llcyhib29sIGNv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1
aXJrPiBhbGxvd2VkQXV0b3BsYXlRdWlya3MsIFdlYktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5
IGF1dG9wbGF5UG9saWN5LCBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPiYmIGxlZ2Fj
eUN1c3RvbUhlYWRlckZpZWxkcywgVmVjdG9yPFdlYkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4m
JiBjdXN0b21IZWFkZXJGaWVsZHMsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9s
aWN5LCBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJiB3ZWJzaXRlRGF0YVN0b3JlKQorV2Vic2l0
ZVBvbGljaWVzOjpXZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBP
cHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4gYWxsb3dlZEF1dG9wbGF5UXVp
cmtzLCBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGljeSBhdXRvcGxheVBvbGljeSwgVmVjdG9y
PFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiBsZWdhY3lDdXN0b21IZWFkZXJGaWVsZHMsIFZl
Y3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+JiYgY3VzdG9tSGVhZGVyRmllbGRzLCBX
ZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeSBwb3BVcFBvbGljeSwgUmVmUHRyPFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZT4mJiB3ZWJzaXRlRGF0YVN0b3JlKQogICAgIDogbV9jb250ZW50QmxvY2tl
cnNFbmFibGVkKGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCiAgICAgLCBtX2FsbG93ZWRBdXRvcGxh
eVF1aXJrcyhhbGxvd2VkQXV0b3BsYXlRdWlya3MpCiAgICAgLCBtX2F1dG9wbGF5UG9saWN5KGF1
dG9wbGF5UG9saWN5KQpAQCAtODQsNyArODQsNyBAQCBXZWJzaXRlUG9saWNpZXM6On5XZWJzaXRl
UG9saWNpZXMoKQogewogfQogCi12b2lkIFdlYnNpdGVQb2xpY2llczo6c2V0V2Vic2l0ZURhdGFT
dG9yZShSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4mJiB3ZWJzaXRlRGF0YVN0b3JlKQordm9pZCBX
ZWJzaXRlUG9saWNpZXM6OnNldFdlYnNpdGVEYXRhU3RvcmUoUmVmUHRyPFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZT4mJiB3ZWJzaXRlRGF0YVN0b3JlKQogewogICAgIG1fd2Vic2l0ZURhdGFTdG9y
ZSA9IFdURk1vdmUod2Vic2l0ZURhdGFTdG9yZSk7CiB9CkBAIC0xMDgsNyArMTA4LDcgQEAgV2Vi
S2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIFdlYnNpdGVQb2xpYwogI2VuZGlmCiAgICAgICAgIFdU
Rk1vdmUoY3VzdG9tSGVhZGVyRmllbGRzKSwKICAgICAgICAgcG9wVXBQb2xpY3koKSwKLSAgICAg
ICAgbV93ZWJzaXRlRGF0YVN0b3JlID8gT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycz4geyBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wYXJh
bWV0ZXJzKCkgfSA6IFdURjo6bnVsbG9wdCwKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID8g
T3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycz4geyBtX3dlYnNpdGVE
YXRhU3RvcmUtPnBhcmFtZXRlcnMoKSB9IDogV1RGOjpudWxsb3B0LAogICAgICAgICBtX2N1c3Rv
bVVzZXJBZ2VudCwKICAgICAgICAgbV9jdXN0b21KYXZhU2NyaXB0VXNlckFnZW50QXNTaXRlU3Bl
Y2lmaWNRdWlya3MsCiAgICAgICAgIG1fY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm0sCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCShy
ZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZVBvbGljaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEyICs0MiwxMSBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHN0cnVjdCBXZWJzaXRlUG9saWNpZXNEYXRhOworY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKIH0KIAogbmFtZXNwYWNlIEFQSSB7CiAKLWNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7
Ci0KIGNsYXNzIFdlYnNpdGVQb2xpY2llcyBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6OldlYnNpdGVQb2xpY2llcz4gewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8V2Vic2l0ZVBvbGljaWVzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YnNpdGVQb2xpY2llcyk7IH0KQEAgLTc5LDggKzc4LDggQEAgcHVibGljOgogICAgIFdlYktpdDo6
V2Vic2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9wb3BVcFBv
bGljeTsgfQogICAgIHZvaWQgc2V0UG9wVXBQb2xpY3koV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xp
Y3kgcG9saWN5KSB7IG1fcG9wVXBQb2xpY3kgPSBwb2xpY3k7IH0KIAotICAgIFdlYnNpdGVEYXRh
U3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3Rv
cmUuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoUmVmUHRyPFdlYnNpdGVE
YXRhU3RvcmU+JiYpOworICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFT
dG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQorICAgIHZv
aWQgc2V0V2Vic2l0ZURhdGFTdG9yZShSZWZQdHI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPiYm
KTsKIAogICAgIFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSBkYXRhKCk7CiAKQEAgLTExOCw3
ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZl
clF1aXJrKGJvb2wgYWxsb3cpIHsgbV9hbGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZlclF1aXJrID0g
YWxsb3c7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJzaXRlUG9saWNpZXMoYm9vbCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlRdWlyaz4sIFdl
YktpdDo6V2Vic2l0ZUF1dG9wbGF5UG9saWN5LCBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZp
ZWxkPiYmLCBWZWN0b3I8V2ViQ29yZTo6Q3VzdG9tSGVhZGVyRmllbGRzPiYmLCBXZWJLaXQ6Oldl
YnNpdGVQb3BVcFBvbGljeSwgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+JiYpOworICAgIFdlYnNp
dGVQb2xpY2llcyhib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6
OldlYnNpdGVBdXRvcGxheVF1aXJrPiwgV2ViS2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3ksIFZl
Y3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+JiYsIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21I
ZWFkZXJGaWVsZHM+JiYsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5LCBSZWZQdHI8V2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlPiYmKTsKIAogICAgIGJvb2wgbV9jb250ZW50QmxvY2tlcnNFbmFi
bGVkIHsgdHJ1ZSB9OwogICAgIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJr
PiBtX2FsbG93ZWRBdXRvcGxheVF1aXJrczsKQEAgLTEyOSw3ICsxMjgsNyBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+IG1fbGVnYWN5Q3VzdG9tSGVhZGVy
RmllbGRzOwogICAgIFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+IG1fY3VzdG9t
SGVhZGVyRmllbGRzOwogICAgIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IG1fcG9wVXBQb2xp
Y3kgeyBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeTo6RGVmYXVsdCB9OwotICAgIFJlZlB0cjxX
ZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUmVmUHRyPFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwogICAgIFdURjo6U3RyaW5nIG1f
Y3VzdG9tVXNlckFnZW50OwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tSmF2YVNjcmlwdFVzZXJB
Z2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzOwogICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tTmF2aWdh
dG9yUGxhdGZvcm07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNh
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNh
c3QuaAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDYgQEAgY2xhc3MgUGFnZUNv
bmZpZ3VyYXRpb247CiBjbGFzcyBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247CiBjbGFzcyBTZXNz
aW9uU3RhdGU7CiBjbGFzcyBVc2VyU2NyaXB0OwotY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIGNs
YXNzIFdlYnNpdGVQb2xpY2llczsKIGNsYXNzIFdpbmRvd0ZlYXR1cmVzOwogfQpAQCAtMTEzLDYg
KzExMiw3IEBAIGNsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW5hZ2VyOwogY2xhc3Mg
V2ViVGV4dENoZWNrZXI7CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIGNs
YXNzIFdlYlZpZXdwb3J0QXR0cmlidXRlczsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBjbGFz
cyBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKIAogV0tfQUREX0FQSV9NQVBQSU5HKFdL
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkp
CkBAIC0xNjksNyArMTY5LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlck1lZGlhUGVybWlz
c2lvbgogV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RSZWYs
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tV
c2VyU2NyaXB0UmVmLCBBUEk6OlVzZXJTY3JpcHQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tWaWV3
cG9ydEF0dHJpYnV0ZXNSZWYsIFdlYlZpZXdwb3J0QXR0cmlidXRlcykKLVdLX0FERF9BUElfTUFQ
UElORyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSkKK1dLX0FE
RF9BUElfTUFQUElORyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZSkKIFdLX0FERF9BUElfTUFQUElORyhXS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
UmVmLCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKQogV0tfQUREX0FQSV9N
QVBQSU5HKFdLV2Vic2l0ZVBvbGljaWVzUmVmLCBBUEk6OldlYnNpdGVQb2xpY2llcykKIFdLX0FE
RF9BUElfTUFQUElORyhXS1dpbmRvd0ZlYXR1cmVzUmVmLCBBUEk6OldpbmRvd0ZlYXR1cmVzKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZp
c2lvbiAyNTAxNDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjEsMTIgKzMyMSwxMiBAQCB2b2lkIFdLQ29udGV4dENs
ZWFyVmlzaXRlZExpbmtzKFdLQ29udGV4CiAKIHZvaWQgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbChX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiB7Ci0gICAg
TGVnYWN5R2xvYmFsU2V0dGluZ3M6OnNpbmdsZXRvbigpLnNldENhY2hlTW9kZWwoV2ViS2l0Ojp0
b0NhY2hlTW9kZWwoY2FjaGVNb2RlbCkpOworICAgIFdlYktpdDo6TGVnYWN5R2xvYmFsU2V0dGlu
Z3M6OnNpbmdsZXRvbigpLnNldENhY2hlTW9kZWwoV2ViS2l0Ojp0b0NhY2hlTW9kZWwoY2FjaGVN
b2RlbCkpOwogfQogCiBXS0NhY2hlTW9kZWwgV0tDb250ZXh0R2V0Q2FjaGVNb2RlbChXS0NvbnRl
eHRSZWYgY29udGV4dFJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShMZWdhY3lHbG9i
YWxTZXR0aW5nczo6c2luZ2xldG9uKCkuY2FjaGVNb2RlbCgpKTsKKyAgICByZXR1cm4gV2ViS2l0
Ojp0b0FQSShXZWJLaXQ6OkxlZ2FjeUdsb2JhbFNldHRpbmdzOjpzaW5nbGV0b24oKS5jYWNoZU1v
ZGVsKCkpOwogfQogCiB2b2lkIFdLQ29udGV4dFNldE1heGltdW1OdW1iZXJPZlByb2Nlc3NlcyhX
S0NvbnRleHRSZWYsIHVuc2lnbmVkKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCShyZXZpc2lvbiAyNTAx
MjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVu
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCIKIAotI2luY2x1ZGUgIkFQ
SVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bv
b2wuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZVBv
bGljaWVzRGF0YS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwCShyZXZpc2lvbiAyNTAxNTApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBA
CiAjaW5jbHVkZSAiV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgiCiAKICNpbmNsdWRlICJBUElBcnJh
eS5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbmNsdWRlICJBUElIVFRQ
Q29va2llU3RvcmUuaCIKICNpbmNsdWRlICJNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uLmgiCiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCkBAIC00MSwyOSArNDEsMzAgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0
YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRlICJXZWJz
aXRlRGF0YVJlY29yZC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBXS1R5cGVJRCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRU
eXBlSUQoKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpBUElUeXBlKTsKIH0KIAogV0tXZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURh
dGFTdG9yZUdldERlZmF1bHREYXRhU3RvcmUoKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJ
KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRh
U3RvcmUoKS5wdHIoKSk7CiB9CiAKIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1dlYnNpdGVEYXRh
U3RvcmVDcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkKIHsKLSAgICByZXR1cm4gV2ViS2l0
Ojp0b0FQSSgmQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0
b3JlKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50KCkubGVha1JlZigpKTsKIH0KIAogV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNyZWF0ZVdpdGhDb25maWd1cmF0
aW9uKFdLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbikKIHsK
ICAgICBhdXRvIHNlc3Npb25JRCA9IFdlYktpdDo6dG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5pc1Bl
cnNpc3RlbnQoKSA/IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZVBlcnNpc3RlbnRTZXNzaW9uSUQo
KSA6IFBBTDo6U2Vzc2lvbklEOjpnZW5lcmF0ZUVwaGVtZXJhbFNlc3Npb25JRCgpOwotICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZSgqV2ViS2l0
Ojp0b0ltcGwoY29uZmlndXJhdGlvbiksIHNlc3Npb25JRCkubGVha1JlZigpKTsKKyAgICByZXR1
cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoKldlYktp
dDo6dG9JbXBsKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQpLmxlYWtSZWYoKSk7CiB9CiAKIHZv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGUpCkBAIC04MywxMyAr
ODQsMTMgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdAogCiBXS0hU
VFBDb29raWVTdG9yZVJlZiBXS1dlYnNpdGVEYXRhU3RvcmVHZXRIVFRQQ29va2llU3RvcmUoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0
b0FQSSgmV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aHR0cENvb2tpZVN0b3JlKCkpOwor
ICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5j
b29raWVTdG9yZSgpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGVidWdNb2RlV2l0aENvbXBsZXRpb25IYW5kbGVyKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wgZW5hYmxlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVidWdNb2RlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RlYnVnTW9kZShlbmFibGUsIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEZWJ1Z01vZGUoZW5hYmxlLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMTAwLDcg
KzEwMSw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3QKIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1ByZXZhbGVudFJlc291
cmNlRm9yRGVidWdNb2RlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3Ry
aW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NE
ZWJ1Z01vZGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjb21wbGV0aW9u
SGFuZGxlcl0geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFByZXZhbGVu
dFJlc291cmNlRm9yRGVidWdNb2RlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpKSwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTExMCw3ICsxMTEsNyBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0CiB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0U2VlbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0xhc3RTZWVuRnVuY3Rpb24gY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0TGFzdFNlZW4o
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBTZWNvbmRzIHsgc2Vj
b25kcyB9LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICBXZWJLaXQ6OnRvSW1w
bChkYXRhU3RvcmVSZWYpLT5zZXRMYXN0U2VlbihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhv
c3QpLT5zdHJpbmcoKSksIFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjb21wbGV0aW9u
SGFuZGxlcl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsK
ICNlbHNlCkBAIC0xMjEsNyArMTIyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzTGFzdAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYg
aG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0
b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpOwor
ICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KTsKIAogICAgIGlmICh2YWx1ZSkKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS5zZXRQcmV2YWxl
bnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewpAQCAtMTM5LDcgKzE0MCw3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ByZXYKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlRnVuY3Rp
b24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUg
PSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKTsKIAogICAgIGlmICh2YWx1ZSkKICAgICAg
ICAgd2Vic2l0ZURhdGFTdG9yZS5zZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRs
ZXJdIHsKQEAgLTE1Nyw3ICsxNTgsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRp
c3RpY3NWZXJ5CiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdL
V2Vic2l0ZURhdGFTdG9yZUR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRnVuY3Rpb24gY2FsbGJh
Y2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZHVtcFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoW2NvbnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZHVtcFJl
c291cmNlTG9hZFN0YXRpc3RpY3MoW2NvbnRleHQsIGNhbGxiYWNrXSAoY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSB7CiAgICAgICAgIGNhbGxiYWNrKFdlYktpdDo6dG9BUEko
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy5pbXBsKCkpLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNl
CkBAIC0xNjgsNyArMTY5LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVEdW1wUmVzb3VyY2VM
b2FkUwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpLmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+
c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSkg
eworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzUHJldmFsZW50UmVzb3VyY2Uo
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2Fs
bGJhY2tdKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSkgewogICAgICAgICBjYWxsYmFjayhpc1By
ZXZhbGVudFJlc291cmNlLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0xNzksNyArMTgw
LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NQcmV2YQogdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4
dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGdW5jdGlv
biBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5pc1ZlcnlQ
cmV2YWxlbnRSZXNvdXJjZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmco
KSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSkgewor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzVmVyeVByZXZhbGVudFJlc291cmNl
KFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNh
bGxiYWNrXShib29sIGlzVmVyeVByZXZhbGVudFJlc291cmNlKSB7CiAgICAgICAgIGNhbGxiYWNr
KGlzVmVyeVByZXZhbGVudFJlc291cmNlLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0x
OTAsNyArMTkxLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NWZXJ5UAog
dm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJj
ZVVuZGVyKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIHN1
YnJlc291cmNlSG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0LCB2b2lkKiBjb250ZXh0LCBX
S1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVy
RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCku
aXNSZWdpc3RlcmVkQXNTdWJyZXNvdXJjZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
c3VicmVzb3VyY2VIb3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRv
cEZyYW1lSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0
ZXJlZEFzU3VicmVzb3VyY2VVbmRlcikgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJl
ZiktPmlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihVUkwoVVJMKCksIFdlYktpdDo6dG9J
bXBsKHN1YnJlc291cmNlSG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1Jl
Z2lzdGVyZWRBc1N1YnJlc291cmNlVW5kZXIpIHsKICAgICAgICAgY2FsbGJhY2soaXNSZWdpc3Rl
cmVkQXNTdWJyZXNvdXJjZVVuZGVyLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC0yMDEs
NyArMjAyLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpcwogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVy
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIHN1YkZyYW1l
SG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVIb3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVE
YXRhU3RvcmVJc1N0YXRpc3RpY3NSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyRnVuY3Rpb24gY2Fs
bGJhY2spCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNSZWdpc3RlcmVk
QXNTdWJGcmFtZVVuZGVyKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoc3ViRnJhbWVIb3N0KS0+
c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmlu
ZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzUmVnaXN0ZXJlZEFzU3ViRnJhbWVVbmRl
cikgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmlzUmVnaXN0ZXJlZEFzU3Vi
RnJhbWVVbmRlcihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHN1YkZyYW1lSG9zdCktPnN0cmlu
ZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSks
IFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIpIHsK
ICAgICAgICAgY2FsbGJhY2soaXNSZWdpc3RlcmVkQXNTdWJGcmFtZVVuZGVyLCBjb250ZXh0KTsK
ICAgICB9KTsKICNlbHNlCkBAIC0yMTIsNyArMjEzLDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVJc1N0YXRpc3RpY3NSZWdpcwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NS
ZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSwgV0tTdHJpbmdSZWYgaG9zdFJlZGly
ZWN0ZWRUbywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0aWNzUmVn
aXN0ZXJlZEFzUmVkaXJlY3RpbmdUb0Z1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLmlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSwgVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbY29udGV4
dCwgY2FsbGJhY2tdKGJvb2wgaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKSB7CisgICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8pIHsKICAg
ICAgICAgY2FsbGJhY2soaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvLCBjb250ZXh0KTsKICAg
ICB9KTsKICNlbHNlCkBAIC0yMjMsNyArMjI0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVJ
c1N0YXRpc3RpY3NSZWdpcwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSGFz
SGFkVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdL
U3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb25GdW5jdGlvbiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGF1dG8m
IGRhdGFTdG9yZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKTsKKyAgICBhdXRvJiBkYXRhU3RvcmUgPSAqV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KTsKIAogICAgIGlmICh2YWx1ZSkKICAgICAgICAgZGF0YVN0b3JlLmxvZ1VzZXJJbnRlcmFjdGlv
bihVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBj
b21wbGV0aW9uSGFuZGxlcl0gewpAQCAtMjQxLDcgKzI0Miw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0U3RhdGlzdGljc0hhc0gKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNTdGF0aXN0
aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUlz
U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0
YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbihVUkwo
VVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFtjb250ZXh0LCBjYWxsYmFj
a10oYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24pIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1w
bChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSGFkVXNlcklu
dGVyYWN0aW9uKSB7CiAgICAgICAgIGNhbGxiYWNrKGhhc0hhZFVzZXJJbnRlcmFjdGlvbiwgY29u
dGV4dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMjUyLDE0ICsyNTMsMTQgQEAgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NIYXNIYQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNldEdyYW5kZmF0aGVyZWQoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCB2YWx1ZSwgW10geyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5zZXRHcmFuZGZhdGhlcmVkKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9z
dCktPnN0cmluZygpKSwgdmFsdWUsIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVJc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZUlzU3RhdGlzdGljc0dyYW5kZmF0aGVyZWRGdW5jdGlvbiBjYWxsYmFjaykKIHsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24o
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2Fs
bGJhY2tdKGJvb2wgaXNHcmFuZGZhdGhlcmVkKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0
b3JlUmVmKS0+aGFzSGFkVXNlckludGVyYWN0aW9uKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwo
aG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGlzR3JhbmRmYXRoZXJl
ZCkgewogICAgICAgICBjYWxsYmFjayhpc0dyYW5kZmF0aGVyZWQsIGNvbnRleHQpOwogICAgIH0p
OwogI2Vsc2UKQEAgLTI3MCw0OSArMjcxLDQ5IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSXNT
dGF0aXN0aWNzR3JhbmQKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YmZy
YW1lVW5kZXJUb3BGcmFtZU9yaWdpbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZUhvc3QpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3Rv
cmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlu
KFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlu
KFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBX
ZWJLaXQ6OnRvSW1wbCh0b3BGcmFtZUhvc3QpLT5zdHJpbmcoKSksIFtdIHsgfSk7CiAjZW5kaWYK
IH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2luKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3Ry
aW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdCkKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4oVVJM
KFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktp
dDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9KTsKKyAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW4o
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdl
YktpdDo6dG9JbXBsKHRvcEZyYW1lSG9zdCktPnN0cmluZygpKSwgW10geyB9KTsKICNlbmRpZgog
fQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0VG8oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgaG9zdCwgV0tTdHJpbmdSZWYgaG9zdFJlZGlyZWN0ZWRUbykKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCksIFdlYktpdDo6
dG9JbXBsKGhvc3RSZWRpcmVjdGVkVG8pLT5zdHJpbmcoKSksIFtdIHsgfSk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKFVS
TChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJL
aXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbXSB7IH0pOwogI2VuZGlm
CiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RGcm9tKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3Ry
aW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkRnJvbSkKIHsKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9y
ZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0RnJv
bShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwoKSwg
V2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBbXSB7IH0pOwor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RGcm9tKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJM
KFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZEZyb20pLT5zdHJpbmcoKSksIFtd
IHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIGhvc3RSZWRpcmVjdGVkVG8pCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVj
dFRvKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgp
LCBXZWJLaXQ6OnRvSW1wbChob3N0UmVkaXJlY3RlZFRvKS0+c3RyaW5nKCkpLCBbXSB7IH0pOwor
ICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RUbyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChVUkwo
KSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRUbyktPnN0cmluZygpKSwgW10geyB9KTsK
ICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0RnJvbShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBX
S1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBob3N0UmVkaXJlY3RlZEZyb20pCiB7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZy
b20oVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJMKCks
IFdlYktpdDo6dG9JbXBsKGhvc3RSZWRpcmVjdGVkRnJvbSktPnN0cmluZygpKSwgW10geyB9KTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRUb3BGcmFtZVVuaXF1ZVJlZGly
ZWN0RnJvbShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdFJlZGlyZWN0ZWRGcm9tKS0+c3RyaW5nKCkpLCBbXSB7
IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Ny
b3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgZnJvbUhvc3QsIFdLU3RyaW5nUmVmIHRvSG9zdCwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0Nyb3NzU2l0ZUxvYWRXaXRo
TGlua0RlY29yYXRpb25GdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNp
dGVEYXRhU3RvcmUoKS5zZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGlu
ZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGZyb21Ib3N0KS0+c3RyaW5nKCkpLCBVUkwoVVJM
KCksIFdlYktpdDo6dG9JbXBsKHRvSG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNr
XSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0Q3Jvc3NTaXRlTG9hZFdp
dGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChmcm9t
SG9zdCktPnN0cmluZygpKSwgVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh0b0hvc3QpLT5zdHJp
bmcoKSksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsK
ICAgICB9KTsKICNlbHNlCkBAIC0zMjMsNyArMzI0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRTdGF0aXN0aWNzQ3Jvcwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb25GdW5jdGlvbiBjYWxsYmFjaykKIHsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRUaW1lVG9MaXZlVXNlckludGVy
YWN0aW9uKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24o
U2Vjb25kcyB7IHNlY29uZHMgfSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxi
YWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UKQEAgLTMzNCw3ICszMzUsNyBAQCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NUaW1lCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzRnVuY3Rpb24gY2FsbGJhY2sp
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVTdGF0aXN0aWNz
QW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRz
UHJvY2Vzc2luZyhbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4
dCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtMzQ1LDcgKzM0Niw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3MKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c1VwZGF0ZUNvb2tpZUJsb2NraW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYs
IHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NVcGRhdGVDb29raWVC
bG9ja2luZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoW2NvbnRleHQsIGNv
bXBsZXRpb25IYW5kbGVyXSgpIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5z
Y2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0o
KSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UK
QEAgLTM1NiwyMSArMzU3LDIxIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Vw
ZGF0ZUMKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKQogewogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnN1Ym1pdFRlbGVtZXRyeSgpOworICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPnN1Ym1pdFRlbGVtZXRyeSgpOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXROb3RpZnlQYWdlc1doZW5EYXRh
UmVjb3Jkc1dlcmVTY2FubmVkKHZhbHVlLCBbXSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQodmFs
dWUsIFtdIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzSXNSdW5uaW5nVGVzdChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBi
b29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
SXNSdW5uaW5nVGVzdEZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KHZhbHVl
LCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
LT5zZXRJc1J1bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdCh2YWx1ZSwgW2NvbnRleHQs
IGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAgIH0pOwogI2Vsc2UK
QEAgLTM4MSw0OSArMzgyLDQ5IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c0lzUnUKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5
UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIGJvb2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkuc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwo
dmFsdWUsIFtdKCkgeyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRT
aG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCh2YWx1ZSwgW10o
KSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c05vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIGJvb2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0
YVN0b3JlKCkuc2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQodmFsdWUsIFtd
KCkgeyB9KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXROb3RpZnlQYWdl
c1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCh2YWx1ZSwgW10oKSB7IH0pOwogI2VuZGlmCiB9CiAK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRh
dGFSZWNvcmRzUmVtb3ZhbChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3Vi
bGUgc2Vjb25kcykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRNaW5p
bXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyB7IHNlY29uZHMgfSwgW10o
KSB7IH0pOworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldE1pbmltdW1UaW1l
QmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzIHsgc2Vjb25kcyB9LCBbXSgpIHsgfSk7
CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzR3JhbmRm
YXRoZXJpbmdUaW1lKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBz
ZWNvbmRzKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldEdyYW5kZmF0
aGVyaW5nVGltZShTZWNvbmRzIHsgc2Vjb25kcyB9LCBbXSgpIHsgfSk7CisgICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgeyBzZWNv
bmRzIH0sIFtdKCkgeyB9KTsKICNlbmRpZgogfQogCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NNYXhTdGF0aXN0aWNzRW50cmllcyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCB1bnNpZ25lZCBlbnRyaWVzKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnNldE1heFN0YXRpc3RpY3NFbnRyaWVzKGVudHJpZXMsIFtdKCkgeyB9KTsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRNYXhTdGF0aXN0aWNzRW50cmllcyhl
bnRyaWVzLCBbXSgpIHsgfSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzUHJ1bmVFbnRyaWVzRG93blRvKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIHVuc2lnbmVkIGVudHJpZXMpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0
YVN0b3JlKCkuc2V0UHJ1bmVFbnRyaWVzRG93blRvKGVudHJpZXMsIFtdKCkgeyB9KTsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zZXRQcnVuZUVudHJpZXNEb3duVG8oZW50cmll
cywgW10oKSB7IH0pOwogI2VuZGlmCiB9CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmUoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c0NsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50KFdlYktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250
ZXh0LCBjYWxsYmFja10oKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2No
ZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVy
U3RhdGlzdGljczo6WWVzLCBbY29udGV4dCwgY2FsbGJhY2tdKCkgewogICAgICAgICBjYWxsYmFj
ayhjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00MzQsNyArNDM1LDcgQEAgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJJbgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnRTdG9yZU1vZGlmaWVkU2luY2VIb3Vy
cyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB1bnNpZ25lZCBob3Vycywgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0NsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnNGdW5jdGlvbiBjYWxsYmFjaykKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRh
dGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5zY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50KFdhbGxUaW1lOjpub3coKSAtIFNlY29uZHM6OmZyb21Ib3Vycyhob3VycyksIFdl
YktpdDo6U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzOjpZZXMsIFtjb250ZXh0LCBjYWxsYmFj
a10oKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2NoZWR1bGVDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGltZTo6bm93KCkgLSBTZWNvbmRzOjpmcm9tSG91cnMo
aG91cnMpLCBXZWJLaXQ6OlNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljczo6WWVzLCBbY29udGV4
dCwgY2FsbGJhY2tdKCkgewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNl
bHNlCkBAIC00NDUsNyArNDQ2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
Q2xlYXJJbgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzQ2xlYXJUaHJvdWdoV2Vi
c2l0ZURhdGFSZW1vdmFsKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NDbGVhclRocm91Z2hXZWJzaXRl
RGF0YVJlbW92YWxGdW5jdGlvbiBjYWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpX
ZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKDApLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRz
KDApLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAg
ICAgfSk7CiB9CkBAIC00NTMsNyArNDU0LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0
aXN0aWNzQ2xlYXJUaAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29v
a2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJp
bmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCB2b2lkKiBjb250ZXh0LCBX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRGVsZXRlQ29va2llc0ZvclRlc3RpbmdGdW5jdGlv
biBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kZWxldGVD
b29raWVzRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmco
KSksIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgaW5jbHVkZUh0dHBPbmx5Q29v
a2llcywgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwog
ICAgIH0pOwogI2Vsc2UKQEAgLTQ2NCw3ICs0NjUsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NEZWxldGVDCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNM
b2NhbFN0b3JhZ2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdS
ZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0xv
Y2FsU3RvcmFnZUZ1bmN0aW9uIGNhbGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURh
dGFTdG9yZSgpLmhhc0xvY2FsU3RvcmFnZUZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRv
SW1wbChob3N0KS0+c3RyaW5nKCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzTG9jYWxT
dG9yYWdlKSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aGFzTG9jYWxTdG9y
YWdlRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSks
IFtjb250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNMb2NhbFN0b3JhZ2UpIHsKICAgICAgICAgY2Fs
bGJhY2soaGFzTG9jYWxTdG9yYWdlLCBjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCkBAIC00NzUs
NyArNDc2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzTG9jYQogdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9uIGNh
bGxiYWNrKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldENhY2hlTWF4
QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250ZXh0
LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldENhY2hl
TWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMgeyBzZWNvbmRzIH0sIFtjb250
ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKICNl
bHNlCkBAIC00ODYsNyArNDg3LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0
aWNzQ2FjaAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNz
aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3Qs
IHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNl
c3Npb25GdW5jdGlvbiBjYWxsYmFjaykKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKS5oYXNJc29sYXRlZFNlc3Npb25Gb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0lt
cGwoaG9zdCktPnN0cmluZygpKSwgW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhhc0lzb2xhdGVk
U2Vzc2lvbikgeworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0lzb2xhdGVk
U2Vzc2lvbkZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5n
KCkpLCBbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9uKSB7CiAgICAg
ICAgIGNhbGxiYWNrKGhhc0lzb2xhdGVkU2Vzc2lvbiwgY29udGV4dCk7CiAgICAgfSk7CiAjZWxz
ZQpAQCAtNTAxLDcgKzUwMiw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jl
c2V0VG8KICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAKLSAg
ICBhdXRvJiBzdG9yZSA9IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRh
U3RvcmUoKTsKKyAgICBhdXRvJiBzdG9yZSA9ICpXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYp
OwogICAgIHN0b3JlLmNsZWFyUmVzb3VyY2VMb2FkU3RhdGlzdGljc0luV2ViUHJvY2Vzc2VzKFtj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwog
ICAgIHN0b3JlLnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoW2NhbGxi
YWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAg
c3RvcmUucmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoW2Nh
bGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CkBA
IC01MTYsNyArNTE3LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRU
bwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxGZXRjaENhY2hlcyhXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3Rv
cmVSZW1vdmVGZXRjaENhY2hlUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlv
blNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRl
RGF0YVR5cGU6OkRPTUNhY2hlOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndl
YnNpdGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0
eSgpLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVS
ZWYpLT5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4
dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9CkBA
IC01MjgsNyArNTI5LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVGZXRjaENhY2hl
RgogICAgIFZlY3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiBkYXRhUmVjb3JkcyA9IHsg
V1RGTW92ZShkYXRhUmVjb3JkKSB9OwogCiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU7Ci0g
ICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92
ZURhdGEoZGF0YVR5cGVzLCBkYXRhUmVjb3JkcywgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0YShkYXRhVHlwZXMsIGRhdGFS
ZWNvcmRzLCBbY29udGV4dCwgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7
CiAgICAgfSk7CiB9CkBAIC01MzYsNyArNTM3LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVS
ZW1vdmVGZXRjaENhY2hlRgogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVk
RGF0YWJhc2VzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUFsbEluZGV4ZWREYXRhYmFzZXNDYWxsYmFjayBj
YWxsYmFjaykKIHsKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFU
eXBlcyA9IFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpJbmRleGVkREJEYXRhYmFzZXM7Ci0gICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURh
dGEoZGF0YVR5cGVzLCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10g
eworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVz
LCAtV2FsbFRpbWU6OmluZmluaXR5KCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgIGlmIChj
YWxsYmFjaykKICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CkBAIC01NDUsNyAr
NTQ2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVBbGxJbmRleGVkRAogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVSZW1vdmVMb2NhbFN0b3JhZ2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVtb3ZlTG9j
YWxTdG9yYWdlQ2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6TG9jYWxT
dG9yYWdlOwotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3Rv
cmUoKS5yZW1vdmVEYXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4
dCwgY2FsbGJhY2tdIHsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5yZW1vdmVE
YXRhKGRhdGFUeXBlcywgLVdhbGxUaW1lOjppbmZpbml0eSgpLCBbY29udGV4dCwgY2FsbGJhY2td
IHsKICAgICAgICAgaWYgKGNhbGxiYWNrKQogICAgICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7
CiAgICAgfSk7CkBAIC01NTUsNyArNTU2LDcgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZW1v
dmVBbGxTZXJ2aWNlVwogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcyA9IFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uczsKLSAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1X
YWxsVGltZTo6aW5maW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CisgICAgV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+cmVtb3ZlRGF0YShkYXRhVHlwZXMsIC1XYWxsVGltZTo6aW5m
aW5pdHkoKSwgW2NvbnRleHQsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQp
OwogICAgIH0pOwogI2Vsc2UKQEAgLTU2Niw3ICs1NjcsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVJlbW92ZUFsbFNlcnZpY2VXCiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hD
YWNoZU9yaWdpbnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29u
dGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlR2V0RmV0Y2hDYWNoZU9yaWdpbnNGdW5jdGlvbiBjYWxs
YmFjaykKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0
b3JlKCkuZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgeyB9LCBb
Y29udGV4dCwgY2FsbGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CisgICAgV2ViS2l0Ojp0b0lt
cGwoZGF0YVN0b3JlUmVmKS0+ZmV0Y2hEYXRhKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01D
YWNoZSwgeyB9LCBbY29udGV4dCwgY2FsbGJhY2tdIChhdXRvIGRhdGFSZWNvcmRzKSB7CiAgICAg
ICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBzZWN1cml0eU9yaWdpbnM7CiAgICAgICAg
IGZvciAoY29uc3QgYXV0byYgZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7CiAgICAgICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykKQEAgLTU4MCw3
ICs1ODEsNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUdldEZldGNoQ2FjaGVTaXplCiB7CiAg
ICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25z
ID0gV2ViS2l0OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXM7CiAKLSAgICBX
ZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT53ZWJzaXRlRGF0YVN0b3JlKCkuZmV0Y2hEYXRh
KFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpET01DYWNoZSwgZmV0Y2hPcHRpb25zLCBbb3JpZ2lu
LCBjb250ZXh0LCBjYWxsYmFja10gKGF1dG8gZGF0YVJlY29yZHMpIHsKKyAgICBXZWJLaXQ6OnRv
SW1wbChkYXRhU3RvcmVSZWYpLT5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRP
TUNhY2hlLCBmZXRjaE9wdGlvbnMsIFtvcmlnaW4sIGNvbnRleHQsIGNhbGxiYWNrXSAoYXV0byBk
YXRhUmVjb3JkcykgewogICAgICAgICBhdXRvIG9yaWdpbkRhdGEgPSBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zdHJpbmco
KSktPmRhdGEoKTsKICAgICAgICAgZm9yIChhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMp
IHsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjb3JkT3JpZ2luIDogZGF0YVJlY29y
ZC5vcmlnaW5zKSB7CkBAIC01OTcsMTIgKzU5OCwxMiBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZUdldEZldGNoQ2FjaGVTaXplCiAKIFdLU3RyaW5nUmVmIFdLV2Vic2l0ZURhdGFTdG9yZUNvcHlT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYpCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0
b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVj
dG9yeSgpKTsKIH0KIAogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGlyZWN0b3J5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdL
U3RyaW5nUmVmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpCiB7Ci0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoV2ViS2l0Ojp0b0ltcGwoc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSktPnN0cmluZygpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdlYktpdDo6
dG9JbXBsKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkpLT5zdHJpbmcoKSk7CiB9
CiAKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiwgdWludDY0X3QpCkBAIC02MTIsNyArNjEzLDcgQEAgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRQZXJPcmlnaW5TdG9yYQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVD
bGVhckFsbERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbnMoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZikKIHsKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPndlYnNpdGVEYXRhU3RvcmUoKS5kZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIoKS5jbGVhclBlcm1pc3Npb25zKCk7Cisg
ICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+ZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25BY2Nlc3NDb250cm9sbGVyKCkuY2xlYXJQZXJtaXNzaW9ucygpOwogI2VuZGlmCiB9CiAKQEAg
LTcxMiwxNCArNzEzLDE0IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0V2ViQXV0aGVudGlj
YXQKICAgICAgICAgY29uZmlndXJhdGlvbi5uZmMgPSBXVEZNb3ZlKG5mYyk7CiAgICAgfQogCi0g
ICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldE1v
Y2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSk7
CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICNlbmRpZgogfQogCiB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJz
aXRlRGF0YVJlbW92YWwoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3Vn
aFdlYnNpdGVEYXRhUmVtb3ZhbEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIE9wdGlvblNldDxX
ZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzID0gV2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU6OkFkQ2xpY2tBdHRyaWJ1dGlvbnM7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVm
KS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10geworICAgIFdlYktpdDo6dG9JbXBs
KGRhdGFTdG9yZVJlZiktPnJlbW92ZURhdGEoZGF0YVR5cGVzLCBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoMCksIFtjb250ZXh0LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhjb250ZXh0
KTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZVBvbGljaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiV0tXZWJzaXRlUG9saWNpZXMuaCIKIAog
I2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3Jl
LmgiCiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgogI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgogI2lu
Y2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0J
KHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9B
UElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKG5vbmV4aXN0ZW50KQpAQCAtMSwxOTcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBUElX
ZWJzaXRlRGF0YVN0b3JlLmgiCi0KLSNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCi0jaW5j
bHVkZSAiU2FuZGJveFV0aWxpdGllcy5oIgotI2luY2x1ZGUgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0KLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KLSNlbmRp
ZgotCi1uYW1lc3BhY2UgQVBJIHsKLQotTlNTdHJpbmcgKldlYkRhdGFiYXNlRGlyZWN0b3J5RGVm
YXVsdHNLZXkgPSBAIldlYkRhdGFiYXNlRGlyZWN0b3J5IjsKLU5TU3RyaW5nICpXZWJTdG9yYWdl
RGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFBy
ZWZlcmVuY2VLZXkiOwotTlNTdHJpbmcgKldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnlEZWZhdWx0
c0tleSA9IEAiV2ViS2l0TWVkaWFDYWNoZURpcmVjdG9yeSI7Ci1OU1N0cmluZyAqV2ViS2l0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5IjsKLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQotewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgLy8gVGhpcyBxdWlyayB1c2VkIHRvIG1ha2UgdGhlc2UgYXBwcyBzaGFyZSBhcHBsaWNhdGlv
biBjYWNoZSBzdG9yYWdlLCBidXQgZG9lc24ndCBhY2NvbXBsaXNoIHRoYXQgYW55IG1vcmUuCi0g
ICAgLy8gUHJlc2VydmluZyBpdCBhdm9pZHMgdGhlIG5lZWQgdG8gbWlncmF0ZSBkYXRhIHdoZW4g
dXBncmFkaW5nLgotICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlIHNob3VsZCBqdXN0IGhhdmUgU2Fm
YXJpLCBXZWJBcHAsIGFuZCB3ZWJib29rbWFya3NkIGNyZWF0ZSBhIGRhdGEgc3RvcmUgd2l0aAot
ICAgIC8vIHRoaXMgYXBwbGljYXRpb24gY2FjaGUgcGF0aCwgYnV0IHRoYXQncyBub3Qgc3VwcG9y
dGVkIGFzIG9mIHJpZ2h0IG5vdy4KLSAgICBpZiAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246Omlz
TW9iaWxlU2FmYXJpKCkgfHwgV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViQXBwKCkgfHwg
V2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzV2ViQm9va21hcmtzRCgpKSB7Ci0gICAgICAgIE5T
U3RyaW5nICpjYWNoZVBhdGggPSBbTlNIb21lRGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiTGlicmFyeS9DYWNoZXMvY29tLmFwcGxlLldlYkFwcENhY2hlIl07Ci0K
LSAgICAgICAgcmV0dXJuIFdlYktpdDo6c3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChj
YWNoZVBhdGguc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aCk7Ci0gICAgfQotI2VuZGlmCi0KLSAg
ICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiQ2FjaGVTdG9yYWdlIik7Ci19Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTmV0
d29ya0NhY2hlIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRN
ZWRpYUNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbigiTWVkaWFDYWNoZSIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSW5kZXhl
ZERCIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlNlcnZpY2VXb3JrZXJzIik7Ci19Ci0KLVdURjo6
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bigiTG9jYWxTdG9yYWdlIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhS2V5cyIpOwotfQotCi1X
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbigiV2ViU1FMIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlJlc291cmNlTG9hZFN0
YXRpc3RpY3MiKTsKLX0KLQotV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEph
dmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gdGVtcERpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIERvbnRD
cmVhdGVEaXJlY3RvcnkpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1w
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJl
Y3RvcnlOYW1lLCBTaG91bGRDcmVhdGVEaXJlY3Rvcnkgc2hvdWxkQ3JlYXRlRGlyZWN0b3J5KQot
ewotICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBOU1VS
TCAqdGVtcFVSTDsKLSAgICAKLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAg
ICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOk5TVGVtcG9yYXJ5RGlyZWN0
b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKLSAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFXZWJL
aXQ6OnByb2Nlc3NIYXNDb250YWluZXIoKSkgewotICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRs
ZUlkZW50aWZpZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKLSAg
ICAgICAgICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKLSAgICAgICAgICAgICAgICBidW5kbGVJ
ZGVudGlmaWVyID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOwotICAg
ICAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRl
bnRpZmllciBpc0RpcmVjdG9yeTpZRVNdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0
ZW1wVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0Rp
cmVjdG9yeTpZRVNdIHJldGFpbl07Ci0gICAgfSk7Ci0gICAgCi0gICAgTlNVUkwgKnVybCA9IFt0
ZW1wVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0
b3J5OllFU107Ci0KLSAgICBpZiAoc2hvdWxkQ3JlYXRlRGlyZWN0b3J5ID09IENyZWF0ZURpcmVj
dG9yeQotICAgICAgICAmJiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRl
RGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmli
dXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pKQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBj
cmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKLSAgICAKLSAgICByZXR1cm4gdXJsLmFic29sdXRl
VVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwotfQotCi1XVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25j
ZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgTlNVUkwgKmNhY2hlVVJMOwotCi0gICAgZGlzcGF0
Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNDYWNoZXNEaXJlY3RvcnkgaW5E
b21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpO
TyBlcnJvcjpudWxscHRyXTsKLSAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFz
Q29udGFpbmVyKCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0g
W05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgICAgICAgICBpZiAo
IWJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtO
U1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKLSAgICAgICAgICAgIHVybCA9
IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJl
Y3Rvcnk6WUVTXTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhY2hlVVJMID0gW1t1cmwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07
Ci0gICAgfSk7Ci0KLSAgICBOU1VSTCAqdXJsID0gW2NhY2hlVVJMIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107Ci0gICAgaWYgKCFbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRo
SW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJd
KQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJs
KTsKLQotICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50
YXRpb247Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3Rv
cnlOYW1lKQotewotICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0
YXRpYyBOU1VSTCAqd2Vic2l0ZURhdGFVUkw7Ci0KLSAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9r
ZW4sIF57Ci0gICAgICAgIE5TVVJMICp1cmwgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIFVSTEZvckRpcmVjdG9yeTpOU0xpYnJhcnlEaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9t
YWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJvcjpudWxscHRy
XTsKLSAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotCi0gICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdOwotCi0gICAgICAgIGlmICghV2ViS2l0Ojpwcm9j
ZXNzSGFzQ29udGFpbmVyKCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlm
aWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgICAgICAg
ICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmll
ciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKLSAgICAgICAgICAg
IHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIg
aXNEaXJlY3Rvcnk6WUVTXTsKLSAgICAgICAgfQotCi0gICAgICAgIHdlYnNpdGVEYXRhVVJMID0g
W1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2Vic2l0ZURhdGEiIGlzRGlyZWN0
b3J5OllFU10gcmV0YWluXTsKLSAgICB9KTsKLQotICAgIE5TVVJMICp1cmwgPSBbd2Vic2l0ZURh
dGFVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rv
cnk6WUVTXTsKLSAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRl
RGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmli
dXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCi0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNy
ZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwotCi0gICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5w
YXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVBJCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0JKHJldmlzaW9uIDI1MDE1MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEwNSwxNyArMTA1LDE3IEBAIHByaXZhdGU6CiAKICsgKFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRl
ZmF1bHREYXRhU3RvcmUKIHsKLSAgICByZXR1cm4gd3JhcHBlcihBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXIoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkpOwogfQogCiArIChXS1dlYnNpdGVEYXRh
U3RvcmUgKilub25QZXJzaXN0ZW50RGF0YVN0b3JlCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50RGF0YVN0b3JlKCkpOworICAg
IHJldHVybiB3cmFwcGVyKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lz
dGVudCgpKTsKIH0KIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUt
PkFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6fldlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp+V2Vic2l0ZURhdGFTdG9yZSgp
OwogCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtMTI3LDE4ICsxMjcsOSBAQCArIChCT09M
KXN1cHBvcnRzU2VjdXJlQ29kaW5nCiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihO
U0NvZGVyICopY29kZXIKIHsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLQotICAgIFJldGFpblB0cjxXS1dlYnNpdGVEYXRhU3RvcmU+IGRhdGFT
dG9yZTsKICAgICBpZiAoW2NvZGVyIGRlY29kZUJvb2xGb3JLZXk6QCJpc0RlZmF1bHREYXRhU3Rv
cmUiXSkKLSAgICAgICAgZGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0
YVN0b3JlXTsKLSAgICBlbHNlCi0gICAgICAgIGRhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3Rv
cmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV07Ci0KLSAgICBbc2VsZiByZWxlYXNlXTsKLQotICAg
IHJldHVybiBkYXRhU3RvcmUubGVha1JlZigpOworICAgICAgICByZXR1cm4gW1tXS1dlYnNpdGVE
YXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmV0YWluXTsKKyAgICByZXR1cm4gW1tXS1dlYnNp
dGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV0gcmV0YWluXTsKIH0KIAogLSAodm9p
ZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgpAQCAtMTY5LDcgKzE2MCw3IEBAICsg
KE5TU2V0ICopYWxsV2Vic2l0ZURhdGFUeXBlcwogCiAtIChXS0hUVFBDb29raWVTdG9yZSAqKWh0
dHBDb29raWVTdG9yZQogewotICAgIHJldHVybiB3cmFwcGVyKF93ZWJzaXRlRGF0YVN0b3JlLT5o
dHRwQ29va2llU3RvcmUoKSk7CisgICAgcmV0dXJuIHdyYXBwZXIoX3dlYnNpdGVEYXRhU3RvcmUt
PmNvb2tpZVN0b3JlKCkpOwogfQogCiBzdGF0aWMgV2FsbFRpbWUgdG9TeXN0ZW1DbG9ja1RpbWUo
TlNEYXRlICpkYXRlKQpAQCAtMTg2LDcgKzE3Nyw3IEBAIC0gKHZvaWQpZmV0Y2hEYXRhUmVjb3Jk
c09mVHlwZXM6KE5TU2V0ICoKIC0gKHZvaWQpcmVtb3ZlRGF0YU9mVHlwZXM6KE5TU2V0ICopZGF0
YVR5cGVzIG1vZGlmaWVkU2luY2U6KE5TRGF0ZSAqKWRhdGUgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgYXV0byBjb21wbGV0aW9uSGFu
ZGxlckNvcHkgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpOwotICAgIF93ZWJzaXRl
RGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVtb3ZlRGF0YShXZWJLaXQ6OnRvV2Vic2l0
ZURhdGFUeXBlcyhkYXRhVHlwZXMpLCB0b1N5c3RlbUNsb2NrVGltZShkYXRlID8gZGF0ZSA6IFtO
U0RhdGUgZGlzdGFudFBhc3RdKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0geworICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT5yZW1vdmVEYXRhKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGVzKGRhdGFU
eXBlcyksIHRvU3lzdGVtQ2xvY2tUaW1lKGRhdGUgPyBkYXRlIDogW05TRGF0ZSBkaXN0YW50UGFz
dF0pLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5XSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
Q29weSgpOwogICAgIH0pOwogfQpAQCAtMjA1LDcgKzE5Niw3IEBAIC0gKHZvaWQpcmVtb3ZlRGF0
YU9mVHlwZXM6KE5TU2V0ICopZGF0YVQKIHsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29w
eSA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcik7CiAKLSAgICBfd2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRh
VHlwZXMoZGF0YVR5cGVzKSwgdG9XZWJzaXRlRGF0YVJlY29yZHMoZGF0YVJlY29yZHMpLCBbY29t
cGxldGlvbkhhbmRsZXJDb3B5XSB7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnJlbW92ZURhdGEo
V2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5cGVzKSwgdG9XZWJzaXRlRGF0YVJlY29y
ZHMoZGF0YVJlY29yZHMpLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5XSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyQ29weSgpOwogICAgIH0pOwogfQpAQCAtMjQwLDEyICsyMzEsMTIgQEAgKyAo
TlNTZXQ8TlNTdHJpbmcgKj4gKilfYWxsV2Vic2l0ZURhdGFUeQogCiArIChCT09MKV9kZWZhdWx0
RGF0YVN0b3JlRXhpc3RzCiB7Ci0gICAgcmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZUV4aXN0cygpOworICAgIHJldHVybiBXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKTsKIH0KIAogKyAodm9pZClfZGVsZXRlRGVmYXVs
dERhdGFTdG9yZUZvclRlc3RpbmcKIHsKLSAgICByZXR1cm4gQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWxldGVEZWZhdWx0RGF0YVN0b3JlRm9yVGVzdGluZygpOworICAgIHJldHVybiBXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7CiB9
CiAKIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KQEAgLTI1Myw3ICsyNDQsNyBAQCAt
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooCiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBhdXRvIGNvbmZpZyA9
IGNvbmZpZ3VyYXRpb24uaXNQZXJzaXN0ZW50ID8gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpIDogV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgYXV0byBjb25maWcgPSBjb25maWd1cmF0aW9uLmlz
UGVyc2lzdGVudCA/IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNv
bmZpZ3VyYXRpb24oKSA6IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNy
ZWF0ZSgpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoY29uZmlnLT5pc1BlcnNpc3RlbnQoKSA9PSBj
b25maWd1cmF0aW9uLmlzUGVyc2lzdGVudCk7CiAKQEAgLTMxNyw3ICszMDgsNyBAQCAtIChpbnN0
YW5jZXR5cGUpX2luaXRXaXRoQ29uZmlndXJhdGlvbjooCiAKICAgICBhdXRvIHNlc3Npb25JRCA9
IGNvbmZpZ3VyYXRpb24uaXNQZXJzaXN0ZW50ID8gUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlUGVy
c2lzdGVudFNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmdlbmVyYXRlRXBoZW1lcmFsU2Vz
c2lvbklEKCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZT4oc2VsZiwgV1RGTW92ZShjb25maWcpLCBzZXNzaW9uSUQpOworICAgIEFQ
STo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlPihz
ZWxmLCBXVEZNb3ZlKGNvbmZpZyksIHNlc3Npb25JRCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0K
QEAgLTMzMCw3ICszMjEsNyBAQCAtICh2b2lkKV9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczooTlNT
ZXQ8CiAgICAgaWYgKG9wdGlvbnMgJiBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25Db21w
dXRlU2l6ZXMpCiAgICAgICAgIGZldGNoT3B0aW9ucy5hZGQoV2ViS2l0OjpXZWJzaXRlRGF0YUZl
dGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpOwogCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5
cGVzKSwgZmV0Y2hPcHRpb25zLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlckNvcHkpXShhdXRvIHdlYnNpdGVEYXRhUmVjb3JkcykgeworICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT5mZXRjaERhdGEoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZXMoZGF0YVR5
cGVzKSwgZmV0Y2hPcHRpb25zLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlckNvcHkpXShhdXRvIHdlYnNpdGVEYXRhUmVjb3JkcykgewogICAgICAgICBW
ZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gZWxlbWVudHM7CiAgICAgICAgIGVsZW1lbnRzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkod2Vic2l0ZURhdGFSZWNvcmRzLnNpemUoKSk7CiAKQEAgLTM0
MywxOCArMzM0LDE4IEBAIC0gKHZvaWQpX2ZldGNoRGF0YVJlY29yZHNPZlR5cGVzOihOU1NldDwK
IAogLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQKIHsKLSAgICByZXR1cm4g
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCgpOworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+cmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoKTsKIH0KIAogLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJz
aXRlRGF0YVN0b3JlKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7
CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KGVuYWJsZWQpOwogfQogCiAtIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2Rl
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICByZXR1cm4gX3dl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGVidWdNb2RlKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGVidWdNb2RlKCk7CiAjZWxzZQogICAgIHJldHVybiBOTzsKICNlbmRpZgpAQCAt
MzYzLDcgKzM1NCw3IEBAIC0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUK
IC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6KEJPT0wpZW5hYmxl
ZAogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVE
YXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlKGVuYWJsZWQpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGVidWdNb2RlKGVuYWJsZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5h
YmxlZCk7CiAjZW5kaWYKQEAgLTM4MCw2OCArMzcxLDY4IEBAIC0gKHZvaWQpX3NldFBlck9yaWdp
blN0b3JhZ2VRdW90YTooTlNVSW4KIAogLSAoTlNTdHJpbmcgKilfY2FjaGVTdG9yYWdlRGlyZWN0
b3J5CiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5j
YWNoZVN0b3JhZ2VEaXJlY3RvcnkoKTsKIH0KIAogLSAodm9pZClfc2V0Q2FjaGVTdG9yYWdlRGly
ZWN0b3J5OihOU1N0cmluZyAqKWRpcmVjdG9yeQogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KGRpcmVjdG9yeSk7Cisg
ICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldENhY2hlU3RvcmFnZURpcmVjdG9yeShkaXJlY3Rvcnkp
OwogfQogCiAtIChOU1N0cmluZyAqKV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
CiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOworICAgIHJldHVybiBfd2Vic2l0ZURh
dGFTdG9yZS0+c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpOwogfQogCiAtICh2
b2lkKV9zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OihOU1N0cmluZyAqKWRp
cmVjdG9yeQogewotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShkaXJlY3RvcnkpOworICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT5zZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KGRpcmVj
dG9yeSk7CiB9CiAKIC0gKHZvaWQpX3NldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcjooTlNTdHJp
bmcgKilpZGVudGlmaWVyCiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3Rv
cmUoKS5zZXRCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAgX3dlYnNp
dGVEYXRhU3RvcmUtPnNldEJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcihpZGVudGlmaWVyKTsKIH0K
IAogLSAoTlNTdHJpbmcgKilfYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyCiB7Ci0gICAgcmV0dXJu
IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuYm91bmRJbnRlcmZhY2VJZGVu
dGlmaWVyKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5ib3VuZEludGVyZmFjZUlk
ZW50aWZpZXIoKTsKIH0KIAogLSAodm9pZClfc2V0QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6KEJPT0wp
YWxsb3dzCiB7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRB
bGxvd3NDZWxsdWxhckFjY2VzcyhhbGxvd3MgPyBXZWJLaXQ6OkFsbG93c0NlbGx1bGFyQWNjZXNz
OjpZZXMgOiBXZWJLaXQ6OkFsbG93c0NlbGx1bGFyQWNjZXNzOjpObyk7CisgICAgX3dlYnNpdGVE
YXRhU3RvcmUtPnNldEFsbG93c0NlbGx1bGFyQWNjZXNzKGFsbG93cyA/IFdlYktpdDo6QWxsb3dz
Q2VsbHVsYXJBY2Nlc3M6OlllcyA6IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6Ok5vKTsK
IH0KIAogLSAoQk9PTClfYWxsb3dzQ2VsbHVsYXJBY2Nlc3MKIHsKLSAgICByZXR1cm4gX3dlYnNp
dGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5hbGxvd3NDZWxsdWxhckFjY2VzcygpID09
IFdlYktpdDo6QWxsb3dzQ2VsbHVsYXJBY2Nlc3M6OlllczsKKyAgICByZXR1cm4gX3dlYnNpdGVE
YXRhU3RvcmUtPmFsbG93c0NlbGx1bGFyQWNjZXNzKCkgPT0gV2ViS2l0OjpBbGxvd3NDZWxsdWxh
ckFjY2Vzczo6WWVzOwogfQogCiAtICh2b2lkKV9zZXRQcm94eUNvbmZpZ3VyYXRpb246KE5TRGlj
dGlvbmFyeSAqKWNvbmZpZ3VyYXRpb24KIHsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNldFByb3h5Q29uZmlndXJhdGlvbigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5
UmVmKWNvbmZpZ3VyYXRpb24pOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRQcm94eUNvbmZp
Z3VyYXRpb24oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZiljb25maWd1cmF0aW9uKTsKIH0KIAog
LSAoTlNTdHJpbmcgKilfc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyCiB7Ci0gICAg
cmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5z
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKTsKIH0KIAogLSAodm9pZClfc2V0U291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsK
LSAgICBpZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U291cmNl
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgIGlmICghX3dlYnNp
dGVEYXRhU3RvcmUtPnNldFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihpZGVudGlm
aWVyKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TR2VuZXJpY0V4Y2VwdGlvbiBmb3Jt
YXQ6QCJfc2V0U291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyIGNhbm5vdCBiZSBjYWxs
ZWQgYWZ0ZXIgbmV0d29ya2luZyBoYXMgYmVndW4iXTsKIH0KIAogLSAoTlNTdHJpbmcgKilfc291
cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyCiB7Ci0gICAgcmV0dXJuIF93ZWJzaXRl
RGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJ
ZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5zb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXIoKTsKIH0KIAogLSAodm9pZClfc2V0U291cmNlQXBwbGlj
YXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIHsKLSAgICBp
ZiAoIV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0U291cmNlQXBwbGlj
YXRpb25TZWNvbmRhcnlJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgIGlmICghX3dlYnNpdGVE
YXRhU3RvcmUtPnNldFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcihpZGVudGlm
aWVyKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TR2VuZXJpY0V4Y2VwdGlvbiBmb3Jt
YXQ6QCJfc2V0U291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyIGNhbm5vdCBiZSBj
YWxsZWQgYWZ0ZXIgbmV0d29ya2luZyBoYXMgYmVndW4iXTsKIH0KIApAQCAtNDU2LDE4ICs0NDcs
MTggQEAgLSAoQk9PTClfYWxsb3dzVExTRmFsbGJhY2sKIAogLSAoTlNEaWN0aW9uYXJ5ICopX3By
b3h5Q29uZmlndXJhdGlvbgogewotICAgIHJldHVybiAoX19icmlkZ2UgTlNEaWN0aW9uYXJ5ICop
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5wcm94eUNvbmZpZ3VyYXRpb24o
KTsKKyAgICByZXR1cm4gKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKV93ZWJzaXRlRGF0YVN0b3Jl
LT5wcm94eUNvbmZpZ3VyYXRpb24oKTsKIH0KIAogLSAoTlNVUkwgKilfaW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkKIHsKLSAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpfd2Vic2l0
ZURhdGFTdG9yZS0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNd
OworICAgIHJldHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl93ZWJzaXRlRGF0YVN0b3JlLT5j
b25maWd1cmF0aW9uKCkuaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZ
RVNdOwogfQogCiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkU3VibWl0
VGVsZW1ldHJ5OihCT09MKXZhbHVlCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0
b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOworICAgIGF1dG8qIHN0b3JlID0gX3dlYnNp
dGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKICAgICBpZiAoIXN0b3JlKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTQ4MiwxMyArNDczLDEzIEBAIC0gKHZvaWQpX3NldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NUZXN0aW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGNhbGxi
YWNrKSB7Ci0gICAgICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0
U3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjayhbY2FsbGJhY2sgPSBtYWtlQmxvY2tQdHIoY2FsbGJh
Y2spLCBzZWxmXShjb25zdCBTdHJpbmcmIGV2ZW50KSB7CisgICAgICAgIF93ZWJzaXRlRGF0YVN0
b3JlLT5zZXRTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKFtjYWxsYmFjayA9IG1ha2VCbG9ja1B0
cihjYWxsYmFjayksIHNlbGZdKGNvbnN0IFN0cmluZyYgZXZlbnQpIHsKICAgICAgICAgICAgIGNh
bGxiYWNrKHNlbGYsIGV2ZW50KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNldFN0YXRpc3Rp
Y3NUZXN0aW5nQ2FsbGJhY2sobnVsbHB0cik7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFN0
YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2sobnVsbHB0cik7CiAjZW5kaWYKIH0KIApAQCAtNTExLDcg
KzUwMiw3IEBAIC0gKHZvaWQpX2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOigKICAgICB9
CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMod2Vi
UGFnZVByb3h5LT5pZGVudGlmaWVyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8gZG9tYWlucykgeworICAgIF93ZWJzaXRlRGF0YVN0
b3JlLT5nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh3ZWJQYWdlUHJveHktPmlkZW50aWZpZXIo
KSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0o
YXV0byBkb21haW5zKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlE
b21haW5zOwogICAgICAgICBhcGlEb21haW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZG9tYWlu
cy5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCkBAIC01MjYs
NyArNTE3LDcgQEAgLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6KAogLSAo
dm9pZClfc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZToodm9pZCAoXikodm9pZCkpY29tcGxl
dGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2NoZWR1bGVDb29raWVCbG9j
a2luZ1VwZGF0ZShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2NoZWR1bGVDb29raWVCbG9ja2lu
Z1VwZGF0ZShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKICNlbHNlCkBA
IC01MzcsNyArNTI4LDcgQEAgLSAodm9pZClfc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZToo
dgogLSAodm9pZClfc2V0UHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRl
RGF0YVN0b3JlKCkuc2V0UHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgeworICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT5zZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRp
b25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTQ4LDcgKzUzOSw3IEBA
IC0gKHZvaWQpX3NldFByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb20KIC0gKHZvaWQpX2dldElz
UHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuaXNQ
cmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBlbmFibGVkKSB7CisgICAgX3dlYnNpdGVE
YXRhU3RvcmUtPmlzUHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFpbiksIFtjb21wbGV0aW9uSGFu
ZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZW5hYmxlZCkgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbmFibGVkKTsKICAgICB9KTsKICNlbHNlCkBAIC01
NTksNyArNTUwLDcgQEAgLSAodm9pZClfZ2V0SXNQcmV2YWxlbnREb21haW46KE5TVVJMICopZAog
LSAodm9pZClfY2xlYXJQcmV2YWxlbnREb21haW46KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVE
YXRhU3RvcmUoKS5jbGVhclByZXZhbGVudFJlc291cmNlKFVSTChkb21haW4pLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKKyAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwgW2NvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiAjZWxzZQpAQCAtNTcwLDcgKzU2MSw3
IEBAIC0gKHZvaWQpX2NsZWFyUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWQKIC0gKHZvaWQpX3By
b2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHM6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25I
YW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNjaGVkdWxlU3RhdGlzdGljc0FuZERh
dGFSZWNvcmRzUHJvY2Vzc2luZyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpXSgpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2NoZWR1bGVTdGF0
aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogICAgIH0pOwogI2Vsc2UKQEAgLTU4MCwxOCArNTcxLDE4IEBAIC0gKHZvaWQpX3Byb2Nl
c3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMKIAogLSAoYm9vbClfaGFzUmVnaXN0ZXJlZFNlcnZp
Y2VXb3JrZXIKIHsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhXZWJDb3JlOjpz
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YWJhc2VGaWxlbmFtZShfd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KSkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKFdlYkNvcmU6OnNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhYmFzZUZpbGVuYW1lKF93ZWJzaXRlRGF0YVN0b3JlLT5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpKTsKIH0KIAogLSAoaWQgPF9XS1dlYnNp
dGVEYXRhU3RvcmVEZWxlZ2F0ZT4pX2RlbGVnYXRlCiB7Ci0gICAgcmV0dXJuIF9kZWxlZ2F0ZS5n
ZXQoKTsKKyAgICByZXR1cm4gX2RlbGVnYXRlLmdldCgpLmdldCgpOwogfQogCiAtICh2b2lkKXNl
dF9kZWxlZ2F0ZTooaWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4pZGVsZWdhdGUKIHsK
ICAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0
ZURhdGFTdG9yZSgpLnNldENsaWVudChtYWtlVW5pcXVlUmVmPFdlYnNpdGVEYXRhU3RvcmVDbGll
bnQ+KGRlbGVnYXRlKSk7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldENsaWVudChtYWtlVW5p
cXVlUmVmPFdlYnNpdGVEYXRhU3RvcmVDbGllbnQ+KGRlbGVnYXRlKSk7CiB9CiAKIEBlbmQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVJ
bnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTIgKzI1LDEzIEBACiAKICNpbXBvcnQgIldLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaCIKIAotI2ltcG9ydCAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgog
I2ltcG9ydCAiV0tPYmplY3QuaCIKKyNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKKyNpbXBv
cnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdGVtcGxhdGU8
PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OldlYnNpdGVEYXRhU3RvcmU+IHsKK3RlbXBsYXRl
PD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8V2Vic2l0ZURhdGFTdG9yZT4gewogICAgIHVzaW5nIFdy
YXBwZXJDbGFzcyA9IFdLV2Vic2l0ZURhdGFTdG9yZTsKIH07CiAKQEAgLTM4LDcgKzM5LDcgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OldlYgogCiBAaW50ZXJmYWNlIFdL
V2Vic2l0ZURhdGFTdG9yZSAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCi0gICAgQVBJOjpPYmpl
Y3RTdG9yYWdlPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4gX3dlYnNpdGVEYXRhU3RvcmU7Ci0gICAg
UmV0YWluUHRyPGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+ID4gX2RlbGVnYXRlOwor
ICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IF93ZWJzaXRl
RGF0YVN0b3JlOworICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdh
dGU+ID4gX2RlbGVnYXRlOwogfQogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAko
cmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJ
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTA3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgotCi0j
aW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRy
Lmg+Ci0KLSNpZiBQTEFURk9STShHVEspCi0jZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3ZWJraXRn
dGsiCi0jZWxpZiBQTEFURk9STShXUEUpCi0jZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCi0j
ZW5kaWYKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gY2FjaGVE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQ
QVJBVE9SX1MgImFwcGxpY2F0aW9ucyIpOwotfQotCi0vLyBGSVhNRTogVGhlIG90aGVyIGRpcmVj
dG9yaWVzIGluIHRoaXMgZmlsZSBhcmUgc2hhcmVkIGJldHdlZW4gYWxsIGFwcGxpY2F0aW9ucyB1
c2luZyBXZWJLaXRHVEsuCi0vLyBXaHkgaXMgb25seSB0aGlzIGRpcmVjdG9yeSBuYW1lc3BhY2Vk
IHRvIGEgcGFydGljdWxhciBhcHBsaWNhdGlvbj8KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBjYWNoZURp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihnX2dldF9wcmduYW1lKCkpLCAiV2ViS2l0Q2FjaGUiKSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAgIHJl
dHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAiQ2FjaGVTdG9yYWdlIikpOwotfQotCi1X
VEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGF0YWJhc2VzIiBH
X0RJUl9TRVBBUkFUT1JfUyAiaW5kZXhlZGRiIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKLXsK
LSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
QkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgInNlcnZpY2V3b3JrZXJzIik7Ci19Ci0K
LVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoKQotewotICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAibG9jYWxzdG9yYWdlIik7
Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgIm1lZGlh
a2V5cyIpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFz
aFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRP
Ul9TICJkZXZpY2VpZGhhc2hzYWx0cyIpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiB3ZWJz
aXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBH
X0RJUl9TRVBBUkFUT1JfUyAiZGF0YWJhc2VzIik7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRIU1RTRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJf
U0VQQVJBVE9SX1MpOwotfQotCi1XVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHdlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElS
X1NFUEFSQVRPUl9TICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Ci19Ci0KLVdURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQotewotICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0b3J5TmFt
ZSk7Ci19Ci0KLVdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlO
YW1lKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2Vy
X2RhdGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgQVBJCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb29raWVNYW5hZ2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRDb29raWVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29va2llTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU4LDcgKzU4LDcgQEAgc3RydWN0IF9XZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZSB7CiAg
ICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VChkYXRhTWFuYWdlcik7Ci0gICAgICAgIHJldHVybiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJH
ZXREYXRhU3RvcmUoZGF0YU1hbmFnZXIpLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKTsK
KyAgICAgICAgcmV0dXJuIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShkYXRh
TWFuYWdlcikuc2Vzc2lvbklEKCk7CiAgICAgfQogCiAgICAgfl9XZWJLaXRDb29raWVNYW5hZ2Vy
UHJpdmF0ZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAkocmV2aXNpb24gMjUwMTQ4KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc1NSw3ICs3NTUsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9jbGVhcl9jYWNo
ZShXZWJLCiAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlczsK
ICAgICB3ZWJzaXRlRGF0YVR5cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlKTsK
ICAgICB3ZWJzaXRlRGF0YVR5cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSk7Ci0g
ICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERh
dGFTdG9yZShjb250ZXh0LT5wcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpLndlYnNpdGVE
YXRhU3RvcmUoKTsKKyAgICBhdXRvJiB3ZWJzaXRlRGF0YVN0b3JlID0gd2Via2l0V2Vic2l0ZURh
dGFNYW5hZ2VyR2V0RGF0YVN0b3JlKGNvbnRleHQtPnByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5n
ZXQoKSk7CiAgICAgd2Vic2l0ZURhdGFTdG9yZS5yZW1vdmVEYXRhKHdlYnNpdGVEYXRhVHlwZXMs
IC1XYWxsVGltZTo6aW5maW5pdHkoKSwgW10geyB9KTsKIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0
YU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMCwxMiArMjAsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIuaCIKIAotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIK
ICNpbmNsdWRlICJXZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0V2Vic2l0ZURhdGFQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGFGZXRjaE9wdGlvbi5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNs
dWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNs
dWRlIDx3dGYvRmlsZVN5c3RlbS5oPgpAQCAtOTUsNyArOTUsNyBAQCBzdHJ1Y3QgX1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlclByaXZhdGUgCiAgICAgICAgIEFTU0VSVChwcm9jZXNzUG9vbHMuaXNF
bXB0eSgpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiB3ZWJz
aXRlRGF0YVN0b3JlOworICAgIFJlZlB0cjxXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU+IHdlYnNp
dGVEYXRhU3RvcmU7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBiYXNlRGF0YURpcmVjdG9yeTsKICAg
ICBHVW5pcXVlUHRyPGNoYXI+IGJhc2VDYWNoZURpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRyPGNo
YXI+IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKQEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJTZXRQCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UFJPUF9JU19FUEhFTUVSQUw6CiAgICAgICAgIGlmIChnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVl
KSkKLSAgICAgICAgICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKTsKKyAgICAgICAg
ICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJv
cElELCBwYXJhbVNwZWMpOwpAQCAtMzgxLDMxICszODEsMjMgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyXwogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxh
Z3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOwog
fQogCi1XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNy
ZWF0ZShSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikK
LXsKLSAgICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIgPSBXRUJLSVRfV0VCU0lU
RV9EQVRBX01BTkFHRVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQlNJVEVfREFUQV9NQU5B
R0VSLCBudWxscHRyKSk7Ci0gICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIFBBTDo6
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwotCi0gICAgcmV0dXJuIG1hbmFnZXI7Ci19
Ci0KLUFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0
YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlcikKK1dlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdl
YnNpdGVEYXRhTWFuYWdlciogbWFuYWdlcikKIHsKICAgICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFn
ZXJQcml2YXRlKiBwcml2ID0gbWFuYWdlci0+cHJpdjsKICAgICBpZiAoIXByaXYtPndlYnNpdGVE
YXRhU3RvcmUpIHsKICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRMb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeSA/Ci0gICAgICAg
ICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+
bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpKSk7CisgICAgICAgICAgICBXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGly
ZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE5ldHdvcmtDYWNoZURp
cmVjdG9yeSghcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKSwgbmV0d29y
a0NhY2hlU3ViZGlyZWN0b3J5KSk7CisgICAgICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNoZVN1YmRp
cmVjdG9yeSkpOwogICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KCFwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSA6
IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+YXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKSkpOworICAgICAgICAgICAgV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIDogRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCFwcml2LT53ZWJTUUxEaXJlY3RvcnkgPwotICAgICAgICAgICAg
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6
IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2Vi
U1FMRGlyZWN0b3J5LmdldCgpKSk7CisgICAgICAgICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkp
KTsKICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0SFNUU1N0b3JhZ2VEaXJlY3RvcnkoIXByaXYt
PmhzdHNDYWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRIU1RTRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHByaXYtPmhzdHNDYWNoZURpcmVjdG9yeS5nZXQoKSkpOwotICAgICAg
ICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7Ci0gICAgICAg
IHByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
KTsKKyAgICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJl
Y3RvcnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5LmdldCgpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24t
PnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKKyAgICAgICAgcHJpdi0+d2Vic2l0
ZURhdGFTdG9yZSA9IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUoY29u
ZmlndXJhdGlvbiksIFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogICAgIH0K
IAogICAgIHJldHVybiAqcHJpdi0+d2Vic2l0ZURhdGFTdG9yZTsKQEAgLTU0Miw3ICs1MzQsNyBA
QCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgaWYgKCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAg
ICAgIHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgp
KSk7CisgICAgICAgIHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKS51
dGY4KCkuZGF0YSgpKSk7CiAgICAgcmV0dXJuIHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5n
ZXQoKTsKIH0KIApAQCAtNTY2LDcgKzU1OCw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXIKIAogICAgIGlmICghcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5KSB7CiAg
ICAgICAgIC8vIFRoZSBkZWZhdWx0IGRpcmVjdG9yeSBhbHJlYWR5IGhhcyB0aGUgc3ViZGlyZWN0
b3J5LgotICAgICAgICBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoRmls
ZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3
b3JrQ2FjaGVEaXJlY3RvcnkoKSkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5kaXNr
Q2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSku
dXRmOCgpLmRhdGEoKSkpOwogICAgIH0KICAgICByZXR1cm4gcHJpdi0+ZGlza0NhY2hlRGlyZWN0
b3J5LmdldCgpOwogfQpAQCAtNTkwLDcgKzU4Miw3IEBAIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIXBy
aXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpCi0gICAgICAgIHByaXYtPmFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAg
cHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkudXRmOCgp
LmRhdGEoKSkpOwogICAgIHJldHVybiBwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Lmdl
dCgpOwogfQogCkBAIC02MTMsNyArNjA1LDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghcHJpdi0+
aW5kZXhlZERCRGlyZWN0b3J5KQotICAgICAgICBwcml2LT5pbmRleGVkREJEaXJlY3RvcnkucmVz
ZXQoZ19zdHJkdXAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIHByaXYtPmluZGV4ZWREQkRp
cmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1cm4g
cHJpdi0+aW5kZXhlZERCRGlyZWN0b3J5LmdldCgpOwogfQogCkBAIC02MzgsNyArNjMwLDcgQEAg
Y29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICghcHJpdi0+d2ViU1FMRGlyZWN0b3J5KQotICAgICAgICBwcml2
LT53ZWJTUUxEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAg
IHByaXYtPndlYlNRTERpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsK
ICAgICByZXR1cm4gcHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpOwogfQogCkBAIC02NjEsNyAr
NjUzLDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcgogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5KQot
ICAgICAgICBwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAg
ICAgICAgcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CiAg
ICAgcmV0dXJuIHByaXYtPmhzdHNDYWNoZURpcmVjdG9yeS5nZXQoKTsKIH0KIApAQCAtNzM1LDcg
KzcyNyw3IEBAIHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNoKFcKICAgICBn
X3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSk7
CiAKICAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcobWFuYWdl
ciwgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOwotICAgIG1hbmFnZXItPnByaXYt
PndlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEodG9XZWJzaXRl
RGF0YVR5cGVzKHR5cGVzKSwgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzLCBb
dGFzayA9IFdURk1vdmUodGFzayldIChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+IHJlY29yZHMp
IHsKKyAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlLT5mZXRjaERhdGEodG9XZWJz
aXRlRGF0YVR5cGVzKHR5cGVzKSwgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVz
LCBbdGFzayA9IFdURk1vdmUodGFzayldIChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+IHJlY29y
ZHMpIHsKICAgICAgICAgR0xpc3QqIGRhdGFMaXN0ID0gbnVsbHB0cjsKICAgICAgICAgd2hpbGUg
KCFyZWNvcmRzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSB3ZWJr
aXRXZWJzaXRlRGF0YUNyZWF0ZShyZWNvcmRzLnRha2VMYXN0KCkpKQpAQCAtODA5LDcgKzgwMSw3
IEBAIHZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3JlbW92ZSgKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPndlYnNp
dGVEYXRhU3RvcmUoKS5yZW1vdmVEYXRhKHRvV2Vic2l0ZURhdGFUeXBlcyh0eXBlcyksIHJlY29y
ZHMsIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0geworICAgIG1hbmFnZXItPnByaXYtPndlYnNpdGVE
YXRhU3RvcmUtPnJlbW92ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKHR5cGVzKSwgcmVjb3Jkcywg
W3Rhc2sgPSBXVEZNb3ZlKHRhc2spXSB7CiAgICAgICAgIGdfdGFza19yZXR1cm5fYm9vbGVhbih0
YXNrLmdldCgpLCBUUlVFKTsKICAgICB9KTsKIH0KQEAgLTg2MSw3ICs4NTMsNyBAQCB2b2lkIHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGVhcihXCiAKICAgICBXYWxsVGltZSB0aW1lUG9p
bnQgPSB0aW1lU3BhbiA/IFdhbGxUaW1lOjpub3coKSAtIFNlY29uZHM6OmZyb21NaWNyb3NlY29u
ZHModGltZVNwYW4pIDogV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKDApOwogICAgIEdSZWZQdHI8
R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyhtYW5hZ2VyLCBjYW5jZWxsYWJsZSwg
Y2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0gICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlbW92ZURhdGEodG9XZWJzaXRlRGF0YVR5cGVzKHR5cGVz
KSwgdGltZVBvaW50LCBbdGFzayA9IFdURk1vdmUodGFzayldIHsKKyAgICBtYW5hZ2VyLT5wcml2
LT53ZWJzaXRlRGF0YVN0b3JlLT5yZW1vdmVEYXRhKHRvV2Vic2l0ZURhdGFUeXBlcyh0eXBlcyks
IHRpbWVQb2ludCwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXSB7CiAgICAgICAgIGdfdGFza19yZXR1
cm5fYm9vbGVhbih0YXNrLmdldCgpLCBUUlVFKTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlLmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTksMTIgKzE5LDEwIEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29s
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCi1XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIqIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNyZWF0ZShSZWY8V2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJik7Ci1BUEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtp
dFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIq
KTsKK1dlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0
RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciopOwogdm9pZCB3ZWJraXRXZWJzaXRl
RGF0YU1hbmFnZXJBZGRQcm9jZXNzUG9vbChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqLCBXZWJL
aXQ6OldlYlByb2Nlc3NQb29sJik7CiB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlclJlbW92
ZVByb2Nlc3NQb29sKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciosIFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2wmKTsKIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sKj4mIHdlYmtpdFdl
YnNpdGVEYXRhTWFuYWdlckdldFByb2Nlc3NQb29scyhXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIq
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93aW4vQVBJV2Vic2l0ZURhdGFT
dG9yZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dp
bi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAkocmV2aXNpb24gMjUwMTIyKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dpbi9BUElXZWJzaXRlRGF0YVN0b3JlV2luLmNwcAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKLQotI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+Ci0KLW5hbWVzcGFjZSBBUEkgewotCi1TdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2Vy
U3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJBcHBsaWNhdGlvbkNhY2hlIik7Ci19Ci0KLVN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKLXsK
LSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0
ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiQ2FjaGVTdG9yYWdlIik7
Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0
b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTmV0d29y
a0NhY2hlIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJJbmRleGVkREIiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiU2VydmljZVdvcmtlcnMiKTsKLX0KLQotU3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQotewotICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJMb2NhbFN0b3JhZ2UiKTsKLX0K
LQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiTWVkaWFL
ZXlTdG9yYWdlIik7Ci19Ci0KLVN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkoKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJXZWJTUUwiKTsKLX0KLQotU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOwotfQotCi1TdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQotewotICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCksIGRpcmVjdG9yeU5hbWUpOwotfQotCi1TdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQotewotICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCksIGRpcmVjdG9yeU5hbWUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBBUEkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0JKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogI2ltcG9y
dCAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIkFQSVN0cmluZy5oIgogI2ltcG9y
dCAiQVBJVVJMLmgiCi0jaW1wb3J0ICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW1wb3J0ICJB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW1wb3J0ICJBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uQ29jb2EuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9u
RGVjaXNpb25MaXN0ZW5lci5oIgpAQCAtNjQsNiArNjMsNyBAQAogI2ltcG9ydCAiV2ViUGFnZVBy
b3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIldlYlByb3RlY3Rp
b25TcGFjZS5oIgorI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2ltcG9ydCAiX1dLQ29u
dGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0Vycm9yUmVjb3ZlcnlB
dHRlbXB0aW5nLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcg
Kzg3LDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eTo6TmV0d29ya1Byb2Nlc3NQcm94eQogICAgIGNv
bm5lY3QoKTsKIAogICAgIGlmIChhdXRvKiB3ZWJzaXRlRGF0YVN0b3JlID0gbV9wcm9jZXNzUG9v
bC53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZXMuc2V0KHdl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwgbWFrZVJlZih3
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkpKTsKKyAgICAgICAgbV93ZWJzaXRl
RGF0YVN0b3Jlcy5zZXQod2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCksIG1ha2VSZWYoKndl
YnNpdGVEYXRhU3RvcmUpKTsKIH0KIAogTmV0d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdvcmtQcm9j
ZXNzUHJveHkoKQpAQCAtMTEyNSwxNCArMTEyNSwxNCBAQCBXZWJzaXRlRGF0YVN0b3JlKiBOZXR3
b3JrUHJvY2Vzc1Byb3h5Ojp3CiAgICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWUuZ2V0KCk7
CiAKICAgICBpZiAoYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IG1fcHJvY2Vzc1Bvb2wud2Vic2l0
ZURhdGFTdG9yZSgpKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uSUQgPT0gd2Vic2l0ZURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKQotICAgICAgICAgICAgcmV0dXJuICZ3
ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgICAgIGlmIChzZXNzaW9u
SUQgPT0gd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpCisgICAgICAgICAgICByZXR1cm4g
d2Vic2l0ZURhdGFTdG9yZTsKICAgICB9CiAKICAgICBpZiAoc2Vzc2lvbklEICE9IFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuICZBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS0+d2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgIHJldHVybiBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpy
ZXRyaWV2ZUNhY2hlU3RvcmFnZVBhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3
ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9y
ZS5oIgogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NQcm94eS5oIgogI2lmIEVOQUJMRShMRUdB
Q1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkuaCIKQEAgLTM2LDYgKzM1LDcgQEAKICNpbmNsdWRlICJQcm9jZXNzVGhy
b3R0bGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NTaXRlTmF2aWdhdGlvbkRh
dGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNp
bmNsdWRlIDxtZW1vcnk+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjUwMTUwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE1ICsyNiwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAorI2luY2x1ZGUgIkFQSUhUVFBDb29r
aWVTdG9yZS5oIgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkFQSVdlYnNpdGVEYXRhUmVjb3JkLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFT
dG9yZS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2UuaCIKICNpbmNsdWRlICJNb2NrQXV0aGVudGljYXRvck1hbmFn
ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hv
dWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1
cy5oIgorI2luY2x1ZGUgIldlYktpdDJJbml0aWFsaXplLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NhY2hlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCkBAIC0xNTMsNiArMTU0LDU3IEBAIFdlYnNpdGVEYXRhU3RvcmU6On5XZWJz
aXRlRGF0YVN0b3JlKCkKICAgICB9CiB9CiAKK3N0YXRpYyBSZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4mIGdsb2JhbERlZmF1bHREYXRhU3RvcmUoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4+IGdsb2JhbERlZmF1bHREYXRhU3RvcmU7CisgICAg
cmV0dXJuIGdsb2JhbERlZmF1bHREYXRhU3RvcmUuZ2V0KCk7Cit9CisKK1JlZjxXZWJzaXRlRGF0
YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlKCkKK3sKKyAgICBJbml0
aWFsaXplV2ViS2l0MigpOworCisgICAgYXV0byYgc3RvcmUgPSBnbG9iYWxEZWZhdWx0RGF0YVN0
b3JlKCk7CisgICAgaWYgKCFzdG9yZSkKKyAgICAgICAgc3RvcmUgPSBhZG9wdFJlZihuZXcgV2Vi
c2l0ZURhdGFTdG9yZShkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpLCBQQUw6OlNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSk7CisKKyAgICByZXR1cm4gKnN0b3JlOworfQorCit2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCkK
K3sKKyAgICBnbG9iYWxEZWZhdWx0RGF0YVN0b3JlKCkgPSBudWxscHRyOworfQorCitib29sIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVFeGlzdHMoKQoreworICAgIHJldHVybiAh
IWdsb2JhbERlZmF1bHREYXRhU3RvcmUoKTsKK30KKworUmVmPFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25m
aWd1cmF0aW9uKCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisKKyAgICBjb25maWd1cmF0aW9uLT5zZXRQZXJzaXN0
ZW50KHRydWUpOworCisgICAgY29uZmlndXJhdGlvbi0+c2V0QXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeShkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0
aW9uLT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9y
eSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoZGVmYXVs
dE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRNZWRpYUNh
Y2hlRGlyZWN0b3J5KGRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkpOworCisgICAgY29uZmln
dXJhdGlvbi0+c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoZGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EaXJlY3RvcnkoZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJl
Y3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpOworICAgIGNvbmZpZ3VyYXRpb24tPnNl
dExvY2FsU3RvcmFnZURpcmVjdG9yeShkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpOwor
ICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoZGVmYXVsdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSgpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXREZXZpY2VJZEhhc2hTYWx0c1N0b3Jh
Z2VEaXJlY3RvcnkoZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpKTsK
KworICAgIGNvbmZpZ3VyYXRpb24tPnNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5
KGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpKTsKKworICAgIHJldHVy
biBjb25maWd1cmF0aW9uOworfQorCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Om1heWJlUmVnaXN0
ZXJXaXRoU2Vzc2lvbklETWFwKCkKIHsKICAgICBpZiAobV9zZXNzaW9uSUQgIT0gUEFMOjpTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkgewpAQCAtMTcyNiw3ICsxNzc4LDcgQEAgdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpyZXNldENhY2hlTWF4QWdlQwogYm9vbCBXZWJzaXRlRGF0YVN0b3Jl
Ojppc0Fzc29jaWF0ZWRQcm9jZXNzUG9vbChXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpIGNv
bnN0CiB7CiAgICAgaWYgKGF1dG8qIHByb2Nlc3NQb29sRGF0YVN0b3JlID0gcHJvY2Vzc1Bvb2wu
d2Vic2l0ZURhdGFTdG9yZSgpKQotICAgICAgICByZXR1cm4gJnByb2Nlc3NQb29sRGF0YVN0b3Jl
LT53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gdGhpczsKKyAgICAgICAgcmV0dXJuIHByb2Nlc3NQb29s
RGF0YVN0b3JlID09IHRoaXM7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0yMDU2LDQgKzIx
MDgsMjYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRMb2NhbFN0b3JhZ2VEZQogICAgIEFT
U0VSVCghY29tcGxldGlvbkhhbmRsZXIpOwogfQogCisjaWYgIVBMQVRGT1JNKENPQ09BKQorV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQor
eworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTYzNjkgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTYzNzAKKyAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKK30KKworV1RGOjpTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5
KCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIHJldHVybiBXVEY6OlN0cmluZygp
OworfQorI2VuZGlmCisKKyNpZiAhVVNFKEdMSUIpCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKK3sKKyAgICAv
LyBOb3QgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIFdURjo6U3RyaW5nKCk7Cit9CisjZW5kaWYK
KwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjUwMTUwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC05MiwxMSArOTIsMTkgQEAgZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0U3RhdHVz
Owogc3RydWN0IFBsdWdpbk1vZHVsZUluZm87CiAjZW5kaWYKIAotY2xhc3MgV2Vic2l0ZURhdGFT
dG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMgSWRlbnRp
ZmllZDxXZWJzaXRlRGF0YVN0b3JlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYnNpdGVEYXRh
U3RvcmU+ICB7CitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlIDogcHVibGljIEFQSTo6T2JqZWN0SW1w
bDxBUEk6Ok9iamVjdDo6VHlwZTo6V2Vic2l0ZURhdGFTdG9yZT4sIHB1YmxpYyBJZGVudGlmaWVk
PFdlYnNpdGVEYXRhU3RvcmU+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4gIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGRlZmF1bHRE
YXRhU3RvcmUoKTsKKyAgICBzdGF0aWMgYm9vbCBkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCk7Cisg
ICAgc3RhdGljIHZvaWQgZGVsZXRlRGVmYXVsdERhdGFTdG9yZUZvclRlc3RpbmcoKTsKKyAgICBz
dGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBkZWZhdWx0RGF0YVN0b3Jl
Q29uZmlndXJhdGlvbigpOworICAgIAogICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4g
Y3JlYXRlTm9uUGVyc2lzdGVudCgpOwogICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFTdG9yZT4g
Y3JlYXRlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9u
SUQpOwotICAgIHZpcnR1YWwgfldlYnNpdGVEYXRhU3RvcmUoKTsKKworICAgIFdlYnNpdGVEYXRh
U3RvcmUoUEFMOjpTZXNzaW9uSUQpOworICAgIFdlYnNpdGVEYXRhU3RvcmUoUmVmPFdlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uPiYmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgfldlYnNpdGVE
YXRhU3RvcmUoKTsKIAogICAgIHN0YXRpYyBXZWJzaXRlRGF0YVN0b3JlKiBleGlzdGluZ05vbkRl
ZmF1bHREYXRhU3RvcmVGb3JTZXNzaW9uSUQoUEFMOjpTZXNzaW9uSUQpOwogCkBAIC0yNjEsMTAg
KzI2OSwyMyBAQCBwdWJsaWM6CiAgICAgU09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3ImIHNvQXV0
aG9yaXphdGlvbkNvb3JkaW5hdG9yKCkgeyByZXR1cm4gbV9zb0F1dGhvcml6YXRpb25Db29yZGlu
YXRvci5nZXQoKTsgfQogI2VuZGlmCiAKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJp
bmcgZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmlu
ZyBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOworICAgIHN0YXRpYyBX
VEY6OlN0cmluZyBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CisgICAgc3RhdGlj
IFdURjo6U3RyaW5nIGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOworI2lmIFVTRShH
TElCKQorICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0SFNUU0RpcmVjdG9yeSgpOworI2Vu
ZGlmCisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0
b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5
KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KCk7CisgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0
b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CisgICAgCiBwcml2YXRlOgotICAgIGV4cGxpY2l0
IFdlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQpOwotICAgIGV4cGxpY2l0IFdlYnNpdGVE
YXRhU3RvcmUoUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiYmLCBQQUw6OlNlc3Np
b25JRCk7Ci0KICAgICB2b2lkIGZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFJlZlB0cjxXb3JrUXVl
dWU+JiYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPik+JiYgYXBwbHkp
OwogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTI3NSw2ICsyOTYsMTMgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtU2V0TmV0d29ya1BhcmFtZXRlcnMoV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMmKTsKICNlbmRpZgogCisgICAgV2Vic2l0ZURhdGFTdG9yZSgpOwor
CisgICAgZW51bSBjbGFzcyBTaG91bGRDcmVhdGVEaXJlY3RvcnkgeyBObywgWWVzIH07CisgICAg
c3RhdGljIFdURjo6U3RyaW5nIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Y29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUsIFNob3VsZENyZWF0ZURpcmVjdG9yeSA9
IFNob3VsZENyZWF0ZURpcmVjdG9yeTo6WWVzKTsKKyAgICBzdGF0aWMgV1RGOjpTdHJpbmcgY2Fj
aGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRp
cmVjdG9yeU5hbWUpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyB3ZWJzaXRlRGF0YURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFt
ZSk7CisKICAgICBIYXNoU2V0PFJlZlB0cjxXZWJQcm9jZXNzUG9vbD4+IHByb2Nlc3NQb29scyhz
aXplX3QgY291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBib29sIGVu
c3VyZUFQb29sRXhpc3RzID0gdHJ1ZSkgY29uc3Q7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJ
KHJldmlzaW9uIDI1MDE1MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmgiCiAKLSNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgiCisj
aW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2aXNpb24gMjUwMTUwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJX
ZWJzaXRlRGF0YVN0b3JlLmgiCiAKICNpbXBvcnQgIkNvb2tpZVN0b3JhZ2VVdGlsc0NGLmgiCisj
aW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJTdG9yYWdlTWFuYWdlci5oIgog
I2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW1wb3J0ICJXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgpAQCAtMjI5LDQgKzIzMCwxNjEgQEAgdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpwbGF0Zm9ybVJlbW92ZVJlYwogICAgIFdlYkNvcmU6OnJlbW92ZVJlY2Vu
dGx5TW9kaWZpZWRSZWNlbnRTZWFyY2hlcyhvbGRlc3RUaW1lVG9SZW1vdmUpOwogfQogCitOU1N0
cmluZyAqV2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViRGF0YWJhc2VEaXJl
Y3RvcnkiOworTlNTdHJpbmcgKldlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2Vi
S2l0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoUHJlZmVyZW5jZUtleSI7CitOU1N0cmluZyAqV2Vi
S2l0TWVkaWFDYWNoZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRNZWRpYUNhY2hlRGly
ZWN0b3J5IjsKK05TU3RyaW5nICpXZWJLaXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5RGVmYXVs
dHNLZXkgPSBAIldlYktpdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkiOworCitXVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCit7
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAvLyBUaGlzIHF1aXJrIHVzZWQgdG8gbWFr
ZSB0aGVzZSBhcHBzIHNoYXJlIGFwcGxpY2F0aW9uIGNhY2hlIHN0b3JhZ2UsIGJ1dCBkb2Vzbid0
IGFjY29tcGxpc2ggdGhhdCBhbnkgbW9yZS4KKyAgICAvLyBQcmVzZXJ2aW5nIGl0IGF2b2lkcyB0
aGUgbmVlZCB0byBtaWdyYXRlIGRhdGEgd2hlbiB1cGdyYWRpbmcuCisgICAgLy8gRklYTUU6IElk
ZWFsbHkgd2Ugc2hvdWxkIGp1c3QgaGF2ZSBTYWZhcmksIFdlYkFwcCwgYW5kIHdlYmJvb2ttYXJr
c2QgY3JlYXRlIGEgZGF0YSBzdG9yZSB3aXRoCisgICAgLy8gdGhpcyBhcHBsaWNhdGlvbiBjYWNo
ZSBwYXRoLCBidXQgdGhhdCdzIG5vdCBzdXBwb3J0ZWQgYXMgb2YgcmlnaHQgbm93LgorICAgIGlm
IChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSB8fCBXZWJDb3JlOjpJ
T1NBcHBsaWNhdGlvbjo6aXNXZWJBcHAoKSB8fCBXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNX
ZWJCb29rbWFya3NEKCkpIHsKKyAgICAgICAgTlNTdHJpbmcgKmNhY2hlUGF0aCA9IFtOU0hvbWVE
aXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJMaWJyYXJ5L0NhY2hl
cy9jb20uYXBwbGUuV2ViQXBwQ2FjaGUiXTsKKworICAgICAgICByZXR1cm4gV2ViS2l0OjpzdHJp
bmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNhY2hlUGF0aC5zdHJpbmdCeVN0YW5kYXJkaXpp
bmdQYXRoKTsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbigiT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKK30KKwor
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9y
eSgpCit7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KCJDYWNoZVN0b3JhZ2UiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJOZXR3b3JrQ2FjaGUiKTsKK30KKworV1RGOjpTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQoreworICAg
IHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUNhY2hl
Iik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJJbmRleGVkREIiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnko
KQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigi
U2VydmljZVdvcmtlcnMiKTsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJMb2NhbFN0b3JhZ2UiKTsKK30KKworV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbigiTWVkaWFLZXlzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVE
YXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJXZWJTUUwiKTsKK30KKworV1RG
OjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbigiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOworfQorCitXVEY6OlN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnkoKQoreworICAgIHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KCJKYXZhU2NyaXB0Q29yZURlYnVnIiwgU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpObyk7Cit9CisK
K1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeU5hbWUsIFNob3VsZENyZWF0
ZURpcmVjdG9yeSBzaG91bGRDcmVhdGVEaXJlY3RvcnkpCit7CisgICAgc3RhdGljIGRpc3BhdGNo
X29uY2VfdCBvbmNlVG9rZW47CisgICAgc3RhdGljIE5TVVJMICp0ZW1wVVJMOworICAgIAorICAg
IGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgTlNVUkwgKnVybCA9IFtOU1VS
TCBmaWxlVVJMV2l0aFBhdGg6TlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNd
OworICAgICAgICBpZiAoIXVybCkKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5l
cigpKSB7CisgICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRs
ZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOworICAgICAgICAgICAgaWYgKCFidW5kbGVJ
ZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNz
SW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7CisgICAgICAgICAgICB1cmwgPSBbdXJsIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllF
U107CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRlbXBVUkwgPSBbW3VybCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsK
KyAgICB9KTsKKyAgICAKKyAgICBOU1VSTCAqdXJsID0gW3RlbXBVUkwgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKKworICAgIGlmIChz
aG91bGRDcmVhdGVEaXJlY3RvcnkgPT0gU2hvdWxkQ3JlYXRlRGlyZWN0b3J5OjpZZXMKKyAgICAg
ICAgJiYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0
VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVy
cm9yOm51bGxwdHJdKSkKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVj
dG9yeSAlQCIsIHVybCk7CisgICAgCisgICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKK30KKworV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgV1RGOjpTdHJp
bmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47CisgICAgc3RhdGljIE5TVVJMICpjYWNoZVVSTDsKKworICAgIGRpc3BhdGNoX29uY2UoJm9u
Y2VUb2tlbiwgXnsKKyAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TQ2FjaGVzRGlyZWN0b3J5IGluRG9tYWluOk5TVXNl
ckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVs
bHB0cl07CisgICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKworICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigp
KSB7CisgICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBt
YWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOworICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVu
dGlmaWVyKQorICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5m
byBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7CisgICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107
CisgICAgICAgIH0KKworICAgICAgICBjYWNoZVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOworICAgIH0pOwor
CisgICAgTlNVUkwgKnVybCA9IFtjYWNoZVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0
ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKKyAgICAgICAg
TE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CisKKyAgICBy
ZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOworfQor
CitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sK
KyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBzdGF0aWMgTlNVUkwg
KndlYnNpdGVEYXRhVVJMOworCisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAg
ICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JE
aXJlY3Rvcnk6TlNMaWJyYXJ5RGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBw
cm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07CisgICAgICAg
IGlmICghdXJsKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKwor
ICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIg
aXNEaXJlY3Rvcnk6WUVTXTsKKworICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRh
aW5lcigpKSB7CisgICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1
bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOworICAgICAgICAgICAgaWYgKCFidW5k
bGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9j
ZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7CisgICAgICAgICAgICB1cmwgPSBbdXJs
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5
OllFU107CisgICAgICAgIH0KKworICAgICAgICB3ZWJzaXRlRGF0YVVSTCA9IFtbdXJsIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0RpcmVjdG9yeTpZRVNdIHJl
dGFpbl07CisgICAgfSk7CisKKyAgICBOU1VSTCAqdXJsID0gW3dlYnNpdGVEYXRhVVJMIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107Cisg
ICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0
VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVy
cm9yOm51bGxwdHJdKQorICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0
b3J5ICVAIiwgdXJsKTsKKworICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lz
dGVtUmVwcmVzZW50YXRpb247Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS93aW4vV2Vic2l0ZURhdGFTdG9yZVdp
bi5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL3dpbi9XZWJzaXRlRGF0YVN0b3JlV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogI2luY2x1ZGUgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNDUsNCArNDYsNTkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpwbGF0Zm9ybVJlbW92ZVJlYwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK1N0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCit7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lz
dGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkFwcGxpY2F0aW9uQ2Fj
aGUiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VE
aXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJD
YWNoZVN0b3JhZ2UiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3
b3JrQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJOZXR3b3JrQ2FjaGUiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQiIpOworfQorCitTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKQorewor
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJTZXJ2aWNlV29ya2VycyIp
OworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkxvY2Fs
U3RvcmFnZSIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJNZWRpYUtleVN0b3JhZ2UiKTsKK30KKworU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYlNRTCIpOworfQorCitTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Iik7Cit9CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7Cit9CisKK1N0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGlyZWN0b3J5TmFtZSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9j
ZXNzUHJveHlHTGliLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
bGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCShyZXZpc2lvbiAyNTAxMjIpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw4ICs0Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExh
dW5jaE8KICAgICAgICAgaWYgKCFkYXRhU3RvcmUpIHsKICAgICAgICAgICAgIC8vIFByZXdhcm1l
ZCBwcm9jZXNzZXMgZG9uJ3QgaGF2ZSBhIFdlYnNpdGVEYXRhU3RvcmUgeWV0LCBzbyB1c2UgdGhl
IHByaW1hcnkgV2Vic2l0ZURhdGFTdG9yZSBmcm9tIHRoZSBXZWJQcm9jZXNzUG9vbC4KICAgICAg
ICAgICAgIC8vIFRoZSBwcm9jZXNzIHdvbid0IGJlIHVzZWQgaWYgY3VycmVudCBXZWJzaXRlRGF0
YVN0b3JlIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBXZWJQcm9jZXNzUG9vbCBwcmltYXJ5IG9uZS4K
LSAgICAgICAgICAgIGlmIChhdXRvKiBhcGlEYXRhU3RvcmUgPSBtX3Byb2Nlc3NQb29sLT53ZWJz
aXRlRGF0YVN0b3JlKCkpCi0gICAgICAgICAgICAgICAgZGF0YVN0b3JlID0gJmFwaURhdGFTdG9y
ZS0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICAgICAgZGF0YVN0b3JlID0gbV9wcm9jZXNz
UG9vbC0+d2Vic2l0ZURhdGFTdG9yZSgpOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKGRh
dGFTdG9yZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRh
U3RvcmVHTGliLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGli
L1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkocmV2aXNpb24gMjUwMTIyKQkoZnJvbSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6MjUw
MTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xp
Yi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorCisjaW5jbHVkZSA8d3RmL0ZpbGVT
eXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisKKyNpZiBQTEFURk9S
TShHVEspCisjZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3ZWJraXRndGsiCisjZWxpZiBQTEFURk9S
TShXUEUpCisjZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCisjZW5kaWYKKworbmFtZXNwYWNl
IEFQSSB7CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgImFwcGxpY2F0
aW9ucyIpOworfQorCisvLyBGSVhNRTogVGhlIG90aGVyIGRpcmVjdG9yaWVzIGluIHRoaXMgZmls
ZSBhcmUgc2hhcmVkIGJldHdlZW4gYWxsIGFwcGxpY2F0aW9ucyB1c2luZyBXZWJLaXRHVEsuCisv
LyBXaHkgaXMgb25seSB0aGlzIGRpcmVjdG9yeSBuYW1lc3BhY2VkIHRvIGEgcGFydGljdWxhciBh
cHBsaWNhdGlvbj8KK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkp
LCAiV2ViS2l0Q2FjaGUiKSk7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dl
dF9wcmduYW1lKCkpLCAiQ2FjaGVTdG9yYWdlIikpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJl
dHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJ
UkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAiZGF0YWJhc2VzIiBHX0RJUl9TRVBBUkFUT1JfUyAi
aW5kZXhlZGRiIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0
ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19E
SVJfU0VQQVJBVE9SX1MgInNlcnZpY2V3b3JrZXJzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQoreworICAgIHJldHVy
biB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVD
VE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAibG9jYWxzdG9yYWdlIik7Cit9CisKK1dURjo6U3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKK3sK
KyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
QkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MgIm1lZGlha2V5cyIpOworfQorCitTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVj
dG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJkZXZpY2VpZGhhc2hz
YWx0cyIpOworfQorCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihCQVNFX0RJUkVDVE9SWSBHX0RJUl9TRVBBUkFUT1JfUyAi
ZGF0YWJhc2VzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRI
U1RTRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQQVJBVE9SX1MpOworfQor
CitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKEJBU0VfRElSRUNUT1JZIEdfRElSX1NFUEFSQVRPUl9TICJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzIik7Cit9CisKK1dURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5n
JiBkaXJlY3RvcnlOYW1lKQoreworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7Cit9CisKK1dURjo6U3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBkaXJl
Y3RvcnlOYW1lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAkocmV2
aXNpb24gMjUwMTIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0
YVN0b3JlR0xpYi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgorI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtMzUsNyArMzUsNyBAQAogI2Rl
ZmluZSBCQVNFX0RJUkVDVE9SWSAid3BlIgogI2VuZGlmCiAKLW5hbWVzcGFjZSBBUEkgeworbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRB
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUwMTQ4KQorKysgU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTc4LDcgKzE3OCw2IEBACiAJCTFBMzAwNjZFMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNw
b25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTMwMDY2QzExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5o
ICovOyB9OwogCQkxQTMzNERFRDE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKIAkJMUEzMzRERUUxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VB
cmVhTWFwTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBMzM0REVDMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2Vz
LmggKi87IH07Ci0JCTFBMzYzNUFBMUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0
b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTM2
MzVBODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oICovOyB9OwogCQkx
QTNDODg4MDE4QTVBQkFFMDBDNEM5NjIgLyogV0tQcmVmZXJlbmNlc0ludGVybmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNDODg3RjE4QTVBQkFF
MDBDNEM5NjIgLyogV0tQcmVmZXJlbmNlc0ludGVybmFsLmggKi87IH07CiAJCTFBM0NDMTY3MTg5
MDZBQ0YwMDFFNkVEOCAvKiBXS1dlYlZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0NDMTY1MTg5MDZBQ0YwMDFFNkVEOCAvKiBXS1dlYlZpZXcu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTFBM0ND
MTY5MTg5MDdFQjAwMDFFNkVEOCAvKiBXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBM0NDMTY4MTg5MDdFQjAwMDFF
NkVEOCAvKiBXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCAqLzsgfTsKQEAgLTIxMjMsOSArMjEyMiw2
IEBACiAJCTFBMzM0REVBMTZERThCNjgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcC5tZXNzYWdl
cy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBTdG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0
b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdDIvU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQTMzNERFQzE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFn
ZUFyZWFNYXBNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdG9y
YWdlQXJlYU1hcE1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1N0b3Jh
Z2VBcmVhTWFwTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
LQkJMUEzNjM1QTcxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJV2Vic2l0ZURhdGFTdG9yZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBMzYzNUE4MUEzMTQ0QTMwMEVENjE5
NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFQSVdlYnNpdGVEYXRhU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MUEzNjM1QUIxQTMxNDVFNTAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFQSVdlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEzQTczQ0IxQTQ4QzZE
NDAwNzIzMUIzIC8qIEFQSVBhZ2VHcm91cEhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBUElQYWdlR3JvdXBIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTNBNzNDQzFBNDhDNkQ0MDA3MjMxQjMgLyogQVBJUGFnZUdyb3VwSGFu
ZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVBhZ2VHcm91cEhhbmRs
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTNDODg3RjE4QTVBQkFFMDBDNEM5
NjIgLyogV0tQcmVmZXJlbmNlc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLUHJlZmVyZW5jZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNjM3MSw3ICs2MzY3LDYgQEAKIAkJCQk3Q0VGQTk2MDFBQzA5OTkzMDBCOTEwRkQgLyog
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbSAqLywKIAkJCQk1Q0E0NkU3QTIxRjFBMjM5
MDBDRTg2QjQgLyogQVBJSFRUUENvb2tpZVN0b3JlQ29jb2EubW0gKi8sCiAJCQkJRkVEM0MxREEx
QjQ0N0FFODAwRTBFQjdGIC8qIEFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tICovLAot
CQkJCTFBMzYzNUFCMUEzMTQ1RTUwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0gKi8sCiAJCQkJMUFGREU2NDMxOTUxMEI1NTAwQzQ4RkZBIC8qIExlZ2FjeUJ1bmRsZUZvckNs
YXNzLm1tICovLAogCQkJCTFDMjA5MzVFMjIzMThDQjAwMDAyNkEzOSAvKiBOU0F0dHJpYnV0ZWRT
dHJpbmcuaCAqLywKIAkJCQkxQzIwOTM1RjIyMzE4Q0IwMDAwMjZBMzkgLyogTlNBdHRyaWJ1dGVk
U3RyaW5nLm1tICovLApAQCAtNzk4Myw4ICs3OTc4LDYgQEAKIAkJCQkyRDg3ODYyMjFCREI1OEZG
MDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuaCAqLywKIAkJCQkxQUUyODY4MTFDN0Y5Mzg2
MDA2OUFDNEYgLyogQVBJV2Vic2l0ZURhdGFSZWNvcmQuY3BwICovLAogCQkJCTFBRTI4NjgyMUM3
RjkzODYwMDY5QUM0RiAvKiBBUElXZWJzaXRlRGF0YVJlY29yZC5oICovLAotCQkJCTFBMzYzNUE3
MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmNwcCAqLywKLQkJCQkxQTM2
MzVBODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oICovLAogCQkJCTVD
OEREMzdEMUZFNDUwMTEwMEYyQTU1NiAvKiBBUElXZWJzaXRlUG9saWNpZXMuY3BwICovLAogCQkJ
CTVDOEREMzdDMUZFNDUwMTEwMEYyQTU1NiAvKiBBUElXZWJzaXRlUG9saWNpZXMuaCAqLywKIAkJ
CQkxQTY1NjNFMjFCN0E4QzUwMDA5Q0Y3ODcgLyogQVBJV2luZG93RmVhdHVyZXMuY3BwICovLApA
QCAtOTM4OCw3ICs5MzgxLDYgQEAKIAkJCQlDNUUxQUZFRDE2QjIxMDE3MDA2Q0MxRjIgLyogQVBJ
V2ViQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzVFMUFGRUYxNkIyMTAyOTAwNkNDMUYy
IC8qIEFQSVdlYkFyY2hpdmVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMjg2ODQx
QzdGOTM4NjAwNjlBQzRGIC8qIEFQSVdlYnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAqLywK
LQkJCQkxQTM2MzVBQTFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE2NTYzRTUxQjdBOEM1MDAwOUNGNzg3IC8qIEFQSVdpbmRvd0Zl
YXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDhEMkE4NTIxNTgzQTdFMDBDNjc1MkIgLyog
QXBwS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQ0QzE5MzFCMzlGMzMyMDBBQkMyOEUg
LyogQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2Vi
TWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAJKHJldmlzaW9uIDI1MDEyMikKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiB2b2lkIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OnNldFdlYnNpdGVEYXRhU3RvcmUo
Y29uc3QgV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAg
QVNTRVJUKCFwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpOwog
ICAgIG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5tZWRpYUtleVN0b3Jh
Z2VEaXJlY3Rvcnk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>