<?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>101147</bug_id>
          
          <creation_ts>2012-11-03 02:52:38 -0700</creation_ts>
          <short_desc>Get rid of method_check</short_desc>
          <delta_ts>2012-11-05 23:17:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>101146</dependson>
    
    <dependson>101276</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>757926</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-03 02:52:38 -0700</bug_when>
    <thetext>After https://bugs.webkit.org/show_bug.cgi?id=101146 is done, there should not be any reason left for using method_check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757929</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-03 03:08:29 -0700</bug_when>
    <thetext>This depends on https://bugs.webkit.org/show_bug.cgi?id=101146 because the one thing that method_check currently gives, that get_by_id proto &amp; chain caching did not give us, is detection of a prototype having things added to it without otherwise changing the prototype chain.  method_check will silently repatch itself in those situations without adding to the chain list.

However, once https://bugs.webkit.org/show_bug.cgi?id=101146 lands, proto &amp; chain caching will have this behavior as well, since the cache lists will be cleared when a prototype has things added to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758285</commentid>
    <comment_count>2</comment_count>
      <attachid>172278</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-05 00:09:39 -0800</bug_when>
    <thetext>Created attachment 172278
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758288</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-05 00:14:49 -0800</bug_when>
    <thetext>Attachment 172278 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/jit/JIT.h:524:  The parameter name &quot;ident&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:524:  The parameter name &quot;iter&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:600:  The parameter name &quot;ident&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/JIT.h:600:  The parameter name &quot;iter&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758289</commentid>
    <comment_count>4</comment_count>
      <attachid>172278</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-11-05 00:18:13 -0800</bug_when>
    <thetext>Comment on attachment 172278
the patch

Attachment 172278 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/14712936</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758290</commentid>
    <comment_count>5</comment_count>
      <attachid>172278</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-05 00:18:41 -0800</bug_when>
    <thetext>Comment on attachment 172278
the patch

Attachment 172278 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14717736</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758291</commentid>
    <comment_count>6</comment_count>
      <attachid>172278</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-05 00:19:23 -0800</bug_when>
    <thetext>Comment on attachment 172278
the patch

Attachment 172278 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14690200</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758293</commentid>
    <comment_count>7</comment_count>
      <attachid>172278</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-05 00:20:45 -0800</bug_when>
    <thetext>Comment on attachment 172278
the patch

Attachment 172278 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14714723</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758296</commentid>
    <comment_count>8</comment_count>
      <attachid>172281</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-05 00:31:15 -0800</bug_when>
    <thetext>Created attachment 172281
the patch

Fix style and non-Mac builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758391</commentid>
    <comment_count>9</comment_count>
      <attachid>172281</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-05 03:30:20 -0800</bug_when>
    <thetext>Comment on attachment 172281
the patch

Attachment 172281 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14732530

New failing tests:
fast/js/toString-and-valueOf-override.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758590</commentid>
    <comment_count>10</comment_count>
      <attachid>172281</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-11-05 09:00:15 -0800</bug_when>
    <thetext>Comment on attachment 172281
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759101</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-05 17:54:30 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 172281 [details])
&gt; Attachment 172281 [details] did not pass mac-ews (mac):
&gt; Output: http://queues.webkit.org/results/14732530
&gt; 
&gt; New failing tests:
&gt; fast/js/toString-and-valueOf-override.html

Turns out this was a preexisting bug in get_by_id.  Fixed by https://bugs.webkit.org/show_bug.cgi?id=101276.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759292</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-05 23:17:06 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/133564</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172278</attachid>
            <date>2012-11-05 00:09:39 -0800</date>
            <delta_ts>2012-11-05 00:31:15 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>killmethodcheck.patch</filename>
            <type>text/plain</type>
            <size>72504</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMzNDM5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBA
CisyMDEyLTExLTA1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
R2V0IHJpZCBvZiBtZXRob2RfY2hlY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMTE0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIG9wX21ldGhvZF9jaGVjayBubyBsb25nZXIgYnV5cyB1cyBhbnl0aGlu
Zywgc2luY2UgZ2V0X2J5X2lkIHByb3RvIGNhY2hpbmcKKyAgICAgICAgZ2l2ZXMganVzdCBhcyBt
dWNoIHByb2ZpbGluZyBpbmZvcm1hdGlvbiBhbmQgdGhlIERGRyBpbmxpbmVzIG1vbm9tb3JwaGlj
CisgICAgICAgIHByb3RvIGFjY2Vzc2VzIGFueXdheS4KKyAgICAgICAgCisgICAgICAgIFRoaXMg
YWxzbyBoYXMgdGhlIHBvdGVudGlhbCBmb3IgYSBzcGVlZC11cCBzaW5jZSBpdCBtYWtlcyBwYXJz
aW5nIG9mCisgICAgICAgIHByb2ZpbGluZyBkYXRhIGVhc2llci4gTm8gbG9uZ2VyIGRvIHdlIGhh
dmUgdG8gZGVhbCB3aXRoIHRoZSBjb25mdXNpb24gb2YKKyAgICAgICAgdGhlIGdldF9ieV9pZCBw
b3J0aW9uIG9mIGEgbWV0aG9kX2NoZWNrIGFwcGVhcmluZyBtb25vbW9ycGhpYyBldmVuIHRob3Vn
aAorICAgICAgICB3ZSdyZSByZWFsbHkgZGVhbGluZyB3aXRoIGEgYmltb3JwaGljIGFjY2VzcyAo
bWV0aG9kX2NoZWNrIHNwZWNpYWxpemVzIGZvcgorICAgICAgICBvbmUgY2FzZSBhbmQgZ2V0X2J5
X2lkIGZvciBhbm90aGVyKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVV
bmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNocmlua1RvRml0KToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtDYWxscyk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0Q2FsbExpbmtJbmZv
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjYWxsTGlua0luZm8pOgorICAgICAgICAoQ29k
ZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAg
KEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNv
ZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9N
ZXRob2RDYWxsTGlua0luZm8uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RD
YWxsTGlua1N0YXR1cy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kQ2Fs
bExpbmtTdGF0dXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoQnl0ZWNvZGVH
ZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6Y29weVRvU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgIChKU0M6
OlByb3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6c2xvd0Nhc2VJbmZvKToKKyAgICAgICAgKFBy
b3BlcnR5U3R1YkNvbXBpbGF0aW9uSW5mbyk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSklU
KToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmNvbXBpbGVHZXRCeUlkU2xvd0Nhc2UpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6Y29t
cGlsZUdldEJ5SWRTbG93Q2FzZSk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmg6CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc206CisKIDIwMTItMTEtMDMgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBCYXNlbGluZSBKSVQgc2hvdWxkIHVzZSBzdHJ1Y3R1cmUg
d2F0Y2hwb2ludHMgd2hlbmV2ZXIgcG9zc2libGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxMzM0MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjks
OCArNjksNiBAQAogCQkwRjBCODNBRDE0QkNGNjA0MDA4ODVCNEYgLyogTGluZUluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0FDMTRCQ0Y2
MDIwMDg4NUI0RiAvKiBMaW5lSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAvKiBDYWxsTGlua0lu
Zm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYw
QjgzQUUxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgKi87IH07CiAJCTBGMEI4
M0IxMTRCQ0Y3MTgwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBD
YWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQkwRjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0Iy
MTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3BwICovOyB9OwotCQkwRjBC
ODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCMzE0QkNGODVFMDA4ODVC
NEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1
cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9m
ZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5k
ZXhNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjBDRDRDMDE1RjFBNjA0MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQ0Q0QzQxNUY2QjZC
QjAwMzJGMUMwIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQ0Q0QzMxNUY2QjZCNTAwMzJGMUMwIC8qIFNw
YXJzZUFycmF5VmFsdWVNYXAuY3BwICovOyB9OwpAQCAtMTc4LDggKzE3Niw2IEBACiAJCTBGOTMz
MjlFMTRDQTdEQzUwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8q
IENhbGxMaW5rU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY5MzMyOUYxNENBN0RDQTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOTUx
NENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovOyB9OwogCQkwRjkzMzJBMDE0
Q0E3RENEMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOTYxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5
SWRTdGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQkwRjkzMzJBMTE0Q0E3REQxMDA4NUYzQzYgLyogTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOTcx
NENBN0RDMTAwODVGM0M2IC8qIE1ldGhvZENhbGxMaW5rU3RhdHVzLmNwcCAqLzsgfTsKLQkJMEY5
MzMyQTIxNENBN0REMzAwODVGM0M2IC8qIE1ldGhvZENhbGxMaW5rU3RhdHVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMzI5ODE0Q0E3REMxMDA4
NUYzQzYgLyogTWV0aG9kQ2FsbExpbmtTdGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjkzMzJBMzE0Q0E3REQ3MDA4NUYzQzYgLyogUHV0
QnlJZFN0YXR1cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjkzMzI5OTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5jcHAgKi87IH07
CiAJCTBGOTMzMkE0MTRDQTdERDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMzI5QTE0Q0E3REMxMDA4
NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGOTMzMkE1MTRDQTdEREQwMDg1RjNDNiAvKiBTdHJ1Y3R1cmVT
ZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMz
MjlCMTRDQTdEQzEwMDg1RjNDNiAvKiBTdHJ1Y3R1cmVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODUzLDggKzg0OSw2IEBACiAJCTBGMEI4
M0FDMTRCQ0Y2MDIwMDg4NUI0RiAvKiBMaW5lSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMaW5lSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBC
ODNBRTE0QkNGNzE0MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxMaW5rSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbExpbmtJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGMEI4M0IyMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RD
YWxsTGlua0luZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWV0
aG9kQ2FsbExpbmtJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYwQjgz
QjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZXRob2RDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZz
ZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
bGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMENENEMwMTVGMUE2MDQwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0RGlyZWN0SW5kZXhNb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMENENEMzMTVGNkI2QjUwMDMyRjFDMCAvKiBT
cGFyc2VBcnJheVZhbHVlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNwYXJzZUFycmF5VmFsdWVNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtOTYzLDggKzk1Nyw2IEBACiAJCTBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlu
a1N0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsTGlua1N0YXR1
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkzMzI5NTE0Q0E3REMxMDA4NUYz
QzYgLyogR2V0QnlJZFN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHZXRCeUlkU3RhdHVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5
MzMyOTYxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2V0QnlJZFN0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwRjkzMzI5NzE0Q0E3REMxMDA4NUYzQzYgLyogTWV0aG9kQ2FsbExpbmtTdGF0dXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWV0aG9kQ2FsbExpbmtT
dGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjkzMzI5ODE0Q0E3REMx
MDA4NUYzQzYgLyogTWV0aG9kQ2FsbExpbmtTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWV0aG9kQ2FsbExpbmtTdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY5MzMyOTkxNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHV0QnlJZFN0YXR1cy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMzMjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQ
dXRCeUlkU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dEJ5SWRT
dGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzMyOUIxNENBN0RDMTAw
ODVGM0M2IC8qIFN0cnVjdHVyZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdHJ1Y3R1cmVTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MTgsMTQg
KzI1MTAsNiBAQAogCQkJCTBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8u
aCAqLywKIAkJCQkwRjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3Bw
ICovLAogCQkJCTBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oICov
LAotCQkJCTBGOTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLywK
LQkJCQkwRjkzMzI5NjE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5oICovLAotCQkJ
CTBGOTMzMjk3MTRDQTdEQzEwMDg1RjNDNiAvKiBNZXRob2RDYWxsTGlua1N0YXR1cy5jcHAgKi8s
Ci0JCQkJMEY5MzMyOTgxNENBN0RDMTAwODVGM0M2IC8qIE1ldGhvZENhbGxMaW5rU3RhdHVzLmgg
Ki8sCi0JCQkJMEY5MzMyOTkxNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuY3BwICov
LAotCQkJCTBGOTMzMjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8sCi0J
CQkJQTdBRkMxNzcxNUY3RUZFMzAwNDhGNTdCIC8qIFJlc29sdmVPcGVyYXRpb24uaCAqLywKLQkJ
CQkwRjkzMzI5QjE0Q0E3REMxMDA4NUYzQzYgLyogU3RydWN0dXJlU2V0LmggKi8sCiAJCQkJMEYw
QjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0
LmggKi8sCiAJCQkJOTY5QTA3OTAwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5jcHAgKi8s
CiAJCQkJOTY5QTA3OTEwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oICovLApAQCAtMjU0
OSwxMCArMjUzMyw2IEBACiAJCQkJMEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmggKi8sCiAJCQkJMEYwQjgzQUMxNEJDRjYwMjAwODg1QjRGIC8qIExp
bmVJbmZvLmggKi8sCiAJCQkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExp
bmtJbmZvLmggKi8sCi0JCQkJMEYwQjgzQjIxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxM
aW5rSW5mby5jcHAgKi8sCi0JCQkJMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENh
bGxMaW5rSW5mby5oICovLAotCQkJCTBGOTMzMjk3MTRDQTdEQzEwMDg1RjNDNiAvKiBNZXRob2RD
YWxsTGlua1N0YXR1cy5jcHAgKi8sCi0JCQkJMEY5MzMyOTgxNENBN0RDMTAwODVGM0M2IC8qIE1l
dGhvZENhbGxMaW5rU3RhdHVzLmggKi8sCiAJCQkJMEZCNTQ2N0MxNEY1Q0ZEMzAwMkMyOTg5IC8q
IE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwICovLAogCQkJCTBGQjU0NjdBMTRGNUM3
RDQwMDJDMjk4OSAvKiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmggKi8sCiAJCQkJOTY5
QTA3OTQwRUQxRDNBRTAwRjFGNjgxIC8qIE9wY29kZS5jcHAgKi8sCkBAIC0yNTY1LDYgKzI1NDUs
NyBAQAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCiAJCQkJ
MEZGNDI3NkUxNTkyNzVEMjAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwICovLAog
CQkJCTBGRjQyNzZGMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmggKi8s
CisJCQkJQTdBRkMxNzcxNUY3RUZFMzAwNDhGNTdCIC8qIFJlc29sdmVPcGVyYXRpb24uaCAqLywK
IAkJCQkxNDI5RDg4MzBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmNwcCAqLywKIAkJ
CQkxNDI5RDg4NDBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmggKi8sCiAJCQkJMEY1
NTQxQUYxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmNwcCAqLywKQEAgLTI1NzIs
NiArMjU1Myw3IEBACiAJCQkJMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRU
eXBlLmNwcCAqLywKIAkJCQkwRkQ4MkU0RjE0MURBRUExMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5
cGUuaCAqLywKIAkJCQkwRjkzMzI5QjE0Q0E3REMxMDA4NUYzQzYgLyogU3RydWN0dXJlU2V0Lmgg
Ki8sCisJCQkJMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwICov
LAogCQkJCTBGNzY2RDM2MTVBRTRBMUEwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdX
YXRjaHBvaW50LmNwcCAqLywKIAkJCQkwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0UgLyogU3RydWN0
dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovLAogCQkJCUJDQ0YwRDBCMEVGMEI4QTUwMDQx
M0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5jcHAgKi8sCkBAIC0yNTgxLDYgKzI1NjMsMTAgQEAK
IAkJCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi8sCiAJ
CQkJMEY5MTlEMjIxNTg1M0NERTAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICovLAogCQkJCTBG
OTE5RDIzMTU4NTNDREUwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggKi8sCisJCQkJMEY5MzMyOTYx
NENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuaCAqLywKKwkJCQkwRjkzMzI5OTE0Q0E3
REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5jcHAgKi8sCisJCQkJMEY5MzMyOUExNENBN0RD
MTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywKKwkJCQkwRjkzMzI5QjE0Q0E3REMxMDA4
NUYzQzYgLyogU3RydWN0dXJlU2V0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGJ5dGVjb2RlOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI4OTksNyArMjg4NSw2IEBACiAJCQkJMEYw
QjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMEI4M0FEMTRCQ0Y2MDQwMDg4NUI0RiAvKiBMaW5lSW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYwQjgzQjExNEJDRjcxODAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxM
aW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8q
IENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjkxMyw3ICsyODk4LDYgQEAKIAkJCQkwRjdCMjk0RDE0QzNDRDRDMDA3QzNE
QjEgLyogREZHQ29tbW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzI5RTE0Q0E3REM1MDA4
NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkEwMTRD
QTdEQ0QwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjkz
MzJBMjE0Q0E3REQzMDA4NUYzQzYgLyogTWV0aG9kQ2FsbExpbmtTdGF0dXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOTMzMkE0MTRDQTdERDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNTE0Q0E3REREMDA4NUYzQzYgLyogU3RydWN0dXJlU2V0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJh
Y3RQQy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTA3LDEwICszNDkxLDggQEAKIAkJCQkwRjBCODM5
QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYwQjgzQjAxNEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQkwRjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9kQ2Fs
bExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOTMzMjlEMTRDQTdEQzMwMDg1RjND
NiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkzMzI5RjE0Q0E3
RENBMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjkz
MzJBMTE0Q0E3REQxMDA4NUYzQzYgLyogTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY5MzMyQTMxNENBN0RENzAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NUYwRjQxNEQxMDYzOTAwQUM3NjQ5IC8qIEFic3RyYWN0
UEMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZCNTgyNjcxNEQyNzk2QzAwQTlDMzA2IC8qIENv
ZGVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEzMzQzMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw3ICs0Myw2IEBACiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1ZhbHVl
LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgotI2luY2x1ZGUgIk1ldGhvZENh
bGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNs
b3RWaXNpdG9ySW5saW5lTWV0aG9kcy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0yODMsOSAr
MjgyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKAogewogICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBsb2Nh
dGlvbjsKIAotICAgIGlmIChleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVj
dGlvblswXS51Lm9wY29kZSkgPT0gb3BfbWV0aG9kX2NoZWNrKQotICAgICAgICBpbnN0cnVjdGlv
bisrOwotICAgIAogICAgIElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihpbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQpOwogICAgIAogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7IC8vIHRlbGwg
dGhlIGNvbXBpbGVyIHRvIHNodXQgdXAgaW4gY2VydGFpbiBwbGF0Zm9ybSBjb25maWd1cmF0aW9u
cy4KQEAgLTEwMTcsNDIgKzEwMTMsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUq
IGV4ZWMsIGNvCiAgICAgICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2Nh
dGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX21l
dGhvZF9jaGVjazogewotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gbWV0aG9kX2NoZWNrIiwg
bG9jYXRpb24pOwotI2lmIEVOQUJMRShKSVQpCi0gICAgICAgICAgICBpZiAobnVtYmVyT2ZNZXRo
b2RDYWxsTGlua0luZm9zKCkpIHsKLSAgICAgICAgICAgICAgICBNZXRob2RDYWxsTGlua0luZm8m
IG1ldGhvZENhbGwgPSBnZXRNZXRob2RDYWxsTGlua0luZm8obG9jYXRpb24pOwotICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiBqaXQoIik7Ci0gICAgICAgICAgICAgICAgaWYgKCFtZXRob2RDYWxs
LnNlZW4pCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIm5vdCBzZWVuIik7Ci0gICAgICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgZmFjdCB0aGF0
IE1ldGhvZENhbGxMaW5rU3RhdHVzIGFscmVhZHkgZG9lcyBzbWFydCB0aGluZ3MKLSAgICAgICAg
ICAgICAgICAgICAgLy8gZm9yIGRlY29kaW5nIHNlZW4gbWV0aG9kIGNhbGxzLgotICAgICAgICAg
ICAgICAgICAgICBNZXRob2RDYWxsTGlua1N0YXR1cyBzdGF0dXMgPSBNZXRob2RDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUZvcih0aGlzLCBsb2NhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghc3RhdHVzKQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygibm90IHNldCIpOwot
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coImZ1bmN0aW9uID0gJXAgKGV4ZWN1dGFibGUgPSAiLCBzdGF0dXMuZnVuY3Rpb24oKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBKU0NlbGwqIGZ1bmN0aW9uQXNDZWxsID0gZ2V0SlNGdW5j
dGlvbihzdGF0dXMuZnVuY3Rpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnVu
Y3Rpb25Bc0NlbGwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiJXAiLCBq
c0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uQXNDZWxsKS0+ZXhlY3V0YWJsZSgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJOL0EiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiksIHN0cnVjdCA9
ICVwIiwgc3RhdHVzLnN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz
dGF0dXMubmVlZHNQcm90b3R5cGVDaGVjaygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIiwgcHJvdG90eXBlID0gJXAsIHN0cnVjdCA9ICVwIiwgc3RhdHVzLnByb3RvdHlw
ZSgpLCBzdGF0dXMucHJvdG90eXBlU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRhdGFMb2coIikiKTsKLSAgICAg
ICAgICAgIH0KLSNlbmRpZgotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xp
bmUobG9jYXRpb24pOwotICAgICAgICAgICAgKytpdDsKLSAgICAgICAgICAgIHByaW50R2V0QnlJ
ZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCk7Ci0gICAgICAgICAgICBwcmludEdldEJ5SWRDYWNoZVN0
YXR1cyhleGVjLCBsb2NhdGlvbik7Ci0gICAgICAgICAgICBkYXRhTG9nKCJcbiIpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6IHsKICAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0yMDYwLDM2ICsyMDIwLDYgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICAgICAgCiAgICAgICAgICAgICBy
ZXNldFN0dWJJbnRlcm5hbChyZXBhdGNoQnVmZmVyLCBzdHViSW5mbyk7CiAgICAgICAgIH0KLQot
ICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSwg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghbV9tZXRob2RDYWxsTGlu
a0luZm9zW2ldLmNhY2hlZFN0cnVjdHVyZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgQVNTRVJUKG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5z
ZWVuT25jZSgpKTsKLSAgICAgICAgICAgIEFTU0VSVCghIW1fbWV0aG9kQ2FsbExpbmtJbmZvc1tp
XS5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUpOwotCi0gICAgICAgICAgICBpZiAoIUhlYXA6Omlz
TWFya2VkKG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRTdHJ1Y3R1cmUuZ2V0KCkpCi0g
ICAgICAgICAgICAgICAgfHwgIUhlYXA6OmlzTWFya2VkKG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tp
XS5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgICAgICAgICAgICAgfHwgIUhl
YXA6OmlzTWFya2VkKG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRGdW5jdGlvbi5nZXQo
KSkKLSAgICAgICAgICAgICAgICB8fCAhSGVhcDo6aXNNYXJrZWQobV9tZXRob2RDYWxsTGlua0lu
Zm9zW2ldLmNhY2hlZFByb3RvdHlwZS5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZVVubGlua2luZykKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgbWV0
aG9kIGNhbGwgaW4gJXAuXG4iLCB0aGlzKTsKLSAgICAgICAgICAgICAgICBtX21ldGhvZENhbGxM
aW5rSW5mb3NbaV0ucmVzZXQocmVwYXRjaEJ1ZmZlciwgZ2V0SklUVHlwZSgpKTsKLQotICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IGdldFN0dWJJbmZvKG1fbWV0
aG9kQ2FsbExpbmtJbmZvc1tpXS5ieXRlY29kZUluZGV4KTsKLQotICAgICAgICAgICAgICAgIEFj
Y2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFj
Y2Vzc1R5cGUpOwotCi0gICAgICAgICAgICAgICAgaWYgKGFjY2Vzc1R5cGUgIT0gYWNjZXNzX3Vu
c2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChpc0dldEJ5SWRBY2Nlc3MoYWNjZXNz
VHlwZSkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0SklUQ29kZSgpLmppdFR5cGUoKSA9
PSBKSVRDb2RlOjpERkdKSVQpCi0gICAgICAgICAgICAgICAgICAgICAgICBERkc6OmRmZ1Jlc2V0
R2V0QnlJRChyZXBhdGNoQnVmZmVyLCBzdHViSW5mbyk7Ci0gICAgICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgICAgIEpJVDo6cmVzZXRQYXRjaEdldEJ5SWQocmVwYXRj
aEJ1ZmZlciwgJnN0dWJJbmZvKTsKLSAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8ucmVzZXQo
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICB9CiAj
ZW5kaWYKIH0KQEAgLTIzMzAsNyArMjI2MCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0Zp
dChTaHJpbmtNb2RlIHMKICNpZiBFTkFCTEUoSklUKQogICAgIG1fc3RydWN0dXJlU3R1YkluZm9z
LnNocmlua1RvRml0KCk7CiAgICAgbV9jYWxsTGlua0luZm9zLnNocmlua1RvRml0KCk7Ci0gICAg
bV9tZXRob2RDYWxsTGlua0luZm9zLnNocmlua1RvRml0KCk7CiAjZW5kaWYKICNpZiBFTkFCTEUo
VkFMVUVfUFJPRklMRVIpCiAgICAgaWYgKHNocmlua01vZGUgPT0gRWFybHlTaHJpbmspCkBAIC0y
NDA5LDcgKzIzMzgsNyBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogICAgICAgICAg
ICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CiAgICAgfQogI2VuZGlmCi0gICAg
aWYgKCEobV9jYWxsTGlua0luZm9zLnNpemUoKSB8fCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6
ZSgpKSkKKyAgICBpZiAoIW1fY2FsbExpbmtJbmZvcy5zaXplKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDEzMzQzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUgIkV4ZWN1dGlvbkNvdW50
ZXIuaCIKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCiAjaW5jbHVkZSAiSGFuZGxl
ckluZm8uaCIKLSNpbmNsdWRlICJNZXRob2RDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJPcHRp
b25zLmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCkBA
IC0yNDksMTYgKzI0OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gKihiaW5hcnlTZWFyY2g8Q2FsbExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0Q2FsbExp
bmtJbmZvQnl0ZWNvZGVJbmRleD4obV9jYWxsTGlua0luZm9zLmJlZ2luKCksIG1fY2FsbExpbmtJ
bmZvcy5zaXplKCksIGJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQotCi0gICAgICAgIE1ldGhv
ZENhbGxMaW5rSW5mbyYgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvKFJldHVybkFkZHJlc3NQdHIgcmV0
dXJuQWRkcmVzcykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICooYmluYXJ5U2VhcmNo
PE1ldGhvZENhbGxMaW5rSW5mbywgdm9pZCosIGdldE1ldGhvZENhbGxMaW5rSW5mb1JldHVybkxv
Y2F0aW9uPihtX21ldGhvZENhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0lu
Zm9zLnNpemUoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBNZXRob2RDYWxsTGlua0luZm8mIGdldE1ldGhvZENhbGxMaW5rSW5mbyh1bnNpZ25lZCBieXRl
Y29kZUluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8
TWV0aG9kQ2FsbExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNv
ZGVJbmRleD4obV9tZXRob2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJ
bmZvcy5zaXplKCksIGJ5dGVjb2RlSW5kZXgpKTsKLSAgICAgICAgfQogI2VuZGlmIC8vIEVOQUJM
RShKSVQpCiAKICNpZiBFTkFCTEUoTExJTlQpCkBAIC02NDMsMTAgKzYzMiw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIHNldE51bWJlck9mQ2FsbExpbmtJbmZvcyhzaXplX3Qgc2l6
ZSkgeyBtX2NhbGxMaW5rSW5mb3MuZ3JvdyhzaXplKTsgfQogICAgICAgICBzaXplX3QgbnVtYmVy
T2ZDYWxsTGlua0luZm9zKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsTGlua0luZm9zLnNpemUoKTsg
fQogICAgICAgICBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJu
IG1fY2FsbExpbmtJbmZvc1tpbmRleF07IH0KLQotICAgICAgICB2b2lkIGFkZE1ldGhvZENhbGxM
aW5rSW5mb3ModW5zaWduZWQgbikgeyBBU1NFUlQobV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSk7
IG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5ncm93KG4pOyB9Ci0gICAgICAgIE1ldGhvZENhbGxMaW5r
SW5mbyYgbWV0aG9kQ2FsbExpbmtJbmZvKGludCBpbmRleCkgeyByZXR1cm4gbV9tZXRob2RDYWxs
TGlua0luZm9zW2luZGV4XTsgfQotICAgICAgICBzaXplX3QgbnVtYmVyT2ZNZXRob2RDYWxsTGlu
a0luZm9zKCkgeyByZXR1cm4gbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKTsgfQogI2VuZGlm
CiAgICAgICAgIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTEzMTUsNyArMTMwMCw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+IG1f
c3RydWN0dXJlU3R1YkluZm9zOwogICAgICAgICBWZWN0b3I8QnlWYWxJbmZvPiBtX2J5VmFsSW5m
b3M7CiAgICAgICAgIFZlY3RvcjxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKLSAgICAg
ICAgVmVjdG9yPE1ldGhvZENhbGxMaW5rSW5mbz4gbV9tZXRob2RDYWxsTGlua0luZm9zOwogICAg
ICAgICBKSVRDb2RlIG1faml0Q29kZTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1f
aml0Q29kZVdpdGhBcml0eUNoZWNrOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExp
bmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0Nh
bGxzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcAkocmV2aXNpb24gMTMzNDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw5ICs0MSw2IEBA
IEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICNpZiBFTkFCTEUoTExJ
TlQpCiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CiAgICAgCi0gICAgaWYgKGluc3RydWN0
aW9uWzBdLnUub3Bjb2RlID09IExMSW50OjpnZXRPcGNvZGUobGxpbnRfb3BfbWV0aG9kX2NoZWNr
KSkKLSAgICAgICAgaW5zdHJ1Y3Rpb24rKzsKLSAgICAKICAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0u
dS5vcGNvZGUgPT0gTExJbnQ6OmdldE9wY29kZShsbGludF9vcF9nZXRfYXJyYXlfbGVuZ3RoKSkK
ICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2Fs
bExpbmtJbmZvLmNwcAkocmV2aXNpb24gMTMzNDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTWV0aG9kQ2FsbExpbmtJbmZvLmgiCi0KLSNp
ZiBFTkFCTEUoSklUKQotCi0jaW5jbHVkZSAiSklUU3R1YnMuaCIKLSNpbmNsdWRlICJSZXBhdGNo
QnVmZmVyLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi12b2lkIE1ldGhvZENhbGxMaW5rSW5mbzo6
cmVzZXQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgSklUQ29kZTo6SklUVHlwZSBqaXRU
eXBlKQotewotICAgIGNhY2hlZFN0cnVjdHVyZS5jbGVhclRvTWF4VW5zaWduZWQoKTsKLSAgICBj
YWNoZWRQcm90b3R5cGUuY2xlYXIoKTsKLSAgICBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuY2xl
YXJUb01heFVuc2lnbmVkKCk7Ci0gICAgY2FjaGVkRnVuY3Rpb24uY2xlYXIoKTsKLSAgICAKLSAg
ICBBU1NFUlRfVU5VU0VEKGppdFR5cGUsIGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQp
OwotICAgIAotICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxSZXR1cm5Mb2NhdGlvbiwgY3Rp
X29wX2dldF9ieV9pZF9tZXRob2RfY2hlY2spOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQot
I2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAxMzM0MzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIE1ldGhvZENhbGxMaW5rSW5mb19oCi0jZGVmaW5lIE1l
dGhvZENhbGxMaW5rSW5mb19oCi0KLSNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRl
ICJKSVRDb2RlLmgiCi0jaW5jbHVkZSAiSklUV3JpdGVCYXJyaWVyLmgiCi0jaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi0jaWYgRU5BQkxFKEpJVCkKLQotY2xh
c3MgUmVwYXRjaEJ1ZmZlcjsKLQotc3RydWN0IE1ldGhvZENhbGxMaW5rSW5mbyB7Ci0gICAgTWV0
aG9kQ2FsbExpbmtJbmZvKCkKLSAgICAgICAgOiBzZWVuKGZhbHNlKQotICAgIHsKLSAgICB9Ci0K
LSAgICBib29sIHNlZW5PbmNlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzZWVuOwotICAgIH0K
LQotICAgIHZvaWQgc2V0U2VlbigpCi0gICAgewotICAgICAgICBzZWVuID0gdHJ1ZTsKLSAgICB9
Ci0gICAgICAgIAotICAgIHZvaWQgcmVzZXQoUmVwYXRjaEJ1ZmZlciYsIEpJVENvZGU6OkpJVFR5
cGUpOwotCi0gICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleDsKLSAgICBDb2RlTG9jYXRpb25DYWxs
IGNhbGxSZXR1cm5Mb2NhdGlvbjsKLSAgICBKSVRXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBjYWNo
ZWRTdHJ1Y3R1cmU7Ci0gICAgSklUV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gY2FjaGVkUHJvdG90
eXBlU3RydWN0dXJlOwotICAgIC8vIFdlJ2QgbGlrZSB0aGlzIHRvIGFjdHVhbGx5IGJlIEpTRnVu
Y3Rpb24sIGJ1dCBJbnRlcm5hbEZ1bmN0aW9uIGFuZCBKU0Z1bmN0aW9uCi0gICAgLy8gZG9uJ3Qg
aGF2ZSBhIGNvbW1vbiBwYXJlbnQgY2xhc3MgYW5kIHdlIGFsbG93IHNwZWNpYWxpc2F0aW9uIG9u
IGJvdGgKLSAgICBKSVRXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IGNhY2hlZEZ1bmN0aW9uOwotICAg
IEpJVFdyaXRlQmFycmllcjxKU09iamVjdD4gY2FjaGVkUHJvdG90eXBlOwotICAgIGJvb2wgc2Vl
bjsKLX07Ci0KLWlubGluZSB2b2lkKiBnZXRNZXRob2RDYWxsTGlua0luZm9SZXR1cm5Mb2NhdGlv
bihNZXRob2RDYWxsTGlua0luZm8qIG1ldGhvZENhbGxMaW5rSW5mbykKLXsKLSAgICByZXR1cm4g
bWV0aG9kQ2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3Mo
KTsKLX0KLQotaW5saW5lIHVuc2lnbmVkIGdldE1ldGhvZENhbGxMaW5rSW5mb0J5dGVjb2RlSW5k
ZXgoTWV0aG9kQ2FsbExpbmtJbmZvKiBtZXRob2RDYWxsTGlua0luZm8pCi17Ci0gICAgcmV0dXJu
IG1ldGhvZENhbGxMaW5rSW5mby0+Ynl0ZWNvZGVJbmRleDsKLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShKSVQpCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gTWV0aG9kQ2FsbExpbmtJ
bmZvX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlu
a1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTMzNDMwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNZXRob2RDYWxsTGlu
a1N0YXR1cy5oIgotCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0KLW5hbWVzcGFjZSBKU0Mgewot
Ci1NZXRob2RDYWxsTGlua1N0YXR1cyBNZXRob2RDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCi17Ci0gICAg
VU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwotICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUlu
ZGV4KTsKLSNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgLy8g
Tk9URTogVGhpcyBkb2VzIG5vdCBoYXZlIGFuIExMSW50IGZhbGwtYmFjayBiZWNhdXNlIExMSW50
IGRvZXMgbm90IGRvIGFueSBtZXRob2QKLSAgICAvLyBjYWxsIGxpbmsgY2FjaGluZy4KLSAgICBp
ZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZvcygpKQotICAgICAg
ICByZXR1cm4gTWV0aG9kQ2FsbExpbmtTdGF0dXMoKTsKLSAgICAKLSAgICBNZXRob2RDYWxsTGlu
a0luZm8mIG1ldGhvZENhbGwgPSBwcm9maWxlZEJsb2NrLT5nZXRNZXRob2RDYWxsTGlua0luZm8o
Ynl0ZWNvZGVJbmRleCk7Ci0gICAgCi0gICAgaWYgKCFtZXRob2RDYWxsLnNlZW4gfHwgIW1ldGhv
ZENhbGwuY2FjaGVkU3RydWN0dXJlKQotICAgICAgICByZXR1cm4gTWV0aG9kQ2FsbExpbmtTdGF0
dXMoKTsKLSAgICAKLSAgICBpZiAobWV0aG9kQ2FsbC5jYWNoZWRQcm90b3R5cGUuZ2V0KCkgPT0g
cHJvZmlsZWRCbG9jay0+Z2xvYmFsT2JqZWN0KCktPm1ldGhvZENhbGxEdW1teSgpKSB7Ci0gICAg
ICAgIHJldHVybiBNZXRob2RDYWxsTGlua1N0YXR1cygKLSAgICAgICAgICAgIG1ldGhvZENhbGwu
Y2FjaGVkU3RydWN0dXJlLmdldCgpLAotICAgICAgICAgICAgMCwKLSAgICAgICAgICAgIG1ldGhv
ZENhbGwuY2FjaGVkRnVuY3Rpb24uZ2V0KCksCi0gICAgICAgICAgICAwKTsKLSAgICB9Ci0gICAg
Ci0gICAgcmV0dXJuIE1ldGhvZENhbGxMaW5rU3RhdHVzKAotICAgICAgICBtZXRob2RDYWxsLmNh
Y2hlZFN0cnVjdHVyZS5nZXQoKSwKLSAgICAgICAgbWV0aG9kQ2FsbC5jYWNoZWRQcm90b3R5cGVT
dHJ1Y3R1cmUuZ2V0KCksCi0gICAgICAgIG1ldGhvZENhbGwuY2FjaGVkRnVuY3Rpb24uZ2V0KCks
Ci0gICAgICAgIG1ldGhvZENhbGwuY2FjaGVkUHJvdG90eXBlLmdldCgpKTsKLSNlbHNlIC8vIEVO
QUJMRShKSVQpCi0gICAgcmV0dXJuIE1ldGhvZENhbGxMaW5rU3RhdHVzKCk7Ci0jZW5kaWYgLy8g
RU5BQkxFKEpJVCkKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuaAkocmV2
aXNpb24gMTMzNDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENh
bGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsODcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIE1ldGhvZENhbGxM
aW5rU3RhdHVzX2gKLSNkZWZpbmUgTWV0aG9kQ2FsbExpbmtTdGF0dXNfaAotCi1uYW1lc3BhY2Ug
SlNDIHsKLQotY2xhc3MgQ29kZUJsb2NrOwotY2xhc3MgSlNPYmplY3Q7Ci1jbGFzcyBTdHJ1Y3R1
cmU7Ci0KLWNsYXNzIE1ldGhvZENhbGxMaW5rU3RhdHVzIHsKLXB1YmxpYzoKLSAgICBNZXRob2RD
YWxsTGlua1N0YXR1cygpCi0gICAgICAgIDogbV9zdHJ1Y3R1cmUoMCkKLSAgICAgICAgLCBtX3By
b3RvdHlwZVN0cnVjdHVyZSgwKQotICAgICAgICAsIG1fZnVuY3Rpb24oMCkKLSAgICAgICAgLCBt
X3Byb3RvdHlwZSgwKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgTWV0aG9kQ2FsbExpbmtTdGF0
dXMoCi0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLAotICAgICAgICBTdHJ1Y3R1cmUqIHBy
b3RvdHlwZVN0cnVjdHVyZSwKLSAgICAgICAgSlNPYmplY3QqIGZ1bmN0aW9uLAotICAgICAgICBK
U09iamVjdCogcHJvdG90eXBlKQotICAgICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKLSAg
ICAgICAgLCBtX3Byb3RvdHlwZVN0cnVjdHVyZShwcm90b3R5cGVTdHJ1Y3R1cmUpCi0gICAgICAg
ICwgbV9mdW5jdGlvbihmdW5jdGlvbikKLSAgICAgICAgLCBtX3Byb3RvdHlwZShwcm90b3R5cGUp
Ci0gICAgewotICAgICAgICBpZiAoIW1fZnVuY3Rpb24pIHsKLSAgICAgICAgICAgIEFTU0VSVCgh
bV9zdHJ1Y3R1cmUpOwotICAgICAgICAgICAgQVNTRVJUKCFtX3Byb3RvdHlwZVN0cnVjdHVyZSk7
Ci0gICAgICAgICAgICBBU1NFUlQoIW1fcHJvdG90eXBlKTsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOwotICAgICAgICAKLSAgICAgICAgQVNTRVJUKCFt
X3Byb3RvdHlwZSA9PSAhbV9wcm90b3R5cGVTdHJ1Y3R1cmUpOwotICAgIH0KLSAgICAKLSAgICBz
dGF0aWMgTWV0aG9kQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4KTsKLQotICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1f
ZnVuY3Rpb247IH0KLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2Z1bmN0
aW9uOyB9Ci0gICAgCi0gICAgYm9vbCBuZWVkc1Byb3RvdHlwZUNoZWNrKCkgY29uc3QgeyByZXR1
cm4gISFtX3Byb3RvdHlwZTsgfQotICAgIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgeyBy
ZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KLSAgICBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSgp
IHsgcmV0dXJuIG1fcHJvdG90eXBlU3RydWN0dXJlOyB9Ci0gICAgSlNPYmplY3QqIGZ1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQotICAgIEpTT2JqZWN0KiBwcm90b3R5cGUo
KSBjb25zdCB7IHJldHVybiBtX3Byb3RvdHlwZTsgfQotICAgIAotcHJpdmF0ZToKLSAgICBTdHJ1
Y3R1cmUqIG1fc3RydWN0dXJlOwotICAgIFN0cnVjdHVyZSogbV9wcm90b3R5cGVTdHJ1Y3R1cmU7
Ci0gICAgSlNPYmplY3QqIG1fZnVuY3Rpb247Ci0gICAgSlNPYmplY3QqIG1fcHJvdG90eXBlOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBNZXRob2RDYWxsTGlua1N0YXR1
c19oCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlz
aW9uIDEzMzQzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTkwLDcgKzE5MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBtYWNybyhvcF9yZXQsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfY2FsbF9wdXRfcmVzdWx0LCAz
KSAvKiBoYXMgdmFsdWUgcHJvZmlsaW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfcmV0X29iamVj
dF9vcl90aGlzLCAzKSBcCi0gICAgICAgIG1hY3JvKG9wX21ldGhvZF9jaGVjaywgMSkgXAogICAg
ICAgICBcCiAgICAgICAgIG1hY3JvKG9wX2NvbnN0cnVjdCwgNikgXAogICAgICAgICBtYWNybyhv
cF9zdHJjYXQsIDQpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMzM0MzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTUwMiwxMSArMTUwMiw2IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SW5pdEcKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRNZXRob2RDaGVjaygpCi17Ci0gICAgZW1pdE9wY29kZShvcF9t
ZXRob2RfY2hlY2spOwotfQotCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdl
dEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eSkKIHsKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24g
MTMzNDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsOCArNDIxLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dFRvQmFzZShSZWdpc3RlcklEKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiwgUmVnaXN0ZXJJRCogdmFsdWUsIE5vbmxvY2FsUmVzb2x2ZUlu
Zm8mKTsKIAotICAgICAgICB2b2lkIGVtaXRNZXRob2RDaGVjaygpOwotCiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QXJn
dW1lbnRzTGVuZ3RoKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSk7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAx
MzM0MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2OSw3ICs0NjksNiBAQCBSZWdpc3RlcklEKiBGdW5j
dGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRz
KGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50
cy50aGlzUmVnaXN0ZXIoKSwgbV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9mZnNldCwgc3RhcnRPZmZzZXQoKSAt
IG1fc3ViZXhwcmVzc2lvbkRpdm90T2Zmc2V0LCBtX3N1YmV4cHJlc3Npb25FbmRPZmZzZXQpOwot
ICAgIGdlbmVyYXRvci5lbWl0TWV0aG9kQ2hlY2soKTsKICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5
SWQoZnVuY3Rpb24uZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG1faWRlbnQp
OwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b25Pcklnbm9yZWQoZHN0LCBmdW5jdGlvbi5nZXQoKSksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVj
dGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9m
ZnNldCgpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMzM0MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NiBAQAogI2luY2x1ZGUgIkRGR0J5dGVDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJERkdDYXBhYmls
aXRpZXMuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCi0jaW5jbHVkZSAiTWV0aG9kQ2Fs
bExpbmtTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiUmVz
b2x2ZUdsb2JhbFN0YXR1cy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0yNDg5LDQ4
ICsyNDg4LDYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X3ZhbCk7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAotICAgICAgICBjYXNlIG9wX21ldGhvZF9jaGVjazogewotICAgICAgICAgICAgbV9jdXJy
ZW50UHJvZmlsaW5nSW5kZXggKz0gT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spOwotICAg
ICAgICAgICAgSW5zdHJ1Y3Rpb24qIGdldEluc3RydWN0aW9uID0gY3VycmVudEluc3RydWN0aW9u
ICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBBU1NFUlQoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGdldElu
c3RydWN0aW9uLT51Lm9wY29kZSkgPT0gb3BfZ2V0X2J5X2lkCi0gICAgICAgICAgICAgICAgICAg
fHwgaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGdldEluc3RydWN0aW9uLT51Lm9wY29kZSkgPT0g
b3BfZ2V0X2J5X2lkX291dF9vZl9saW5lKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgTm9k
ZUluZGV4IGJhc2UgPSBnZXQoZ2V0SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJS
ZW1hcFtnZXRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG1ldGhvZF9jaGVjayB3YXMgbW9ub21vcnBoaWMuIElm
IHNvLCBlbWl0IGEgQ2hlY2tYWVpNZXRob2QKLSAgICAgICAgICAgIC8vIG5vZGUsIHdoaWNoIGlz
IGEgbG90IG1vcmUgZWZmaWNpZW50LgotICAgICAgICAgICAgR2V0QnlJZFN0YXR1cyBnZXRCeUlk
U3RhdHVzID0gR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCi0gICAgICAgICAgICAgICAgbV9jdXJyZW50
SW5kZXgsCi0gICAgICAgICAgICAgICAgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoaWRlbnRpZmll
cikpOwotICAgICAgICAgICAgTWV0aG9kQ2FsbExpbmtTdGF0dXMgbWV0aG9kQ2FsbFN0YXR1cyA9
IE1ldGhvZENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9jdXJyZW50SW5kZXgpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBpZiAobWV0aG9kQ2FsbFN0YXR1cy5pc1NldCgpCi0gICAgICAgICAg
ICAgICAgJiYgIWdldEJ5SWRTdGF0dXMud2FzU2VlbkluSklUKCkKLSAgICAgICAgICAgICAgICAm
JiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkQ2FjaGUpKSB7Ci0gICAgICAgICAgICAgICAgLy8gSXQncyBtb25vbW9ycGhpYyBh
cyBmYXIgYXMgd2UgY2FuIHRlbGwsIHNpbmNlIHRoZSBtZXRob2RfY2hlY2sgd2FzIGxpbmtlZAot
ICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGUgc2xvdyBwYXRoIChpLmUuIHRoZSBub3JtYWwgZ2V0
X2J5X2lkKSBuZXZlciBmaXJlZC4KLQotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tT
dHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChtZXRob2RDYWxsU3RhdHVz
LnN0cnVjdHVyZSgpKSksIGJhc2UpOwotICAgICAgICAgICAgICAgIGlmIChtZXRob2RDYWxsU3Rh
dHVzLm5lZWRzUHJvdG90eXBlQ2hlY2soKSkgewotICAgICAgICAgICAgICAgICAgICBhZGRTdHJ1
Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCi0gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RDYWxs
U3RhdHVzLnByb3RvdHlwZSgpLCBtZXRob2RDYWxsU3RhdHVzLnByb3RvdHlwZVN0cnVjdHVyZSgp
KTsKLSAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBiYXNlKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2V0KGdldEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwgY2VsbENvbnN0YW50KG1ldGhvZENhbGxTdGF0dXMuZnVuY3Rpb24oKSkpOwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKAotICAgICAgICAg
ICAgICAgICAgICBnZXRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHByZWRpY3Rpb24sIGJhc2Us
IGlkZW50aWZpZXIsIGdldEJ5SWRTdGF0dXMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBtX2N1cnJlbnRJbmRleCArPSBPUENPREVfTEVOR1RIKG9wX21ldGhvZF9j
aGVjaykgKyBPUENPREVfTEVOR1RIKG9wX2dldF9ieV9pZCk7Ci0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAgICAgY2FzZSBv
cF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0
aDogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5o
CShyZXZpc2lvbiAxMzM0MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNyArMTU3LDYgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlT3Bjb2RlKAogICAgIGNhc2Ugb3BfbnN0cmljdGVxOgogICAg
IGNhc2Ugb3BfZ2V0X2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1dF9ieV92YWw6Ci0gICAgY2FzZSBv
cF9tZXRob2RfY2hlY2s6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9nZXRf
YnlfaWRfb3V0X29mX2xpbmU6CiAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTMzNDMwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsNyArMzAxLDYg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Ao
b3BfbG9vcF9pZl90cnVlKQogICAgICAgICBERUZJTkVfT1Aob3BfbG9vcF9pZl9mYWxzZSkKICAg
ICAgICAgREVGSU5FX09QKG9wX2xzaGlmdCkKLSAgICAgICAgREVGSU5FX09QKG9wX21ldGhvZF9j
aGVjaykKICAgICAgICAgREVGSU5FX09QKG9wX21vZCkKICAgICAgICAgREVGSU5FX09QKG9wX21v
dikKICAgICAgICAgREVGSU5FX09QKG9wX211bCkKQEAgLTQ4OSw3ICs0ODgsNiBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfbG9vcF9pZl90cnVlKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfbG9vcF9pZl9m
YWxzZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2xzaGlmdCkKLSAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX21ldGhvZF9jaGVjaykKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX21vZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX211bCkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX25lZ2F0ZSkKQEAgLTU2OSwxMyArNTY3LDYgQEAgQUxXQVlT
X0lOTElORSB2b2lkIFByb3BlcnR5U3R1YkNvbXBpbGF0aQogICAgIGluZm8uaG90UGF0aEJlZ2lu
ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGhvdFBhdGhCZWdpbik7CiAKICAgICBzd2l0Y2ggKG1f
dHlwZSkgewotICAgIGNhc2UgTWV0aG9kQ2hlY2s6IHsKLSAgICAgICAgQ29kZUxvY2F0aW9uRGF0
YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZUxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlv
bk9mKG1ldGhvZENoZWNrU3RydWN0dXJlVG9Db21wYXJlKTsKLSAgICAgICAgaW5mby5wYXRjaC5i
YXNlbGluZS5tZXRob2RDaGVja1Byb3RvT2JqID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VC
ZXR3ZWVuQ29kZVB0cihzdHJ1Y3R1cmVUb0NvbXBhcmVMb2NhdGlvbiwgbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKG1ldGhvZENoZWNrUHJvdG9PYmopKTsKLSAgICAgICAgaW5mby5wYXRjaC5iYXNlbGlu
ZS5tZXRob2RDaGVja1Byb3RvU3RydWN0dXJlVG9Db21wYXJlID0gTWFjcm9Bc3NlbWJsZXI6OmRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihzdHJ1Y3R1cmVUb0NvbXBhcmVMb2NhdGlvbiwgbGlua0J1
ZmZlci5sb2NhdGlvbk9mKG1ldGhvZENoZWNrUHJvdG9TdHJ1Y3R1cmVUb0NvbXBhcmUpKTsKLSAg
ICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS5tZXRob2RDaGVja1B1dEZ1bmN0aW9uID0gTWFjcm9B
c3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihzdHJ1Y3R1cmVUb0NvbXBhcmVMb2Nh
dGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1ldGhvZENoZWNrUHV0RnVuY3Rpb24pKTsKLSAg
ICAgICAgLy8gTm8gYnJlYWsgLSBmYWxsIHRocm91Z2ggdG8gR2V0QnlJZC4KLSAgICB9CiAgICAg
Y2FzZSBHZXRCeUlkOiB7CiAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdpbkxv
Y2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGhvdFBhdGhCZWdpbik7CiAgICAgICAgIGlu
Zm8ucGF0Y2guYmFzZWxpbmUudS5nZXQuc3RydWN0dXJlVG9Db21wYXJlID0gTWFjcm9Bc3NlbWJs
ZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1
ZmZlci5sb2NhdGlvbk9mKGdldFN0cnVjdHVyZVRvQ29tcGFyZSkpOwpAQCAtNzkyLDE0ICs3ODMs
NiBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAgICAgICAgIGlu
Zm8uaG90UGF0aEJlZ2luID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX2NhbGxTdHJ1Y3R1cmVT
dHViQ29tcGlsYXRpb25JbmZvW2ldLmhvdFBhdGhCZWdpbik7CiAgICAgICAgIGluZm8uaG90UGF0
aE90aGVyID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsKG1fY2FsbFN0cnVjdHVyZVN0
dWJDb21waWxhdGlvbkluZm9baV0uaG90UGF0aE90aGVyKTsKICAgICB9Ci0gICAgdW5zaWduZWQg
bWV0aG9kQ2FsbENvdW50ID0gbV9tZXRob2RDYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKTsKLSAg
ICBtX2NvZGVCbG9jay0+YWRkTWV0aG9kQ2FsbExpbmtJbmZvcyhtZXRob2RDYWxsQ291bnQpOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtZXRob2RDYWxsQ291bnQ7ICsraSkgewotICAg
ICAgICBNZXRob2RDYWxsTGlua0luZm8mIGluZm8gPSBtX2NvZGVCbG9jay0+bWV0aG9kQ2FsbExp
bmtJbmZvKGkpOwotICAgICAgICBpbmZvLmJ5dGVjb2RlSW5kZXggPSBtX21ldGhvZENhbGxDb21w
aWxhdGlvbkluZm9baV0uYnl0ZWNvZGVJbmRleDsKLSAgICAgICAgaW5mby5jYWNoZWRTdHJ1Y3R1
cmUuc2V0TG9jYXRpb24ocGF0Y2hCdWZmZXIubG9jYXRpb25PZihtX21ldGhvZENhbGxDb21waWxh
dGlvbkluZm9baV0uc3RydWN0dXJlVG9Db21wYXJlKSk7Ci0gICAgICAgIGluZm8uY2FsbFJldHVy
bkxvY2F0aW9uID0gbV9jb2RlQmxvY2stPnN0cnVjdHVyZVN0dWJJbmZvKG1fbWV0aG9kQ2FsbENv
bXBpbGF0aW9uSW5mb1tpXS5wcm9wZXJ0eUFjY2Vzc0luZGV4KS5jYWxsUmV0dXJuTG9jYXRpb247
Ci0gICAgfQogCiAjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICBpZiAo
Y2FuQmVPcHRpbWl6ZWQoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAx
MzM0MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTAsNyArMTUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBQcm9wZXJ0eVN0
dWJQdXRCeUlkX1QgeyBQcm9wZXJ0eVN0dWJQdXRCeUlkIH07CiAKICAgICBzdHJ1Y3QgUHJvcGVy
dHlTdHViQ29tcGlsYXRpb25JbmZvIHsKLSAgICAgICAgZW51bSBUeXBlIHsgR2V0QnlJZCwgUHV0
QnlJZCwgTWV0aG9kQ2hlY2sgfSBtX3R5cGU7CisgICAgICAgIGVudW0gVHlwZSB7IEdldEJ5SWQs
IFB1dEJ5SWQgfSBtX3R5cGU7CiAgICAgCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXg7
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbjsKQEAgLTE3
MywxMCArMTczLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpE
YXRhTGFiZWwzMiBwdXREaXNwbGFjZW1lbnRMYWJlbDE7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWwzMiBwdXREaXNwbGFjZW1lbnRMYWJlbDI7CiAjZW5kaWYKLSAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBtZXRob2RDaGVja1N0cnVjdHVyZVRvQ29tcGFyZTsK
LSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBtZXRob2RDaGVja1Byb3RvT2Jq
OwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIG1ldGhvZENoZWNrUHJvdG9T
dHJ1Y3R1cmVUb0NvbXBhcmU7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIg
bWV0aG9kQ2hlY2tQdXRGdW5jdGlvbjsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAg
UHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZvKCkKQEAgLTI0MSw3ICsyMzcsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICB2b2lkIHNsb3dDYXNlSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlk
X1QsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBjb2xkUGF0aEJlZ2luLCBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBjYWxsKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBlID09IEdldEJ5
SWQgfHwgbV90eXBlID09IE1ldGhvZENoZWNrKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gR2V0QnlJZCk7CiAgICAgICAgICAgICBjYWxsUmV0dXJuTG9jYXRpb24gPSBjYWxsOwogICAg
ICAgICAgICAgZ2V0Q29sZFBhdGhCZWdpbiA9IGNvbGRQYXRoQmVnaW47CiAgICAgICAgIH0KQEAg
LTI1MiwxNSArMjQ4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBjYWxsUmV0dXJu
TG9jYXRpb24gPSBjYWxsOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBhZGRNZXRob2RDaGVj
a0luZm8oTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1h
Y3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgcHJvdG9PYmosIE1hY3JvQXNzZW1ibGVyOjpEYXRh
TGFiZWxQdHIgcHJvdG9TdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFi
ZWxQdHIgcHV0RnVuY3Rpb24pCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fdHlwZSA9IE1ldGhv
ZENoZWNrOwotICAgICAgICAgICAgbWV0aG9kQ2hlY2tTdHJ1Y3R1cmVUb0NvbXBhcmUgPSBzdHJ1
Y3R1cmVUb0NvbXBhcmU7Ci0gICAgICAgICAgICBtZXRob2RDaGVja1Byb3RvT2JqID0gcHJvdG9P
Ymo7Ci0gICAgICAgICAgICBtZXRob2RDaGVja1Byb3RvU3RydWN0dXJlVG9Db21wYXJlID0gcHJv
dG9TdHJ1Y3R1cmVUb0NvbXBhcmU7Ci0gICAgICAgICAgICBtZXRob2RDaGVja1B1dEZ1bmN0aW9u
ID0gcHV0RnVuY3Rpb247Ci0gICAgICAgIH0KLQogICAgICAgICB2b2lkIGNvcHlUb1N0dWJJbmZv
KFN0cnVjdHVyZVN0dWJJbmZvJiBpbmZvLCBMaW5rQnVmZmVyICZwYXRjaEJ1ZmZlcik7CiAgICAg
fTsKIApAQCAtMjkxLDE4ICsyNzgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleDsKICAgICB9OwogCi0gICAgc3RydWN0IE1ldGhvZENhbGxDb21waWxh
dGlvbkluZm8gewotICAgICAgICBNZXRob2RDYWxsQ29tcGlsYXRpb25JbmZvKHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgsIHVuc2lnbmVkIHByb3BlcnR5QWNjZXNzSW5kZXgpCi0gICAgICAgICAgICA6
IGJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCkKLSAgICAgICAgICAgICwgcHJvcGVydHlBY2Nl
c3NJbmRleChwcm9wZXJ0eUFjY2Vzc0luZGV4KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAg
ICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4OwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0
YUxhYmVsUHRyIHN0cnVjdHVyZVRvQ29tcGFyZTsKLSAgICAgICAgdW5zaWduZWQgcHJvcGVydHlB
Y2Nlc3NJbmRleDsKLSAgICB9OwotCiAgICAgLy8gTmVhciBjYWxscyBjYW4gb25seSBiZSBwYXRj
aGVkIHRvIG90aGVyIEpJVCBjb2RlLCByZWd1bGFyIGNhbGxzIGNhbiBiZSBwYXRjaGVkIHRvIEpJ
VCBjb2RlIG9yIHJlbGlua2VkIHRvIHN0dWIgZnVuY3Rpb25zLgogICAgIHZvaWQgY3RpUGF0Y2hO
ZWFyQ2FsbEJ5UmV0dXJuQWRkcmVzcyhDb2RlQmxvY2sqIGNvZGVibG9jaywgUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbmV3Q2FsbGVlRnVuY3Rp
b24pOwogICAgIHZvaWQgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKENvZGVCbG9jayogY29k
ZWJsb2NrLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciBuZXdDYWxsZWVGdW5jdGlvbik7CkBAIC00MDcsNyArMzgyLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hQdXRCeUlkKFJlcGF0Y2hCdWZmZXIm
LCBTdHJ1Y3R1cmVTdHViSW5mbyopOwogICAgICAgICBzdGF0aWMgdm9pZCBwYXRjaEdldEJ5SWRT
ZWxmKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyKTsKICAgICAgICAgc3RhdGljIHZv
aWQgcGF0Y2hQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFN0
cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciwg
Ym9vbCBkaXJlY3QpOwotICAgICAgICBzdGF0aWMgdm9pZCBwYXRjaE1ldGhvZENhbGxQcm90byhK
U0dsb2JhbERhdGEmLCBDb2RlQmxvY2sqLCBNZXRob2RDYWxsTGlua0luZm8mLCBTdHJ1Y3R1cmVT
dHViSW5mbyYsIEpTT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNPYmplY3QqLCBSZXR1cm5BZGRyZXNz
UHRyKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MpCiAgICAgICAgIHsKQEAgLTU0Nyw3ICs1MjEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoaW50
IHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIHRhZyk7CiAKICAgICAgICAgdm9pZCBj
b21waWxlR2V0QnlJZEhvdFBhdGgoSWRlbnRpZmllciopOwotICAgICAgICB2b2lkIGNvbXBpbGVH
ZXRCeUlkU2xvd0Nhc2UoaW50IHJlc3VsdFZSZWcsIGludCBiYXNlVlJlZywgSWRlbnRpZmllciog
aWRlbnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIGJvb2wgaXNNZXRo
b2RDaGVjayA9IGZhbHNlKTsKKyAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGlu
dCByZXN1bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0RGly
ZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVy
SUQgcmVzdWx0UGF5bG9hZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKICAgICAgICAg
dm9pZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KEpTT2JqZWN0KiBiYXNlLCBSZWdpc3RlcklEIHJl
c3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRP
ZmZzZXQpOwogICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIHJlc3VsdFRhZywgUmVnaXN0ZXJJRCByZXN1bHRQYXlsb2FkLCBSZWdp
c3RlcklEIG9mZnNldCwgRmluYWxPYmplY3RNb2RlID0gTWF5QmVGaW5hbCk7CkBAIC01NjIsOSAr
NTM2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIHNlcXVlbmNlT3BDYWxsCiAgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQgc2VxdWVuY2VPcENhbGxJbnN0cnVjdGlvblNwYWNlID0gMTI7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgc2VxdWVuY2VPcENhbGxDb25zdGFudFNwYWNlID0g
MjsKLSAgICAgICAgLy8gc2VxdWVuY2VNZXRob2RDaGVjawotICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IHNlcXVlbmNlTWV0aG9kQ2hlY2tJbnN0cnVjdGlvblNwYWNlID0gNDA7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCBpbnQgc2VxdWVuY2VNZXRob2RDaGVja0NvbnN0YW50U3BhY2UgPSA2OwogICAg
ICAgICAvLyBzZXF1ZW5jZUdldEJ5SWRIb3RQYXRoCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQg
c2VxdWVuY2VHZXRCeUlkSG90UGF0aEluc3RydWN0aW9uU3BhY2UgPSAzNjsKICAgICAgICAgc3Rh
dGljIGNvbnN0IGludCBzZXF1ZW5jZUdldEJ5SWRIb3RQYXRoQ29uc3RhbnRTcGFjZSA9IDQ7CkBA
IC01NzgsOSArNTQ5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIHNlcXVlbmNlT3BD
YWxsCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgc2VxdWVuY2VPcENhbGxJbnN0cnVjdGlvblNw
YWNlID0gMTI7CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgc2VxdWVuY2VPcENhbGxDb25zdGFu
dFNwYWNlID0gMjsKLSAgICAgICAgLy8gc2VxdWVuY2VNZXRob2RDaGVjawotICAgICAgICBzdGF0
aWMgY29uc3QgaW50IHNlcXVlbmNlTWV0aG9kQ2hlY2tJbnN0cnVjdGlvblNwYWNlID0gNDA7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBpbnQgc2VxdWVuY2VNZXRob2RDaGVja0NvbnN0YW50U3BhY2Ug
PSA2OwogICAgICAgICAvLyBzZXF1ZW5jZUdldEJ5SWRIb3RQYXRoCiAgICAgICAgIHN0YXRpYyBj
b25zdCBpbnQgc2VxdWVuY2VHZXRCeUlkSG90UGF0aEluc3RydWN0aW9uU3BhY2UgPSAzNjsKICAg
ICAgICAgc3RhdGljIGNvbnN0IGludCBzZXF1ZW5jZUdldEJ5SWRIb3RQYXRoQ29uc3RhbnRTcGFj
ZSA9IDU7CkBAIC02MjksNyArNTk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
Y29tcGlsZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShPcGNvZGVJRCwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYsIHVuc2lnbmVkIGRzdCwgdW5zaWduZWQgc3JjMSwgdW5zaWduZWQgc3Jj
MiwgT3BlcmFuZFR5cGVzLCBib29sIG9wMUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlLCBib29sIG9w
Mkhhc0ltbWVkaWF0ZUludEZhc3RDYXNlKTsKIAogICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlk
SG90UGF0aChpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIqKTsKLSAgICAgICAgdm9pZCBjb21waWxl
R2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElkZW50aWZpZXIq
IGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBib29sIGlzTWV0
aG9kQ2hlY2sgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgY29tcGlsZUdldEJ5SWRTbG93Q2FzZShp
bnQgcmVzdWx0VlJlZywgaW50IGJhc2VWUmVnLCBJZGVudGlmaWVyKiBpZGVudCwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcik7CiAgICAgICAgIHZvaWQgY29tcGlsZUdldERp
cmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9m
ZnNldCBjYWNoZWRPZmZzZXQpOwogICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQo
SlNPYmplY3QqIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBQcm9wZXJ0eU9mZnNldCBjYWNoZWRP
ZmZzZXQpOwogICAgICAgICB2b2lkIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZXJJRCBi
YXNlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVnaXN0ZXJJRCBvZmZzZXQsIFJlZ2lzdGVySUQgc2Ny
YXRjaCwgRmluYWxPYmplY3RNb2RlID0gTWF5QmVGaW5hbCk7CkBAIC03MTEsNyArNjc5LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9sb29wX2lmX3RydWUoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2xvb3BfaWZfZmFsc2UoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2xzaGlmdChJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfbWV0aG9kX2NoZWNrKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9tb2QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX21vdihJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbXVsKEluc3RydWN0aW9uKik7CkBAIC04MDYs
NyArNzczLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbG9v
cF9pZl90cnVlKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2xvb3BfaWZfZmFsc2UoSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfbHNoaWZ0KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwotICAgICAgICB2b2lkIGVtaXRTbG93X29wX21ldGhvZF9jaGVjayhJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9tb2QoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAg
ICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbXVsKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX25lZ2F0ZShJbnN0
cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKQEAgLTkzNiw3ICs5
MDIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFByb3BlcnR5U3R1YkNvbXBp
bGF0aW9uSW5mbz4gbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mbzsKICAgICAgICAgVmVj
dG9yPEJ5VmFsQ29tcGlsYXRpb25JbmZvPiBtX2J5VmFsQ29tcGlsYXRpb25JbmZvOwogICAgICAg
ICBWZWN0b3I8U3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mbz4gbV9jYWxsU3RydWN0dXJlU3R1
YkNvbXBpbGF0aW9uSW5mbzsKLSAgICAgICAgVmVjdG9yPE1ldGhvZENhbGxDb21waWxhdGlvbklu
Zm8+IG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mbzsKICAgICAgICAgVmVjdG9yPEp1bXBUYWJs
ZT4gbV9qbXBUYWJsZTsKIAogICAgICAgICB1bnNpZ25lZCBtX2J5dGVjb2RlT2Zmc2V0OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
MzJfNjQuY3BwCShyZXZpc2lvbiAxMzM0MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3MyArOTEs
NiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgc3R1YkNh
bGwuY2FsbChkc3QpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9tZXRob2RfY2hlY2soSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICAvLyBBc3NlcnQgdGhhdCB0aGUgZm9s
bG93aW5nIGluc3RydWN0aW9uIGlzIGEgZ2V0X2J5X2lkLgotICAgIEFTU0VSVChtX2ludGVycHJl
dGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9t
ZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZAotICAgICAgICB8fCBtX2lu
dGVycHJldGVyLT5nZXRPcGNvZGVJRCgoY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdU
SChvcF9tZXRob2RfY2hlY2spKS0+dS5vcGNvZGUpID09IG9wX2dldF9ieV9pZF9vdXRfb2ZfbGlu
ZSk7Ci0gICAgCi0gICAgY3VycmVudEluc3RydWN0aW9uICs9IE9QQ09ERV9MRU5HVEgob3BfbWV0
aG9kX2NoZWNrKTsKLSAgICAKLSAgICAvLyBEbyB0aGUgbWV0aG9kIGNoZWNrIC0gY2hlY2sgdGhl
IG9iamVjdCAmIGl0cyBwcm90b3R5cGUncyBzdHJ1Y3R1cmUgaW5saW5lICh0aGlzIGlzIHRoZSBj
b21tb24gY2FzZSkuCi0gICAgbV9tZXRob2RDYWxsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChNZXRo
b2RDYWxsQ29tcGlsYXRpb25JbmZvKG1fYnl0ZWNvZGVPZmZzZXQsIG1fcHJvcGVydHlBY2Nlc3ND
b21waWxhdGlvbkluZm8uc2l6ZSgpKSk7Ci0gICAgTWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mbyYg
aW5mbyA9IG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mby5sYXN0KCk7Ci0gICAgCi0gICAgaW50
IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgaW50IGJhc2UgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIElkZW50aWZpZXIqIGlkZW50ID0g
JihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
KSk7Ci0gICAgCi0gICAgZW1pdExvYWQoYmFzZSwgcmVnVDEsIHJlZ1QwKTsKLSAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwotICAgIAotICAgIEJFR0lOX1VOSU5U
RVJSVVBURURfU0VRVUVOQ0Uoc2VxdWVuY2VNZXRob2RDaGVjayk7Ci0gICAgCi0gICAgSnVtcCBz
dHJ1Y3R1cmVDaGVjayA9IGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIGluZm8uc3RydWN0dXJlVG9Db21wYXJlLCBU
cnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJZERlZmF1bHRT
dHJ1Y3R1cmUpKSk7Ci0gICAgRGF0YUxhYmVsUHRyIHByb3RvU3RydWN0dXJlVG9Db21wYXJlLCBw
cm90b09iaiA9IG1vdmVXaXRoUGF0Y2goVHJ1c3RlZEltbVB0cigwKSwgcmVnVDIpOwotICAgIEp1
bXAgcHJvdG9TdHJ1Y3R1cmVDaGVjayA9IGJyYW5jaFB0cldpdGhQYXRjaChOb3RFcXVhbCwgQWRk
cmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHByb3RvU3RydWN0dXJlVG9D
b21wYXJlLCBUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBhdGNoR2V0QnlJ
ZERlZmF1bHRTdHJ1Y3R1cmUpKSk7Ci0gICAgCi0gICAgLy8gVGhpcyB3aWxsIGJlIHJlbGlua2Vk
IHRvIGxvYWQgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgZG9pbmcgYSBsb2FkLgotICAgIERhdGFMYWJl
bFB0ciBwdXRGdW5jdGlvbiA9IG1vdmVXaXRoUGF0Y2goVHJ1c3RlZEltbVB0cigwKSwgcmVnVDAp
OwotICAgIAotICAgIEVORF9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNlTWV0aG9kQ2hl
Y2spOwotICAgIAotICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCByZWdU
MSk7Ci0gICAgSnVtcCBtYXRjaCA9IGp1bXAoKTsKLSAgICAKLSAgICAvLyBMaW5rIHRoZSBmYWls
dXJlIGNhc2VzIGhlcmUuCi0gICAgc3RydWN0dXJlQ2hlY2subGluayh0aGlzKTsKLSAgICBwcm90
b1N0cnVjdHVyZUNoZWNrLmxpbmsodGhpcyk7Ci0gICAgCi0gICAgLy8gRG8gYSByZWd1bGFyKGlz
aCkgZ2V0X2J5X2lkICh0aGUgc2xvdyBjYXNlIHdpbGwgYmUgbGluayB0bwotICAgIC8vIGN0aV9v
cF9nZXRfYnlfaWRfbWV0aG9kX2NoZWNrIGluc3RlYWQgb2YgY3RpX29wX2dldF9ieV9pZC4KLSAg
ICBjb21waWxlR2V0QnlJZEhvdFBhdGgoaWRlbnQpOwotICAgIAotICAgIG1hdGNoLmxpbmsodGhp
cyk7Ci0gICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RF
X0xFTkdUSChvcF9tZXRob2RfY2hlY2spKTsKLSAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVn
VDApOwotICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2Rf
Y2hlY2spICsgT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfaWQpLCBkc3QsIHJlZ1QxLCByZWdUMCk7
Ci0gICAgCi0gICAgLy8gV2UndmUgYWxyZWFkeSBnZW5lcmF0ZWQgdGhlIGZvbGxvd2luZyBnZXRf
YnlfaWQsIHNvIG1ha2Ugc3VyZSBpdCdzIHNraXBwZWQgb3Zlci4KLSAgICBtX2J5dGVjb2RlT2Zm
c2V0ICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X2lkKTsKLQotICAgIG1fcHJvcGVydHlBY2Nl
c3NDb21waWxhdGlvbkluZm8ubGFzdCgpLmFkZE1ldGhvZENoZWNrSW5mbyhpbmZvLnN0cnVjdHVy
ZVRvQ29tcGFyZSwgcHJvdG9PYmosIHByb3RvU3RydWN0dXJlVG9Db21wYXJlLCBwdXRGdW5jdGlv
bik7Ci19Ci0KLXZvaWQgSklUOjplbWl0U2xvd19vcF9tZXRob2RfY2hlY2soSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKLXsKLSAgICBjdXJyZW50SW5zdHJ1Y3Rpb24gKz0gT1BDT0RFX0xFTkdUSChvcF9tZXRob2Rf
Y2hlY2spOwotICAgIAotICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwotICAgIGludCBiYXNlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAg
ICBpbnQgaWRlbnQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwotICAgIAotICAg
IGNvbXBpbGVHZXRCeUlkU2xvd0Nhc2UoZHN0LCBiYXNlLCAmKG1fY29kZUJsb2NrLT5pZGVudGlm
aWVyKGlkZW50KSksIGl0ZXIsIHRydWUpOwotICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobV9i
eXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKSk7Ci0gICAgCi0g
ICAgLy8gV2UndmUgYWxyZWFkeSBnZW5lcmF0ZWQgdGhlIGZvbGxvd2luZyBnZXRfYnlfaWQsIHNv
IG1ha2Ugc3VyZSBpdCdzIHNraXBwZWQgb3Zlci4KLSAgICBtX2J5dGVjb2RlT2Zmc2V0ICs9IE9Q
Q09ERV9MRU5HVEgob3BfZ2V0X2J5X2lkKTsKLX0KLQogSklUOjpDb2RlUmVmIEpJVDo6c3RyaW5n
R2V0QnlWYWxTdHViR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKIHsKICAgICBK
U0ludGVyZmFjZUpJVCBqaXQ7CkBAIC01MDUsNyArNDM4LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2dldF9ieV9pZChJbnN0cnVjdAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKIH0K
IAotdm9pZCBKSVQ6OmNvbXBpbGVHZXRCeUlkU2xvd0Nhc2UoaW50IGRzdCwgaW50IGJhc2UsIElk
ZW50aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBi
b29sIGlzTWV0aG9kQ2hlY2spCit2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRTbG93Q2FzZShpbnQg
ZHN0LCBpbnQgYmFzZSwgSWRlbnRpZmllciogaWRlbnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgLy8gQXMgZm9yIHRoZSBob3QgcGF0aCBvZiBnZXRfYnlf
aWQsIGFib3ZlLCB3ZSBlbnN1cmUgdGhhdCB3ZSBjYW4gdXNlIGFuIGFyY2hpdGVjdHVyZSBzcGVj
aWZpYyBvZmZzZXQKICAgICAvLyBzbyB0aGF0IHdlIG9ubHkgbmVlZCB0cmFjayBvbmUgcG9pbnRl
ciBpbnRvIHRoZSBzbG93IGNhc2UgY29kZSAtIHdlIHRyYWNrIGEgcG9pbnRlciB0byB0aGUgbG9j
YXRpb24KQEAgLTUxOCw3ICs0NTEsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRTbG93Q2Fz
ZShpbnQgZHN0CiAgICAgQkVHSU5fVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZUdldEJ5
SWRTbG93Q2FzZSk7CiAgICAgCiAgICAgTGFiZWwgY29sZFBhdGhCZWdpbih0aGlzKTsKLSAgICBK
SVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBpc01ldGhvZENoZWNrID8gY3RpX29wX2dldF9ieV9p
ZF9tZXRob2RfY2hlY2sgOiBjdGlfb3BfZ2V0X2J5X2lkKTsKKyAgICBKSVRTdHViQ2FsbCBzdHVi
Q2FsbCh0aGlzLCBjdGlfb3BfZ2V0X2J5X2lkKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChy
ZWdUMSwgcmVnVDApOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIoaWRl
bnQpKTsKICAgICBDYWxsIGNhbGwgPSBzdHViQ2FsbC5jYWxsKGRzdCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24g
MTMzNDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0MCw3MSArNDQwLDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
ZGVsX2J5X2lkKEluc3RydWN0aW9uKgogICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX21ldGhvZF9jaGVjayhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIC8vIEFzc2VydCB0aGF0IHRo
ZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb24gaXMgYSBnZXRfYnlfaWQuCi0gICAgQVNTRVJUKG1faW50
ZXJwcmV0ZXItPmdldE9wY29kZUlEKChjdXJyZW50SW5zdHJ1Y3Rpb24gKyBPUENPREVfTEVOR1RI
KG9wX21ldGhvZF9jaGVjaykpLT51Lm9wY29kZSkgPT0gb3BfZ2V0X2J5X2lkCi0gICAgICAgIHx8
IG1faW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKChjdXJyZW50SW5zdHJ1Y3Rpb24gKyBPUENPREVf
TEVOR1RIKG9wX21ldGhvZF9jaGVjaykpLT51Lm9wY29kZSkgPT0gb3BfZ2V0X2J5X2lkX291dF9v
Zl9saW5lKTsKLQotICAgIGN1cnJlbnRJbnN0cnVjdGlvbiArPSBPUENPREVfTEVOR1RIKG9wX21l
dGhvZF9jaGVjayk7Ci0gICAgdW5zaWduZWQgcmVzdWx0VlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgYmFzZVZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kOwotICAgIElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+
aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7Ci0KLSAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWUmVnLCByZWdUMCk7Ci0KLSAgICAvLyBEbyB0aGUgbWV0
aG9kIGNoZWNrIC0gY2hlY2sgdGhlIG9iamVjdCAmIGl0cyBwcm90b3R5cGUncyBzdHJ1Y3R1cmUg
aW5saW5lICh0aGlzIGlzIHRoZSBjb21tb24gY2FzZSkuCi0gICAgbV9tZXRob2RDYWxsQ29tcGls
YXRpb25JbmZvLmFwcGVuZChNZXRob2RDYWxsQ29tcGlsYXRpb25JbmZvKG1fYnl0ZWNvZGVPZmZz
ZXQsIG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uc2l6ZSgpKSk7Ci0gICAgTWV0aG9k
Q2FsbENvbXBpbGF0aW9uSW5mbyYgaW5mbyA9IG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mby5s
YXN0KCk7Ci0KLSAgICBKdW1wIG5vdENlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsK
LQotICAgIEJFR0lOX1VOSU5URVJSVVBURURfU0VRVUVOQ0Uoc2VxdWVuY2VNZXRob2RDaGVjayk7
Ci0KLSAgICBKdW1wIHN0cnVjdHVyZUNoZWNrID0gYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFs
LCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgaW5mby5zdHJ1Y3R1
cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGF0Y2hH
ZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKTsKLSAgICBEYXRhTGFiZWxQdHIgcHJvdG9TdHJ1Y3R1
cmVUb0NvbXBhcmUsIHByb3RvT2JqID0gbW92ZVdpdGhQYXRjaChUcnVzdGVkSW1tUHRyKDApLCBy
ZWdUMSk7Ci0gICAgSnVtcCBwcm90b1N0cnVjdHVyZUNoZWNrID0gYnJhbmNoUHRyV2l0aFBhdGNo
KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcHJv
dG9TdHJ1Y3R1cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKTsKLQotICAgIC8vIFRoaXMgd2lsbCBi
ZSByZWxpbmtlZCB0byBsb2FkIHRoZSBmdW5jdGlvbiB3aXRob3V0IGRvaW5nIGEgbG9hZC4KLSAg
ICBEYXRhTGFiZWxQdHIgcHV0RnVuY3Rpb24gPSBtb3ZlV2l0aFBhdGNoKFRydXN0ZWRJbW1QdHIo
MCksIHJlZ1QwKTsKLQotICAgIEVORF9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVlbmNlTWV0
aG9kQ2hlY2spOwotCi0gICAgSnVtcCBtYXRjaCA9IGp1bXAoKTsKLQotICAgIC8vIExpbmsgdGhl
IGZhaWx1cmUgY2FzZXMgaGVyZS4KLSAgICBub3RDZWxsLmxpbmsodGhpcyk7Ci0gICAgc3RydWN0
dXJlQ2hlY2subGluayh0aGlzKTsKLSAgICBwcm90b1N0cnVjdHVyZUNoZWNrLmxpbmsodGhpcyk7
Ci0KLSAgICAvLyBEbyBhIHJlZ3VsYXIoaXNoKSBnZXRfYnlfaWQgKHRoZSBzbG93IGNhc2Ugd2ls
bCBiZSBsaW5rIHRvCi0gICAgLy8gY3RpX29wX2dldF9ieV9pZF9tZXRob2RfY2hlY2sgaW5zdGVh
ZCBvZiBjdGlfb3BfZ2V0X2J5X2lkLgotICAgIGNvbXBpbGVHZXRCeUlkSG90UGF0aChiYXNlVlJl
ZywgaWRlbnQpOwotCi0gICAgbWF0Y2gubGluayh0aGlzKTsKLSAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKG1fYnl0ZWNvZGVPZmZzZXQgKyBPUENPREVfTEVOR1RIKG9wX21ldGhvZF9jaGVjaykp
OwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZyk7Ci0KLSAgICAvLyBXZSd2
ZSBhbHJlYWR5IGdlbmVyYXRlZCB0aGUgZm9sbG93aW5nIGdldF9ieV9pZCwgc28gbWFrZSBzdXJl
IGl0J3Mgc2tpcHBlZCBvdmVyLgotICAgIG1fYnl0ZWNvZGVPZmZzZXQgKz0gT1BDT0RFX0xFTkdU
SChvcF9nZXRfYnlfaWQpOwotCi0gICAgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5s
YXN0KCkuYWRkTWV0aG9kQ2hlY2tJbmZvKGluZm8uc3RydWN0dXJlVG9Db21wYXJlLCBwcm90b09i
aiwgcHJvdG9TdHJ1Y3R1cmVUb0NvbXBhcmUsIHB1dEZ1bmN0aW9uKTsKLX0KLQotdm9pZCBKSVQ6
OmVtaXRTbG93X29wX21ldGhvZF9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQotewotICAgIGN1cnJlbnRJ
bnN0cnVjdGlvbiArPSBPUENPREVfTEVOR1RIKG9wX21ldGhvZF9jaGVjayk7Ci0gICAgdW5zaWdu
ZWQgcmVzdWx0VlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgdW5z
aWduZWQgYmFzZVZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIElk
ZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKSk7Ci0KLSAgICBjb21waWxlR2V0QnlJZFNsb3dDYXNlKHJlc3Vs
dFZSZWcsIGJhc2VWUmVnLCBpZGVudCwgaXRlciwgdHJ1ZSk7Ci0gICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2sp
KTsKLQotICAgIC8vIFdlJ3ZlIGFscmVhZHkgZ2VuZXJhdGVkIHRoZSBmb2xsb3dpbmcgZ2V0X2J5
X2lkLCBzbyBtYWtlIHN1cmUgaXQncyBza2lwcGVkIG92ZXIuCi0gICAgbV9ieXRlY29kZU9mZnNl
dCArPSBPUENPREVfTEVOR1RIKG9wX2dldF9ieV9pZCk7Ci19Ci0KIHZvaWQgSklUOjplbWl0X29w
X2dldF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIHVuc2ln
bmVkIHJlc3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpAQCAtNTU1
LDExICs0OTAsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdAog
ICAgIHVuc2lnbmVkIGJhc2VWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsK
ICAgICBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwogCi0gICAgY29tcGlsZUdldEJ5SWRTbG93Q2Fz
ZShyZXN1bHRWUmVnLCBiYXNlVlJlZywgaWRlbnQsIGl0ZXIsIGZhbHNlKTsKKyAgICBjb21waWxl
R2V0QnlJZFNsb3dDYXNlKHJlc3VsdFZSZWcsIGJhc2VWUmVnLCBpZGVudCwgaXRlcik7CiAgICAg
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwogfQogCi12b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRT
bG93Q2FzZShpbnQgcmVzdWx0VlJlZywgaW50IGJhc2VWUmVnLCBJZGVudGlmaWVyKiBpZGVudCwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgYm9vbCBpc01ldGhvZENoZWNr
KQordm9pZCBKSVQ6OmNvbXBpbGVHZXRCeUlkU2xvd0Nhc2UoaW50IHJlc3VsdFZSZWcsIGludCBi
YXNlVlJlZywgSWRlbnRpZmllciogaWRlbnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7CiAgICAgLy8gQXMgZm9yIHRoZSBob3QgcGF0aCBvZiBnZXRfYnlfaWQsIGFi
b3ZlLCB3ZSBlbnN1cmUgdGhhdCB3ZSBjYW4gdXNlIGFuIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBv
ZmZzZXQKICAgICAvLyBzbyB0aGF0IHdlIG9ubHkgbmVlZCB0cmFjayBvbmUgcG9pbnRlciBpbnRv
IHRoZSBzbG93IGNhc2UgY29kZSAtIHdlIHRyYWNrIGEgcG9pbnRlciB0byB0aGUgbG9jYXRpb24K
QEAgLTU3Myw3ICs1MDgsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRTbG93Q2FzZShpbnQg
cmVzCiAgICAgQkVHSU5fVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZUdldEJ5SWRTbG93
Q2FzZSk7CiAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luKHRoaXMpOwotICAgIEpJVFN0dWJDYWxs
IHN0dWJDYWxsKHRoaXMsIGlzTWV0aG9kQ2hlY2sgPyBjdGlfb3BfZ2V0X2J5X2lkX21ldGhvZF9j
aGVjayA6IGN0aV9vcF9nZXRfYnlfaWQpOworICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMs
IGN0aV9vcF9nZXRfYnlfaWQpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKICAg
ICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKGlkZW50KSk7CiAgICAgQ2FsbCBj
YWxsID0gc3R1YkNhbGwuY2FsbChyZXN1bHRWUmVnKTsKQEAgLTEzNDQsMjAgKzEyNzksNiBAQCB2
b2lkIEpJVDo6dGVzdFByb3RvdHlwZShKU1ZhbHVlIHByb3RvdHlwCiAgICAgYWRkU3RydWN0dXJl
VHJhbnNpdGlvbkNoZWNrKHByb3RvdHlwZS5hc0NlbGwoKSwgcHJvdG90eXBlLmFzQ2VsbCgpLT5z
dHJ1Y3R1cmUoKSwgc3R1YkluZm8sIGZhaWx1cmVDYXNlcywgcmVnVDMpOwogfQogCi12b2lkIEpJ
VDo6cGF0Y2hNZXRob2RDYWxsUHJvdG8oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsTGlua0luZm8sIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgSlNPYmplY3QqIGNhbGxlZSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTT2JqZWN0KiBwcm90bywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
KQotewotICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwotICAgIAot
ICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVMb2NhdGlvbiA9IG1ldGhvZENh
bGxMaW5rSW5mby5jYWNoZWRTdHJ1Y3R1cmUubG9jYXRpb24oKTsKLSAgICBtZXRob2RDYWxsTGlu
a0luZm8uY2FjaGVkU3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmVMb2NhdGlvbiwg
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKLSAgICAKLSAgICBTdHJ1
Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSA9IHByb3RvLT5zdHJ1Y3R1cmUoKTsKLSAgICBtZXRo
b2RDYWxsTGlua0luZm8uY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCBz
dHJ1Y3R1cmVMb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldChzdHViSW5mby5wYXRjaC5iYXNl
bGluZS5tZXRob2RDaGVja1Byb3RvU3RydWN0dXJlVG9Db21wYXJlKSwgY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKSwgcHJvdG90eXBlU3RydWN0dXJlKTsKLSAgICBtZXRob2RDYWxsTGlua0lu
Zm8uY2FjaGVkUHJvdG90eXBlLnNldChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmVMb2NhdGlvbi5kYXRh
TGFiZWxQdHJBdE9mZnNldChzdHViSW5mby5wYXRjaC5iYXNlbGluZS5tZXRob2RDaGVja1Byb3Rv
T2JqKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgcHJvdG8pOwotICAgIG1ldGhvZENh
bGxMaW5rSW5mby5jYWNoZWRGdW5jdGlvbi5zZXQoZ2xvYmFsRGF0YSwgc3RydWN0dXJlTG9jYXRp
b24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guYmFzZWxpbmUubWV0aG9kQ2hl
Y2tQdXRGdW5jdGlvbiksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7Ci0g
ICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKHJldHVybkFkZHJlc3MsIEZ1
bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfbWV0aG9kX2NoZWNrX3VwZGF0ZSkpOwotfQotCiBi
b29sIEpJVDo6aXNEaXJlY3RQdXRCeUlkKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKIHsK
ICAgICBzd2l0Y2ggKHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTMzNDMwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTIsMTc4ICsx
NTEyLDYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oSlNPYmplY3QqLCBvcF9wdXRfYgogICAgIHJl
dHVybiBiYXNlOwogfQogCi1ERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3Bf
Z2V0X2J5X2lkX21ldGhvZF9jaGVjaykKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3Rh
Y2tGcmFtZSk7Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZy
YW1lOwotICAgIElkZW50aWZpZXImIGlkZW50ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmlkZW50aWZp
ZXIoKTsKLQotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gc3RhY2tGcmFtZS5jYWxsRnJhbWUt
PmNvZGVCbG9jaygpOwotICAgIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9kQ2FsbExpbmtJbmZv
ID0gY29kZUJsb2NrLT5nZXRNZXRob2RDYWxsTGlua0luZm8oU1RVQl9SRVRVUk5fQUREUkVTUyk7
Ci0gICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gY29kZUJsb2NrLT5nZXRTdHViSW5m
byhTVFVCX1JFVFVSTl9BRERSRVNTKTsKLSAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0
aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKTsKLQotICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKLSAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChiYXNlVmFsdWUpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChj
YWxsRnJhbWUsIGlkZW50LCBzbG90KTsKLSAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7Ci0gICAg
Ci0gICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8u
YWNjZXNzVHlwZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLQot
ICAgIGlmICghbWV0aG9kQ2FsbExpbmtJbmZvLnNlZW5PbmNlKCkpIHsKLSAgICAgICAgbWV0aG9k
Q2FsbExpbmtJbmZvLnNldFNlZW4oKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwotICAgIH0KLQotICAgIC8vIElmIHdlIHN1Y2Nlc3NmdWxseSBnb3Qgc29tZXRoaW5n
LCB0aGVuIHRoZSBiYXNlIGZyb20gd2hpY2ggaXQgaXMgYmVpbmcgYWNjZXNzZWQgbXVzdAotICAg
IC8vIGJlIGFuIG9iamVjdC4gIChBc3NlcnRpb24gdG8gZW5zdXJlIGFzT2JqZWN0KCkgY2FsbCBi
ZWxvdyBpcyBzYWZlLCB3aGljaCBjb21lcyBhZnRlcgotICAgIC8vIGFuIGlzQ2FjaGVhYmxlKCkg
Y2hjZWNrLgotICAgIEFTU0VSVCghc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgfHwgc2xvdC5zbG90
QmFzZSgpLmlzT2JqZWN0KCkpOwotCi0gICAgLy8gQ2hlY2sgdGhhdDoKLSAgICAvLyAgICogV2Un
cmUgZGVhbGluZyB3aXRoIGEgSlNDZWxsLAotICAgIC8vICAgKiB0aGUgcHJvcGVydHkgaXMgY2Fj
aGFibGUsCi0gICAgLy8gICAqIGl0J3Mgbm90IGEgZGljdGlvbmFyeQotICAgIC8vICAgKiB0aGVy
ZSBpcyBhIGZ1bmN0aW9uIGNhY2hlZC4KLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKLSAgICBK
U0NlbGwqIHNwZWNpZmljOwotICAgIEpTT2JqZWN0KiBzbG90QmFzZU9iamVjdDsKLSAgICBpZiAo
YmFzZVZhbHVlLmlzQ2VsbCgpCi0gICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpCi0g
ICAgICAgICYmICEoc3RydWN0dXJlID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSkt
PmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKLSAgICAgICAgJiYgKHNsb3RCYXNlT2JqZWN0ID0g
YXNPYmplY3Qoc2xvdC5zbG90QmFzZSgpKSktPmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShjYWxs
RnJhbWUsIGlkZW50LCBzcGVjaWZpYykKLSAgICAgICAgJiYgc3BlY2lmaWMKLSAgICAgICAgKSB7
Ci0KLSAgICAgICAgSlNPYmplY3QqIGNhbGxlZSA9IGFzT2JqZWN0KHNwZWNpZmljKTsKLQotICAg
ICAgICAvLyBTaW5jZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBpdCdz
IGEgZ29vZCBiZXQgdGhhdCBpdAotICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMg
YSBkaWN0aW9uYXJ5LgotICAgICAgICBpZiAoc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5p
c0RpY3Rpb25hcnkoKSkKLSAgICAgICAgICAgIHNsb3RCYXNlT2JqZWN0LT5mbGF0dGVuRGljdGlv
bmFyeU9iamVjdChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSk7Ci0KLSAgICAgICAgLy8gVGhlIHJl
c3VsdCBmZXRjaGVkIHNob3VsZCBhbHdheXMgYmUgdGhlIGNhbGxlZSEKLSAgICAgICAgQVNTRVJU
KHJlc3VsdCA9PSBKU1ZhbHVlKGNhbGxlZSkpOwotCi0gICAgICAgIC8vIENoZWNrIHRvIHNlZSBp
ZiB0aGUgZnVuY3Rpb24gaXMgb24gdGhlIG9iamVjdCdzIHByb3RvdHlwZS4gIFBhdGNoIHVwIHRo
ZSBjb2RlIHRvIG9wdGltaXplLgotICAgICAgICBpZiAoc2xvdC5zbG90QmFzZSgpID09IHN0cnVj
dHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSkpIHsKLSAgICAgICAgICAgIEpJVDo6
cGF0Y2hNZXRob2RDYWxsUHJvdG8oY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jaywg
bWV0aG9kQ2FsbExpbmtJbmZvLCBzdHViSW5mbywgY2FsbGVlLCBzdHJ1Y3R1cmUsIHNsb3RCYXNl
T2JqZWN0LCBTVFVCX1JFVFVSTl9BRERSRVNTKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIENoZWNrIHRvIHNlZSBp
ZiB0aGUgZnVuY3Rpb24gaXMgb24gdGhlIG9iamVjdCBpdHNlbGYuCi0gICAgICAgIC8vIFNpbmNl
IHdlIGdlbmVyYXRlIHRoZSBtZXRob2QtY2hlY2sgdG8gY2hlY2sgYm90aCB0aGUgc3RydWN0dXJl
IGFuZCBhIHByb3RvdHlwZS1zdHJ1Y3R1cmUgKHNpbmNlIHRoaXMKLSAgICAgICAgLy8gaXMgdGhl
IGNvbW1vbiBjYXNlKSB3ZSBoYXZlIGEgcHJvYmxlbSAtIHdlIG5lZWQgdG8gcGF0Y2ggdGhlIHBy
b3RvdHlwZSBzdHJ1Y3R1cmUgY2hlY2sgdG8gZG8gc29tZXRoaW5nCi0gICAgICAgIC8vIHVzZWZ1
bC4gIFdlIGNvdWxkIHRyeSB0byBub3AgaXQgb3V0IGFsdG9nZXRoZXIsIGJ1dCB0aGF0J3MgYSBs
aXR0bGUgbWVzc3ksIHNvIGxldHMgZG8gc29tZXRoaW5nIHNpbXBsZXIKLSAgICAgICAgLy8gZm9y
IG5vdy4gIEZvciBub3cgaXQgcGVyZm9ybXMgYSBjaGVjayBvbiBhIHNwZWNpYWwgb2JqZWN0IG9u
IHRoZSBnbG9iYWwgb2JqZWN0IG9ubHkgdXNlZCBmb3IgdGhpcwotICAgICAgICAvLyBwdXJwb3Nl
LiAgVGhlIG9iamVjdCBpcyBpbiBubyB3YXkgZXhwb3NlZCwgYW5kIGFzIHN1Y2ggdGhlIGNoZWNr
IHdpbGwgYWx3YXlzIHBhc3MuCi0gICAgICAgIGlmIChzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZh
bHVlKSB7Ci0gICAgICAgICAgICBKSVQ6OnBhdGNoTWV0aG9kQ2FsbFByb3RvKGNhbGxGcmFtZS0+
Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2ssIG1ldGhvZENhbGxMaW5rSW5mbywgc3R1YkluZm8sIGNh
bGxlZSwgc3RydWN0dXJlLCBjYWxsRnJhbWUtPnNjb3BlKCktPmdsb2JhbE9iamVjdCgpLT5tZXRo
b2RDYWxsRHVtbXkoKSwgU1RVQl9SRVRVUk5fQUREUkVTUyk7Ci0gICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBSZXZl
cnQgdGhlIGdldF9ieV9pZCBvcCBiYWNrIHRvIGJlaW5nIGEgcmVndWxhciBnZXRfYnlfaWQgLSBh
bGxvdyBpdCB0byBjYWNoZSBsaWtlIG5vcm1hbCwgaWYgaXQgbmVlZHMgdG8uCi0gICAgY3RpUGF0
Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNvZGVCbG9jaywgU1RVQl9SRVRVUk5fQUREUkVTUywgRnVu
Y3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKLX0KLQotREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dl
dF9ieV9pZF9tZXRob2RfY2hlY2tfdXBkYXRlKQotewotICAgIFNUVUJfSU5JVF9TVEFDS19GUkFN
RShzdGFja0ZyYW1lKTsKLQotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5j
YWxsRnJhbWU7Ci0gICAgSWRlbnRpZmllciYgaWRlbnQgPSBzdGFja0ZyYW1lLmFyZ3NbMV0uaWRl
bnRpZmllcigpOwotCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGFja0ZyYW1lLmNhbGxG
cmFtZS0+Y29kZUJsb2NrKCk7Ci0gICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsTGlu
a0luZm8gPSBjb2RlQmxvY2stPmdldE1ldGhvZENhbGxMaW5rSW5mbyhTVFVCX1JFVFVSTl9BRERS
RVNTKTsKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBjb2RlQmxvY2stPmdldFN0
dWJJbmZvKFNUVUJfUkVUVVJOX0FERFJFU1MpOwotICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOwotCi0gICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwotICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUu
Z2V0KGNhbGxGcmFtZSwgaWRlbnQsIHNsb3QpOwotICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsK
LSAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHVi
SW5mby5hY2Nlc3NUeXBlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwotCi0gICAgQVNTRVJUKG1ldGhvZENhbGxMaW5rSW5mby5zZWVuT25jZSgpKTsKLQotICAgIC8v
IElmIHdlIHN1Y2Nlc3NmdWxseSBnb3Qgc29tZXRoaW5nLCB0aGVuIHRoZSBiYXNlIGZyb20gd2hp
Y2ggaXQgaXMgYmVpbmcgYWNjZXNzZWQgbXVzdAotICAgIC8vIGJlIGFuIG9iamVjdC4gIChBc3Nl
cnRpb24gdG8gZW5zdXJlIGFzT2JqZWN0KCkgY2FsbCBiZWxvdyBpcyBzYWZlLCB3aGljaCBjb21l
cyBhZnRlcgotICAgIC8vIGFuIGlzQ2FjaGVhYmxlKCkgY2hjZWNrLgotICAgIEFTU0VSVCghc2xv
dC5pc0NhY2hlYWJsZVZhbHVlKCkgfHwgc2xvdC5zbG90QmFzZSgpLmlzT2JqZWN0KCkpOwotCi0g
ICAgLy8gQ2hlY2sgdGhhdDoKLSAgICAvLyAgICogV2UncmUgZGVhbGluZyB3aXRoIGEgSlNDZWxs
LAotICAgIC8vICAgKiB0aGUgcHJvcGVydHkgaXMgY2FjaGFibGUsCi0gICAgLy8gICAqIGl0J3Mg
bm90IGEgZGljdGlvbmFyeQotICAgIC8vICAgKiB0aGVyZSBpcyBhIGZ1bmN0aW9uIGNhY2hlZC4K
LSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKLSAgICBKU0NlbGwqIHNwZWNpZmljOwotICAgIEpT
T2JqZWN0KiBzbG90QmFzZU9iamVjdDsKLSAgICBpZiAoIShiYXNlVmFsdWUuaXNDZWxsKCkKLSAg
ICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKQotICAgICAgICAgICYmICEoc3RydWN0
dXJlID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSktPmlzVW5jYWNoZWFibGVEaWN0
aW9uYXJ5KCkKLSAgICAgICAgICAmJiAoc2xvdEJhc2VPYmplY3QgPSBhc09iamVjdChzbG90LnNs
b3RCYXNlKCkpKS0+Z2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKGNhbGxGcmFtZSwgaWRlbnQsIHNw
ZWNpZmljKQotICAgICAgICAgICYmIHNwZWNpZmljCi0gICAgICAgICAgKQotICAgICAgICB8fCAo
c2xvdC5zbG90QmFzZSgpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFt
ZSkKLSAgICAgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSAhPSBiYXNlVmFsdWUpKSB7Ci0gICAg
ICAgIC8vIFJldmVydCB0aGUgZ2V0X2J5X2lkIG9wIGJhY2sgdG8gYmVpbmcgYSByZWd1bGFyIGdl
dF9ieV9pZCAtIGFsbG93IGl0IHRvIGNhY2hlIGxpa2Ugbm9ybWFsLCBpZiBpdCBuZWVkcyB0by4K
LSAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNvZGVCbG9jaywgU1RVQl9SRVRV
Uk5fQUREUkVTUywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZCkpOwotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0gICAgfQotICAgIAotICAgIC8vIE5vdyBjaGVj
ayBpZiB0aGUgc2l0dWF0aW9uIGhhcyBjaGFuZ2VkIHN1ZmZpY2llbnRseSB0aGF0IHdlIHNob3Vs
ZCBiYWlsIG91dCBvZgotICAgIC8vIGRvaW5nIG1ldGhvZF9jaGVjayBvcHRpbWl6YXRpb25zIGVu
dGlyZWx5LCBvciBpZiBpdCBjaGFuZ2VkIG9ubHkgc2xpZ2h0bHksIGluCi0gICAgLy8gd2hpY2gg
Y2FzZSB3ZSBjYW4ganVzdCByZXBhdGNoLgotICAgIAotICAgIEpTVmFsdWUgcHJvdG8gPSBzdHJ1
Y3R1cmUtPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpOwotICAgIAotICAgIGJvb2wgcHJl
dmlvdXNXYXNQcm90byA9IG1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRQcm90b3R5cGUuZ2V0KCkg
IT0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+bWV0aG9kQ2FsbER1bW15KCk7Ci0gICAgYm9v
bCBjdXJyZW50SXNQcm90byA9IHNsb3Quc2xvdEJhc2UoKSA9PSBwcm90bzsKLSAgICAKLSAgICBK
U09iamVjdCogY2FsbGVlID0gYXNPYmplY3Qoc3BlY2lmaWMpOwotICAgIAotICAgIGlmIChwcmV2
aW91c1dhc1Byb3RvICE9IGN1cnJlbnRJc1Byb3RvCi0gICAgICAgIHx8ICFzdHJ1Y3R1cmUtPnRy
YW5zaXRpdmVseVRyYW5zaXRpb25lZEZyb20obWV0aG9kQ2FsbExpbmtJbmZvLmNhY2hlZFN0cnVj
dHVyZS5nZXQoKSkKLSAgICAgICAgfHwgKHByZXZpb3VzV2FzUHJvdG8gJiYgIXNsb3RCYXNlT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+dHJhbnNpdGl2ZWx5VHJhbnNpdGlvbmVkRnJvbShtZXRob2RDYWxs
TGlua0luZm8uY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlLmdldCgpKSkKLSAgICAgICAgfHwgc3Bl
Y2lmaWMgIT0gbWV0aG9kQ2FsbExpbmtJbmZvLmNhY2hlZEZ1bmN0aW9uLmdldCgpKSB7Ci0gICAg
ICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjb2RlQmxvY2ssIFNUVUJfUkVUVVJOX0FE
RFJFU1MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWQpKTsKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwotICAgIH0KLSAgICAKLSAgICAvLyBJdCBtYWtlcyBzZW5z
ZSB0byBzaW1wbHkgcmVwYXRjaCB0aGUgbWV0aG9kX2NoZWNrLgotICAgIAotICAgIC8vIFNpbmNl
IHdlJ3JlIGFjY2Vzc2luZyBhIHByb3RvdHlwZSBpbiBhIGxvb3AsIGl0J3MgYSBnb29kIGJldCB0
aGF0IGl0Ci0gICAgLy8gc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEgZGljdGlvbmFyeS4KLSAg
ICBpZiAoc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKLSAgICAg
ICAgc2xvdEJhc2VPYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+Z2xv
YmFsRGF0YSgpKTsKLSAgICAKLSAgICAvLyBUaGUgcmVzdWx0IGZldGNoZWQgc2hvdWxkIGFsd2F5
cyBiZSB0aGUgY2FsbGVlIQotICAgIEFTU0VSVChyZXN1bHQgPT0gSlNWYWx1ZShjYWxsZWUpKTsK
LSAgICAKLSAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGZ1bmN0aW9uIGlzIG9uIHRoZSBvYmpl
Y3QncyBwcm90b3R5cGUuIFBhdGNoIHVwIHRoZSBjb2RlIHRvIG9wdGltaXplLgotICAgIGlmIChz
bG90LnNsb3RCYXNlKCkgPT0gcHJvdG8pIHsKLSAgICAgICAgSklUOjpwYXRjaE1ldGhvZENhbGxQ
cm90byhjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLCBtZXRob2RDYWxsTGlua0lu
Zm8sIHN0dWJJbmZvLCBjYWxsZWUsIHN0cnVjdHVyZSwgc2xvdEJhc2VPYmplY3QsIFNUVUJfUkVU
VVJOX0FERFJFU1MpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0g
ICAgfQotICAgIAotICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKTsKLSAg
ICAKLSAgICAvLyBTaW5jZSB3ZSBnZW5lcmF0ZSB0aGUgbWV0aG9kLWNoZWNrIHRvIGNoZWNrIGJv
dGggdGhlIHN0cnVjdHVyZSBhbmQgYSBwcm90b3R5cGUtc3RydWN0dXJlIChzaW5jZSB0aGlzCi0g
ICAgLy8gaXMgdGhlIGNvbW1vbiBjYXNlKSB3ZSBoYXZlIGEgcHJvYmxlbSAtIHdlIG5lZWQgdG8g
cGF0Y2ggdGhlIHByb3RvdHlwZSBzdHJ1Y3R1cmUgY2hlY2sgdG8gZG8gc29tZXRoaW5nCi0gICAg
Ly8gdXNlZnVsLiBXZSBjb3VsZCB0cnkgdG8gbm9wIGl0IG91dCBhbHRvZ2V0aGVyLCBidXQgdGhh
dCdzIGEgbGl0dGxlIG1lc3N5LCBzbyBsZXRzIGRvIHNvbWV0aGluZyBzaW1wbGVyCi0gICAgLy8g
Zm9yIG5vdy4gRm9yIG5vdyBpdCBwZXJmb3JtcyBhIGNoZWNrIG9uIGEgc3BlY2lhbCBvYmplY3Qg
b24gdGhlIGdsb2JhbCBvYmplY3Qgb25seSB1c2VkIGZvciB0aGlzCi0gICAgLy8gcHVycG9zZS4g
VGhlIG9iamVjdCBpcyBpbiBubyB3YXkgZXhwb3NlZCwgYW5kIGFzIHN1Y2ggdGhlIGNoZWNrIHdp
bGwgYWx3YXlzIHBhc3MuCi0gICAgSklUOjpwYXRjaE1ldGhvZENhbGxQcm90byhjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLCBtZXRob2RDYWxsTGlua0luZm8sIHN0dWJJbmZvLCBj
YWxsZWUsIHN0cnVjdHVyZSwgY2FsbEZyYW1lLT5zY29wZSgpLT5nbG9iYWxPYmplY3QoKS0+bWV0
aG9kQ2FsbER1bW15KCksIFNUVUJfUkVUVVJOX0FERFJFU1MpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKLX0KLQogREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFs
dWUsIG9wX2dldF9ieV9pZCkKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFt
ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCShyZXZpc2lvbiAxMzM0
MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2NSw4ICszNjUsNiBAQCBleHRlcm4gIkMiIHsKICAgICBFbmNvZGVkSlNWYWx1ZSBK
SVRfU1RVQiBjdGlfb3BfZ2V0X2J5X2lkX2N1c3RvbV9zdHViKFNUVUJfQVJHU19ERUNMQVJBVElP
TikgV1RGX0lOVEVSTkFMOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9nZXRf
YnlfaWRfZ2VuZXJpYyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAgICBF
bmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfZ2V0X2J5X2lkX2dldHRlcl9zdHViKFNUVUJf
QVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9T
VFVCIGN0aV9vcF9nZXRfYnlfaWRfbWV0aG9kX2NoZWNrKFNUVUJfQVJHU19ERUNMQVJBVElPTikg
V1RGX0lOVEVSTkFMOwotICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9nZXRfYnlf
aWRfbWV0aG9kX2NoZWNrX3VwZGF0ZShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5B
TDsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2Zh
aWwoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiAgICAgRW5jb2RlZEpTVmFs
dWUgSklUX1NUVUIgY3RpX29wX2dldF9ieV9pZF9wcm90b19saXN0KFNUVUJfQVJHU19ERUNMQVJB
VElPTikgV1RGX0lOVEVSTkFMOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9n
ZXRfYnlfaWRfcHJvdG9fbGlzdF9mdWxsKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVS
TkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTMzNDMwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAz
LDEyICsxMjAzLDYgQEAgX2xsaW50X29wX3N0cmNhdDoKICAgICBkaXNwYXRjaCg0KQogCiAKLV9s
bGludF9vcF9tZXRob2RfY2hlY2s6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgICMgV2UgaWdu
b3JlIG1ldGhvZCBjaGVja3MgYW5kIHVzZSBub3JtYWwgZ2V0X2J5X2lkIG9wdGltaXphdGlvbnMu
Ci0gICAgZGlzcGF0Y2goMSkKLQotCiBfbGxpbnRfb3BfZ2V0X3BuYW1lczoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X3BuYW1lcykK
</data>
<flag name="commit-queue"
          id="186524"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172281</attachid>
            <date>2012-11-05 00:31:15 -0800</date>
            <delta_ts>2012-11-05 09:00:15 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>killmethodcheck.patch</filename>
            <type>text/plain</type>
            <size>75539</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMzNDQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc4IEBA
CisyMDEyLTExLTA1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
R2V0IHJpZCBvZiBtZXRob2RfY2hlY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMTE0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIG9wX21ldGhvZF9jaGVjayBubyBsb25nZXIgYnV5cyB1cyBhbnl0aGlu
Zywgc2luY2UgZ2V0X2J5X2lkIHByb3RvIGNhY2hpbmcKKyAgICAgICAgZ2l2ZXMganVzdCBhcyBt
dWNoIHByb2ZpbGluZyBpbmZvcm1hdGlvbiBhbmQgdGhlIERGRyBpbmxpbmVzIG1vbm9tb3JwaGlj
CisgICAgICAgIHByb3RvIGFjY2Vzc2VzIGFueXdheS4KKyAgICAgICAgCisgICAgICAgIFRoaXMg
YWxzbyBoYXMgdGhlIHBvdGVudGlhbCBmb3IgYSBzcGVlZC11cCBzaW5jZSBpdCBtYWtlcyBwYXJz
aW5nIG9mCisgICAgICAgIHByb2ZpbGluZyBkYXRhIGVhc2llci4gTm8gbG9uZ2VyIGRvIHdlIGhh
dmUgdG8gZGVhbCB3aXRoIHRoZSBjb25mdXNpb24gb2YKKyAgICAgICAgdGhlIGdldF9ieV9pZCBw
b3J0aW9uIG9mIGEgbWV0aG9kX2NoZWNrIGFwcGVhcmluZyBtb25vbW9ycGhpYyBldmVuIHRob3Vn
aAorICAgICAgICB3ZSdyZSByZWFsbHkgZGVhbGluZyB3aXRoIGEgYmltb3JwaGljIGFjY2VzcyAo
bWV0aG9kX2NoZWNrIHNwZWNpYWxpemVzIGZvcgorICAgICAgICBvbmUgY2FzZSBhbmQgZ2V0X2J5
X2lkIGZvciBhbm90aGVyKS4KKworICAgICAgICBUaGlzIGxvb2tzIGxpa2UgYSAxJSBzcGVlZC11
cCBvbiBib3RoIFN1blNwaWRlciBhbmQgVjh2Ny4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRh
cmdldC5wcmk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNocmlua1RvRml0KToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtDYWxscyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0Q2FsbExpbmtJbmZvKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjYWxsTGlua0luZm8pOgorICAgICAgICAoQ29kZUJsb2Nr
KToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0
aG9kQ2FsbExpbmtJbmZvLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RD
YWxsTGlua0luZm8uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RDYWxsTGlu
a1N0YXR1cy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtT
dGF0dXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoQnl0ZWNvZGVHZW5lcmF0
b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U3R1
YkNvbXBpbGF0aW9uSW5mbzo6Y29weVRvU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5U3R1YkNvbXBpbGF0aW9uSW5mbzo6c2xvd0Nhc2VJbmZvKToKKyAgICAgICAgKFByb3BlcnR5
U3R1YkNvbXBpbGF0aW9uSW5mbyk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSklUKToKKyAg
ICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmNvbXBpbGVHZXRCeUlkU2xvd0Nhc2UpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUdl
dEJ5SWRTbG93Q2FzZSk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc206CisKIDIwMTItMTEtMDMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBCYXNlbGluZSBKSVQgc2hvdWxkIHVzZSBzdHJ1Y3R1cmUgd2F0Y2hw
b2ludHMgd2hlbmV2ZXIgcG9zc2libGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDEzMzQzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksNiBAQCBTRVQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCiAgICAgYnl0ZWNvZGUv
SnVtcFRhYmxlLmNwcAogICAgIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAot
ICAgIGJ5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5jcHAKLSAgICBieXRlY29kZS9NZXRob2RD
YWxsTGlua1N0YXR1cy5jcHAKICAgICBieXRlY29kZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9m
aWxlLmNwcAogICAgIGJ5dGVjb2RlL09wY29kZS5jcHAKICAgICBieXRlY29kZS9Qb2x5bW9ycGhp
Y1B1dEJ5SWRMaXN0LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHJldmlzaW9uIDEzMzQzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsMTAgKzExNCw2IEBAIGphdmFz
Y3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9M
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTGluZUluZm8uaCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01l
dGhvZENhbGxMaW5rSW5mby5jcHAgXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RDYWxsTGlua0luZm8uaCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01l
dGhvZENhbGxMaW5rU3RhdHVzLmNwcCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZENhbGxMaW5rU3RhdHVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9NZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Rh
cmdldC5wcmkJKHJldmlzaW9uIDEzMzQzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC01OSw4ICs1OSw2IEBAIFNPVVJDRVMgKz0gXAogICAg
IGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwIFwKICAgICBieXRlY29kZS9KdW1wVGFibGUuY3Bw
IFwKICAgICBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgXAotICAgIGJ5dGVj
b2RlL01ldGhvZENhbGxMaW5rSW5mby5jcHAgXAotICAgIGJ5dGVjb2RlL01ldGhvZENhbGxMaW5r
U3RhdHVzLmNwcCBcCiAgICAgYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5j
cHAgXAogICAgIGJ5dGVjb2RlL09wY29kZS5jcHAgXAogICAgIGJ5dGVjb2RlL1BvbHltb3JwaGlj
UHV0QnlJZExpc3QuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMzM0MzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY3OCwyMiArMTY3OCw2IEBA
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGJ5
dGVjb2RlXE1ldGhvZENhbGxMaW5rSW5mby5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZp
bGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXE1ldGhvZENhbGxMaW5rSW5mby5o
IgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxi
eXRlY29kZVxNZXRob2RDYWxsTGlua1N0YXR1cy5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJ
PEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXE1ldGhvZENhbGxMaW5rU3Rh
dHVzLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XC4uXGJ5dGVjb2RlXE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIgogCQkJCT4KIAkJ
CTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzM0
MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjksOCArNjksNiBAQAogCQkwRjBCODNB
RDE0QkNGNjA0MDA4ODVCNEYgLyogTGluZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0FDMTRCQ0Y2MDIwMDg4NUI0RiAvKiBMaW5lSW5m
by5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
MEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQUUxNEJDRjcxNDAwODg1QjRG
IC8qIENhbGxMaW5rSW5mby5jcHAgKi87IH07CiAJCTBGMEI4M0IxMTRCQ0Y3MTgwMDg4NUI0RiAv
KiBDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjBCODNCNDE0QkNG
ODYwMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0IyMTRCQ0Y4NUUwMDg4NUI0RiAvKiBN
ZXRob2RDYWxsTGlua0luZm8uY3BwICovOyB9OwotCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYg
LyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJ
bmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zm
c2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBC
ODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBD
RDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBDRDRDMDE1RjFBNjA0MDAzMkYx
QzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQ0Q0QzQxNUY2QjZCQjAwMzJGMUMwIC8qIFNwYXJzZUFy
cmF5VmFsdWVNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYwQ0Q0QzMxNUY2QjZCNTAwMzJGMUMwIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuY3Bw
ICovOyB9OwpAQCAtMTc4LDggKzE3Niw2IEBACiAJCTBGOTMzMjlFMTRDQTdEQzUwMDg1RjNDNiAv
KiBDYWxsTGlua1N0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5MzMyOUYx
NENBN0RDQTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2IC8qIEdl
dEJ5SWRTdGF0dXMuY3BwICovOyB9OwogCQkwRjkzMzJBMDE0Q0E3RENEMDA4NUYzQzYgLyogR2V0
QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY5MzMyOTYxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjkzMzJBMTE0Q0E3REQx
MDA4NUYzQzYgLyogTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzMyOTcxNENBN0RDMTAwODVGM0M2IC8qIE1l
dGhvZENhbGxMaW5rU3RhdHVzLmNwcCAqLzsgfTsKLQkJMEY5MzMyQTIxNENBN0REMzAwODVGM0M2
IC8qIE1ldGhvZENhbGxMaW5rU3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjkzMzI5ODE0Q0E3REMxMDA4NUYzQzYgLyogTWV0aG9kQ2FsbExp
bmtTdGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjkzMzJBMzE0Q0E3REQ3MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMzI5OTE0Q0E3REMx
MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5jcHAgKi87IH07CiAJCTBGOTMzMkE0MTRDQTdERDkw
MDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjkzMzI5QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
OTMzMkE1MTRDQTdEREQwMDg1RjNDNiAvKiBTdHJ1Y3R1cmVTZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMzMjlCMTRDQTdEQzEwMDg1RjNDNiAv
KiBTdHJ1Y3R1cmVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtODUzLDggKzg0OSw2IEBACiAJCTBGMEI4M0FDMTRCQ0Y2MDIwMDg4NUI0RiAv
KiBMaW5lSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lSW5mby5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBRTE0QkNGNzE0MDA4ODVCNEYg
LyogQ2FsbExpbmtJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENhbGxMaW5rSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0FG
MTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGMEI4M0IyMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWV0aG9kQ2FsbExpbmtJbmZvLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8q
IE1ldGhvZENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZXRob2RDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgz
QjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxSZXR1cm5PZmZzZXRUb0J5dGVj
b2RlT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMENENEMwMTVGMUE2
MDQwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUHV0RGlyZWN0SW5kZXhNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMENENEMzMTVGNkI2QjUwMDMyRjFDMCAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwYXJzZUFycmF5VmFsdWVN
YXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTYzLDggKzk1Nyw2IEBACiAJ
CTBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsTGlua1N0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjkzMzI5NTE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZXRCeUlkU3RhdHVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzMyOTYxNENBN0RDMTAwODVGM0M2
IC8qIEdldEJ5SWRTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2V0
QnlJZFN0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjkzMzI5NzE0Q0E3
REMxMDA4NUYzQzYgLyogTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkwRjkzMzI5ODE0Q0E3REMxMDA4NUYzQzYgLyogTWV0aG9kQ2Fs
bExpbmtTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9kQ2Fs
bExpbmtTdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzMyOTkxNENB
N0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHV0QnlJZFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGOTMzMjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dEJ5SWRTdGF0dXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzMyOUIxNENBN0RDMTAwODVGM0M2IC8qIFN0cnVjdHVyZVNl
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVTZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MTgsMTQgKzI1MTAsNiBAQAogCQkJCTBGMEI4
M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLywKIAkJCQkwRjkzMzI5MzE0
Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovLAogCQkJCTBGOTMzMjk0MTRD
QTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oICovLAotCQkJCTBGOTMzMjk1MTRDQTdE
QzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLywKLQkJCQkwRjkzMzI5NjE0Q0E3REMx
MDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5oICovLAotCQkJCTBGOTMzMjk3MTRDQTdEQzEwMDg1
RjNDNiAvKiBNZXRob2RDYWxsTGlua1N0YXR1cy5jcHAgKi8sCi0JCQkJMEY5MzMyOTgxNENBN0RD
MTAwODVGM0M2IC8qIE1ldGhvZENhbGxMaW5rU3RhdHVzLmggKi8sCi0JCQkJMEY5MzMyOTkxNENB
N0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuY3BwICovLAotCQkJCTBGOTMzMjlBMTRDQTdE
QzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8sCi0JCQkJQTdBRkMxNzcxNUY3RUZFMzAw
NDhGNTdCIC8qIFJlc29sdmVPcGVyYXRpb24uaCAqLywKLQkJCQkwRjkzMzI5QjE0Q0E3REMxMDA4
NUYzQzYgLyogU3RydWN0dXJlU2V0LmggKi8sCiAJCQkJMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRG
IC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8sCiAJCQkJOTY5QTA3OTAw
RUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5jcHAgKi8sCiAJCQkJOTY5QTA3OTEwRUQxRDNB
RTAwRjFGNjgxIC8qIENvZGVCbG9jay5oICovLApAQCAtMjU0OSwxMCArMjUzMyw2IEBACiAJCQkJ
MEZCNTQ2NzYxNEY1OUFEMTAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggKi8s
CiAJCQkJMEYwQjgzQUMxNEJDRjYwMjAwODg1QjRGIC8qIExpbmVJbmZvLmggKi8sCiAJCQkJMEYw
RkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8sCi0JCQkJMEYw
QjgzQjIxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5jcHAgKi8sCi0JCQkJ
MEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovLAotCQkJ
CTBGOTMzMjk3MTRDQTdEQzEwMDg1RjNDNiAvKiBNZXRob2RDYWxsTGlua1N0YXR1cy5jcHAgKi8s
Ci0JCQkJMEY5MzMyOTgxNENBN0RDMTAwODVGM0M2IC8qIE1ldGhvZENhbGxMaW5rU3RhdHVzLmgg
Ki8sCiAJCQkJMEZCNTQ2N0MxNEY1Q0ZEMzAwMkMyOTg5IC8qIE1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUuY3BwICovLAogCQkJCTBGQjU0NjdBMTRGNUM3RDQwMDJDMjk4OSAvKiBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlLmggKi8sCiAJCQkJOTY5QTA3OTQwRUQxRDNBRTAwRjFGNjgx
IC8qIE9wY29kZS5jcHAgKi8sCkBAIC0yNTY1LDYgKzI1NDUsNyBAQAogCQkJCTBGOUZDOEMxMTRF
MUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCiAJCQkJMEZGNDI3NkUxNTkyNzVEMjAwNENC
OUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwICovLAogCQkJCTBGRjQyNzZGMTU5Mjc1RDIw
MDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmggKi8sCisJCQkJQTdBRkMxNzcxNUY3RUZF
MzAwNDhGNTdCIC8qIFJlc29sdmVPcGVyYXRpb24uaCAqLywKIAkJCQkxNDI5RDg4MzBFRDIxQzNE
MDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmNwcCAqLywKIAkJCQkxNDI5RDg4NDBFRDIxQzNEMDBC
ODk2MTkgLyogU2FtcGxpbmdUb29sLmggKi8sCiAJCQkJMEY1NTQxQUYxNjEzQzFGQjAwQ0UzRTI1
IC8qIFNwZWNpYWxQb2ludGVyLmNwcCAqLywKQEAgLTI1NzIsNiArMjU1Myw3IEBACiAJCQkJMEZE
ODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmNwcCAqLywKIAkJCQkwRkQ4
MkU0RjE0MURBRUExMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCAqLywKIAkJCQkwRjkzMzI5
QjE0Q0E3REMxMDA4NUYzQzYgLyogU3RydWN0dXJlU2V0LmggKi8sCisJCQkJMEY5MzMyOTUxNENB
N0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovLAogCQkJCTBGNzY2RDM2MTVBRTRB
MUEwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCAqLywKIAkJ
CQkwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5oICovLAogCQkJCUJDQ0YwRDBCMEVGMEI4QTUwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHVi
SW5mby5jcHAgKi8sCkBAIC0yNTgxLDYgKzI1NjMsMTAgQEAKIAkJCQkwRjQyNkE0NjE0NjBDQkFC
MDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi8sCiAJCQkJMEY5MTlEMjIxNTg1M0NERTAw
NEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwICovLAogCQkJCTBGOTE5RDIzMTU4NTNDREUwMDRBNEU3
RCAvKiBXYXRjaHBvaW50LmggKi8sCisJCQkJMEY5MzMyOTYxNENBN0RDMTAwODVGM0M2IC8qIEdl
dEJ5SWRTdGF0dXMuaCAqLywKKwkJCQkwRjkzMzI5OTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJ
ZFN0YXR1cy5jcHAgKi8sCisJCQkJMEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRT
dGF0dXMuaCAqLywKKwkJCQkwRjkzMzI5QjE0Q0E3REMxMDA4NUYzQzYgLyogU3RydWN0dXJlU2V0
LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGJ5dGVjb2RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTI4OTksNyArMjg4NSw2IEBACiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRG
IC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FEMTRC
Q0Y2MDQwMDg4NUI0RiAvKiBMaW5lSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjEx
NEJDRjcxODAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYw
QjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5
dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODEx
NTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjY4MTRC
RTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjkxMyw3ICsy
ODk4LDYgQEAKIAkJCQkwRjdCMjk0RDE0QzNDRDRDMDA3QzNEQjEgLyogREZHQ29tbW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjkzMzI5RTE0Q0E3REM1MDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0
dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkEwMTRDQTdEQ0QwMDg1RjNDNiAvKiBHZXRC
eUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjkzMzJBMjE0Q0E3REQzMDA4NUYzQzYg
LyogTWV0aG9kQ2FsbExpbmtTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRD
QTdERDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkz
MzJBNTE0Q0E3REREMDA4NUYzQzYgLyogU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zNTA3LDEwICszNDkxLDggQEAKIAkJCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyog
TExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBCODM5QzE0QkNGNDYz
MDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjAx
NEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkw
RjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGOTMzMjlEMTRDQTdEQzMwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkzMzI5RjE0Q0E3RENBMDA4NUYzQzYgLyogR2V0QnlJ
ZFN0YXR1cy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjkzMzJBMTE0Q0E3REQxMDA4NUYzQzYg
LyogTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MzMyQTMx
NENBN0RENzAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY1NUYwRjQxNEQxMDYzOTAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODZCNTgyNjcxNEQyNzk2QzAwQTlDMzA2IC8qIENvZGVQcm9maWxlLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAJKHJldmlzaW9uIDEzMzQzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVk
ZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTG93TGV2
ZWxJbnRlcnByZXRlci5oIgotI2luY2x1ZGUgIk1ldGhvZENhbGxMaW5rU3RhdHVzLmgiCiAjaW5j
bHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lTWV0aG9k
cy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0yODMsOSArMjgyLDYgQEAgdm9pZCBDb2RlQmxv
Y2s6OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKAogewogICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBsb2NhdGlvbjsKIAotICAgIGlmIChleGVj
LT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0g
b3BfbWV0aG9kX2NoZWNrKQotICAgICAgICBpbnN0cnVjdGlvbisrOwotICAgIAogICAgIElkZW50
aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAg
IAogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7IC8vIHRlbGwgdGhlIGNvbXBpbGVyIHRvIHNodXQg
dXAgaW4gY2VydGFpbiBwbGF0Zm9ybSBjb25maWd1cmF0aW9ucy4KQEAgLTEwMTcsNDIgKzEwMTMs
NiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAg
ICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX21ldGhvZF9jaGVjazogewotICAgICAg
ICAgICAgZGF0YUxvZygiWyU0ZF0gbWV0aG9kX2NoZWNrIiwgbG9jYXRpb24pOwotI2lmIEVOQUJM
RShKSVQpCi0gICAgICAgICAgICBpZiAobnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKCkpIHsK
LSAgICAgICAgICAgICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGwgPSBnZXRNZXRo
b2RDYWxsTGlua0luZm8obG9jYXRpb24pOwotICAgICAgICAgICAgICAgIGRhdGFMb2coIiBqaXQo
Iik7Ci0gICAgICAgICAgICAgICAgaWYgKCFtZXRob2RDYWxsLnNlZW4pCi0gICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIm5vdCBzZWVuIik7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgZmFjdCB0aGF0IE1ldGhvZENhbGxMaW5rU3RhdHVz
IGFscmVhZHkgZG9lcyBzbWFydCB0aGluZ3MKLSAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGRl
Y29kaW5nIHNlZW4gbWV0aG9kIGNhbGxzLgotICAgICAgICAgICAgICAgICAgICBNZXRob2RDYWxs
TGlua1N0YXR1cyBzdGF0dXMgPSBNZXRob2RDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcih0aGlz
LCBsb2NhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghc3RhdHVzKQotICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygibm90IHNldCIpOwotICAgICAgICAgICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coImZ1bmN0aW9uID0gJXAgKGV4
ZWN1dGFibGUgPSAiLCBzdGF0dXMuZnVuY3Rpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBKU0NlbGwqIGZ1bmN0aW9uQXNDZWxsID0gZ2V0SlNGdW5jdGlvbihzdGF0dXMuZnVuY3Rpb24o
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnVuY3Rpb25Bc0NlbGwpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiJXAiLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1
bmN0aW9uQXNDZWxsKS0+ZXhlY3V0YWJsZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJOL0EiKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIiksIHN0cnVjdCA9ICVwIiwgc3RhdHVzLnN0cnVjdHVy
ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMubmVlZHNQcm90b3R5cGVD
aGVjaygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiwgcHJvdG90eXBl
ID0gJXAsIHN0cnVjdCA9ICVwIiwgc3RhdHVzLnByb3RvdHlwZSgpLCBzdGF0dXMucHJvdG90eXBl
U3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGRhdGFMb2coIikiKTsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotICAg
ICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwotICAgICAg
ICAgICAgKytpdDsKLSAgICAgICAgICAgIHByaW50R2V0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCk7Ci0gICAgICAgICAgICBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhleGVjLCBsb2NhdGlvbik7
Ci0gICAgICAgICAgICBkYXRhTG9nKCJcbiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6IHsKICAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CkBAIC0yMDYwLDM2ICsyMDIwLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRp
b25hbGx5KAogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXNldFN0dWJJbnRlcm5hbChyZXBh
dGNoQnVmZmVyLCBzdHViSW5mbyk7CiAgICAgICAgIH0KLQotICAgICAgICBmb3IgKHNpemVfdCBz
aXplID0gbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKLSAgICAgICAgICAgIGlmICghbV9tZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZFN0cnVj
dHVyZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgQVNTRVJUKG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5zZWVuT25jZSgpKTsKLSAgICAgICAg
ICAgIEFTU0VSVCghIW1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRQcm90b3R5cGVTdHJ1
Y3R1cmUpOwotCi0gICAgICAgICAgICBpZiAoIUhlYXA6OmlzTWFya2VkKG1fbWV0aG9kQ2FsbExp
bmtJbmZvc1tpXS5jYWNoZWRTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgICAgICAgICAgICAgfHwgIUhl
YXA6OmlzTWFya2VkKG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5jYWNoZWRQcm90b3R5cGVTdHJ1
Y3R1cmUuZ2V0KCkpCi0gICAgICAgICAgICAgICAgfHwgIUhlYXA6OmlzTWFya2VkKG1fbWV0aG9k
Q2FsbExpbmtJbmZvc1tpXS5jYWNoZWRGdW5jdGlvbi5nZXQoKSkKLSAgICAgICAgICAgICAgICB8
fCAhSGVhcDo6aXNNYXJrZWQobV9tZXRob2RDYWxsTGlua0luZm9zW2ldLmNhY2hlZFByb3RvdHlw
ZS5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKLSAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgbWV0aG9kIGNhbGwgaW4gJXAuXG4iLCB0
aGlzKTsKLSAgICAgICAgICAgICAgICBtX21ldGhvZENhbGxMaW5rSW5mb3NbaV0ucmVzZXQocmVw
YXRjaEJ1ZmZlciwgZ2V0SklUVHlwZSgpKTsKLQotICAgICAgICAgICAgICAgIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbyA9IGdldFN0dWJJbmZvKG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpXS5i
eXRlY29kZUluZGV4KTsKLQotICAgICAgICAgICAgICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOwotCi0gICAgICAg
ICAgICAgICAgaWYgKGFjY2Vzc1R5cGUgIT0gYWNjZXNzX3Vuc2V0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChpc0dldEJ5SWRBY2Nlc3MoYWNjZXNzVHlwZSkpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoZ2V0SklUQ29kZSgpLmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBERkc6OmRmZ1Jlc2V0R2V0QnlJRChyZXBhdGNoQnVmZmVy
LCBzdHViSW5mbyk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgICAgIEpJVDo6cmVzZXRQYXRjaEdldEJ5SWQocmVwYXRjaEJ1ZmZlciwgJnN0dWJJbmZvKTsK
LSAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8ucmVzZXQoKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICB9CiAjZW5kaWYKIH0KQEAgLTIzMzAsNyAr
MjI2MCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdChTaHJpbmtNb2RlIHMKICNpZiBF
TkFCTEUoSklUKQogICAgIG1fc3RydWN0dXJlU3R1YkluZm9zLnNocmlua1RvRml0KCk7CiAgICAg
bV9jYWxsTGlua0luZm9zLnNocmlua1RvRml0KCk7Ci0gICAgbV9tZXRob2RDYWxsTGlua0luZm9z
LnNocmlua1RvRml0KCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAgICAg
aWYgKHNocmlua01vZGUgPT0gRWFybHlTaHJpbmspCkBAIC0yNDA5LDcgKzIzMzgsNyBAQCB2b2lk
IENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5m
b3NbaV0udW5saW5rKCk7CiAgICAgfQogI2VuZGlmCi0gICAgaWYgKCEobV9jYWxsTGlua0luZm9z
LnNpemUoKSB8fCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpKSkKKyAgICBpZiAoIW1fY2Fs
bExpbmtJbmZvcy5zaXplKCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fZ2xvYmFsRGF0
YS0+Y2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEzMzQzMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTAs
NyArNTAsNiBAQAogI2luY2x1ZGUgIkV4ZWN1dGlvbkNvdW50ZXIuaCIKICNpbmNsdWRlICJFeHBy
ZXNzaW9uUmFuZ2VJbmZvLmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKLSNpbmNsdWRlICJN
ZXRob2RDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW5z
dHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCkBAIC0yNDksMTYgKzI0OCw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFy
Y2g8Q2FsbExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0Q2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4o
bV9jYWxsTGlua0luZm9zLmJlZ2luKCksIG1fY2FsbExpbmtJbmZvcy5zaXplKCksIGJ5dGVjb2Rl
SW5kZXgpKTsKICAgICAgICAgfQotCi0gICAgICAgIE1ldGhvZENhbGxMaW5rSW5mbyYgZ2V0TWV0
aG9kQ2FsbExpbmtJbmZvKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuICooYmluYXJ5U2VhcmNoPE1ldGhvZENhbGxMaW5rSW5mbywg
dm9pZCosIGdldE1ldGhvZENhbGxMaW5rSW5mb1JldHVybkxvY2F0aW9uPihtX21ldGhvZENhbGxM
aW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSwgcmV0dXJuQWRk
cmVzcy52YWx1ZSgpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBNZXRob2RDYWxsTGlua0luZm8m
IGdldE1ldGhvZENhbGxMaW5rSW5mbyh1bnNpZ25lZCBieXRlY29kZUluZGV4KQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2FsbExpbmtJbmZvLCB1
bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4obV9tZXRob2RDYWxs
TGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCksIGJ5dGVjb2Rl
SW5kZXgpKTsKLSAgICAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKICNpZiBFTkFCTEUo
TExJTlQpCkBAIC02NDMsMTAgKzYzMiw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IHNldE51bWJlck9mQ2FsbExpbmtJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX2NhbGxMaW5rSW5mb3Mu
Z3JvdyhzaXplKTsgfQogICAgICAgICBzaXplX3QgbnVtYmVyT2ZDYWxsTGlua0luZm9zKCkgY29u
c3QgeyByZXR1cm4gbV9jYWxsTGlua0luZm9zLnNpemUoKTsgfQogICAgICAgICBDYWxsTGlua0lu
Zm8mIGNhbGxMaW5rSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1fY2FsbExpbmtJbmZvc1tpbmRl
eF07IH0KLQotICAgICAgICB2b2lkIGFkZE1ldGhvZENhbGxMaW5rSW5mb3ModW5zaWduZWQgbikg
eyBBU1NFUlQobV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSk7IG1fbWV0aG9kQ2FsbExpbmtJbmZv
cy5ncm93KG4pOyB9Ci0gICAgICAgIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9kQ2FsbExpbmtJ
bmZvKGludCBpbmRleCkgeyByZXR1cm4gbV9tZXRob2RDYWxsTGlua0luZm9zW2luZGV4XTsgfQot
ICAgICAgICBzaXplX3QgbnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKCkgeyByZXR1cm4gbV9t
ZXRob2RDYWxsTGlua0luZm9zLnNpemUoKTsgfQogI2VuZGlmCiAgICAgICAgIAogI2lmIEVOQUJM
RShWQUxVRV9QUk9GSUxFUikKQEAgLTEzMTUsNyArMTMwMCw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+IG1fc3RydWN0dXJlU3R1YkluZm9zOwog
ICAgICAgICBWZWN0b3I8QnlWYWxJbmZvPiBtX2J5VmFsSW5mb3M7CiAgICAgICAgIFZlY3RvcjxD
YWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKLSAgICAgICAgVmVjdG9yPE1ldGhvZENhbGxM
aW5rSW5mbz4gbV9tZXRob2RDYWxsTGlua0luZm9zOwogICAgICAgICBKSVRDb2RlIG1faml0Q29k
ZTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNr
OwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRp
bmVsTm9kZTxDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24g
MTMzNDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw5ICs0MSw2IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZyb20KICNpZiBFTkFCTEUoTExJTlQpCiAgICAgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5
dGVjb2RlSW5kZXg7CiAgICAgCi0gICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IExM
SW50OjpnZXRPcGNvZGUobGxpbnRfb3BfbWV0aG9kX2NoZWNrKSkKLSAgICAgICAgaW5zdHJ1Y3Rp
b24rKzsKLSAgICAKICAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gTExJbnQ6Omdl
dE9wY29kZShsbGludF9vcF9nZXRfYXJyYXlfbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIEdldEJ5
SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgZmFsc2UpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNp
b24gMTMzNDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxM
aW5rSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiTWV0aG9kQ2FsbExpbmtJbmZvLmgiCi0KLSNpZiBFTkFCTEUoSklUKQotCi0jaW5j
bHVkZSAiSklUU3R1YnMuaCIKLSNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCi0KLW5hbWVzcGFj
ZSBKU0MgewotCi12b2lkIE1ldGhvZENhbGxMaW5rSW5mbzo6cmVzZXQoUmVwYXRjaEJ1ZmZlciYg
cmVwYXRjaEJ1ZmZlciwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQotewotICAgIGNhY2hlZFN0
cnVjdHVyZS5jbGVhclRvTWF4VW5zaWduZWQoKTsKLSAgICBjYWNoZWRQcm90b3R5cGUuY2xlYXIo
KTsKLSAgICBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuY2xlYXJUb01heFVuc2lnbmVkKCk7Ci0g
ICAgY2FjaGVkRnVuY3Rpb24uY2xlYXIoKTsKLSAgICAKLSAgICBBU1NFUlRfVU5VU0VEKGppdFR5
cGUsIGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwotICAgIAotICAgIHJlcGF0Y2hC
dWZmZXIucmVsaW5rKGNhbGxSZXR1cm5Mb2NhdGlvbiwgY3RpX29wX2dldF9ieV9pZF9tZXRob2Rf
Y2hlY2spOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShKSVQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENh
bGxMaW5rSW5mby5oCShyZXZpc2lvbiAxMzM0MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsODMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIE1ldGhvZENhbGxMaW5rSW5mb19oCi0jZGVmaW5lIE1ldGhvZENhbGxMaW5rSW5mb19oCi0K
LSNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKLSNpbmNsdWRlICJKSVRDb2RlLmgiCi0jaW5jbHVk
ZSAiSklUV3JpdGVCYXJyaWVyLmgiCi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Ci0KLW5hbWVz
cGFjZSBKU0MgewotCi0jaWYgRU5BQkxFKEpJVCkKLQotY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKLQot
c3RydWN0IE1ldGhvZENhbGxMaW5rSW5mbyB7Ci0gICAgTWV0aG9kQ2FsbExpbmtJbmZvKCkKLSAg
ICAgICAgOiBzZWVuKGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIHNlZW5PbmNlKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBzZWVuOwotICAgIH0KLQotICAgIHZvaWQgc2V0U2Vlbigp
Ci0gICAgewotICAgICAgICBzZWVuID0gdHJ1ZTsKLSAgICB9Ci0gICAgICAgIAotICAgIHZvaWQg
cmVzZXQoUmVwYXRjaEJ1ZmZlciYsIEpJVENvZGU6OkpJVFR5cGUpOwotCi0gICAgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleDsKLSAgICBDb2RlTG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbjsK
LSAgICBKSVRXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBjYWNoZWRTdHJ1Y3R1cmU7Ci0gICAgSklU
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gY2FjaGVkUHJvdG90eXBlU3RydWN0dXJlOwotICAgIC8v
IFdlJ2QgbGlrZSB0aGlzIHRvIGFjdHVhbGx5IGJlIEpTRnVuY3Rpb24sIGJ1dCBJbnRlcm5hbEZ1
bmN0aW9uIGFuZCBKU0Z1bmN0aW9uCi0gICAgLy8gZG9uJ3QgaGF2ZSBhIGNvbW1vbiBwYXJlbnQg
Y2xhc3MgYW5kIHdlIGFsbG93IHNwZWNpYWxpc2F0aW9uIG9uIGJvdGgKLSAgICBKSVRXcml0ZUJh
cnJpZXI8SlNPYmplY3Q+IGNhY2hlZEZ1bmN0aW9uOwotICAgIEpJVFdyaXRlQmFycmllcjxKU09i
amVjdD4gY2FjaGVkUHJvdG90eXBlOwotICAgIGJvb2wgc2VlbjsKLX07Ci0KLWlubGluZSB2b2lk
KiBnZXRNZXRob2RDYWxsTGlua0luZm9SZXR1cm5Mb2NhdGlvbihNZXRob2RDYWxsTGlua0luZm8q
IG1ldGhvZENhbGxMaW5rSW5mbykKLXsKLSAgICByZXR1cm4gbWV0aG9kQ2FsbExpbmtJbmZvLT5j
YWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKTsKLX0KLQotaW5saW5lIHVuc2ln
bmVkIGdldE1ldGhvZENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXgoTWV0aG9kQ2FsbExpbmtJbmZv
KiBtZXRob2RDYWxsTGlua0luZm8pCi17Ci0gICAgcmV0dXJuIG1ldGhvZENhbGxMaW5rSW5mby0+
Ynl0ZWNvZGVJbmRleDsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KLX0gLy8gbmFtZXNw
YWNlIEpTQwotCi0jZW5kaWYgLy8gTWV0aG9kQ2FsbExpbmtJbmZvX2gKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVz
LmNwcAkocmV2aXNpb24gMTMzNDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJNZXRob2RDYWxsTGlua1N0YXR1cy5oIgotCi0jaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1NZXRob2RDYWxsTGlua1N0YXR1
cyBNZXRob2RDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxv
Y2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVk
QmxvY2spOwotICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKLSNpZiBFTkFCTEUoSklU
KSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgLy8gTk9URTogVGhpcyBkb2VzIG5vdCBo
YXZlIGFuIExMSW50IGZhbGwtYmFjayBiZWNhdXNlIExMSW50IGRvZXMgbm90IGRvIGFueSBtZXRo
b2QKLSAgICAvLyBjYWxsIGxpbmsgY2FjaGluZy4KLSAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51
bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZvcygpKQotICAgICAgICByZXR1cm4gTWV0aG9kQ2FsbExp
bmtTdGF0dXMoKTsKLSAgICAKLSAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGwgPSBw
cm9maWxlZEJsb2NrLT5nZXRNZXRob2RDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCk7Ci0gICAg
Ci0gICAgaWYgKCFtZXRob2RDYWxsLnNlZW4gfHwgIW1ldGhvZENhbGwuY2FjaGVkU3RydWN0dXJl
KQotICAgICAgICByZXR1cm4gTWV0aG9kQ2FsbExpbmtTdGF0dXMoKTsKLSAgICAKLSAgICBpZiAo
bWV0aG9kQ2FsbC5jYWNoZWRQcm90b3R5cGUuZ2V0KCkgPT0gcHJvZmlsZWRCbG9jay0+Z2xvYmFs
T2JqZWN0KCktPm1ldGhvZENhbGxEdW1teSgpKSB7Ci0gICAgICAgIHJldHVybiBNZXRob2RDYWxs
TGlua1N0YXR1cygKLSAgICAgICAgICAgIG1ldGhvZENhbGwuY2FjaGVkU3RydWN0dXJlLmdldCgp
LAotICAgICAgICAgICAgMCwKLSAgICAgICAgICAgIG1ldGhvZENhbGwuY2FjaGVkRnVuY3Rpb24u
Z2V0KCksCi0gICAgICAgICAgICAwKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIE1ldGhvZENh
bGxMaW5rU3RhdHVzKAotICAgICAgICBtZXRob2RDYWxsLmNhY2hlZFN0cnVjdHVyZS5nZXQoKSwK
LSAgICAgICAgbWV0aG9kQ2FsbC5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuZ2V0KCksCi0gICAg
ICAgIG1ldGhvZENhbGwuY2FjaGVkRnVuY3Rpb24uZ2V0KCksCi0gICAgICAgIG1ldGhvZENhbGwu
Y2FjaGVkUHJvdG90eXBlLmdldCgpKTsKLSNlbHNlIC8vIEVOQUJMRShKSVQpCi0gICAgcmV0dXJu
IE1ldGhvZENhbGxMaW5rU3RhdHVzKCk7Ci0jZW5kaWYgLy8gRU5BQkxFKEpJVCkKLX0KLQotfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0
aG9kQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMTMzNDMwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIE1ldGhvZENhbGxMaW5rU3RhdHVzX2gKLSNkZWZpbmUg
TWV0aG9kQ2FsbExpbmtTdGF0dXNfaAotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgQ29kZUJs
b2NrOwotY2xhc3MgSlNPYmplY3Q7Ci1jbGFzcyBTdHJ1Y3R1cmU7Ci0KLWNsYXNzIE1ldGhvZENh
bGxMaW5rU3RhdHVzIHsKLXB1YmxpYzoKLSAgICBNZXRob2RDYWxsTGlua1N0YXR1cygpCi0gICAg
ICAgIDogbV9zdHJ1Y3R1cmUoMCkKLSAgICAgICAgLCBtX3Byb3RvdHlwZVN0cnVjdHVyZSgwKQot
ICAgICAgICAsIG1fZnVuY3Rpb24oMCkKLSAgICAgICAgLCBtX3Byb3RvdHlwZSgwKQotICAgIHsK
LSAgICB9Ci0gICAgCi0gICAgTWV0aG9kQ2FsbExpbmtTdGF0dXMoCi0gICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlLAotICAgICAgICBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwKLSAg
ICAgICAgSlNPYmplY3QqIGZ1bmN0aW9uLAotICAgICAgICBKU09iamVjdCogcHJvdG90eXBlKQot
ICAgICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKLSAgICAgICAgLCBtX3Byb3RvdHlwZVN0
cnVjdHVyZShwcm90b3R5cGVTdHJ1Y3R1cmUpCi0gICAgICAgICwgbV9mdW5jdGlvbihmdW5jdGlv
bikKLSAgICAgICAgLCBtX3Byb3RvdHlwZShwcm90b3R5cGUpCi0gICAgewotICAgICAgICBpZiAo
IW1fZnVuY3Rpb24pIHsKLSAgICAgICAgICAgIEFTU0VSVCghbV9zdHJ1Y3R1cmUpOwotICAgICAg
ICAgICAgQVNTRVJUKCFtX3Byb3RvdHlwZVN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBBU1NFUlQo
IW1fcHJvdG90eXBlKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBBU1NFUlQobV9zdHJ1
Y3R1cmUpOwotICAgICAgICAKLSAgICAgICAgQVNTRVJUKCFtX3Byb3RvdHlwZSA9PSAhbV9wcm90
b3R5cGVTdHJ1Y3R1cmUpOwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgTWV0aG9kQ2FsbExpbmtT
dGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKLQot
ICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1fZnVuY3Rpb247IH0KLSAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2Z1bmN0aW9uOyB9Ci0gICAgCi0gICAgYm9v
bCBuZWVkc1Byb3RvdHlwZUNoZWNrKCkgY29uc3QgeyByZXR1cm4gISFtX3Byb3RvdHlwZTsgfQot
ICAgIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0K
LSAgICBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcHJvdG90eXBl
U3RydWN0dXJlOyB9Ci0gICAgSlNPYmplY3QqIGZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9m
dW5jdGlvbjsgfQotICAgIEpTT2JqZWN0KiBwcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3By
b3RvdHlwZTsgfQotICAgIAotcHJpdmF0ZToKLSAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwot
ICAgIFN0cnVjdHVyZSogbV9wcm90b3R5cGVTdHJ1Y3R1cmU7Ci0gICAgSlNPYmplY3QqIG1fZnVu
Y3Rpb247Ci0gICAgSlNPYmplY3QqIG1fcHJvdG90eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
SlNDCi0KLSNlbmRpZiAvLyBNZXRob2RDYWxsTGlua1N0YXR1c19oCi0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEzMzQzMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTkw
LDcgKzE5MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9yZXQsIDIpIFwK
ICAgICAgICAgbWFjcm8ob3BfY2FsbF9wdXRfcmVzdWx0LCAzKSAvKiBoYXMgdmFsdWUgcHJvZmls
aW5nICovIFwKICAgICAgICAgbWFjcm8ob3BfcmV0X29iamVjdF9vcl90aGlzLCAzKSBcCi0gICAg
ICAgIG1hY3JvKG9wX21ldGhvZF9jaGVjaywgMSkgXAogICAgICAgICBcCiAgICAgICAgIG1hY3Jv
KG9wX2NvbnN0cnVjdCwgNikgXAogICAgICAgICBtYWNybyhvcF9zdHJjYXQsIDQpIFwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMzM0MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTUwMiwxMSArMTUwMiw2IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5p
dEcKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRN
ZXRob2RDaGVjaygpCi17Ci0gICAgZW1pdE9wY29kZShvcF9tZXRob2RfY2hlY2spOwotfQotCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKICAgICBt
X2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5z
aXplKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTMzNDMwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MjEsOCArNDIxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdFB1dFRvQmFzZShSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwg
UmVnaXN0ZXJJRCogdmFsdWUsIE5vbmxvY2FsUmVzb2x2ZUluZm8mKTsKIAotICAgICAgICB2b2lk
IGVtaXRNZXRob2RDaGVjaygpOwotCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRCeUlkKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QXJndW1lbnRzTGVuZ3RoKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRC
eUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3Rl
cklEKiB2YWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxMzM0MzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ2OSw3ICs0NjksNiBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0
Qnl0CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsK
ICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9i
YXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCkgLSBtX3N1YmV4
cHJlc3Npb25EaXZvdE9mZnNldCwgc3RhcnRPZmZzZXQoKSAtIG1fc3ViZXhwcmVzc2lvbkRpdm90
T2Zmc2V0LCBtX3N1YmV4cHJlc3Npb25FbmRPZmZzZXQpOwotICAgIGdlbmVyYXRvci5lbWl0TWV0
aG9kQ2hlY2soKTsKICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZnVuY3Rpb24uZ2V0KCksIGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG1faWRlbnQpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb25Pcklnbm9yZWQoZHN0LCBmdW5j
dGlvbi5nZXQoKSksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgpKTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZp
c2lvbiAxMzM0MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkRGR0J5
dGVDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJH
ZXRCeUlkU3RhdHVzLmgiCi0jaW5jbHVkZSAiTWV0aG9kQ2FsbExpbmtTdGF0dXMuaCIKICNpbmNs
dWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiUmVzb2x2ZUdsb2JhbFN0YXR1cy5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0yNDg5LDQ4ICsyNDg4LDYgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfcHV0X2J5X3ZhbCk7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIG9w
X21ldGhvZF9jaGVjazogewotICAgICAgICAgICAgbV9jdXJyZW50UHJvZmlsaW5nSW5kZXggKz0g
T1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hlY2spOwotICAgICAgICAgICAgSW5zdHJ1Y3Rpb24q
IGdldEluc3RydWN0aW9uID0gY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9t
ZXRob2RfY2hlY2spOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBB
U1NFUlQoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGdldEluc3RydWN0aW9uLT51Lm9wY29kZSkg
PT0gb3BfZ2V0X2J5X2lkCi0gICAgICAgICAgICAgICAgICAgfHwgaW50ZXJwcmV0ZXItPmdldE9w
Y29kZUlEKGdldEluc3RydWN0aW9uLT51Lm9wY29kZSkgPT0gb3BfZ2V0X2J5X2lkX291dF9vZl9s
aW5lKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoZ2V0
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZp
ZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtnZXRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gQ2hlY2sgaWYg
dGhlIG1ldGhvZF9jaGVjayB3YXMgbW9ub21vcnBoaWMuIElmIHNvLCBlbWl0IGEgQ2hlY2tYWVpN
ZXRob2QKLSAgICAgICAgICAgIC8vIG5vZGUsIHdoaWNoIGlzIGEgbG90IG1vcmUgZWZmaWNpZW50
LgotICAgICAgICAgICAgR2V0QnlJZFN0YXR1cyBnZXRCeUlkU3RhdHVzID0gR2V0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcigKLSAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2ssCi0gICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXgsCi0gICAgICAgICAgICAg
ICAgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoaWRlbnRpZmllcikpOwotICAgICAgICAgICAgTWV0
aG9kQ2FsbExpbmtTdGF0dXMgbWV0aG9kQ2FsbFN0YXR1cyA9IE1ldGhvZENhbGxMaW5rU3RhdHVz
Ojpjb21wdXRlRm9yKAotICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jaywgbV9jdXJyZW50SW5kZXgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAo
bWV0aG9kQ2FsbFN0YXR1cy5pc1NldCgpCi0gICAgICAgICAgICAgICAgJiYgIWdldEJ5SWRTdGF0
dXMud2FzU2VlbkluSklUKCkKLSAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gSXQncyBtb25vbW9ycGhpYyBhcyBmYXIgYXMgd2UgY2FuIHRlbGws
IHNpbmNlIHRoZSBtZXRob2RfY2hlY2sgd2FzIGxpbmtlZAotICAgICAgICAgICAgICAgIC8vIGJ1
dCB0aGUgc2xvdyBwYXRoIChpLmUuIHRoZSBub3JtYWwgZ2V0X2J5X2lkKSBuZXZlciBmaXJlZC4K
LQotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dy
YXBoLmFkZFN0cnVjdHVyZVNldChtZXRob2RDYWxsU3RhdHVzLnN0cnVjdHVyZSgpKSksIGJhc2Up
OwotICAgICAgICAgICAgICAgIGlmIChtZXRob2RDYWxsU3RhdHVzLm5lZWRzUHJvdG90eXBlQ2hl
Y2soKSkgewotICAgICAgICAgICAgICAgICAgICBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2so
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RDYWxsU3RhdHVzLnByb3RvdHlwZSgpLCBt
ZXRob2RDYWxsU3RhdHVzLnByb3RvdHlwZVN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChQaGFudG9tLCBiYXNlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgc2V0KGdldEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgY2VsbENvbnN0YW50KG1l
dGhvZENhbGxTdGF0dXMuZnVuY3Rpb24oKSkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBoYW5kbGVHZXRCeUlkKAotICAgICAgICAgICAgICAgICAgICBnZXRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQsIHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZpZXIsIGdldEJ5SWRT
dGF0dXMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2N1cnJl
bnRJbmRleCArPSBPUENPREVfTEVOR1RIKG9wX21ldGhvZF9jaGVjaykgKyBPUENPREVfTEVOR1RI
KG9wX2dldF9ieV9pZCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xp
bmU6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDogewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMzM0MzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTcsNyArMTU3LDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
T3Bjb2RlKAogICAgIGNhc2Ugb3BfbnN0cmljdGVxOgogICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbDoK
ICAgICBjYXNlIG9wX3B1dF9ieV92YWw6Ci0gICAgY2FzZSBvcF9tZXRob2RfY2hlY2s6CiAgICAg
Y2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWRfb3V0X29mX2xpbmU6CiAg
ICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkocmV2aXNpb24gMTMzNDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsNyArMzAxLDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfbG9vcF9pZl90cnVlKQogICAg
ICAgICBERUZJTkVfT1Aob3BfbG9vcF9pZl9mYWxzZSkKICAgICAgICAgREVGSU5FX09QKG9wX2xz
aGlmdCkKLSAgICAgICAgREVGSU5FX09QKG9wX21ldGhvZF9jaGVjaykKICAgICAgICAgREVGSU5F
X09QKG9wX21vZCkKICAgICAgICAgREVGSU5FX09QKG9wX21vdikKICAgICAgICAgREVGSU5FX09Q
KG9wX211bCkKQEAgLTQ4OSw3ICs0ODgsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93
Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfbG9vcF9pZl90cnVlKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfbG9vcF9pZl9mYWxzZSkKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX2xzaGlmdCkKLSAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX21l
dGhvZF9jaGVjaykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX21vZCkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX211bCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X25lZ2F0ZSkKQEAgLTU2OSwxMyArNTY3LDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIFByb3BlcnR5
U3R1YkNvbXBpbGF0aQogICAgIGluZm8uaG90UGF0aEJlZ2luID0gbGlua0J1ZmZlci5sb2NhdGlv
bk9mKGhvdFBhdGhCZWdpbik7CiAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2UgTWV0
aG9kQ2hlY2s6IHsKLSAgICAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRv
Q29tcGFyZUxvY2F0aW9uID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1ldGhvZENoZWNrU3RydWN0
dXJlVG9Db21wYXJlKTsKLSAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS5tZXRob2RDaGVja1By
b3RvT2JqID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cihzdHJ1Y3R1
cmVUb0NvbXBhcmVMb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1ldGhvZENoZWNrUHJv
dG9PYmopKTsKLSAgICAgICAgaW5mby5wYXRjaC5iYXNlbGluZS5tZXRob2RDaGVja1Byb3RvU3Ry
dWN0dXJlVG9Db21wYXJlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0
cihzdHJ1Y3R1cmVUb0NvbXBhcmVMb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKG1ldGhv
ZENoZWNrUHJvdG9TdHJ1Y3R1cmVUb0NvbXBhcmUpKTsKLSAgICAgICAgaW5mby5wYXRjaC5iYXNl
bGluZS5tZXRob2RDaGVja1B1dEZ1bmN0aW9uID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VC
ZXR3ZWVuQ29kZVB0cihzdHJ1Y3R1cmVUb0NvbXBhcmVMb2NhdGlvbiwgbGlua0J1ZmZlci5sb2Nh
dGlvbk9mKG1ldGhvZENoZWNrUHV0RnVuY3Rpb24pKTsKLSAgICAgICAgLy8gTm8gYnJlYWsgLSBm
YWxsIHRocm91Z2ggdG8gR2V0QnlJZC4KLSAgICB9CiAgICAgY2FzZSBHZXRCeUlkOiB7CiAgICAg
ICAgIENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdpbkxvY2F0aW9uID0gbGlua0J1ZmZlci5s
b2NhdGlvbk9mKGhvdFBhdGhCZWdpbik7CiAgICAgICAgIGluZm8ucGF0Y2guYmFzZWxpbmUudS5n
ZXQuc3RydWN0dXJlVG9Db21wYXJlID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVu
Q29kZVB0cihob3RQYXRoQmVnaW5Mb2NhdGlvbiwgbGlua0J1ZmZlci5sb2NhdGlvbk9mKGdldFN0
cnVjdHVyZVRvQ29tcGFyZSkpOwpAQCAtNzkyLDE0ICs3ODMsNiBAQCBKSVRDb2RlIEpJVDo6cHJp
dmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAgICAgICAgIGluZm8uaG90UGF0aEJlZ2luID0gcGF0
Y2hCdWZmZXIubG9jYXRpb25PZihtX2NhbGxTdHJ1Y3R1cmVTdHViQ29tcGlsYXRpb25JbmZvW2ld
LmhvdFBhdGhCZWdpbik7CiAgICAgICAgIGluZm8uaG90UGF0aE90aGVyID0gcGF0Y2hCdWZmZXIu
bG9jYXRpb25PZk5lYXJDYWxsKG1fY2FsbFN0cnVjdHVyZVN0dWJDb21waWxhdGlvbkluZm9baV0u
aG90UGF0aE90aGVyKTsKICAgICB9Ci0gICAgdW5zaWduZWQgbWV0aG9kQ2FsbENvdW50ID0gbV9t
ZXRob2RDYWxsQ29tcGlsYXRpb25JbmZvLnNpemUoKTsKLSAgICBtX2NvZGVCbG9jay0+YWRkTWV0
aG9kQ2FsbExpbmtJbmZvcyhtZXRob2RDYWxsQ291bnQpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtZXRob2RDYWxsQ291bnQ7ICsraSkgewotICAgICAgICBNZXRob2RDYWxsTGlua0lu
Zm8mIGluZm8gPSBtX2NvZGVCbG9jay0+bWV0aG9kQ2FsbExpbmtJbmZvKGkpOwotICAgICAgICBp
bmZvLmJ5dGVjb2RlSW5kZXggPSBtX21ldGhvZENhbGxDb21waWxhdGlvbkluZm9baV0uYnl0ZWNv
ZGVJbmRleDsKLSAgICAgICAgaW5mby5jYWNoZWRTdHJ1Y3R1cmUuc2V0TG9jYXRpb24ocGF0Y2hC
dWZmZXIubG9jYXRpb25PZihtX21ldGhvZENhbGxDb21waWxhdGlvbkluZm9baV0uc3RydWN0dXJl
VG9Db21wYXJlKSk7Ci0gICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxv
Y2stPnN0cnVjdHVyZVN0dWJJbmZvKG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9w
ZXJ0eUFjY2Vzc0luZGV4KS5jYWxsUmV0dXJuTG9jYXRpb247Ci0gICAgfQogCiAjaWYgRU5BQkxF
KERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICBpZiAoY2FuQmVPcHRpbWl6ZWQoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxMzM0MzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBQcm9wZXJ0eVN0dWJQdXRCeUlkX1QgeyBQcm9wZXJ0
eVN0dWJQdXRCeUlkIH07CiAKICAgICBzdHJ1Y3QgUHJvcGVydHlTdHViQ29tcGlsYXRpb25JbmZv
IHsKLSAgICAgICAgZW51bSBUeXBlIHsgR2V0QnlJZCwgUHV0QnlJZCwgTWV0aG9kQ2hlY2sgfSBt
X3R5cGU7CisgICAgICAgIGVudW0gVHlwZSB7IEdldEJ5SWQsIFB1dEJ5SWQgfSBtX3R5cGU7CiAg
ICAgCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXg7CiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbjsKQEAgLTE3MywxMCArMTczLDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBwdXREaXNwbGFj
ZW1lbnRMYWJlbDE7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBwdXREaXNw
bGFjZW1lbnRMYWJlbDI7CiAjZW5kaWYKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJl
bFB0ciBtZXRob2RDaGVja1N0cnVjdHVyZVRvQ29tcGFyZTsKLSAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkRhdGFMYWJlbFB0ciBtZXRob2RDaGVja1Byb3RvT2JqOwotICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RGF0YUxhYmVsUHRyIG1ldGhvZENoZWNrUHJvdG9TdHJ1Y3R1cmVUb0NvbXBhcmU7Ci0g
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgbWV0aG9kQ2hlY2tQdXRGdW5jdGlv
bjsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgUHJvcGVydHlTdHViQ29tcGlsYXRp
b25JbmZvKCkKQEAgLTI0MSw3ICsyMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2
b2lkIHNsb3dDYXNlSW5mbyhQcm9wZXJ0eVN0dWJHZXRCeUlkX1QsIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbCBjb2xkUGF0aEJlZ2luLCBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsKQogICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBlID09IEdldEJ5SWQgfHwgbV90eXBlID09IE1ldGhv
ZENoZWNrKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gR2V0QnlJZCk7CiAgICAgICAg
ICAgICBjYWxsUmV0dXJuTG9jYXRpb24gPSBjYWxsOwogICAgICAgICAgICAgZ2V0Q29sZFBhdGhC
ZWdpbiA9IGNvbGRQYXRoQmVnaW47CiAgICAgICAgIH0KQEAgLTI1MiwxNSArMjQ4LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBjYWxsUmV0dXJuTG9jYXRpb24gPSBjYWxsOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCBhZGRNZXRob2RDaGVja0luZm8oTWFjcm9Bc3NlbWJsZXI6
OkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFi
ZWxQdHIgcHJvdG9PYmosIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgcHJvdG9TdHJ1Y3R1
cmVUb0NvbXBhcmUsIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWxQdHIgcHV0RnVuY3Rpb24pCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIG1fdHlwZSA9IE1ldGhvZENoZWNrOwotICAgICAgICAgICAg
bWV0aG9kQ2hlY2tTdHJ1Y3R1cmVUb0NvbXBhcmUgPSBzdHJ1Y3R1cmVUb0NvbXBhcmU7Ci0gICAg
ICAgICAgICBtZXRob2RDaGVja1Byb3RvT2JqID0gcHJvdG9PYmo7Ci0gICAgICAgICAgICBtZXRo
b2RDaGVja1Byb3RvU3RydWN0dXJlVG9Db21wYXJlID0gcHJvdG9TdHJ1Y3R1cmVUb0NvbXBhcmU7
Ci0gICAgICAgICAgICBtZXRob2RDaGVja1B1dEZ1bmN0aW9uID0gcHV0RnVuY3Rpb247Ci0gICAg
ICAgIH0KLQogICAgICAgICB2b2lkIGNvcHlUb1N0dWJJbmZvKFN0cnVjdHVyZVN0dWJJbmZvJiBp
bmZvLCBMaW5rQnVmZmVyICZwYXRjaEJ1ZmZlcik7CiAgICAgfTsKIApAQCAtMjkxLDE4ICsyNzgs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleDsKICAg
ICB9OwogCi0gICAgc3RydWN0IE1ldGhvZENhbGxDb21waWxhdGlvbkluZm8gewotICAgICAgICBN
ZXRob2RDYWxsQ29tcGlsYXRpb25JbmZvKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVk
IHByb3BlcnR5QWNjZXNzSW5kZXgpCi0gICAgICAgICAgICA6IGJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVJbmRleCkKLSAgICAgICAgICAgICwgcHJvcGVydHlBY2Nlc3NJbmRleChwcm9wZXJ0eUFjY2Vz
c0luZGV4KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB1bnNpZ25lZCBieXRlY29k
ZUluZGV4OwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIHN0cnVjdHVyZVRv
Q29tcGFyZTsKLSAgICAgICAgdW5zaWduZWQgcHJvcGVydHlBY2Nlc3NJbmRleDsKLSAgICB9Owot
CiAgICAgLy8gTmVhciBjYWxscyBjYW4gb25seSBiZSBwYXRjaGVkIHRvIG90aGVyIEpJVCBjb2Rl
LCByZWd1bGFyIGNhbGxzIGNhbiBiZSBwYXRjaGVkIHRvIEpJVCBjb2RlIG9yIHJlbGlua2VkIHRv
IHN0dWIgZnVuY3Rpb25zLgogICAgIHZvaWQgY3RpUGF0Y2hOZWFyQ2FsbEJ5UmV0dXJuQWRkcmVz
cyhDb2RlQmxvY2sqIGNvZGVibG9jaywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgbmV3Q2FsbGVlRnVuY3Rpb24pOwogICAgIHZvaWQgY3RpUGF0
Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKENvZGVCbG9jayogY29kZWJsb2NrLCBSZXR1cm5BZGRyZXNz
UHRyIHJldHVybkFkZHJlc3MsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBuZXdDYWxsZWVGdW5jdGlv
bik7CkBAIC00MDcsNyArMzgyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2
b2lkIHJlc2V0UGF0Y2hQdXRCeUlkKFJlcGF0Y2hCdWZmZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyop
OwogICAgICAgICBzdGF0aWMgdm9pZCBwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9jayosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0LCBS
ZXR1cm5BZGRyZXNzUHRyKTsKICAgICAgICAgc3RhdGljIHZvaWQgcGF0Y2hQdXRCeUlkUmVwbGFj
ZShDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zm
c2V0IGNhY2hlZE9mZnNldCwgUmV0dXJuQWRkcmVzc1B0ciwgYm9vbCBkaXJlY3QpOwotICAgICAg
ICBzdGF0aWMgdm9pZCBwYXRjaE1ldGhvZENhbGxQcm90byhKU0dsb2JhbERhdGEmLCBDb2RlQmxv
Y2sqLCBNZXRob2RDYWxsTGlua0luZm8mLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEpTT2JqZWN0Kiwg
U3RydWN0dXJlKiwgSlNPYmplY3QqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICBzdGF0
aWMgdm9pZCBjb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Mp
CiAgICAgICAgIHsKQEAgLTU0Nyw3ICs1MjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoaW50IHZpcnR1YWxSZWdpc3RlckluZGV4
LCBSZWdpc3RlcklEIHRhZyk7CiAKICAgICAgICAgdm9pZCBjb21waWxlR2V0QnlJZEhvdFBhdGgo
SWRlbnRpZmllciopOwotICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkU2xvd0Nhc2UoaW50IHJl
c3VsdFZSZWcsIGludCBiYXNlVlJlZywgSWRlbnRpZmllciogaWRlbnQsIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIGJvb2wgaXNNZXRob2RDaGVjayA9IGZhbHNlKTsKKyAg
ICAgICAgdm9pZCBjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVnLCBpbnQgYmFz
ZVZSZWcsIElkZW50aWZpZXIqLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAg
ICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlcklEIGJhc2UsIFJlZ2lz
dGVySUQgcmVzdWx0VGFnLCBSZWdpc3RlcklEIHJlc3VsdFBheWxvYWQsIFByb3BlcnR5T2Zmc2V0
IGNhY2hlZE9mZnNldCk7CiAgICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNldChKU09i
amVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lzdGVySUQgcmVzdWx0UGF5bG9h
ZCwgUHJvcGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0KTsKICAgICAgICAgdm9pZCBjb21waWxlR2V0
RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHRUYWcsIFJlZ2lz
dGVySUQgcmVzdWx0UGF5bG9hZCwgUmVnaXN0ZXJJRCBvZmZzZXQsIEZpbmFsT2JqZWN0TW9kZSA9
IE1heUJlRmluYWwpOwpAQCAtNTYyLDkgKzUzNiw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAvLyBzZXF1ZW5jZU9wQ2FsbAogICAgICAgICBzdGF0aWMgY29uc3QgaW50IHNlcXVlbmNlT3BD
YWxsSW5zdHJ1Y3Rpb25TcGFjZSA9IDEyOwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IHNlcXVl
bmNlT3BDYWxsQ29uc3RhbnRTcGFjZSA9IDI7Ci0gICAgICAgIC8vIHNlcXVlbmNlTWV0aG9kQ2hl
Y2sKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBzZXF1ZW5jZU1ldGhvZENoZWNrSW5zdHJ1Y3Rp
b25TcGFjZSA9IDQwOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IHNlcXVlbmNlTWV0aG9kQ2hl
Y2tDb25zdGFudFNwYWNlID0gNjsKICAgICAgICAgLy8gc2VxdWVuY2VHZXRCeUlkSG90UGF0aAog
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IHNlcXVlbmNlR2V0QnlJZEhvdFBhdGhJbnN0cnVjdGlv
blNwYWNlID0gMzY7CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgc2VxdWVuY2VHZXRCeUlkSG90
UGF0aENvbnN0YW50U3BhY2UgPSA0OwpAQCAtNTc4LDkgKzU0OSw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAvLyBzZXF1ZW5jZU9wQ2FsbAogICAgICAgICBzdGF0aWMgY29uc3QgaW50IHNl
cXVlbmNlT3BDYWxsSW5zdHJ1Y3Rpb25TcGFjZSA9IDEyOwogICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IHNlcXVlbmNlT3BDYWxsQ29uc3RhbnRTcGFjZSA9IDI7Ci0gICAgICAgIC8vIHNlcXVlbmNl
TWV0aG9kQ2hlY2sKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBzZXF1ZW5jZU1ldGhvZENoZWNr
SW5zdHJ1Y3Rpb25TcGFjZSA9IDQwOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IHNlcXVlbmNl
TWV0aG9kQ2hlY2tDb25zdGFudFNwYWNlID0gNjsKICAgICAgICAgLy8gc2VxdWVuY2VHZXRCeUlk
SG90UGF0aAogICAgICAgICBzdGF0aWMgY29uc3QgaW50IHNlcXVlbmNlR2V0QnlJZEhvdFBhdGhJ
bnN0cnVjdGlvblNwYWNlID0gMzY7CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgc2VxdWVuY2VH
ZXRCeUlkSG90UGF0aENvbnN0YW50U3BhY2UgPSA1OwpAQCAtNjI5LDcgKzU5Nyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIGNvbXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2UoT3Bj
b2RlSUQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCB1bnNpZ25lZCBkc3QsIHVu
c2lnbmVkIHNyYzEsIHVuc2lnbmVkIHNyYzIsIE9wZXJhbmRUeXBlcywgYm9vbCBvcDFIYXNJbW1l
ZGlhdGVJbnRGYXN0Q2FzZSwgYm9vbCBvcDJIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSk7CiAKICAg
ICAgICAgdm9pZCBjb21waWxlR2V0QnlJZEhvdFBhdGgoaW50IGJhc2VWUmVnLCBJZGVudGlmaWVy
Kik7Ci0gICAgICAgIHZvaWQgY29tcGlsZUdldEJ5SWRTbG93Q2FzZShpbnQgcmVzdWx0VlJlZywg
aW50IGJhc2VWUmVnLCBJZGVudGlmaWVyKiBpZGVudCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+Ojpp
dGVyYXRvciYgaXRlciwgYm9vbCBpc01ldGhvZENoZWNrID0gZmFsc2UpOworICAgICAgICB2b2lk
IGNvbXBpbGVHZXRCeUlkU2xvd0Nhc2UoaW50IHJlc3VsdFZSZWcsIGludCBiYXNlVlJlZywgSWRl
bnRpZmllciosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9p
ZCBjb21waWxlR2V0RGlyZWN0T2Zmc2V0KFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCByZXN1
bHQsIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldCk7CiAgICAgICAgIHZvaWQgY29tcGlsZUdl
dERpcmVjdE9mZnNldChKU09iamVjdCogYmFzZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFByb3BlcnR5
T2Zmc2V0IGNhY2hlZE9mZnNldCk7CiAgICAgICAgIHZvaWQgY29tcGlsZUdldERpcmVjdE9mZnNl
dChSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgcmVzdWx0LCBSZWdpc3RlcklEIG9mZnNldCwg
UmVnaXN0ZXJJRCBzY3JhdGNoLCBGaW5hbE9iamVjdE1vZGUgPSBNYXlCZUZpbmFsKTsKQEAgLTcx
MSw3ICs2NzksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2xvb3Bf
aWZfdHJ1ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbG9vcF9pZl9mYWxz
ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbHNoaWZ0KEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9tZXRob2RfY2hlY2soSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX21vZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfbW92KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9tdWwoSW5zdHJ1Y3Rp
b24qKTsKQEAgLTgwNiw3ICs3NzMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9sb29wX2lmX3RydWUoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbG9vcF9pZl9mYWxzZShJ
bnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAg
dm9pZCBlbWl0U2xvd19vcF9sc2hpZnQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbWV0aG9kX2NoZWNrKElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2
b2lkIGVtaXRTbG93X29wX21vZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9tdWwoSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfbmVnYXRlKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwpAQCAtOTM2LDcgKzkwMiw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8UHJv
cGVydHlTdHViQ29tcGlsYXRpb25JbmZvPiBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZv
OwogICAgICAgICBWZWN0b3I8QnlWYWxDb21waWxhdGlvbkluZm8+IG1fYnlWYWxDb21waWxhdGlv
bkluZm87CiAgICAgICAgIFZlY3RvcjxTdHJ1Y3R1cmVTdHViQ29tcGlsYXRpb25JbmZvPiBtX2Nh
bGxTdHJ1Y3R1cmVTdHViQ29tcGlsYXRpb25JbmZvOwotICAgICAgICBWZWN0b3I8TWV0aG9kQ2Fs
bENvbXBpbGF0aW9uSW5mbz4gbV9tZXRob2RDYWxsQ29tcGlsYXRpb25JbmZvOwogICAgICAgICBW
ZWN0b3I8SnVtcFRhYmxlPiBtX2ptcFRhYmxlOwogCiAgICAgICAgIHVuc2lnbmVkIG1fYnl0ZWNv
ZGVPZmZzZXQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEzMzQzMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkxLDczICs5MSw2IEBAIHZvaWQgSklUOjplbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlv
bioKICAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX21ldGhv
ZF9jaGVjayhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIC8vIEFzc2Vy
dCB0aGF0IHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb24gaXMgYSBnZXRfYnlfaWQuCi0gICAgQVNT
RVJUKG1faW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKChjdXJyZW50SW5zdHJ1Y3Rpb24gKyBPUENP
REVfTEVOR1RIKG9wX21ldGhvZF9jaGVjaykpLT51Lm9wY29kZSkgPT0gb3BfZ2V0X2J5X2lkCi0g
ICAgICAgIHx8IG1faW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKChjdXJyZW50SW5zdHJ1Y3Rpb24g
KyBPUENPREVfTEVOR1RIKG9wX21ldGhvZF9jaGVjaykpLT51Lm9wY29kZSkgPT0gb3BfZ2V0X2J5
X2lkX291dF9vZl9saW5lKTsKLSAgICAKLSAgICBjdXJyZW50SW5zdHJ1Y3Rpb24gKz0gT1BDT0RF
X0xFTkdUSChvcF9tZXRob2RfY2hlY2spOwotICAgIAotICAgIC8vIERvIHRoZSBtZXRob2QgY2hl
Y2sgLSBjaGVjayB0aGUgb2JqZWN0ICYgaXRzIHByb3RvdHlwZSdzIHN0cnVjdHVyZSBpbmxpbmUg
KHRoaXMgaXMgdGhlIGNvbW1vbiBjYXNlKS4KLSAgICBtX21ldGhvZENhbGxDb21waWxhdGlvbklu
Zm8uYXBwZW5kKE1ldGhvZENhbGxDb21waWxhdGlvbkluZm8obV9ieXRlY29kZU9mZnNldCwgbV9w
cm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5zaXplKCkpKTsKLSAgICBNZXRob2RDYWxsQ29t
cGlsYXRpb25JbmZvJiBpbmZvID0gbV9tZXRob2RDYWxsQ29tcGlsYXRpb25JbmZvLmxhc3QoKTsK
LSAgICAKLSAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAg
ICBpbnQgYmFzZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgSWRlbnRp
ZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQpKTsKLSAgICAKLSAgICBlbWl0TG9hZChiYXNlLCByZWdUMSwgcmVnVDAp
OwotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7Ci0gICAgCi0g
ICAgQkVHSU5fVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5jZU1ldGhvZENoZWNrKTsKLSAg
ICAKLSAgICBKdW1wIHN0cnVjdHVyZUNoZWNrID0gYnJhbmNoUHRyV2l0aFBhdGNoKE5vdEVxdWFs
LCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgaW5mby5zdHJ1Y3R1
cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGF0Y2hH
ZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKTsKLSAgICBEYXRhTGFiZWxQdHIgcHJvdG9TdHJ1Y3R1
cmVUb0NvbXBhcmUsIHByb3RvT2JqID0gbW92ZVdpdGhQYXRjaChUcnVzdGVkSW1tUHRyKDApLCBy
ZWdUMik7Ci0gICAgSnVtcCBwcm90b1N0cnVjdHVyZUNoZWNrID0gYnJhbmNoUHRyV2l0aFBhdGNo
KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcHJv
dG9TdHJ1Y3R1cmVUb0NvbXBhcmUsIFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4ocGF0Y2hHZXRCeUlkRGVmYXVsdFN0cnVjdHVyZSkpKTsKLSAgICAKLSAgICAvLyBUaGlzIHdp
bGwgYmUgcmVsaW5rZWQgdG8gbG9hZCB0aGUgZnVuY3Rpb24gd2l0aG91dCBkb2luZyBhIGxvYWQu
Ci0gICAgRGF0YUxhYmVsUHRyIHB1dEZ1bmN0aW9uID0gbW92ZVdpdGhQYXRjaChUcnVzdGVkSW1t
UHRyKDApLCByZWdUMCk7Ci0gICAgCi0gICAgRU5EX1VOSU5URVJSVVBURURfU0VRVUVOQ0Uoc2Vx
dWVuY2VNZXRob2RDaGVjayk7Ci0gICAgCi0gICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Q2VsbFRhZyksIHJlZ1QxKTsKLSAgICBKdW1wIG1hdGNoID0ganVtcCgpOwotICAgIAotICAgIC8v
IExpbmsgdGhlIGZhaWx1cmUgY2FzZXMgaGVyZS4KLSAgICBzdHJ1Y3R1cmVDaGVjay5saW5rKHRo
aXMpOwotICAgIHByb3RvU3RydWN0dXJlQ2hlY2subGluayh0aGlzKTsKLSAgICAKLSAgICAvLyBE
byBhIHJlZ3VsYXIoaXNoKSBnZXRfYnlfaWQgKHRoZSBzbG93IGNhc2Ugd2lsbCBiZSBsaW5rIHRv
Ci0gICAgLy8gY3RpX29wX2dldF9ieV9pZF9tZXRob2RfY2hlY2sgaW5zdGVhZCBvZiBjdGlfb3Bf
Z2V0X2J5X2lkLgotICAgIGNvbXBpbGVHZXRCeUlkSG90UGF0aChpZGVudCk7Ci0gICAgCi0gICAg
bWF0Y2gubGluayh0aGlzKTsKLSAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1fYnl0ZWNvZGVP
ZmZzZXQgKyBPUENPREVfTEVOR1RIKG9wX21ldGhvZF9jaGVjaykpOwotICAgIGVtaXRTdG9yZShk
c3QsIHJlZ1QxLCByZWdUMCk7Ci0gICAgbWFwKG1fYnl0ZWNvZGVPZmZzZXQgKyBPUENPREVfTEVO
R1RIKG9wX21ldGhvZF9jaGVjaykgKyBPUENPREVfTEVOR1RIKG9wX2dldF9ieV9pZCksIGRzdCwg
cmVnVDEsIHJlZ1QwKTsKLSAgICAKLSAgICAvLyBXZSd2ZSBhbHJlYWR5IGdlbmVyYXRlZCB0aGUg
Zm9sbG93aW5nIGdldF9ieV9pZCwgc28gbWFrZSBzdXJlIGl0J3Mgc2tpcHBlZCBvdmVyLgotICAg
IG1fYnl0ZWNvZGVPZmZzZXQgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfaWQpOwotCi0gICAg
bV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5sYXN0KCkuYWRkTWV0aG9kQ2hlY2tJbmZv
KGluZm8uc3RydWN0dXJlVG9Db21wYXJlLCBwcm90b09iaiwgcHJvdG9TdHJ1Y3R1cmVUb0NvbXBh
cmUsIHB1dEZ1bmN0aW9uKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRTbG93X29wX21ldGhvZF9jaGVj
ayhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQotewotICAgIGN1cnJlbnRJbnN0cnVjdGlvbiArPSBPUENPREVfTEVO
R1RIKG9wX21ldGhvZF9jaGVjayk7Ci0gICAgCi0gICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgaW50IGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOwotICAgIGludCBpZGVudCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQ7Ci0gICAgCi0gICAgY29tcGlsZUdldEJ5SWRTbG93Q2FzZShkc3QsIGJhc2UsICYobV9jb2Rl
QmxvY2stPmlkZW50aWZpZXIoaWRlbnQpKSwgaXRlciwgdHJ1ZSk7Ci0gICAgZW1pdFZhbHVlUHJv
ZmlsaW5nU2l0ZShtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9tZXRob2RfY2hl
Y2spKTsKLSAgICAKLSAgICAvLyBXZSd2ZSBhbHJlYWR5IGdlbmVyYXRlZCB0aGUgZm9sbG93aW5n
IGdldF9ieV9pZCwgc28gbWFrZSBzdXJlIGl0J3Mgc2tpcHBlZCBvdmVyLgotICAgIG1fYnl0ZWNv
ZGVPZmZzZXQgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfaWQpOwotfQotCiBKSVQ6OkNvZGVS
ZWYgSklUOjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhKQogewogICAgIEpTSW50ZXJmYWNlSklUIGppdDsKQEAgLTUwNSw3ICs0MzgsNyBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKEluc3RydWN0CiAgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZSgpOwogfQogCi12b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRTbG93Q2FzZShpbnQgZHN0
LCBpbnQgYmFzZSwgSWRlbnRpZmllciogaWRlbnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIsIGJvb2wgaXNNZXRob2RDaGVjaykKK3ZvaWQgSklUOjpjb21waWxlR2V0QnlJ
ZFNsb3dDYXNlKGludCBkc3QsIGludCBiYXNlLCBJZGVudGlmaWVyKiBpZGVudCwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICAvLyBBcyBmb3IgdGhlIGhvdCBw
YXRoIG9mIGdldF9ieV9pZCwgYWJvdmUsIHdlIGVuc3VyZSB0aGF0IHdlIGNhbiB1c2UgYW4gYXJj
aGl0ZWN0dXJlIHNwZWNpZmljIG9mZnNldAogICAgIC8vIHNvIHRoYXQgd2Ugb25seSBuZWVkIHRy
YWNrIG9uZSBwb2ludGVyIGludG8gdGhlIHNsb3cgY2FzZSBjb2RlIC0gd2UgdHJhY2sgYSBwb2lu
dGVyIHRvIHRoZSBsb2NhdGlvbgpAQCAtNTE4LDcgKzQ1MSw3IEBAIHZvaWQgSklUOjpjb21waWxl
R2V0QnlJZFNsb3dDYXNlKGludCBkc3QKICAgICBCRUdJTl9VTklOVEVSUlVQVEVEX1NFUVVFTkNF
KHNlcXVlbmNlR2V0QnlJZFNsb3dDYXNlKTsKICAgICAKICAgICBMYWJlbCBjb2xkUGF0aEJlZ2lu
KHRoaXMpOwotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGlzTWV0aG9kQ2hlY2sgPyBj
dGlfb3BfZ2V0X2J5X2lkX21ldGhvZF9jaGVjayA6IGN0aV9vcF9nZXRfYnlfaWQpOworICAgIEpJ
VFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9nZXRfYnlfaWQpOwogICAgIHN0dWJDYWxs
LmFkZEFyZ3VtZW50KHJlZ1QxLCByZWdUMCk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1
c3RlZEltbVB0cihpZGVudCkpOwogICAgIENhbGwgY2FsbCA9IHN0dWJDYWxsLmNhbGwoZHN0KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCShyZXZpc2lvbiAxMzM0MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQwLDcxICs0NDAsNiBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgc3R1YkNhbGwuY2FsbChj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
bWV0aG9kX2NoZWNrKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgLy8g
QXNzZXJ0IHRoYXQgdGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbiBpcyBhIGdldF9ieV9pZC4KLSAg
ICBBU1NFUlQobV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVjdGlvbiAr
IE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlf
aWQKLSAgICAgICAgfHwgbV9pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKGN1cnJlbnRJbnN0cnVj
dGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKSktPnUub3Bjb2RlKSA9PSBvcF9n
ZXRfYnlfaWRfb3V0X29mX2xpbmUpOwotCi0gICAgY3VycmVudEluc3RydWN0aW9uICs9IE9QQ09E
RV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKTsKLSAgICB1bnNpZ25lZCByZXN1bHRWUmVnID0gY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBiYXNlVlJlZyA9IGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgSWRlbnRpZmllciogaWRlbnQgPSAm
KG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQp
KTsKLQotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZVZSZWcsIHJlZ1QwKTsKLQotICAg
IC8vIERvIHRoZSBtZXRob2QgY2hlY2sgLSBjaGVjayB0aGUgb2JqZWN0ICYgaXRzIHByb3RvdHlw
ZSdzIHN0cnVjdHVyZSBpbmxpbmUgKHRoaXMgaXMgdGhlIGNvbW1vbiBjYXNlKS4KLSAgICBtX21l
dGhvZENhbGxDb21waWxhdGlvbkluZm8uYXBwZW5kKE1ldGhvZENhbGxDb21waWxhdGlvbkluZm8o
bV9ieXRlY29kZU9mZnNldCwgbV9wcm9wZXJ0eUFjY2Vzc0NvbXBpbGF0aW9uSW5mby5zaXplKCkp
KTsKLSAgICBNZXRob2RDYWxsQ29tcGlsYXRpb25JbmZvJiBpbmZvID0gbV9tZXRob2RDYWxsQ29t
cGlsYXRpb25JbmZvLmxhc3QoKTsKLQotICAgIEp1bXAgbm90Q2VsbCA9IGVtaXRKdW1wSWZOb3RK
U0NlbGwocmVnVDApOwotCi0gICAgQkVHSU5fVU5JTlRFUlJVUFRFRF9TRVFVRU5DRShzZXF1ZW5j
ZU1ldGhvZENoZWNrKTsKLQotICAgIEp1bXAgc3RydWN0dXJlQ2hlY2sgPSBicmFuY2hQdHJXaXRo
UGF0Y2goTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBpbmZvLnN0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0
PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkpOwotICAgIERhdGFMYWJlbFB0
ciBwcm90b1N0cnVjdHVyZVRvQ29tcGFyZSwgcHJvdG9PYmogPSBtb3ZlV2l0aFBhdGNoKFRydXN0
ZWRJbW1QdHIoMCksIHJlZ1QxKTsKLSAgICBKdW1wIHByb3RvU3RydWN0dXJlQ2hlY2sgPSBicmFu
Y2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBwcm90b1N0cnVjdHVyZVRvQ29tcGFyZSwgVHJ1c3RlZEltbVB0cihyZWludGVy
cHJldF9jYXN0PHZvaWQqPihwYXRjaEdldEJ5SWREZWZhdWx0U3RydWN0dXJlKSkpOwotCi0gICAg
Ly8gVGhpcyB3aWxsIGJlIHJlbGlua2VkIHRvIGxvYWQgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgZG9p
bmcgYSBsb2FkLgotICAgIERhdGFMYWJlbFB0ciBwdXRGdW5jdGlvbiA9IG1vdmVXaXRoUGF0Y2go
VHJ1c3RlZEltbVB0cigwKSwgcmVnVDApOwotCi0gICAgRU5EX1VOSU5URVJSVVBURURfU0VRVUVO
Q0Uoc2VxdWVuY2VNZXRob2RDaGVjayk7Ci0KLSAgICBKdW1wIG1hdGNoID0ganVtcCgpOwotCi0g
ICAgLy8gTGluayB0aGUgZmFpbHVyZSBjYXNlcyBoZXJlLgotICAgIG5vdENlbGwubGluayh0aGlz
KTsKLSAgICBzdHJ1Y3R1cmVDaGVjay5saW5rKHRoaXMpOwotICAgIHByb3RvU3RydWN0dXJlQ2hl
Y2subGluayh0aGlzKTsKLQotICAgIC8vIERvIGEgcmVndWxhcihpc2gpIGdldF9ieV9pZCAodGhl
IHNsb3cgY2FzZSB3aWxsIGJlIGxpbmsgdG8KLSAgICAvLyBjdGlfb3BfZ2V0X2J5X2lkX21ldGhv
ZF9jaGVjayBpbnN0ZWFkIG9mIGN0aV9vcF9nZXRfYnlfaWQuCi0gICAgY29tcGlsZUdldEJ5SWRI
b3RQYXRoKGJhc2VWUmVnLCBpZGVudCk7Ci0KLSAgICBtYXRjaC5saW5rKHRoaXMpOwotICAgIGVt
aXRWYWx1ZVByb2ZpbGluZ1NpdGUobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3Bf
bWV0aG9kX2NoZWNrKSk7Ci0gICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnKTsK
LQotICAgIC8vIFdlJ3ZlIGFscmVhZHkgZ2VuZXJhdGVkIHRoZSBmb2xsb3dpbmcgZ2V0X2J5X2lk
LCBzbyBtYWtlIHN1cmUgaXQncyBza2lwcGVkIG92ZXIuCi0gICAgbV9ieXRlY29kZU9mZnNldCAr
PSBPUENPREVfTEVOR1RIKG9wX2dldF9ieV9pZCk7Ci0KLSAgICBtX3Byb3BlcnR5QWNjZXNzQ29t
cGlsYXRpb25JbmZvLmxhc3QoKS5hZGRNZXRob2RDaGVja0luZm8oaW5mby5zdHJ1Y3R1cmVUb0Nv
bXBhcmUsIHByb3RvT2JqLCBwcm90b1N0cnVjdHVyZVRvQ29tcGFyZSwgcHV0RnVuY3Rpb24pOwot
fQotCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbWV0aG9kX2NoZWNrKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCi17
Ci0gICAgY3VycmVudEluc3RydWN0aW9uICs9IE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNr
KTsKLSAgICB1bnNpZ25lZCByZXN1bHRWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKLSAgICB1bnNpZ25lZCBiYXNlVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7Ci0gICAgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVy
KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKLQotICAgIGNvbXBpbGVHZXRCeUlk
U2xvd0Nhc2UocmVzdWx0VlJlZywgYmFzZVZSZWcsIGlkZW50LCBpdGVyLCB0cnVlKTsKLSAgICBl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKG1fYnl0ZWNvZGVPZmZzZXQgKyBPUENPREVfTEVOR1RIKG9w
X21ldGhvZF9jaGVjaykpOwotCi0gICAgLy8gV2UndmUgYWxyZWFkeSBnZW5lcmF0ZWQgdGhlIGZv
bGxvd2luZyBnZXRfYnlfaWQsIHNvIG1ha2Ugc3VyZSBpdCdzIHNraXBwZWQgb3Zlci4KLSAgICBt
X2J5dGVjb2RlT2Zmc2V0ICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X2lkKTsKLX0KLQogdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgdW5zaWduZWQgcmVzdWx0VlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7CkBAIC01NTUsMTEgKzQ5MCwxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5
X2lkKEluc3RydWN0CiAgICAgdW5zaWduZWQgYmFzZVZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOwogICAgIElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRl
bnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CiAKLSAgICBjb21waWxl
R2V0QnlJZFNsb3dDYXNlKHJlc3VsdFZSZWcsIGJhc2VWUmVnLCBpZGVudCwgaXRlciwgZmFsc2Up
OworICAgIGNvbXBpbGVHZXRCeUlkU2xvd0Nhc2UocmVzdWx0VlJlZywgYmFzZVZSZWcsIGlkZW50
LCBpdGVyKTsKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7CiB9CiAKLXZvaWQgSklUOjpj
b21waWxlR2V0QnlJZFNsb3dDYXNlKGludCByZXN1bHRWUmVnLCBpbnQgYmFzZVZSZWcsIElkZW50
aWZpZXIqIGlkZW50LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBib29s
IGlzTWV0aG9kQ2hlY2spCit2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRTbG93Q2FzZShpbnQgcmVz
dWx0VlJlZywgaW50IGJhc2VWUmVnLCBJZGVudGlmaWVyKiBpZGVudCwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICAvLyBBcyBmb3IgdGhlIGhvdCBwYXRoIG9m
IGdldF9ieV9pZCwgYWJvdmUsIHdlIGVuc3VyZSB0aGF0IHdlIGNhbiB1c2UgYW4gYXJjaGl0ZWN0
dXJlIHNwZWNpZmljIG9mZnNldAogICAgIC8vIHNvIHRoYXQgd2Ugb25seSBuZWVkIHRyYWNrIG9u
ZSBwb2ludGVyIGludG8gdGhlIHNsb3cgY2FzZSBjb2RlIC0gd2UgdHJhY2sgYSBwb2ludGVyIHRv
IHRoZSBsb2NhdGlvbgpAQCAtNTczLDcgKzUwOCw3IEBAIHZvaWQgSklUOjpjb21waWxlR2V0QnlJ
ZFNsb3dDYXNlKGludCByZXMKICAgICBCRUdJTl9VTklOVEVSUlVQVEVEX1NFUVVFTkNFKHNlcXVl
bmNlR2V0QnlJZFNsb3dDYXNlKTsKIAogICAgIExhYmVsIGNvbGRQYXRoQmVnaW4odGhpcyk7Ci0g
ICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgaXNNZXRob2RDaGVjayA/IGN0aV9vcF9nZXRf
YnlfaWRfbWV0aG9kX2NoZWNrIDogY3RpX29wX2dldF9ieV9pZCk7CisgICAgSklUU3R1YkNhbGwg
c3R1YkNhbGwodGhpcywgY3RpX29wX2dldF9ieV9pZCk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1l
bnQocmVnVDApOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIoaWRlbnQp
KTsKICAgICBDYWxsIGNhbGwgPSBzdHViQ2FsbC5jYWxsKHJlc3VsdFZSZWcpOwpAQCAtMTM0NCwy
MCArMTI3OSw2IEBAIHZvaWQgSklUOjp0ZXN0UHJvdG90eXBlKEpTVmFsdWUgcHJvdG90eXAKICAg
ICBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2socHJvdG90eXBlLmFzQ2VsbCgpLCBwcm90b3R5
cGUuYXNDZWxsKCktPnN0cnVjdHVyZSgpLCBzdHViSW5mbywgZmFpbHVyZUNhc2VzLCByZWdUMyk7
CiB9CiAKLXZvaWQgSklUOjpwYXRjaE1ldGhvZENhbGxQcm90byhKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENh
bGxMaW5rSW5mbywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBKU09iamVjdCogY2FsbGVl
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIHByb3RvLCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MpCi17Ci0gICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVC
bG9jayk7Ci0gICAgCi0gICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIHN0cnVjdHVyZUxvY2F0
aW9uID0gbWV0aG9kQ2FsbExpbmtJbmZvLmNhY2hlZFN0cnVjdHVyZS5sb2NhdGlvbigpOwotICAg
IG1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRTdHJ1Y3R1cmUuc2V0KGdsb2JhbERhdGEsIHN0cnVj
dHVyZUxvY2F0aW9uLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwot
ICAgIAotICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gcHJvdG8tPnN0cnVjdHVy
ZSgpOwotICAgIG1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuc2V0
KGdsb2JhbERhdGEsIHN0cnVjdHVyZUxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHN0dWJJ
bmZvLnBhdGNoLmJhc2VsaW5lLm1ldGhvZENoZWNrUHJvdG9TdHJ1Y3R1cmVUb0NvbXBhcmUpLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBwcm90b3R5cGVTdHJ1Y3R1cmUpOwotICAgIG1l
dGhvZENhbGxMaW5rSW5mby5jYWNoZWRQcm90b3R5cGUuc2V0KGdsb2JhbERhdGEsIHN0cnVjdHVy
ZUxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmJhc2VsaW5lLm1l
dGhvZENoZWNrUHJvdG9PYmopLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBwcm90byk7
Ci0gICAgbWV0aG9kQ2FsbExpbmtJbmZvLmNhY2hlZEZ1bmN0aW9uLnNldChnbG9iYWxEYXRhLCBz
dHJ1Y3R1cmVMb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldChzdHViSW5mby5wYXRjaC5iYXNl
bGluZS5tZXRob2RDaGVja1B1dEZ1bmN0aW9uKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KSwgY2FsbGVlKTsKLSAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rpb24ocmV0
dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9tZXRob2RfY2hlY2tfdXBk
YXRlKSk7Ci19Ci0KIGJvb2wgSklUOjppc0RpcmVjdFB1dEJ5SWQoU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvKQogewogICAgIHN3aXRjaCAoc3R1YkluZm8tPmFjY2Vzc1R5cGUpIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMzM0MzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTUxMiwxNzggKzE1MTIsNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVjdCosIG9w
X3B1dF9iCiAgICAgcmV0dXJuIGJhc2U7CiB9CiAKLURFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29k
ZWRKU1ZhbHVlLCBvcF9nZXRfYnlfaWRfbWV0aG9kX2NoZWNrKQotewotICAgIFNUVUJfSU5JVF9T
VEFDS19GUkFNRShzdGFja0ZyYW1lKTsKLQotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3Rh
Y2tGcmFtZS5jYWxsRnJhbWU7Ci0gICAgSWRlbnRpZmllciYgaWRlbnQgPSBzdGFja0ZyYW1lLmFy
Z3NbMV0uaWRlbnRpZmllcigpOwotCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGFja0Zy
YW1lLmNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7Ci0gICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRo
b2RDYWxsTGlua0luZm8gPSBjb2RlQmxvY2stPmdldE1ldGhvZENhbGxMaW5rSW5mbyhTVFVCX1JF
VFVSTl9BRERSRVNTKTsKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBjb2RlQmxv
Y2stPmdldFN0dWJJbmZvKFNUVUJfUkVUVVJOX0FERFJFU1MpOwotICAgIEFjY2Vzc1R5cGUgYWNj
ZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpOwot
Ci0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwot
ICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBi
YXNlVmFsdWUuZ2V0KGNhbGxGcmFtZSwgaWRlbnQsIHNsb3QpOwotICAgIENIRUNLX0ZPUl9FWENF
UFRJT04oKTsKLSAgICAKLSAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NU
eXBlPihzdHViSW5mby5hY2Nlc3NUeXBlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwotCi0gICAgaWYgKCFtZXRob2RDYWxsTGlua0luZm8uc2Vlbk9uY2UoKSkgewot
ICAgICAgICBtZXRob2RDYWxsTGlua0luZm8uc2V0U2VlbigpOwotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0gICAgfQotCi0gICAgLy8gSWYgd2Ugc3VjY2Vzc2Z1bGx5
IGdvdCBzb21ldGhpbmcsIHRoZW4gdGhlIGJhc2UgZnJvbSB3aGljaCBpdCBpcyBiZWluZyBhY2Nl
c3NlZCBtdXN0Ci0gICAgLy8gYmUgYW4gb2JqZWN0LiAgKEFzc2VydGlvbiB0byBlbnN1cmUgYXNP
YmplY3QoKSBjYWxsIGJlbG93IGlzIHNhZmUsIHdoaWNoIGNvbWVzIGFmdGVyCi0gICAgLy8gYW4g
aXNDYWNoZWFibGUoKSBjaGNlY2suCi0gICAgQVNTRVJUKCFzbG90LmlzQ2FjaGVhYmxlVmFsdWUo
KSB8fCBzbG90LnNsb3RCYXNlKCkuaXNPYmplY3QoKSk7Ci0KLSAgICAvLyBDaGVjayB0aGF0Ogot
ICAgIC8vICAgKiBXZSdyZSBkZWFsaW5nIHdpdGggYSBKU0NlbGwsCi0gICAgLy8gICAqIHRoZSBw
cm9wZXJ0eSBpcyBjYWNoYWJsZSwKLSAgICAvLyAgICogaXQncyBub3QgYSBkaWN0aW9uYXJ5Ci0g
ICAgLy8gICAqIHRoZXJlIGlzIGEgZnVuY3Rpb24gY2FjaGVkLgotICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlOwotICAgIEpTQ2VsbCogc3BlY2lmaWM7Ci0gICAgSlNPYmplY3QqIHNsb3RCYXNlT2Jq
ZWN0OwotICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKLSAgICAgICAgJiYgc2xvdC5pc0NhY2hl
YWJsZVZhbHVlKCkKLSAgICAgICAgJiYgIShzdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuYXNDZWxsKCkt
PnN0cnVjdHVyZSgpKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQotICAgICAgICAmJiAoc2xv
dEJhc2VPYmplY3QgPSBhc09iamVjdChzbG90LnNsb3RCYXNlKCkpKS0+Z2V0UHJvcGVydHlTcGVj
aWZpY1ZhbHVlKGNhbGxGcmFtZSwgaWRlbnQsIHNwZWNpZmljKQotICAgICAgICAmJiBzcGVjaWZp
YwotICAgICAgICApIHsKLQotICAgICAgICBKU09iamVjdCogY2FsbGVlID0gYXNPYmplY3Qoc3Bl
Y2lmaWMpOwotCi0gICAgICAgIC8vIFNpbmNlIHdlJ3JlIGFjY2Vzc2luZyBhIHByb3RvdHlwZSBp
biBhIGxvb3AsIGl0J3MgYSBnb29kIGJldCB0aGF0IGl0Ci0gICAgICAgIC8vIHNob3VsZCBub3Qg
YmUgdHJlYXRlZCBhcyBhIGRpY3Rpb25hcnkuCi0gICAgICAgIGlmIChzbG90QmFzZU9iamVjdC0+
c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQotICAgICAgICAgICAgc2xvdEJhc2VPYmplY3Qt
PmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKLQotICAg
ICAgICAvLyBUaGUgcmVzdWx0IGZldGNoZWQgc2hvdWxkIGFsd2F5cyBiZSB0aGUgY2FsbGVlIQot
ICAgICAgICBBU1NFUlQocmVzdWx0ID09IEpTVmFsdWUoY2FsbGVlKSk7Ci0KLSAgICAgICAgLy8g
Q2hlY2sgdG8gc2VlIGlmIHRoZSBmdW5jdGlvbiBpcyBvbiB0aGUgb2JqZWN0J3MgcHJvdG90eXBl
LiAgUGF0Y2ggdXAgdGhlIGNvZGUgdG8gb3B0aW1pemUuCi0gICAgICAgIGlmIChzbG90LnNsb3RC
YXNlKCkgPT0gc3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKSkgewotICAg
ICAgICAgICAgSklUOjpwYXRjaE1ldGhvZENhbGxQcm90byhjYWxsRnJhbWUtPmdsb2JhbERhdGEo
KSwgY29kZUJsb2NrLCBtZXRob2RDYWxsTGlua0luZm8sIHN0dWJJbmZvLCBjYWxsZWUsIHN0cnVj
dHVyZSwgc2xvdEJhc2VPYmplY3QsIFNUVUJfUkVUVVJOX0FERFJFU1MpOwotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
Q2hlY2sgdG8gc2VlIGlmIHRoZSBmdW5jdGlvbiBpcyBvbiB0aGUgb2JqZWN0IGl0c2VsZi4KLSAg
ICAgICAgLy8gU2luY2Ugd2UgZ2VuZXJhdGUgdGhlIG1ldGhvZC1jaGVjayB0byBjaGVjayBib3Ro
IHRoZSBzdHJ1Y3R1cmUgYW5kIGEgcHJvdG90eXBlLXN0cnVjdHVyZSAoc2luY2UgdGhpcwotICAg
ICAgICAvLyBpcyB0aGUgY29tbW9uIGNhc2UpIHdlIGhhdmUgYSBwcm9ibGVtIC0gd2UgbmVlZCB0
byBwYXRjaCB0aGUgcHJvdG90eXBlIHN0cnVjdHVyZSBjaGVjayB0byBkbyBzb21ldGhpbmcKLSAg
ICAgICAgLy8gdXNlZnVsLiAgV2UgY291bGQgdHJ5IHRvIG5vcCBpdCBvdXQgYWx0b2dldGhlciwg
YnV0IHRoYXQncyBhIGxpdHRsZSBtZXNzeSwgc28gbGV0cyBkbyBzb21ldGhpbmcgc2ltcGxlcgot
ICAgICAgICAvLyBmb3Igbm93LiAgRm9yIG5vdyBpdCBwZXJmb3JtcyBhIGNoZWNrIG9uIGEgc3Bl
Y2lhbCBvYmplY3Qgb24gdGhlIGdsb2JhbCBvYmplY3Qgb25seSB1c2VkIGZvciB0aGlzCi0gICAg
ICAgIC8vIHB1cnBvc2UuICBUaGUgb2JqZWN0IGlzIGluIG5vIHdheSBleHBvc2VkLCBhbmQgYXMg
c3VjaCB0aGUgY2hlY2sgd2lsbCBhbHdheXMgcGFzcy4KLSAgICAgICAgaWYgKHNsb3Quc2xvdEJh
c2UoKSA9PSBiYXNlVmFsdWUpIHsKLSAgICAgICAgICAgIEpJVDo6cGF0Y2hNZXRob2RDYWxsUHJv
dG8oY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jaywgbWV0aG9kQ2FsbExpbmtJbmZv
LCBzdHViSW5mbywgY2FsbGVlLCBzdHJ1Y3R1cmUsIGNhbGxGcmFtZS0+c2NvcGUoKS0+Z2xvYmFs
T2JqZWN0KCktPm1ldGhvZENhbGxEdW1teSgpLCBTVFVCX1JFVFVSTl9BRERSRVNTKTsKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIC8vIFJldmVydCB0aGUgZ2V0X2J5X2lkIG9wIGJhY2sgdG8gYmVpbmcgYSByZWd1bGFy
IGdldF9ieV9pZCAtIGFsbG93IGl0IHRvIGNhY2hlIGxpa2Ugbm9ybWFsLCBpZiBpdCBuZWVkcyB0
by4KLSAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoY29kZUJsb2NrLCBTVFVCX1JFVFVS
Tl9BRERSRVNTLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkKSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCi1ERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVk
SlNWYWx1ZSwgb3BfZ2V0X2J5X2lkX21ldGhvZF9jaGVja191cGRhdGUpCi17Ci0gICAgU1RVQl9J
TklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBJZGVudGlmaWVyJiBpZGVudCA9IHN0YWNrRnJh
bWUuYXJnc1sxXS5pZGVudGlmaWVyKCk7Ci0KLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0
YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICBNZXRob2RDYWxsTGlua0luZm8m
IG1ldGhvZENhbGxMaW5rSW5mbyA9IGNvZGVCbG9jay0+Z2V0TWV0aG9kQ2FsbExpbmtJbmZvKFNU
VUJfUkVUVVJOX0FERFJFU1MpOwotICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IGNv
ZGVCbG9jay0+Z2V0U3R1YkluZm8oU1RVQl9SRVRVUk5fQUREUkVTUyk7Ci0gICAgQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8uYWNjZXNzVHlw
ZSk7Ci0KLSAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVl
KCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKLSAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGJhc2VWYWx1ZS5nZXQoY2FsbEZyYW1lLCBpZGVudCwgc2xvdCk7Ci0gICAgQ0hFQ0tfRk9S
X0VYQ0VQVElPTigpOwotICAgIAotICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFj
Y2Vzc1R5cGU+KHN0dWJJbmZvLmFjY2Vzc1R5cGUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7Ci0KLSAgICBBU1NFUlQobWV0aG9kQ2FsbExpbmtJbmZvLnNlZW5PbmNl
KCkpOwotCi0gICAgLy8gSWYgd2Ugc3VjY2Vzc2Z1bGx5IGdvdCBzb21ldGhpbmcsIHRoZW4gdGhl
IGJhc2UgZnJvbSB3aGljaCBpdCBpcyBiZWluZyBhY2Nlc3NlZCBtdXN0Ci0gICAgLy8gYmUgYW4g
b2JqZWN0LiAgKEFzc2VydGlvbiB0byBlbnN1cmUgYXNPYmplY3QoKSBjYWxsIGJlbG93IGlzIHNh
ZmUsIHdoaWNoIGNvbWVzIGFmdGVyCi0gICAgLy8gYW4gaXNDYWNoZWFibGUoKSBjaGNlY2suCi0g
ICAgQVNTRVJUKCFzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSB8fCBzbG90LnNsb3RCYXNlKCkuaXNP
YmplY3QoKSk7Ci0KLSAgICAvLyBDaGVjayB0aGF0OgotICAgIC8vICAgKiBXZSdyZSBkZWFsaW5n
IHdpdGggYSBKU0NlbGwsCi0gICAgLy8gICAqIHRoZSBwcm9wZXJ0eSBpcyBjYWNoYWJsZSwKLSAg
ICAvLyAgICogaXQncyBub3QgYSBkaWN0aW9uYXJ5Ci0gICAgLy8gICAqIHRoZXJlIGlzIGEgZnVu
Y3Rpb24gY2FjaGVkLgotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOwotICAgIEpTQ2VsbCogc3Bl
Y2lmaWM7Ci0gICAgSlNPYmplY3QqIHNsb3RCYXNlT2JqZWN0OwotICAgIGlmICghKGJhc2VWYWx1
ZS5pc0NlbGwoKQotICAgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpCi0gICAgICAg
ICAgJiYgIShzdHJ1Y3R1cmUgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpKS0+aXNV
bmNhY2hlYWJsZURpY3Rpb25hcnkoKQotICAgICAgICAgICYmIChzbG90QmFzZU9iamVjdCA9IGFz
T2JqZWN0KHNsb3Quc2xvdEJhc2UoKSkpLT5nZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoY2FsbEZy
YW1lLCBpZGVudCwgc3BlY2lmaWMpCi0gICAgICAgICAgJiYgc3BlY2lmaWMKLSAgICAgICAgICAp
Ci0gICAgICAgIHx8IChzbG90LnNsb3RCYXNlKCkgIT0gc3RydWN0dXJlLT5wcm90b3R5cGVGb3JM
b29rdXAoY2FsbEZyYW1lKQotICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpICE9IGJhc2VW
YWx1ZSkpIHsKLSAgICAgICAgLy8gUmV2ZXJ0IHRoZSBnZXRfYnlfaWQgb3AgYmFjayB0byBiZWlu
ZyBhIHJlZ3VsYXIgZ2V0X2J5X2lkIC0gYWxsb3cgaXQgdG8gY2FjaGUgbGlrZSBub3JtYWwsIGlm
IGl0IG5lZWRzIHRvLgotICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoY29kZUJs
b2NrLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkKSk7
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLSAgICB9Ci0gICAgCi0g
ICAgLy8gTm93IGNoZWNrIGlmIHRoZSBzaXR1YXRpb24gaGFzIGNoYW5nZWQgc3VmZmljaWVudGx5
IHRoYXQgd2Ugc2hvdWxkIGJhaWwgb3V0IG9mCi0gICAgLy8gZG9pbmcgbWV0aG9kX2NoZWNrIG9w
dGltaXphdGlvbnMgZW50aXJlbHksIG9yIGlmIGl0IGNoYW5nZWQgb25seSBzbGlnaHRseSwgaW4K
LSAgICAvLyB3aGljaCBjYXNlIHdlIGNhbiBqdXN0IHJlcGF0Y2guCi0gICAgCi0gICAgSlNWYWx1
ZSBwcm90byA9IHN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSk7Ci0gICAg
Ci0gICAgYm9vbCBwcmV2aW91c1dhc1Byb3RvID0gbWV0aG9kQ2FsbExpbmtJbmZvLmNhY2hlZFBy
b3RvdHlwZS5nZXQoKSAhPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5tZXRob2RDYWxsRHVt
bXkoKTsKLSAgICBib29sIGN1cnJlbnRJc1Byb3RvID0gc2xvdC5zbG90QmFzZSgpID09IHByb3Rv
OwotICAgIAotICAgIEpTT2JqZWN0KiBjYWxsZWUgPSBhc09iamVjdChzcGVjaWZpYyk7Ci0gICAg
Ci0gICAgaWYgKHByZXZpb3VzV2FzUHJvdG8gIT0gY3VycmVudElzUHJvdG8KLSAgICAgICAgfHwg
IXN0cnVjdHVyZS0+dHJhbnNpdGl2ZWx5VHJhbnNpdGlvbmVkRnJvbShtZXRob2RDYWxsTGlua0lu
Zm8uY2FjaGVkU3RydWN0dXJlLmdldCgpKQotICAgICAgICB8fCAocHJldmlvdXNXYXNQcm90byAm
JiAhc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT50cmFuc2l0aXZlbHlUcmFuc2l0aW9uZWRG
cm9tKG1ldGhvZENhbGxMaW5rSW5mby5jYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuZ2V0KCkpKQot
ICAgICAgICB8fCBzcGVjaWZpYyAhPSBtZXRob2RDYWxsTGlua0luZm8uY2FjaGVkRnVuY3Rpb24u
Z2V0KCkpIHsKLSAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNvZGVCbG9jaywg
U1RVQl9SRVRVUk5fQUREUkVTUywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZCkpOwotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0gICAgfQotICAgIAotICAgIC8v
IEl0IG1ha2VzIHNlbnNlIHRvIHNpbXBseSByZXBhdGNoIHRoZSBtZXRob2RfY2hlY2suCi0gICAg
Ci0gICAgLy8gU2luY2Ugd2UncmUgYWNjZXNzaW5nIGEgcHJvdG90eXBlIGluIGEgbG9vcCwgaXQn
cyBhIGdvb2QgYmV0IHRoYXQgaXQKLSAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBk
aWN0aW9uYXJ5LgotICAgIGlmIChzbG90QmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlv
bmFyeSgpKQotICAgICAgICBzbG90QmFzZU9iamVjdC0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qo
Y2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkpOwotICAgIAotICAgIC8vIFRoZSByZXN1bHQgZmV0Y2hl
ZCBzaG91bGQgYWx3YXlzIGJlIHRoZSBjYWxsZWUhCi0gICAgQVNTRVJUKHJlc3VsdCA9PSBKU1Zh
bHVlKGNhbGxlZSkpOwotICAgIAotICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZnVuY3Rpb24g
aXMgb24gdGhlIG9iamVjdCdzIHByb3RvdHlwZS4gUGF0Y2ggdXAgdGhlIGNvZGUgdG8gb3B0aW1p
emUuCi0gICAgaWYgKHNsb3Quc2xvdEJhc2UoKSA9PSBwcm90bykgewotICAgICAgICBKSVQ6OnBh
dGNoTWV0aG9kQ2FsbFByb3RvKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2ssIG1l
dGhvZENhbGxMaW5rSW5mbywgc3R1YkluZm8sIGNhbGxlZSwgc3RydWN0dXJlLCBzbG90QmFzZU9i
amVjdCwgU1RVQl9SRVRVUk5fQUREUkVTUyk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKLSAgICB9Ci0gICAgCi0gICAgQVNTRVJUKHNsb3Quc2xvdEJhc2UoKSA9PSBi
YXNlVmFsdWUpOwotICAgIAotICAgIC8vIFNpbmNlIHdlIGdlbmVyYXRlIHRoZSBtZXRob2QtY2hl
Y2sgdG8gY2hlY2sgYm90aCB0aGUgc3RydWN0dXJlIGFuZCBhIHByb3RvdHlwZS1zdHJ1Y3R1cmUg
KHNpbmNlIHRoaXMKLSAgICAvLyBpcyB0aGUgY29tbW9uIGNhc2UpIHdlIGhhdmUgYSBwcm9ibGVt
IC0gd2UgbmVlZCB0byBwYXRjaCB0aGUgcHJvdG90eXBlIHN0cnVjdHVyZSBjaGVjayB0byBkbyBz
b21ldGhpbmcKLSAgICAvLyB1c2VmdWwuIFdlIGNvdWxkIHRyeSB0byBub3AgaXQgb3V0IGFsdG9n
ZXRoZXIsIGJ1dCB0aGF0J3MgYSBsaXR0bGUgbWVzc3ksIHNvIGxldHMgZG8gc29tZXRoaW5nIHNp
bXBsZXIKLSAgICAvLyBmb3Igbm93LiBGb3Igbm93IGl0IHBlcmZvcm1zIGEgY2hlY2sgb24gYSBz
cGVjaWFsIG9iamVjdCBvbiB0aGUgZ2xvYmFsIG9iamVjdCBvbmx5IHVzZWQgZm9yIHRoaXMKLSAg
ICAvLyBwdXJwb3NlLiBUaGUgb2JqZWN0IGlzIGluIG5vIHdheSBleHBvc2VkLCBhbmQgYXMgc3Vj
aCB0aGUgY2hlY2sgd2lsbCBhbHdheXMgcGFzcy4KLSAgICBKSVQ6OnBhdGNoTWV0aG9kQ2FsbFBy
b3RvKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2ssIG1ldGhvZENhbGxMaW5rSW5m
bywgc3R1YkluZm8sIGNhbGxlZSwgc3RydWN0dXJlLCBjYWxsRnJhbWUtPnNjb3BlKCktPmdsb2Jh
bE9iamVjdCgpLT5tZXRob2RDYWxsRHVtbXkoKSwgU1RVQl9SRVRVUk5fQUREUkVTUyk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElP
TihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X2lkKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19G
UkFNRShzdGFja0ZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJ
KHJldmlzaW9uIDEzMzQzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzY1LDggKzM2NSw2IEBAIGV4dGVybiAiQyIgewogICAgIEVu
Y29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9nZXRfYnlfaWRfY3VzdG9tX3N0dWIoU1RVQl9B
UkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NU
VUIgY3RpX29wX2dldF9ieV9pZF9nZW5lcmljKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lO
VEVSTkFMOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9nZXRfYnlfaWRfZ2V0
dGVyX3N0dWIoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Ci0gICAgRW5jb2Rl
ZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2dldF9ieV9pZF9tZXRob2RfY2hlY2soU1RVQl9BUkdT
X0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Ci0gICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIg
Y3RpX29wX2dldF9ieV9pZF9tZXRob2RfY2hlY2tfdXBkYXRlKFNUVUJfQVJHU19ERUNMQVJBVElP
TikgV1RGX0lOVEVSTkFMOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9nZXRf
YnlfaWRfcHJvdG9fZmFpbChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAg
ICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QoU1RV
Ql9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklU
X1NUVUIgY3RpX29wX2dldF9ieV9pZF9wcm90b19saXN0X2Z1bGwoU1RVQl9BUkdTX0RFQ0xBUkFU
SU9OKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxMzM0MzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcg
Y29weSkKQEAgLTEyMDMsMTIgKzEyMDMsNiBAQCBfbGxpbnRfb3Bfc3RyY2F0OgogICAgIGRpc3Bh
dGNoKDQpCiAKIAotX2xsaW50X29wX21ldGhvZF9jaGVjazoKLSAgICB0cmFjZUV4ZWN1dGlvbigp
Ci0gICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNrcyBhbmQgdXNlIG5vcm1hbCBnZXRfYnlfaWQg
b3B0aW1pemF0aW9ucy4KLSAgICBkaXNwYXRjaCgxKQotCi0KIF9sbGludF9vcF9nZXRfcG5hbWVz
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9nZXRfcG5hbWVzKQo=
</data>
<flag name="review"
          id="186527"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="186564"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>