<?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>164294</bug_id>
          
          <creation_ts>2016-11-01 14:33:35 -0700</creation_ts>
          <short_desc>IndexedDB 2.0: Support IDBIndex getAll/getAllKeys</short_desc>
          <delta_ts>2016-11-01 16:55:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>160306</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>alecflett</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1247045</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-01 14:33:35 -0700</bug_when>
    <thetext>IndexedDB 2.0: Support IDBIndex getAll/getAllKeys</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247046</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-01 14:33:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/28806933&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247051</commentid>
    <comment_count>2</comment_count>
      <attachid>293598</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-01 14:41:32 -0700</bug_when>
    <thetext>Created attachment 293598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247053</commentid>
    <comment_count>3</comment_count>
      <attachid>293599</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-01 14:44:09 -0700</bug_when>
    <thetext>Created attachment 293599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247130</commentid>
    <comment_count>4</comment_count>
      <attachid>293599</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-01 16:48:56 -0700</bug_when>
    <thetext>Comment on attachment 293599
Patch

Rejecting attachment 293599 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 293599, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
fs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 208257 = 424453ba5b6de6542eb0b03add65dfa2c22df4f7
r208258 = e57fd82fbfbc77231abb205cf22055b8b21a087d
r208259 = b1e3fdf830e6724458283f839761a02beadd71e1
r208260 = 754f84f41bc7e70e385ccb7376b6b421ea502d1d
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: http://webkit-queues.webkit.org/results/2446953</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247132</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-01 16:52:26 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 293599 [details]
&gt; Patch
&gt; 
&gt; Rejecting attachment 293599 [details] from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;,
&gt; &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;,
&gt; &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;,
&gt; &apos;--parent-command=commit-queue&apos;, 293599, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd:
&gt; /Volumes/Data/EWS/WebKit
&gt; 
&gt; Last 500 characters of output:
&gt; fs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
&gt; Currently at 208257 = 424453ba5b6de6542eb0b03add65dfa2c22df4f7
&gt; r208258 = e57fd82fbfbc77231abb205cf22055b8b21a087d
&gt; r208259 = b1e3fdf830e6724458283f839761a02beadd71e1
&gt; r208260 = 754f84f41bc7e70e385ccb7376b6b421ea502d1d
&gt; Done rebuilding
&gt; .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-
&gt; d52691b4dbfc
&gt; First, rewinding head to replay your work on top of it...
&gt; Fast-forwarded master to refs/remotes/origin/master.
&gt; 
&gt; Full output: http://webkit-queues.webkit.org/results/2446953

Seems like a tools issue, landing manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247135</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-01 16:55:10 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/208261</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293598</attachid>
            <date>2016-11-01 14:41:32 -0700</date>
            <delta_ts>2016-11-01 14:44:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164294-20161101143735.patch</filename>
            <type>text/plain</type>
            <size>108874</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGFkNzE4NWYzZmExMGNk
NGY2MmVjYWE1ZjE2NzZjZDdmYTcyYzhlNC4uN2U5YWQ0YWU0MTFmYTRjMWZkNDc0MTc5YzM3MjE4
ZDU2MmU4MDc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE2LTExLTAxICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkREIgMi4wOiBT
dXBwb3J0IElEQkluZGV4IGdldEFsbC9nZXRBbGxLZXlzLgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMjg4MDY5MzM+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY0Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVzdHM6IHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1nZXRhbGwtMS1wcml2YXRl
Lmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1n
ZXRhbGwtMS5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRi
aW5kZXgtZ2V0YWxsa2V5cy0xLXByaXZhdGUuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbGtleXMtMS5odG1sCisgICAgICAgICAgICAg
ICBFeGlzdGluZyBpbXBvcnRlZCBXM0MgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0QWxsKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXRBbGxLZXlzKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmlkbDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlcXVlc3Q6OmNyZWF0ZUluZGV4R2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
cXVlc3Q6OmNyZWF0ZUNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVl
c3Q6OmNyZWF0ZUdldCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRl
eFJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRl
eFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6YWxsVmFsdWVzRm9yS2V5
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmg6
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0
b3JlOjpnZXRBbGxSZWNvcmRzKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlu
ZGV4OjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5SW5kZXguaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpxdWVyeUZvckdldEFsbE9iamVjdFN0b3JlUmVjb3Jkcyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxsT2JqZWN0U3RvcmVS
ZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpnZXRBbGxJbmRleFJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpx
dWVyeUZvckdldEFsbFJlY29yZHMpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKwogMjAxNi0xMC0zMSAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5kZXhlZERCIDIuMDogU3Vw
cG9ydCBJREJPYmplY3RTdG9yZSBnZXRBbGwvZ2V0QWxsS2V5cy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAppbmRleCA5Nzc2YTJiNzk1NDhmYjJlN2Vj
ZWViZmVmMzM4NmUxNzE1OTZiMzgyLi5iYWVlMTNkMGM0MjY2ZDUyYWRlZTkwODc3NjA1YmM0Njk4
ZjYxZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXgu
Y3BwCkBAIC0zMDgsNiArMzA4LDUyIEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURC
SW5kZXg6OmRvR2V0S2V5KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLCiAgICAgcmV0
dXJuIHRyYW5zYWN0aW9uLnJlcXVlc3RHZXRLZXkoZXhlY1N0YXRlLCAqdGhpcywgcmFuZ2UpOwog
fQogCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwoRXhlY1N0
YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIE9wdGlvbmFsPHVpbnQz
Ml90PiBjb3VudCkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6OmdldEFsbCIpOwor
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigp
LmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CisKKyAgICBpZiAobV9kZWxldGVkIHx8IG1f
b2JqZWN0U3RvcmUuaXNEZWxldGVkKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVk
IHRvIGV4ZWN1dGUgJ2dldEFsbCcgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmpl
Y3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OworCisgICAgaWYgKCFtX29iamVjdFN0b3Jl
LnRyYW5zYWN0aW9uKCkuaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEFsbCcgb24gJ0lEQkluZGV4JzogVGhlIHRyYW5zYWN0
aW9uIGlzIGluYWN0aXZlIG9yIGZpbmlzaGVkLiIpIH07CisKKyAgICByZXR1cm4gbV9vYmplY3RT
dG9yZS50cmFuc2FjdGlvbigpLnJlcXVlc3RHZXRBbGxJbmRleFJlY29yZHMoZXhlY1N0YXRlLCAq
dGhpcywgcmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6VmFsdWVzLCBjb3VudCk7
Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbChFeGVj
U3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkK
K3sKKyAgICBhdXRvIG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6b25seShleGVjU3RhdGUsIGtl
eSk7CisgICAgaWYgKG9ubHlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yLCBBU0NJSUxpdGVyYWwo
IkZhaWxlZCB0byBleGVjdXRlICdnZXRBbGwnIG9uICdJREJJbmRleCc6IFRoZSBwYXJhbWV0ZXIg
aXMgbm90IGEgdmFsaWQga2V5LiIpIH07CisKKyAgICByZXR1cm4gZ2V0QWxsKGV4ZWNTdGF0ZSwg
b25seVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY291bnQpOworfQorCitFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0
YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQp
Cit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpnZXRBbGxLZXlzIik7CisgICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJh
c2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKKworICAgIGlmIChtX2RlbGV0ZWQgfHwgbV9vYmplY3RT
dG9yZS5pc0RlbGV0ZWQoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhl
Y3V0ZSAnZ2V0QWxsS2V5cycgb24gJ0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qg
c3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4iKSB9OworCisgICAgaWYgKCFtX29iamVjdFN0b3JlLnRy
YW5zYWN0aW9uKCkuaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
RmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEFsbEtleXMnIG9uICdJREJJbmRleCc6IFRoZSB0cmFuc2Fj
dGlvbiBpcyBpbmFjdGl2ZSBvciBmaW5pc2hlZC4iKSB9OworCisgICAgcmV0dXJuIG1fb2JqZWN0
U3RvcmUudHJhbnNhY3Rpb24oKS5yZXF1ZXN0R2V0QWxsSW5kZXhSZWNvcmRzKGV4ZWNTdGF0ZSwg
KnRoaXMsIHJhbmdlLmdldCgpLCBJbmRleGVkREI6OkdldEFsbFR5cGU6OktleXMsIGNvdW50KTsK
K30KKworRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsS2V5cyhF
eGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIE9wdGlvbmFsPHVpbnQzMl90PiBjb3Vu
dCkKK3sKKyAgICBhdXRvIG9ubHlSZXN1bHQgPSBJREJLZXlSYW5nZTo6b25seShleGVjU3RhdGUs
IGtleSk7CisgICAgaWYgKG9ubHlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yLCBBU0NJSUxpdGVy
YWwoIkZhaWxlZCB0byBleGVjdXRlICdnZXRBbGxLZXlzJyBvbiAnSURCSW5kZXgnOiBUaGUgcGFy
YW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtleS4iKSB9OworCisgICAgcmV0dXJuIGdldEFsbEtleXMo
ZXhlY1N0YXRlLCBvbmx5UmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb3VudCk7Cit9CisK
IHZvaWQgSURCSW5kZXg6Om1hcmtBc0RlbGV0ZWQoKQogewogICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhy
ZWFkSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaApp
bmRleCA1NmUyYjcwZGI5Y2EyNTU1NWE0OTFhODllOGEwYzEyMWY2NTNkNjYwLi4wZWIxYjllNGMw
MmI3OTEwYjk1MjI5NGQwYmVlYWY1ZmYyZWVhZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKQEAgLTcwLDYgKzcwLDExIEBAIHB1YmxpYzoKICAgICBF
eGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEtleShKU0M6OkV4ZWNTdGF0ZSYsIElEQktl
eVJhbmdlKik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRLZXkoSlNDOjpF
eGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUga2V5KTsKIAorICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJS
ZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6RXhlY1N0YXRlJiwgUmVmUHRyPElEQktleVJhbmdlPiwgT3B0
aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+
IGdldEFsbChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBrZXksIE9wdGlvbmFsPHVpbnQz
Ml90PiBjb3VudCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGxLZXlz
KEpTQzo6RXhlY1N0YXRlJiwgUmVmUHRyPElEQktleVJhbmdlPiwgT3B0aW9uYWw8dWludDMyX3Q+
IGNvdW50KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlND
OjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUga2V5LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQp
OworCiAgICAgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKCkgY29uc3QgeyByZXR1cm4gbV9pbmZv
OyB9CiAKICAgICB2b2lkIG1hcmtBc0RlbGV0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4LmlkbAppbmRleCA4YzMzYzY1ODU5NGQ3NzliODFkZDg2YzA5
OWQzNThlOTBmNTU2N2QzLi4yOTMwYzBiZWFlYWE4ZWNhNjdiZDdkN2Y1NWMwN2I1MzI4M2IyMThm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCkBA
IC00Niw2ICs0NiwxMCBAQAogICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNl
cHRpb25dIElEQlJlcXVlc3QgZ2V0KGFueSBrZXkpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0
ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0S2V5KElEQktleVJhbmdlPyBrZXkp
OwogICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVl
c3QgZ2V0S2V5KGFueSBrZXkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dF
eGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0QWxsKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9
IG51bGwsIFtFbmZvcmNlUmFuZ2VdIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAg
IFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0
QWxsKGFueSBrZXksICBbRW5mb3JjZVJhbmdlXSBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGNvdW50
KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1
ZXN0IGdldEFsbEtleXMob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgW0VuZm9y
Y2VSYW5nZV0gb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBjb3VudCk7CisgICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKGFueSBr
ZXksICBbRW5mb3JjZVJhbmdlXSBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGNvdW50KTsKICAgICBb
Q2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGNvdW50
KG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwpOwogICAgIFtDYWxsV2l0aD1TY3Jp
cHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgY291bnQoYW55IGtleSk7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApp
bmRleCAyYzJlZDE0NDA0ZmRlYjBjZGNkYTg5MTRiZjJlODI2OTM1YmViNzk0Li5lZTM3MDJmNDI0
NWJmNzJmMjcxMzE2ZGQ1MjI5ZjhjNDUwYjhhZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtNjMsMTIgKzYzLDEyIEBAIFJlZjxJ
REJSZXF1ZXN0PiBJREJSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgSURCQ3Vyc29yJiBjCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCUmVxdWVzdChj
b250ZXh0LCBjdXJzb3IsIHRyYW5zYWN0aW9uKSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJS
ZXF1ZXN0OjpjcmVhdGVDb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJJ
bmRleCYgaW5kZXgsIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK1JlZjxJREJSZXF1ZXN0
PiBJREJSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURC
SW5kZXgmIGluZGV4LCBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSURCUmVxdWVzdChjb250ZXh0LCBpbmRleCwgdHJhbnNhY3Rpb24pKTsK
IH0KIAotUmVmPElEQlJlcXVlc3Q+IElEQlJlcXVlc3Q6OmNyZWF0ZUdldChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBJREJJbmRleCYgaW5kZXgsIEluZGV4ZWREQjo6SW5kZXhSZWNv
cmRUeXBlIHJlcXVlc3RlZFJlY29yZFR5cGUsIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikK
K1JlZjxJREJSZXF1ZXN0PiBJREJSZXF1ZXN0OjpjcmVhdGVJbmRleEdldChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBJREJJbmRleCYgaW5kZXgsIEluZGV4ZWREQjo6SW5kZXhSZWNv
cmRUeXBlIHJlcXVlc3RlZFJlY29yZFR5cGUsIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJSZXF1ZXN0KGNvbnRleHQsIGluZGV4LCBy
ZXF1ZXN0ZWRSZWNvcmRUeXBlLCB0cmFuc2FjdGlvbikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IDdlNjk2MTJkNDI2YjhiYzI5ODVk
MDZhZDlmMzExMWQ2ODQ4OGFhZjYuLjdmNDIzYTFhMTczNTlmZmQzMzQyNjcxZTI5YTAzNjZjMGU2
ZGU2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmgKQEAgLTU3LDggKzU3LDggQEAgY2xhc3MgSURCUmVxdWVzdCA6IHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgSURCQWN0aXZlRE9NT2JqZWN0LAogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8SURCUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJ
REJPYmplY3RTdG9yZSYsIElEQlRyYW5zYWN0aW9uJik7CiAgICAgc3RhdGljIFJlZjxJREJSZXF1
ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQkN1cnNvciYsIElEQlRyYW5z
YWN0aW9uJik7Ci0gICAgc3RhdGljIFJlZjxJREJSZXF1ZXN0PiBjcmVhdGVDb3VudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgSURCSW5kZXgmLCBJREJUcmFuc2FjdGlvbiYpOwotICAgIHN0YXRp
YyBSZWY8SURCUmVxdWVzdD4gY3JlYXRlR2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJJ
bmRleCYsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlLCBJREJUcmFuc2FjdGlvbiYpOworICAg
IHN0YXRpYyBSZWY8SURCUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJ
REJJbmRleCYsIElEQlRyYW5zYWN0aW9uJik7CisgICAgc3RhdGljIFJlZjxJREJSZXF1ZXN0PiBj
cmVhdGVJbmRleEdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCSW5kZXgmLCBJbmRleGVk
REI6OkluZGV4UmVjb3JkVHlwZSwgSURCVHJhbnNhY3Rpb24mKTsKIAogICAgIGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgcmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZUlkZW50aWZpZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IGRmNjdhMjAwMTJkYzNmMDVjZGU3MTMz
MjVlNTA4YTUzYmQzY2Q5NDMuLjgwODI0NDhhOGZkNTIwNWZkMWM2NzQwMGQxODQzNTFiZTNmNDRl
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAKQEAgLTM2Niw4ICszNjYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpjb21t
aXQoKQogICAgIHRyYW5zaXRpb25lZFRvRmluaXNoaW5nKEluZGV4ZWREQjo6VHJhbnNhY3Rpb25T
dGF0ZTo6Q29tbWl0dGluZyk7CiAgICAgbV9kYXRhYmFzZS0+d2lsbENvbW1pdFRyYW5zYWN0aW9u
KCp0aGlzKTsKIAotICAgIGF1dG8gb3BlcmF0aW9uID0gSURCQ2xpZW50OjpjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigqdGhpcywgbnVsbHB0ciwgJklEQlRyYW5zYWN0aW9uOjpjb21taXRPblNl
cnZlcik7Ci0gICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGTW92ZShvcGVyYXRpb24pKTsKKyAgICBz
Y2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OmNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKCp0
aGlzLCBudWxscHRyLCAmSURCVHJhbnNhY3Rpb246OmNvbW1pdE9uU2VydmVyKSk7CiB9CiAKIHZv
aWQgSURCVHJhbnNhY3Rpb246OmNvbW1pdE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb24mIG9wZXJhdGlvbikKQEAgLTUyMSw4ICs1MjAsNyBAQCBSZWY8SURCT2JqZWN0U3Rv
cmU+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mCiAgICAgUmVmPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0
b3JlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgKnRoaXMpOwogICAg
IG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5zZXQoaW5mby5uYW1lKCksICZvYmplY3RTdG9yZS5n
ZXQoKSk7CiAKLSAgICBhdXRvIG9wZXJhdGlvbiA9IElEQkNsaWVudDo6Y3JlYXRlVHJhbnNhY3Rp
b25PcGVyYXRpb24oKnRoaXMsICZJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmVP
blNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZU9uU2VydmVyLCBpbmZv
KTsKLSAgICBzY2hlZHVsZU9wZXJhdGlvbihXVEZNb3ZlKG9wZXJhdGlvbikpOworICAgIHNjaGVk
dWxlT3BlcmF0aW9uKElEQkNsaWVudDo6Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMs
ICZJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlciwgJklEQlRyYW5z
YWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZU9uU2VydmVyLCBpbmZvKSk7CiAKICAgICByZXR1cm4g
b2JqZWN0U3RvcmU7CiB9CkBAIC01NTUsOCArNTUzLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6
cmVuYW1lT2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBTdHJp
bmcKICAgICBBU1NFUlQobV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZS5p
bmZvKCkubmFtZSgpKSA9PSAmb2JqZWN0U3RvcmUpOwogCiAgICAgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyID0gb2JqZWN0U3RvcmUuaW5mbygpLmlkZW50aWZpZXIoKTsKLSAgICBhdXRv
IG9wZXJhdGlvbiA9IElEQkNsaWVudDo6Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMs
ICZJREJUcmFuc2FjdGlvbjo6ZGlkUmVuYW1lT2JqZWN0U3RvcmVPblNlcnZlciwgJklEQlRyYW5z
YWN0aW9uOjpyZW5hbWVPYmplY3RTdG9yZU9uU2VydmVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IG5ld05hbWUpOwotICAgIHNjaGVkdWxlT3BlcmF0aW9uKFdURk1vdmUob3BlcmF0aW9uKSk7Cisg
ICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlv
bigqdGhpcywgJklEQlRyYW5zYWN0aW9uOjpkaWRSZW5hbWVPYmplY3RTdG9yZU9uU2VydmVyLCAm
SURCVHJhbnNhY3Rpb246OnJlbmFtZU9iamVjdFN0b3JlT25TZXJ2ZXIsIG9iamVjdFN0b3JlSWRl
bnRpZmllciwgbmV3TmFtZSkpOwogCiAgICAgbV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnNldChu
ZXdOYW1lLCBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMudGFrZShvYmplY3RTdG9yZS5pbmZvKCku
bmFtZSgpKSk7CiB9CkBAIC01ODYsOCArNTgzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkluZGV4
PiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3IK
ICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBhdXRvIG9wZXJhdGlvbiA9IElEQkNsaWVudDo6Y3JlYXRlVHJhbnNhY3Rpb25P
cGVyYXRpb24oKnRoaXMsICZJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlSW5kZXhPblNlcnZlciwg
JklEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleE9uU2VydmVyLCBpbmZvKTsKLSAgICBzY2hlZHVs
ZU9wZXJhdGlvbihXVEZNb3ZlKG9wZXJhdGlvbikpOworICAgIHNjaGVkdWxlT3BlcmF0aW9uKElE
QkNsaWVudDo6Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsICZJREJUcmFuc2FjdGlv
bjo6ZGlkQ3JlYXRlSW5kZXhPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleE9u
U2VydmVyLCBpbmZvKSk7CiAKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJREJJbmRleD4o
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOwogfQpAQCAtNjMz
LDggKzYyOSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnJlbmFtZUluZGV4KElEQkluZGV4JiBp
bmRleCwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKQogCiAgICAgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyID0gaW5kZXgub2JqZWN0U3RvcmUoKS5pbmZvKCkuaWRlbnRpZmllcigpOwogICAg
IHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciA9IGluZGV4LmluZm8oKS5pZGVudGlmaWVyKCk7Ci0g
ICAgYXV0byBvcGVyYXRpb24gPSBJREJDbGllbnQ6OmNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9u
KCp0aGlzLCAmSURCVHJhbnNhY3Rpb246OmRpZFJlbmFtZUluZGV4T25TZXJ2ZXIsICZJREJUcmFu
c2FjdGlvbjo6cmVuYW1lSW5kZXhPblNlcnZlciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRl
eElkZW50aWZpZXIsIG5ld05hbWUpOwotICAgIHNjaGVkdWxlT3BlcmF0aW9uKFdURk1vdmUob3Bl
cmF0aW9uKSk7CisgICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50OjpjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigqdGhpcywgJklEQlRyYW5zYWN0aW9uOjpkaWRSZW5hbWVJbmRleE9uU2Vy
dmVyLCAmSURCVHJhbnNhY3Rpb246OnJlbmFtZUluZGV4T25TZXJ2ZXIsIG9iamVjdFN0b3JlSWRl
bnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCBuZXdOYW1lKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNh
Y3Rpb246OnJlbmFtZUluZGV4T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlv
biYgb3BlcmF0aW9uLCBjb25zdCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25z
dCB1aW50NjRfdCYgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCkBAIC02
NTMsNDEgKzY0OCwzOSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRSZW5hbWVJbmRleE9uU2Vy
dmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiAgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHREYXRhLCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpSZW5hbWVJbmRl
eFN1Y2Nlc3MgfHwgcmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6RXJyb3IpOwog
fQogCi1SZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yKEV4
ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElE
QkN1cnNvckluZm8mIGluZm8pCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVl
c3RPcGVuQ3Vyc29yKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9y
ZSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
VHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yIik7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKIAogICAgIGlmIChpbmZvLmN1
cnNvclR5cGUoKSA9PSBJbmRleGVkREI6OkN1cnNvclR5cGU6OktleU9ubHkpCi0gICAgICAgIHJl
dHVybiBkb1JlcXVlc3RPcGVuQ3Vyc29yKGV4ZWNTdGF0ZSwgSURCQ3Vyc29yOjpjcmVhdGUoKnRo
aXMsIG9iamVjdFN0b3JlLCBpbmZvKSk7CisgICAgICAgIHJldHVybiBkb1JlcXVlc3RPcGVuQ3Vy
c29yKHN0YXRlLCBJREJDdXJzb3I6OmNyZWF0ZSgqdGhpcywgb2JqZWN0U3RvcmUsIGluZm8pKTsK
IAotICAgIHJldHVybiBkb1JlcXVlc3RPcGVuQ3Vyc29yKGV4ZWNTdGF0ZSwgSURCQ3Vyc29yV2l0
aFZhbHVlOjpjcmVhdGUoKnRoaXMsIG9iamVjdFN0b3JlLCBpbmZvKSk7CisgICAgcmV0dXJuIGRv
UmVxdWVzdE9wZW5DdXJzb3Ioc3RhdGUsIElEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKCp0aGlz
LCBvYmplY3RTdG9yZSwgaW5mbykpOwogfQogCi1SZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rp
b246OnJlcXVlc3RPcGVuQ3Vyc29yKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJJbmRleCYgaW5k
ZXgsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNh
Y3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4JiBpbmRl
eCwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
VHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yIik7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKIAogICAgIGlmIChpbmZvLmN1
cnNvclR5cGUoKSA9PSBJbmRleGVkREI6OkN1cnNvclR5cGU6OktleU9ubHkpCi0gICAgICAgIHJl
dHVybiBkb1JlcXVlc3RPcGVuQ3Vyc29yKGV4ZWNTdGF0ZSwgSURCQ3Vyc29yOjpjcmVhdGUoKnRo
aXMsIGluZGV4LCBpbmZvKSk7CisgICAgICAgIHJldHVybiBkb1JlcXVlc3RPcGVuQ3Vyc29yKHN0
YXRlLCBJREJDdXJzb3I6OmNyZWF0ZSgqdGhpcywgaW5kZXgsIGluZm8pKTsKIAotICAgIHJldHVy
biBkb1JlcXVlc3RPcGVuQ3Vyc29yKGV4ZWNTdGF0ZSwgSURCQ3Vyc29yV2l0aFZhbHVlOjpjcmVh
dGUoKnRoaXMsIGluZGV4LCBpbmZvKSk7CisgICAgcmV0dXJuIGRvUmVxdWVzdE9wZW5DdXJzb3Io
c3RhdGUsIElEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKCp0aGlzLCBpbmRleCwgaW5mbykpOwog
fQogCi1SZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OmRvUmVxdWVzdE9wZW5DdXJzb3Io
RXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZjxJREJDdXJzb3I+JiYgY3Vyc29yKQorUmVmPElEQlJl
cXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpkb1JlcXVlc3RPcGVuQ3Vyc29yKEV4ZWNTdGF0ZSYgc3Rh
dGUsIFJlZjxJREJDdXJzb3I+JiYgY3Vyc29yKQogewogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsK
ICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElE
KCkpOwogCi0gICAgUkVMRUFTRV9BU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAg
ICBBU1NFUlRfVU5VU0VEKGV4ZWNTdGF0ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZleGVjU3RhdGUpKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0
aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKLSAgICBSZWY8SURCUmVxdWVzdD4g
cmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBj
dXJzb3IuZ2V0KCksICp0aGlzKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVh
dGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY3Vyc29yLmdldCgpLCAqdGhpcyk7CiAgICAg
YWRkUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAotICAgIGF1dG8gb3BlcmF0aW9uID0gSURCQ2xp
ZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5nZXQoKSwgJklE
QlRyYW5zYWN0aW9uOjpkaWRPcGVuQ3Vyc29yT25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6b3Bl
bkN1cnNvck9uU2VydmVyLCBjdXJzb3ItPmluZm8oKSk7Ci0gICAgc2NoZWR1bGVPcGVyYXRpb24o
V1RGTW92ZShvcGVyYXRpb24pKTsKKyAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OmNy
ZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKCp0aGlzLCByZXF1ZXN0LmdldCgpLCAmSURCVHJhbnNh
Y3Rpb246OmRpZE9wZW5DdXJzb3JPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpvcGVuQ3Vyc29y
T25TZXJ2ZXIsIGN1cnNvci0+aW5mbygpKSk7CiAKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KQEAg
LTcxNyw4ICs3MTAsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yKElEQkN1
cnNvciYgY3Vyc29yLCBjb25zdCBJREJLZXlEYXRhJiBrZXksIHVucwogCiAgICAgYWRkUmVxdWVz
dCgqY3Vyc29yLnJlcXVlc3QoKSk7CiAKLSAgICBhdXRvIG9wZXJhdGlvbiA9IElEQkNsaWVudDo6
Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsICpjdXJzb3IucmVxdWVzdCgpLCAmSURC
VHJhbnNhY3Rpb246OmRpZEl0ZXJhdGVDdXJzb3JPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpp
dGVyYXRlQ3Vyc29yT25TZXJ2ZXIsIGtleSwgY291bnQpOwotICAgIHNjaGVkdWxlT3BlcmF0aW9u
KFdURk1vdmUob3BlcmF0aW9uKSk7CisgICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50Ojpj
cmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgKmN1cnNvci5yZXF1ZXN0KCksICZJREJU
cmFuc2FjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNvck9uU2VydmVyLCAmSURCVHJhbnNhY3Rpb246Oml0
ZXJhdGVDdXJzb3JPblNlcnZlciwga2V5LCBjb3VudCkpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0
aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlv
biYgb3BlcmF0aW9uLCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IHVuc2lnbmVkIGxvbmcm
IGNvdW50KQpAQCAtNzQ1LDEzICs3MzcsMzAgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKEpTQzo6RXhlY1N0YXRlJgogCiAg
ICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkpOwogCi0gICAgUmVmPElEQlJl
cXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgb2JqZWN0U3RvcmUsICp0aGlzKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBJREJSZXF1ZXN0
OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgb2JqZWN0U3RvcmUsICp0aGlzKTsK
ICAgICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgSURCR2V0QWxsUmVjb3Jkc0Rh
dGEgZ2V0QWxsUmVjb3Jkc0RhdGEgeyBrZXlSYW5nZURhdGEsIGdldEFsbFR5cGUsIGNvdW50LCBv
YmplY3RTdG9yZS5pbmZvKCkuaWRlbnRpZmllcigpLCAwIH07CiAKLSAgICBhdXRvIG9wZXJhdGlv
biA9IElEQkNsaWVudDo6Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIHJlcXVlc3Qu
Z2V0KCksICZJREJUcmFuc2FjdGlvbjo6ZGlkR2V0QWxsUmVjb3Jkc09uU2VydmVyLCAmSURCVHJh
bnNhY3Rpb246OmdldEFsbFJlY29yZHNPblNlcnZlciwgZ2V0QWxsUmVjb3Jkc0RhdGEpOwotICAg
IHNjaGVkdWxlT3BlcmF0aW9uKFdURk1vdmUob3BlcmF0aW9uKSk7CisgICAgc2NoZWR1bGVPcGVy
YXRpb24oSURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgcmVxdWVz
dC5nZXQoKSwgJklEQlRyYW5zYWN0aW9uOjpkaWRHZXRBbGxSZWNvcmRzT25TZXJ2ZXIsICZJREJU
cmFuc2FjdGlvbjo6Z2V0QWxsUmVjb3Jkc09uU2VydmVyLCBnZXRBbGxSZWNvcmRzRGF0YSkpOwor
CisgICAgcmV0dXJuIHJlcXVlc3Q7Cit9CisKK1JlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlv
bjo6cmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIElEQklu
ZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIEluZGV4ZWRE
Qjo6R2V0QWxsVHlwZSBnZXRBbGxUeXBlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpCit7Cisg
ICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsSW5kZXhSZWNv
cmRzIik7CisgICAgQVNTRVJUKGlzQWN0aXZlKCkpOworICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CisKKyAgICBBU1NFUlRfVU5VU0VE
KHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CisKKyAgICBhdXRvIHJlcXVlc3QgPSBJREJSZXF1ZXN0
OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5kZXgsICp0aGlzKTsKKyAgICBh
ZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOworCisgICAgSURCR2V0QWxsUmVjb3Jkc0RhdGEgZ2V0
QWxsUmVjb3Jkc0RhdGEgeyBrZXlSYW5nZURhdGEsIGdldEFsbFR5cGUsIGNvdW50LCBpbmRleC5v
YmplY3RTdG9yZSgpLmluZm8oKS5pZGVudGlmaWVyKCksIGluZGV4LmluZm8oKS5pZGVudGlmaWVy
KCkgfTsKKworICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6Y3JlYXRlVHJhbnNhY3Rp
b25PcGVyYXRpb24oKnRoaXMsIHJlcXVlc3QuZ2V0KCksICZJREJUcmFuc2FjdGlvbjo6ZGlkR2V0
QWxsUmVjb3Jkc09uU2VydmVyLCAmSURCVHJhbnNhY3Rpb246OmdldEFsbFJlY29yZHNPblNlcnZl
ciwgZ2V0QWxsUmVjb3Jkc0RhdGEpKTsKIAogICAgIHJldHVybiByZXF1ZXN0OwogfQpAQCAtNzg5
LDU3ICs3OTgsNTMgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0QWxsUmVjb3Jkc09uU2Vy
dmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3UKICAgICByZXF1ZXN0LnJlcXVl
c3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2Fj
dGlvbjo6cmVxdWVzdEdldFJlY29yZChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCT2JqZWN0U3Rv
cmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJiBnZXRSZWNvcmREYXRhKQor
UmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0UmVjb3JkKEV4ZWNTdGF0
ZSYgc3RhdGUsIElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgSURCR2V0UmVjb3Jk
RGF0YSYgZ2V0UmVjb3JkRGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rp
b246OnJlcXVlc3RHZXRSZWNvcmQiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAgQVNT
RVJUKCFnZXRSZWNvcmREYXRhLmtleVJhbmdlRGF0YS5pc051bGwpOwogICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CiAKLSAgICBSRUxF
QVNFX0FTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIEFTU0VSVF9VTlVTRUQo
ZXhlY1N0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEZyb21FeGVjU3RhdGUoJmV4ZWNTdGF0ZSkpOworICAgIEFTU0VSVF9VTlVTRUQoc3RhdGUs
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4
ZWNTdGF0ZSgmc3RhdGUpKTsKIAotICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVx
dWVzdDo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG9iamVjdFN0b3JlLCAqdGhp
cyk7CisgICAgYXV0byByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIG9iamVjdFN0b3JlLCAqdGhpcyk7CiAgICAgYWRkUmVxdWVzdChyZXF1ZXN0
LmdldCgpKTsKIAotICAgIGF1dG8gb3BlcmF0aW9uID0gSURCQ2xpZW50OjpjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5nZXQoKSwgJklEQlRyYW5zYWN0aW9uOjpkaWRH
ZXRSZWNvcmRPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpnZXRSZWNvcmRPblNlcnZlciwgZ2V0
UmVjb3JkRGF0YSk7Ci0gICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGTW92ZShvcGVyYXRpb24pKTsK
KyAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OmNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0
aW9uKCp0aGlzLCByZXF1ZXN0LmdldCgpLCAmSURCVHJhbnNhY3Rpb246OmRpZEdldFJlY29yZE9u
U2VydmVyLCAmSURCVHJhbnNhY3Rpb246OmdldFJlY29yZE9uU2VydmVyLCBnZXRSZWNvcmREYXRh
KSk7CiAKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5z
YWN0aW9uOjpyZXF1ZXN0R2V0VmFsdWUoRXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQkluZGV4JiBp
bmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKK1JlZjxJREJSZXF1ZXN0PiBJREJU
cmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4JiBp
bmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRWYWx1ZSIpOwogICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CiAKLSAgICByZXR1cm4g
cmVxdWVzdEluZGV4UmVjb3JkKGV4ZWNTdGF0ZSwgaW5kZXgsIEluZGV4ZWREQjo6SW5kZXhSZWNv
cmRUeXBlOjpWYWx1ZSwgcmFuZ2UpOworICAgIHJldHVybiByZXF1ZXN0SW5kZXhSZWNvcmQoc3Rh
dGUsIGluZGV4LCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZTo6VmFsdWUsIHJhbmdlKTsKIH0K
IAotUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0S2V5KEV4ZWNTdGF0
ZSYgZXhlY1N0YXRlLCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFu
Z2UpCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRLZXkoRXhlY1N0
YXRlJiBzdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdl
KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVl
Iik7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJl
YWRJRCgpKTsKIAotICAgIHJldHVybiByZXF1ZXN0SW5kZXhSZWNvcmQoZXhlY1N0YXRlLCBpbmRl
eCwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGU6OktleSwgcmFuZ2UpOworICAgIHJldHVybiBy
ZXF1ZXN0SW5kZXhSZWNvcmQoc3RhdGUsIGluZGV4LCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlw
ZTo6S2V5LCByYW5nZSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdEluZGV4UmVjb3JkKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJJbmRleCYgaW5kZXgsIElu
ZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlIHR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFu
Z2UpCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRleFJlY29yZChF
eGVjU3RhdGUmIHN0YXRlLCBJREJJbmRleCYgaW5kZXgsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRU
eXBlIHR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0VmFsdWUiKTsKICAgICBBU1NFUlQoaXNB
Y3RpdmUoKSk7CiAgICAgQVNTRVJUKCFyYW5nZS5pc051bGwpOwogICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CiAKLSAgICBSRUxFQVNF
X0FTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIEFTU0VSVF9VTlVTRUQoZXhl
Y1N0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dEZyb21FeGVjU3RhdGUoJmV4ZWNTdGF0ZSkpOworICAgIEFTU0VSVF9VTlVTRUQoc3RhdGUsIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNT
dGF0ZSgmc3RhdGUpKTsKIAotICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVz
dDo6Y3JlYXRlR2V0KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZGV4LCB0eXBlLCAqdGhp
cyk7CisgICAgYXV0byByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlSW5kZXhHZXQoKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5kZXgsIHR5cGUsICp0aGlzKTsKICAgICBhZGRSZXF1ZXN0
KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgSURCR2V0UmVjb3JkRGF0YSBnZXRSZWNvcmREYXRhID0g
eyByYW5nZSB9OwotICAgIGF1dG8gb3BlcmF0aW9uID0gSURCQ2xpZW50OjpjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5nZXQoKSwgJklEQlRyYW5zYWN0aW9uOjpkaWRH
ZXRSZWNvcmRPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpnZXRSZWNvcmRPblNlcnZlciwgZ2V0
UmVjb3JkRGF0YSk7Ci0gICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGTW92ZShvcGVyYXRpb24pKTsK
KyAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OmNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0
aW9uKCp0aGlzLCByZXF1ZXN0LmdldCgpLCAmSURCVHJhbnNhY3Rpb246OmRpZEdldFJlY29yZE9u
U2VydmVyLCAmSURCVHJhbnNhY3Rpb246OmdldFJlY29yZE9uU2VydmVyLCBnZXRSZWNvcmREYXRh
KSk7CiAKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KQEAgLTg4MSwxNyArODg2LDE2IEBAIHZvaWQg
SURCVHJhbnNhY3Rpb246OmRpZEdldFJlY29yZE9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IElEQlJlc3VsdERhCiAgICAgcmVxdWVzdC5yZXF1ZXN0Q29tcGxldGVkKHJlc3VsdERh
dGEpOwogfQogCi1SZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDb3VudChF
eGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJ
REJLZXlSYW5nZURhdGEmIHJhbmdlKQorUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0Q291bnQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3Jl
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50IChJREJPYmplY3RTdG9yZSkiKTsKICAgICBBU1NF
UlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFyYW5nZS5pc051bGwpOwogICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7CiAKLSAgICBS
RUxFQVNFX0FTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIEFTU0VSVF9VTlVT
RUQoZXhlY1N0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dEZyb21FeGVjU3RhdGUoJmV4ZWNTdGF0ZSkpOworICAgIEFTU0VSVF9VTlVTRUQoc3Rh
dGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJv
bUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIAotICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURC
UmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG9iamVjdFN0b3JlLCAq
dGhpcyk7CisgICAgYXV0byByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIG9iamVjdFN0b3JlLCAqdGhpcyk7CiAgICAgYWRkUmVxdWVzdChyZXF1
ZXN0LmdldCgpKTsKIAogICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNsaWVudDo6Y3JlYXRlVHJh
bnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIHJlcXVlc3QuZ2V0KCksICZJREJUcmFuc2FjdGlvbjo6
ZGlkR2V0Q291bnRPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpnZXRDb3VudE9uU2VydmVyLCBy
YW5nZSkpOwpAQCAtODk5LDE3ICs5MDMsMTYgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0Q291bnQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQk9iamVjdFN0b3IKICAg
ICByZXR1cm4gcmVxdWVzdDsKIH0KIAotUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0Q291bnQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKK1JlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdENvdW50KEV4ZWNTdGF0ZSYgc3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURC
S2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rp
b246OnJlcXVlc3RDb3VudCAoSURCSW5kZXgpIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwog
ICAgIEFTU0VSVCghcmFuZ2UuaXNOdWxsKTsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwogCi0gICAgUkVMRUFTRV9BU1NFUlQoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGV4ZWNTdGF0ZSwgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0
YXRlKCZleGVjU3RhdGUpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRl
KSk7CiAKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZUNv
dW50KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZGV4LCAqdGhpcyk7CisgICAgYXV0byBy
ZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGlu
ZGV4LCAqdGhpcyk7CiAgICAgYWRkUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIHNjaGVk
dWxlT3BlcmF0aW9uKElEQkNsaWVudDo6Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMs
IHJlcXVlc3QuZ2V0KCksICZJREJUcmFuc2FjdGlvbjo6ZGlkR2V0Q291bnRPblNlcnZlciwgJklE
QlRyYW5zYWN0aW9uOjpnZXRDb3VudE9uU2VydmVyLCByYW5nZSkpOwpAQCAtOTM0LDE3ICs5Mzcs
MTYgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0Q291bnRPblNlcnZlcihJREJSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXQKICAgICByZXF1ZXN0LnJlcXVlc3RDb21wbGV0
ZWQocmVzdWx0RGF0YSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdERlbGV0ZVJlY29yZChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9i
amVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQorUmVmPElEQlJlcXVlc3Q+
IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3JkKEV4ZWNTdGF0ZSYgc3RhdGUsIElE
Qk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3REZWxldGVSZWNv
cmQiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFyYW5nZS5pc051bGwp
OwogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
SUQoKSk7CiAKLSAgICBSRUxFQVNFX0FTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwot
ICAgIEFTU0VSVF9VTlVTRUQoZXhlY1N0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJmV4ZWNTdGF0ZSkpOworICAgIEFT
U0VSVF9VTlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVj
dXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIAotICAgIFJlZjxJREJSZXF1ZXN0
PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IG9iamVjdFN0b3JlLCAqdGhpcyk7CisgICAgYXV0byByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3Jl
YXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG9iamVjdFN0b3JlLCAqdGhpcyk7CiAgICAg
YWRkUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNs
aWVudDo6Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIHJlcXVlc3QuZ2V0KCksICZJ
REJUcmFuc2FjdGlvbjo6ZGlkRGVsZXRlUmVjb3JkT25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6
ZGVsZXRlUmVjb3JkT25TZXJ2ZXIsIHJhbmdlKSk7CkBAIC05NjgsMjEgKzk3MCwxOSBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVSZWNvcmRPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBJREJSZXN1bAogICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRlZChyZXN1bHRE
YXRhKTsKIH0KIAotUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJP
YmplY3RTdG9yZShFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0
b3JlKQorUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJPYmplY3RT
dG9yZShFeGVjU3RhdGUmIHN0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUpCiB7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJPYmplY3RTdG9y
ZSIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwogCi0gICAgUkVMRUFTRV9BU1NFUlQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGV4ZWNTdGF0ZSwg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhl
Y1N0YXRlKCZleGVjU3RhdGUpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0
YXRlKSk7CiAKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0
ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBvYmplY3RTdG9yZSwgKnRoaXMpOworICAgIGF1
dG8gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBvYmplY3RTdG9yZSwgKnRoaXMpOwogICAgIGFkZFJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAK
ICAgICB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIgPSBvYmplY3RTdG9yZS5pbmZvKCku
aWRlbnRpZmllcigpOwotICAgIGF1dG8gb3BlcmF0aW9uID0gSURCQ2xpZW50OjpjcmVhdGVUcmFu
c2FjdGlvbk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5nZXQoKSwgJklEQlRyYW5zYWN0aW9uOjpk
aWRDbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RT
dG9yZU9uU2VydmVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwotICAgIHNjaGVkdWxlT3BlcmF0
aW9uKFdURk1vdmUob3BlcmF0aW9uKSk7CisgICAgc2NoZWR1bGVPcGVyYXRpb24oSURCQ2xpZW50
OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5nZXQoKSwgJklEQlRy
YW5zYWN0aW9uOjpkaWRDbGVhck9iamVjdFN0b3JlT25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6
Y2xlYXJPYmplY3RTdG9yZU9uU2VydmVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpKTsKIAogICAg
IHJldHVybiByZXF1ZXN0OwogfQpAQCAtMTAwNCw3ICsxMDA0LDcgQEAgdm9pZCBJREJUcmFuc2Fj
dGlvbjo6ZGlkQ2xlYXJPYmplY3RTdG9yZU9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IElEQlIKICAgICByZXF1ZXN0LnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7CiB9CiAK
LVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdFB1dE9yQWRkKEV4ZWNTdGF0
ZSYgZXhlY1N0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIElEQktleSoga2V5LCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmIHZhbHVlLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zlcndy
aXRlTW9kZSBvdmVyd3JpdGVNb2RlKQorUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0UHV0T3JBZGQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0
b3JlLCBJREJLZXkqIGtleSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgSW5kZXhlZERC
OjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9kZSkKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RQdXRPckFkZCIpOwogICAgIEFTU0VSVChp
c0FjdGl2ZSgpKTsKQEAgLTEwMTIsMTQgKzEwMTIsMTIgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRy
YW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQk9iamVj
dFMKICAgICBBU1NFUlQob2JqZWN0U3RvcmUuaW5mbygpLmF1dG9JbmNyZW1lbnQoKSB8fCBrZXkp
OwogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
SUQoKSk7CiAKLSAgICBSRUxFQVNFX0FTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwot
ICAgIEFTU0VSVF9VTlVTRUQoZXhlY1N0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJmV4ZWNTdGF0ZSkpOworICAgIEFT
U0VSVF9VTlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVj
dXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIAotICAgIFJlZjxJREJSZXF1ZXN0
PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IG9iamVjdFN0b3JlLCAqdGhpcyk7CisgICAgYXV0byByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3Jl
YXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG9iamVjdFN0b3JlLCAqdGhpcyk7CiAgICAg
YWRkUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAotICAgIGF1dG8gb3BlcmF0aW9uID0gSURCQ2xp
ZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5nZXQoKSwgJklE
QlRyYW5zYWN0aW9uOjpkaWRQdXRPckFkZE9uU2VydmVyLCAmSURCVHJhbnNhY3Rpb246OnB1dE9y
QWRkT25TZXJ2ZXIsIGtleSwgJnZhbHVlLCBvdmVyd3JpdGVNb2RlKTsKLSAgICBzY2hlZHVsZU9w
ZXJhdGlvbihXVEZNb3ZlKG9wZXJhdGlvbikpOworICAgIHNjaGVkdWxlT3BlcmF0aW9uKElEQkNs
aWVudDo6Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIHJlcXVlc3QuZ2V0KCksICZJ
REJUcmFuc2FjdGlvbjo6ZGlkUHV0T3JBZGRPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpwdXRP
ckFkZE9uU2VydmVyLCBrZXksICZ2YWx1ZSwgb3ZlcndyaXRlTW9kZSkpOwogCiAgICAgcmV0dXJu
IHJlcXVlc3Q7CiB9CkBAIC0xMDkzLDggKzEwOTEsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpk
ZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKICAgICBpZiAo
YXV0byBvYmplY3RTdG9yZSA9IG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy50YWtlKG9iamVjdFN0
b3JlTmFtZSkpCiAgICAgICAgIG9iamVjdFN0b3JlLT5tYXJrQXNEZWxldGVkKCk7CiAKLSAgICBh
dXRvIG9wZXJhdGlvbiA9IElEQkNsaWVudDo6Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRo
aXMsICZJREJUcmFuc2FjdGlvbjo6ZGlkRGVsZXRlT2JqZWN0U3RvcmVPblNlcnZlciwgJklEQlRy
YW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZU9uU2VydmVyLCBvYmplY3RTdG9yZU5hbWUpOwot
ICAgIHNjaGVkdWxlT3BlcmF0aW9uKFdURk1vdmUob3BlcmF0aW9uKSk7CisgICAgc2NoZWR1bGVP
cGVyYXRpb24oSURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgJklE
QlRyYW5zYWN0aW9uOjpkaWREZWxldGVPYmplY3RTdG9yZU9uU2VydmVyLCAmSURCVHJhbnNhY3Rp
b246OmRlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIsIG9iamVjdFN0b3JlTmFtZSkpOwogfQogCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKElEQkNsaWVudDo6
VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9y
ZU5hbWUpCkBAIC0xMTE5LDggKzExMTYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVJ
bmRleCh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaQogICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFkSUQoKSk7
CiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKIAotICAgIGF1dG8gb3BlcmF0aW9uID0g
SURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgJklEQlRyYW5zYWN0
aW9uOjpkaWREZWxldGVJbmRleE9uU2VydmVyLCAmSURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4
T25TZXJ2ZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKTsKLSAgICBzY2hlZHVs
ZU9wZXJhdGlvbihXVEZNb3ZlKG9wZXJhdGlvbikpOworICAgIHNjaGVkdWxlT3BlcmF0aW9uKElE
QkNsaWVudDo6Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsICZJREJUcmFuc2FjdGlv
bjo6ZGlkRGVsZXRlSW5kZXhPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpkZWxldGVJbmRleE9u
U2VydmVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSkpOwogfQogCiB2b2lkIElE
QlRyYW5zYWN0aW9uOjpkZWxldGVJbmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgdWludDY0X3QmIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCAwM2MwYzUxNGEzYTlkMjFiYmMyMWEw
ZWFlYmQ5MDliYWViMGQ0NzcyLi44NmJhYmIxNjAyYjQ4ZmVhNzFmNzM1M2ViZmNkNDQ0NzA2YTZm
ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmgKQEAgLTExNSw2ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgUmVmPElEQlJlcXVlc3Q+
IHJlcXVlc3RQdXRPckFkZChKU0M6OkV4ZWNTdGF0ZSYsIElEQk9iamVjdFN0b3JlJiwgSURCS2V5
KiwgU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0
ZU1vZGUpOwogICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0R2V0UmVjb3JkKEpTQzo6RXhlY1N0
YXRlJiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJHZXRSZWNvcmREYXRhJik7CiAgICAgUmVm
PElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoSlNDOjpFeGVjU3Rh
dGUmLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIEluZGV4ZWREQjo6
R2V0QWxsVHlwZSwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBSZWY8SURCUmVxdWVz
dD4gcmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyhKU0M6OkV4ZWNTdGF0ZSYsIElEQkluZGV4Jiwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgSW5kZXhlZERCOjpHZXRBbGxUeXBlLCBPcHRpb25hbDx1
aW50MzJfdD4gY291bnQpOwogICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0RGVsZXRlUmVjb3Jk
KEpTQzo6RXhlY1N0YXRlJiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
KTsKICAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoSlNDOjpFeGVj
U3RhdGUmLCBJREJPYmplY3RTdG9yZSYpOwogICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0Q291
bnQoSlNDOjpFeGVjU3RhdGUmLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAppbmRleCA3OTg4YjJkMDAzYzg2YTlhOGVh
NjRkODQ4ZDVmYWNiNmVjYzVkZTdjLi5jZTU4NjA3ZjQ2OTY2OTcyNjg3ZmQ4MjVkZjkwNTYzMzg4
OTVjOTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcApAQCAtMTE5LDcgKzExOSw3IEBA
IHZvaWQgSURCQ29ubmVjdGlvblByb3h5Ojpjb21wbGV0ZU9wZW5EQlJlcXVlc3QoY29uc3QgSURC
UmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmNyZWF0
ZU9iamVjdFN0b3JlKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQk9i
amVjdFN0b3JlSW5mbyYgaW5mbykKIHsKLSAgICBjb25zdCBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0
RGF0YShvcGVyYXRpb24pOworICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhIHsg
b3BlcmF0aW9uIH07CiAgICAgc2F2ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCiAgICAgY2FsbENv
bm5lY3Rpb25Pbk1haW5UaHJlYWQoJklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlT2JqZWN0
U3RvcmUsIHJlcXVlc3REYXRhLCBpbmZvKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIElEQkNv
bm5lY3Rpb25Qcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9w
ZXJhdGlvbiwgY29ucwogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6cmVuYW1lT2JqZWN0U3Rv
cmUoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpCiB7Ci0gICAgY29uc3QgSURCUmVxdWVz
dERhdGEgcmVxdWVzdERhdGEob3BlcmF0aW9uKTsKKyAgICBjb25zdCBJREJSZXF1ZXN0RGF0YSBy
ZXF1ZXN0RGF0YSB7IG9wZXJhdGlvbiB9OwogICAgIHNhdmVPcGVyYXRpb24ob3BlcmF0aW9uKTsK
IAogICAgIGNhbGxDb25uZWN0aW9uT25NYWluVGhyZWFkKCZJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OnJlbmFtZU9iamVjdFN0b3JlLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBu
ZXdOYW1lKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6cmVu
YW1lT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgdWludAogCiB2
b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6cmVuYW1lSW5kZXgoVHJhbnNhY3Rpb25PcGVyYXRpb24m
IG9wZXJhdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRl
eElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKIHsKLSAgICBjb25zdCBJREJSZXF1
ZXN0RGF0YSByZXF1ZXN0RGF0YShvcGVyYXRpb24pOworICAgIGNvbnN0IElEQlJlcXVlc3REYXRh
IHJlcXVlc3REYXRhIHsgb3BlcmF0aW9uIH07CiAgICAgc2F2ZU9wZXJhdGlvbihvcGVyYXRpb24p
OwogCiAgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5UaHJlYWQoJklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6cmVuYW1lSW5kZXgsIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4
SWRlbnRpZmllciwgbmV3TmFtZSk7CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBJREJDb25uZWN0
aW9uUHJveHk6OnJlbmFtZUluZGV4KFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIHVp
bnQ2NF90IG8KIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRlbGV0ZU9iamVjdFN0b3JlKFRy
YW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVO
YW1lKQogewotICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKG9wZXJhdGlvbik7
CisgICAgY29uc3QgSURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEgeyBvcGVyYXRpb24gfTsKICAg
ICBzYXZlT3BlcmF0aW9uKG9wZXJhdGlvbik7CiAKICAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRo
cmVhZCgmSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVPYmplY3RTdG9yZSwgcmVxdWVzdERh
dGEsIG9iamVjdFN0b3JlTmFtZSk7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBJREJDb25uZWN0
aW9uUHJveHk6OmRlbGV0ZU9iamVjdFN0b3JlKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRp
b24sIGNvbnMKIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmNsZWFyT2JqZWN0U3RvcmUoVHJh
bnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyKQogewotICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKG9wZXJhdGlvbik7
CisgICAgY29uc3QgSURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEgeyBvcGVyYXRpb24gfTsKICAg
ICBzYXZlT3BlcmF0aW9uKG9wZXJhdGlvbik7CiAKICAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRo
cmVhZCgmSURCQ29ubmVjdGlvblRvU2VydmVyOjpjbGVhck9iamVjdFN0b3JlLCByZXF1ZXN0RGF0
YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIElEQkNv
bm5lY3Rpb25Qcm94eTo6Y2xlYXJPYmplY3RTdG9yZShUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3Bl
cmF0aW9uLCB1aW50NgogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Y3JlYXRlSW5kZXgoVHJh
bnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQog
ewotICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKG9wZXJhdGlvbik7CisgICAg
Y29uc3QgSURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEgeyBvcGVyYXRpb24gfTsKICAgICBzYXZl
T3BlcmF0aW9uKG9wZXJhdGlvbik7CiAKICAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVhZCgm
SURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGVJbmRleCwgcmVxdWVzdERhdGEsIGluZm8pOwpA
QCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpjcmVhdGVJbmRleChU
cmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJJCiAKIHZvaWQgSURCQ29u
bmVjdGlvblByb3h5OjpkZWxldGVJbmRleChUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9u
LCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1l
KQogewotICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKG9wZXJhdGlvbik7Cisg
ICAgY29uc3QgSURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEgeyBvcGVyYXRpb24gfTsKICAgICBz
YXZlT3BlcmF0aW9uKG9wZXJhdGlvbik7CiAKICAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVh
ZCgmSURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVJbmRleCwgcmVxdWVzdERhdGEsIFdURk1v
dmUob2JqZWN0U3RvcmVJZGVudGlmaWVyKSwgaW5kZXhOYW1lKTsKQEAgLTE3NSw3ICsxNzUsNyBA
QCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6ZGVsZXRlSW5kZXgoVHJhbnNhY3Rpb25PcGVyYXRp
b24mIG9wZXJhdGlvbiwgdWludDY0X3QgbwogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6cHV0
T3JBZGQoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgSURCS2V5RGF0YSYmIGtleURh
dGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92
ZXJ3cml0ZU1vZGUgbW9kZSkKIHsKLSAgICBjb25zdCBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0
YShvcGVyYXRpb24pOworICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhIHsgb3Bl
cmF0aW9uIH07CiAgICAgc2F2ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCiAgICAgY2FsbENvbm5l
Y3Rpb25Pbk1haW5UaHJlYWQoJklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cHV0T3JBZGQsIHJlcXVl
c3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgbW9kZSk7CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBJ
REJDb25uZWN0aW9uUHJveHk6OnB1dE9yQWRkKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRp
b24sIElEQktleURhdGEmJgogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Z2V0UmVjb3JkKFRy
YW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkdldFJlY29yZERhdGEmIGdl
dFJlY29yZERhdGEpCiB7Ci0gICAgY29uc3QgSURCUmVxdWVzdERhdGEgcmVxdWVzdERhdGEob3Bl
cmF0aW9uKTsKKyAgICBjb25zdCBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSB7IG9wZXJhdGlv
biB9OwogICAgIHNhdmVPcGVyYXRpb24ob3BlcmF0aW9uKTsKIAogICAgIGNhbGxDb25uZWN0aW9u
T25NYWluVGhyZWFkKCZJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldFJlY29yZCwgcmVxdWVzdERh
dGEsIGdldFJlY29yZERhdGEpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgSURCQ29ubmVjdGlv
blByb3h5OjpnZXRSZWNvcmQoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3Qg
SURCR2V0CiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpnZXRBbGxSZWNvcmRzKFRyYW5zYWN0
aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRB
bGxSZWNvcmRzRGF0YSkKIHsKLSAgICBjb25zdCBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YShv
cGVyYXRpb24pOworICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhIHsgb3BlcmF0
aW9uIH07CiAgICAgc2F2ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCiAgICAgY2FsbENvbm5lY3Rp
b25Pbk1haW5UaHJlYWQoJklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsUmVjb3JkcywgcmVx
dWVzdERhdGEsIGdldEFsbFJlY29yZHNEYXRhKTsKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIElE
QkNvbm5lY3Rpb25Qcm94eTo6Z2V0QWxsUmVjb3JkcyhUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3Bl
cmF0aW9uLCBjb25zdCBJRAogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Z2V0Q291bnQoVHJh
bnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlS
YW5nZSkKIHsKLSAgICBjb25zdCBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YShvcGVyYXRpb24p
OworICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhIHsgb3BlcmF0aW9uIH07CiAg
ICAgc2F2ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCiAgICAgY2FsbENvbm5lY3Rpb25Pbk1haW5U
aHJlYWQoJklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0Q291bnQsIHJlcXVlc3REYXRhLCBrZXlS
YW5nZSk7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmdldENv
dW50KFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQktleVIKIAogdm9p
ZCBJREJDb25uZWN0aW9uUHJveHk6OmRlbGV0ZVJlY29yZChUcmFuc2FjdGlvbk9wZXJhdGlvbiYg
b3BlcmF0aW9uLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlKQogewotICAgIGNvbnN0
IElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKG9wZXJhdGlvbik7CisgICAgY29uc3QgSURCUmVx
dWVzdERhdGEgcmVxdWVzdERhdGEgeyBvcGVyYXRpb24gfTsKICAgICBzYXZlT3BlcmF0aW9uKG9w
ZXJhdGlvbik7CiAKICAgICBjYWxsQ29ubmVjdGlvbk9uTWFpblRocmVhZCgmSURCQ29ubmVjdGlv
blRvU2VydmVyOjpkZWxldGVSZWNvcmQsIHJlcXVlc3REYXRhLCBrZXlSYW5nZSk7CkBAIC0yMTUs
NyArMjE1LDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRlbGV0ZVJlY29yZChUcmFuc2Fj
dGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREIKIAogdm9pZCBJREJDb25uZWN0aW9u
UHJveHk6Om9wZW5DdXJzb3IoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3Qg
SURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKLSAgICBjb25zdCBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0
RGF0YShvcGVyYXRpb24pOworICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhIHsg
b3BlcmF0aW9uIH07CiAgICAgc2F2ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCiAgICAgY2FsbENv
bm5lY3Rpb25Pbk1haW5UaHJlYWQoJklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkN1cnNvciwg
cmVxdWVzdERhdGEsIGluZm8pOwpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgSURCQ29ubmVjdGlv
blByb3h5OjpvcGVuQ3Vyc29yKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0
IElEQkN1CiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjppdGVyYXRlQ3Vyc29yKFRyYW5zYWN0
aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQktleURhdGEmIGtleSwgdW5zaWduZWQg
bG9uZyBjb3VudCkKIHsKLSAgICBjb25zdCBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YShvcGVy
YXRpb24pOworICAgIGNvbnN0IElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhIHsgb3BlcmF0aW9u
IH07CiAgICAgc2F2ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCiAgICAgY2FsbENvbm5lY3Rpb25P
bk1haW5UaHJlYWQoJklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6aXRlcmF0ZUN1cnNvciwgcmVxdWVz
dERhdGEsIGtleSwgY291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcAppbmRleCBkYTNjNzk5ODMw
MTJiMDUxZGI2YmZhY2FjMjk2ZGExZDcyOThhNTg4Li4zMzk4ODg0NjI3N2FhOThmYzg5NWZiMjI0
ODVmNDE1ODUwZDM3OTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcApAQCAtNTEsNiArNTEsMTkg
QEAgY29uc3QgSURCS2V5RGF0YSogSW5kZXhWYWx1ZVN0b3JlOjpsb3dlc3RWYWx1ZUZvcktleShj
b25zdCBJREJLZXlEYXRhJiBrZXkpIGNvbnMKICAgICByZXR1cm4gZW50cnktPmdldExvd2VzdCgp
OwogfQogCitWZWN0b3I8SURCS2V5RGF0YT4gSW5kZXhWYWx1ZVN0b3JlOjphbGxWYWx1ZXNGb3JL
ZXkoY29uc3QgSURCS2V5RGF0YSYga2V5LCB1aW50MzJfdCBsaW1pdCkgY29uc3QKK3sKKyAgICBj
b25zdCBhdXRvJiBlbnRyeSA9IG1fcmVjb3Jkcy5nZXQoa2V5KTsKKyAgICBpZiAoIWVudHJ5KQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPElEQktleURhdGE+IHJlc3VsdHM7Cisg
ICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gZW50cnktPmJlZ2luKCk7IHJlc3VsdHMuc2l6ZSgpIDwg
bGltaXQgJiYgaXRlcmF0b3IuaXNWYWxpZCgpOyArK2l0ZXJhdG9yKQorICAgICAgICByZXN1bHRz
LmFwcGVuZChpdGVyYXRvci5rZXkoKSk7CisKKyAgICByZXR1cm4gcmVzdWx0czsKK30KKwogdWlu
dDY0X3QgSW5kZXhWYWx1ZVN0b3JlOjpjb3VudEZvcktleShjb25zdCBJREJLZXlEYXRhJiBrZXkp
IGNvbnN0CiB7CiAgICAgY29uc3QgYXV0byYgZW50cnkgPSBtX3JlY29yZHMuZ2V0KGtleSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhW
YWx1ZVN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5k
ZXhWYWx1ZVN0b3JlLmgKaW5kZXggODY2Y2ZmYjEyYmExNjU5OGRhNzQ1MDZiNWVmZmQ0ZGY0NjMx
ZDA0OC4uMjBhYmQ2NjdlMDI0NDgzODllNGZlZDJmOGFmZjliZTJmYzMwNDM1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZh
bHVlU3RvcmUuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgSW5kZXhWYWx1ZVN0b3Jl
KGJvb2wgdW5pcXVlKTsKIAogICAgIGNvbnN0IElEQktleURhdGEqIGxvd2VzdFZhbHVlRm9yS2V5
KGNvbnN0IElEQktleURhdGEmKSBjb25zdDsKKyAgICBWZWN0b3I8SURCS2V5RGF0YT4gYWxsVmFs
dWVzRm9yS2V5KGNvbnN0IElEQktleURhdGEmLCB1aW50MzJfdCBsaW1pdCkgY29uc3Q7CiAgICAg
dWludDY0X3QgY291bnRGb3JLZXkoY29uc3QgSURCS2V5RGF0YSYpIGNvbnN0OwogICAgIElEQktl
eURhdGEgbG93ZXN0S2V5V2l0aFJlY29yZEluUmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJikg
Y29uc3Q7CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBJREJLZXlEYXRhJikgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURC
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGQ1MzY0MGJiOWZlYmNmNWRjNzc5NTZm
NjMyMzE0ZjlkOTJkYjZiN2EuLmM5YWJjNmRlZDJjOTE3MDVhYWRhZTYyMjIwMTU4Y2NhMmY2ZGFl
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC04MCw3ICs4MCw3IEBA
IElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJ
REJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiAgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUlEQkJh
Y2tpbmdTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbiIpOwogCiAgICAgaWYgKG1fdHJhbnNhY3Rpb25z
LmNvbnRhaW5zKGluZm8uaWRlbnRpZmllcigpKSkKLSAgICAgICAgcmV0dXJuIElEQkVycm9yKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvciwgIkJhY2tpbmcgc3RvcmUgYXNr
ZWQgdG8gY3JlYXRlIHRyYW5zYWN0aW9uIGl0IGFscmVhZHkgaGFzIGEgcmVjb3JkIG9mIik7Cisg
ICAgICAgIHJldHVybiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvciwg
IkJhY2tpbmcgc3RvcmUgYXNrZWQgdG8gY3JlYXRlIHRyYW5zYWN0aW9uIGl0IGFscmVhZHkgaGFz
IGEgcmVjb3JkIG9mIiB9OwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IE1lbW9yeUJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uOjpjcmVhdGUoKnRoaXMsIGluZm8pOwogCkBAIC05Nyw3ICs5Nyw3IEBA
IElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJ
REJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiAKICAgICBtX3RyYW5zYWN0aW9ucy5zZXQoaW5mby5p
ZGVudGlmaWVyKCksIFdURk1vdmUodHJhbnNhY3Rpb24pKTsKIAotICAgIHJldHVybiBJREJFcnJv
cigpOworICAgIHJldHVybiB7IH07CiB9CiAKIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9y
ZTo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllcikKQEAgLTEwNiwxMSArMTA2LDExIEBAIElEQkVycm9yIE1lbW9yeUlEQkJh
Y2tpbmdTdG9yZTo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyCiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMudGFrZSh0cmFuc2Fj
dGlvbklkZW50aWZpZXIpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCi0gICAgICAgIHJldHVybiBJ
REJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3IsICJCYWNraW5n
IHN0b3JlIGFza2VkIHRvIGFib3J0IHRyYW5zYWN0aW9uIGl0IGRpZG4ndCBoYXZlIHJlY29yZCBv
ZiIpOworICAgICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRl
RXJyb3IsICJCYWNraW5nIHN0b3JlIGFza2VkIHRvIGFib3J0IHRyYW5zYWN0aW9uIGl0IGRpZG4n
dCBoYXZlIHJlY29yZCBvZiIgfTsKIAogICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOwogCi0gICAg
cmV0dXJuIElEQkVycm9yKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogSURCRXJyb3IgTWVtb3J5
SURCQmFja2luZ1N0b3JlOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKQEAgLTExOSwxMSArMTE5LDExIEBAIElEQkVy
cm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlv
bnMudGFrZSh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCi0g
ICAgICAgIHJldHVybiBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRl
RXJyb3IsICJCYWNraW5nIHN0b3JlIGFza2VkIHRvIGNvbW1pdCB0cmFuc2FjdGlvbiBpdCBkaWRu
J3QgaGF2ZSByZWNvcmQgb2YiKTsKKyAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRp
b246OkludmFsaWRTdGF0ZUVycm9yLCAiQmFja2luZyBzdG9yZSBhc2tlZCB0byBjb21taXQgdHJh
bnNhY3Rpb24gaXQgZGlkbid0IGhhdmUgcmVjb3JkIG9mIiB9OwogCiAgICAgdHJhbnNhY3Rpb24t
PmNvbW1pdCgpOwogCi0gICAgcmV0dXJuIElEQkVycm9yKCk7CisgICAgcmV0dXJuIHsgfTsKIH0K
IAogSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
T2JqZWN0U3RvcmVJbmZvJiBpbmZvKQpAQCAtMTMyLDcgKzEzMiw3IEBAIElEQkVycm9yIE1lbW9y
eUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0CiAKICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwogICAgIGlmIChtX2RhdGFi
YXNlSW5mby0+aGFzT2JqZWN0U3RvcmUoaW5mby5uYW1lKCkpKQotICAgICAgICByZXR1cm4gSURC
RXJyb3IoSURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJvcik7CisgICAgICAgIHJl
dHVybiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IgfTsKIAogICAgIEFT
U0VSVCghbV9vYmplY3RTdG9yZXNCeUlkZW50aWZpZXIuY29udGFpbnMoaW5mby5pZGVudGlmaWVy
KCkpKTsKICAgICBhdXRvIG9iamVjdFN0b3JlID0gTWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZShp
bmZvKTsKQEAgLTE0Niw3ICsxNDYsNyBAQCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6
OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAogICAgIHJh
d1RyYW5zYWN0aW9uLT5hZGROZXdPYmplY3RTdG9yZShvYmplY3RTdG9yZS5nZXQoKSk7CiAgICAg
cmVnaXN0ZXJPYmplY3RTdG9yZShXVEZNb3ZlKG9iamVjdFN0b3JlKSk7CiAKLSAgICByZXR1cm4g
SURCRXJyb3IoKTsKKyAgICByZXR1cm4geyB9OwogfQogCiBJREJFcnJvciBNZW1vcnlJREJCYWNr
aW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCkBA
IC0xNTUsNyArMTU1LDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpkZWxldGVP
YmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKIAogICAgIEFTU0VSVCht
X2RhdGFiYXNlSW5mbyk7CiAgICAgaWYgKCFtX2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5n
T2JqZWN0U3RvcmUob2JqZWN0U3RvcmVJZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIElEQkVy
cm9yKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IpOworICAgICAgICByZXR1
cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yIH07CiAKICAgICBhdXRv
IHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7
CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uKTsKQEAgLTE2NCwxMiArMTY0LDEyIEBAIElEQkVycm9y
IE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0CiAgICAgYXV0byBvYmplY3RTdG9yZSA9IHRha2VPYmplY3RTdG9yZUJ5
SWRlbnRpZmllcihvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIEFTU0VSVChvYmplY3RTdG9y
ZSk7CiAgICAgaWYgKCFvYmplY3RTdG9yZSkKLSAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IpOworICAgICAgICByZXR1cm4geyBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yIH07CiAKICAgICBtX2RhdGFiYXNlSW5m
by0+ZGVsZXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUtPmluZm8oKS5uYW1lKCkpOwogICAgIHRy
YW5zYWN0aW9uLT5vYmplY3RTdG9yZURlbGV0ZWQoKm9iamVjdFN0b3JlKTsKIAotICAgIHJldHVy
biBJREJFcnJvcigpOworICAgIHJldHVybiB7IH07CiB9CiAKIElEQkVycm9yIE1lbW9yeUlEQkJh
Y2tpbmdTdG9yZTo6cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBuZXdOYW1lKQpAQCAtMTc4LDcgKzE3OCw3IEBAIElEQkVycm9yIE1lbW9y
eUlEQkJhY2tpbmdTdG9yZTo6cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0CiAKICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwogICAgIGlmICghbV9kYXRh
YmFzZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmll
cikpCi0gICAgICAgIHJldHVybiBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3Ry
YWludEVycm9yKTsKKyAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0
cmFpbnRFcnJvciB9OwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdl
dCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbik7CkBAIC0x
ODcsNyArMTg3LDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpyZW5hbWVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICBhdXRvIG9iamVjdFN0
b3JlID0gbV9vYmplY3RTdG9yZXNCeUlkZW50aWZpZXIuZ2V0KG9iamVjdFN0b3JlSWRlbnRpZmll
cik7CiAgICAgQVNTRVJUKG9iamVjdFN0b3JlKTsKICAgICBpZiAoIW9iamVjdFN0b3JlKQotICAg
ICAgICByZXR1cm4gSURCRXJyb3IoSURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJv
cik7CisgICAgICAgIHJldHVybiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJy
b3IgfTsKIAogICAgIFN0cmluZyBvbGROYW1lID0gb2JqZWN0U3RvcmUtPmluZm8oKS5uYW1lKCk7
CiAgICAgb2JqZWN0U3RvcmUtPnJlbmFtZShuZXdOYW1lKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBJ
REJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdAogCiAgICAgbV9kYXRhYmFzZUluZm8tPnJlbmFtZU9iamVj
dFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllciwgbmV3TmFtZSk7CiAKLSAgICByZXR1cm4gSURC
RXJyb3IoKTsKKyAgICByZXR1cm4geyB9OwogfQogCiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5n
U3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKQEAgLTIx
MiwxMSArMjEyLDExIEBAIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y2xlYXJPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyCiAKICAgICBhdXRvIG9iamVj
dFN0b3JlID0gbV9vYmplY3RTdG9yZXNCeUlkZW50aWZpZXIuZ2V0KG9iamVjdFN0b3JlSWRlbnRp
Zmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9yZSkKLSAgICAgICAgcmV0dXJuIElEQkVycm9yKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IpOworICAgICAgICByZXR1cm4geyBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yIH07CiAKICAgICBvYmplY3RTdG9y
ZS0+Y2xlYXIoKTsKIAotICAgIHJldHVybiBJREJFcnJvcigpOworICAgIHJldHVybiB7IH07CiB9
CiAKIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkluZGV4
SW5mbyYgaW5mbykKQEAgLTIyOSw3ICsyMjksNyBAQCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5n
U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwog
CiAgICAgYXV0byogb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jlc0J5SWRlbnRpZmllci5nZXQo
aW5mby5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSk7CiAgICAgaWYgKCFvYmplY3RTdG9yZSkKLSAg
ICAgICAgcmV0dXJuIElEQkVycm9yKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJy
b3IpOworICAgICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVy
cm9yIH07CiAKICAgICByZXR1cm4gb2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KCpyYXdUcmFuc2Fj
dGlvbiwgaW5mbyk7CiB9CkBAIC0yNDQsNyArMjQ0LDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFj
a2luZ1N0b3JlOjpkZWxldGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWMKIAogICAgIGF1dG8qIG9iamVjdFN0b3JlID0gbV9vYmplY3RTdG9yZXNCeUlkZW50aWZpZXIu
Z2V0KG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9yZSkKLSAgICAg
ICAgcmV0dXJuIElEQkVycm9yKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3Ip
OworICAgICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9y
IH07CiAKICAgICByZXR1cm4gb2JqZWN0U3RvcmUtPmRlbGV0ZUluZGV4KCpyYXdUcmFuc2FjdGlv
biwgaW5kZXhJZGVudGlmaWVyKTsKIH0KQEAgLTI1NiwxMSArMjU2LDExIEBAIElEQkVycm9yIE1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6cmVuYW1lSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjCiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKICAgICBhdXRvKiBvYmpl
Y3RTdG9yZUluZm8gPSBtX2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBpZiAoIW9iamVjdFN0b3JlSW5mbykKLSAgICAg
ICAgcmV0dXJuIElEQkVycm9yKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3Ip
OworICAgICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9y
IH07CiAKICAgICBhdXRvKiBpbmRleEluZm8gPSBvYmplY3RTdG9yZUluZm8tPmluZm9Gb3JFeGlz
dGluZ0luZGV4KGluZGV4SWRlbnRpZmllcik7CiAgICAgaWYgKCFpbmRleEluZm8pCi0gICAgICAg
IHJldHVybiBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yKTsK
KyAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJvciB9
OwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlv
bklkZW50aWZpZXIpOwogICAgIEFTU0VSVCh0cmFuc2FjdGlvbik7CkBAIC0yNjksMTIgKzI2OSwx
MiBAQCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OnJlbmFtZUluZGV4KGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwogICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBtX29i
amVjdFN0b3Jlc0J5SWRlbnRpZmllci5nZXQob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBB
U1NFUlQob2JqZWN0U3RvcmUpOwogICAgIGlmICghb2JqZWN0U3RvcmUpCi0gICAgICAgIHJldHVy
biBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJvciB9OwogCiAg
ICAgYXV0byogaW5kZXggPSBvYmplY3RTdG9yZS0+aW5kZXhGb3JJZGVudGlmaWVyKGluZGV4SWRl
bnRpZmllcik7CiAgICAgQVNTRVJUKGluZGV4KTsKICAgICBpZiAoIWluZGV4KQotICAgICAgICBy
ZXR1cm4gSURCRXJyb3IoSURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJvcik7Cisg
ICAgICAgIHJldHVybiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDb25zdHJhaW50RXJyb3IgfTsK
IAogICAgIFN0cmluZyBvbGROYW1lID0gaW5kZXgtPmluZm8oKS5uYW1lKCk7CiAgICAgb2JqZWN0
U3RvcmUtPnJlbmFtZUluZGV4KCppbmRleCwgbmV3TmFtZSk7CkBAIC0yODIsNyArMjgyLDcgQEAg
SURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpyZW5hbWVJbmRleChjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWMKIAogICAgIGluZGV4SW5mby0+cmVuYW1lKG5ld05hbWUp
OwogCi0gICAgcmV0dXJuIElEQkVycm9yKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogdm9pZCBN
ZW1vcnlJREJCYWNraW5nU3RvcmU6OnJlbW92ZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFi
b3J0KE1lbW9yeU9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSkKQEAgLTMxMiw3ICszMTIsNyBAQCBJ
REJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIFJFTEVBU0VfQVNTRVJUKG9iamVjdFN0b3JlKTsK
IAogICAgIGtleUV4aXN0cyA9IG9iamVjdFN0b3JlLT5jb250YWluc1JlY29yZChrZXlEYXRhKTsK
LSAgICByZXR1cm4gSURCRXJyb3IoKTsKKyAgICByZXR1cm4geyB9OwogfQogCiBJREJFcnJvciBN
ZW1vcnlJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJhbmdlKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCkBAIC0zMjIsMTQgKzMyMiwxNCBAQCBJ
REJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJhbmdlKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhYwogICAgIEFTU0VSVChvYmplY3RTdG9yZUlkZW50aWZpZXIp
OwogCiAgICAgaWYgKCFtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkZW50aWZp
ZXIpKQotICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25v
d25FcnJvciwgQVNDSUlMaXRlcmFsKCJObyBiYWNraW5nIHN0b3JlIHRyYW5zYWN0aW9uIGZvdW5k
IHRvIGRlbGV0ZSBmcm9tIikpOworICAgICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUgdHJhbnNhY3Rp
b24gZm91bmQgdG8gZGVsZXRlIGZyb20iKSB9OwogCiAgICAgTWVtb3J5T2JqZWN0U3RvcmUqIG9i
amVjdFN0b3JlID0gbV9vYmplY3RTdG9yZXNCeUlkZW50aWZpZXIuZ2V0KG9iamVjdFN0b3JlSWRl
bnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RTdG9yZSkKLSAgICAgICAgcmV0dXJuIElEQkVycm9y
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm8gYmFj
a2luZyBzdG9yZSBvYmplY3Qgc3RvcmUgZm91bmQiKSk7CisgICAgICAgIHJldHVybiB7IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBz
dG9yZSBvYmplY3Qgc3RvcmUgZm91bmQiKSB9OwogCiAgICAgb2JqZWN0U3RvcmUtPmRlbGV0ZVJh
bmdlKHJhbmdlKTsKLSAgICByZXR1cm4gSURCRXJyb3IoKTsKKyAgICByZXR1cm4geyB9OwogfQog
CiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJiBvYmplY3RTdG9yZUluZm8sIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0
IElEQlZhbHVlJiB2YWx1ZSkKQEAgLTM0MCwxMSArMzQwLDExIEBAIElEQkVycm9yIE1lbW9yeUlE
QkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3RpCiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5z
YWN0aW9uSWRlbnRpZmllcik7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKLSAgICAgICAgcmV0dXJu
IElEQkVycm9yKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiTm8gYmFja2luZyBzdG9yZSB0cmFuc2FjdGlvbiBmb3VuZCB0byBwdXQgcmVjb3JkIikpOwor
ICAgICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJ
SUxpdGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUgdHJhbnNhY3Rpb24gZm91bmQgdG8gcHV0IHJlY29y
ZCIpIH07CiAKICAgICBNZW1vcnlPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0
b3Jlc0J5SWRlbnRpZmllci5nZXQob2JqZWN0U3RvcmVJbmZvLmlkZW50aWZpZXIoKSk7CiAgICAg
aWYgKCFvYmplY3RTdG9yZSkKLSAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBzdG9yZSBvYmpl
Y3Qgc3RvcmUgZm91bmQgdG8gcHV0IHJlY29yZCIpKTsKKyAgICAgICAgcmV0dXJuIHsgSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJObyBiYWNraW5nIHN0
b3JlIG9iamVjdCBzdG9yZSBmb3VuZCB0byBwdXQgcmVjb3JkIikgfTsKIAogICAgIHJldHVybiBv
YmplY3RTdG9yZS0+YWRkUmVjb3JkKCp0cmFuc2FjdGlvbiwga2V5RGF0YSwgdmFsdWUpOwogfQpA
QCAtMzU2LDE0ICszNTYsMTQgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRS
ZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBBU1NFUlQo
b2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKIAogICAgIGlmICghbV90cmFuc2FjdGlvbnMuY29udGFp
bnModHJhbnNhY3Rpb25JZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBz
dG9yZSB0cmFuc2FjdGlvbiBmb3VuZCB0byBnZXQgcmVjb3JkIikpOworICAgICAgICByZXR1cm4g
eyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIk5vIGJh
Y2tpbmcgc3RvcmUgdHJhbnNhY3Rpb24gZm91bmQgdG8gZ2V0IHJlY29yZCIpIH07CiAKICAgICBN
ZW1vcnlPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jlc0J5SWRlbnRpZmll
ci5nZXQob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBpZiAoIW9iamVjdFN0b3JlKQotICAg
ICAgICByZXR1cm4gSURCRXJyb3IoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwg
QVNDSUlMaXRlcmFsKCJObyBiYWNraW5nIHN0b3JlIG9iamVjdCBzdG9yZSBmb3VuZCIpKTsKKyAg
ICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlM
aXRlcmFsKCJObyBiYWNraW5nIHN0b3JlIG9iamVjdCBzdG9yZSBmb3VuZCIpIH07CiAKICAgICBv
dXRWYWx1ZSA9IG9iamVjdFN0b3JlLT52YWx1ZUZvcktleVJhbmdlKHJhbmdlKTsKLSAgICByZXR1
cm4gSURCRXJyb3IoKTsKKyAgICByZXR1cm4geyB9OwogfQogCiBJREJFcnJvciBNZW1vcnlJREJC
YWNraW5nU3RvcmU6OmdldEFsbFJlY29yZHMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRBbGxS
ZWNvcmRzRGF0YSwgSURCR2V0QWxsUmVzdWx0JiByZXN1bHQpCkBAIC0zNzMsMTMgKzM3MywyMSBA
QCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldEFsbFJlY29yZHMoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFucwogICAgIEFTU0VSVChnZXRBbGxSZWNvcmRzRGF0YS5v
YmplY3RTdG9yZUlkZW50aWZpZXIpOwogCiAgICAgaWYgKCFtX3RyYW5zYWN0aW9ucy5jb250YWlu
cyh0cmFuc2FjdGlvbklkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJObyBiYWNraW5nIHN0
b3JlIHRyYW5zYWN0aW9uIGZvdW5kIHRvIGdldCBhbGwgcmVjb3JkcyIpKTsKKyAgICAgICAgcmV0
dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJO
byBiYWNraW5nIHN0b3JlIHRyYW5zYWN0aW9uIGZvdW5kIHRvIGdldCBhbGwgcmVjb3JkcyIpIH07
CiAKLSAgICBNZW1vcnlPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jlc0J5
SWRlbnRpZmllci5nZXQoZ2V0QWxsUmVjb3Jkc0RhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKTsK
KyAgICBhdXRvKiBvYmplY3RTdG9yZSA9IG1fb2JqZWN0U3RvcmVzQnlJZGVudGlmaWVyLmdldChn
ZXRBbGxSZWNvcmRzRGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIGlmICghb2JqZWN0
U3RvcmUpCi0gICAgICAgIHJldHVybiBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5r
bm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUgb2JqZWN0IHN0b3JlIGZv
dW5kIikpOworICAgICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVy
cm9yLCBBU0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUgb2JqZWN0IHN0b3JlIGZvdW5kIikg
fTsKKworICAgIGlmIChnZXRBbGxSZWNvcmRzRGF0YS5pbmRleElkZW50aWZpZXIpIHsKKyAgICAg
ICAgYXV0byogaW5kZXggPSBvYmplY3RTdG9yZS0+aW5kZXhGb3JJZGVudGlmaWVyKGdldEFsbFJl
Y29yZHNEYXRhLmluZGV4SWRlbnRpZmllcik7CisgICAgICAgIGlmICghaW5kZXgpCisgICAgICAg
ICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxp
dGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUgaW5kZXggZm91bmQiKSB9OworCisgICAgICAgIGluZGV4
LT5nZXRBbGxSZWNvcmRzKGdldEFsbFJlY29yZHNEYXRhLmtleVJhbmdlRGF0YSwgZ2V0QWxsUmVj
b3Jkc0RhdGEuY291bnQsIGdldEFsbFJlY29yZHNEYXRhLmdldEFsbFR5cGUsIHJlc3VsdCk7Cisg
ICAgfSBlbHNlCisgICAgICAgIG9iamVjdFN0b3JlLT5nZXRBbGxSZWNvcmRzKGdldEFsbFJlY29y
ZHNEYXRhLmtleVJhbmdlRGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEuY291bnQsIGdldEFsbFJlY29y
ZHNEYXRhLmdldEFsbFR5cGUsIHJlc3VsdCk7CiAKLSAgICBvYmplY3RTdG9yZS0+Z2V0QWxsUmVj
b3JkcyhnZXRBbGxSZWNvcmRzRGF0YS5rZXlSYW5nZURhdGEsIGdldEFsbFJlY29yZHNEYXRhLmNv
dW50LCBnZXRBbGxSZWNvcmRzRGF0YS5nZXRBbGxUeXBlLCByZXN1bHQpOwogICAgIHJldHVybiB7
IH07CiB9CiAKQEAgLTM5MCwxNCArMzk4LDE0IEBAIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdT
dG9yZTo6Z2V0SW5kZXhSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuCiAg
ICAgQVNTRVJUKG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAKICAgICBpZiAoIW1fdHJhbnNhY3Rp
b25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBJREJF
cnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIk5v
IGJhY2tpbmcgc3RvcmUgdHJhbnNhY3Rpb24gZm91bmQgdG8gZ2V0IHJlY29yZCIpKTsKKyAgICAg
ICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRl
cmFsKCJObyBiYWNraW5nIHN0b3JlIHRyYW5zYWN0aW9uIGZvdW5kIHRvIGdldCByZWNvcmQiKSB9
OwogCiAgICAgTWVtb3J5T2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlID0gbV9vYmplY3RTdG9yZXNC
eUlkZW50aWZpZXIuZ2V0KG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgaWYgKCFvYmplY3RT
dG9yZSkKLSAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtu
b3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBzdG9yZSBvYmplY3Qgc3RvcmUgZm91
bmQiKSk7CisgICAgICAgIHJldHVybiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBzdG9yZSBvYmplY3Qgc3RvcmUgZm91bmQiKSB9
OwogCiAgICAgb3V0VmFsdWUgPSBvYmplY3RTdG9yZS0+aW5kZXhWYWx1ZUZvcktleVJhbmdlKGlu
ZGV4SWRlbnRpZmllciwgcmVjb3JkVHlwZSwgcmFuZ2UpOwotICAgIHJldHVybiBJREJFcnJvcigp
OworICAgIHJldHVybiB7IH07CiB9CiAKIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6
Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlm
aWVyLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlLCB1aW50NjRfdCYgb3V0Q291bnQpCkBA
IC00MDcsMTUgKzQxNSwxNSBAQCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldENv
dW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIEFTU0VSVChv
YmplY3RTdG9yZUlkZW50aWZpZXIpOwogCiAgICAgaWYgKCFtX3RyYW5zYWN0aW9ucy5jb250YWlu
cyh0cmFuc2FjdGlvbklkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJObyBiYWNraW5nIHN0
b3JlIHRyYW5zYWN0aW9uIGZvdW5kIHRvIGdldCBjb3VudCIpKTsKKyAgICAgICAgcmV0dXJuIHsg
SURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJObyBiYWNr
aW5nIHN0b3JlIHRyYW5zYWN0aW9uIGZvdW5kIHRvIGdldCBjb3VudCIpIH07CiAKICAgICBNZW1v
cnlPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jlc0J5SWRlbnRpZmllci5n
ZXQob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICBpZiAoIW9iamVjdFN0b3JlKQotICAgICAg
ICByZXR1cm4gSURCRXJyb3IoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVND
SUlMaXRlcmFsKCJObyBiYWNraW5nIHN0b3JlIG9iamVjdCBzdG9yZSBmb3VuZCIpKTsKKyAgICAg
ICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRl
cmFsKCJObyBiYWNraW5nIHN0b3JlIG9iamVjdCBzdG9yZSBmb3VuZCIpIH07CiAKICAgICBvdXRD
b3VudCA9IG9iamVjdFN0b3JlLT5jb3VudEZvcktleVJhbmdlKGluZGV4SWRlbnRpZmllciwgcmFu
Z2UpOwogCi0gICAgcmV0dXJuIElEQkVycm9yKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogSURC
RXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZW5lcmF0ZUtleU51bWJlcihjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCYga2V5TnVtYmVyKQpAQCAtNDM0LDcgKzQ0Miw3IEBA
IElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2VuZXJhdGVLZXlOdW1iZXIoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAKICAgICBvYmplY3RTdG9yZS0+c2V0S2V5R2VuZXJh
dG9yVmFsdWUoa2V5TnVtYmVyICsgMSk7CiAKLSAgICByZXR1cm4gSURCRXJyb3IoKTsKKyAgICBy
ZXR1cm4geyB9OwogfQogCiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OnJldmVydEdl
bmVyYXRlZEtleU51bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBrZXlO
dW1iZXIpCkBAIC00ODMsMTcgKzQ5MSwxNyBAQCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3Rv
cmU6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdAogICAg
IEFTU0VSVCghTWVtb3J5Q3Vyc29yOjpjdXJzb3JGb3JJZGVudGlmaWVyKGluZm8uaWRlbnRpZmll
cigpKSk7CiAKICAgICBpZiAoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWRl
bnRpZmllcikpCi0gICAgICAgIHJldHVybiBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUgdHJhbnNhY3Rpb24g
Zm91bmQgaW4gd2hpY2ggdG8gb3BlbiBhIGN1cnNvciIpKTsKKyAgICAgICAgcmV0dXJuIHsgSURC
RGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJObyBiYWNraW5n
IHN0b3JlIHRyYW5zYWN0aW9uIGZvdW5kIGluIHdoaWNoIHRvIG9wZW4gYSBjdXJzb3IiKSB9Owog
CiAgICAgc3dpdGNoIChpbmZvLmN1cnNvclNvdXJjZSgpKSB7CiAgICAgY2FzZSBJbmRleGVkREI6
OkN1cnNvclNvdXJjZTo6T2JqZWN0U3RvcmU6IHsKICAgICAgICAgYXV0byogb2JqZWN0U3RvcmUg
PSBtX29iamVjdFN0b3Jlc0J5SWRlbnRpZmllci5nZXQoaW5mby5zb3VyY2VJZGVudGlmaWVyKCkp
OwogICAgICAgICBpZiAoIW9iamVjdFN0b3JlKQotICAgICAgICAgICAgcmV0dXJuIElEQkVycm9y
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm8gYmFj
a2luZyBzdG9yZSBvYmplY3Qgc3RvcmUgZm91bmQiKSk7CisgICAgICAgICAgICByZXR1cm4geyBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIk5vIGJhY2tp
bmcgc3RvcmUgb2JqZWN0IHN0b3JlIGZvdW5kIikgfTsKIAogICAgICAgICBNZW1vcnlDdXJzb3Iq
IGN1cnNvciA9IG9iamVjdFN0b3JlLT5tYXliZU9wZW5DdXJzb3IoaW5mbyk7CiAgICAgICAgIGlm
ICghY3Vyc29yKQotICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IGNyZWF0ZSBvYmplY3Qg
c3RvcmUgY3Vyc29yIGluIGJhY2tpbmcgc3RvcmUiKSk7CisgICAgICAgICAgICByZXR1cm4geyBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5v
dCBjcmVhdGUgb2JqZWN0IHN0b3JlIGN1cnNvciBpbiBiYWNraW5nIHN0b3JlIikgfTsKIAogICAg
ICAgICBjdXJzb3ItPmN1cnJlbnREYXRhKG91dERhdGEpOwogICAgICAgICBicmVhazsKQEAgLTUw
MSwxNSArNTA5LDE1IEBAIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6b3BlbkN1cnNv
cihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0CiAgICAgY2FzZSBJbmRleGVk
REI6OkN1cnNvclNvdXJjZTo6SW5kZXg6CiAgICAgICAgIGF1dG8qIG9iamVjdFN0b3JlID0gbV9v
YmplY3RTdG9yZXNCeUlkZW50aWZpZXIuZ2V0KGluZm8ub2JqZWN0U3RvcmVJZGVudGlmaWVyKCkp
OwogICAgICAgICBpZiAoIW9iamVjdFN0b3JlKQotICAgICAgICAgICAgcmV0dXJuIElEQkVycm9y
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm8gYmFj
a2luZyBzdG9yZSBvYmplY3Qgc3RvcmUgZm91bmQiKSk7CisgICAgICAgICAgICByZXR1cm4geyBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIk5vIGJhY2tp
bmcgc3RvcmUgb2JqZWN0IHN0b3JlIGZvdW5kIikgfTsKIAogICAgICAgICBhdXRvKiBpbmRleCA9
IG9iamVjdFN0b3JlLT5pbmRleEZvcklkZW50aWZpZXIoaW5mby5zb3VyY2VJZGVudGlmaWVyKCkp
OwogICAgICAgICBpZiAoIWluZGV4KQotICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBz
dG9yZSBpbmRleCBmb3VuZCIpKTsKKyAgICAgICAgICAgIHJldHVybiB7IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBzdG9yZSBpbmRl
eCBmb3VuZCIpIH07CiAKICAgICAgICAgTWVtb3J5Q3Vyc29yKiBjdXJzb3IgPSBpbmRleC0+bWF5
YmVPcGVuQ3Vyc29yKGluZm8pOwogICAgICAgICBpZiAoIWN1cnNvcikKLSAgICAgICAgICAgIHJl
dHVybiBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxp
dGVyYWwoIkNvdWxkIG5vdCBjcmVhdGUgaW5kZXggY3Vyc29yIGluIGJhY2tpbmcgc3RvcmUiKSk7
CisgICAgICAgICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9y
LCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBjcmVhdGUgaW5kZXggY3Vyc29yIGluIGJhY2tpbmcg
c3RvcmUiKSB9OwogCiAgICAgICAgIGN1cnNvci0+Y3VycmVudERhdGEob3V0RGF0YSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtNTIzLDExICs1MzEsMTEgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2lu
Z1N0b3JlOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnMK
ICAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5SURCQmFja2luZ1N0b3JlOjppdGVyYXRlQ3Vyc29y
Iik7CiAKICAgICBpZiAoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWRlbnRp
ZmllcikpCi0gICAgICAgIHJldHVybiBJREJFcnJvcihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5r
bm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUgdHJhbnNhY3Rpb24gZm91
bmQgaW4gd2hpY2ggdG8gaXRlcmF0ZSBjdXJzb3IiKSk7CisgICAgICAgIHJldHVybiB7IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBz
dG9yZSB0cmFuc2FjdGlvbiBmb3VuZCBpbiB3aGljaCB0byBpdGVyYXRlIGN1cnNvciIpIH07CiAK
ICAgICBhdXRvKiBjdXJzb3IgPSBNZW1vcnlDdXJzb3I6OmN1cnNvckZvcklkZW50aWZpZXIoY3Vy
c29ySWRlbnRpZmllcik7CiAgICAgaWYgKCFjdXJzb3IpCi0gICAgICAgIHJldHVybiBJREJFcnJv
cihJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIk5vIGJh
Y2tpbmcgc3RvcmUgY3Vyc29yIGZvdW5kIGluIHdoaWNoIHRvIGl0ZXJhdGUgY3Vyc29yIikpOwor
ICAgICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJ
SUxpdGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUgY3Vyc29yIGZvdW5kIGluIHdoaWNoIHRvIGl0ZXJh
dGUgY3Vyc29yIikgfTsKIAogICAgIGN1cnNvci0+aXRlcmF0ZShrZXksIGNvdW50LCBvdXREYXRh
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJbmRleC5jcHAKaW5kZXggMmUyZmEwYTUzOTAzMjQxODc5OTU3NThjYzM4ZDdlYjUw
M2I2YWQzNy4uMzA3YzdhMTIxNzI5YzdiNGJkZTVlOGU1MWE1ZmZkZmRjN2RmNjYyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SW5kZXguY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAKICNpbmNsdWRlICJJREJFcnJvci5oIgorI2luY2x1ZGUgIklEQkdldEFsbFJlc3VsdC5oIgog
I2luY2x1ZGUgIklEQkdldFJlc3VsdC5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlRGF0YS5oIgog
I2luY2x1ZGUgIkluZGV4S2V5LmgiCkBAIC0xNTcsNiArMTU4LDQ1IEBAIHVpbnQ2NF90IE1lbW9y
eUluZGV4Ojpjb3VudEZvcktleVJhbmdlKGNvbnN0IElEQktleVJhbmdlRGF0YSYgaW5SYW5nZSkK
ICAgICByZXR1cm4gY291bnQ7CiB9CiAKK3ZvaWQgTWVtb3J5SW5kZXg6OmdldEFsbFJlY29yZHMo
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEsIE9wdGlvbmFsPHVpbnQzMl90PiBj
b3VudCwgSW5kZXhlZERCOjpHZXRBbGxUeXBlIHR5cGUsIElEQkdldEFsbFJlc3VsdCYgcmVzdWx0
KSBjb25zdAoreworICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlJbmRleDo6Z2V0QWxsUmVjb3Jk
cyIpOworCisgICAgcmVzdWx0ID0geyB0eXBlIH07CisKKyAgICBpZiAoIW1fcmVjb3JkcykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgdWludDMyX3QgdGFyZ2V0Q291bnQ7CisgICAgaWYgKGNvdW50
ICYmIGNvdW50LnZhbHVlKCkpCisgICAgICAgIHRhcmdldENvdW50ID0gY291bnQudmFsdWUoKTsK
KyAgICBlbHNlCisgICAgICAgIHRhcmdldENvdW50ID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50
MzJfdD46Om1heCgpOworCisgICAgSURCS2V5UmFuZ2VEYXRhIHJhbmdlID0ga2V5UmFuZ2VEYXRh
OworICAgIHVpbnQzMl90IGN1cnJlbnRDb3VudCA9IDA7CisgICAgd2hpbGUgKGN1cnJlbnRDb3Vu
dCA8IHRhcmdldENvdW50KSB7CisgICAgICAgIGF1dG8ga2V5ID0gbV9yZWNvcmRzLT5sb3dlc3RL
ZXlXaXRoUmVjb3JkSW5SYW5nZShyYW5nZSk7CisgICAgICAgIGlmIChrZXkuaXNOdWxsKCkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcmFuZ2UubG93ZXJLZXkgPSBrZXk7CisgICAg
ICAgIHJhbmdlLmxvd2VyT3BlbiA9IHRydWU7CisKKyAgICAgICAgYXV0byBhbGxWYWx1ZXMgPSBt
X3JlY29yZHMtPmFsbFZhbHVlc0ZvcktleShrZXksIHRhcmdldENvdW50IC0gY3VycmVudENvdW50
KTsKKyAgICAgICAgZm9yIChhdXRvJiBrZXlWYWx1ZSA6IGFsbFZhbHVlcykgeworICAgICAgICAg
ICAgaWYgKHR5cGUgPT0gSW5kZXhlZERCOjpHZXRBbGxUeXBlOjpLZXlzKSB7CisgICAgICAgICAg
ICAgICAgSURCS2V5RGF0YSBrZXlDb3B5IHsga2V5VmFsdWUgfTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQuYWRkS2V5KFdURk1vdmUoa2V5Q29weSkpOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgcmVzdWx0LmFkZFZhbHVlKG1fb2JqZWN0U3RvcmUudmFsdWVGb3JLZXlSYW5n
ZShrZXlWYWx1ZSkpOworICAgICAgICB9CisKKyAgICAgICAgY3VycmVudENvdW50ICs9IGFsbFZh
bHVlcy5zaXplKCk7CisgICAgfQorfQorCisKIElEQkVycm9yIE1lbW9yeUluZGV4OjpwdXRJbmRl
eEtleShjb25zdCBJREJLZXlEYXRhJiB2YWx1ZUtleSwgY29uc3QgSW5kZXhLZXkmIGluZGV4S2V5
KQogewogICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlJbmRleDo6cHJvdmlzaW9uYWxQdXRJbmRl
eEtleSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeUluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SW5kZXguaAppbmRleCA3ZWM0N2NlZGVmMTY2ODA2MGZjNzVlZGI2NjllMjQzMWI4
ZmM2YWJiLi44NDc1OTg0NzUyOWY2YzViNzAzZGRlMjdmNzA3MDNlNGYwNTg1OTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXgu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5k
ZXguaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkN1
cnNvckluZm87CiBjbGFzcyBJREJFcnJvcjsKK2NsYXNzIElEQkdldEFsbFJlc3VsdDsKIGNsYXNz
IElEQkdldFJlc3VsdDsKIGNsYXNzIElEQktleURhdGE7CiBjbGFzcyBJbmRleEtleTsKQEAgLTQ0
LDYgKzQ1LDcgQEAgY2xhc3MgVGhyZWFkU2FmZURhdGFCdWZmZXI7CiBzdHJ1Y3QgSURCS2V5UmFu
Z2VEYXRhOwogCiBuYW1lc3BhY2UgSW5kZXhlZERCIHsKK2VudW0gY2xhc3MgR2V0QWxsVHlwZTsK
IGVudW0gY2xhc3MgSW5kZXhSZWNvcmRUeXBlOwogfQogCkBAIC02Niw2ICs2OCw3IEBAIHB1Ymxp
YzoKIAogICAgIElEQkdldFJlc3VsdCBnZXRSZXN1bHRGb3JLZXlSYW5nZShJbmRleGVkREI6Oklu
ZGV4UmVjb3JkVHlwZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgY29uc3Q7CiAgICAgdWludDY0
X3QgY291bnRGb3JLZXlSYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKKyAgICB2b2lkIGdl
dEFsbFJlY29yZHMoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgT3B0aW9uYWw8dWludDMyX3Q+IGNv
dW50LCBJbmRleGVkREI6OkdldEFsbFR5cGUsIElEQkdldEFsbFJlc3VsdCYpIGNvbnN0OwogCiAg
ICAgSURCRXJyb3IgcHV0SW5kZXhLZXkoY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IEluZGV4S2V5
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggZDlkNTgyZDY3YzZi
MzVkNjQyZDFkY2ZlNmNiMDk1Yjk1OWUyZTE1MC4uMzI2NThhYzliNzk1ZTI3N2U3NmJiODQ1ZTI0
MDNmNGQ4M2ZjY2Y1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTE4
NzgsNyArMTg3OCwxMiBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29y
ZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIHJldHVybiB7IH07
CiB9CiAKLXN0YXRpYyBjb25zdCBBU0NJSUxpdGVyYWwmIHF1ZXJ5Rm9yR2V0QWxsUmVjb3Jkcyhj
b25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEpCitJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmdldEFsbFJlY29yZHMoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRh
JiBnZXRBbGxSZWNvcmRzRGF0YSwgSURCR2V0QWxsUmVzdWx0JiByZXN1bHQpCit7CisgICAgcmV0
dXJuIGdldEFsbFJlY29yZHNEYXRhLmluZGV4SWRlbnRpZmllciA/IGdldEFsbEluZGV4UmVjb3Jk
cyh0cmFuc2FjdGlvbklkZW50aWZpZXIsIGdldEFsbFJlY29yZHNEYXRhLCByZXN1bHQpIDogZ2V0
QWxsT2JqZWN0U3RvcmVSZWNvcmRzKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZ2V0QWxsUmVjb3Jk
c0RhdGEsIHJlc3VsdCk7Cit9CisKK3N0YXRpYyBjb25zdCBBU0NJSUxpdGVyYWwmIHF1ZXJ5Rm9y
R2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRB
bGxSZWNvcmRzRGF0YSkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQVNDSUlM
aXRlcmFsPiBsb3dlck9wZW5VcHBlck9wZW5LZXkoIlNFTEVDVCBrZXkgRlJPTSBSZWNvcmRzIFdI
RVJFIG9iamVjdFN0b3JlSUQgPSA/IEFORCBrZXkgPiBDQVNUKD8gQVMgVEVYVCkgQU5EIGtleSA8
IENBU1QoPyBBUyBURVhUKSBPUkRFUiBCWSBrZXk7Iik7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gbG93ZXJPcGVuVXBwZXJDbG9zZWRLZXkoIlNFTEVDVCBr
ZXkgRlJPTSBSZWNvcmRzIFdIRVJFIG9iamVjdFN0b3JlSUQgPSA/IEFORCBrZXkgPiBDQVNUKD8g
QVMgVEVYVCkgQU5EIGtleSA8PSBDQVNUKD8gQVMgVEVYVCkgT1JERVIgQlkga2V5OyIpOwpAQCAt
MTkxMiw5ICsxOTE3LDkgQEAgc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCYgcXVlcnlGb3JHZXRB
bGxSZWNvcmRzKGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBnZXQKICAgICByZXR1cm4gbG93
ZXJDbG9zZWRVcHBlckNsb3NlZFZhbHVlLmdldCgpOwogfQogCi1JREJFcnJvciBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmdldEFsbFJlY29yZHMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRBbGxS
ZWNvcmRzRGF0YSwgSURCR2V0QWxsUmVzdWx0JiByZXN1bHQpCitJREJFcnJvciBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmdldEFsbE9iamVjdFN0b3JlUmVjb3Jkcyhjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0Rh
dGEmIGdldEFsbFJlY29yZHNEYXRhLCBJREJHZXRBbGxSZXN1bHQmIHJlc3VsdCkKIHsKLSAgICBM
T0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxSZWNvcmRzIik7Cisg
ICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxsT2JqZWN0U3Rv
cmVSZWNvcmRzIik7CiAKICAgICBBU1NFUlQobV9zcWxpdGVEQik7CiAgICAgQVNTRVJUKG1fc3Fs
aXRlREItPmlzT3BlbigpKTsKQEAgLTE5NDMsNyArMTk0OCw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zCiAgICAgICAgIHJldHVybiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9v
a3VwIHJhbmdlIikgfTsKICAgICB9CiAKLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX3NxbGl0
ZURCLCBxdWVyeUZvckdldEFsbFJlY29yZHMoZ2V0QWxsUmVjb3Jkc0RhdGEpKTsKKyAgICBTUUxp
dGVTdGF0ZW1lbnQgc3FsKCptX3NxbGl0ZURCLCBxdWVyeUZvckdldEFsbE9iamVjdFN0b3JlUmVj
b3JkcyhnZXRBbGxSZWNvcmRzRGF0YSkpOwogICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElU
RV9PSwogICAgICAgICB8fCBzcWwuYmluZEludDY0KDEsIGdldEFsbFJlY29yZHNEYXRhLm9iamVj
dFN0b3JlSWRlbnRpZmllcikgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHNxbC5iaW5kQmxvYigy
LCBsb3dlckJ1ZmZlci0+ZGF0YSgpLCBsb3dlckJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0sK
QEAgLTE5NTQsMTEgKzE5NTksMTQgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpn
ZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnMKIAogICAgIHJl
c3VsdCA9IHsgZ2V0QWxsUmVjb3Jkc0RhdGEuZ2V0QWxsVHlwZSB9OwogCisgICAgdWludDMyX3Qg
dGFyZ2V0UmVzdWx0czsKKyAgICBpZiAoZ2V0QWxsUmVjb3Jkc0RhdGEuY291bnQgJiYgZ2V0QWxs
UmVjb3Jkc0RhdGEuY291bnQudmFsdWUoKSkKKyAgICAgICAgdGFyZ2V0UmVzdWx0cyA9IGdldEFs
bFJlY29yZHNEYXRhLmNvdW50LnZhbHVlKCk7CisgICAgZWxzZQorICAgICAgICB0YXJnZXRSZXN1
bHRzID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpOworCiAgICAgaW50IHNx
bFJlc3VsdCA9IHNxbC5zdGVwKCk7CiAgICAgdWludDMyX3QgcmV0dXJuZWRSZXN1bHRzID0gMDsK
LSAgICB1aW50MzJfdCB0YXJnZXRSZXN1bHRzID0gZ2V0QWxsUmVjb3Jkc0RhdGEuY291bnQgPyBn
ZXRBbGxSZWNvcmRzRGF0YS5jb3VudC52YWx1ZSgpIDogMDsKLSAgICBpZiAoIXRhcmdldFJlc3Vs
dHMpCi0gICAgICAgIHRhcmdldFJlc3VsdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90
Pjo6bWF4KCk7CiAKICAgICB3aGlsZSAoc3FsUmVzdWx0ID09IFNRTElURV9ST1cgJiYgcmV0dXJu
ZWRSZXN1bHRzIDwgdGFyZ2V0UmVzdWx0cykgewogICAgICAgICBpZiAoZ2V0QWxsUmVjb3Jkc0Rh
dGEuZ2V0QWxsVHlwZSA9PSBJbmRleGVkREI6OkdldEFsbFR5cGU6OlZhbHVlcykgewpAQCAtMjAw
NCw2ICsyMDEyLDU0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxsUmVj
b3Jkcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zCiAgICAgcmV0dXJuIHsgSURC
RGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJFcnJvciBsb29r
aW5nIHVwIHJlY29yZCBpbiBvYmplY3Qgc3RvcmUgYnkga2V5IHJhbmdlIikgfTsKIH0KIAorSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxJbmRleFJlY29yZHMoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkdldEFs
bFJlY29yZHNEYXRhJiBnZXRBbGxSZWNvcmRzRGF0YSwgSURCR2V0QWxsUmVzdWx0JiByZXN1bHQp
Cit7CisgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxsSW5k
ZXhSZWNvcmRzIC0gJXMiLCBnZXRBbGxSZWNvcmRzRGF0YS5rZXlSYW5nZURhdGEubG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgQVNTRVJUKG1fc3FsaXRlREIpOworICAgIEFT
U0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CisKKyAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1f
dHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIGlmICghdHJhbnNh
Y3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJBdHRlbXB0IHRvIGdldCBhbGwgaW5kZXggcmVjb3JkcyBmcm9tIGRhdGFiYXNlIHdpdGhvdXQg
YW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJh
c2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0IHRvIGdldCBh
bGwgaW5kZXggcmVjb3JkcyBmcm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJh
bnNhY3Rpb24iKSB9OworICAgIH0KKworICAgIGF1dG8gY3Vyc29yID0gdHJhbnNhY3Rpb24tPm1h
eWJlT3BlbkJhY2tpbmdTdG9yZUN1cnNvcihnZXRBbGxSZWNvcmRzRGF0YS5vYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGdldEFsbFJlY29yZHNEYXRhLmluZGV4SWRlbnRpZmllciwgZ2V0QWxsUmVjb3Jk
c0RhdGEua2V5UmFuZ2VEYXRhKTsKKyAgICBpZiAoIWN1cnNvcikgeworICAgICAgICBMT0dfRVJS
T1IoIkNhbm5vdCBvcGVuIGN1cnNvciB0byBwZXJmb3JtIGluZGV4IGdldHMgaW4gZGF0YWJhc2Ui
KTsKKyAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwg
QVNDSUlMaXRlcmFsKCJDYW5ub3Qgb3BlbiBjdXJzb3IgdG8gcGVyZm9ybSBpbmRleCBnZXRzIGlu
IGRhdGFiYXNlIikgfTsKKyAgICB9CisKKyAgICBpZiAoY3Vyc29yLT5kaWRFcnJvcigpKSB7Cisg
ICAgICAgIExPR19FUlJPUigiQ3Vyc29yIGZhaWxlZCB3aGlsZSBsb29raW5nIHVwIGluZGV4IHJl
Y29yZHMgaW4gZGF0YWJhc2UiKTsKKyAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRp
b246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJDdXJzb3IgZmFpbGVkIHdoaWxlIGxvb2tp
bmcgdXAgaW5kZXggcmVjb3JkcyBpbiBkYXRhYmFzZSIpIH07CisgICAgfQorCisgICAgcmVzdWx0
ID0geyBnZXRBbGxSZWNvcmRzRGF0YS5nZXRBbGxUeXBlIH07CisgICAgdWludDMyX3QgY3VycmVu
dENvdW50ID0gMDsKKyAgICB1aW50MzJfdCB0YXJnZXRDb3VudCA9IGdldEFsbFJlY29yZHNEYXRh
LmNvdW50ID8gZ2V0QWxsUmVjb3Jkc0RhdGEuY291bnQudmFsdWUoKSA6IDA7CisgICAgaWYgKCF0
YXJnZXRDb3VudCkKKyAgICAgICAgdGFyZ2V0Q291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWF4KCk7CisgICAgd2hpbGUgKCFjdXJzb3ItPmRpZENvbXBsZXRlKCkgJiYgIWN1
cnNvci0+ZGlkRXJyb3IoKSAmJiBjdXJyZW50Q291bnQgPCB0YXJnZXRDb3VudCkgeworICAgICAg
ICBpZiAoZ2V0QWxsUmVjb3Jkc0RhdGEuZ2V0QWxsVHlwZSA9PSBJbmRleGVkREI6OkdldEFsbFR5
cGU6OktleXMpIHsKKyAgICAgICAgICAgIElEQktleURhdGEga2V5Q29weSA9IGN1cnNvci0+Y3Vy
cmVudFByaW1hcnlLZXkoKTsKKyAgICAgICAgICAgIHJlc3VsdC5hZGRLZXkoV1RGTW92ZShrZXlD
b3B5KSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVzdWx0LmFkZFZhbHVlKGN1cnNv
ci0+Y3VycmVudFZhbHVlKCkgPyAqY3Vyc29yLT5jdXJyZW50VmFsdWUoKSA6IElEQlZhbHVlKCkp
OworCisgICAgICAgICsrY3VycmVudENvdW50OworICAgICAgICBjdXJzb3ItPmFkdmFuY2UoMSk7
CisgICAgfQorCisgICAgaWYgKGN1cnNvci0+ZGlkRXJyb3IoKSkgeworICAgICAgICBMT0dfRVJS
T1IoIkN1cnNvciBmYWlsZWQgd2hpbGUgbG9va2luZyB1cCBpbmRleCByZWNvcmRzIGluIGRhdGFi
YXNlIik7CisgICAgICAgIHJldHVybiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiQ3Vyc29yIGZhaWxlZCB3aGlsZSBsb29raW5nIHVwIGluZGV4IHJl
Y29yZHMgaW4gZGF0YWJhc2UiKSB9OworICAgIH0KKworICAgIHJldHVybiB7IH07Cit9CisKIElE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhSZWNvcmQoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSUQsIHVpbnQ2NF90IGluZGV4SUQsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlIHR5cGUs
IGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UsIElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0KQog
ewogICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldEluZGV4UmVj
b3JkIC0gJXMiLCByYW5nZS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmgKaW5kZXggMmVmODU4NjRlOTQ5ODZmZjkyMzgyM2YyYTBhZmE0
ZTRkZTgwNTQ4Zi4uYWMyMjY1NWI2NzRkZWNiYmIwYjZjZDM0M2I0ZDU5ZmRhOGQ1MmE1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaApAQCAtMTE0LDYgKzExNCw5IEBAIHByaXZhdGU6
CiAKICAgICBJREJFcnJvciBkZWxldGVVbnVzZWRCbG9iRmlsZVJlY29yZHMoU1FMaXRlSURCVHJh
bnNhY3Rpb24mKTsKIAorICAgIElEQkVycm9yIGdldEFsbE9iamVjdFN0b3JlUmVjb3Jkcyhjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
R2V0QWxsUmVjb3Jkc0RhdGEmLCBJREJHZXRBbGxSZXN1bHQmIG91dFZhbHVlKTsKKyAgICBJREJF
cnJvciBnZXRBbGxJbmRleFJlY29yZHMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiwgSURCR2V0QWxs
UmVzdWx0JiBvdXRWYWx1ZSk7CisKICAgICBKU0M6OlZNJiB2bSgpOwogICAgIEpTQzo6SlNHbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCgpOwogICAgIHZvaWQgaW5pdGlhbGl6ZVZNKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVz
dWx0RGF0YS5jcHAKaW5kZXggYTgxMTlkYzRjZDljMzk5MjYxYzdjNjMzODIwNjYyZDEwNmI1YmI5
NS4uNjM4M2YxMDU4ODhjM2JiODJhZmUwMDNjYTUxZjg0MWUxMjhhMzMxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHRE
YXRhLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIElEQlJlc3VsdERhdGE6Omlzb2xhdGVkQ29w
eShjb25zdCBJREJSZXN1bHREYXRhJiBzb3VyY2UsIElEQlJlc3VsdERhdGEmIGRlcwogCiBJREJS
ZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmVycm9yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKLSAgICBJREJS
ZXN1bHREYXRhIHJlc3VsdChyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgSURCUmVzdWx0RGF0YSBy
ZXN1bHQgeyByZXF1ZXN0SWRlbnRpZmllciB9OwogICAgIHJlc3VsdC5tX3R5cGUgPSBJREJSZXN1
bHRUeXBlOjpFcnJvcjsKICAgICByZXN1bHQubV9lcnJvciA9IGVycm9yOwogICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC0xMDYsNyArMTA2LDcgQEAgSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpl
cnJvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWUKIAogSURC
UmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VTdWNjZXNzKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIElEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewotICAgIElEQlJlc3VsdERhdGEgcmVz
dWx0KHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IHJlcXVl
c3RJZGVudGlmaWVyIH07CiAgICAgcmVzdWx0Lm1fdHlwZSA9IElEQlJlc3VsdFR5cGU6Ok9wZW5E
YXRhYmFzZVN1Y2Nlc3M7CiAgICAgcmVzdWx0Lm1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpOwogICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihjb25uZWN0aW9uLmRhdGFiYXNlKCku
aW5mbygpKTsKQEAgLTExNiw3ICsxMTYsNyBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6
Om9wZW5EYXRhYmFzZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZQogCiBJ
REJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgSURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKLSAgICBJREJSZXN1
bHREYXRhIHJlc3VsdChyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgSURCUmVzdWx0RGF0YSByZXN1
bHQgeyByZXF1ZXN0SWRlbnRpZmllciB9OwogICAgIHJlc3VsdC5tX3R5cGUgPSBJREJSZXN1bHRU
eXBlOjpPcGVuRGF0YWJhc2VVcGdyYWRlTmVlZGVkOwogICAgIHJlc3VsdC5tX2RhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIgPSB0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5pZGVu
dGlmaWVyKCk7CiAgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJ
REJEYXRhYmFzZUluZm8+KHRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmRhdGFiYXNl
KCkuaW5mbygpKTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERh
dGE6Om9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQog
CiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmRlbGV0ZURhdGFiYXNlU3VjY2Vzcyhjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJEYXRh
YmFzZUluZm8mIGluZm8pCiB7Ci0gICAgSURCUmVzdWx0RGF0YSByZXN1bHQoSURCUmVzdWx0VHlw
ZTo6RGVsZXRlRGF0YWJhc2VTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgSURCUmVz
dWx0RGF0YSByZXN1bHQge0lEQlJlc3VsdFR5cGU6OkRlbGV0ZURhdGFiYXNlU3VjY2VzcywgcmVx
dWVzdElkZW50aWZpZXIgfTsKICAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAg
LTE2OCwyOCArMTY4LDI4IEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6cmVuYW1lSW5k
ZXhTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxCiAKIElEQlJlc3VsdERh
dGEgSURCUmVzdWx0RGF0YTo6cHV0T3JBZGRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmIHJlc3VsdEtleSkKIHsK
LSAgICBJREJSZXN1bHREYXRhIHJlc3VsdChJREJSZXN1bHRUeXBlOjpQdXRPckFkZFN1Y2Nlc3Ms
IHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3Vs
dFR5cGU6OlB1dE9yQWRkU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsKICAgICByZXN1bHQu
bV9yZXN1bHRLZXkgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURhdGE+KHJlc3VsdEtleSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpnZXRS
ZWNvcmRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0KQogewotICAgIElEQlJlc3VsdERhdGEg
cmVzdWx0KElEQlJlc3VsdFR5cGU6OkdldFJlY29yZFN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVy
KTsKKyAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OkdldFJlY29yZFN1
Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07CiAgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpnZXRBbGxSZWNvcmRzU3VjY2Vz
cyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJ
REJHZXRBbGxSZXN1bHQmIGdldEFsbFJlc3VsdCkKIHsKLSAgICBJREJSZXN1bHREYXRhIHJlc3Vs
dChJREJSZXN1bHRUeXBlOjpHZXRBbGxSZWNvcmRzU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIp
OworICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlwZTo6R2V0QWxsUmVjb3Jk
c1N1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07CiAgICAgcmVzdWx0Lm1fZ2V0QWxsUmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KGdldEFsbFJlc3VsdCk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpnZXRDb3Vu
dFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwg
dWludDY0X3QgY291bnQpCiB7Ci0gICAgSURCUmVzdWx0RGF0YSByZXN1bHQoSURCUmVzdWx0VHlw
ZTo6R2V0UmVjb3JkU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIpOworICAgIElEQlJlc3VsdERh
dGEgcmVzdWx0IHsgSURCUmVzdWx0VHlwZTo6R2V0UmVjb3JkU3VjY2VzcywgcmVxdWVzdElkZW50
aWZpZXIgfTsKICAgICByZXN1bHQubV9yZXN1bHRJbnRlZ2VyID0gY291bnQ7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KQEAgLTIwMSwxNCArMjAxLDE0IEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0
RGF0YTo6ZGVsZXRlUmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJl
CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6b3BlbkN1cnNvclN1Y2Nlc3MoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0UmVz
dWx0JiBnZXRSZXN1bHQpCiB7Ci0gICAgSURCUmVzdWx0RGF0YSByZXN1bHQoSURCUmVzdWx0VHlw
ZTo6T3BlbkN1cnNvclN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBJREJSZXN1bHRE
YXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6Ok9wZW5DdXJzb3JTdWNjZXNzLCByZXF1ZXN0SWRl
bnRpZmllciB9OwogICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
R2V0UmVzdWx0PihnZXRSZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3Vs
dERhdGEgSURCUmVzdWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRS
ZXN1bHQpCiB7Ci0gICAgSURCUmVzdWx0RGF0YSByZXN1bHQoSURCUmVzdWx0VHlwZTo6SXRlcmF0
ZUN1cnNvclN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBJREJSZXN1bHREYXRhIHJl
c3VsdCB7IElEQlJlc3VsdFR5cGU6Okl0ZXJhdGVDdXJzb3JTdWNjZXNzLCByZXF1ZXN0SWRlbnRp
ZmllciB9OwogICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0
UmVzdWx0PihnZXRSZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzhhMWUw
ZTk3Nzk3ODI4ZTc5ZjE0NmIzYjM0OTlhOTEzYjAyNGFmZC4uNzI0M2ZmMjk3MDc1MGM3ZjhlOTky
OGJhNzQ2NTVhMDNlYTA5NDViMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE2LTExLTAxICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkREIgMi4w
OiBTdXBwb3J0IElEQkluZGV4IGdldEFsbC9nZXRBbGxLZXlzLgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjg4MDY5MzM+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY0Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiByZXNvdXJjZXMvanMtdGVzdC5qczoKKyAgICAgICAgKGFyZU9iamVjdHNFcXVhbCk6CisK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtZ2V0YWxsLTEtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRi
aW5kZXgtZ2V0YWxsLTEtcHJpdmF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1nZXRhbGwtMS1wcml2YXRlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1nZXRhbGwt
MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5k
ZXgtZ2V0YWxsa2V5cy0xLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbGtleXMtMS1wcml2YXRlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LWdl
dGFsbGtleXMtMS1wcml2YXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9pZGJpbmRleC1nZXRhbGxrZXlzLTEuaHRtbDogQWRkZWQuCisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pZGJpbmRleC1nZXRhbGwtMS5qczog
QWRkZWQuCisKIDIwMTYtMTAtMzEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIEluZGV4ZWREQiAyLjA6IFN1cHBvcnQgSURCT2JqZWN0U3RvcmUgZ2V0QWxsL2dl
dEFsbEtleXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAzZGQzODU5ZjUyYTBj
NTNjMzEyZDdlNTRjZjhkN2FhNmI0NDYxYThjLi4zZmVmNDMxZjk4Mzk4NmViOGYwNjQ3OGJjOThk
Y2NhNGUyZTE4ODdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxNi0xMS0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW5kZXhlZERCIDIuMDogU3VwcG9ydCBJREJJbmRleCBnZXRBbGwvZ2V0QWxsS2V5cy4K
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4ODA2OTMzPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJp
bmRleF9nZXRBbGwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9J
bmRleGVkREIvaWRiaW5kZXhfZ2V0QWxsS2V5cy1leHBlY3RlZC50eHQ6CisKIDIwMTYtMTAtMzEg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEluZGV4ZWREQiAy
LjA6IFN1cHBvcnQgSURCT2JqZWN0U3RvcmUgZ2V0QWxsL2dldEFsbEtleXMuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9p
ZGJpbmRleF9nZXRBbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXhfZ2V0QWxsLWV4cGVjdGVkLnR4dApp
bmRleCBkNjU1MWFhNjdiNGZkODdhYjA3MTgzNTkwOWZlMmRhYjhhYTAzYzQ1Li4zYWJlMTliYThh
N2QzZWYxOWJiNzNkMGYyYTA3NmFjNTU0YzA2MmU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJpbmRleF9nZXRBbGwt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvSW5kZXhlZERCL2lkYmluZGV4X2dldEFsbC1leHBlY3RlZC50eHQKQEAgLTEsMTUgKzEs
MTUgQEAKIAotRkFJTCBTaW5nbGUgaXRlbSBnZXQgaW5kZXguZ2V0QWxsIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ2luZGV4LmdldEFsbChyYW5nZSwgbWF4Q291bnQpJywgJ2luZGV4LmdldEFsbCcg
aXMgdW5kZWZpbmVkKQotRkFJTCBFbXB0eSBvYmplY3Qgc3RvcmUgaW5kZXguZ2V0QWxsIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ2luZGV4LmdldEFsbChyYW5nZSwgbWF4Q291bnQpJywgJ2luZGV4
LmdldEFsbCcgaXMgdW5kZWZpbmVkKQotRkFJTCBHZXQgYWxsIGtleXMgaW5kZXguZ2V0QWxsIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2luZGV4LmdldEFsbChyYW5nZSwgbWF4Q291bnQpJywgJ2lu
ZGV4LmdldEFsbCcgaXMgdW5kZWZpbmVkKQotRkFJTCBtYXhDb3VudD0xMCBpbmRleC5nZXRBbGwg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAnaW5kZXguZ2V0QWxsKHJhbmdlLCBtYXhDb3VudCknLCAn
aW5kZXguZ2V0QWxsJyBpcyB1bmRlZmluZWQpCi1GQUlMIEdldCBib3VuZCByYW5nZSBpbmRleC5n
ZXRBbGwgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnaW5kZXguZ2V0QWxsKHJhbmdlLCBtYXhDb3Vu
dCknLCAnaW5kZXguZ2V0QWxsJyBpcyB1bmRlZmluZWQpCi1GQUlMIEdldCBib3VuZCByYW5nZSB3
aXRoIG1heENvdW50IGluZGV4LmdldEFsbCBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdpbmRleC5n
ZXRBbGwocmFuZ2UsIG1heENvdW50KScsICdpbmRleC5nZXRBbGwnIGlzIHVuZGVmaW5lZCkKLUZB
SUwgR2V0IHVwcGVyIGV4Y2x1ZGVkIGluZGV4LmdldEFsbCBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICdpbmRleC5nZXRBbGwocmFuZ2UsIG1heENvdW50KScsICdpbmRleC5nZXRBbGwnIGlzIHVuZGVm
aW5lZCkKLUZBSUwgR2V0IGxvd2VyIGV4Y2x1ZGVkIGluZGV4LmdldEFsbCBpcyBub3QgYSBmdW5j
dGlvbi4gKEluICdpbmRleC5nZXRBbGwocmFuZ2UsIG1heENvdW50KScsICdpbmRleC5nZXRBbGwn
IGlzIHVuZGVmaW5lZCkKLUZBSUwgR2V0IGJvdW5kIHJhbmdlIChnZW5lcmF0ZWQpIHdpdGggbWF4
Q291bnQgaW5kZXguZ2V0QWxsIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2luZGV4LmdldEFsbChy
YW5nZSwgbWF4Q291bnQpJywgJ2luZGV4LmdldEFsbCcgaXMgdW5kZWZpbmVkKQotRkFJTCBOb24g
ZXhpc3RlbnQga2V5IGluZGV4LmdldEFsbCBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdpbmRleC5n
ZXRBbGwocmFuZ2UsIG1heENvdW50KScsICdpbmRleC5nZXRBbGwnIGlzIHVuZGVmaW5lZCkKLUZB
SUwgbWF4Q291bnQ9MCBpbmRleC5nZXRBbGwgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnaW5kZXgu
Z2V0QWxsKHJhbmdlLCBtYXhDb3VudCknLCAnaW5kZXguZ2V0QWxsJyBpcyB1bmRlZmluZWQpCi1G
QUlMIFJldHJpZXZlIG11bHRpRW50cnkga2V5IGluZGV4LmdldEFsbCBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICdpbmRleC5nZXRBbGwocmFuZ2UsIG1heENvdW50KScsICdpbmRleC5nZXRBbGwnIGlz
IHVuZGVmaW5lZCkKLUZBSUwgUmV0cmlldmUgb25lIGtleSBtdWx0aXBsZSB2YWx1ZXMgaW5kZXgu
Z2V0QWxsIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2luZGV4LmdldEFsbChyYW5nZSwgbWF4Q291
bnQpJywgJ2luZGV4LmdldEFsbCcgaXMgdW5kZWZpbmVkKQorUEFTUyBTaW5nbGUgaXRlbSBnZXQg
CitQQVNTIEVtcHR5IG9iamVjdCBzdG9yZSAKK1BBU1MgR2V0IGFsbCBrZXlzIAorUEFTUyBtYXhD
b3VudD0xMCAKK1BBU1MgR2V0IGJvdW5kIHJhbmdlIAorUEFTUyBHZXQgYm91bmQgcmFuZ2Ugd2l0
aCBtYXhDb3VudCAKK1BBU1MgR2V0IHVwcGVyIGV4Y2x1ZGVkIAorUEFTUyBHZXQgbG93ZXIgZXhj
bHVkZWQgCitQQVNTIEdldCBib3VuZCByYW5nZSAoZ2VuZXJhdGVkKSB3aXRoIG1heENvdW50IAor
UEFTUyBOb24gZXhpc3RlbnQga2V5IAorUEFTUyBtYXhDb3VudD0wIAorUEFTUyBSZXRyaWV2ZSBt
dWx0aUVudHJ5IGtleSAKK1BBU1MgUmV0cmlldmUgb25lIGtleSBtdWx0aXBsZSB2YWx1ZXMgCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
SW5kZXhlZERCL2lkYmluZGV4X2dldEFsbEtleXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXhfZ2V0QWxs
S2V5cy1leHBlY3RlZC50eHQKaW5kZXggNWE5MmFjMmFhNzEzZTI2NDc1ZDk5YmY4MzBhMDZmODlh
NjIxMDkzMy4uODVhOTI4ZjZjZGMyNDk0Zjg5Mzk4YmM4OTEzMDI4ZTFmODJmNWYxMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVk
REIvaWRiaW5kZXhfZ2V0QWxsS2V5cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXhfZ2V0QWxsS2V5
cy1leHBlY3RlZC50eHQKQEAgLTEsMTUgKzEsMTUgQEAKIAotRkFJTCBTaW5nbGUgaXRlbSBnZXQg
aW5kZXguZ2V0QWxsS2V5cyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdpbmRleC5nZXRBbGxLZXlz
KHJhbmdlLCBtYXhDb3VudCknLCAnaW5kZXguZ2V0QWxsS2V5cycgaXMgdW5kZWZpbmVkKQotRkFJ
TCBFbXB0eSBvYmplY3Qgc3RvcmUgaW5kZXguZ2V0QWxsS2V5cyBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICdpbmRleC5nZXRBbGxLZXlzKHJhbmdlLCBtYXhDb3VudCknLCAnaW5kZXguZ2V0QWxsS2V5
cycgaXMgdW5kZWZpbmVkKQotRkFJTCBHZXQgYWxsIGtleXMgaW5kZXguZ2V0QWxsS2V5cyBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICdpbmRleC5nZXRBbGxLZXlzKHJhbmdlLCBtYXhDb3VudCknLCAn
aW5kZXguZ2V0QWxsS2V5cycgaXMgdW5kZWZpbmVkKQotRkFJTCBHZXQgYWxsIGdlbmVyYXRlZCBr
ZXlzIGluZGV4LmdldEFsbEtleXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnaW5kZXguZ2V0QWxs
S2V5cyhyYW5nZSwgbWF4Q291bnQpJywgJ2luZGV4LmdldEFsbEtleXMnIGlzIHVuZGVmaW5lZCkK
LUZBSUwgbWF4Q291bnQ9MTAgaW5kZXguZ2V0QWxsS2V5cyBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICdpbmRleC5nZXRBbGxLZXlzKHJhbmdlLCBtYXhDb3VudCknLCAnaW5kZXguZ2V0QWxsS2V5cycg
aXMgdW5kZWZpbmVkKQotRkFJTCBHZXQgYm91bmQgcmFuZ2UgaW5kZXguZ2V0QWxsS2V5cyBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICdpbmRleC5nZXRBbGxLZXlzKHJhbmdlLCBtYXhDb3VudCknLCAn
aW5kZXguZ2V0QWxsS2V5cycgaXMgdW5kZWZpbmVkKQotRkFJTCBHZXQgYm91bmQgcmFuZ2Ugd2l0
aCBtYXhDb3VudCBpbmRleC5nZXRBbGxLZXlzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2luZGV4
LmdldEFsbEtleXMocmFuZ2UsIG1heENvdW50KScsICdpbmRleC5nZXRBbGxLZXlzJyBpcyB1bmRl
ZmluZWQpCi1GQUlMIEdldCB1cHBlciBleGNsdWRlZCBpbmRleC5nZXRBbGxLZXlzIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ2luZGV4LmdldEFsbEtleXMocmFuZ2UsIG1heENvdW50KScsICdpbmRl
eC5nZXRBbGxLZXlzJyBpcyB1bmRlZmluZWQpCi1GQUlMIEdldCBsb3dlciBleGNsdWRlZCBpbmRl
eC5nZXRBbGxLZXlzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2luZGV4LmdldEFsbEtleXMocmFu
Z2UsIG1heENvdW50KScsICdpbmRleC5nZXRBbGxLZXlzJyBpcyB1bmRlZmluZWQpCi1GQUlMIEdl
dCBib3VuZCByYW5nZSAoZ2VuZXJhdGVkKSB3aXRoIG1heENvdW50IGluZGV4LmdldEFsbEtleXMg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAnaW5kZXguZ2V0QWxsS2V5cyhyYW5nZSwgbWF4Q291bnQp
JywgJ2luZGV4LmdldEFsbEtleXMnIGlzIHVuZGVmaW5lZCkKLUZBSUwgTm9uIGV4aXN0ZW50IGtl
eSBpbmRleC5nZXRBbGxLZXlzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2luZGV4LmdldEFsbEtl
eXMocmFuZ2UsIG1heENvdW50KScsICdpbmRleC5nZXRBbGxLZXlzJyBpcyB1bmRlZmluZWQpCi1G
QUlMIG1heENvdW50PTAgaW5kZXguZ2V0QWxsS2V5cyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdp
bmRleC5nZXRBbGxLZXlzKHJhbmdlLCBtYXhDb3VudCknLCAnaW5kZXguZ2V0QWxsS2V5cycgaXMg
dW5kZWZpbmVkKQotRkFJTCBSZXRyaWV2ZSBtdWx0aUVudHJ5IGtleXMgaW5kZXguZ2V0QWxsS2V5
cyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdpbmRleC5nZXRBbGxLZXlzKHJhbmdlLCBtYXhDb3Vu
dCknLCAnaW5kZXguZ2V0QWxsS2V5cycgaXMgdW5kZWZpbmVkKQorUEFTUyBTaW5nbGUgaXRlbSBn
ZXQgCitQQVNTIEVtcHR5IG9iamVjdCBzdG9yZSAKK1BBU1MgR2V0IGFsbCBrZXlzIAorUEFTUyBH
ZXQgYWxsIGdlbmVyYXRlZCBrZXlzIAorUEFTUyBtYXhDb3VudD0xMCAKK1BBU1MgR2V0IGJvdW5k
IHJhbmdlIAorUEFTUyBHZXQgYm91bmQgcmFuZ2Ugd2l0aCBtYXhDb3VudCAKK1BBU1MgR2V0IHVw
cGVyIGV4Y2x1ZGVkIAorUEFTUyBHZXQgbG93ZXIgZXhjbHVkZWQgCitQQVNTIEdldCBib3VuZCBy
YW5nZSAoZ2VuZXJhdGVkKSB3aXRoIG1heENvdW50IAorUEFTUyBOb24gZXhpc3RlbnQga2V5IAor
UEFTUyBtYXhDb3VudD0wIAorUEFTUyBSZXRyaWV2ZSBtdWx0aUVudHJ5IGtleXMgCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9qcy10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvcmVz
b3VyY2VzL2pzLXRlc3QuanMKaW5kZXggNDUxMmE0Mjg3MmMwNmQ1ODBhZjE3Nzc5Mzk1NWFmNWQ1
ODhlZDFmNS4uYzhjNjQwMTkzM2JjMDU2NTg4ZjYzMjVhNjMwZWM4Y2M5NTFjM2FiZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2pzLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMv
cmVzb3VyY2VzL2pzLXRlc3QuanMKQEAgLTcxMSw2ICs3MTEsMzQgQEAgZnVuY3Rpb24gZmluaXNo
SlNUZXN0KCkKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKK2Z1bmN0aW9u
IGFyZU9iamVjdHNFcXVhbChhLCBiKSB7CisJZm9yICh2YXIgcHJvcGVydHkgaW4gYSkgeworCQlp
ZiAoIWIuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKQorCQkJcmV0dXJuIGZhbHNlOworCisJCXN3
aXRjaCAodHlwZW9mIChhW3Byb3BlcnR5XSkpIHsKKwkJY2FzZSAnZnVuY3Rpb24nOgorCQkJaWYg
KHR5cGVvZiBiW3Byb3BlcnR5XSA9PSAndW5kZWZpbmVkJyB8fCBhW3Byb3BlcnR5XS50b1N0cmlu
ZygpICE9IGJbcHJvcGVydHldLnRvU3RyaW5nKCkpCisJCQkJcmV0dXJuIGZhbHNlOworCQkJYnJl
YWs7CisJCWNhc2UgJ29iamVjdCc6CisJCQlpZiAoIWFyZU9iamVjdHNFcXVhbChhLCBiKSkKKwkJ
CQlyZXR1cm4gZmFsc2U7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWlmIChhW3Byb3BlcnR5
XSAhPSBiW3Byb3BlcnR5XSkKKwkJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwl9CisgCisJZm9yICh2
YXIgcHJvcGVydHkgaW4gYikgeworCQlpZiAoIWEuaGFzT3duUHJvcGVydHkocHJvcGVydHkpKQor
CQkJcmV0dXJuIGZhbHNlOworCX0KKwkKKwlyZXR1cm4gdHJ1ZTsKK307CisKIGZ1bmN0aW9uIHN0
YXJ0V29ya2VyKHRlc3RTY3JpcHRVUkwpCiB7CiAgICAgc2VsZi5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJp
bmRleC1nZXRhbGwtMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRiaW5kZXgtZ2V0YWxsLTEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkODkx
MDMwZjkxZjE5ODdlZjc5NDQyM2M4YTUwN2FiOGJkM2Y5OWUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtZ2V0YWxsLTEtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1Rlc3QgSURCSW5kZXguZ2V0QWxsKCkKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKK1BBU1M6IEdvb2QgaW5kZXggY291bnQKK1BBU1M6IEdvdCBhbiBh
cnJheSBvYmplY3QKK1BBU1M6IENvcnJlY3QgbGVuZ3RoCitQQVNTOiBDb3JyZWN0IHZhbHVlCitQ
QVNTOiBDb3JyZWN0IHZhbHVlCitQQVNTOiBHb3QgYW4gYXJyYXkgb2JqZWN0CitQQVNTOiBDb3Jy
ZWN0IGxlbmd0aAorUEFTUzogQ29ycmVjdCB2YWx1ZQorUEFTUzogQ29ycmVjdCB2YWx1ZQorUEFT
UzogR290IGFuIGFycmF5IG9iamVjdAorUEFTUzogQ29ycmVjdCBsZW5ndGgKK1BBU1M6IENvcnJl
Y3QgdmFsdWUKK1BBU1M6IENvcnJlY3QgdmFsdWUKK1BBU1M6IEdvdCBhbiBhcnJheSBvYmplY3QK
K1BBU1M6IENvcnJlY3QgbGVuZ3RoCitQQVNTOiBDb3JyZWN0IHZhbHVlCitQQVNTOiBDb3JyZWN0
IHZhbHVlCitQQVNTOiBHb3QgYW4gYXJyYXkgb2JqZWN0CitQQVNTOiBDb3JyZWN0IGxlbmd0aAor
UEFTUzogQ29ycmVjdCB2YWx1ZQorUEFTUzogQ29ycmVjdCB2YWx1ZQorUEFTUzogQ29ycmVjdCB2
YWx1ZQorUEFTUzogQ29ycmVjdCB2YWx1ZQorUEFTUzogQ29ycmVjdCB2YWx1ZQorUEFTUzogQ29y
cmVjdCB2YWx1ZQorUEFTUzogR290IGFuIGFycmF5IG9iamVjdAorUEFTUzogQ29ycmVjdCBsZW5n
dGgKK1BBU1M6IENvcnJlY3QgdmFsdWUKK1BBU1M6IENvcnJlY3QgdmFsdWUKK1BBU1M6IENvcnJl
Y3QgdmFsdWUKK1BBU1M6IENvcnJlY3QgdmFsdWUKK1BBU1M6IEdvdCBhbiBhcnJheSBvYmplY3QK
K1BBU1M6IENvcnJlY3QgbGVuZ3RoCitQQVNTOiBDb3JyZWN0IHZhbHVlCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1nZXRhbGwtMS1w
cml2YXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pZGJpbmRleC1nZXRhbGwtMS1wcml2YXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDg5
MTAzMGY5MWYxOTg3ZWY3OTQ0MjNjOGE1MDdhYjhiZDNmOTllCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbC0xLXBy
aXZhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1Rlc3QgSURCSW5kZXguZ2V0QWxs
KCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1BBU1M6IEdvb2QgaW5kZXggY291bnQKK1BBU1M6
IEdvdCBhbiBhcnJheSBvYmplY3QKK1BBU1M6IENvcnJlY3QgbGVuZ3RoCitQQVNTOiBDb3JyZWN0
IHZhbHVlCitQQVNTOiBDb3JyZWN0IHZhbHVlCitQQVNTOiBHb3QgYW4gYXJyYXkgb2JqZWN0CitQ
QVNTOiBDb3JyZWN0IGxlbmd0aAorUEFTUzogQ29ycmVjdCB2YWx1ZQorUEFTUzogQ29ycmVjdCB2
YWx1ZQorUEFTUzogR290IGFuIGFycmF5IG9iamVjdAorUEFTUzogQ29ycmVjdCBsZW5ndGgKK1BB
U1M6IENvcnJlY3QgdmFsdWUKK1BBU1M6IENvcnJlY3QgdmFsdWUKK1BBU1M6IEdvdCBhbiBhcnJh
eSBvYmplY3QKK1BBU1M6IENvcnJlY3QgbGVuZ3RoCitQQVNTOiBDb3JyZWN0IHZhbHVlCitQQVNT
OiBDb3JyZWN0IHZhbHVlCitQQVNTOiBHb3QgYW4gYXJyYXkgb2JqZWN0CitQQVNTOiBDb3JyZWN0
IGxlbmd0aAorUEFTUzogQ29ycmVjdCB2YWx1ZQorUEFTUzogQ29ycmVjdCB2YWx1ZQorUEFTUzog
Q29ycmVjdCB2YWx1ZQorUEFTUzogQ29ycmVjdCB2YWx1ZQorUEFTUzogQ29ycmVjdCB2YWx1ZQor
UEFTUzogQ29ycmVjdCB2YWx1ZQorUEFTUzogR290IGFuIGFycmF5IG9iamVjdAorUEFTUzogQ29y
cmVjdCBsZW5ndGgKK1BBU1M6IENvcnJlY3QgdmFsdWUKK1BBU1M6IENvcnJlY3QgdmFsdWUKK1BB
U1M6IENvcnJlY3QgdmFsdWUKK1BBU1M6IENvcnJlY3QgdmFsdWUKK1BBU1M6IEdvdCBhbiBhcnJh
eSBvYmplY3QKK1BBU1M6IENvcnJlY3QgbGVuZ3RoCitQQVNTOiBDb3JyZWN0IHZhbHVlCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1n
ZXRhbGwtMS1wcml2YXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vaWRiaW5kZXgtZ2V0YWxsLTEtcHJpdmF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyMGViZTlhNWVk
ZGZkMjBhNTE2Y2YyZTQ5MjUxMDYxOThjNzRiOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtZ2V0YWxsLTEtcHJpdmF0ZS5o
dG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZW5hYmxlUHJp
dmF0ZUJyb3dzaW5nID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
c2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2lkYmluZGV4LWdldGFsbC0xLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRl
eC1nZXRhbGwtMS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lk
YmluZGV4LWdldGFsbC0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTUwOWIwZTRlMjM5ZjUyZTkyYTlmMTMy
N2JiNzdlY2M0YWQ4ODg2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1nZXRhbGwtMS5odG1sCkBAIC0wLDAgKzEsMTAgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaWRiaW5kZXgt
Z2V0YWxsLTEuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbGtleXMtMS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5k
ZXgtZ2V0YWxsa2V5cy0xLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44M2NhNDQ1Nzc1MzAzNDQx
OTMxMjk3ZGIyMjAxM2JhMjk2YTFhZWJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbGtleXMtMS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0MiBAQAorVGVzdCBJREJJbmRleC5nZXRBbGwoKQorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorUEFTUzogR29vZCBpbmRleCBjb3VudAorUEFTUzogR290IGFuIGFycmF5IG9i
amVjdAorUEFTUzogQ29ycmVjdCBsZW5ndGgKK1BBU1M6IENvcnJlY3Qga2V5CitQQVNTOiBDb3Jy
ZWN0IGtleQorUEFTUzogR290IGFuIGFycmF5IG9iamVjdAorUEFTUzogQ29ycmVjdCBsZW5ndGgK
K1BBU1M6IENvcnJlY3Qga2V5CitQQVNTOiBDb3JyZWN0IGtleQorUEFTUzogR290IGFuIGFycmF5
IG9iamVjdAorUEFTUzogQ29ycmVjdCBsZW5ndGgKK1BBU1M6IENvcnJlY3Qga2V5CitQQVNTOiBD
b3JyZWN0IGtleQorUEFTUzogR290IGFuIGFycmF5IG9iamVjdAorUEFTUzogQ29ycmVjdCBsZW5n
dGgKK1BBU1M6IENvcnJlY3Qga2V5CitQQVNTOiBDb3JyZWN0IGtleQorUEFTUzogR290IGFuIGFy
cmF5IG9iamVjdAorUEFTUzogQ29ycmVjdCBsZW5ndGgKK1BBU1M6IENvcnJlY3Qga2V5CitQQVNT
OiBDb3JyZWN0IGtleQorUEFTUzogQ29ycmVjdCBrZXkKK1BBU1M6IENvcnJlY3Qga2V5CitQQVNT
OiBDb3JyZWN0IGtleQorUEFTUzogQ29ycmVjdCBrZXkKK1BBU1M6IEdvdCBhbiBhcnJheSBvYmpl
Y3QKK1BBU1M6IENvcnJlY3QgbGVuZ3RoCitQQVNTOiBDb3JyZWN0IGtleQorUEFTUzogQ29ycmVj
dCBrZXkKK1BBU1M6IENvcnJlY3Qga2V5CitQQVNTOiBDb3JyZWN0IGtleQorUEFTUzogR290IGFu
IGFycmF5IG9iamVjdAorUEFTUzogQ29ycmVjdCBsZW5ndGgKK1BBU1M6IENvcnJlY3Qga2V5CisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRl
eC1nZXRhbGxrZXlzLTEtcHJpdmF0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtZ2V0YWxsa2V5cy0xLXByaXZhdGUtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjgzY2E0NDU3NzUzMDM0NDE5MzEyOTdkYjIyMDEzYmEyOTZhMWFlYmMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aWRiaW5kZXgtZ2V0YWxsa2V5cy0xLXByaXZhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIg
QEAKK1Rlc3QgSURCSW5kZXguZ2V0QWxsKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1BBU1M6
IEdvb2QgaW5kZXggY291bnQKK1BBU1M6IEdvdCBhbiBhcnJheSBvYmplY3QKK1BBU1M6IENvcnJl
Y3QgbGVuZ3RoCitQQVNTOiBDb3JyZWN0IGtleQorUEFTUzogQ29ycmVjdCBrZXkKK1BBU1M6IEdv
dCBhbiBhcnJheSBvYmplY3QKK1BBU1M6IENvcnJlY3QgbGVuZ3RoCitQQVNTOiBDb3JyZWN0IGtl
eQorUEFTUzogQ29ycmVjdCBrZXkKK1BBU1M6IEdvdCBhbiBhcnJheSBvYmplY3QKK1BBU1M6IENv
cnJlY3QgbGVuZ3RoCitQQVNTOiBDb3JyZWN0IGtleQorUEFTUzogQ29ycmVjdCBrZXkKK1BBU1M6
IEdvdCBhbiBhcnJheSBvYmplY3QKK1BBU1M6IENvcnJlY3QgbGVuZ3RoCitQQVNTOiBDb3JyZWN0
IGtleQorUEFTUzogQ29ycmVjdCBrZXkKK1BBU1M6IEdvdCBhbiBhcnJheSBvYmplY3QKK1BBU1M6
IENvcnJlY3QgbGVuZ3RoCitQQVNTOiBDb3JyZWN0IGtleQorUEFTUzogQ29ycmVjdCBrZXkKK1BB
U1M6IENvcnJlY3Qga2V5CitQQVNTOiBDb3JyZWN0IGtleQorUEFTUzogQ29ycmVjdCBrZXkKK1BB
U1M6IENvcnJlY3Qga2V5CitQQVNTOiBHb3QgYW4gYXJyYXkgb2JqZWN0CitQQVNTOiBDb3JyZWN0
IGxlbmd0aAorUEFTUzogQ29ycmVjdCBrZXkKK1BBU1M6IENvcnJlY3Qga2V5CitQQVNTOiBDb3Jy
ZWN0IGtleQorUEFTUzogQ29ycmVjdCBrZXkKK1BBU1M6IEdvdCBhbiBhcnJheSBvYmplY3QKK1BB
U1M6IENvcnJlY3QgbGVuZ3RoCitQQVNTOiBDb3JyZWN0IGtleQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtZ2V0YWxsa2V5cy0xLXBy
aXZhdGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRl
eC1nZXRhbGxrZXlzLTEtcHJpdmF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3ZmJmMjk0MThhZDkzMmE2
M2E2MzY2OTAwMmMwMDM0ZjhhZGZjZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtZ2V0YWxsa2V5cy0xLXByaXZhdGUuaHRt
bApAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2VuYWJsZVByaXZh
dGVCcm93c2luZyA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291
cmNlcy9pZGJpbmRleC1nZXRhbGxrZXlzLTEuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmlu
ZGV4LWdldGFsbGtleXMtMS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2lkYmluZGV4LWdldGFsbGtleXMtMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4MzU4NzQ2ODU0YWRm
ODI1YTVmOWVmZDNlMmViZjlmMDkzNDU3NjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtZ2V0YWxsa2V5cy0xLmh0bWwKQEAg
LTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291
cmNlcy9pZGJpbmRleC1nZXRhbGxrZXlzLTEuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291
cmNlcy9pZGJpbmRleC1nZXRhbGwtMS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9yZXNvdXJjZXMvaWRiaW5kZXgtZ2V0YWxsLTEuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTRkM2Nj
MzgyOTE3M2ZjMTUzZjY1YWI5Yjk4MjAyNmZlYzZhMWUzYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMvaWRiaW5kZXgtZ2V0
YWxsLTEuanMKQEAgLTAsMCArMSwxOTYgQEAKKy8vIEFkYXB0ZWQgZnJvbSBhIE1vemlsbGEgdGVz
dCBwbGFjZWQgaW4gdGhlIHB1YmxpYyBkb21haW4uCisvLyBUYWtlbiBmcm9tIGdpdCByZXBvc2l0
b3J5IGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2dlY2tvLWRldi5naXQgYW5kIHRoZSBwYXRo
IC4vZG9tL2luZGV4ZWREQi90ZXN0L3VuaXQvdGVzdF9pbmRleF9nZXRBbGwuanMKKworZGVzY3Jp
cHRpb24oIlRlc3QgSURCSW5kZXguZ2V0QWxsKCkiKTsKKworZnVuY3Rpb24gY29udGludWVXaXRo
RXZlbnQoZXZlbnQpCit7CisgICAgdGVzdEdlbmVyYXRvci5uZXh0KGV2ZW50KTsKK30KKworZnVu
Y3Rpb24gbG9nKG1zZykKK3sKKwlkb2N1bWVudC5ib2R5LmlubmVySFRNTCArPSBtc2cgKyAiPGJy
PiI7Cit9CisKK2Z1bmN0aW9uIGlzKGEsIGIsIHBhc3MpCit7CisgICAgaWYgKGFyZU9iamVjdHNF
cXVhbChhLCBiKSkKKyAgICAgICAgbG9nKCJQQVNTOiAiICsgcGFzcyk7CisgICAgZWxzZQorICAg
ICAgICBsb2coIkZBSUw6ICIgKyBhICsgIiBzaG91bGQgYmUgIiArIGIgKyAiIGJ1dCBpcyBub3Qu
Iik7Cit9CisKK2Z1bmN0aW9uKiB0ZXN0U3RlcHMoKQoreworICAgIGNvbnN0IG5hbWUgPSB3aW5k
b3cubG9jYXRpb24ucGF0aG5hbWU7CisgICAgY29uc3Qgb2JqZWN0U3RvcmVOYW1lID0gIlBlb3Bs
ZSI7CisKKyAgICBsZXQgb2JqZWN0U3RvcmVEYXRhID0gWworICAgICAgICB7IGtleTogIjIzNy0y
My03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAsIHdlaWdodDogMTIwIH0g
fSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBo
ZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzQi
LCB2YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9LAorICAg
ICAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDog
NTgsIHdlaWdodDogMTMwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZhbHVl
OiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCisgICAgICAgIHsg
a2V5OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSB9IH0K
KyAgICBdOworCisgICAgbGV0IGluZGV4RGF0YSA9IFsKKyAgICAgICAgeyBuYW1lOiAibmFtZSIs
IGtleVBhdGg6ICJuYW1lIiwgb3B0aW9uczogeyB1bmlxdWU6IHRydWUgfSB9LAorICAgICAgICB7
IG5hbWU6ICJoZWlnaHQiLCBrZXlQYXRoOiAiaGVpZ2h0Iiwgb3B0aW9uczogeyB1bmlxdWU6IGZh
bHNlIH0gfSwKKyAgICAgICAgeyBuYW1lOiAid2VpZ2h0Iiwga2V5UGF0aDogIndlaWdodCIsIG9w
dGlvbnM6IHsgdW5pcXVlOiBmYWxzZSB9IH0KKyAgICBdOworCisgICAgbGV0IG9iamVjdFN0b3Jl
RGF0YU5hbWVTb3J0ID0gWworICAgICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsg
bmFtZTogIkFubiIsIGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKKyAgICAgICAgeyBrZXk6
ICIyMzctMjMtNzczMiIsIHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6
IDEyMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAi
Sm9lIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxNTAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0y
My03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIsIGhlaWdodDogNjUgfSB9LAorICAgICAgICB7
IGtleTogIjIzNy0yMy03NzM0IiwgdmFsdWU6IHsgbmFtZTogIlJvbiIsIGhlaWdodDogNzMsIHdl
aWdodDogMTgwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNSIsIHZhbHVlOiB7IG5h
bWU6ICJTdWUiLCBoZWlnaHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9IH0KKyAgICBdOworCisgICAgbGV0
IG9iamVjdFN0b3JlRGF0YVdlaWdodFNvcnQgPSBbCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3
MzMiLCB2YWx1ZTogeyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAxMTAgfSB9LAor
ICAgICAgICB7IGtleTogIjIzNy0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdo
dDogNjAsIHdlaWdodDogMTIwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNSIsIHZh
bHVlOiB7IG5hbWU6ICJTdWUiLCBoZWlnaHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9IH0sCisgICAgICAg
IHsga2V5OiAiMjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVpZ2h0OiA2NSwg
d2VpZ2h0OiAxNTAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM0IiwgdmFsdWU6IHsg
bmFtZTogIlJvbiIsIGhlaWdodDogNzMsIHdlaWdodDogMTgwIH0gfQorICAgIF07CisKKyAgICBs
ZXQgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydCA9IFsKKyAgICAgICAgeyBrZXk6ICIyMzctMjMt
NzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0s
CisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVp
Z2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzMyIiwg
dmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAsIHdlaWdodDogMTIwIH0gfSwKKyAgICAg
ICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1
LCB3ZWlnaHQ6IDE1MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTog
eyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3
MzQiLCB2YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9Cisg
ICAgXTsKKwkKKyAgICBsZXQgcmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShuYW1l
KTsKKwlyZXF1ZXN0Lm9uZXJyb3IgPSBmaW5pc2hKU1Rlc3Q7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBjb250aW51ZVdpdGhFdmVudDsKKyAgICBldmVudCA9IHlpZWxkOworCisgICAgcmVxdWVz
dCA9IGluZGV4ZWREQi5vcGVuKG5hbWUsIDEpOworICAgIHJlcXVlc3Qub25lcnJvciA9IGZpbmlz
aEpTVGVzdDsKKyAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGNvbnRpbnVlV2l0aEV2ZW50
OworICAgIGV2ZW50ID0geWllbGQ7CisKKyAgICBsZXQgZGIgPSBldmVudC50YXJnZXQucmVzdWx0
OworCWV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gY29udGludWVXaXRoRXZl
bnQ7CisgICAgbGV0IG9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3Rv
cmVOYW1lKTsKKworICAgIC8vIEZpcnN0LCBhZGQgYWxsIG91ciBkYXRhIHRvIHRoZSBvYmplY3Qg
c3RvcmUuCisgICAgbGV0IGFkZGVkRGF0YSA9IDA7CisgICAgZm9yIChsZXQgaSBpbiBvYmplY3RT
dG9yZURhdGEpIHsKKyAgICAgICAgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmFkZChvYmplY3RTdG9y
ZURhdGFbaV0udmFsdWUsIG9iamVjdFN0b3JlRGF0YVtpXS5rZXkpOworICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSBmaW5pc2hKU1Rlc3Q7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGlmICgrK2FkZGVkRGF0YSA9PSBvYmplY3RTdG9y
ZURhdGEubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdGVzdEdlbmVyYXRvci5uZXh0KGV2ZW50
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICB5aWVsZDsKKworICAgIC8v
IE5vdyBjcmVhdGUgdGhlIGluZGV4ZXMuCisgICAgZm9yIChsZXQgaSBpbiBpbmRleERhdGEpIHsK
KyAgICAgICAgb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4
RGF0YVtpXS5rZXlQYXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7CisgICAgfQorCisgICAgaXMo
b2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGgsIGluZGV4RGF0YS5sZW5ndGgsICJHb29kIGlu
ZGV4IGNvdW50Iik7CisgICAgeWllbGQ7IC8vIENvbXBsZXRpb24gb2YgdmVyc2lvbiBjaGFuZ2Ug
dHJhbnNhY3Rpb24KKworICAgIG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24ob2JqZWN0U3Rv
cmVOYW1lKS5vYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOworICAgIHJlcXVlc3QgPSBvYmpl
Y3RTdG9yZS5pbmRleCgiaGVpZ2h0IikuZ2V0QWxsKDY1KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSBmaW5pc2hKU1Rlc3Q7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjb250aW51ZVdpdGhFdmVu
dDsKKwkKKyAgICBldmVudCA9IHlpZWxkOworCisgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdCBp
bnN0YW5jZW9mIEFycmF5LCB0cnVlLCAiR290IGFuIGFycmF5IG9iamVjdCIpOworICAgIGlzKGV2
ZW50LnRhcmdldC5yZXN1bHQubGVuZ3RoLCAyLCAiQ29ycmVjdCBsZW5ndGgiKTsKKworICAgIGZv
ciAobGV0IGkgaW4gZXZlbnQudGFyZ2V0LnJlc3VsdCkgeworICAgICAgICBpcyhldmVudC50YXJn
ZXQucmVzdWx0W2ldLCBvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W3BhcnNlSW50KGkpICsgM10u
dmFsdWUsICJDb3JyZWN0IHZhbHVlIik7CisgICAgfQorCisgICAgcmVxdWVzdCA9IG9iamVjdFN0
b3JlLmluZGV4KCJoZWlnaHQiKS5nZXRBbGwoNjUsIDApOworICAgIHJlcXVlc3Qub25lcnJvciA9
IGZpbmlzaEpTVGVzdDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNvbnRpbnVlV2l0aEV2ZW50
OworICAgIGV2ZW50ID0geWllbGQ7CisKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0IGluc3Rh
bmNlb2YgQXJyYXksIHRydWUsICJHb3QgYW4gYXJyYXkgb2JqZWN0Iik7CisgICAgaXMoZXZlbnQu
dGFyZ2V0LnJlc3VsdC5sZW5ndGgsIDIsICJDb3JyZWN0IGxlbmd0aCIpOworCisgICAgZm9yIChs
ZXQgaSBpbiBldmVudC50YXJnZXQucmVzdWx0KSB7CisgICAgICAgIGlzKGV2ZW50LnRhcmdldC5y
ZXN1bHRbaV0sIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRbcGFyc2VJbnQoaSkgKyAzXS52YWx1
ZSwgIkNvcnJlY3QgdmFsdWUiKTsKKyAgICB9CisKKyAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUu
aW5kZXgoImhlaWdodCIpLmdldEFsbCg2NSwgbnVsbCk7CisgICAgcmVxdWVzdC5vbmVycm9yID0g
ZmluaXNoSlNUZXN0OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY29udGludWVXaXRoRXZlbnQ7
CisgICAgZXZlbnQgPSB5aWVsZDsKKworICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHQgaW5zdGFu
Y2VvZiBBcnJheSwgdHJ1ZSwgIkdvdCBhbiBhcnJheSBvYmplY3QiKTsKKyAgICBpcyhldmVudC50
YXJnZXQucmVzdWx0Lmxlbmd0aCwgMiwgIkNvcnJlY3QgbGVuZ3RoIik7CisKKyAgICBmb3IgKGxl
dCBpIGluIGV2ZW50LnRhcmdldC5yZXN1bHQpIHsKKyAgICAgICAgaXMoZXZlbnQudGFyZ2V0LnJl
c3VsdFtpXSwgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtwYXJzZUludChpKSArIDNdLnZhbHVl
LCAiQ29ycmVjdCB2YWx1ZSIpOworICAgIH0KKworICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5p
bmRleCgiaGVpZ2h0IikuZ2V0QWxsKDY1LCB1bmRlZmluZWQpOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IGZpbmlzaEpTVGVzdDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNvbnRpbnVlV2l0aEV2
ZW50OworICAgIGV2ZW50ID0geWllbGQ7CisKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0IGlu
c3RhbmNlb2YgQXJyYXksIHRydWUsICJHb3QgYW4gYXJyYXkgb2JqZWN0Iik7CisgICAgaXMoZXZl
bnQudGFyZ2V0LnJlc3VsdC5sZW5ndGgsIDIsICJDb3JyZWN0IGxlbmd0aCIpOworCisgICAgZm9y
IChsZXQgaSBpbiBldmVudC50YXJnZXQucmVzdWx0KSB7CisgICAgICAgIGlzKGV2ZW50LnRhcmdl
dC5yZXN1bHRbaV0sIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRbcGFyc2VJbnQoaSkgKyAzXS52
YWx1ZSwgIkNvcnJlY3QgdmFsdWUiKTsKKyAgICB9CisKKyAgICByZXF1ZXN0ID0gb2JqZWN0U3Rv
cmUuaW5kZXgoImhlaWdodCIpLmdldEFsbCgpOworICAgIHJlcXVlc3Qub25lcnJvciA9IGZpbmlz
aEpTVGVzdDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNvbnRpbnVlV2l0aEV2ZW50OworICAg
IGV2ZW50ID0geWllbGQ7CisKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0IGluc3RhbmNlb2Yg
QXJyYXksIHRydWUsICJHb3QgYW4gYXJyYXkgb2JqZWN0Iik7CisgICAgaXMoZXZlbnQudGFyZ2V0
LnJlc3VsdC5sZW5ndGgsIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnQubGVuZ3RoLCAiQ29ycmVj
dCBsZW5ndGgiKTsKKworICAgIGZvciAobGV0IGkgaW4gZXZlbnQudGFyZ2V0LnJlc3VsdCkgewor
ICAgICAgICBpcyhldmVudC50YXJnZXQucmVzdWx0W2ldLCBvYmplY3RTdG9yZURhdGFIZWlnaHRT
b3J0W2ldLnZhbHVlLCAiQ29ycmVjdCB2YWx1ZSIpOworICAgIH0KKworICAgIHJlcXVlc3QgPSBv
YmplY3RTdG9yZS5pbmRleCgiaGVpZ2h0IikuZ2V0QWxsKG51bGwsIDQpOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IGZpbmlzaEpTVGVzdDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNvbnRpbnVl
V2l0aEV2ZW50OworICAgIGV2ZW50ID0geWllbGQ7CisKKyAgICBpcyhldmVudC50YXJnZXQucmVz
dWx0IGluc3RhbmNlb2YgQXJyYXksIHRydWUsICJHb3QgYW4gYXJyYXkgb2JqZWN0Iik7CisgICAg
aXMoZXZlbnQudGFyZ2V0LnJlc3VsdC5sZW5ndGgsIDQsICJDb3JyZWN0IGxlbmd0aCIpOworCisg
ICAgZm9yIChsZXQgaSBpbiBldmVudC50YXJnZXQucmVzdWx0KSB7CisgICAgICAgIGlzKGV2ZW50
LnRhcmdldC5yZXN1bHRbaV0sIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRbaV0udmFsdWUsICJD
b3JyZWN0IHZhbHVlIik7CisgICAgfQorCisgICAgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4
KCJoZWlnaHQiKS5nZXRBbGwoNjUsIDEpOworICAgIHJlcXVlc3Qub25lcnJvciA9IGZpbmlzaEpT
VGVzdDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNvbnRpbnVlV2l0aEV2ZW50OworICAgIGV2
ZW50ID0geWllbGQ7CisKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0IGluc3RhbmNlb2YgQXJy
YXksIHRydWUsICJHb3QgYW4gYXJyYXkgb2JqZWN0Iik7CisgICAgaXMoZXZlbnQudGFyZ2V0LnJl
c3VsdC5sZW5ndGgsIDEsICJDb3JyZWN0IGxlbmd0aCIpOworCisgICAgZm9yIChsZXQgaSBpbiBl
dmVudC50YXJnZXQucmVzdWx0KSB7CisgICAgICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHRbaV0s
IG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRbcGFyc2VJbnQoaSkgKyAzXS52YWx1ZSwgIkNvcnJl
Y3QgdmFsdWUiKTsKKyAgICB9CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB5aWVsZDsKK30K
KwordmFyIHRlc3RHZW5lcmF0b3IgPSB0ZXN0U3RlcHMoKTsKK3Rlc3RHZW5lcmF0b3IubmV4dCgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291
cmNlcy9pZGJpbmRleC1nZXRhbGxrZXlzLTEuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2lkYmluZGV4LWdldGFsbGtleXMtMS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zYzFkNjEwODRjMDRhMTRiOTU3N2VjMDIxNjkwYTU2MWVmOTgxMTg5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pZGJp
bmRleC1nZXRhbGxrZXlzLTEuanMKQEAgLTAsMCArMSwxOTYgQEAKKy8vIEFkYXB0ZWQgZnJvbSBh
IE1vemlsbGEgdGVzdCBwbGFjZWQgaW4gdGhlIHB1YmxpYyBkb21haW4uCisvLyBUYWtlbiBmcm9t
IGdpdCByZXBvc2l0b3J5IGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2dlY2tvLWRldi5naXQg
YW5kIHRoZSBwYXRoIC4vZG9tL2luZGV4ZWREQi90ZXN0L3VuaXQvdGVzdF9pbmRleF9nZXRBbGxL
ZXlzLmpzCisKK2Rlc2NyaXB0aW9uKCJUZXN0IElEQkluZGV4LmdldEFsbCgpIik7CisKK2Z1bmN0
aW9uIGNvbnRpbnVlV2l0aEV2ZW50KGV2ZW50KQoreworICAgIHRlc3RHZW5lcmF0b3IubmV4dChl
dmVudCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisJZG9jdW1lbnQuYm9keS5pbm5lckhU
TUwgKz0gbXNnICsgIjxicj4iOworfQorCitmdW5jdGlvbiBpcyhhLCBiLCBwYXNzKQoreworICAg
IGlmIChhID09PSBiKQorICAgICAgICBsb2coIlBBU1M6ICIgKyBwYXNzKTsKKyAgICBlbHNlCisg
ICAgICAgIGxvZygiRkFJTDogIiArIGEgKyAiIHNob3VsZCBiZSAiICsgYiArICIgYnV0IGlzIG5v
dC4iKTsKK30KKworZnVuY3Rpb24qIHRlc3RTdGVwcygpCit7CisgICAgY29uc3QgbmFtZSA9IHdp
bmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKKyAgICBjb25zdCBvYmplY3RTdG9yZU5hbWUgPSAiUGVv
cGxlIjsKKworICAgIGxldCBvYmplY3RTdG9yZURhdGEgPSBbCisgICAgICAgIHsga2V5OiAiMjM3
LTIzLTc3MzIiLCB2YWx1ZTogeyBuYW1lOiAiQm9iIiwgaGVpZ2h0OiA2MCwgd2VpZ2h0OiAxMjAg
fSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTogIkFubiIs
IGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzcz
NCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4MCB9IH0sCisg
ICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0
OiA1OCwgd2VpZ2h0OiAxMzAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM2IiwgdmFs
dWU6IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwKKyAgICAgICAg
eyBrZXk6ICIyMzctMjMtNzczNyIsIHZhbHVlOiB7IG5hbWU6ICJQYXQiLCBoZWlnaHQ6IDY1IH0g
fQorICAgIF07CisKKyAgICBsZXQgaW5kZXhEYXRhID0gWworICAgICAgICB7IG5hbWU6ICJuYW1l
Iiwga2V5UGF0aDogIm5hbWUiLCBvcHRpb25zOiB7IHVuaXF1ZTogdHJ1ZSB9IH0sCisgICAgICAg
IHsgbmFtZTogImhlaWdodCIsIGtleVBhdGg6ICJoZWlnaHQiLCBvcHRpb25zOiB7IHVuaXF1ZTog
ZmFsc2UgfSB9LAorICAgICAgICB7IG5hbWU6ICJ3ZWlnaHQiLCBrZXlQYXRoOiAid2VpZ2h0Iiwg
b3B0aW9uczogeyB1bmlxdWU6IGZhbHNlIH0gfQorICAgIF07CisKKyAgICBsZXQgb2JqZWN0U3Rv
cmVEYXRhTmFtZVNvcnQgPSBbCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzMiLCB2YWx1ZTog
eyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAxMTAgfSB9LAorICAgICAgICB7IGtl
eTogIjIzNy0yMy03NzMyIiwgdmFsdWU6IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAsIHdlaWdo
dDogMTIwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7IG5hbWU6
ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3
LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1lOiAiUGF0IiwgaGVpZ2h0OiA2NSB9IH0sCisgICAgICAg
IHsga2V5OiAiMjM3LTIzLTc3MzQiLCB2YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywg
d2VpZ2h0OiAxODAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsg
bmFtZTogIlN1ZSIsIGhlaWdodDogNTgsIHdlaWdodDogMTMwIH0gfQorICAgIF07CisKKyAgICBs
ZXQgb2JqZWN0U3RvcmVEYXRhV2VpZ2h0U29ydCA9IFsKKyAgICAgICAgeyBrZXk6ICIyMzctMjMt
NzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0s
CisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzIiLCB2YWx1ZTogeyBuYW1lOiAiQm9iIiwgaGVp
Z2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM1Iiwg
dmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDogNTgsIHdlaWdodDogMTMwIH0gfSwKKyAgICAg
ICAgeyBrZXk6ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1
LCB3ZWlnaHQ6IDE1MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzQiLCB2YWx1ZTog
eyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9CisgICAgXTsKKworICAg
IGxldCBvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0ID0gWworICAgICAgICB7IGtleTogIjIzNy0y
My03NzMzIiwgdmFsdWU6IHsgbmFtZTogIkFubiIsIGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0g
fSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNSIsIHZhbHVlOiB7IG5hbWU6ICJTdWUiLCBo
ZWlnaHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzIi
LCB2YWx1ZTogeyBuYW1lOiAiQm9iIiwgaGVpZ2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAorICAg
ICAgICB7IGtleTogIjIzNy0yMy03NzM2IiwgdmFsdWU6IHsgbmFtZTogIkpvZSIsIGhlaWdodDog
NjUsIHdlaWdodDogMTUwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNyIsIHZhbHVl
OiB7IG5hbWU6ICJQYXQiLCBoZWlnaHQ6IDY1IH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMt
NzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4MCB9IH0K
KyAgICBdOworCQorICAgIGxldCByZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKG5h
bWUpOworCXJlcXVlc3Qub25lcnJvciA9IGZpbmlzaEpTVGVzdDsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGNvbnRpbnVlV2l0aEV2ZW50OworICAgIGV2ZW50ID0geWllbGQ7CisKKyAgICByZXF1
ZXN0ID0gaW5kZXhlZERCLm9wZW4obmFtZSwgMSk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gZmlu
aXNoSlNUZXN0OworICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gY29udGludWVXaXRoRXZl
bnQ7CisgICAgZXZlbnQgPSB5aWVsZDsKKworICAgIGxldCBkYiA9IGV2ZW50LnRhcmdldC5yZXN1
bHQ7CisJZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBjb250aW51ZVdpdGhF
dmVudDsKKyAgICBsZXQgb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RT
dG9yZU5hbWUpOworCisgICAgLy8gRmlyc3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8gdGhlIG9iamVj
dCBzdG9yZS4KKyAgICBsZXQgYWRkZWREYXRhID0gMDsKKyAgICBmb3IgKGxldCBpIGluIG9iamVj
dFN0b3JlRGF0YSkgeworICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0
b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0U3RvcmVEYXRhW2ldLmtleSk7CisgICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IGZpbmlzaEpTVGVzdDsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgaWYgKCsrYWRkZWREYXRhID09IG9iamVjdFN0
b3JlRGF0YS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0R2VuZXJhdG9yLm5leHQoZXZl
bnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHlpZWxkOworCisgICAg
Ly8gTm93IGNyZWF0ZSB0aGUgaW5kZXhlcy4KKyAgICBmb3IgKGxldCBpIGluIGluZGV4RGF0YSkg
eworICAgICAgICBvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5k
ZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25zKTsKKyAgICB9CisKKyAgICBp
cyhvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCwgaW5kZXhEYXRhLmxlbmd0aCwgIkdvb2Qg
aW5kZXggY291bnQiKTsKKyAgICB5aWVsZDsgLy8gQ29tcGxldGlvbiBvZiB2ZXJzaW9uIGNoYW5n
ZSB0cmFuc2FjdGlvbgorCisgICAgb2JqZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RT
dG9yZU5hbWUpLm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CisgICAgcmVxdWVzdCA9IG9i
amVjdFN0b3JlLmluZGV4KCJoZWlnaHQiKS5nZXRBbGxLZXlzKDY1KTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSBmaW5pc2hKU1Rlc3Q7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjb250aW51ZVdp
dGhFdmVudDsKKwkKKyAgICBldmVudCA9IHlpZWxkOworCisgICAgaXMoZXZlbnQudGFyZ2V0LnJl
c3VsdCBpbnN0YW5jZW9mIEFycmF5LCB0cnVlLCAiR290IGFuIGFycmF5IG9iamVjdCIpOworICAg
IGlzKGV2ZW50LnRhcmdldC5yZXN1bHQubGVuZ3RoLCAyLCAiQ29ycmVjdCBsZW5ndGgiKTsKKwor
ICAgIGZvciAobGV0IGkgaW4gZXZlbnQudGFyZ2V0LnJlc3VsdCkgeworICAgICAgICBpcyhldmVu
dC50YXJnZXQucmVzdWx0W2ldLCBvYmplY3RTdG9yZURhdGFIZWlnaHRTb3J0W3BhcnNlSW50KGkp
ICsgM10ua2V5LCAiQ29ycmVjdCBrZXkiKTsKKyAgICB9CisKKyAgICByZXF1ZXN0ID0gb2JqZWN0
U3RvcmUuaW5kZXgoImhlaWdodCIpLmdldEFsbEtleXMoNjUsIDApOworICAgIHJlcXVlc3Qub25l
cnJvciA9IGZpbmlzaEpTVGVzdDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNvbnRpbnVlV2l0
aEV2ZW50OworICAgIGV2ZW50ID0geWllbGQ7CisKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0
IGluc3RhbmNlb2YgQXJyYXksIHRydWUsICJHb3QgYW4gYXJyYXkgb2JqZWN0Iik7CisgICAgaXMo
ZXZlbnQudGFyZ2V0LnJlc3VsdC5sZW5ndGgsIDIsICJDb3JyZWN0IGxlbmd0aCIpOworCisgICAg
Zm9yIChsZXQgaSBpbiBldmVudC50YXJnZXQucmVzdWx0KSB7CisgICAgICAgIGlzKGV2ZW50LnRh
cmdldC5yZXN1bHRbaV0sIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRbcGFyc2VJbnQoaSkgKyAz
XS5rZXksICJDb3JyZWN0IGtleSIpOworICAgIH0KKworICAgIHJlcXVlc3QgPSBvYmplY3RTdG9y
ZS5pbmRleCgiaGVpZ2h0IikuZ2V0QWxsS2V5cyg2NSwgbnVsbCk7CisgICAgcmVxdWVzdC5vbmVy
cm9yID0gZmluaXNoSlNUZXN0OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY29udGludWVXaXRo
RXZlbnQ7CisgICAgZXZlbnQgPSB5aWVsZDsKKworICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHQg
aW5zdGFuY2VvZiBBcnJheSwgdHJ1ZSwgIkdvdCBhbiBhcnJheSBvYmplY3QiKTsKKyAgICBpcyhl
dmVudC50YXJnZXQucmVzdWx0Lmxlbmd0aCwgMiwgIkNvcnJlY3QgbGVuZ3RoIik7CisKKyAgICBm
b3IgKGxldCBpIGluIGV2ZW50LnRhcmdldC5yZXN1bHQpIHsKKyAgICAgICAgaXMoZXZlbnQudGFy
Z2V0LnJlc3VsdFtpXSwgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtwYXJzZUludChpKSArIDNd
LmtleSwgIkNvcnJlY3Qga2V5Iik7CisgICAgfQorCisgICAgcmVxdWVzdCA9IG9iamVjdFN0b3Jl
LmluZGV4KCJoZWlnaHQiKS5nZXRBbGxLZXlzKDY1LCB1bmRlZmluZWQpOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IGZpbmlzaEpTVGVzdDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNvbnRpbnVl
V2l0aEV2ZW50OworICAgIGV2ZW50ID0geWllbGQ7CisKKyAgICBpcyhldmVudC50YXJnZXQucmVz
dWx0IGluc3RhbmNlb2YgQXJyYXksIHRydWUsICJHb3QgYW4gYXJyYXkgb2JqZWN0Iik7CisgICAg
aXMoZXZlbnQudGFyZ2V0LnJlc3VsdC5sZW5ndGgsIDIsICJDb3JyZWN0IGxlbmd0aCIpOworCisg
ICAgZm9yIChsZXQgaSBpbiBldmVudC50YXJnZXQucmVzdWx0KSB7CisgICAgICAgIGlzKGV2ZW50
LnRhcmdldC5yZXN1bHRbaV0sIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRbcGFyc2VJbnQoaSkg
KyAzXS5rZXksICJDb3JyZWN0IGtleSIpOworICAgIH0KKworICAgIHJlcXVlc3QgPSBvYmplY3RT
dG9yZS5pbmRleCgiaGVpZ2h0IikuZ2V0QWxsS2V5cygpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IGZpbmlzaEpTVGVzdDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNvbnRpbnVlV2l0aEV2ZW50
OworICAgIGV2ZW50ID0geWllbGQ7CisKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0IGluc3Rh
bmNlb2YgQXJyYXksIHRydWUsICJHb3QgYW4gYXJyYXkgb2JqZWN0Iik7CisgICAgaXMoZXZlbnQu
dGFyZ2V0LnJlc3VsdC5sZW5ndGgsIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnQubGVuZ3RoLCAi
Q29ycmVjdCBsZW5ndGgiKTsKKworICAgIGZvciAobGV0IGkgaW4gZXZlbnQudGFyZ2V0LnJlc3Vs
dCkgeworICAgICAgICBpcyhldmVudC50YXJnZXQucmVzdWx0W2ldLCBvYmplY3RTdG9yZURhdGFI
ZWlnaHRTb3J0W2ldLmtleSwgIkNvcnJlY3Qga2V5Iik7CisgICAgfQorCisgICAgcmVxdWVzdCA9
IG9iamVjdFN0b3JlLmluZGV4KCJoZWlnaHQiKS5nZXRBbGxLZXlzKG51bGwsIDQpOworICAgIHJl
cXVlc3Qub25lcnJvciA9IGZpbmlzaEpTVGVzdDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNv
bnRpbnVlV2l0aEV2ZW50OworICAgIGV2ZW50ID0geWllbGQ7CisKKyAgICBpcyhldmVudC50YXJn
ZXQucmVzdWx0IGluc3RhbmNlb2YgQXJyYXksIHRydWUsICJHb3QgYW4gYXJyYXkgb2JqZWN0Iik7
CisgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdC5sZW5ndGgsIDQsICJDb3JyZWN0IGxlbmd0aCIp
OworCisgICAgZm9yIChsZXQgaSBpbiBldmVudC50YXJnZXQucmVzdWx0KSB7CisgICAgICAgIGlz
KGV2ZW50LnRhcmdldC5yZXN1bHRbaV0sIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRbaV0ua2V5
LCAiQ29ycmVjdCBrZXkiKTsKKyAgICB9CisKKyAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5k
ZXgoImhlaWdodCIpLmdldEFsbEtleXMoNjUsIDEpOworICAgIHJlcXVlc3Qub25lcnJvciA9IGZp
bmlzaEpTVGVzdDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNvbnRpbnVlV2l0aEV2ZW50Owor
ICAgIGV2ZW50ID0geWllbGQ7CisKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0IGluc3RhbmNl
b2YgQXJyYXksIHRydWUsICJHb3QgYW4gYXJyYXkgb2JqZWN0Iik7CisgICAgaXMoZXZlbnQudGFy
Z2V0LnJlc3VsdC5sZW5ndGgsIDEsICJDb3JyZWN0IGxlbmd0aCIpOworCisgICAgZm9yIChsZXQg
aSBpbiBldmVudC50YXJnZXQucmVzdWx0KSB7CisgICAgICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1
bHRbaV0sIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRbcGFyc2VJbnQoaSkgKyAzXS5rZXksICJD
b3JyZWN0IGtleSIpOworICAgIH0KKworICAgIGZpbmlzaEpTVGVzdCgpOworICAgIHlpZWxkOwor
fQorCit2YXIgdGVzdEdlbmVyYXRvciA9IHRlc3RTdGVwcygpOwordGVzdEdlbmVyYXRvci5uZXh0
KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293599</attachid>
            <date>2016-11-01 14:44:09 -0700</date>
            <delta_ts>2016-11-01 16:48:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164294-20161101144011.patch</filename>
            <type>text/plain</type>
            <size>59775</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJlMjRiNDJjMDIwNjJm
YzM1OTQ5ZTJjNWQ3ODY3ZGJiYTU5YjYzZS4uNTIzYzhlZWU3MjY2MzZlN2JhYTU0YmQzODUzOTQz
NDNkZTNlMzBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE2LTExLTAxICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkREIgMi4wOiBT
dXBwb3J0IElEQkluZGV4IGdldEFsbC9nZXRBbGxLZXlzLgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMjg4MDY5MzM+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY0Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVzdHM6IHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1nZXRhbGwtMS1wcml2YXRl
Lmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1n
ZXRhbGwtMS5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRi
aW5kZXgtZ2V0YWxsa2V5cy0xLXByaXZhdGUuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbGtleXMtMS5odG1sCisgICAgICAgICAgICAg
ICBFeGlzdGluZyBpbXBvcnRlZCBXM0MgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0QWxsKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXRBbGxLZXlzKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmlkbDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlcXVlc3Q6OmNyZWF0ZUluZGV4R2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
cXVlc3Q6OmNyZWF0ZUNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVl
c3Q6OmNyZWF0ZUdldCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRl
eFJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRl
eFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6YWxsVmFsdWVzRm9yS2V5
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmg6
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0
b3JlOjpnZXRBbGxSZWNvcmRzKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlu
ZGV4OjpnZXRBbGxSZWNvcmRzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5SW5kZXguaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmdldEFsbFJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpxdWVyeUZvckdldEFsbE9iamVjdFN0b3JlUmVjb3Jkcyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxsT2JqZWN0U3RvcmVS
ZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpnZXRBbGxJbmRleFJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpx
dWVyeUZvckdldEFsbFJlY29yZHMpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKwogMjAxNi0xMS0wMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFBlcmNlbnQt
ZW5jb2RlIG5vbi1BU0NJSSBjb2RlIHBvaW50cyBpbiBob3N0cyBvZiBVUkxzIHdpdGggdW5yZWNv
Z25pemVkIHNjaGVtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4LmNwcAppbmRleCA5Nzc2YTJiNzk1NDhmYjJlN2VjZWViZmVmMzM4NmUxNzE1OTZiMzgyLi5i
YWVlMTNkMGM0MjY2ZDUyYWRlZTkwODc3NjA1YmM0Njk4ZjYxZTU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC0zMDgsNiArMzA4LDUyIEBA
IEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gSURCSW5kZXg6OmRvR2V0S2V5KEV4ZWNTdGF0
ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLCiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlcXVlc3RH
ZXRLZXkoZXhlY1N0YXRlLCAqdGhpcywgcmFuZ2UpOwogfQogCitFeGNlcHRpb25PcjxSZWY8SURC
UmVxdWVzdD4+IElEQkluZGV4OjpnZXRBbGwoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZlB0cjxJ
REJLZXlSYW5nZT4gcmFuZ2UsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK3sKKyAgICBMT0co
SW5kZXhlZERCLCAiSURCSW5kZXg6OmdldEFsbCIpOworICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFk
SUQoKSk7CisKKyAgICBpZiAobV9kZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUuaXNEZWxldGVkKCkp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxp
ZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEFsbCcgb24g
J0lEQkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRl
ZC4iKSB9OworCisgICAgaWYgKCFtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuaXNBY3RpdmUo
KSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFu
c2FjdGlvbkluYWN0aXZlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dl
dEFsbCcgb24gJ0lEQkluZGV4JzogVGhlIHRyYW5zYWN0aW9uIGlzIGluYWN0aXZlIG9yIGZpbmlz
aGVkLiIpIH07CisKKyAgICByZXR1cm4gbV9vYmplY3RTdG9yZS50cmFuc2FjdGlvbigpLnJlcXVl
c3RHZXRBbGxJbmRleFJlY29yZHMoZXhlY1N0YXRlLCAqdGhpcywgcmFuZ2UuZ2V0KCksIEluZGV4
ZWREQjo6R2V0QWxsVHlwZTo6VmFsdWVzLCBjb3VudCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxJ
REJSZXF1ZXN0Pj4gSURCSW5kZXg6OmdldEFsbChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1
ZSBrZXksIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK3sKKyAgICBhdXRvIG9ubHlSZXN1bHQg
PSBJREJLZXlSYW5nZTo6b25seShleGVjU3RhdGUsIGtleSk7CisgICAgaWYgKG9ubHlSZXN1bHQu
aGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6RGF0YUVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRlICdnZXRB
bGwnIG9uICdJREJJbmRleCc6IFRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQga2V5LiIpIH07
CisKKyAgICByZXR1cm4gZ2V0QWxsKGV4ZWNTdGF0ZSwgb25seVJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKSwgY291bnQpOworfQorCitFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IElEQklu
ZGV4OjpnZXRBbGxLZXlzKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBSZWZQdHI8SURCS2V5UmFuZ2U+
IHJhbmdlLCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpCit7CisgICAgTE9HKEluZGV4ZWREQiwg
IklEQkluZGV4OjpnZXRBbGxLZXlzIik7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsK
KworICAgIGlmIChtX2RlbGV0ZWQgfHwgbV9vYmplY3RTdG9yZS5pc0RlbGV0ZWQoKSkKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVF
cnJvciwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0QWxsS2V5cycgb24gJ0lE
QkluZGV4JzogVGhlIGluZGV4IG9yIGl0cyBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZC4i
KSB9OworCisgICAgaWYgKCFtX29iamVjdFN0b3JlLnRyYW5zYWN0aW9uKCkuaXNBY3RpdmUoKSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2Fj
dGlvbkluYWN0aXZlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldEFs
bEtleXMnIG9uICdJREJJbmRleCc6IFRoZSB0cmFuc2FjdGlvbiBpcyBpbmFjdGl2ZSBvciBmaW5p
c2hlZC4iKSB9OworCisgICAgcmV0dXJuIG1fb2JqZWN0U3RvcmUudHJhbnNhY3Rpb24oKS5yZXF1
ZXN0R2V0QWxsSW5kZXhSZWNvcmRzKGV4ZWNTdGF0ZSwgKnRoaXMsIHJhbmdlLmdldCgpLCBJbmRl
eGVkREI6OkdldEFsbFR5cGU6OktleXMsIGNvdW50KTsKK30KKworRXhjZXB0aW9uT3I8UmVmPElE
QlJlcXVlc3Q+PiBJREJJbmRleDo6Z2V0QWxsS2V5cyhFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNW
YWx1ZSBrZXksIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCkKK3sKKyAgICBhdXRvIG9ubHlSZXN1
bHQgPSBJREJLZXlSYW5nZTo6b25seShleGVjU3RhdGUsIGtleSk7CisgICAgaWYgKG9ubHlSZXN1
bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6RGF0YUVycm9yLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBleGVjdXRlICdn
ZXRBbGxLZXlzJyBvbiAnSURCSW5kZXgnOiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtl
eS4iKSB9OworCisgICAgcmV0dXJuIGdldEFsbEtleXMoZXhlY1N0YXRlLCBvbmx5UmVzdWx0LnJl
bGVhc2VSZXR1cm5WYWx1ZSgpLCBjb3VudCk7Cit9CisKIHZvaWQgSURCSW5kZXg6Om1hcmtBc0Rl
bGV0ZWQoKQogewogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS50
cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAppbmRleCA1NmUyYjcwZGI5Y2EyNTU1NWE0
OTFhODllOGEwYzEyMWY2NTNkNjYwLi4wZWIxYjllNGMwMmI3OTEwYjk1MjI5NGQwYmVlYWY1ZmYy
ZWVhZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgK
QEAgLTcwLDYgKzcwLDExIEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVz
dD4+IGdldEtleShKU0M6OkV4ZWNTdGF0ZSYsIElEQktleVJhbmdlKik7CiAgICAgRXhjZXB0aW9u
T3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRLZXkoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUg
a2V5KTsKIAorICAgIEV4Y2VwdGlvbk9yPFJlZjxJREJSZXF1ZXN0Pj4gZ2V0QWxsKEpTQzo6RXhl
Y1N0YXRlJiwgUmVmUHRyPElEQktleVJhbmdlPiwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsK
KyAgICBFeGNlcHRpb25PcjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbChKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNWYWx1ZSBrZXksIE9wdGlvbmFsPHVpbnQzMl90PiBjb3VudCk7CisgICAgRXhjZXB0
aW9uT3I8UmVmPElEQlJlcXVlc3Q+PiBnZXRBbGxLZXlzKEpTQzo6RXhlY1N0YXRlJiwgUmVmUHRy
PElEQktleVJhbmdlPiwgT3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KTsKKyAgICBFeGNlcHRpb25P
cjxSZWY8SURCUmVxdWVzdD4+IGdldEFsbEtleXMoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUga2V5LCBPcHRpb25hbDx1aW50MzJfdD4gY291bnQpOworCiAgICAgY29uc3QgSURCSW5kZXhJ
bmZvJiBpbmZvKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvOyB9CiAKICAgICB2b2lkIG1hcmtBc0Rl
bGV0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmlk
bAppbmRleCA4YzMzYzY1ODU5NGQ3NzliODFkZDg2YzA5OWQzNThlOTBmNTU2N2QzLi4yOTMwYzBi
ZWFlYWE4ZWNhNjdiZDdkN2Y1NWMwN2I1MzI4M2IyMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCkBAIC00Niw2ICs0NiwxMCBAQAogICAgIFtD
YWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0KGFu
eSBrZXkpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElE
QlJlcXVlc3QgZ2V0S2V5KElEQktleVJhbmdlPyBrZXkpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0S2V5KGFueSBrZXkpOworICAg
IFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0
QWxsKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwsIFtFbmZvcmNlUmFuZ2VdIG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgY291bnQpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwg
TWF5VGhyb3dFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0QWxsKGFueSBrZXksICBbRW5mb3JjZVJh
bmdlXSBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGNvdW50KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0
U3RhdGUsIE1heVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldEFsbEtleXMob3B0aW9uYWwg
SURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwgW0VuZm9yY2VSYW5nZV0gb3B0aW9uYWwgdW5zaWdu
ZWQgbG9uZyBjb3VudCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gSURCUmVxdWVzdCBnZXRBbGxLZXlzKGFueSBrZXksICBbRW5mb3JjZVJhbmdlXSBvcHRp
b25hbCB1bnNpZ25lZCBsb25nIGNvdW50KTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE1h
eVRocm93RXhjZXB0aW9uXSBJREJSZXF1ZXN0IGNvdW50KG9wdGlvbmFsIElEQktleVJhbmdlPyBy
YW5nZSA9IG51bGwpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRp
b25dIElEQlJlcXVlc3QgY291bnQoYW55IGtleSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCAyYzJlZDE0NDA0ZmRlYjBjZGNk
YTg5MTRiZjJlODI2OTM1YmViNzk0Li5lZTM3MDJmNDI0NWJmNzJmMjcxMzE2ZGQ1MjI5ZjhjNDUw
YjhhZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmNwcApAQCAtNjMsMTIgKzYzLDEyIEBAIFJlZjxJREJSZXF1ZXN0PiBJREJSZXF1ZXN0Ojpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCQ3Vyc29yJiBjCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCUmVxdWVzdChjb250ZXh0LCBjdXJzb3IsIHRyYW5zYWN0
aW9uKSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJSZXF1ZXN0OjpjcmVhdGVDb3VudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJJbmRleCYgaW5kZXgsIElEQlRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbikKK1JlZjxJREJSZXF1ZXN0PiBJREJSZXF1ZXN0OjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCSW5kZXgmIGluZGV4LCBJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCUmVxdWVz
dChjb250ZXh0LCBpbmRleCwgdHJhbnNhY3Rpb24pKTsKIH0KIAotUmVmPElEQlJlcXVlc3Q+IElE
QlJlcXVlc3Q6OmNyZWF0ZUdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJJ
bmRleCYgaW5kZXgsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlIHJlcXVlc3RlZFJlY29yZFR5
cGUsIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK1JlZjxJREJSZXF1ZXN0PiBJREJSZXF1
ZXN0OjpjcmVhdGVJbmRleEdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJJ
bmRleCYgaW5kZXgsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlIHJlcXVlc3RlZFJlY29yZFR5
cGUsIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJREJSZXF1ZXN0KGNvbnRleHQsIGluZGV4LCByZXF1ZXN0ZWRSZWNvcmRUeXBlLCB0cmFu
c2FjdGlvbikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5oCmluZGV4IDdlNjk2MTJkNDI2YjhiYzI5ODVkMDZhZDlmMzExMWQ2ODQ4OGFhZjYuLjdm
NDIzYTFhMTczNTlmZmQzMzQyNjcxZTI5YTAzNjZjMGU2ZGU2NzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTU3LDggKzU3LDggQEAgY2xh
c3MgSURCUmVxdWVzdCA6IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMg
SURCQWN0aXZlRE9NT2JqZWN0LAogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SURCUmVxdWVzdD4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJPYmplY3RTdG9yZSYsIElEQlRyYW5z
YWN0aW9uJik7CiAgICAgc3RhdGljIFJlZjxJREJSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIElEQkN1cnNvciYsIElEQlRyYW5zYWN0aW9uJik7Ci0gICAgc3RhdGljIFJl
ZjxJREJSZXF1ZXN0PiBjcmVhdGVDb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCSW5k
ZXgmLCBJREJUcmFuc2FjdGlvbiYpOwotICAgIHN0YXRpYyBSZWY8SURCUmVxdWVzdD4gY3JlYXRl
R2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJJbmRleCYsIEluZGV4ZWREQjo6SW5kZXhS
ZWNvcmRUeXBlLCBJREJUcmFuc2FjdGlvbiYpOworICAgIHN0YXRpYyBSZWY8SURCUmVxdWVzdD4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJJbmRleCYsIElEQlRyYW5zYWN0aW9u
Jik7CisgICAgc3RhdGljIFJlZjxJREJSZXF1ZXN0PiBjcmVhdGVJbmRleEdldChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgSURCSW5kZXgmLCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSwgSURC
VHJhbnNhY3Rpb24mKTsKIAogICAgIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVzb3Vy
Y2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUlkZW50aWZpZXI7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwCmluZGV4IDZmOTQzNDVlOGZmODA1ZTgxN2UxMTgxNzhiZDJiZmNmZWFiODNkNjcuLjgwODI0
NDhhOGZkNTIwNWZkMWM2NzQwMGQxODQzNTFiZTNmNDRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTc0Nyw2ICs3
NDcsMjQgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0QWxsT2Jq
ZWN0U3RvcmVSZWNvcmRzKEpTQzo6RXhlY1N0YXRlJgogICAgIHJldHVybiByZXF1ZXN0OwogfQog
CitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRBbGxJbmRleFJlY29y
ZHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElEQktleVJh
bmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBJbmRleGVkREI6OkdldEFsbFR5cGUgZ2V0QWxsVHlwZSwg
T3B0aW9uYWw8dWludDMyX3Q+IGNvdW50KQoreworICAgIExPRyhJbmRleGVkREIsICJJREJUcmFu
c2FjdGlvbjo6cmVxdWVzdEdldEFsbEluZGV4UmVjb3JkcyIpOworICAgIEFTU0VSVChpc0FjdGl2
ZSgpKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRo
cmVhZElEKCkpOworCisgICAgQVNTRVJUX1VOVVNFRChzdGF0ZSwgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZzdGF0ZSkpOwor
CisgICAgYXV0byByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIGluZGV4LCAqdGhpcyk7CisgICAgYWRkUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsK
KworICAgIElEQkdldEFsbFJlY29yZHNEYXRhIGdldEFsbFJlY29yZHNEYXRhIHsga2V5UmFuZ2VE
YXRhLCBnZXRBbGxUeXBlLCBjb3VudCwgaW5kZXgub2JqZWN0U3RvcmUoKS5pbmZvKCkuaWRlbnRp
ZmllcigpLCBpbmRleC5pbmZvKCkuaWRlbnRpZmllcigpIH07CisKKyAgICBzY2hlZHVsZU9wZXJh
dGlvbihJREJDbGllbnQ6OmNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKCp0aGlzLCByZXF1ZXN0
LmdldCgpLCAmSURCVHJhbnNhY3Rpb246OmRpZEdldEFsbFJlY29yZHNPblNlcnZlciwgJklEQlRy
YW5zYWN0aW9uOjpnZXRBbGxSZWNvcmRzT25TZXJ2ZXIsIGdldEFsbFJlY29yZHNEYXRhKSk7CisK
KyAgICByZXR1cm4gcmVxdWVzdDsKK30KKwogdm9pZCBJREJUcmFuc2FjdGlvbjo6Z2V0QWxsUmVj
b3Jkc09uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwg
Y29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQogewogICAgIExP
RyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Z2V0QWxsUmVjb3Jkc09uU2VydmVyIik7CkBA
IC04MjIsNyArODQwLDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0
SW5kZXhSZWNvcmQoRXhlY1N0YXRlJiBzdGF0ZSwgSURCSW5kZXgmIGkKIAogICAgIEFTU0VSVF9V
TlVTRUQoc3RhdGUsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRpb25D
b250ZXh0RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpKTsKIAotICAgIGF1dG8gcmVxdWVzdCA9IElEQlJl
cXVlc3Q6OmNyZWF0ZUdldCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmRleCwgdHlwZSwg
KnRoaXMpOworICAgIGF1dG8gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZUluZGV4R2V0KCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZGV4LCB0eXBlLCAqdGhpcyk7CiAgICAgYWRkUmVx
dWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIElEQkdldFJlY29yZERhdGEgZ2V0UmVjb3JkRGF0
YSA9IHsgcmFuZ2UgfTsKQEAgLTg5NCw3ICs5MTIsNyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJh
bnNhY3Rpb246OnJlcXVlc3RDb3VudChFeGVjU3RhdGUmIHN0YXRlLCBJREJJbmRleCYgaW5kZXgs
CiAKICAgICBBU1NFUlRfVU5VU0VEKHN0YXRlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJnN0YXRlKSk7CiAKLSAgICBhdXRv
IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGVDb3VudCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBpbmRleCwgKnRoaXMpOworICAgIGF1dG8gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0
ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmRleCwgKnRoaXMpOwogICAgIGFkZFJlcXVl
c3QocmVxdWVzdC5nZXQoKSk7CiAKICAgICBzY2hlZHVsZU9wZXJhdGlvbihJREJDbGllbnQ6OmNy
ZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKCp0aGlzLCByZXF1ZXN0LmdldCgpLCAmSURCVHJhbnNh
Y3Rpb246OmRpZEdldENvdW50T25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6Z2V0Q291bnRPblNl
cnZlciwgcmFuZ2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbi5oCmluZGV4IDAzYzBjNTE0YTNhOWQyMWJiYzIxYTBlYWViZDkwOWJhZWIw
ZDQ3NzIuLjg2YmFiYjE2MDJiNDhmZWE3MWY3MzUzZWJmY2Q0NDQ3MDZhNmZlMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAt
MTE1LDYgKzExNSw3IEBAIHB1YmxpYzoKICAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdFB1dE9y
QWRkKEpTQzo6RXhlY1N0YXRlJiwgSURCT2JqZWN0U3RvcmUmLCBJREJLZXkqLCBTZXJpYWxpemVk
U2NyaXB0VmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSk7CiAgICAg
UmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRSZWNvcmQoSlNDOjpFeGVjU3RhdGUmLCBJREJPYmpl
Y3RTdG9yZSYsIGNvbnN0IElEQkdldFJlY29yZERhdGEmKTsKICAgICBSZWY8SURCUmVxdWVzdD4g
cmVxdWVzdEdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyhKU0M6OkV4ZWNTdGF0ZSYsIElEQk9iamVj
dFN0b3JlJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgSW5kZXhlZERCOjpHZXRBbGxUeXBlLCBP
cHRpb25hbDx1aW50MzJfdD4gY291bnQpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0R2V0
QWxsSW5kZXhSZWNvcmRzKEpTQzo6RXhlY1N0YXRlJiwgSURCSW5kZXgmLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmLCBJbmRleGVkREI6OkdldEFsbFR5cGUsIE9wdGlvbmFsPHVpbnQzMl90PiBjb3Vu
dCk7CiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3REZWxldGVSZWNvcmQoSlNDOjpFeGVjU3Rh
dGUmLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogICAgIFJlZjxJ
REJSZXF1ZXN0PiByZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZShKU0M6OkV4ZWNTdGF0ZSYsIElEQk9i
amVjdFN0b3JlJik7CiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RDb3VudChKU0M6OkV4ZWNT
dGF0ZSYsIElEQk9iamVjdFN0b3JlJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZh
bHVlU3RvcmUuY3BwCmluZGV4IGRhM2M3OTk4MzAxMmIwNTFkYjZiZmFjYWMyOTZkYTFkNzI5OGE1
ODguLjMzOTg4ODQ2Mjc3YWE5OGZjODk1ZmIyMjQ4NWY0MTU4NTBkMzc5NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZh
bHVlU3RvcmUuY3BwCkBAIC01MSw2ICs1MSwxOSBAQCBjb25zdCBJREJLZXlEYXRhKiBJbmRleFZh
bHVlU3RvcmU6Omxvd2VzdFZhbHVlRm9yS2V5KGNvbnN0IElEQktleURhdGEmIGtleSkgY29ucwog
ICAgIHJldHVybiBlbnRyeS0+Z2V0TG93ZXN0KCk7CiB9CiAKK1ZlY3RvcjxJREJLZXlEYXRhPiBJ
bmRleFZhbHVlU3RvcmU6OmFsbFZhbHVlc0ZvcktleShjb25zdCBJREJLZXlEYXRhJiBrZXksIHVp
bnQzMl90IGxpbWl0KSBjb25zdAoreworICAgIGNvbnN0IGF1dG8mIGVudHJ5ID0gbV9yZWNvcmRz
LmdldChrZXkpOworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBW
ZWN0b3I8SURCS2V5RGF0YT4gcmVzdWx0czsKKyAgICBmb3IgKGF1dG8gaXRlcmF0b3IgPSBlbnRy
eS0+YmVnaW4oKTsgcmVzdWx0cy5zaXplKCkgPCBsaW1pdCAmJiBpdGVyYXRvci5pc1ZhbGlkKCk7
ICsraXRlcmF0b3IpCisgICAgICAgIHJlc3VsdHMuYXBwZW5kKGl0ZXJhdG9yLmtleSgpKTsKKwor
ICAgIHJldHVybiByZXN1bHRzOworfQorCiB1aW50NjRfdCBJbmRleFZhbHVlU3RvcmU6OmNvdW50
Rm9yS2V5KGNvbnN0IElEQktleURhdGEmIGtleSkgY29uc3QKIHsKICAgICBjb25zdCBhdXRvJiBl
bnRyeSA9IG1fcmVjb3Jkcy5nZXQoa2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuaAppbmRleCA4NjZjZmZi
MTJiYTE2NTk4ZGE3NDUwNmI1ZWZmZDRkZjQ2MzFkMDQ4Li4yMGFiZDY2N2UwMjQ0ODM4OWU0ZmVk
MmY4YWZmOWJlMmZjMzA0MzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5oCkBAIC01MSw2ICs1MSw3IEBA
IHB1YmxpYzoKICAgICBJbmRleFZhbHVlU3RvcmUoYm9vbCB1bmlxdWUpOwogCiAgICAgY29uc3Qg
SURCS2V5RGF0YSogbG93ZXN0VmFsdWVGb3JLZXkoY29uc3QgSURCS2V5RGF0YSYpIGNvbnN0Owor
ICAgIFZlY3RvcjxJREJLZXlEYXRhPiBhbGxWYWx1ZXNGb3JLZXkoY29uc3QgSURCS2V5RGF0YSYs
IHVpbnQzMl90IGxpbWl0KSBjb25zdDsKICAgICB1aW50NjRfdCBjb3VudEZvcktleShjb25zdCBJ
REJLZXlEYXRhJikgY29uc3Q7CiAgICAgSURCS2V5RGF0YSBsb3dlc3RLZXlXaXRoUmVjb3JkSW5S
YW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zKGNv
bnN0IElEQktleURhdGEmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAK
aW5kZXggZjk0YTBmODBkOTU2YjNjOTQxNmRlODY3MTIyN2ZmZTgzODQyNTY4ZC4uYzlhYmM2ZGVk
MmM5MTcwNWFhZGFlNjIyMjAxNThjY2EyZjZkYWVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tp
bmdTdG9yZS5jcHAKQEAgLTM3NSwxMSArMzc1LDE5IEBAIElEQkVycm9yIE1lbW9yeUlEQkJhY2tp
bmdTdG9yZTo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
CiAgICAgaWYgKCFtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkZW50aWZpZXIp
KQogICAgICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBB
U0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUgdHJhbnNhY3Rpb24gZm91bmQgdG8gZ2V0IGFs
bCByZWNvcmRzIikgfTsKIAotICAgIE1lbW9yeU9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSA9IG1f
b2JqZWN0U3RvcmVzQnlJZGVudGlmaWVyLmdldChnZXRBbGxSZWNvcmRzRGF0YS5vYmplY3RTdG9y
ZUlkZW50aWZpZXIpOworICAgIGF1dG8qIG9iamVjdFN0b3JlID0gbV9vYmplY3RTdG9yZXNCeUlk
ZW50aWZpZXIuZ2V0KGdldEFsbFJlY29yZHNEYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAg
ICAgaWYgKCFvYmplY3RTdG9yZSkKICAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNlcHRp
b246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJObyBiYWNraW5nIHN0b3JlIG9iamVjdCBz
dG9yZSBmb3VuZCIpIH07CiAKLSAgICBvYmplY3RTdG9yZS0+Z2V0QWxsUmVjb3JkcyhnZXRBbGxS
ZWNvcmRzRGF0YS5rZXlSYW5nZURhdGEsIGdldEFsbFJlY29yZHNEYXRhLmNvdW50LCBnZXRBbGxS
ZWNvcmRzRGF0YS5nZXRBbGxUeXBlLCByZXN1bHQpOworICAgIGlmIChnZXRBbGxSZWNvcmRzRGF0
YS5pbmRleElkZW50aWZpZXIpIHsKKyAgICAgICAgYXV0byogaW5kZXggPSBvYmplY3RTdG9yZS0+
aW5kZXhGb3JJZGVudGlmaWVyKGdldEFsbFJlY29yZHNEYXRhLmluZGV4SWRlbnRpZmllcik7Cisg
ICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcgc3RvcmUgaW5kZXgg
Zm91bmQiKSB9OworCisgICAgICAgIGluZGV4LT5nZXRBbGxSZWNvcmRzKGdldEFsbFJlY29yZHNE
YXRhLmtleVJhbmdlRGF0YSwgZ2V0QWxsUmVjb3Jkc0RhdGEuY291bnQsIGdldEFsbFJlY29yZHNE
YXRhLmdldEFsbFR5cGUsIHJlc3VsdCk7CisgICAgfSBlbHNlCisgICAgICAgIG9iamVjdFN0b3Jl
LT5nZXRBbGxSZWNvcmRzKGdldEFsbFJlY29yZHNEYXRhLmtleVJhbmdlRGF0YSwgZ2V0QWxsUmVj
b3Jkc0RhdGEuY291bnQsIGdldEFsbFJlY29yZHNEYXRhLmdldEFsbFR5cGUsIHJlc3VsdCk7CisK
ICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcAppbmRleCAyZTJmYTBhNTM5MDMyNDE4
Nzk5NTc1OGNjMzhkN2ViNTAzYjZhZDM3Li4zMDdjN2ExMjE3MjljN2I0YmRlNWU4ZTUxYTVmZmRm
ZGM3ZGY2NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkVycm9yLmgiCisjaW5jbHVkZSAiSURC
R2V0QWxsUmVzdWx0LmgiCiAjaW5jbHVkZSAiSURCR2V0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSURC
S2V5UmFuZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW5kZXhLZXkuaCIKQEAgLTE1Nyw2ICsxNTgsNDUg
QEAgdWludDY0X3QgTWVtb3J5SW5kZXg6OmNvdW50Rm9yS2V5UmFuZ2UoY29uc3QgSURCS2V5UmFu
Z2VEYXRhJiBpblJhbmdlKQogICAgIHJldHVybiBjb3VudDsKIH0KIAordm9pZCBNZW1vcnlJbmRl
eDo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgT3B0
aW9uYWw8dWludDMyX3Q+IGNvdW50LCBJbmRleGVkREI6OkdldEFsbFR5cGUgdHlwZSwgSURCR2V0
QWxsUmVzdWx0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUlu
ZGV4OjpnZXRBbGxSZWNvcmRzIik7CisKKyAgICByZXN1bHQgPSB7IHR5cGUgfTsKKworICAgIGlm
ICghbV9yZWNvcmRzKQorICAgICAgICByZXR1cm47CisKKyAgICB1aW50MzJfdCB0YXJnZXRDb3Vu
dDsKKyAgICBpZiAoY291bnQgJiYgY291bnQudmFsdWUoKSkKKyAgICAgICAgdGFyZ2V0Q291bnQg
PSBjb3VudC52YWx1ZSgpOworICAgIGVsc2UKKyAgICAgICAgdGFyZ2V0Q291bnQgPSBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7CisKKyAgICBJREJLZXlSYW5nZURhdGEgcmFu
Z2UgPSBrZXlSYW5nZURhdGE7CisgICAgdWludDMyX3QgY3VycmVudENvdW50ID0gMDsKKyAgICB3
aGlsZSAoY3VycmVudENvdW50IDwgdGFyZ2V0Q291bnQpIHsKKyAgICAgICAgYXV0byBrZXkgPSBt
X3JlY29yZHMtPmxvd2VzdEtleVdpdGhSZWNvcmRJblJhbmdlKHJhbmdlKTsKKyAgICAgICAgaWYg
KGtleS5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICByYW5nZS5sb3dl
cktleSA9IGtleTsKKyAgICAgICAgcmFuZ2UubG93ZXJPcGVuID0gdHJ1ZTsKKworICAgICAgICBh
dXRvIGFsbFZhbHVlcyA9IG1fcmVjb3Jkcy0+YWxsVmFsdWVzRm9yS2V5KGtleSwgdGFyZ2V0Q291
bnQgLSBjdXJyZW50Q291bnQpOworICAgICAgICBmb3IgKGF1dG8mIGtleVZhbHVlIDogYWxsVmFs
dWVzKSB7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBJbmRleGVkREI6OkdldEFsbFR5cGU6Oktl
eXMpIHsKKyAgICAgICAgICAgICAgICBJREJLZXlEYXRhIGtleUNvcHkgeyBrZXlWYWx1ZSB9Owor
ICAgICAgICAgICAgICAgIHJlc3VsdC5hZGRLZXkoV1RGTW92ZShrZXlDb3B5KSk7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRkVmFsdWUobV9vYmplY3RTdG9y
ZS52YWx1ZUZvcktleVJhbmdlKGtleVZhbHVlKSk7CisgICAgICAgIH0KKworICAgICAgICBjdXJy
ZW50Q291bnQgKz0gYWxsVmFsdWVzLnNpemUoKTsKKyAgICB9Cit9CisKKwogSURCRXJyb3IgTWVt
b3J5SW5kZXg6OnB1dEluZGV4S2V5KGNvbnN0IElEQktleURhdGEmIHZhbHVlS2V5LCBjb25zdCBJ
bmRleEtleSYgaW5kZXhLZXkpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUluZGV4Ojpw
cm92aXNpb25hbFB1dEluZGV4S2V5Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5oCmluZGV4IDdlYzQ3Y2VkZWYxNjY4MDYw
ZmM3NWVkYjY2OWUyNDMxYjhmYzZhYmIuLjg0NzU5ODQ3NTI5ZjZjNWI3MDNkZGUyN2Y3MDcwM2U0
ZjA1ODU5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlJbmRleC5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSURCQ3Vyc29ySW5mbzsKIGNsYXNzIElEQkVycm9yOworY2xhc3MgSURCR2V0
QWxsUmVzdWx0OwogY2xhc3MgSURCR2V0UmVzdWx0OwogY2xhc3MgSURCS2V5RGF0YTsKIGNsYXNz
IEluZGV4S2V5OwpAQCAtNDQsNiArNDUsNyBAQCBjbGFzcyBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjsK
IHN0cnVjdCBJREJLZXlSYW5nZURhdGE7CiAKIG5hbWVzcGFjZSBJbmRleGVkREIgeworZW51bSBj
bGFzcyBHZXRBbGxUeXBlOwogZW51bSBjbGFzcyBJbmRleFJlY29yZFR5cGU7CiB9CiAKQEAgLTY2
LDYgKzY4LDcgQEAgcHVibGljOgogCiAgICAgSURCR2V0UmVzdWx0IGdldFJlc3VsdEZvcktleVJh
bmdlKEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSBj
b25zdDsKICAgICB1aW50NjRfdCBjb3VudEZvcktleVJhbmdlKGNvbnN0IElEQktleVJhbmdlRGF0
YSYpOworICAgIHZvaWQgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJLZXlSYW5nZURhdGEmLCBPcHRp
b25hbDx1aW50MzJfdD4gY291bnQsIEluZGV4ZWREQjo6R2V0QWxsVHlwZSwgSURCR2V0QWxsUmVz
dWx0JikgY29uc3Q7CiAKICAgICBJREJFcnJvciBwdXRJbmRleEtleShjb25zdCBJREJLZXlEYXRh
JiwgY29uc3QgSW5kZXhLZXkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApp
bmRleCBkOWQ1ODJkNjdjNmIzNWQ2NDJkMWRjZmU2Y2IwOTViOTU5ZTJlMTUwLi4zMjY1OGFjOWI3
OTVlMjc3ZTc2YmI4NDVlMjQwM2Y0ZDgzZmNjZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcApAQCAtMTg3OCw3ICsxODc4LDEyIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCYgcXVlcnlG
b3JHZXRBbGxSZWNvcmRzKGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiBnZXRBbGxSZWNvcmRz
RGF0YSkKK0lEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxsUmVjb3Jkcyhjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
R2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhLCBJREJHZXRBbGxSZXN1bHQmIHJl
c3VsdCkKK3sKKyAgICByZXR1cm4gZ2V0QWxsUmVjb3Jkc0RhdGEuaW5kZXhJZGVudGlmaWVyID8g
Z2V0QWxsSW5kZXhSZWNvcmRzKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZ2V0QWxsUmVjb3Jkc0Rh
dGEsIHJlc3VsdCkgOiBnZXRBbGxPYmplY3RTdG9yZVJlY29yZHModHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBnZXRBbGxSZWNvcmRzRGF0YSwgcmVzdWx0KTsKK30KKworc3RhdGljIGNvbnN0IEFTQ0lJ
TGl0ZXJhbCYgcXVlcnlGb3JHZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoY29uc3QgSURCR2V0QWxs
UmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBBU0NJSUxpdGVyYWw+IGxvd2VyT3BlblVwcGVyT3BlbktleSgiU0VMRUNUIGtl
eSBGUk9NIFJlY29yZHMgV0hFUkUgb2JqZWN0U3RvcmVJRCA9ID8gQU5EIGtleSA+IENBU1QoPyBB
UyBURVhUKSBBTkQga2V5IDwgQ0FTVCg/IEFTIFRFWFQpIE9SREVSIEJZIGtleTsiKTsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQVNDSUlMaXRlcmFsPiBsb3dlck9wZW5VcHBlckNs
b3NlZEtleSgiU0VMRUNUIGtleSBGUk9NIFJlY29yZHMgV0hFUkUgb2JqZWN0U3RvcmVJRCA9ID8g
QU5EIGtleSA+IENBU1QoPyBBUyBURVhUKSBBTkQga2V5IDw9IENBU1QoPyBBUyBURVhUKSBPUkRF
UiBCWSBrZXk7Iik7CkBAIC0xOTEyLDkgKzE5MTcsOSBAQCBzdGF0aWMgY29uc3QgQVNDSUlMaXRl
cmFsJiBxdWVyeUZvckdldEFsbFJlY29yZHMoY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdl
dAogICAgIHJldHVybiBsb3dlckNsb3NlZFVwcGVyQ2xvc2VkVmFsdWUuZ2V0KCk7CiB9CiAKLUlE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCR2V0QWxsUmVj
b3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhLCBJREJHZXRBbGxSZXN1bHQmIHJlc3VsdCkKK0lE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJHZXRBbGxSZWNvcmRzRGF0YSYgZ2V0QWxsUmVjb3Jkc0RhdGEsIElEQkdldEFsbFJlc3VsdCYg
cmVzdWx0KQogewotICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6Omdl
dEFsbFJlY29yZHMiKTsKKyAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpnZXRBbGxPYmplY3RTdG9yZVJlY29yZHMiKTsKIAogICAgIEFTU0VSVChtX3NxbGl0ZURCKTsK
ICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwpAQCAtMTk0Myw3ICsxOTQ4LDcgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnMKICAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNl
cHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gc2VyaWFsaXplIHVw
cGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKSB9OwogICAgIH0KIAotICAgIFNRTGl0ZVN0YXRl
bWVudCBzcWwoKm1fc3FsaXRlREIsIHF1ZXJ5Rm9yR2V0QWxsUmVjb3JkcyhnZXRBbGxSZWNvcmRz
RGF0YSkpOworICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fc3FsaXRlREIsIHF1ZXJ5Rm9yR2V0
QWxsT2JqZWN0U3RvcmVSZWNvcmRzKGdldEFsbFJlY29yZHNEYXRhKSk7CiAgICAgaWYgKHNxbC5w
cmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IHNxbC5iaW5kSW50NjQoMSwgZ2V0QWxs
UmVjb3Jkc0RhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKSAhPSBTUUxJVEVfT0sKICAgICAgICAg
fHwgc3FsLmJpbmRCbG9iKDIsIGxvd2VyQnVmZmVyLT5kYXRhKCksIGxvd2VyQnVmZmVyLT5zaXpl
KCkpICE9IFNRTElURV9PSwpAQCAtMTk1NCwxMSArMTk1OSwxNCBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldEFsbFJlY29yZHMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFucwogCiAgICAgcmVzdWx0ID0geyBnZXRBbGxSZWNvcmRzRGF0YS5nZXRBbGxUeXBlIH07
CiAKKyAgICB1aW50MzJfdCB0YXJnZXRSZXN1bHRzOworICAgIGlmIChnZXRBbGxSZWNvcmRzRGF0
YS5jb3VudCAmJiBnZXRBbGxSZWNvcmRzRGF0YS5jb3VudC52YWx1ZSgpKQorICAgICAgICB0YXJn
ZXRSZXN1bHRzID0gZ2V0QWxsUmVjb3Jkc0RhdGEuY291bnQudmFsdWUoKTsKKyAgICBlbHNlCisg
ICAgICAgIHRhcmdldFJlc3VsdHMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4
KCk7CisKICAgICBpbnQgc3FsUmVzdWx0ID0gc3FsLnN0ZXAoKTsKICAgICB1aW50MzJfdCByZXR1
cm5lZFJlc3VsdHMgPSAwOwotICAgIHVpbnQzMl90IHRhcmdldFJlc3VsdHMgPSBnZXRBbGxSZWNv
cmRzRGF0YS5jb3VudCA/IGdldEFsbFJlY29yZHNEYXRhLmNvdW50LnZhbHVlKCkgOiAwOwotICAg
IGlmICghdGFyZ2V0UmVzdWx0cykKLSAgICAgICAgdGFyZ2V0UmVzdWx0cyA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKIAogICAgIHdoaWxlIChzcWxSZXN1bHQgPT0gU1FM
SVRFX1JPVyAmJiByZXR1cm5lZFJlc3VsdHMgPCB0YXJnZXRSZXN1bHRzKSB7CiAgICAgICAgIGlm
IChnZXRBbGxSZWNvcmRzRGF0YS5nZXRBbGxUeXBlID09IEluZGV4ZWREQjo6R2V0QWxsVHlwZTo6
VmFsdWVzKSB7CkBAIC0yMDA0LDYgKzIwMTIsNTQgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnMK
ICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxp
dGVyYWwoIkVycm9yIGxvb2tpbmcgdXAgcmVjb3JkIGluIG9iamVjdCBzdG9yZSBieSBrZXkgcmFu
Z2UiKSB9OwogfQogCitJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldEFsbEluZGV4
UmVjb3Jkcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEmIGdldEFsbFJlY29yZHNEYXRhLCBJREJHZXRB
bGxSZXN1bHQmIHJlc3VsdCkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpnZXRBbGxJbmRleFJlY29yZHMgLSAlcyIsIGdldEFsbFJlY29yZHNEYXRhLmtleVJh
bmdlRGF0YS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBBU1NFUlQobV9z
cWxpdGVEQik7CisgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKKworICAgIGF1dG8q
IHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7
CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewor
ICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gZ2V0IGFsbCBpbmRleCByZWNvcmRzIGZyb20g
ZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgICAgICBy
ZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwo
IkF0dGVtcHQgdG8gZ2V0IGFsbCBpbmRleCByZWNvcmRzIGZyb20gZGF0YWJhc2Ugd2l0aG91dCBh
biBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpIH07CisgICAgfQorCisgICAgYXV0byBjdXJzb3Ig
PSB0cmFuc2FjdGlvbi0+bWF5YmVPcGVuQmFja2luZ1N0b3JlQ3Vyc29yKGdldEFsbFJlY29yZHNE
YXRhLm9iamVjdFN0b3JlSWRlbnRpZmllciwgZ2V0QWxsUmVjb3Jkc0RhdGEuaW5kZXhJZGVudGlm
aWVyLCBnZXRBbGxSZWNvcmRzRGF0YS5rZXlSYW5nZURhdGEpOworICAgIGlmICghY3Vyc29yKSB7
CisgICAgICAgIExPR19FUlJPUigiQ2Fubm90IG9wZW4gY3Vyc29yIHRvIHBlcmZvcm0gaW5kZXgg
Z2V0cyBpbiBkYXRhYmFzZSIpOworICAgICAgICByZXR1cm4geyBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBvcGVuIGN1cnNvciB0byBwZXJm
b3JtIGluZGV4IGdldHMgaW4gZGF0YWJhc2UiKSB9OworICAgIH0KKworICAgIGlmIChjdXJzb3It
PmRpZEVycm9yKCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJDdXJzb3IgZmFpbGVkIHdoaWxlIGxv
b2tpbmcgdXAgaW5kZXggcmVjb3JkcyBpbiBkYXRhYmFzZSIpOworICAgICAgICByZXR1cm4geyBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkN1cnNvciBm
YWlsZWQgd2hpbGUgbG9va2luZyB1cCBpbmRleCByZWNvcmRzIGluIGRhdGFiYXNlIikgfTsKKyAg
ICB9CisKKyAgICByZXN1bHQgPSB7IGdldEFsbFJlY29yZHNEYXRhLmdldEFsbFR5cGUgfTsKKyAg
ICB1aW50MzJfdCBjdXJyZW50Q291bnQgPSAwOworICAgIHVpbnQzMl90IHRhcmdldENvdW50ID0g
Z2V0QWxsUmVjb3Jkc0RhdGEuY291bnQgPyBnZXRBbGxSZWNvcmRzRGF0YS5jb3VudC52YWx1ZSgp
IDogMDsKKyAgICBpZiAoIXRhcmdldENvdW50KQorICAgICAgICB0YXJnZXRDb3VudCA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKKyAgICB3aGlsZSAoIWN1cnNvci0+ZGlk
Q29tcGxldGUoKSAmJiAhY3Vyc29yLT5kaWRFcnJvcigpICYmIGN1cnJlbnRDb3VudCA8IHRhcmdl
dENvdW50KSB7CisgICAgICAgIGlmIChnZXRBbGxSZWNvcmRzRGF0YS5nZXRBbGxUeXBlID09IElu
ZGV4ZWREQjo6R2V0QWxsVHlwZTo6S2V5cykgeworICAgICAgICAgICAgSURCS2V5RGF0YSBrZXlD
b3B5ID0gY3Vyc29yLT5jdXJyZW50UHJpbWFyeUtleSgpOworICAgICAgICAgICAgcmVzdWx0LmFk
ZEtleShXVEZNb3ZlKGtleUNvcHkpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXN1
bHQuYWRkVmFsdWUoY3Vyc29yLT5jdXJyZW50VmFsdWUoKSA/ICpjdXJzb3ItPmN1cnJlbnRWYWx1
ZSgpIDogSURCVmFsdWUoKSk7CisKKyAgICAgICAgKytjdXJyZW50Q291bnQ7CisgICAgICAgIGN1
cnNvci0+YWR2YW5jZSgxKTsKKyAgICB9CisKKyAgICBpZiAoY3Vyc29yLT5kaWRFcnJvcigpKSB7
CisgICAgICAgIExPR19FUlJPUigiQ3Vyc29yIGZhaWxlZCB3aGlsZSBsb29raW5nIHVwIGluZGV4
IHJlY29yZHMgaW4gZGF0YWJhc2UiKTsKKyAgICAgICAgcmV0dXJuIHsgSURCRGF0YWJhc2VFeGNl
cHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJDdXJzb3IgZmFpbGVkIHdoaWxlIGxv
b2tpbmcgdXAgaW5kZXggcmVjb3JkcyBpbiBkYXRhYmFzZSIpIH07CisgICAgfQorCisgICAgcmV0
dXJuIHsgfTsKK30KKwogSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRJbmRleFJl
Y29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJRCwgdWludDY0X3QgaW5kZXhJRCwgSW5kZXhlZERCOjpJbmRl
eFJlY29yZFR5cGUgdHlwZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSwgSURCR2V0UmVz
dWx0JiBnZXRSZXN1bHQpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Z2V0SW5kZXhSZWNvcmQgLSAlcyIsIHJhbmdlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAppbmRleCAyZWY4NTg2NGU5NDk4
NmZmOTIzODIzZjJhMGFmYTRlNGRlODA1NDhmLi5hYzIyNjU1YjY3NGRlY2JiYjBiNmNkMzQzYjRk
NTlmZGE4ZDUyYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBAIC0xMTQsNiAr
MTE0LDkgQEAgcHJpdmF0ZToKIAogICAgIElEQkVycm9yIGRlbGV0ZVVudXNlZEJsb2JGaWxlUmVj
b3JkcyhTUUxpdGVJREJUcmFuc2FjdGlvbiYpOwogCisgICAgSURCRXJyb3IgZ2V0QWxsT2JqZWN0
U3RvcmVSZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYsIElEQkdldEFsbFJlc3VsdCYgb3V0
VmFsdWUpOworICAgIElEQkVycm9yIGdldEFsbEluZGV4UmVjb3Jkcyhjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCR2V0QWxsUmVjb3Jk
c0RhdGEmLCBJREJHZXRBbGxSZXN1bHQmIG91dFZhbHVlKTsKKwogICAgIEpTQzo6Vk0mIHZtKCk7
CiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KCk7CiAgICAgdm9pZCBpbml0
aWFsaXplVk0oKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCAwYWVkZTE3ZTUzNTViMzdlNjRjYTM5YjYyNjE0ZWM4ZjZkZWZj
MzE4Li4yNjZmZTQ5OWRhNDdhYWIwNWNiODkyZjZkOGM2NWQ3YjQ3MWMxODNjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTYtMTEtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgorCisgICAgICAgIEluZGV4ZWREQiAyLjA6IFN1cHBvcnQgSURCSW5kZXggZ2V0QWxsL2dldEFs
bEtleXMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODgwNjkzMz4gYW5kIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQyOTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJlc291cmNlcy9qcy10ZXN0LmpzOgorICAg
ICAgICAoYXJlT2JqZWN0c0VxdWFsKToKKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9pZGJpbmRleC1nZXRhbGwtMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1nZXRhbGwtMS1wcml2YXRlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4
LWdldGFsbC0xLXByaXZhdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbC0xLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1nZXRhbGxrZXlzLTEtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtZ2V0YWxs
a2V5cy0xLXByaXZhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtZ2V0YWxsa2V5cy0xLXByaXZhdGUuaHRtbDogQWRkZWQu
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbGtleXMt
MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3Vy
Y2VzL2lkYmluZGV4LWdldGFsbC0xLmpzOiBBZGRlZC4KKwogMjAxNi0xMS0wMSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFBlcmNlbnQtZW5j
b2RlIG5vbi1BU0NJSSBjb2RlIHBvaW50cyBpbiBob3N0cyBvZiBVUkxzIHdpdGggdW5yZWNvZ25p
emVkIHNjaGVtZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDVkNGVkZjRmYTE5
Njg1NWIxMTk0ODEzYjU3MWI5MTY5MjhjNDZmMGIuLjgxYzlhY2JjZTE3MTEwNGFiZmM0YzRmOThj
MDljMjM1NzkxZDcwMzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDE2LTExLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbmRleGVkREIgMi4wOiBTdXBwb3J0IElEQkluZGV4IGdldEFsbC9nZXRBbGxLZXlz
LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg4MDY5MzM+IGFuZCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lk
YmluZGV4X2dldEFsbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L0luZGV4ZWREQi9pZGJpbmRleF9nZXRBbGxLZXlzLWV4cGVjdGVkLnR4dDoKKwogMjAxNi0xMS0w
MSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFBlcmNlbnQtZW5jb2RlIG5vbi1BU0NJSSBjb2RlIHBvaW50cyBpbiBob3N0cyBvZiBVUkxzIHdp
dGggdW5yZWNvZ25pemVkIHNjaGVtZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYmluZGV4X2dldEFsbC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4
ZWREQi9pZGJpbmRleF9nZXRBbGwtZXhwZWN0ZWQudHh0CmluZGV4IGQ2NTUxYWE2N2I0ZmQ4N2Fi
MDcxODM1OTA5ZmUyZGFiOGFhMDNjNDUuLjNhYmUxOWJhOGE3ZDNlZjE5YmI3M2QwZjJhMDc2YWM1
NTRjMDYyZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvSW5kZXhlZERCL2lkYmluZGV4X2dldEFsbC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiaW5k
ZXhfZ2V0QWxsLWV4cGVjdGVkLnR4dApAQCAtMSwxNSArMSwxNSBAQAogCi1GQUlMIFNpbmdsZSBp
dGVtIGdldCBpbmRleC5nZXRBbGwgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnaW5kZXguZ2V0QWxs
KHJhbmdlLCBtYXhDb3VudCknLCAnaW5kZXguZ2V0QWxsJyBpcyB1bmRlZmluZWQpCi1GQUlMIEVt
cHR5IG9iamVjdCBzdG9yZSBpbmRleC5nZXRBbGwgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnaW5k
ZXguZ2V0QWxsKHJhbmdlLCBtYXhDb3VudCknLCAnaW5kZXguZ2V0QWxsJyBpcyB1bmRlZmluZWQp
Ci1GQUlMIEdldCBhbGwga2V5cyBpbmRleC5nZXRBbGwgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
aW5kZXguZ2V0QWxsKHJhbmdlLCBtYXhDb3VudCknLCAnaW5kZXguZ2V0QWxsJyBpcyB1bmRlZmlu
ZWQpCi1GQUlMIG1heENvdW50PTEwIGluZGV4LmdldEFsbCBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICdpbmRleC5nZXRBbGwocmFuZ2UsIG1heENvdW50KScsICdpbmRleC5nZXRBbGwnIGlzIHVuZGVm
aW5lZCkKLUZBSUwgR2V0IGJvdW5kIHJhbmdlIGluZGV4LmdldEFsbCBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICdpbmRleC5nZXRBbGwocmFuZ2UsIG1heENvdW50KScsICdpbmRleC5nZXRBbGwnIGlz
IHVuZGVmaW5lZCkKLUZBSUwgR2V0IGJvdW5kIHJhbmdlIHdpdGggbWF4Q291bnQgaW5kZXguZ2V0
QWxsIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2luZGV4LmdldEFsbChyYW5nZSwgbWF4Q291bnQp
JywgJ2luZGV4LmdldEFsbCcgaXMgdW5kZWZpbmVkKQotRkFJTCBHZXQgdXBwZXIgZXhjbHVkZWQg
aW5kZXguZ2V0QWxsIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2luZGV4LmdldEFsbChyYW5nZSwg
bWF4Q291bnQpJywgJ2luZGV4LmdldEFsbCcgaXMgdW5kZWZpbmVkKQotRkFJTCBHZXQgbG93ZXIg
ZXhjbHVkZWQgaW5kZXguZ2V0QWxsIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2luZGV4LmdldEFs
bChyYW5nZSwgbWF4Q291bnQpJywgJ2luZGV4LmdldEFsbCcgaXMgdW5kZWZpbmVkKQotRkFJTCBH
ZXQgYm91bmQgcmFuZ2UgKGdlbmVyYXRlZCkgd2l0aCBtYXhDb3VudCBpbmRleC5nZXRBbGwgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnaW5kZXguZ2V0QWxsKHJhbmdlLCBtYXhDb3VudCknLCAnaW5k
ZXguZ2V0QWxsJyBpcyB1bmRlZmluZWQpCi1GQUlMIE5vbiBleGlzdGVudCBrZXkgaW5kZXguZ2V0
QWxsIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2luZGV4LmdldEFsbChyYW5nZSwgbWF4Q291bnQp
JywgJ2luZGV4LmdldEFsbCcgaXMgdW5kZWZpbmVkKQotRkFJTCBtYXhDb3VudD0wIGluZGV4Lmdl
dEFsbCBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdpbmRleC5nZXRBbGwocmFuZ2UsIG1heENvdW50
KScsICdpbmRleC5nZXRBbGwnIGlzIHVuZGVmaW5lZCkKLUZBSUwgUmV0cmlldmUgbXVsdGlFbnRy
eSBrZXkgaW5kZXguZ2V0QWxsIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2luZGV4LmdldEFsbChy
YW5nZSwgbWF4Q291bnQpJywgJ2luZGV4LmdldEFsbCcgaXMgdW5kZWZpbmVkKQotRkFJTCBSZXRy
aWV2ZSBvbmUga2V5IG11bHRpcGxlIHZhbHVlcyBpbmRleC5nZXRBbGwgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnaW5kZXguZ2V0QWxsKHJhbmdlLCBtYXhDb3VudCknLCAnaW5kZXguZ2V0QWxsJyBp
cyB1bmRlZmluZWQpCitQQVNTIFNpbmdsZSBpdGVtIGdldCAKK1BBU1MgRW1wdHkgb2JqZWN0IHN0
b3JlIAorUEFTUyBHZXQgYWxsIGtleXMgCitQQVNTIG1heENvdW50PTEwIAorUEFTUyBHZXQgYm91
bmQgcmFuZ2UgCitQQVNTIEdldCBib3VuZCByYW5nZSB3aXRoIG1heENvdW50IAorUEFTUyBHZXQg
dXBwZXIgZXhjbHVkZWQgCitQQVNTIEdldCBsb3dlciBleGNsdWRlZCAKK1BBU1MgR2V0IGJvdW5k
IHJhbmdlIChnZW5lcmF0ZWQpIHdpdGggbWF4Q291bnQgCitQQVNTIE5vbiBleGlzdGVudCBrZXkg
CitQQVNTIG1heENvdW50PTAgCitQQVNTIFJldHJpZXZlIG11bHRpRW50cnkga2V5IAorUEFTUyBS
ZXRyaWV2ZSBvbmUga2V5IG11bHRpcGxlIHZhbHVlcyAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXhfZ2V0
QWxsS2V5cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL0luZGV4ZWREQi9pZGJpbmRleF9nZXRBbGxLZXlzLWV4cGVjdGVkLnR4dAppbmRl
eCA1YTkyYWMyYWE3MTNlMjY0NzVkOTliZjgzMGEwNmY4OWE2MjEwOTMzLi44NWE5MjhmNmNkYzI0
OTRmODkzOThiYzg5MTMwMjhlMWY4MmY1ZjEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJpbmRleF9nZXRBbGxLZXlz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL0luZGV4ZWREQi9pZGJpbmRleF9nZXRBbGxLZXlzLWV4cGVjdGVkLnR4dApAQCAtMSwx
NSArMSwxNSBAQAogCi1GQUlMIFNpbmdsZSBpdGVtIGdldCBpbmRleC5nZXRBbGxLZXlzIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ2luZGV4LmdldEFsbEtleXMocmFuZ2UsIG1heENvdW50KScsICdp
bmRleC5nZXRBbGxLZXlzJyBpcyB1bmRlZmluZWQpCi1GQUlMIEVtcHR5IG9iamVjdCBzdG9yZSBp
bmRleC5nZXRBbGxLZXlzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2luZGV4LmdldEFsbEtleXMo
cmFuZ2UsIG1heENvdW50KScsICdpbmRleC5nZXRBbGxLZXlzJyBpcyB1bmRlZmluZWQpCi1GQUlM
IEdldCBhbGwga2V5cyBpbmRleC5nZXRBbGxLZXlzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2lu
ZGV4LmdldEFsbEtleXMocmFuZ2UsIG1heENvdW50KScsICdpbmRleC5nZXRBbGxLZXlzJyBpcyB1
bmRlZmluZWQpCi1GQUlMIEdldCBhbGwgZ2VuZXJhdGVkIGtleXMgaW5kZXguZ2V0QWxsS2V5cyBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICdpbmRleC5nZXRBbGxLZXlzKHJhbmdlLCBtYXhDb3VudCkn
LCAnaW5kZXguZ2V0QWxsS2V5cycgaXMgdW5kZWZpbmVkKQotRkFJTCBtYXhDb3VudD0xMCBpbmRl
eC5nZXRBbGxLZXlzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2luZGV4LmdldEFsbEtleXMocmFu
Z2UsIG1heENvdW50KScsICdpbmRleC5nZXRBbGxLZXlzJyBpcyB1bmRlZmluZWQpCi1GQUlMIEdl
dCBib3VuZCByYW5nZSBpbmRleC5nZXRBbGxLZXlzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2lu
ZGV4LmdldEFsbEtleXMocmFuZ2UsIG1heENvdW50KScsICdpbmRleC5nZXRBbGxLZXlzJyBpcyB1
bmRlZmluZWQpCi1GQUlMIEdldCBib3VuZCByYW5nZSB3aXRoIG1heENvdW50IGluZGV4LmdldEFs
bEtleXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnaW5kZXguZ2V0QWxsS2V5cyhyYW5nZSwgbWF4
Q291bnQpJywgJ2luZGV4LmdldEFsbEtleXMnIGlzIHVuZGVmaW5lZCkKLUZBSUwgR2V0IHVwcGVy
IGV4Y2x1ZGVkIGluZGV4LmdldEFsbEtleXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnaW5kZXgu
Z2V0QWxsS2V5cyhyYW5nZSwgbWF4Q291bnQpJywgJ2luZGV4LmdldEFsbEtleXMnIGlzIHVuZGVm
aW5lZCkKLUZBSUwgR2V0IGxvd2VyIGV4Y2x1ZGVkIGluZGV4LmdldEFsbEtleXMgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnaW5kZXguZ2V0QWxsS2V5cyhyYW5nZSwgbWF4Q291bnQpJywgJ2luZGV4
LmdldEFsbEtleXMnIGlzIHVuZGVmaW5lZCkKLUZBSUwgR2V0IGJvdW5kIHJhbmdlIChnZW5lcmF0
ZWQpIHdpdGggbWF4Q291bnQgaW5kZXguZ2V0QWxsS2V5cyBpcyBub3QgYSBmdW5jdGlvbi4gKElu
ICdpbmRleC5nZXRBbGxLZXlzKHJhbmdlLCBtYXhDb3VudCknLCAnaW5kZXguZ2V0QWxsS2V5cycg
aXMgdW5kZWZpbmVkKQotRkFJTCBOb24gZXhpc3RlbnQga2V5IGluZGV4LmdldEFsbEtleXMgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnaW5kZXguZ2V0QWxsS2V5cyhyYW5nZSwgbWF4Q291bnQpJywg
J2luZGV4LmdldEFsbEtleXMnIGlzIHVuZGVmaW5lZCkKLUZBSUwgbWF4Q291bnQ9MCBpbmRleC5n
ZXRBbGxLZXlzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2luZGV4LmdldEFsbEtleXMocmFuZ2Us
IG1heENvdW50KScsICdpbmRleC5nZXRBbGxLZXlzJyBpcyB1bmRlZmluZWQpCi1GQUlMIFJldHJp
ZXZlIG11bHRpRW50cnkga2V5cyBpbmRleC5nZXRBbGxLZXlzIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ2luZGV4LmdldEFsbEtleXMocmFuZ2UsIG1heENvdW50KScsICdpbmRleC5nZXRBbGxLZXlz
JyBpcyB1bmRlZmluZWQpCitQQVNTIFNpbmdsZSBpdGVtIGdldCAKK1BBU1MgRW1wdHkgb2JqZWN0
IHN0b3JlIAorUEFTUyBHZXQgYWxsIGtleXMgCitQQVNTIEdldCBhbGwgZ2VuZXJhdGVkIGtleXMg
CitQQVNTIG1heENvdW50PTEwIAorUEFTUyBHZXQgYm91bmQgcmFuZ2UgCitQQVNTIEdldCBib3Vu
ZCByYW5nZSB3aXRoIG1heENvdW50IAorUEFTUyBHZXQgdXBwZXIgZXhjbHVkZWQgCitQQVNTIEdl
dCBsb3dlciBleGNsdWRlZCAKK1BBU1MgR2V0IGJvdW5kIHJhbmdlIChnZW5lcmF0ZWQpIHdpdGgg
bWF4Q291bnQgCitQQVNTIE5vbiBleGlzdGVudCBrZXkgCitQQVNTIG1heENvdW50PTAgCitQQVNT
IFJldHJpZXZlIG11bHRpRW50cnkga2V5cyAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVz
b3VyY2VzL2pzLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvanMtdGVzdC5qcwppbmRl
eCA0NTEyYTQyODcyYzA2ZDU4MGFmMTc3NzkzOTU1YWY1ZDU4OGVkMWY1Li5jOGM2NDAxOTMzYmMw
NTY1ODhmNjMyNWE2MzBlYzhjYzk1MWMzYWJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNv
dXJjZXMvanMtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvanMtdGVzdC5qcwpA
QCAtNzExLDYgKzcxMSwzNCBAQCBmdW5jdGlvbiBmaW5pc2hKU1Rlc3QoKQogICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAorZnVuY3Rpb24gYXJlT2JqZWN0c0VxdWFsKGEsIGIp
IHsKKwlmb3IgKHZhciBwcm9wZXJ0eSBpbiBhKSB7CisJCWlmICghYi5oYXNPd25Qcm9wZXJ0eShw
cm9wZXJ0eSkpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJc3dpdGNoICh0eXBlb2YgKGFbcHJvcGVy
dHldKSkgeworCQljYXNlICdmdW5jdGlvbic6CisJCQlpZiAodHlwZW9mIGJbcHJvcGVydHldID09
ICd1bmRlZmluZWQnIHx8IGFbcHJvcGVydHldLnRvU3RyaW5nKCkgIT0gYltwcm9wZXJ0eV0udG9T
dHJpbmcoKSkKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQlicmVhazsKKwkJY2FzZSAnb2JqZWN0JzoK
KwkJCWlmICghYXJlT2JqZWN0c0VxdWFsKGEsIGIpKQorCQkJCXJldHVybiBmYWxzZTsKKwkJCWJy
ZWFrOworCQlkZWZhdWx0OgorCQkJaWYgKGFbcHJvcGVydHldICE9IGJbcHJvcGVydHldKQorCQkJ
CXJldHVybiBmYWxzZTsKKwkJfQorCX0KKyAKKwlmb3IgKHZhciBwcm9wZXJ0eSBpbiBiKSB7CisJ
CWlmICghYS5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpCisJCQlyZXR1cm4gZmFsc2U7CisJfQor
CQorCXJldHVybiB0cnVlOworfTsKKwogZnVuY3Rpb24gc3RhcnRXb3JrZXIodGVzdFNjcmlwdFVS
TCkKIHsKICAgICBzZWxmLmpzVGVzdElzQXN5bmMgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbC0xLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1nZXRh
bGwtMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWQ4OTEwMzBmOTFmMTk4N2VmNzk0NDIzYzhh
NTA3YWI4YmQzZjk5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9pZGJpbmRleC1nZXRhbGwtMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0
MiBAQAorVGVzdCBJREJJbmRleC5nZXRBbGwoKQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFT
UzogR29vZCBpbmRleCBjb3VudAorUEFTUzogR290IGFuIGFycmF5IG9iamVjdAorUEFTUzogQ29y
cmVjdCBsZW5ndGgKK1BBU1M6IENvcnJlY3QgdmFsdWUKK1BBU1M6IENvcnJlY3QgdmFsdWUKK1BB
U1M6IEdvdCBhbiBhcnJheSBvYmplY3QKK1BBU1M6IENvcnJlY3QgbGVuZ3RoCitQQVNTOiBDb3Jy
ZWN0IHZhbHVlCitQQVNTOiBDb3JyZWN0IHZhbHVlCitQQVNTOiBHb3QgYW4gYXJyYXkgb2JqZWN0
CitQQVNTOiBDb3JyZWN0IGxlbmd0aAorUEFTUzogQ29ycmVjdCB2YWx1ZQorUEFTUzogQ29ycmVj
dCB2YWx1ZQorUEFTUzogR290IGFuIGFycmF5IG9iamVjdAorUEFTUzogQ29ycmVjdCBsZW5ndGgK
K1BBU1M6IENvcnJlY3QgdmFsdWUKK1BBU1M6IENvcnJlY3QgdmFsdWUKK1BBU1M6IEdvdCBhbiBh
cnJheSBvYmplY3QKK1BBU1M6IENvcnJlY3QgbGVuZ3RoCitQQVNTOiBDb3JyZWN0IHZhbHVlCitQ
QVNTOiBDb3JyZWN0IHZhbHVlCitQQVNTOiBDb3JyZWN0IHZhbHVlCitQQVNTOiBDb3JyZWN0IHZh
bHVlCitQQVNTOiBDb3JyZWN0IHZhbHVlCitQQVNTOiBDb3JyZWN0IHZhbHVlCitQQVNTOiBHb3Qg
YW4gYXJyYXkgb2JqZWN0CitQQVNTOiBDb3JyZWN0IGxlbmd0aAorUEFTUzogQ29ycmVjdCB2YWx1
ZQorUEFTUzogQ29ycmVjdCB2YWx1ZQorUEFTUzogQ29ycmVjdCB2YWx1ZQorUEFTUzogQ29ycmVj
dCB2YWx1ZQorUEFTUzogR290IGFuIGFycmF5IG9iamVjdAorUEFTUzogQ29ycmVjdCBsZW5ndGgK
K1BBU1M6IENvcnJlY3QgdmFsdWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbC0xLXByaXZhdGUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbC0xLXBy
aXZhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkODkxMDMwZjkxZjE5ODdlZjc5NDQyM2M4
YTUwN2FiOGJkM2Y5OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtZ2V0YWxsLTEtcHJpdmF0ZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0MiBAQAorVGVzdCBJREJJbmRleC5nZXRBbGwoKQorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorUEFTUzogR29vZCBpbmRleCBjb3VudAorUEFTUzogR290IGFuIGFycmF5IG9iamVjdAor
UEFTUzogQ29ycmVjdCBsZW5ndGgKK1BBU1M6IENvcnJlY3QgdmFsdWUKK1BBU1M6IENvcnJlY3Qg
dmFsdWUKK1BBU1M6IEdvdCBhbiBhcnJheSBvYmplY3QKK1BBU1M6IENvcnJlY3QgbGVuZ3RoCitQ
QVNTOiBDb3JyZWN0IHZhbHVlCitQQVNTOiBDb3JyZWN0IHZhbHVlCitQQVNTOiBHb3QgYW4gYXJy
YXkgb2JqZWN0CitQQVNTOiBDb3JyZWN0IGxlbmd0aAorUEFTUzogQ29ycmVjdCB2YWx1ZQorUEFT
UzogQ29ycmVjdCB2YWx1ZQorUEFTUzogR290IGFuIGFycmF5IG9iamVjdAorUEFTUzogQ29ycmVj
dCBsZW5ndGgKK1BBU1M6IENvcnJlY3QgdmFsdWUKK1BBU1M6IENvcnJlY3QgdmFsdWUKK1BBU1M6
IEdvdCBhbiBhcnJheSBvYmplY3QKK1BBU1M6IENvcnJlY3QgbGVuZ3RoCitQQVNTOiBDb3JyZWN0
IHZhbHVlCitQQVNTOiBDb3JyZWN0IHZhbHVlCitQQVNTOiBDb3JyZWN0IHZhbHVlCitQQVNTOiBD
b3JyZWN0IHZhbHVlCitQQVNTOiBDb3JyZWN0IHZhbHVlCitQQVNTOiBDb3JyZWN0IHZhbHVlCitQ
QVNTOiBHb3QgYW4gYXJyYXkgb2JqZWN0CitQQVNTOiBDb3JyZWN0IGxlbmd0aAorUEFTUzogQ29y
cmVjdCB2YWx1ZQorUEFTUzogQ29ycmVjdCB2YWx1ZQorUEFTUzogQ29ycmVjdCB2YWx1ZQorUEFT
UzogQ29ycmVjdCB2YWx1ZQorUEFTUzogR290IGFuIGFycmF5IG9iamVjdAorUEFTUzogQ29ycmVj
dCBsZW5ndGgKK1BBU1M6IENvcnJlY3QgdmFsdWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbC0xLXByaXZhdGUuaHRtbCBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1nZXRhbGwtMS1w
cml2YXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzIwZWJlOWE1ZWRkZmQyMGE1MTZjZjJlNDkyNTEwNjE5
OGM3NGI5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9pZGJpbmRleC1nZXRhbGwtMS1wcml2YXRlLmh0bWwKQEAgLTAsMCArMSwxMyBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitlbmFibGVQcml2YXRlQnJvd3NpbmcgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvaWRiaW5kZXgtZ2V0YWxs
LTEuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbC0xLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtZ2V0YWxsLTEuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hNTA5YjBlNGUyMzlmNTJlOTJhOWYxMzI3YmI3N2VjYzRhZDg4ODYzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmlu
ZGV4LWdldGFsbC0xLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KworPHNjcmlwdCBzcmM9InJlc291cmNlcy9pZGJpbmRleC1nZXRhbGwtMS5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtZ2V0YWxsa2V5cy0xLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1nZXRhbGxrZXlzLTEtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgzY2E0NDU3NzUzMDM0NDE5MzEyOTdkYjIyMDEzYmEyOTZhMWFl
YmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vaWRiaW5kZXgtZ2V0YWxsa2V5cy0xLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQyIEBACitU
ZXN0IElEQkluZGV4LmdldEFsbCgpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitQQVNTOiBHb29k
IGluZGV4IGNvdW50CitQQVNTOiBHb3QgYW4gYXJyYXkgb2JqZWN0CitQQVNTOiBDb3JyZWN0IGxl
bmd0aAorUEFTUzogQ29ycmVjdCBrZXkKK1BBU1M6IENvcnJlY3Qga2V5CitQQVNTOiBHb3QgYW4g
YXJyYXkgb2JqZWN0CitQQVNTOiBDb3JyZWN0IGxlbmd0aAorUEFTUzogQ29ycmVjdCBrZXkKK1BB
U1M6IENvcnJlY3Qga2V5CitQQVNTOiBHb3QgYW4gYXJyYXkgb2JqZWN0CitQQVNTOiBDb3JyZWN0
IGxlbmd0aAorUEFTUzogQ29ycmVjdCBrZXkKK1BBU1M6IENvcnJlY3Qga2V5CitQQVNTOiBHb3Qg
YW4gYXJyYXkgb2JqZWN0CitQQVNTOiBDb3JyZWN0IGxlbmd0aAorUEFTUzogQ29ycmVjdCBrZXkK
K1BBU1M6IENvcnJlY3Qga2V5CitQQVNTOiBHb3QgYW4gYXJyYXkgb2JqZWN0CitQQVNTOiBDb3Jy
ZWN0IGxlbmd0aAorUEFTUzogQ29ycmVjdCBrZXkKK1BBU1M6IENvcnJlY3Qga2V5CitQQVNTOiBD
b3JyZWN0IGtleQorUEFTUzogQ29ycmVjdCBrZXkKK1BBU1M6IENvcnJlY3Qga2V5CitQQVNTOiBD
b3JyZWN0IGtleQorUEFTUzogR290IGFuIGFycmF5IG9iamVjdAorUEFTUzogQ29ycmVjdCBsZW5n
dGgKK1BBU1M6IENvcnJlY3Qga2V5CitQQVNTOiBDb3JyZWN0IGtleQorUEFTUzogQ29ycmVjdCBr
ZXkKK1BBU1M6IENvcnJlY3Qga2V5CitQQVNTOiBHb3QgYW4gYXJyYXkgb2JqZWN0CitQQVNTOiBD
b3JyZWN0IGxlbmd0aAorUEFTUzogQ29ycmVjdCBrZXkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbGtleXMtMS1wcml2YXRl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJp
bmRleC1nZXRhbGxrZXlzLTEtcHJpdmF0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODNjYTQ0
NTc3NTMwMzQ0MTkzMTI5N2RiMjIwMTNiYTI5NmExYWViYwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRleC1nZXRhbGxrZXlzLTEt
cHJpdmF0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MiBAQAorVGVzdCBJREJJbmRleC5nZXRB
bGwoKQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUzogR29vZCBpbmRleCBjb3VudAorUEFT
UzogR290IGFuIGFycmF5IG9iamVjdAorUEFTUzogQ29ycmVjdCBsZW5ndGgKK1BBU1M6IENvcnJl
Y3Qga2V5CitQQVNTOiBDb3JyZWN0IGtleQorUEFTUzogR290IGFuIGFycmF5IG9iamVjdAorUEFT
UzogQ29ycmVjdCBsZW5ndGgKK1BBU1M6IENvcnJlY3Qga2V5CitQQVNTOiBDb3JyZWN0IGtleQor
UEFTUzogR290IGFuIGFycmF5IG9iamVjdAorUEFTUzogQ29ycmVjdCBsZW5ndGgKK1BBU1M6IENv
cnJlY3Qga2V5CitQQVNTOiBDb3JyZWN0IGtleQorUEFTUzogR290IGFuIGFycmF5IG9iamVjdAor
UEFTUzogQ29ycmVjdCBsZW5ndGgKK1BBU1M6IENvcnJlY3Qga2V5CitQQVNTOiBDb3JyZWN0IGtl
eQorUEFTUzogR290IGFuIGFycmF5IG9iamVjdAorUEFTUzogQ29ycmVjdCBsZW5ndGgKK1BBU1M6
IENvcnJlY3Qga2V5CitQQVNTOiBDb3JyZWN0IGtleQorUEFTUzogQ29ycmVjdCBrZXkKK1BBU1M6
IENvcnJlY3Qga2V5CitQQVNTOiBDb3JyZWN0IGtleQorUEFTUzogQ29ycmVjdCBrZXkKK1BBU1M6
IEdvdCBhbiBhcnJheSBvYmplY3QKK1BBU1M6IENvcnJlY3QgbGVuZ3RoCitQQVNTOiBDb3JyZWN0
IGtleQorUEFTUzogQ29ycmVjdCBrZXkKK1BBU1M6IENvcnJlY3Qga2V5CitQQVNTOiBDb3JyZWN0
IGtleQorUEFTUzogR290IGFuIGFycmF5IG9iamVjdAorUEFTUzogQ29ycmVjdCBsZW5ndGgKK1BB
U1M6IENvcnJlY3Qga2V5CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9pZGJpbmRleC1nZXRhbGxrZXlzLTEtcHJpdmF0ZS5odG1sIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbGtleXMtMS1wcml2YXRl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTdmYmYyOTQxOGFkOTMyYTYzYTYzNjY5MDAyYzAwMzRmOGFkZmNm
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pZGJpbmRleC1nZXRhbGxrZXlzLTEtcHJpdmF0ZS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZW5hYmxlUHJpdmF0ZUJyb3dzaW5nID0gdHJ1ZTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2lkYmluZGV4LWdldGFsbGtl
eXMtMS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtZ2V0YWxsa2V5cy0xLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtZ2V0YWxsa2V5
cy0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTgzNTg3NDY4NTRhZGY4MjVhNWY5ZWZkM2UyZWJmOWYwOTM0
NTc2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9pZGJpbmRleC1nZXRhbGxrZXlzLTEuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2lkYmluZGV4LWdldGFsbGtl
eXMtMS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2lkYmluZGV4LWdldGFsbC0x
LmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pZGJp
bmRleC1nZXRhbGwtMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNGQzY2MzODI5MTczZmMxNTNmNjVhYjliOTgy
MDI2ZmVjNmExZTNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL3Jlc291cmNlcy9pZGJpbmRleC1nZXRhbGwtMS5qcwpAQCAtMCwwICsxLDE5
NiBAQAorLy8gQWRhcHRlZCBmcm9tIGEgTW96aWxsYSB0ZXN0IHBsYWNlZCBpbiB0aGUgcHVibGlj
IGRvbWFpbi4KKy8vIFRha2VuIGZyb20gZ2l0IHJlcG9zaXRvcnkgaHR0cHM6Ly9naXRodWIuY29t
L21vemlsbGEvZ2Vja28tZGV2LmdpdCBhbmQgdGhlIHBhdGggLi9kb20vaW5kZXhlZERCL3Rlc3Qv
dW5pdC90ZXN0X2luZGV4X2dldEFsbC5qcworCitkZXNjcmlwdGlvbigiVGVzdCBJREJJbmRleC5n
ZXRBbGwoKSIpOworCitmdW5jdGlvbiBjb250aW51ZVdpdGhFdmVudChldmVudCkKK3sKKyAgICB0
ZXN0R2VuZXJhdG9yLm5leHQoZXZlbnQpOworfQorCitmdW5jdGlvbiBsb2cobXNnKQoreworCWRv
Y3VtZW50LmJvZHkuaW5uZXJIVE1MICs9IG1zZyArICI8YnI+IjsKK30KKworZnVuY3Rpb24gaXMo
YSwgYiwgcGFzcykKK3sKKyAgICBpZiAoYXJlT2JqZWN0c0VxdWFsKGEsIGIpKQorICAgICAgICBs
b2coIlBBU1M6ICIgKyBwYXNzKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTDogIiArIGEg
KyAiIHNob3VsZCBiZSAiICsgYiArICIgYnV0IGlzIG5vdC4iKTsKK30KKworZnVuY3Rpb24qIHRl
c3RTdGVwcygpCit7CisgICAgY29uc3QgbmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsK
KyAgICBjb25zdCBvYmplY3RTdG9yZU5hbWUgPSAiUGVvcGxlIjsKKworICAgIGxldCBvYmplY3RT
dG9yZURhdGEgPSBbCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzIiLCB2YWx1ZTogeyBuYW1l
OiAiQm9iIiwgaGVpZ2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAorICAgICAgICB7IGtleTogIjIz
Ny0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTogIkFubiIsIGhlaWdodDogNTIsIHdlaWdodDogMTEw
IH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24i
LCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3
MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9LAor
ICAgICAgICB7IGtleTogIjIzNy0yMy03NzM2IiwgdmFsdWU6IHsgbmFtZTogIkpvZSIsIGhlaWdo
dDogNjUsIHdlaWdodDogMTUwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNyIsIHZh
bHVlOiB7IG5hbWU6ICJQYXQiLCBoZWlnaHQ6IDY1IH0gfQorICAgIF07CisKKyAgICBsZXQgaW5k
ZXhEYXRhID0gWworICAgICAgICB7IG5hbWU6ICJuYW1lIiwga2V5UGF0aDogIm5hbWUiLCBvcHRp
b25zOiB7IHVuaXF1ZTogdHJ1ZSB9IH0sCisgICAgICAgIHsgbmFtZTogImhlaWdodCIsIGtleVBh
dGg6ICJoZWlnaHQiLCBvcHRpb25zOiB7IHVuaXF1ZTogZmFsc2UgfSB9LAorICAgICAgICB7IG5h
bWU6ICJ3ZWlnaHQiLCBrZXlQYXRoOiAid2VpZ2h0Iiwgb3B0aW9uczogeyB1bmlxdWU6IGZhbHNl
IH0gfQorICAgIF07CisKKyAgICBsZXQgb2JqZWN0U3RvcmVEYXRhTmFtZVNvcnQgPSBbCisgICAg
ICAgIHsga2V5OiAiMjM3LTIzLTc3MzMiLCB2YWx1ZTogeyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1
Miwgd2VpZ2h0OiAxMTAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzMyIiwgdmFsdWU6
IHsgbmFtZTogIkJvYiIsIGhlaWdodDogNjAsIHdlaWdodDogMTIwIH0gfSwKKyAgICAgICAgeyBr
ZXk6ICIyMzctMjMtNzczNiIsIHZhbHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWln
aHQ6IDE1MCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzciLCB2YWx1ZTogeyBuYW1l
OiAiUGF0IiwgaGVpZ2h0OiA2NSB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzQiLCB2
YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3Mywgd2VpZ2h0OiAxODAgfSB9LAorICAgICAg
ICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDogNTgs
IHdlaWdodDogMTMwIH0gfQorICAgIF07CisKKyAgICBsZXQgb2JqZWN0U3RvcmVEYXRhV2VpZ2h0
U29ydCA9IFsKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJB
bm4iLCBoZWlnaHQ6IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIz
LTc3MzIiLCB2YWx1ZTogeyBuYW1lOiAiQm9iIiwgaGVpZ2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9
LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhl
aWdodDogNTgsIHdlaWdodDogMTMwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNiIs
IHZhbHVlOiB7IG5hbWU6ICJKb2UiLCBoZWlnaHQ6IDY1LCB3ZWlnaHQ6IDE1MCB9IH0sCisgICAg
ICAgIHsga2V5OiAiMjM3LTIzLTc3MzQiLCB2YWx1ZTogeyBuYW1lOiAiUm9uIiwgaGVpZ2h0OiA3
Mywgd2VpZ2h0OiAxODAgfSB9CisgICAgXTsKKworICAgIGxldCBvYmplY3RTdG9yZURhdGFIZWln
aHRTb3J0ID0gWworICAgICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTog
IkFubiIsIGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzct
MjMtNzczNSIsIHZhbHVlOiB7IG5hbWU6ICJTdWUiLCBoZWlnaHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9
IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzIiLCB2YWx1ZTogeyBuYW1lOiAiQm9iIiwg
aGVpZ2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM2
IiwgdmFsdWU6IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwKKyAg
ICAgICAgeyBrZXk6ICIyMzctMjMtNzczNyIsIHZhbHVlOiB7IG5hbWU6ICJQYXQiLCBoZWlnaHQ6
IDY1IH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6ICJS
b24iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4MCB9IH0KKyAgICBdOworCQorICAgIGxldCByZXF1
ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKG5hbWUpOworCXJlcXVlc3Qub25lcnJvciA9
IGZpbmlzaEpTVGVzdDsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNvbnRpbnVlV2l0aEV2ZW50
OworICAgIGV2ZW50ID0geWllbGQ7CisKKyAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4obmFt
ZSwgMSk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gZmluaXNoSlNUZXN0OworICAgIHJlcXVlc3Qu
b251cGdyYWRlbmVlZGVkID0gY29udGludWVXaXRoRXZlbnQ7CisgICAgZXZlbnQgPSB5aWVsZDsK
KworICAgIGxldCBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisJZXZlbnQudGFyZ2V0LnRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSBjb250aW51ZVdpdGhFdmVudDsKKyAgICBsZXQgb2JqZWN0U3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOworCisgICAgLy8gRmly
c3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8gdGhlIG9iamVjdCBzdG9yZS4KKyAgICBsZXQgYWRkZWRE
YXRhID0gMDsKKyAgICBmb3IgKGxldCBpIGluIG9iamVjdFN0b3JlRGF0YSkgeworICAgICAgICBy
ZXF1ZXN0ID0gb2JqZWN0U3RvcmUuYWRkKG9iamVjdFN0b3JlRGF0YVtpXS52YWx1ZSwgb2JqZWN0
U3RvcmVEYXRhW2ldLmtleSk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZpbmlzaEpTVGVz
dDsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAg
ICAgICAgaWYgKCsrYWRkZWREYXRhID09IG9iamVjdFN0b3JlRGF0YS5sZW5ndGgpIHsKKyAgICAg
ICAgICAgICAgICB0ZXN0R2VuZXJhdG9yLm5leHQoZXZlbnQpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIHlpZWxkOworCisgICAgLy8gTm93IGNyZWF0ZSB0aGUgaW5kZXhl
cy4KKyAgICBmb3IgKGxldCBpIGluIGluZGV4RGF0YSkgeworICAgICAgICBvYmplY3RTdG9yZS5j
cmVhdGVJbmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4
RGF0YVtpXS5vcHRpb25zKTsKKyAgICB9CisKKyAgICBpcyhvYmplY3RTdG9yZS5pbmRleE5hbWVz
Lmxlbmd0aCwgaW5kZXhEYXRhLmxlbmd0aCwgIkdvb2QgaW5kZXggY291bnQiKTsKKyAgICB5aWVs
ZDsgLy8gQ29tcGxldGlvbiBvZiB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbgorCisgICAgb2Jq
ZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbihvYmplY3RTdG9yZU5hbWUpLm9iamVjdFN0b3JlKG9i
amVjdFN0b3JlTmFtZSk7CisgICAgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCJoZWlnaHQi
KS5nZXRBbGwoNjUpOworICAgIHJlcXVlc3Qub25lcnJvciA9IGZpbmlzaEpTVGVzdDsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGNvbnRpbnVlV2l0aEV2ZW50OworCQorICAgIGV2ZW50ID0geWll
bGQ7CisKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0IGluc3RhbmNlb2YgQXJyYXksIHRydWUs
ICJHb3QgYW4gYXJyYXkgb2JqZWN0Iik7CisgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdC5sZW5n
dGgsIDIsICJDb3JyZWN0IGxlbmd0aCIpOworCisgICAgZm9yIChsZXQgaSBpbiBldmVudC50YXJn
ZXQucmVzdWx0KSB7CisgICAgICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHRbaV0sIG9iamVjdFN0
b3JlRGF0YUhlaWdodFNvcnRbcGFyc2VJbnQoaSkgKyAzXS52YWx1ZSwgIkNvcnJlY3QgdmFsdWUi
KTsKKyAgICB9CisKKyAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoImhlaWdodCIpLmdl
dEFsbCg2NSwgMCk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gZmluaXNoSlNUZXN0OworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY29udGludWVXaXRoRXZlbnQ7CisgICAgZXZlbnQgPSB5aWVsZDsK
KworICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHQgaW5zdGFuY2VvZiBBcnJheSwgdHJ1ZSwgIkdv
dCBhbiBhcnJheSBvYmplY3QiKTsKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0Lmxlbmd0aCwg
MiwgIkNvcnJlY3QgbGVuZ3RoIik7CisKKyAgICBmb3IgKGxldCBpIGluIGV2ZW50LnRhcmdldC5y
ZXN1bHQpIHsKKyAgICAgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdFtpXSwgb2JqZWN0U3RvcmVE
YXRhSGVpZ2h0U29ydFtwYXJzZUludChpKSArIDNdLnZhbHVlLCAiQ29ycmVjdCB2YWx1ZSIpOwor
ICAgIH0KKworICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgiaGVpZ2h0IikuZ2V0QWxs
KDY1LCBudWxsKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmaW5pc2hKU1Rlc3Q7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBjb250aW51ZVdpdGhFdmVudDsKKyAgICBldmVudCA9IHlpZWxkOwor
CisgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdCBpbnN0YW5jZW9mIEFycmF5LCB0cnVlLCAiR290
IGFuIGFycmF5IG9iamVjdCIpOworICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHQubGVuZ3RoLCAy
LCAiQ29ycmVjdCBsZW5ndGgiKTsKKworICAgIGZvciAobGV0IGkgaW4gZXZlbnQudGFyZ2V0LnJl
c3VsdCkgeworICAgICAgICBpcyhldmVudC50YXJnZXQucmVzdWx0W2ldLCBvYmplY3RTdG9yZURh
dGFIZWlnaHRTb3J0W3BhcnNlSW50KGkpICsgM10udmFsdWUsICJDb3JyZWN0IHZhbHVlIik7Cisg
ICAgfQorCisgICAgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCJoZWlnaHQiKS5nZXRBbGwo
NjUsIHVuZGVmaW5lZCk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gZmluaXNoSlNUZXN0OworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gY29udGludWVXaXRoRXZlbnQ7CisgICAgZXZlbnQgPSB5aWVs
ZDsKKworICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHQgaW5zdGFuY2VvZiBBcnJheSwgdHJ1ZSwg
IkdvdCBhbiBhcnJheSBvYmplY3QiKTsKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0Lmxlbmd0
aCwgMiwgIkNvcnJlY3QgbGVuZ3RoIik7CisKKyAgICBmb3IgKGxldCBpIGluIGV2ZW50LnRhcmdl
dC5yZXN1bHQpIHsKKyAgICAgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdFtpXSwgb2JqZWN0U3Rv
cmVEYXRhSGVpZ2h0U29ydFtwYXJzZUludChpKSArIDNdLnZhbHVlLCAiQ29ycmVjdCB2YWx1ZSIp
OworICAgIH0KKworICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgiaGVpZ2h0IikuZ2V0
QWxsKCk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gZmluaXNoSlNUZXN0OworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gY29udGludWVXaXRoRXZlbnQ7CisgICAgZXZlbnQgPSB5aWVsZDsKKworICAg
IGlzKGV2ZW50LnRhcmdldC5yZXN1bHQgaW5zdGFuY2VvZiBBcnJheSwgdHJ1ZSwgIkdvdCBhbiBh
cnJheSBvYmplY3QiKTsKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0Lmxlbmd0aCwgb2JqZWN0
U3RvcmVEYXRhSGVpZ2h0U29ydC5sZW5ndGgsICJDb3JyZWN0IGxlbmd0aCIpOworCisgICAgZm9y
IChsZXQgaSBpbiBldmVudC50YXJnZXQucmVzdWx0KSB7CisgICAgICAgIGlzKGV2ZW50LnRhcmdl
dC5yZXN1bHRbaV0sIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRbaV0udmFsdWUsICJDb3JyZWN0
IHZhbHVlIik7CisgICAgfQorCisgICAgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCJoZWln
aHQiKS5nZXRBbGwobnVsbCwgNCk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gZmluaXNoSlNUZXN0
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY29udGludWVXaXRoRXZlbnQ7CisgICAgZXZlbnQg
PSB5aWVsZDsKKworICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHQgaW5zdGFuY2VvZiBBcnJheSwg
dHJ1ZSwgIkdvdCBhbiBhcnJheSBvYmplY3QiKTsKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0
Lmxlbmd0aCwgNCwgIkNvcnJlY3QgbGVuZ3RoIik7CisKKyAgICBmb3IgKGxldCBpIGluIGV2ZW50
LnRhcmdldC5yZXN1bHQpIHsKKyAgICAgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdFtpXSwgb2Jq
ZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtpXS52YWx1ZSwgIkNvcnJlY3QgdmFsdWUiKTsKKyAgICB9
CisKKyAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoImhlaWdodCIpLmdldEFsbCg2NSwg
MSk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gZmluaXNoSlNUZXN0OworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gY29udGludWVXaXRoRXZlbnQ7CisgICAgZXZlbnQgPSB5aWVsZDsKKworICAgIGlz
KGV2ZW50LnRhcmdldC5yZXN1bHQgaW5zdGFuY2VvZiBBcnJheSwgdHJ1ZSwgIkdvdCBhbiBhcnJh
eSBvYmplY3QiKTsKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0Lmxlbmd0aCwgMSwgIkNvcnJl
Y3QgbGVuZ3RoIik7CisKKyAgICBmb3IgKGxldCBpIGluIGV2ZW50LnRhcmdldC5yZXN1bHQpIHsK
KyAgICAgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdFtpXSwgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0
U29ydFtwYXJzZUludChpKSArIDNdLnZhbHVlLCAiQ29ycmVjdCB2YWx1ZSIpOworICAgIH0KKwor
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgIHlpZWxkOworfQorCit2YXIgdGVzdEdlbmVyYXRvciA9
IHRlc3RTdGVwcygpOwordGVzdEdlbmVyYXRvci5uZXh0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2lkYmluZGV4LWdldGFsbGtl
eXMtMS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9yZXNvdXJjZXMv
aWRiaW5kZXgtZ2V0YWxsa2V5cy0xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjMWQ2MTA4NGMwNGExNGI5NTc3
ZWMwMjE2OTBhNTYxZWY5ODExODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVzb3VyY2VzL2lkYmluZGV4LWdldGFsbGtleXMtMS5qcwpA
QCAtMCwwICsxLDE5NiBAQAorLy8gQWRhcHRlZCBmcm9tIGEgTW96aWxsYSB0ZXN0IHBsYWNlZCBp
biB0aGUgcHVibGljIGRvbWFpbi4KKy8vIFRha2VuIGZyb20gZ2l0IHJlcG9zaXRvcnkgaHR0cHM6
Ly9naXRodWIuY29tL21vemlsbGEvZ2Vja28tZGV2LmdpdCBhbmQgdGhlIHBhdGggLi9kb20vaW5k
ZXhlZERCL3Rlc3QvdW5pdC90ZXN0X2luZGV4X2dldEFsbEtleXMuanMKKworZGVzY3JpcHRpb24o
IlRlc3QgSURCSW5kZXguZ2V0QWxsKCkiKTsKKworZnVuY3Rpb24gY29udGludWVXaXRoRXZlbnQo
ZXZlbnQpCit7CisgICAgdGVzdEdlbmVyYXRvci5uZXh0KGV2ZW50KTsKK30KKworZnVuY3Rpb24g
bG9nKG1zZykKK3sKKwlkb2N1bWVudC5ib2R5LmlubmVySFRNTCArPSBtc2cgKyAiPGJyPiI7Cit9
CisKK2Z1bmN0aW9uIGlzKGEsIGIsIHBhc3MpCit7CisgICAgaWYgKGEgPT09IGIpCisgICAgICAg
IGxvZygiUEFTUzogIiArIHBhc3MpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCJGQUlMOiAiICsg
YSArICIgc2hvdWxkIGJlICIgKyBiICsgIiBidXQgaXMgbm90LiIpOworfQorCitmdW5jdGlvbiog
dGVzdFN0ZXBzKCkKK3sKKyAgICBjb25zdCBuYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1l
OworICAgIGNvbnN0IG9iamVjdFN0b3JlTmFtZSA9ICJQZW9wbGUiOworCisgICAgbGV0IG9iamVj
dFN0b3JlRGF0YSA9IFsKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMiIsIHZhbHVlOiB7IG5h
bWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0sCisgICAgICAgIHsga2V5OiAi
MjM3LTIzLTc3MzMiLCB2YWx1ZTogeyBuYW1lOiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAx
MTAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM0IiwgdmFsdWU6IHsgbmFtZTogIlJv
biIsIGhlaWdodDogNzMsIHdlaWdodDogMTgwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMt
NzczNSIsIHZhbHVlOiB7IG5hbWU6ICJTdWUiLCBoZWlnaHQ6IDU4LCB3ZWlnaHQ6IDEzMCB9IH0s
CisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVp
Z2h0OiA2NSwgd2VpZ2h0OiAxNTAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3Iiwg
dmFsdWU6IHsgbmFtZTogIlBhdCIsIGhlaWdodDogNjUgfSB9CisgICAgXTsKKworICAgIGxldCBp
bmRleERhdGEgPSBbCisgICAgICAgIHsgbmFtZTogIm5hbWUiLCBrZXlQYXRoOiAibmFtZSIsIG9w
dGlvbnM6IHsgdW5pcXVlOiB0cnVlIH0gfSwKKyAgICAgICAgeyBuYW1lOiAiaGVpZ2h0Iiwga2V5
UGF0aDogImhlaWdodCIsIG9wdGlvbnM6IHsgdW5pcXVlOiBmYWxzZSB9IH0sCisgICAgICAgIHsg
bmFtZTogIndlaWdodCIsIGtleVBhdGg6ICJ3ZWlnaHQiLCBvcHRpb25zOiB7IHVuaXF1ZTogZmFs
c2UgfSB9CisgICAgXTsKKworICAgIGxldCBvYmplY3RTdG9yZURhdGFOYW1lU29ydCA9IFsKKyAg
ICAgICAgeyBrZXk6ICIyMzctMjMtNzczMyIsIHZhbHVlOiB7IG5hbWU6ICJBbm4iLCBoZWlnaHQ6
IDUyLCB3ZWlnaHQ6IDExMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzIiLCB2YWx1
ZTogeyBuYW1lOiAiQm9iIiwgaGVpZ2h0OiA2MCwgd2VpZ2h0OiAxMjAgfSB9LAorICAgICAgICB7
IGtleTogIjIzNy0yMy03NzM2IiwgdmFsdWU6IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdl
aWdodDogMTUwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNyIsIHZhbHVlOiB7IG5h
bWU6ICJQYXQiLCBoZWlnaHQ6IDY1IH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczNCIs
IHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDE4MCB9IH0sCisgICAg
ICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwgaGVpZ2h0OiA1
OCwgd2VpZ2h0OiAxMzAgfSB9CisgICAgXTsKKworICAgIGxldCBvYmplY3RTdG9yZURhdGFXZWln
aHRTb3J0ID0gWworICAgICAgICB7IGtleTogIjIzNy0yMy03NzMzIiwgdmFsdWU6IHsgbmFtZTog
IkFubiIsIGhlaWdodDogNTIsIHdlaWdodDogMTEwIH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzct
MjMtNzczMiIsIHZhbHVlOiB7IG5hbWU6ICJCb2IiLCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9
IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzUiLCB2YWx1ZTogeyBuYW1lOiAiU3VlIiwg
aGVpZ2h0OiA1OCwgd2VpZ2h0OiAxMzAgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM2
IiwgdmFsdWU6IHsgbmFtZTogIkpvZSIsIGhlaWdodDogNjUsIHdlaWdodDogMTUwIH0gfSwKKyAg
ICAgICAgeyBrZXk6ICIyMzctMjMtNzczNCIsIHZhbHVlOiB7IG5hbWU6ICJSb24iLCBoZWlnaHQ6
IDczLCB3ZWlnaHQ6IDE4MCB9IH0KKyAgICBdOworCisgICAgbGV0IG9iamVjdFN0b3JlRGF0YUhl
aWdodFNvcnQgPSBbCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3MzMiLCB2YWx1ZTogeyBuYW1l
OiAiQW5uIiwgaGVpZ2h0OiA1Miwgd2VpZ2h0OiAxMTAgfSB9LAorICAgICAgICB7IGtleTogIjIz
Ny0yMy03NzM1IiwgdmFsdWU6IHsgbmFtZTogIlN1ZSIsIGhlaWdodDogNTgsIHdlaWdodDogMTMw
IH0gfSwKKyAgICAgICAgeyBrZXk6ICIyMzctMjMtNzczMiIsIHZhbHVlOiB7IG5hbWU6ICJCb2Ii
LCBoZWlnaHQ6IDYwLCB3ZWlnaHQ6IDEyMCB9IH0sCisgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3
MzYiLCB2YWx1ZTogeyBuYW1lOiAiSm9lIiwgaGVpZ2h0OiA2NSwgd2VpZ2h0OiAxNTAgfSB9LAor
ICAgICAgICB7IGtleTogIjIzNy0yMy03NzM3IiwgdmFsdWU6IHsgbmFtZTogIlBhdCIsIGhlaWdo
dDogNjUgfSB9LAorICAgICAgICB7IGtleTogIjIzNy0yMy03NzM0IiwgdmFsdWU6IHsgbmFtZTog
IlJvbiIsIGhlaWdodDogNzMsIHdlaWdodDogMTgwIH0gfQorICAgIF07CisJCisgICAgbGV0IHJl
cXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UobmFtZSk7CisJcmVxdWVzdC5vbmVycm9y
ID0gZmluaXNoSlNUZXN0OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY29udGludWVXaXRoRXZl
bnQ7CisgICAgZXZlbnQgPSB5aWVsZDsKKworICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3Blbihu
YW1lLCAxKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmaW5pc2hKU1Rlc3Q7CisgICAgcmVxdWVz
dC5vbnVwZ3JhZGVuZWVkZWQgPSBjb250aW51ZVdpdGhFdmVudDsKKyAgICBldmVudCA9IHlpZWxk
OworCisgICAgbGV0IGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKwlldmVudC50YXJnZXQudHJh
bnNhY3Rpb24ub25jb21wbGV0ZSA9IGNvbnRpbnVlV2l0aEV2ZW50OworICAgIGxldCBvYmplY3RT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSk7CisKKyAgICAvLyBG
aXJzdCwgYWRkIGFsbCBvdXIgZGF0YSB0byB0aGUgb2JqZWN0IHN0b3JlLgorICAgIGxldCBhZGRl
ZERhdGEgPSAwOworICAgIGZvciAobGV0IGkgaW4gb2JqZWN0U3RvcmVEYXRhKSB7CisgICAgICAg
IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5hZGQob2JqZWN0U3RvcmVEYXRhW2ldLnZhbHVlLCBvYmpl
Y3RTdG9yZURhdGFbaV0ua2V5KTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZmluaXNoSlNU
ZXN0OworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgICAgICBpZiAoKythZGRlZERhdGEgPT0gb2JqZWN0U3RvcmVEYXRhLmxlbmd0aCkgeworICAg
ICAgICAgICAgICAgIHRlc3RHZW5lcmF0b3IubmV4dChldmVudCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisgICAgeWllbGQ7CisKKyAgICAvLyBOb3cgY3JlYXRlIHRoZSBpbmRl
eGVzLgorICAgIGZvciAobGV0IGkgaW4gaW5kZXhEYXRhKSB7CisgICAgICAgIG9iamVjdFN0b3Jl
LmNyZWF0ZUluZGV4KGluZGV4RGF0YVtpXS5uYW1lLCBpbmRleERhdGFbaV0ua2V5UGF0aCwgaW5k
ZXhEYXRhW2ldLm9wdGlvbnMpOworICAgIH0KKworICAgIGlzKG9iamVjdFN0b3JlLmluZGV4TmFt
ZXMubGVuZ3RoLCBpbmRleERhdGEubGVuZ3RoLCAiR29vZCBpbmRleCBjb3VudCIpOworICAgIHlp
ZWxkOyAvLyBDb21wbGV0aW9uIG9mIHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uCisKKyAgICBv
YmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlTmFtZSkub2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmVOYW1lKTsKKyAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoImhlaWdo
dCIpLmdldEFsbEtleXMoNjUpOworICAgIHJlcXVlc3Qub25lcnJvciA9IGZpbmlzaEpTVGVzdDsK
KyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGNvbnRpbnVlV2l0aEV2ZW50OworCQorICAgIGV2ZW50
ID0geWllbGQ7CisKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0IGluc3RhbmNlb2YgQXJyYXks
IHRydWUsICJHb3QgYW4gYXJyYXkgb2JqZWN0Iik7CisgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3Vs
dC5sZW5ndGgsIDIsICJDb3JyZWN0IGxlbmd0aCIpOworCisgICAgZm9yIChsZXQgaSBpbiBldmVu
dC50YXJnZXQucmVzdWx0KSB7CisgICAgICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHRbaV0sIG9i
amVjdFN0b3JlRGF0YUhlaWdodFNvcnRbcGFyc2VJbnQoaSkgKyAzXS5rZXksICJDb3JyZWN0IGtl
eSIpOworICAgIH0KKworICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgiaGVpZ2h0Iiku
Z2V0QWxsS2V5cyg2NSwgMCk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gZmluaXNoSlNUZXN0Owor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY29udGludWVXaXRoRXZlbnQ7CisgICAgZXZlbnQgPSB5
aWVsZDsKKworICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHQgaW5zdGFuY2VvZiBBcnJheSwgdHJ1
ZSwgIkdvdCBhbiBhcnJheSBvYmplY3QiKTsKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0Lmxl
bmd0aCwgMiwgIkNvcnJlY3QgbGVuZ3RoIik7CisKKyAgICBmb3IgKGxldCBpIGluIGV2ZW50LnRh
cmdldC5yZXN1bHQpIHsKKyAgICAgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdFtpXSwgb2JqZWN0
U3RvcmVEYXRhSGVpZ2h0U29ydFtwYXJzZUludChpKSArIDNdLmtleSwgIkNvcnJlY3Qga2V5Iik7
CisgICAgfQorCisgICAgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCJoZWlnaHQiKS5nZXRB
bGxLZXlzKDY1LCBudWxsKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmaW5pc2hKU1Rlc3Q7Cisg
ICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjb250aW51ZVdpdGhFdmVudDsKKyAgICBldmVudCA9IHlp
ZWxkOworCisgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdCBpbnN0YW5jZW9mIEFycmF5LCB0cnVl
LCAiR290IGFuIGFycmF5IG9iamVjdCIpOworICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHQubGVu
Z3RoLCAyLCAiQ29ycmVjdCBsZW5ndGgiKTsKKworICAgIGZvciAobGV0IGkgaW4gZXZlbnQudGFy
Z2V0LnJlc3VsdCkgeworICAgICAgICBpcyhldmVudC50YXJnZXQucmVzdWx0W2ldLCBvYmplY3RT
dG9yZURhdGFIZWlnaHRTb3J0W3BhcnNlSW50KGkpICsgM10ua2V5LCAiQ29ycmVjdCBrZXkiKTsK
KyAgICB9CisKKyAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoImhlaWdodCIpLmdldEFs
bEtleXMoNjUsIHVuZGVmaW5lZCk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gZmluaXNoSlNUZXN0
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY29udGludWVXaXRoRXZlbnQ7CisgICAgZXZlbnQg
PSB5aWVsZDsKKworICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHQgaW5zdGFuY2VvZiBBcnJheSwg
dHJ1ZSwgIkdvdCBhbiBhcnJheSBvYmplY3QiKTsKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0
Lmxlbmd0aCwgMiwgIkNvcnJlY3QgbGVuZ3RoIik7CisKKyAgICBmb3IgKGxldCBpIGluIGV2ZW50
LnRhcmdldC5yZXN1bHQpIHsKKyAgICAgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdFtpXSwgb2Jq
ZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtwYXJzZUludChpKSArIDNdLmtleSwgIkNvcnJlY3Qga2V5
Iik7CisgICAgfQorCisgICAgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmluZGV4KCJoZWlnaHQiKS5n
ZXRBbGxLZXlzKCk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gZmluaXNoSlNUZXN0OworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gY29udGludWVXaXRoRXZlbnQ7CisgICAgZXZlbnQgPSB5aWVsZDsK
KworICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHQgaW5zdGFuY2VvZiBBcnJheSwgdHJ1ZSwgIkdv
dCBhbiBhcnJheSBvYmplY3QiKTsKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0Lmxlbmd0aCwg
b2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydC5sZW5ndGgsICJDb3JyZWN0IGxlbmd0aCIpOworCisg
ICAgZm9yIChsZXQgaSBpbiBldmVudC50YXJnZXQucmVzdWx0KSB7CisgICAgICAgIGlzKGV2ZW50
LnRhcmdldC5yZXN1bHRbaV0sIG9iamVjdFN0b3JlRGF0YUhlaWdodFNvcnRbaV0ua2V5LCAiQ29y
cmVjdCBrZXkiKTsKKyAgICB9CisKKyAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuaW5kZXgoImhl
aWdodCIpLmdldEFsbEtleXMobnVsbCwgNCk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gZmluaXNo
SlNUZXN0OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gY29udGludWVXaXRoRXZlbnQ7CisgICAg
ZXZlbnQgPSB5aWVsZDsKKworICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHQgaW5zdGFuY2VvZiBB
cnJheSwgdHJ1ZSwgIkdvdCBhbiBhcnJheSBvYmplY3QiKTsKKyAgICBpcyhldmVudC50YXJnZXQu
cmVzdWx0Lmxlbmd0aCwgNCwgIkNvcnJlY3QgbGVuZ3RoIik7CisKKyAgICBmb3IgKGxldCBpIGlu
IGV2ZW50LnRhcmdldC5yZXN1bHQpIHsKKyAgICAgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdFtp
XSwgb2JqZWN0U3RvcmVEYXRhSGVpZ2h0U29ydFtpXS5rZXksICJDb3JyZWN0IGtleSIpOworICAg
IH0KKworICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5pbmRleCgiaGVpZ2h0IikuZ2V0QWxsS2V5
cyg2NSwgMSk7CisgICAgcmVxdWVzdC5vbmVycm9yID0gZmluaXNoSlNUZXN0OworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gY29udGludWVXaXRoRXZlbnQ7CisgICAgZXZlbnQgPSB5aWVsZDsKKwor
ICAgIGlzKGV2ZW50LnRhcmdldC5yZXN1bHQgaW5zdGFuY2VvZiBBcnJheSwgdHJ1ZSwgIkdvdCBh
biBhcnJheSBvYmplY3QiKTsKKyAgICBpcyhldmVudC50YXJnZXQucmVzdWx0Lmxlbmd0aCwgMSwg
IkNvcnJlY3QgbGVuZ3RoIik7CisKKyAgICBmb3IgKGxldCBpIGluIGV2ZW50LnRhcmdldC5yZXN1
bHQpIHsKKyAgICAgICAgaXMoZXZlbnQudGFyZ2V0LnJlc3VsdFtpXSwgb2JqZWN0U3RvcmVEYXRh
SGVpZ2h0U29ydFtwYXJzZUludChpKSArIDNdLmtleSwgIkNvcnJlY3Qga2V5Iik7CisgICAgfQor
CisgICAgZmluaXNoSlNUZXN0KCk7CisgICAgeWllbGQ7Cit9CisKK3ZhciB0ZXN0R2VuZXJhdG9y
ID0gdGVzdFN0ZXBzKCk7Cit0ZXN0R2VuZXJhdG9yLm5leHQoKTsK
</data>
<flag name="review"
          id="316458"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="316472"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>