<?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>178155</bug_id>
          
          <creation_ts>2017-10-10 21:35:40 -0700</creation_ts>
          <short_desc>Remove out-parameter variants of copyToVector</short_desc>
          <delta_ts>2017-10-12 10:40:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1359040</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-10 21:35:40 -0700</bug_when>
    <thetext>Remove out-parameter variants of copyToVector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359134</commentid>
    <comment_count>1</comment_count>
      <attachid>323412</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-11 05:26:56 -0700</bug_when>
    <thetext>Created attachment 323412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359180</commentid>
    <comment_count>2</comment_count>
      <attachid>323416</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-11 07:52:08 -0700</bug_when>
    <thetext>Created attachment 323416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359229</commentid>
    <comment_count>3</comment_count>
      <attachid>323425</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-11 10:20:20 -0700</bug_when>
    <thetext>Created attachment 323425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359294</commentid>
    <comment_count>4</comment_count>
      <attachid>323425</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-11 11:52:24 -0700</bug_when>
    <thetext>Comment on attachment 323425
Patch

Rejecting attachment 323425 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;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 323425, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ing file Source/WebKitLegacy/mac/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebKitLegacy/mac/Plugins/WebNetscapePluginView.mm
patching file Source/WebKitLegacy/mac/WebView/WebHTMLRepresentation.mm
patching file Tools/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Tools/DumpRenderTree/JavaScriptThreading.cpp

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Tim Horton&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/4826419</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359600</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-12 08:38:45 -0700</bug_when>
    <thetext>Committed r223238: &lt;https://trac.webkit.org/changeset/223238&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359601</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-12 08:39:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/34955906&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359620</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-12 10:11:15 -0700</bug_when>
    <thetext>Broke internal build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359628</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-12 10:40:12 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; Broke internal build.

I may have fixed it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323412</attachid>
            <date>2017-10-11 05:26:56 -0700</date>
            <delta_ts>2017-10-11 07:52:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178155-20171011052637.patch</filename>
            <type>text/plain</type>
            <size>60999</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIzMTY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE3LTEwLTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVt
b3ZlIG91dC1wYXJhbWV0ZXIgdmFyaWFudHMgb2YgY29weVRvVmVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgxNTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1
Z1NlcnZlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpkaXNw
YXRjaEJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6ZGlzcGF0Y2hCcmVha3BvaW50QWN0aW9uU291bmQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hCcmVha3BvaW50QWN0aW9uUHJvYmUpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXJzZVNv
dXJjZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEZh
aWxlZFRvUGFyc2VTb3VyY2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZl
cjo6ZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKToKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgUmVwbGFjZSBvdXQtcGFyYW1ldGVyIGJhc2VkIGNvcHlUb1ZlY3Rvciwgd2l0aCBvbmUgdGhh
dCByZXR1cm5zIGEgVmVjdG9yLgorCiAyMDE3LTEwLTEwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlA
YXBwbGUuY29tPgogCiAgICAgICAgIFByb3RvdHlwZSBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiBzaG91
bGQgYmUgYSBkZWZlcnJlZCB0cmFuc2l0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAkocmV2aXNpb24gMjIz
MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw5ICsxNDUsNyBAQCB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpkaXNwYXRjaEJyZWFrcG9pCiAKICAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2Uo
bV9jYWxsaW5nTGlzdGVuZXJzLCB0cnVlKTsKIAotICAgIFZlY3RvcjxTY3JpcHREZWJ1Z0xpc3Rl
bmVyKj4gbGlzdGVuZXJzQ29weTsKLSAgICBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMsIGxpc3Rl
bmVyc0NvcHkpOwotICAgIGZvciAoYXV0byogbGlzdGVuZXIgOiBsaXN0ZW5lcnNDb3B5KQorICAg
IGZvciAoYXV0byogbGlzdGVuZXIgOiBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMpKQogICAgICAg
ICBsaXN0ZW5lci0+YnJlYWtwb2ludEFjdGlvbkxvZygqZXhlYywgbWVzc2FnZSk7CiB9CiAKQEAg
LTE2MSw5ICsxNTksNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEJyZWFrcG9p
CiAKICAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2UobV9jYWxsaW5nTGlzdGVuZXJzLCB0cnVl
KTsKIAotICAgIFZlY3RvcjxTY3JpcHREZWJ1Z0xpc3RlbmVyKj4gbGlzdGVuZXJzQ29weTsKLSAg
ICBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMsIGxpc3RlbmVyc0NvcHkpOwotICAgIGZvciAoYXV0
byogbGlzdGVuZXIgOiBsaXN0ZW5lcnNDb3B5KQorICAgIGZvciAoYXV0byogbGlzdGVuZXIgOiBj
b3B5VG9WZWN0b3IobV9saXN0ZW5lcnMpKQogICAgICAgICBsaXN0ZW5lci0+YnJlYWtwb2ludEFj
dGlvblNvdW5kKGJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMTc5LDkgKzE3
NSw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoQnJlYWtwb2kKIAogICAgIHVu
c2lnbmVkIHNhbXBsZUlkID0gbV9uZXh0UHJvYmVTYW1wbGVJZCsrOwogCi0gICAgVmVjdG9yPFNj
cmlwdERlYnVnTGlzdGVuZXIqPiBsaXN0ZW5lcnNDb3B5OwotICAgIGNvcHlUb1ZlY3RvcihtX2xp
c3RlbmVycywgbGlzdGVuZXJzQ29weSk7Ci0gICAgZm9yIChhdXRvKiBsaXN0ZW5lciA6IGxpc3Rl
bmVyc0NvcHkpCisgICAgZm9yIChhdXRvKiBsaXN0ZW5lciA6IGNvcHlUb1ZlY3RvcihtX2xpc3Rl
bmVycykpCiAgICAgICAgIGxpc3RlbmVyLT5icmVha3BvaW50QWN0aW9uUHJvYmUoKmV4ZWMsIGFj
dGlvbiwgbV9jdXJyZW50UHJvYmVCYXRjaElkLCBzYW1wbGVJZCwgc2FtcGxlVmFsdWUpOwogfQog
CkBAIC0yMjEsMTAgKzIxNSw4IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlk
UGFyc2UKICAgICBlbHNlCiAgICAgICAgIHNjcmlwdC5lbmRDb2x1bW4gPSBzb3VyY2VMZW5ndGgg
LSBsYXN0TGluZVN0YXJ0OwogCi0gICAgVmVjdG9yPFNjcmlwdERlYnVnTGlzdGVuZXIqPiBjb3B5
OwotICAgIGNvcHlUb1ZlY3RvcihsaXN0ZW5lcnMsIGNvcHkpOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY29weS5zaXplKCk7ICsraSkKLSAgICAgICAgY29weVtpXS0+ZGlkUGFyc2VTb3Vy
Y2Uoc291cmNlSUQsIHNjcmlwdCk7CisgICAgZm9yIChhdXRvKiBsaXN0ZW5lciA6IGNvcHlUb1Zl
Y3RvcihsaXN0ZW5lcnMpKQorICAgICAgICBsaXN0ZW5lci0+ZGlkUGFyc2VTb3VyY2Uoc291cmNl
SUQsIHNjcmlwdCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRmFpbGVk
VG9QYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzLCBTb3VyY2VQcm92aWRl
ciogc291cmNlUHJvdmlkZXIsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQpAQCAtMjMzLDEwICsyMjUsOCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRj
aEZhaWxlZFRvCiAgICAgU3RyaW5nIGRhdGEgPSBzb3VyY2VQcm92aWRlci0+c291cmNlKCkudG9T
dHJpbmcoKTsKICAgICBpbnQgZmlyc3RMaW5lID0gc291cmNlUHJvdmlkZXItPnN0YXJ0UG9zaXRp
b24oKS5tX2xpbmUub25lQmFzZWRJbnQoKTsKIAotICAgIFZlY3RvcjxTY3JpcHREZWJ1Z0xpc3Rl
bmVyKj4gY29weTsKLSAgICBjb3B5VG9WZWN0b3IobGlzdGVuZXJzLCBjb3B5KTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNvcHkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNvcHlbaV0tPmZh
aWxlZFRvUGFyc2VTb3VyY2UodXJsLCBkYXRhLCBmaXJzdExpbmUsIGVycm9yTGluZSwgZXJyb3JN
ZXNzYWdlKTsKKyAgICBmb3IgKGF1dG8qIGxpc3RlbmVyIDogY29weVRvVmVjdG9yKGxpc3RlbmVy
cykpCisgICAgICAgIGxpc3RlbmVyLT5mYWlsZWRUb1BhcnNlU291cmNlKHVybCwgZGF0YSwgZmly
c3RMaW5lLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnNvdXJjZVBhcnNlZChFeGVjU3RhdGUqIGV4ZWMsIFNvdXJjZVByb3ZpZGVyKiBzb3Vy
Y2VQcm92aWRlciwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCkBA
IC0yNzEsMTAgKzI2MSw4IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRnVuY3Rp
b24KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJz
KGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFj
ayBjYWxsYmFjaykKIHsKLSAgICBWZWN0b3I8U2NyaXB0RGVidWdMaXN0ZW5lcio+IGNvcHk7Ci0g
ICAgY29weVRvVmVjdG9yKGxpc3RlbmVycywgY29weSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb3B5LnNpemUoKTsgKytpKQotICAgICAgICAodGhpcy0+KmNhbGxiYWNrKShjb3B5W2ld
KTsKKyAgICBmb3IgKGF1dG8qIGxpc3RlbmVyIDogY29weVRvVmVjdG9yKGxpc3RlbmVycykpCisg
ICAgICAgICh0aGlzLT4qY2FsbGJhY2spKGxpc3RlbmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6bm90aWZ5RG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpCkluZGV4OiBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2
aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyNCBAQAorMjAxNy0xMC0xMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgor
CisgICAgICAgIFJlbW92ZSBvdXQtcGFyYW1ldGVyIHZhcmlhbnRzIG9mIGNvcHlUb1ZlY3Rvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTU1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvSGFz
aE1hcC5oOgorICAgICAgICAoV1RGOjpjb3B5VG9WZWN0b3IpOiBEZWxldGVkLgorICAgICAgICAq
IHd0Zi9IYXNoU2V0Lmg6CisgICAgICAgIChXVEY6OmNvcHlUb1ZlY3Rvcik6IERlbGV0ZWQuCisg
ICAgICAgIAorICAgICAgICAgICAgUmVtb3ZlIGNvcHlUb1ZlY3Rvci4KKyAgICAgICAgCisgICAg
ICAgICogd3RmL1ZlY3Rvci5oOgorICAgICAgICAoV1RGOjpjb3B5VG9WZWN0b3JTcGVjaWFsaXph
dGlvbik6CisgICAgICAgIAorICAgICAgICAgICAgQWRkIGFub3RoZXIgdmVyc2lvbiBvZiBjb3B5
VG9WZWN0b3IsIGNhbGxlZCBjb3B5VG9WZWN0b3JTcGVjaWFsaXphdGlvbiwgdGhhdCBhbGxvd3MK
KyAgICAgICAgICAgIHlvdSB0byBzcGVjaWZ5IHRoZSBlbnRpcmUgc3BlY2lhbGl6YXRpb24gZm9y
IHRoZSBWZWN0b3IgeW91IHdhbnQgdG8gY29weSB0by4gVGhpcworICAgICAgICAgICAgY2FuIGJl
IHVzZWZ1bCBpZiB5b3Ugd2FudCB5b3VyIHJlc3VsdGluZyBWZWN0b3IgdG8gaGF2ZSBhbiBpbmxp
bmUgY2FwYWNpdHkuIAorCiAyMDE3LTEwLTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVwbGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3
aXRoIGNvcHlUb1ZlY3RvcihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQpJ
bmRleDogU291cmNlL1dURi93dGYvSGFzaE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0hhc2hNYXAuaAkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dURi93dGYvSGFzaE1h
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzYsMTkgKzU3Niw2IEBAIGlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgSGFzaE1hcDxULCAKICAgICByZXR1cm4gIShhID09IGIpOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBl
bmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIHZvaWQgY29weVRvVmVjdG9yKGNvbnN0IEhhc2hN
YXA8VCwgVSwgViwgVywgWD4mIGNvbGxlY3Rpb24sIFkmIHZlY3RvcikKLXsKLSAgICB0eXBlZGVm
IHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9y
OwotCi0gICAgdmVjdG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNpemUoKSk7Ci0KLSAgICBpdGVyYXRv
ciBpdCA9IGNvbGxlY3Rpb24uYmVnaW4oKTsKLSAgICBpdGVyYXRvciBlbmQgPSBjb2xsZWN0aW9u
LmVuZCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGl0ICE9IGVuZDsgKytpdCwgKytpKQot
ICAgICAgICB2ZWN0b3JbaV0gPSB7ICgqaXQpLmtleSwgKCppdCkudmFsdWUgfTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6SGFzaE1hcDsKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL0hhc2hTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgJKHJl
dmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzU1LDEzICszNTUsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgVz4KLSAgICBp
bmxpbmUgdm9pZCBjb3B5VG9WZWN0b3IoY29uc3QgQyYgY29sbGVjdGlvbiwgVyYgdmVjdG9yKQot
ICAgIHsKLSAgICAgICAgdmVjdG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNpemUoKSk7Ci0gICAgICAg
IHN0ZDo6Y29weShjb2xsZWN0aW9uLmJlZ2luKCksIGNvbGxlY3Rpb24uZW5kKCksIHZlY3Rvci5i
ZWdpbigpKTsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWPgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQ29sbGVjdGlvbj4KICAgICBp
bmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjpvcGVyYXRvcj09KGNvbnN0IE90aGVyQ29sbGVj
dGlvbiYgb3RoZXJDb2xsZWN0aW9uKSBjb25zdApJbmRleDogU291cmNlL1dURi93dGYvVmVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVmVjdG9yLmgJKHJldmlzaW9uIDIyMzE0
OSkKKysrIFNvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjM0LDYg
KzE2MzQsMTcgQEAgVmVjdG9yPHR5cGVuYW1lIE1hcHBlcjxNYXBGdW5jdGlvbiwgU291cgogICAg
IHJldHVybiBNYXBwZXI8TWFwRnVuY3Rpb24sIFNvdXJjZVR5cGU+OjptYXAoc3RkOjpmb3J3YXJk
PFNvdXJjZVR5cGU+KHNvdXJjZSksIHN0ZDo6Zm9yd2FyZDxNYXBGdW5jdGlvbj4obWFwRnVuY3Rp
b24pKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRGVzdGluYXRpb25WZWN0b3IsIHR5cGVuYW1l
IENvbGxlY3Rpb24+CitpbmxpbmUgYXV0byBjb3B5VG9WZWN0b3JTcGVjaWFsaXphdGlvbihjb25z
dCBDb2xsZWN0aW9uJiBjb2xsZWN0aW9uKSAtPiBEZXN0aW5hdGlvblZlY3RvcgoreworICAgIERl
c3RpbmF0aW9uVmVjdG9yIHJlc3VsdDsKKyAgICAvLyBGSVhNRTogVXNlIHN0ZDo6c2l6ZSB3aGVu
IGF2YWlsYWJsZSBvbiBhbGwgY29tcGlsZXJzLgorICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGNvbGxlY3Rpb24uc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBjb2xsZWN0
aW9uKQorICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKGl0ZW0pOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIERlc3RpbmF0aW9uSXRlbVR5cGUsIHR5cGVu
YW1lIENvbGxlY3Rpb24+CiBpbmxpbmUgYXV0byBjb3B5VG9WZWN0b3JPZihjb25zdCBDb2xsZWN0
aW9uJiBjb2xsZWN0aW9uKSAtPiBWZWN0b3I8RGVzdGluYXRpb25JdGVtVHlwZT4KIHsKQEAgLTE2
NTcsNiArMTY2OCw3IEBAIHVzaW5nIFdURjo6VW5zYWZlVmVjdG9yT3ZlcmZsb3c7CiB1c2luZyBX
VEY6OlZlY3RvcjsKIHVzaW5nIFdURjo6Y29weVRvVmVjdG9yOwogdXNpbmcgV1RGOjpjb3B5VG9W
ZWN0b3JPZjsKK3VzaW5nIFdURjo6Y29weVRvVmVjdG9yU3BlY2lhbGl6YXRpb247CiB1c2luZyBX
VEY6OnJlbW92ZVJlcGVhdGVkRWxlbWVudHM7CiAKICNlbmRpZiAvLyBXVEZfVmVjdG9yX2gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDE3LTEwLTEwICBTYW0gV2Vpbmln
ICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIG91dC1wYXJhbWV0ZXIgdmFyaWFu
dHMgb2YgY29weVRvVmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzgxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0b3BUaW1lcnNGb3JPbmVTaG90cyk6CisgICAgICAg
IChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6Y2FuY2VsQWxsUmVxdWVzdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246OmhhbmRsZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xv
Y2F0aW9uOjptYWtlU3VjY2Vzc0NhbGxiYWNrcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRyYW5z
YWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRBbGxSZXN1bHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCR2V0QWxsUmVzdWx0OjphbGxCbG9iRmlsZVBhdGhzIGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6bm90aWZ5Q3Vyc29y
c09mVmFsdWVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRl
eDo6bm90aWZ5Q3Vyc29yc09mQWxsUmVjb3Jkc0NoYW5nZWQpOgorICAgICAgICAqIGNzcy9DU1NG
b250U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpkaXNw
YXRjaEludmFsaWRhdGlvbkNhbGxiYWNrcyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojptb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc3VtZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZCk6CisgICAg
ICAgICogZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6Om5vdGlmeU9ic2VydmVyc0ludGVybmFsKToKKyAg
ICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRh
dGlvbk9ic2VydmVyOjpub3RpZnlNdXRhdGlvbk9ic2VydmVycyk6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmludmFsaWRhdGVOb2RlTGlzdEFu
ZENvbGxlY3Rpb25DYWNoZXMpOgorICAgICAgICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHA6
CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlzcGF0Y2hNZXNzYWdlUG9ydEV2ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9N
T2JqZWN0cyk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZM
b2FkSXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmRlbGl2ZXJEZWxheWVkTWFpblJlc291cmNlcyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpmb3JFYWNoUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnBydW5lRGVhZFJlc291cmNl
c1RvU2l6ZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93Ojp3aWxsRGVzdHJveUNhY2hlZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdpbmRvdzo6d2lsbERlc3Ryb3lEb2N1bWVudEluRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93Ojp3aWxsRGV0YWNoRG9jdW1lbnRGcm9tRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93OjpkaXNjb25uZWN0RE9NV2luZG93UHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6OnJlY29ubmVjdERPTVdpbmRvd1Byb3BlcnRpZXMpOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RBbmRQ
cm90ZWN0V2lkZ2V0cyk6CisgICAgICAgICogcGFnZS9NZW1vcnlSZWxlYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlbGVhc2VDcml0aWNhbE1lbW9yeSk6CisgICAgICAgICogcGFnZS9QZXJm
b3JtYW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6cXVldWVFbnRyeSk6
CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpzeXN0ZW1Gb250RmFtaWxpZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW06CisgICAg
ICAgICgtW1dlYkNvcmVNb3Rpb25NYW5hZ2VyIHNlbmRBY2NlbGVyb21ldGVyRGF0YTpdKToKKyAg
ICAgICAgKC1bV2ViQ29yZU1vdGlvbk1hbmFnZXIgc2VuZE1vdGlvbkRhdGE6d2l0aEhlYWRpbmc6
XSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFk
QW5kV3JpdGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbiBpbnZhbGlk
YXRlQW5kQ2FuY2VsXSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjplbmRBbmRDb21taXRVcGRhdGVTY3JvbGxJbmZv
QWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
TGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRMb2dpY2FsV2lkdGhGb3JUZXh0
UnVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZsZXhCb3hJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZVNlY3Rpb246OnBhaW50T2JqZWN0KToKKworICAgICAgICAgICAgUmVwbGFjZSBvdXQt
cGFyYW1ldGVyIGJhc2VkIGNvcHlUb1ZlY3Rvciwgd2l0aCBvbmUgdGhhdCByZXR1cm5zIGEgVmVj
dG9yLgorCiAyMDE3LTEwLTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVwbGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNvcHlU
b1ZlY3RvcihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAJ
KHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDYsOSArNTQ2LDcgQEAgdm9pZCBH
ZW9sb2NhdGlvbjo6c3RvcFRpbWVyKEdlb05vdGlmaWVyVgogCiB2b2lkIEdlb2xvY2F0aW9uOjpz
dG9wVGltZXJzRm9yT25lU2hvdHMoKQogewotICAgIEdlb05vdGlmaWVyVmVjdG9yIGNvcHk7Ci0g
ICAgY29weVRvVmVjdG9yKG1fb25lU2hvdHMsIGNvcHkpOwotICAgIAorICAgIGF1dG8gY29weSA9
IGNvcHlUb1ZlY3RvcihtX29uZVNob3RzKTsKICAgICBzdG9wVGltZXIoY29weSk7CiB9CiAKQEAg
LTU3NCw4ICs1NzIsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpjYW5jZWxSZXF1ZXN0cyhHZW9Ob3Rp
CiAKIHZvaWQgR2VvbG9jYXRpb246OmNhbmNlbEFsbFJlcXVlc3RzKCkKIHsKLSAgICBHZW9Ob3Rp
ZmllclZlY3RvciBjb3B5OwotICAgIGNvcHlUb1ZlY3RvcihtX29uZVNob3RzLCBjb3B5KTsKKyAg
ICBhdXRvIGNvcHkgPSBjb3B5VG9WZWN0b3IobV9vbmVTaG90cyk7CiAgICAgY2FuY2VsUmVxdWVz
dHMoY29weSk7CiAgICAgbV93YXRjaGVycy5nZXROb3RpZmllcnNWZWN0b3IoY29weSk7CiAgICAg
Y2FuY2VsUmVxdWVzdHMoY29weSk7CkBAIC02MDIsOCArNTk5LDcgQEAgdm9pZCBHZW9sb2NhdGlv
bjo6Y29weVRvU2V0KGNvbnN0IEdlb05vdAogCiB2b2lkIEdlb2xvY2F0aW9uOjpoYW5kbGVFcnJv
cihQb3NpdGlvbkVycm9yJiBlcnJvcikKIHsKLSAgICBHZW9Ob3RpZmllclZlY3RvciBvbmVTaG90
c0NvcHk7Ci0gICAgY29weVRvVmVjdG9yKG1fb25lU2hvdHMsIG9uZVNob3RzQ29weSk7CisgICAg
YXV0byBvbmVTaG90c0NvcHkgPSBjb3B5VG9WZWN0b3IobV9vbmVTaG90cyk7CiAKICAgICBHZW9O
b3RpZmllclZlY3RvciB3YXRjaGVyc0NvcHk7CiAgICAgbV93YXRjaGVycy5nZXROb3RpZmllcnNW
ZWN0b3Iod2F0Y2hlcnNDb3B5KTsKQEAgLTY1NCw4ICs2NTAsNyBAQCB2b2lkIEdlb2xvY2F0aW9u
OjptYWtlU3VjY2Vzc0NhbGxiYWNrcyhHCiAgICAgQVNTRVJUKGxhc3RQb3NpdGlvbigpKTsKICAg
ICBBU1NFUlQoaXNBbGxvd2VkKCkpOwogICAgIAotICAgIEdlb05vdGlmaWVyVmVjdG9yIG9uZVNo
b3RzQ29weTsKLSAgICBjb3B5VG9WZWN0b3IobV9vbmVTaG90cywgb25lU2hvdHNDb3B5KTsKKyAg
ICBhdXRvIG9uZVNob3RzQ29weSA9IGNvcHlUb1ZlY3RvcihtX29uZVNob3RzKTsKICAgICAKICAg
ICBHZW9Ob3RpZmllclZlY3RvciB3YXRjaGVyc0NvcHk7CiAgICAgbV93YXRjaGVycy5nZXROb3Rp
ZmllcnNWZWN0b3Iod2F0Y2hlcnNDb3B5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTkxLDggKzE5MSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJUcmFuc2FjdGlvbj4+
IElEQkRhdGEKICAgICBmb3IgKGF1dG8mIG9iamVjdFN0b3JlIDogb2JqZWN0U3RvcmVzKQogICAg
ICAgICBvYmplY3RTdG9yZVNldC5hZGQob2JqZWN0U3RvcmUpOwogCi0gICAgb2JqZWN0U3RvcmVz
LmNsZWFyKCk7Ci0gICAgY29weVRvVmVjdG9yKG9iamVjdFN0b3JlU2V0LCBvYmplY3RTdG9yZXMp
OworICAgIG9iamVjdFN0b3JlcyA9IGNvcHlUb1ZlY3RvcihvYmplY3RTdG9yZVNldCk7CiAKICAg
ICBmb3IgKGF1dG8mIG9iamVjdFN0b3JlTmFtZSA6IG9iamVjdFN0b3JlcykgewogICAgICAgICBp
ZiAobV9pbmZvLmhhc09iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRBbGxSZXN1bHQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldEFsbFJlc3VsdC5jcHAJ
KHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkdldEFsbFJlc3VsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNywxMCArMTA3LDcgQEAgVmVj
dG9yPFN0cmluZz4gSURCR2V0QWxsUmVzdWx0OjphbGxCbG9iRgogICAgICAgICAgICAgcGF0aFNl
dC5hZGQocGF0aCk7CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcGF0aHM7Ci0gICAgY29w
eVRvVmVjdG9yKHBhdGhTZXQsIHBhdGhzKTsKLQotICAgIHJldHVybiBwYXRoczsKKyAgICByZXR1
cm4gY29weVRvVmVjdG9yKHBhdGhTZXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXgu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJbmRleC5jcHAJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc5LDE3ICs3OSwxMyBAQCB2b2lkIE1lbW9yeUluZGV4OjpvYmplY3RTdG9yZUNsZWFyZWQoKQog
CiB2b2lkIE1lbW9yeUluZGV4Ojpub3RpZnlDdXJzb3JzT2ZWYWx1ZUNoYW5nZShjb25zdCBJREJL
ZXlEYXRhJiBpbmRleEtleSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleSkKIHsKLSAgICBW
ZWN0b3I8TWVtb3J5SW5kZXhDdXJzb3IqPiBjdXJzb3JzOwotICAgIGNvcHlUb1ZlY3RvcihtX2Ns
ZWFuQ3Vyc29ycywgY3Vyc29ycyk7Ci0gICAgZm9yIChhdXRvKiBjdXJzb3IgOiBjdXJzb3JzKQor
ICAgIGZvciAoYXV0byogY3Vyc29yIDogY29weVRvVmVjdG9yKG1fY2xlYW5DdXJzb3JzKSkKICAg
ICAgICAgY3Vyc29yLT5pbmRleFZhbHVlQ2hhbmdlZChpbmRleEtleSwgcHJpbWFyeUtleSk7CiB9
CiAKIHZvaWQgTWVtb3J5SW5kZXg6Om5vdGlmeUN1cnNvcnNPZkFsbFJlY29yZHNDaGFuZ2VkKCkK
IHsKLSAgICBWZWN0b3I8TWVtb3J5SW5kZXhDdXJzb3IqPiBjdXJzb3JzOwotICAgIGNvcHlUb1Zl
Y3RvcihtX2NsZWFuQ3Vyc29ycywgY3Vyc29ycyk7Ci0gICAgZm9yIChhdXRvKiBjdXJzb3IgOiBj
dXJzb3JzKQorICAgIGZvciAoYXV0byogY3Vyc29yIDogY29weVRvVmVjdG9yKG1fY2xlYW5DdXJz
b3JzKSkKICAgICAgICAgY3Vyc29yLT5pbmRleFJlY29yZHNBbGxDaGFuZ2VkKCk7CiAKICAgICBB
U1NFUlQobV9jbGVhbkN1cnNvcnMuaXNFbXB0eSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250U2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250U2VsZWN0b3IuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM5LDEwICsyMzksOCBA
QCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6ZGlzcGF0Y2hJbnZhbGlkYXRpCiB7CiAgICAgKyttX3Zl
cnNpb247CiAKLSAgICBWZWN0b3I8Rm9udFNlbGVjdG9yQ2xpZW50Kj4gY2xpZW50czsKLSAgICBj
b3B5VG9WZWN0b3IobV9jbGllbnRzLCBjbGllbnRzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNsaWVudHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNsaWVudHNbaV0tPmZvbnRzTmVlZFVw
ZGF0ZSgqdGhpcyk7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGll
bnRzKSkKKyAgICAgICAgY2xpZW50LT5mb250c05lZWRVcGRhdGUoKnRoaXMpOwogfQogCiB2b2lk
IENTU0ZvbnRTZWxlY3Rvcjo6Zm9udExvYWRlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQwMzYsOSArNDAzNiw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRldGFj
aE5vZGVJdGVyYXRvcihOb2RlSXQKIAogdm9pZCBEb2N1bWVudDo6bW92ZU5vZGVJdGVyYXRvcnNU
b05ld0RvY3VtZW50KE5vZGUmIG5vZGUsIERvY3VtZW50JiBuZXdEb2N1bWVudCkKIHsKLSAgICBW
ZWN0b3I8Tm9kZUl0ZXJhdG9yKj4gbm9kZUl0ZXJhdG9yczsKLSAgICBjb3B5VG9WZWN0b3IobV9u
b2RlSXRlcmF0b3JzLCBub2RlSXRlcmF0b3JzKTsKLSAgICBmb3IgKGF1dG8qIGl0IDogbm9kZUl0
ZXJhdG9ycykgeworICAgIGZvciAoYXV0byogaXQgOiBjb3B5VG9WZWN0b3IobV9ub2RlSXRlcmF0
b3JzKSkgewogICAgICAgICBpZiAoJml0LT5yb290KCkgPT0gJm5vZGUpIHsKICAgICAgICAgICAg
IGRldGFjaE5vZGVJdGVyYXRvcihpdCk7CiAgICAgICAgICAgICBuZXdEb2N1bWVudC5hdHRhY2hO
b2RlSXRlcmF0b3IoaXQpOwpAQCAtNDgyNiw5ICs0ODI0LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVz
dW1lKEFjdGl2ZURPTU9iamVjdDo6UgogICAgIGlmICghbV9pc1N1c3BlbmRlZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgVmVjdG9yPEVsZW1lbnQqPiBlbGVtZW50czsKLSAgICBjb3B5VG9WZWN0
b3IobV9kb2N1bWVudFN1c3BlbnNpb25DYWxsYmFja0VsZW1lbnRzLCBlbGVtZW50cyk7Ci0gICAg
Zm9yIChhdXRvKiBlbGVtZW50IDogZWxlbWVudHMpCisgICAgZm9yIChhdXRvKiBlbGVtZW50IDog
Y29weVRvVmVjdG9yKG1fZG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tFbGVtZW50cykpCiAgICAg
ICAgIGVsZW1lbnQtPnJlc3VtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24oKTsKIAogICAgIGlmIChy
ZW5kZXJWaWV3KCkpCkBAIC02ODYxLDEwICs2ODU3LDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlkQXNz
b2NpYXRlRm9ybUNvbnRyb2xzVAogICAgIGlmICghZnJhbWUoKSB8fCAhZnJhbWUoKS0+cGFnZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PiBhc3NvY2lh
dGVkRm9ybUNvbnRyb2xzOwotICAgIGNvcHlUb1ZlY3RvcihtX2Fzc29jaWF0ZWRGb3JtQ29udHJv
bHMsIGFzc29jaWF0ZWRGb3JtQ29udHJvbHMpOwotCi0gICAgZnJhbWUoKS0+cGFnZSgpLT5jaHJv
bWUoKS5jbGllbnQoKS5kaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMoYXNzb2NpYXRlZEZvcm1Db250
cm9scyk7CisgICAgZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5kaWRBc3NvY2lh
dGVGb3JtQ29udHJvbHMoY29weVRvVmVjdG9yKG1fYXNzb2NpYXRlZEZvcm1Db250cm9scykpOwog
ICAgIG1fYXNzb2NpYXRlZEZvcm1Db250cm9scy5jbGVhcigpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAkocmV2aXNpb24g
MjIzMTQ5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDkgKzYzLDcgQEAgdm9pZCBJZFRhcmdldE9ic2VydmVy
UmVnaXN0cnk6Om5vdGlmeU9icwogICAgIGlmICghbV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPElkVGFyZ2V0T2JzZXJ2ZXIqPiBjb3B5Owot
ICAgIGNvcHlUb1ZlY3RvcigqbV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldCwgY29weSk7Ci0gICAg
Zm9yIChhdXRvJiBvYnNlcnZlciA6IGNvcHkpIHsKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDog
Y29weVRvVmVjdG9yKCptX25vdGlmeWluZ09ic2VydmVyc0luU2V0KSkgewogICAgICAgICBpZiAo
bV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldC0+Y29udGFpbnMob2JzZXJ2ZXIpKQogICAgICAgICAg
ICAgb2JzZXJ2ZXItPmlkVGFyZ2V0Q2hhbmdlZCgpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDkg
KzI0OCw3IEBAIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6bm90aWZ5TXV0YXRpb25PYnMKICAgICBk
ZWxpdmVyeUluUHJvZ3Jlc3MgPSB0cnVlOwogCiAgICAgaWYgKCFzdXNwZW5kZWRNdXRhdGlvbk9i
c2VydmVycygpLmlzRW1wdHkoKSkgewotICAgICAgICBWZWN0b3I8UmVmUHRyPE11dGF0aW9uT2Jz
ZXJ2ZXI+PiBzdXNwZW5kZWQ7Ci0gICAgICAgIGNvcHlUb1ZlY3RvcihzdXNwZW5kZWRNdXRhdGlv
bk9ic2VydmVycygpLCBzdXNwZW5kZWQpOwotICAgICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDog
c3VzcGVuZGVkKSB7CisgICAgICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBjb3B5VG9WZWN0b3Io
c3VzcGVuZGVkTXV0YXRpb25PYnNlcnZlcnMoKSkpIHsKICAgICAgICAgICAgIGlmICghb2JzZXJ2
ZXItPmNhbkRlbGl2ZXIoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMjYxLDgg
KzI1OSw3IEBAIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6bm90aWZ5TXV0YXRpb25PYnMKIAogICAg
IHdoaWxlICghYWN0aXZlTXV0YXRpb25PYnNlcnZlcnMoKS5pc0VtcHR5KCkgfHwgIXNpZ25hbFNs
b3RMaXN0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIDIuIExldCBub3RpZnkgbGlzdCBiZSBh
IGNvcHkgb2YgdW5pdCBvZiByZWxhdGVkIHNpbWlsYXItb3JpZ2luIGJyb3dzaW5nIGNvbnRleHRz
JyBsaXN0IG9mIE11dGF0aW9uT2JzZXJ2ZXIgb2JqZWN0cy4KLSAgICAgICAgVmVjdG9yPFJlZlB0
cjxNdXRhdGlvbk9ic2VydmVyPj4gbm90aWZ5TGlzdDsKLSAgICAgICAgY29weVRvVmVjdG9yKGFj
dGl2ZU11dGF0aW9uT2JzZXJ2ZXJzKCksIG5vdGlmeUxpc3QpOworICAgICAgICBhdXRvIG5vdGlm
eUxpc3QgPSBjb3B5VG9WZWN0b3IoYWN0aXZlTXV0YXRpb25PYnNlcnZlcnMoKSk7CiAgICAgICAg
IGFjdGl2ZU11dGF0aW9uT2JzZXJ2ZXJzKCkuY2xlYXIoKTsKICAgICAgICAgc3RkOjpzb3J0KG5v
dGlmeUxpc3QuYmVnaW4oKSwgbm90aWZ5TGlzdC5lbmQoKSwgW10oYXV0byYgbGhzLCBhdXRvJiBy
aHMpIHsKICAgICAgICAgICAgIHJldHVybiBsaHMtPm1fcHJpb3JpdHkgPCByaHMtPm1fcHJpb3Jp
dHk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1MywxNCArODUzLDEwIEBAIGlu
bGluZSBib29sIERvY3VtZW50OjpzaG91bGRJbnZhbGlkYXRlTm8KIHRlbXBsYXRlIDx0eXBlbmFt
ZSBJbnZhbGlkYXRpb25GdW5jdGlvbj4KIHZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVOb2RlTGlz
dEFuZENvbGxlY3Rpb25DYWNoZXMoSW52YWxpZGF0aW9uRnVuY3Rpb24gaW52YWxpZGF0ZSkKIHsK
LSAgICBWZWN0b3I8TGl2ZU5vZGVMaXN0KiwgOD4gbGlzdHM7Ci0gICAgY29weVRvVmVjdG9yKG1f
bGlzdHNJbnZhbGlkYXRlZEF0RG9jdW1lbnQsIGxpc3RzKTsKLSAgICBmb3IgKGF1dG8qIGxpc3Qg
OiBsaXN0cykKKyAgICBmb3IgKGF1dG8qIGxpc3QgOiBjb3B5VG9WZWN0b3JTcGVjaWFsaXphdGlv
bjxWZWN0b3I8TGl2ZU5vZGVMaXN0KiwgOD4+KG1fbGlzdHNJbnZhbGlkYXRlZEF0RG9jdW1lbnQp
KQogICAgICAgICBpbnZhbGlkYXRlKCpsaXN0KTsKIAotICAgIFZlY3RvcjxIVE1MQ29sbGVjdGlv
biosIDg+IGNvbGxlY3Rpb25zOwotICAgIGNvcHlUb1ZlY3RvcihtX2NvbGxlY3Rpb25zSW52YWxp
ZGF0ZWRBdERvY3VtZW50LCBjb2xsZWN0aW9ucyk7Ci0gICAgZm9yIChhdXRvKiBjb2xsZWN0aW9u
IDogY29sbGVjdGlvbnMpCisgICAgZm9yIChhdXRvKiBjb2xsZWN0aW9uIDogY29weVRvVmVjdG9y
U3BlY2lhbGl6YXRpb248VmVjdG9yPEhUTUxDb2xsZWN0aW9uKiwgOD4+KG1fY29sbGVjdGlvbnNJ
bnZhbGlkYXRlZEF0RG9jdW1lbnQpKQogICAgICAgICBpbnZhbGlkYXRlKCpjb2xsZWN0aW9uKTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwCShyZXZp
c2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Niw4ICs2Niw3IEBAIGlubGluZSBib29sIFJhZGlvQnV0dG9u
R3JvdXA6OmlzVmFsaWQoKSAKIAogVmVjdG9yPEhUTUxJbnB1dEVsZW1lbnQqPiBSYWRpb0J1dHRv
bkdyb3VwOjptZW1iZXJzKCkgY29uc3QKIHsKLSAgICBWZWN0b3I8SFRNTElucHV0RWxlbWVudCo+
IG1lbWJlcnM7Ci0gICAgY29weVRvVmVjdG9yKG1fbWVtYmVycywgbWVtYmVycyk7CisgICAgYXV0
byBtZW1iZXJzID0gY29weVRvVmVjdG9yKG1fbWVtYmVycyk7CiAgICAgc3RkOjpzb3J0KG1lbWJl
cnMuYmVnaW4oKSwgbWVtYmVycy5lbmQoKSwgZG9jdW1lbnRPcmRlckNvbXBhcmF0b3IpOwogICAg
IHJldHVybiBtZW1iZXJzOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcAkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsOSAr
MTQzLDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaXNwYXRjaE1lcwogICAgIG1f
d2lsbFByb2Nlc3NNZXNzYWdlUG9ydE1lc3NhZ2VzU29vbiA9IGZhbHNlOwogCiAgICAgLy8gTWFr
ZSBhIGZyb3plbiBjb3B5IG9mIHRoZSBwb3J0cyBzbyB3ZSBjYW4gaXRlcmF0ZSB3aGlsZSBuZXcg
b25lcyBtaWdodCBiZSBhZGRlZCBvciBkZXN0cm95ZWQuCi0gICAgVmVjdG9yPE1lc3NhZ2VQb3J0
Kj4gcG9zc2libGVNZXNzYWdlUG9ydHM7Ci0gICAgY29weVRvVmVjdG9yKG1fbWVzc2FnZVBvcnRz
LCBwb3NzaWJsZU1lc3NhZ2VQb3J0cyk7Ci0gICAgZm9yIChhdXRvKiBtZXNzYWdlUG9ydCA6IHBv
c3NpYmxlTWVzc2FnZVBvcnRzKSB7CisgICAgZm9yIChhdXRvKiBtZXNzYWdlUG9ydCA6IGNvcHlU
b1ZlY3RvcihtX21lc3NhZ2VQb3J0cykpIHsKICAgICAgICAgLy8gVGhlIHBvcnQgbWF5IGJlIGRl
c3Ryb3llZCwgYW5kIGFub3RoZXIgb25lIGNyZWF0ZWQgYXQgdGhlIHNhbWUgYWRkcmVzcywKICAg
ICAgICAgLy8gYnV0IHRoaXMgaXMgaGFybWxlc3MuIFRoZSB3b3JzdCB0aGF0IGNhbiBoYXBwZW4g
YXMgYSByZXN1bHQgaXMgdGhhdAogICAgICAgICAvLyBkaXNwYXRjaE1lc3NhZ2VzKCkgd2lsbCBi
ZSBjYWxsZWQgbmVlZGxlc3NseS4KQEAgLTI3OSw4ICsyNzcsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnN0b3BBY3RpdmVECiAgICAgbV9hY3RpdmVET01PYmplY3RzQXJlU3RvcHBl
ZCA9IHRydWU7CiAKICAgICAvLyBNYWtlIGEgZnJvemVuIGNvcHkgb2YgdGhlIG9iamVjdHMgc28g
d2UgY2FuIGl0ZXJhdGUgd2hpbGUgbmV3IG9uZXMgbWlnaHQgYmUgZGVzdHJveWVkLgotICAgIFZl
Y3RvcjxBY3RpdmVET01PYmplY3QqPiBwb3NzaWJsZUFjdGl2ZURPTU9iamVjdHM7Ci0gICAgY29w
eVRvVmVjdG9yKG1fYWN0aXZlRE9NT2JqZWN0cywgcG9zc2libGVBY3RpdmVET01PYmplY3RzKTsK
KyAgICBhdXRvIHBvc3NpYmxlQWN0aXZlRE9NT2JqZWN0cyA9IGNvcHlUb1ZlY3RvcihtX2FjdGl2
ZURPTU9iamVjdHMpOwogCiAgICAgbV9hY3RpdmVET01PYmplY3RBZGRpdGlvbkZvcmJpZGRlbiA9
IHRydWU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTMwLDkgKzkzMCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpjaGVja0lmTG9hZEkKICAgICAgICAgICAgIC8vIHNvbWUgb3RoZXIgY2FjaGUgaW4gdGhpcyBn
cm91cC4gVGhleSBhcmUgbm90IGFzc29jaWF0ZWQgd2l0aCB0aGUgZmFpbGVkIG5ldyBjYWNoZS4K
IAogICAgICAgICAgICAgLy8gTmVlZCB0byBjb3B5IGxvYWRlcnMsIGJlY2F1c2UgdGhlIGNhY2hl
IGdyb3VwIG1heSBiZSBkZXN0cm95ZWQgYXQgdGhlIGVuZCBvZiBpdGVyYXRpb24uCi0gICAgICAg
ICAgICBWZWN0b3I8RG9jdW1lbnRMb2FkZXIqPiBsb2FkZXJzOwotICAgICAgICAgICAgY29weVRv
VmVjdG9yKG1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVycywgbG9hZGVycyk7Ci0gICAgICAg
ICAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGxvYWRlcnMpCisgICAgICAgICAgICBmb3IgKGF1dG8m
IGxvYWRlciA6IGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMpKQog
ICAgICAgICAgICAgICAgIGRpc2Fzc29jaWF0ZURvY3VtZW50TG9hZGVyKCpsb2FkZXIpOyAvLyBU
aGlzIGNhbiBkZWxldGUgdGhpcyBncm91cC4KIAogICAgICAgICAgICAgLy8gUmVpbnN0YXRlIHRo
ZSBvbGROZXdlc3RDYWNoZSwgaWYgdGhlcmUgd2FzIG9uZS4KQEAgLTk3OSw4ICs5NzcsNyBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RhcnRMb2FkaW5nCiB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6ZGVsaXZlckRlbGF5ZWRNYWluUmVzb3VyY2VzKCkKIHsKICAgICAvLyBOZWVk
IHRvIGNvcHkgbG9hZGVycywgYmVjYXVzZSB0aGUgY2FjaGUgZ3JvdXAgbWF5IGJlIGRlc3Ryb3ll
ZCBhdCB0aGUgZW5kIG9mIGl0ZXJhdGlvbi4KLSAgICBWZWN0b3I8RG9jdW1lbnRMb2FkZXIqPiBs
b2FkZXJzOwotICAgIGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMs
IGxvYWRlcnMpOworICAgIGF1dG8gbG9hZGVycyA9IGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdNYXN0
ZXJSZXNvdXJjZUxvYWRlcnMpOwogICAgIGZvciAoYXV0byogbG9hZGVyIDogbG9hZGVycykgewog
ICAgICAgICBpZiAobG9hZGVyLT5pc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsOSArMjY1LDcgQEAgdm9pZCBN
ZW1vcnlDYWNoZTo6cHJ1bmVMaXZlUmVzb3VyY2VzKGJvbwogdm9pZCBNZW1vcnlDYWNoZTo6Zm9y
RWFjaFJlc291cmNlKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChDYWNoZWRSZXNvdXJjZSYpPiYg
ZnVuY3Rpb24pCiB7CiAgICAgZm9yIChhdXRvJiB1bnByb3RlY3RlZExSVUxpc3QgOiBtX2FsbFJl
c291cmNlcykgewotICAgICAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+PiBscnVMaXN0OwotICAgICAgICBjb3B5VG9WZWN0b3IoKnVucHJvdGVjdGVkTFJVTGlz
dCwgbHJ1TGlzdCk7Ci0gICAgICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiBscnVMaXN0KQorICAg
ICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogY29weVRvVmVjdG9yKCp1bnByb3RlY3RlZExSVUxp
c3QpKQogICAgICAgICAgICAgZnVuY3Rpb24oKnJlc291cmNlKTsKICAgICB9CiB9CkBAIC0zNjMs
OCArMzYxLDcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cHJ1bmVEZWFkUmVzb3VyY2VzVG9TaQogICAg
IGZvciAoaW50IGkgPSBtX2FsbFJlc291cmNlcy5zaXplKCkgLSAxOyBpID49IDA7IGktLSkgewog
ICAgICAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgTFJVTGlzdCBmaXJzdCAoYW5kIHJlZiB0aGUg
cmVzb3VyY2VzKSBhcyBjYWxsaW5nCiAgICAgICAgIC8vIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGNh
biBhbHRlciB0aGUgTFJVTGlzdC4KLSAgICAgICAgVmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPj4gbHJ1TGlzdDsKLSAgICAgICAgY29weVRvVmVjdG9yKCptX2FsbFJl
c291cmNlc1tpXSwgbHJ1TGlzdCk7CisgICAgICAgIGF1dG8gbHJ1TGlzdCA9IGNvcHlUb1ZlY3Rv
cigqbV9hbGxSZXNvdXJjZXNbaV0pOwogCiAgICAgICAgIC8vIEZpcnN0IGZsdXNoIGFsbCB0aGUg
ZGVjb2RlZCBkYXRhIGluIHRoaXMgcXVldWUuCiAgICAgICAgIC8vIFJlbW92ZSBmcm9tIHRoZSBo
ZWFkLCBzaW5jZSB0aGlzIGlzIHRoZSBsZWFzdCBmcmVxdWVudGx5IGFjY2Vzc2VkIG9mIHRoZSBv
YmplY3RzLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMjIzMTQ5
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00ODIsOSArNDgyLDcgQEAgdm9pZCBET01XaW5kb3c6OndpbGxEZXN0cm95Q2FjaGVkRnJhbWUo
KQogewogICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBjb3B5IG1fcHJvcGVydGllcyB0byBhIHNl
cGFyYXRlIHZlY3RvciBiZWNhdXNlIHRoZSBET01XaW5kb3dQcm9wZXJ0aWVzIG1heQogICAgIC8v
IHVucmVnaXN0ZXIgdGhlbXNlbHZlcyBmcm9tIHRoZSBET01XaW5kb3cgYXMgYSByZXN1bHQgb2Yg
dGhlIGNhbGwgdG8gd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1lLgotICAgIFZl
Y3RvcjxET01XaW5kb3dQcm9wZXJ0eSo+IHByb3BlcnRpZXM7Ci0gICAgY29weVRvVmVjdG9yKG1f
cHJvcGVydGllcywgcHJvcGVydGllcyk7Ci0gICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHByb3Bl
cnRpZXMpCisgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IGNvcHlUb1ZlY3RvcihtX3Byb3BlcnRp
ZXMpKQogICAgICAgICBwcm9wZXJ0eS0+d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNhY2hlZEZy
YW1lKCk7CiB9CiAKQEAgLTQ5Miw5ICs0OTAsNyBAQCB2b2lkIERPTVdpbmRvdzo6d2lsbERlc3Ry
b3lEb2N1bWVudEluRnJhCiB7CiAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5IHRvIGNvcHkgbV9wcm9w
ZXJ0aWVzIHRvIGEgc2VwYXJhdGUgdmVjdG9yIGJlY2F1c2UgdGhlIERPTVdpbmRvd1Byb3BlcnRp
ZXMgbWF5CiAgICAgLy8gdW5yZWdpc3RlciB0aGVtc2VsdmVzIGZyb20gdGhlIERPTVdpbmRvdyBh
cyBhIHJlc3VsdCBvZiB0aGUgY2FsbCB0byB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUu
Ci0gICAgVmVjdG9yPERPTVdpbmRvd1Byb3BlcnR5Kj4gcHJvcGVydGllczsKLSAgICBjb3B5VG9W
ZWN0b3IobV9wcm9wZXJ0aWVzLCBwcm9wZXJ0aWVzKTsKLSAgICBmb3IgKGF1dG8mIHByb3BlcnR5
IDogcHJvcGVydGllcykKKyAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogY29weVRvVmVjdG9yKG1f
cHJvcGVydGllcykpCiAgICAgICAgIHByb3BlcnR5LT53aWxsRGVzdHJveUdsb2JhbE9iamVjdElu
RnJhbWUoKTsKIH0KIApAQCAtNTAyLDkgKzQ5OCw3IEBAIHZvaWQgRE9NV2luZG93Ojp3aWxsRGV0
YWNoRG9jdW1lbnRGcm9tRnIKIHsKICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY29weSBtX3By
b3BlcnRpZXMgdG8gYSBzZXBhcmF0ZSB2ZWN0b3IgYmVjYXVzZSB0aGUgRE9NV2luZG93UHJvcGVy
dGllcyBtYXkKICAgICAvLyB1bnJlZ2lzdGVyIHRoZW1zZWx2ZXMgZnJvbSB0aGUgRE9NV2luZG93
IGFzIGEgcmVzdWx0IG9mIHRoZSBjYWxsIHRvIHdpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJh
bWUuCi0gICAgVmVjdG9yPERPTVdpbmRvd1Byb3BlcnR5Kj4gcHJvcGVydGllczsKLSAgICBjb3B5
VG9WZWN0b3IobV9wcm9wZXJ0aWVzLCBwcm9wZXJ0aWVzKTsKLSAgICBmb3IgKGF1dG8mIHByb3Bl
cnR5IDogcHJvcGVydGllcykKKyAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogY29weVRvVmVjdG9y
KG1fcHJvcGVydGllcykpCiAgICAgICAgIHByb3BlcnR5LT53aWxsRGV0YWNoR2xvYmFsT2JqZWN0
RnJvbUZyYW1lKCk7CiAKICAgICBpZiAobV9wZXJmb3JtYW5jZSkKQEAgLTU2Myw5ICs1NTcsNyBA
QCB2b2lkIERPTVdpbmRvdzo6ZGlzY29ubmVjdERPTVdpbmRvd1Byb3BlCiB7CiAgICAgLy8gSXQg
aXMgbmVjZXNzYXJ5IHRvIGNvcHkgbV9wcm9wZXJ0aWVzIHRvIGEgc2VwYXJhdGUgdmVjdG9yIGJl
Y2F1c2UgdGhlIERPTVdpbmRvd1Byb3BlcnRpZXMgbWF5CiAgICAgLy8gdW5yZWdpc3RlciB0aGVt
c2VsdmVzIGZyb20gdGhlIERPTVdpbmRvdyBhcyBhIHJlc3VsdCBvZiB0aGUgY2FsbCB0byBkaXNj
b25uZWN0RnJhbWVGb3JEb2N1bWVudFN1c3BlbnNpb24uCi0gICAgVmVjdG9yPERPTVdpbmRvd1By
b3BlcnR5Kj4gcHJvcGVydGllczsKLSAgICBjb3B5VG9WZWN0b3IobV9wcm9wZXJ0aWVzLCBwcm9w
ZXJ0aWVzKTsKLSAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogcHJvcGVydGllcykKKyAgICBmb3Ig
KGF1dG8mIHByb3BlcnR5IDogY29weVRvVmVjdG9yKG1fcHJvcGVydGllcykpCiAgICAgICAgIHBy
b3BlcnR5LT5kaXNjb25uZWN0RnJhbWVGb3JEb2N1bWVudFN1c3BlbnNpb24oKTsKIH0KIApAQCAt
NTc0LDkgKzU2Niw3IEBAIHZvaWQgRE9NV2luZG93OjpyZWNvbm5lY3RET01XaW5kb3dQcm9wZXIK
ICAgICBBU1NFUlQobV9zdXNwZW5kZWRGb3JEb2N1bWVudFN1c3BlbnNpb24pOwogICAgIC8vIEl0
IGlzIG5lY2Vzc2FyeSB0byBjb3B5IG1fcHJvcGVydGllcyB0byBhIHNlcGFyYXRlIHZlY3RvciBi
ZWNhdXNlIHRoZSBET01XaW5kb3dQcm9wZXJ0aWVzIG1heQogICAgIC8vIHVucmVnaXN0ZXIgdGhl
bXNlbHZlcyBmcm9tIHRoZSBET01XaW5kb3cgYXMgYSByZXN1bHQgb2YgdGhlIGNhbGwgdG8gcmVj
b25uZWN0RnJvbVBhZ2VDYWNoZS4KLSAgICBWZWN0b3I8RE9NV2luZG93UHJvcGVydHkqPiBwcm9w
ZXJ0aWVzOwotICAgIGNvcHlUb1ZlY3RvcihtX3Byb3BlcnRpZXMsIHByb3BlcnRpZXMpOwotICAg
IGZvciAoYXV0byYgcHJvcGVydHkgOiBwcm9wZXJ0aWVzKQorICAgIGZvciAoYXV0byYgcHJvcGVy
dHkgOiBjb3B5VG9WZWN0b3IobV9wcm9wZXJ0aWVzKSkKICAgICAgICAgcHJvcGVydHktPnJlY29u
bmVjdEZyYW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbihtX2ZyYW1lKTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9EZXZpY2VDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RldmljZUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RldmljZUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03Miw5ICs3Miw3IEBAIHZvaWQgRGV2aWNlQ29udHJvbGxlcjo6cmVtb3ZlQWxsRGV2aWNl
RXYKIAogdm9pZCBEZXZpY2VDb250cm9sbGVyOjpkaXNwYXRjaERldmljZUV2ZW50KEV2ZW50JiBl
dmVudCkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPERPTVdpbmRvdz4+IGxpc3RlbmVyVmVjdG9yOwot
ICAgIGNvcHlUb1ZlY3RvcihtX2xpc3RlbmVycywgbGlzdGVuZXJWZWN0b3IpOwotICAgIGZvciAo
YXV0byYgbGlzdGVuZXIgOiBsaXN0ZW5lclZlY3RvcikgeworICAgIGZvciAoYXV0byYgbGlzdGVu
ZXIgOiBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMpKSB7CiAgICAgICAgIGF1dG8gZG9jdW1lbnQg
PSBsaXN0ZW5lci0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYgKGRvY3VtZW50ICYmICFkb2N1bWVu
dC0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpICYmICFkb2N1bWVudC0+YWN0aXZlRE9N
T2JqZWN0c0FyZVN0b3BwZWQoKSkKICAgICAgICAgICAgIGxpc3RlbmVyLT5kaXNwYXRjaEV2ZW50
KGV2ZW50KTsKQEAgLTg2LDggKzg0LDcgQEAgdm9pZCBEZXZpY2VDb250cm9sbGVyOjpmaXJlRGV2
aWNlRXZlbnQoKQogICAgIEFTU0VSVChoYXNMYXN0RGF0YSgpKTsKIAogICAgIG1fdGltZXIuc3Rv
cCgpOwotICAgIFZlY3RvcjxSZWZQdHI8RE9NV2luZG93Pj4gbGlzdGVuZXJWZWN0b3I7Ci0gICAg
Y29weVRvVmVjdG9yKG1fbGFzdEV2ZW50TGlzdGVuZXJzLCBsaXN0ZW5lclZlY3Rvcik7CisgICAg
YXV0byBsaXN0ZW5lclZlY3RvciA9IGNvcHlUb1ZlY3RvcihtX2xhc3RFdmVudExpc3RlbmVycyk7
CiAgICAgbV9sYXN0RXZlbnRMaXN0ZW5lcnMuY2xlYXIoKTsKICAgICBmb3IgKGF1dG8mIGxpc3Rl
bmVyIDogbGlzdGVuZXJWZWN0b3IpIHsKICAgICAgICAgYXV0byBkb2N1bWVudCA9IGxpc3RlbmVy
LT5kb2N1bWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24g
MjIzMTQ5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MzQ0LDkgKzUzNDQsNyBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFJlbW92ZVdpZGdl
dEZyb21SZW5kCiAKIHN0YXRpYyBWZWN0b3I8UmVmUHRyPFdpZGdldD4+IGNvbGxlY3RBbmRQcm90
ZWN0V2lkZ2V0cyhjb25zdCBIYXNoU2V0PFdpZGdldCo+JiBzZXQpCiB7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxXaWRnZXQ+PiB3aWRnZXRzOwotICAgIGNvcHlUb1ZlY3RvcihzZXQsIHdpZGdldHMpOwot
ICAgIHJldHVybiB3aWRnZXRzOworICAgIHJldHVybiBjb3B5VG9WZWN0b3JPZjxSZWZQdHI8V2lk
Z2V0Pj4oc2V0KTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldFBvc2l0aW9ucygp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAJKHJldmlzaW9uIDIyMzE0
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDkgKzgzLDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZUNyaXRpY2FsTWVtb3J5KFN5
bmNocgogCiAgICAgQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5kcmFpbigpOwogCi0gICAgVmVj
dG9yPFJlZlB0cjxEb2N1bWVudD4+IGRvY3VtZW50czsKLSAgICBjb3B5VG9WZWN0b3IoRG9jdW1l
bnQ6OmFsbERvY3VtZW50cygpLCBkb2N1bWVudHMpOwotICAgIGZvciAoYXV0byYgZG9jdW1lbnQg
OiBkb2N1bWVudHMpIHsKKyAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogY29weVRvVmVjdG9yT2Y8
UmVmUHRyPERvY3VtZW50Pj4oRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSkgewogICAgICAgICBk
b2N1bWVudC0+c3R5bGVTY29wZSgpLmNsZWFyUmVzb2x2ZXIoKTsKICAgICAgICAgZG9jdW1lbnQt
PmZvbnRTZWxlY3RvcigpLmVtcHR5Q2FjaGVzKCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZS5jcHAJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsOSArMjcxLDcgQEAgdm9p
ZCBQZXJmb3JtYW5jZTo6cXVldWVFbnRyeShQZXJmb3JtYW5jZQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX3BlcmZvcm1hbmNlVGltZWxpbmVUYXNrUXVldWUuZW5xdWV1ZVRhc2soW3RoaXNdICgp
IHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxQZXJmb3JtYW5jZU9ic2VydmVyPj4gb2JzZXJ2ZXJz
OwotICAgICAgICBjb3B5VG9WZWN0b3IobV9vYnNlcnZlcnMsIG9ic2VydmVycyk7Ci0gICAgICAg
IGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBvYnNlcnZlcnMpCisgICAgICAgIGZvciAoYXV0byYgb2Jz
ZXJ2ZXIgOiBjb3B5VG9WZWN0b3IobV9vYnNlcnZlcnMpKQogICAgICAgICAgICAgb2JzZXJ2ZXIt
PmRlbGl2ZXIoKTsKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1Bhc3RlYm9hcmRDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0JKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTY1LDkgKzE2NSw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9y
TGVnYWMKICAgICBmb3IgKGF1dG8mIGNvY29hVHlwZSA6IGNvY29hVHlwZXMpCiAgICAgICAgIGFk
ZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShyZXN1bHQsIGNvY29hVHlwZSk7CiAKLSAg
ICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBjb3B5VG9WZWN0b3IocmVzdWx0LCB0eXBlcyk7
Ci0gICAgcmV0dXJuIHR5cGVzOworICAgIHJldHVybiBjb3B5VG9WZWN0b3IocmVzdWx0KTsKIH0K
IAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAJ
KHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsOCArODYs
NyBAQCBMUkVTVUxUIExheWVyQ2hhbmdlc0ZsdXNoZXI6Omhvb2tGaXJlZChpCiAKICAgICAvLyBD
YWxsaW5nIG91dCB0byB0aGUgaG9zdHMgY2FuIGNhdXNlIG1faG9zdHNXaXRoQ2hhbmdlc1RvRmx1
c2ggdG8gYmUgbW9kaWZpZWQsIHNvIHdlIGNvcHkgaXQKICAgICAvLyBpbnRvIGEgVmVjdG9yIGZp
cnN0LgotICAgIFZlY3RvcjxBYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0Kj4gaG9zdHM7Ci0gICAg
Y29weVRvVmVjdG9yKG1faG9zdHNXaXRoQ2hhbmdlc1RvRmx1c2gsIGhvc3RzKTsKKyAgICBhdXRv
IGhvc3RzID0gY29weVRvVmVjdG9yKG1faG9zdHNXaXRoQ2hhbmdlc1RvRmx1c2gpOwogICAgIG1f
aG9zdHNXaXRoQ2hhbmdlc1RvRmx1c2guY2xlYXIoKTsKIAogICAgIG1faXNDYWxsaW5nSG9zdHMg
PSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dENhY2hlQ29yZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkocmV2aXNpb24gMjIzMTQ5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDgsOSArNzQ4LDcgQEAgVmVjdG9yPFN0cmluZz4g
Rm9udENhY2hlOjpzeXN0ZW1Gb250RmFtaQogICAgICAgICAgICAgdmlzaXRlZC5hZGQoZmFtaWx5
TmFtZS5nZXQoKSk7CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwotICAgIGNv
cHlUb1ZlY3Rvcih2aXNpdGVkLCByZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0
dXJuIGNvcHlUb1ZlY3Rvcih2aXNpdGVkKTsKIH0KIAogc3RhdGljIENURm9udFN5bWJvbGljVHJh
aXRzIGNvbXB1dGVUcmFpdHMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBh
c3RlYm9hcmRJT1MubW0JKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4MSw5
ICszODEsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzCiAgICAg
ICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKFN0cmluZzo6ZnJvbVVURjgoY29lcmNlZFR5
cGUpKTsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7Ci0gICAgY29weVRvVmVj
dG9yKGRvbVBhc3RlYm9hcmRUeXBlcywgcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IHJldHVybiBjb3B5VG9WZWN0b3IoZG9tUGFzdGVib2FyZFR5cGVzKTsKIH0KIAogbG9uZyBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9u
TWFuYWdlci5tbQkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsMTAgKzIy
Myw4IEBAIC0gKHZvaWQpc2VuZEFjY2VsZXJvbWV0ZXJEYXRhOihDTUFjY2VsZXIKICAgICBXZWJU
aHJlYWRSdW4oXnsKICAgICAgICAgQ01BY2NlbGVyYXRpb24gYWNjZWwgPSBuZXdBY2NlbGVyYXRp
b24uYWNjZWxlcmF0aW9uOwogCi0gICAgICAgIFZlY3RvcjxXZWJDb3JlOjpEZXZpY2VNb3Rpb25D
bGllbnRJT1MqPiBjbGllbnRzOwotICAgICAgICBjb3B5VG9WZWN0b3IobV9kZXZpY2VNb3Rpb25D
bGllbnRzLCBjbGllbnRzKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbGllbnRz
LnNpemUoKTsgKytpKQotICAgICAgICAgICAgY2xpZW50c1tpXS0+bW90aW9uQ2hhbmdlZCgwLCAw
LCAwLCBhY2NlbC54ICoga0dyYXZpdHksIGFjY2VsLnkgKiBrR3Jhdml0eSwgYWNjZWwueiAqIGtH
cmF2aXR5LCAwLCAwLCAwKTsKKyAgICAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBjb3B5VG9WZWN0
b3IobV9kZXZpY2VNb3Rpb25DbGllbnRzKSkKKyAgICAgICAgICAgIGNsaWVudC0+bW90aW9uQ2hh
bmdlZCgwLCAwLCAwLCBhY2NlbC54ICoga0dyYXZpdHksIGFjY2VsLnkgKiBrR3Jhdml0eSwgYWNj
ZWwueiAqIGtHcmF2aXR5LCAwLCAwLCAwKTsKICAgICB9KTsKIH0KIApAQCAtMjQzLDE4ICsyNDEs
MTIgQEAgLSAodm9pZClzZW5kTW90aW9uRGF0YTooQ01EZXZpY2VNb3Rpb24gKgogCiAgICAgICAg
IENNUm90YXRpb25SYXRlIHJvdGF0aW9uUmF0ZSA9IG5ld01vdGlvbi5yb3RhdGlvblJhdGU7CiAK
LSAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkRldmljZU1vdGlvbkNsaWVudElPUyo+IG1vdGlvbkNs
aWVudHM7Ci0gICAgICAgIGNvcHlUb1ZlY3RvcihtX2RldmljZU1vdGlvbkNsaWVudHMsIG1vdGlv
bkNsaWVudHMpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vdGlvbkNsaWVudHMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIG1vdGlvbkNsaWVudHNbaV0tPm1vdGlvbkNoYW5n
ZWQodXNlckFjY2VsLnggKiBrR3Jhdml0eSwgdXNlckFjY2VsLnkgKiBrR3Jhdml0eSwgdXNlckFj
Y2VsLnogKiBrR3Jhdml0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdG90YWxBY2NlbC54ICoga0dyYXZpdHksIHRvdGFsQWNjZWwueSAqIGtHcmF2aXR5LCB0
b3RhbEFjY2VsLnogKiBrR3Jhdml0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmFkMmRlZyhyb3RhdGlvblJhdGUueCksIHJhZDJkZWcocm90YXRpb25SYXRl
LnkpLCByYWQyZGVnKHJvdGF0aW9uUmF0ZS56KSk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChh
dXRvJiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9kZXZpY2VNb3Rpb25DbGllbnRzKSkKKyAgICAg
ICAgICAgIGNsaWVudC0+bW90aW9uQ2hhbmdlZCh1c2VyQWNjZWwueCAqIGtHcmF2aXR5LCB1c2Vy
QWNjZWwueSAqIGtHcmF2aXR5LCB1c2VyQWNjZWwueiAqIGtHcmF2aXR5LCB0b3RhbEFjY2VsLngg
KiBrR3Jhdml0eSwgdG90YWxBY2NlbC55ICoga0dyYXZpdHksIHRvdGFsQWNjZWwueiAqIGtHcmF2
aXR5LCByYWQyZGVnKHJvdGF0aW9uUmF0ZS54KSwgcmFkMmRlZyhyb3RhdGlvblJhdGUueSksIHJh
ZDJkZWcocm90YXRpb25SYXRlLnopKTsKIAogICAgICAgICBDTUF0dGl0dWRlKiBhdHRpdHVkZSA9
IG5ld01vdGlvbi5hdHRpdHVkZTsKIAotICAgICAgICBWZWN0b3I8V2ViQ29yZTo6RGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRJT1MqPiBvcmllbnRhdGlvbkNsaWVudHM7Ci0gICAgICAgIGNvcHlUb1Zl
Y3RvcihtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50cywgb3JpZW50YXRpb25DbGllbnRzKTsKKyAg
ICAgICAgYXV0byBvcmllbnRhdGlvbkNsaWVudHMgPSBjb3B5VG9WZWN0b3IobV9kZXZpY2VPcmll
bnRhdGlvbkNsaWVudHMpOwogCiAgICAgICAgIC8vIENvbXBvc2UgdGhlIHJhdyBtb3Rpb24gZGF0
YSB0byBhbiBpbnRlcm1lZGlhdGUgWlhZLWJhc2VkIDN4MyByb3RhdGlvbgogICAgICAgICAvLyBt
YXRyaXggKFIpIHdoZXJlIFt6PWF0dGl0dWRlLnlhdywgeD1hdHRpdHVkZS5waXRjaCwgeT1hdHRp
dHVkZS5yb2xsXQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFz
dGVib2FyZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjcsOSArMTI3LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0
eXBlcwogICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZChTdHJpbmc6OmZyb21VVEY4
KGRvbVR5cGUpKTsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7Ci0gICAgY29w
eVRvVmVjdG9yKGRvbVBhc3RlYm9hcmRUeXBlcywgcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0
OworICAgIHJldHVybiBjb3B5VG9WZWN0b3IoZG9tUGFzdGVib2FyZFR5cGVzKTsKIH0KIAogbG9u
ZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBk
YXRhKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQkocmV2aXNpb24gMjIzMTQ5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNyArMjAzLDcgQEAgLSAodm9pZClpbnZhbGlkYXRl
QW5kQ2FuY2VsCiAgICAgVmVjdG9yPFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2s+PiB0YXNrc0NvcHk7CiAgICAgewogICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKF9kYXRh
VGFza3NMb2NrKTsKLSAgICAgICAgY29weVRvVmVjdG9yKF9kYXRhVGFza3MsIHRhc2tzQ29weSk7
CisgICAgICAgIHRhc2tzQ29weSA9IGNvcHlUb1ZlY3RvcihfZGF0YVRhc2tzKTsKICAgICB9CiAK
ICAgICBmb3IgKGF1dG8mIHRhc2sgOiB0YXNrc0NvcHkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3Miw5ICsyNzIsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0Zv
ckxlZ2FjCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiB2ZWN0b3I7Ci0g
ICAgY29weVRvVmVjdG9yKHJlc3VsdHMsIHZlY3Rvcik7Ci0gICAgcmV0dXJuIHZlY3RvcjsKKyAg
ICByZXR1cm4gY29weVRvVmVjdG9yKHJlc3VsdHMpOwogfQogCiBTdHJpbmcgUGFzdGVib2FyZDo6
cmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMTUsOCArMTAx
NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmVuZEFuZENvbW1pdFVwZGF0ZVNjcm8KICAgICAvLyBm
cm9tIHRoZSB0cmFuc2FjdGlvbiBzdGFjayB0byBlbnN1cmUgdGhhdCBhbGwgc3Vic2VxdWVudCBj
YWxscyB0byBSZW5kZXJCbG9jazo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCkKICAgICAv
LyBhcmUgZGlzcGF0Y2hlZCBpbW1lZGlhdGVseS4gVGhhdCBpcywgdG8gZW5zdXJlIHRoYXQgc3Vj
aCBzdWJzZXF1ZW50IGNhbGxzIGFyZW4ndCBhZGRlZCB0byB8dHJhbnNhY3Rpb258CiAgICAgLy8g
d2hpbGUgd2UgYXJlIHByb2Nlc3NpbmcgaXQuCi0gICAgVmVjdG9yPFJlbmRlckJsb2NrKj4gYmxv
Y2tzVG9VcGRhdGU7Ci0gICAgY29weVRvVmVjdG9yKHRyYW5zYWN0aW9uLT5ibG9ja3MsIGJsb2Nr
c1RvVXBkYXRlKTsKKyAgICBhdXRvIGJsb2Nrc1RvVXBkYXRlID0gY29weVRvVmVjdG9yKHRyYW5z
YWN0aW9uLT5ibG9ja3MpOwogICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0
aW9uU3RhY2soKS0+cmVtb3ZlTGFzdCgpOwogICAgIGlmICh1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJM
YXlvdXRUcmFuc2FjdGlvblN0YWNrKCktPmlzRW1wdHkoKSkKICAgICAgICAgdXBkYXRlU2Nyb2xs
SW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpID0gbnVsbHB0cjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCShy
ZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tM
aW5lTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMxLDcgKzUzMSw3IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBzZXRMb2dpY2FsV2lkdGhGb3JUZXgKICAgICAgICAgQVNTRVJUKHJ1bi0+Ym94
KCktPmJlaGF2ZXNMaWtlVGV4dCgpKTsKICAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNr
Rm9udHNNYXA6Oml0ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKGRvd25jYXN0PElubGlu
ZVRleHRCb3g+KHJ1bi0+Ym94KCkpLCBzdGQ6Om1ha2VfcGFpcihWZWN0b3I8Y29uc3QgRm9udCo+
KCksIEdseXBoT3ZlcmZsb3coKSkpLml0ZXJhdG9yOwogICAgICAgICBBU1NFUlQoaXQtPnZhbHVl
LmZpcnN0LmlzRW1wdHkoKSk7Ci0gICAgICAgIGNvcHlUb1ZlY3RvcihmYWxsYmFja0ZvbnRzLCBp
dC0+dmFsdWUuZmlyc3QpOworICAgICAgICBpdC0+dmFsdWUuZmlyc3QgPSBjb3B5VG9WZWN0b3Io
ZmFsbGJhY2tGb250cyk7CiAgICAgICAgIHJ1bi0+Ym94KCktPnBhcmVudCgpLT5jbGVhckRlc2Nl
bmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUoKTsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3guY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMs
NyArODMsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBjb3B5K3Nv
cnQgdGhlIHZhbHVlcyBvbmNlIHBlciBsYXlvdXQgZXZlbiBpZiB0aGUgaXRlcmF0b3IgaXMgcmVz
ZXQuCiAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KG1fb3JkaW5h
bFZhbHVlcy5zaXplKCkpICE9IG1fc29ydGVkT3JkaW5hbFZhbHVlcy5zaXplKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvcHlUb1ZlY3RvcihtX29yZGluYWxWYWx1ZXMsIG1fc29ydGVk
T3JkaW5hbFZhbHVlcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3NvcnRlZE9yZGluYWxW
YWx1ZXMgPSBjb3B5VG9WZWN0b3IobV9vcmRpbmFsVmFsdWVzKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6c29ydChtX3NvcnRlZE9yZGluYWxWYWx1ZXMuYmVnaW4oKSwgbV9zb3J0ZWRP
cmRpbmFsVmFsdWVzLmVuZCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICBtX2N1cnJlbnRPcmRpbmFsID0gbV9mb3J3YXJkID8gbV9zb3J0ZWRPcmRpbmFsVmFs
dWVzW21fb3JkaW5hbEl0ZXJhdGlvbiAtIDFdIDogbV9zb3J0ZWRPcmRpbmFsVmFsdWVzW21fc29y
dGVkT3JkaW5hbFZhbHVlcy5zaXplKCkgLSBtX29yZGluYWxJdGVyYXRpb25dOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHJldmlz
aW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEyLDggKzEzMTIsNyBAQCB2b2lkIFJlbmRlclRh
YmxlU2VjdGlvbjo6cGFpbnRPYmplY3QoUGFpCiAjZW5kaWYKIAogICAgICAgICAgICAgLy8gVG8g
bWFrZSBzdXJlIHdlIHByb3Blcmx5IHJlcGFpbnQgdGhlIHNlY3Rpb24sIHdlIHJlcGFpbnQgYWxs
IHRoZSBvdmVyZmxvd2luZyBjZWxscyB0aGF0IHdlIGNvbGxlY3RlZC4KLSAgICAgICAgICAgIFZl
Y3RvcjxSZW5kZXJUYWJsZUNlbGwqPiBjZWxsczsKLSAgICAgICAgICAgIGNvcHlUb1ZlY3Rvciht
X292ZXJmbG93aW5nQ2VsbHMsIGNlbGxzKTsKKyAgICAgICAgICAgIGF1dG8gY2VsbHMgPSBjb3B5
VG9WZWN0b3IobV9vdmVyZmxvd2luZ0NlbGxzKTsKIAogICAgICAgICAgICAgSGFzaFNldDxSZW5k
ZXJUYWJsZUNlbGwqPiBzcGFubmluZ0NlbGxzOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjIz
MTQ5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwzNCBAQAorMjAxNy0xMC0xMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJlbW92ZSBvdXQtcGFyYW1ldGVyIHZhcmlhbnRzIG9mIGNvcHlUb1ZlY3RvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0Nv
Y29hL19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2Jq
ZWN0SW50ZXJmYWNlIGRlYnVnRGVzY3JpcHRpb25dKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpkdW1wKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpwZW5kaW5nQ29va2llcyBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9Q
cm9jZXNzQXNzZXJ0aW9uSU9TLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NBc3NlcnRpb25CYWNr
Z3JvdW5kVGFza01hbmFnZXIgX25vdGlmeUNsaWVudHNPZkltbWluZW50U3VzcGVuc2lvbl0pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3Np
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRv
RGV0ZXJtaW5lUG9zaXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjppbnRl
cm5hbGx5RmFpbGVkTG9hZFRpbWVyRmlyZWQpOgorCisgICAgICAgICAgICBSZXBsYWNlIG91dC1w
YXJhbWV0ZXIgYmFzZWQgY29weVRvVmVjdG9yLCB3aXRoIG9uZSB0aGF0IHJldHVybnMgYSBWZWN0
b3IuCisKIDIwMTctMTAtMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXBsYWNlIGNvcHlLZXlzVG9WZWN0b3IvY29weVZhbHVlc1RvVmVjdG9yIHdpdGggY29weVRv
VmVjdG9yKG1hcC5rZXlzKCkpL2NvcHlUb1ZlY3RvcihtYXAudmFsdWVzKCkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmpl
Y3RJbnRlcmZhY2UubW0JKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAg
LTIxMyw5ICsyMTMsNyBAQCAgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU3Ry
CiAgICAgICAgIGF1dG8gZGVzY3JpcHRpb25Gb3JBcmd1bWVudCA9IFtdKGF1dG8mIGFsbG93ZWRB
cmd1bWVudENsYXNzZXMpIHsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05T
TXV0YWJsZVN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJ7Il0pOwogCi0gICAgICAgICAg
ICBWZWN0b3I8Q2xhc3M+IG9yZGVyZWRBcmd1bWVudENsYXNzZXM7Ci0gICAgICAgICAgICBjb3B5
VG9WZWN0b3IoYWxsb3dlZEFyZ3VtZW50Q2xhc3Nlcywgb3JkZXJlZEFyZ3VtZW50Q2xhc3Nlcyk7
Ci0KKyAgICAgICAgICAgIGF1dG8gb3JkZXJlZEFyZ3VtZW50Q2xhc3NlcyA9IGNvcHlUb1ZlY3Rv
cihhbGxvd2VkQXJndW1lbnRDbGFzc2VzKTsKICAgICAgICAgICAgIHN0ZDo6c29ydChvcmRlcmVk
QXJndW1lbnRDbGFzc2VzLmJlZ2luKCksIG9yZGVyZWRBcmd1bWVudENsYXNzZXMuZW5kKCksIFtd
KENsYXNzIGEsIENsYXNzIGIpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gQ1N0cmluZyhjbGFz
c19nZXROYW1lKGEpKSA8IENTdHJpbmcoY2xhc3NfZ2V0TmFtZShiKSk7CiAgICAgICAgICAgICB9
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFu
c2FjdGlvbi5jcHAJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTk5LDExICs1OTksOCBAQCBzdGF0aWMgdm9pZCBkdW1wKFRleHRT
dHJlYW0mIHRzLCBjb25zdCBTCiAgICAgaWYgKHN0YXRlVHJlZS5yb290U3RhdGVOb2RlKCkpCiAg
ICAgICAgIHJlY3Vyc2l2ZUR1bXBOb2Rlcyh0cywgKnN0YXRlVHJlZS5yb290U3RhdGVOb2RlKCks
IGNoYW5nZWRQcm9wZXJ0aWVzT25seSk7CiAKLSAgICBpZiAoIXN0YXRlVHJlZS5yZW1vdmVkTm9k
ZXMoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgVmVjdG9yPFNjcm9sbGluZ05vZGVJRD4gcmVtb3Zl
ZE5vZGVzOwotICAgICAgICBjb3B5VG9WZWN0b3Ioc3RhdGVUcmVlLnJlbW92ZWROb2RlcygpLCBy
ZW1vdmVkTm9kZXMpOwotICAgICAgICB0cy5kdW1wUHJvcGVydHk8VmVjdG9yPFNjcm9sbGluZ05v
ZGVJRD4+KCJyZW1vdmVkLW5vZGVzIiwgcmVtb3ZlZE5vZGVzKTsKLSAgICB9CisgICAgaWYgKCFz
dGF0ZVRyZWUucmVtb3ZlZE5vZGVzKCkuaXNFbXB0eSgpKQorICAgICAgICB0cy5kdW1wUHJvcGVy
dHk8VmVjdG9yPFNjcm9sbGluZ05vZGVJRD4+KCJyZW1vdmVkLW5vZGVzIiwgY29weVRvVmVjdG9y
KHN0YXRlVHJlZS5yZW1vdmVkTm9kZXMoKSkpOwogfQogCiBXVEY6OkNTdHJpbmcgUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMjMxNDkp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NjE0LDExICs1NjE0LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRl
KFJlc2V0U3RhdGUKICAgICBtX2NhbGxiYWNrcy5pbnZhbGlkYXRlKGVycm9yKTsKICAgICBtX2xv
YWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5jbGVhcigpOwogCi0gICAgVmVjdG9yPFdlYkVk
aXRDb21tYW5kUHJveHkqPiBlZGl0Q29tbWFuZFZlY3RvcjsKLSAgICBjb3B5VG9WZWN0b3IobV9l
ZGl0Q29tbWFuZFNldCwgZWRpdENvbW1hbmRWZWN0b3IpOworICAgIGF1dG8gZWRpdENvbW1hbmRW
ZWN0b3IgPSBjb3B5VG9WZWN0b3IobV9lZGl0Q29tbWFuZFNldCk7CiAgICAgbV9lZGl0Q29tbWFu
ZFNldC5jbGVhcigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZWRpdENvbW1hbmRW
ZWN0b3Iuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBlZGl0Q29tbWFuZFZlY3Rvcltp
XS0+aW52YWxpZGF0ZSgpOworCisgICAgZm9yIChhdXRvJiBlZGl0Q29tbWFuZCA6IGVkaXRDb21t
YW5kVmVjdG9yKQorICAgICAgICBlZGl0Q29tbWFuZC0+aW52YWxpZGF0ZSgpOwogCiAgICAgbV9h
Y3RpdmVQb3B1cE1lbnUgPSBudWxscHRyOwogICAgIG1fbWVkaWFTdGF0ZSA9IE1lZGlhUHJvZHVj
ZXI6OklzTm90UGxheWluZzsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEwLDE2ICs3MTAsMTYgQEAg
V2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogICAgIHBhcmFtZXRlcnMu
Y2FjaGVNb2RlbCA9IGNhY2hlTW9kZWwoKTsKICAgICBwYXJhbWV0ZXJzLmxhbmd1YWdlcyA9IHVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKIAotICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1Jl
Z2lzdGVyQXNFbXB0eURvY3VtZW50LCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNF
bXB0eURvY3VtZW50KTsKLSAgICBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzU2Vj
dXJlLCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNTZWN1cmUpOwotICAgIGNvcHlU
b1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xp
Y3ksIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1
cml0eVBvbGljeSk7Ci0gICAgY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvU2V0RG9tYWluUmVsYXhh
dGlvbkZvcmJpZGRlbkZvciwgcGFyYW1ldGVycy51cmxTY2hlbWVzRm9yV2hpY2hEb21haW5SZWxh
eGF0aW9uSXNGb3JiaWRkZW4pOwotICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVy
QXNMb2NhbCwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTG9jYWwpOwotICAgIGNv
cHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNOb0FjY2VzcywgcGFyYW1ldGVycy51cmxT
Y2hlbWVzUmVnaXN0ZXJlZEFzTm9BY2Nlc3MpOwotICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNU
b1JlZ2lzdGVyQXNEaXNwbGF5SXNvbGF0ZWQsIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVy
ZWRBc0Rpc3BsYXlJc29sYXRlZCk7Ci0gICAgY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0
ZXJBc0NPUlNFbmFibGVkLCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5h
YmxlZCk7Ci0gICAgY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0Fsd2F5c1JldmFs
aWRhdGVkLCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNBbHdheXNSZXZhbGlkYXRl
ZCk7Ci0gICAgY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0NhY2hlUGFydGl0aW9u
ZWQsIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NhY2hlUGFydGl0aW9uZWQpOwor
ICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0VtcHR5RG9jdW1lbnQgPSBjb3B5
VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzRW1wdHlEb2N1bWVudCk7CisgICAgcGFyYW1l
dGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzU2VjdXJlID0gY29weVRvVmVjdG9yKG1fc2NoZW1l
c1RvUmVnaXN0ZXJBc1NlY3VyZSk7CisgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJl
ZEFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5ID0gY29weVRvVmVjdG9yKG1fc2NoZW1l
c1RvUmVnaXN0ZXJBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeSk7CisgICAgcGFyYW1l
dGVycy51cmxTY2hlbWVzRm9yV2hpY2hEb21haW5SZWxheGF0aW9uSXNGb3JiaWRkZW4gPSBjb3B5
VG9WZWN0b3IobV9zY2hlbWVzVG9TZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yKTsKKyAg
ICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNMb2NhbCA9IGNvcHlUb1ZlY3Rvciht
X3NjaGVtZXNUb1JlZ2lzdGVyQXNMb2NhbCk7CisgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEFzTm9BY2Nlc3MgPSBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzTm9B
Y2Nlc3MpOworICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0Rpc3BsYXlJc29s
YXRlZCA9IGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNEaXNwbGF5SXNvbGF0ZWQp
OworICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkID0gY29w
eVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0NPUlNFbmFibGVkKTsKKyAgICBwYXJhbWV0
ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNBbHdheXNSZXZhbGlkYXRlZCA9IGNvcHlUb1ZlY3Rv
cihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNBbHdheXNSZXZhbGlkYXRlZCk7CisgICAgcGFyYW1ldGVy
cy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ2FjaGVQYXJ0aXRpb25lZCA9IGNvcHlUb1ZlY3Rvciht
X3NjaGVtZXNUb1JlZ2lzdGVyQXNDYWNoZVBhcnRpdGlvbmVkKTsKIAogICAgIHBhcmFtZXRlcnMu
c2hvdWxkQWx3YXlzVXNlQ29tcGxleFRleHRDb2RlUGF0aCA9IG1fYWx3YXlzVXNlc0NvbXBsZXhU
ZXh0Q29kZVBhdGg7CiAgICAgcGFyYW1ldGVycy5zaG91bGRVc2VGb250U21vb3RoaW5nID0gbV9z
aG91bGRVc2VGb250U21vb3RoaW5nOwpAQCAtNzM4LDcgKzczOCw3IEBAIFdlYlByb2Nlc3NQcm94
eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU4KICNlbmRpZgogCiAgICAgcGFyYW1ldGVycy5wbHVn
SW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMgPSBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmF1dG9T
dGFydE9yaWdpbkhhc2hlc0NvcHkoKTsKLSAgICBjb3B5VG9WZWN0b3IobV9wbHVnSW5BdXRvU3Rh
cnRQcm92aWRlci5hdXRvU3RhcnRPcmlnaW5zKCksIHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0
T3JpZ2lucyk7CisgICAgcGFyYW1ldGVycy5wbHVnSW5BdXRvU3RhcnRPcmlnaW5zID0gY29weVRv
VmVjdG9yKG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuYXV0b1N0YXJ0T3JpZ2lucygpKTsKIAog
ICAgIHBhcmFtZXRlcnMubWVtb3J5Q2FjaGVEaXNhYmxlZCA9IG1fbWVtb3J5Q2FjaGVEaXNhYmxl
ZDsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzUyLDkgKzEzNTIsNyBAQCBTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyBXZWJzaXRlCiAKIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IFdlYnNpdGVEYXRhU3RvcmU6
OnBlbmRpbmdDb29raWVzKCkgY29uc3QKIHsKLSAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBj
b29raWVzOwotICAgIGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdDb29raWVzLCBjb29raWVzKTsKLSAg
ICByZXR1cm4gY29va2llczsKKyAgICByZXR1cm4gY29weVRvVmVjdG9yKG1fcGVuZGluZ0Nvb2tp
ZXMpOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmFkZFBlbmRpbmdDb29raWUoY29uc3Qg
V2ViQ29yZTo6Q29va2llJiBjb29raWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTcwLDcgKzcwLDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFT
dAogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIgPSBtX3Vp
UHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyOwogI2VuZGlmCiAKLSAgICBjb3B5VG9WZWN0
b3IobV9wZW5kaW5nQ29va2llcywgcGFyYW1ldGVycy5wZW5kaW5nQ29va2llcyk7CisgICAgcGFy
YW1ldGVycy5wZW5kaW5nQ29va2llcyA9IGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdDb29raWVzKTsK
IAogICAgIGlmICghY29va2llRmlsZS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShXZWJDb3JlOjpkaXJlY3RvcnlO
YW1lKGNvb2tpZUZpbGUpLCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFu
ZGxlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0aW9u
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Qcm9jZXNz
QXNzZXJ0aW9uSU9TLm1tCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTYsOSAr
OTYsOCBAQCAtICh2b2lkKXJlbW92ZUNsaWVudDooUHJvY2Vzc0Fzc2VydGlvbkNsCiAtICh2b2lk
KV9ub3RpZnlDbGllbnRzT2ZJbW1pbmVudFN1c3BlbnNpb24KIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwotICAgIFZlY3RvcjxQcm9jZXNzQXNzZXJ0aW9uQ2xpZW50Kj4gY2xpZW50
c1RvTm90aWZ5OwotICAgIGNvcHlUb1ZlY3RvcihfY2xpZW50cywgY2xpZW50c1RvTm90aWZ5KTsK
LSAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNsaWVudHNUb05vdGlmeSkKKworICAgIGZvciAoYXV0
byogY2xpZW50IDogY29weVRvVmVjdG9yKF9jbGllbnRzKSkKICAgICAgICAgY2xpZW50LT5hc3Nl
cnRpb25XaWxsRXhwaXJlSW1taW5lbnRseSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAkocmV2aXNp
b24gMjIzMTQ5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2ll
TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDEwICs2MCw3IEBAIHZvaWQgV2ViQ29v
a2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aEMKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Np
b24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAg
ICAgICAgIFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKCpzdG9yYWdlU2Vzc2lvbiwg
aG9zdG5hbWVzKTsKIAotICAgIFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lTGlzdDsKLSAgICBjb3B5
VG9WZWN0b3IoaG9zdG5hbWVzLCBob3N0bmFtZUxpc3QpOwotCi0gICAgbV9wcm9jZXNzLnNlbmQo
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMoaG9zdG5hbWVMaXN0LCBjYWxsYmFja0lEKSwgMCk7CisgICAgbV9wcm9jZXNzLnNlbmQoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6RGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
Y29weVRvVmVjdG9yKGhvc3RuYW1lcyksIGNhbGxiYWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFu
YWdlci5jcHAJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NCwxMyArOTQsMTEgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OnNldEVuYWJsZUhpZwog
dm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZENoYW5nZVBvc2l0aW9uKGNvbnN0IFdlYkdl
b2xvY2F0aW9uUG9zaXRpb246OkRhdGEmIGRhdGEpCiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9O
KQotICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbiA9IEdlb2xvY2F0aW9u
UG9zaXRpb246OmNyZWF0ZShkYXRhLnRpbWVzdGFtcCwgZGF0YS5sYXRpdHVkZSwgZGF0YS5sb25n
aXR1ZGUsIGRhdGEuYWNjdXJhY3ksIGRhdGEuY2FuUHJvdmlkZUFsdGl0dWRlLCBkYXRhLmFsdGl0
dWRlLCBkYXRhLmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5LCBkYXRhLmFsdGl0dWRlQWNjdXJh
Y3ksIGRhdGEuY2FuUHJvdmlkZUhlYWRpbmcsIGRhdGEuaGVhZGluZywgZGF0YS5jYW5Qcm92aWRl
U3BlZWQsIGRhdGEuc3BlZWQpOworICAgIGF1dG8gcG9zaXRpb24gPSBHZW9sb2NhdGlvblBvc2l0
aW9uOjpjcmVhdGUoZGF0YS50aW1lc3RhbXAsIGRhdGEubGF0aXR1ZGUsIGRhdGEubG9uZ2l0dWRl
LCBkYXRhLmFjY3VyYWN5LCBkYXRhLmNhblByb3ZpZGVBbHRpdHVkZSwgZGF0YS5hbHRpdHVkZSwg
ZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSwgZGF0YS5hbHRpdHVkZUFjY3VyYWN5LCBk
YXRhLmNhblByb3ZpZGVIZWFkaW5nLCBkYXRhLmhlYWRpbmcsIGRhdGEuY2FuUHJvdmlkZVNwZWVk
LCBkYXRhLnNwZWVkKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZT4+IHdlYlBhZ2VDb3B5
OwotICAgIGNvcHlUb1ZlY3RvcihtX3BhZ2VTZXQsIHdlYlBhZ2VDb3B5KTsKLSAgICBmb3IgKGF1
dG8mIHBhZ2UgOiB3ZWJQYWdlQ29weSkgeworICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1Zl
Y3RvcihtX3BhZ2VTZXQpKSB7CiAgICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQotICAgICAg
ICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5wb3Np
dGlvbkNoYW5nZWQocG9zaXRpb24uZ2V0KCkpOworICAgICAgICAgICAgR2VvbG9jYXRpb25Db250
cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5wb3NpdGlvbkNoYW5nZWQocG9zaXRpb24u
cHRyKCkpOwogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwpAQCAtMTEzLDkg
KzExMSw3IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRGYWlsVG9EZXQKICAgICAv
LyBGSVhNRTogQWRkIGxvY2FsaXplZCBlcnJvciBzdHJpbmcuCiAgICAgYXV0byBlcnJvciA9IEdl
b2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxh
YmxlLCBlcnJvck1lc3NhZ2UpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJQYWdlPj4gd2ViUGFn
ZUNvcHk7Ci0gICAgY29weVRvVmVjdG9yKG1fcGFnZVNldCwgd2ViUGFnZUNvcHkpOwotICAgIGZv
ciAoYXV0byYgcGFnZSA6IHdlYlBhZ2VDb3B5KSB7CisgICAgZm9yIChhdXRvJiBwYWdlIDogY29w
eVRvVmVjdG9yKG1fcGFnZVNldCkpIHsKICAgICAgICAgaWYgKHBhZ2UtPmNvcmVQYWdlKCkpCiAg
ICAgICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZS0+Y29yZVBhZ2UoKSkt
PmVycm9yT2NjdXJyZWQoZXJyb3IuZ2V0KCkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHJl
dmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU4LDExICsyNTgsOCBAQCB2b2lk
IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUludGVybmFsCiAKIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OmludGVybmFsbHlGYWlsZWRMb2FkVGltZXJGaXJlZCgpCiB7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxSZXNvdXJjZUxvYWRlcj4+IGludGVybmFsbHlGYWlsZWRSZXNvdXJjZUxvYWRlcnM7Ci0g
ICAgY29weVRvVmVjdG9yKG1faW50ZXJuYWxseUZhaWxlZFJlc291cmNlTG9hZGVycywgaW50ZXJu
YWxseUZhaWxlZFJlc291cmNlTG9hZGVycyk7Ci0gICAgCi0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBpbnRlcm5hbGx5RmFpbGVkUmVzb3VyY2VMb2FkZXJzLnNpemUoKTsgKytpKQotICAgICAg
ICBpbnRlcm5hbGx5RmFpbGVkUmVzb3VyY2VMb2FkZXJzW2ldLT5kaWRGYWlsKGludGVybmFsRXJy
b3IoaW50ZXJuYWxseUZhaWxlZFJlc291cmNlTG9hZGVyc1tpXS0+dXJsKCkpKTsKKyAgICBmb3Ig
KGF1dG8mIHJlc291cmNlTG9hZGVyIDogY29weVRvVmVjdG9yKG1faW50ZXJuYWxseUZhaWxlZFJl
c291cmNlTG9hZGVycykpCisgICAgICAgIHJlc291cmNlTG9hZGVyLT5kaWRGYWlsKGludGVybmFs
RXJyb3IocmVzb3VyY2VMb2FkZXItPnVybCgpKSk7CiB9CiAKIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnN0YXJ0TG9jYWxMb2FkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRl
cikKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzE0OSkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE4IEBACisyMDE3LTEwLTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmVtb3ZlIG91dC1wYXJhbWV0ZXIgdmFyaWFudHMgb2YgY29weVRvVmVjdG9yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgxNTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2MvV2ViR2Vv
bG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qcm92aWRl
cklPUyBfaGFuZGxlUGVuZGluZ0luaXRpYWxQb3NpdGlvbjpdKToKKyAgICAgICAgKC1bV2ViR2Vv
bG9jYXRpb25Qcm92aWRlcklPUyBwb3NpdGlvbkNoYW5nZWQ6XSk6CisgICAgICAgICgtW1dlYkdl
b2xvY2F0aW9uUHJvdmlkZXJJT1MgZXJyb3JPY2N1cnJlZDpdKToKKyAgICAgICAgKC1bV2ViR2Vv
bG9jYXRpb25Qcm92aWRlcklPUyByZXNldEdlb2xvY2F0aW9uXSk6CisKKyAgICAgICAgICAgIFJl
cGxhY2Ugb3V0LXBhcmFtZXRlciBiYXNlZCBjb3B5VG9WZWN0b3IsIHdpdGggb25lIHRoYXQgcmV0
dXJucyBhIFZlY3Rvci4KKwogMjAxNy0xMC0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJH
ZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTE2MCwxMCArMTYwLDggQEAgLSAodm9pZClfaGFuZGxlUGVuZGluZ0luaXRpYWxQ
b3NpdGlvbjooTgogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAKICAgICBpZiAo
X2xhc3RQb3NpdGlvbikgewotICAgICAgICBWZWN0b3I8V2ViVmlldyo+IHdlYlZpZXdzQ29weTsK
LSAgICAgICAgY29weVRvVmVjdG9yKF9wZW5kaW5nSW5pdGlhbFBvc2l0aW9uV2ViVmlldywgd2Vi
Vmlld3NDb3B5KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJWaWV3c0NvcHku
c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbd2ViVmlld3NDb3B5W2ldIF9nZW9sb2NhdGlvbkRp
ZENoYW5nZVBvc2l0aW9uOl9sYXN0UG9zaXRpb24uZ2V0KCldOworICAgICAgICBmb3IgKGF1dG8m
IHdlYlZpZXcgOiBjb3B5VG9WZWN0b3IoX3BlbmRpbmdJbml0aWFsUG9zaXRpb25XZWJWaWV3KSkK
KyAgICAgICAgICAgIFt3ZWJWaWV3IF9nZW9sb2NhdGlvbkRpZENoYW5nZVBvc2l0aW9uOl9sYXN0
UG9zaXRpb24uZ2V0KCldOwogICAgIH0KICAgICBhYm9ydFNlbmRMYXN0UG9zaXRpb24oc2VsZik7
CiB9CkBAIC0yOTUsMTAgKzI5Myw4IEBAIC0gKHZvaWQpcG9zaXRpb25DaGFuZ2VkOihXZWJHZW9s
b2NhdGlvblAKICAgICBhYm9ydFNlbmRMYXN0UG9zaXRpb24oc2VsZik7CiAKICAgICBfbGFzdFBv
c2l0aW9uID0gcG9zaXRpb247Ci0gICAgVmVjdG9yPFdlYlZpZXcqPiB3ZWJWaWV3c0NvcHk7Ci0g
ICAgY29weVRvVmVjdG9yKF9yZWdpc3RlcmVkV2ViVmlld3MsIHdlYlZpZXdzQ29weSk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJWaWV3c0NvcHkuc2l6ZSgpOyArK2kpCi0gICAgICAg
IFt3ZWJWaWV3c0NvcHkuYXQoaSkgX2dlb2xvY2F0aW9uRGlkQ2hhbmdlUG9zaXRpb246X2xhc3RQ
b3NpdGlvbi5nZXQoKV07CisgICAgZm9yIChhdXRvJiB3ZWJWaWV3IDogY29weVRvVmVjdG9yKF9y
ZWdpc3RlcmVkV2ViVmlld3MpKQorICAgICAgICBbd2ViVmlldyBfZ2VvbG9jYXRpb25EaWRDaGFu
Z2VQb3NpdGlvbjpfbGFzdFBvc2l0aW9uLmdldCgpXTsKIH0KIAogLSAodm9pZCllcnJvck9jY3Vy
cmVkOihOU1N0cmluZyAqKWVycm9yTWVzc2FnZQpAQCAtMzA3LDEwICszMDMsOCBAQCAtICh2b2lk
KWVycm9yT2NjdXJyZWQ6KE5TU3RyaW5nICopZXJyb3JNCiAKICAgICBfbGFzdFBvc2l0aW9uLmNs
ZWFyKCk7CiAKLSAgICBWZWN0b3I8V2ViVmlldyo+IHdlYlZpZXdzQ29weTsKLSAgICBjb3B5VG9W
ZWN0b3IoX3JlZ2lzdGVyZWRXZWJWaWV3cywgd2ViVmlld3NDb3B5KTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHdlYlZpZXdzQ29weS5zaXplKCk7ICsraSkKLSAgICAgICAgW3dlYlZpZXdz
Q29weS5hdChpKSBfZ2VvbG9jYXRpb25EaWRGYWlsV2l0aE1lc3NhZ2U6ZXJyb3JNZXNzYWdlXTsK
KyAgICBmb3IgKGF1dG8mIHdlYlZpZXcgOiBjb3B5VG9WZWN0b3IoX3JlZ2lzdGVyZWRXZWJWaWV3
cykpCisgICAgICAgIFt3ZWJWaWV3IF9nZW9sb2NhdGlvbkRpZEZhaWxXaXRoTWVzc2FnZTplcnJv
ck1lc3NhZ2VdOwogfQogCiAtICh2b2lkKXJlc2V0R2VvbG9jYXRpb24KQEAgLTMyNywxMCArMzIx
LDggQEAgLSAodm9pZClyZXNldEdlb2xvY2F0aW9uCiAgICAgYWJvcnRTZW5kTGFzdFBvc2l0aW9u
KHNlbGYpOwogCiAgICAgLy8gMikgUmVzZXQgdGhlIHZpZXdzLCBlYWNoIGZyYW1lIHdpbGwgcmVn
aXN0ZXIgYmFjayBpZiBuZWVkZWQuCi0gICAgVmVjdG9yPFdlYlZpZXcqPiB3ZWJWaWV3c0NvcHk7
Ci0gICAgY29weVRvVmVjdG9yKF90cmFja2VkV2ViVmlld3MsIHdlYlZpZXdzQ29weSk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJWaWV3c0NvcHkuc2l6ZSgpOyArK2kpCi0gICAgICAg
IFt3ZWJWaWV3c0NvcHkuYXQoaSkgX3Jlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uXTsKKyAg
ICBmb3IgKGF1dG8mIHdlYlZpZXcgOiBjb3B5VG9WZWN0b3IoX3RyYWNrZWRXZWJWaWV3cykpCisg
ICAgICAgIFt3ZWJWaWV3IF9yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbl07CiB9CiBAZW5k
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzE0OSkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDE3LTEwLTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmVtb3ZlIG91dC1wYXJhbWV0ZXIgdmFyaWFudHMgb2YgY29weVRvVmVjdG9yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgxNTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvV2Vi
TmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcg
ZGVzdHJveVBsdWdpbl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm1tOgorICAgICAgICAobmV3QXJyYXlXaXRoU3RyaW5ncyk6CisKKyAgICAgICAgICAgIFJlcGxh
Y2Ugb3V0LXBhcmFtZXRlciBiYXNlZCBjb3B5VG9WZWN0b3IsIHdpdGggb25lIHRoYXQgcmV0dXJu
cyBhIFZlY3Rvci4KKwogMjAxNy0xMC0xMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJlcGxhY2UgY29weUtleXNUb1ZlY3Rvci9jb3B5VmFsdWVzVG9WZWN0b3Igd2l0
aCBjb3B5VG9WZWN0b3IobWFwLmtleXMoKSkvY29weVRvVmVjdG9yKG1hcC52YWx1ZXMoKSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTE3Myw5ICsxMTczLDcgQEAgLSAodm9pZClkZXN0cm95UGx1Z2luCiAgICAgLy8gVG8gc3Rv
cCBhY3RpdmUgc3RyZWFtcyBpdCdzIG5lY2Vzc2FyeSB0byBpbnZva2Ugc3RvcCgpIG9uIGEgY29w
eSAKICAgICAvLyBvZiBzdHJlYW1zLiBUaGlzIGlzIGJlY2F1c2UgY2FsbGluZyBXZWJOZXRzY2Fw
ZVBsdWdpblN0cmVhbTo6c3RvcCgpIGFsc28gaGFzIHRoZSBzaWRlIGVmZmVjdAogICAgIC8vIG9m
IHJlbW92aW5nIGEgc3RyZWFtIGZyb20gdGhpcyBoYXNoIHNldC4KLSAgICBWZWN0b3I8UmVmUHRy
PFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtPj4gc3RyZWFtc0NvcHk7Ci0gICAgY29weVRvVmVjdG9y
KHN0cmVhbXMsIHN0cmVhbXNDb3B5KTsKLSAgICBmb3IgKGF1dG8mIHN0cmVhbTogc3RyZWFtc0Nv
cHkpCisgICAgZm9yIChhdXRvJiBzdHJlYW0gOiBjb3B5VG9WZWN0b3Ioc3RyZWFtcykpCiAgICAg
ICAgIHN0cmVhbS0+c3RvcCgpOwogCiAgICAgZm9yIChXZWJGcmFtZSAqZnJhbWUgaW4gW19wZW5k
aW5nRnJhbWVMb2FkcyBrZXlFbnVtZXJhdG9yXSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCShyZXZp
c2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtODksOCArODksNyBAQCBAaW50ZXJm
YWNlIFdlYkhUTUxSZXByZXNlbnRhdGlvblByaXZhdGUgCiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNB
cnJheT4gbmV3QXJyYXlXaXRoU3RyaW5ncyhjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPiYgc2V0KQogewotICAgIFZlY3RvcjxOU1N0cmluZyAqPiB2ZWN0b3I7
Ci0gICAgY29weVRvVmVjdG9yKHNldCwgdmVjdG9yKTsKKyAgICBhdXRvIHZlY3RvciA9IGNvcHlU
b1ZlY3Rvck9mPE5TU3RyaW5nICo+KHNldCk7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0FycmF5
IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6dmVjdG9yLmRhdGEoKSBjb3VudDp2ZWN0b3Iuc2l6ZSgp
XSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323416</attachid>
            <date>2017-10-11 07:52:08 -0700</date>
            <delta_ts>2017-10-11 10:20:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178155-20171011075207.patch</filename>
            <type>text/plain</type>
            <size>60253</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIzMTY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE3LTEwLTExICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVt
b3ZlIG91dC1wYXJhbWV0ZXIgdmFyaWFudHMgb2YgY29weVRvVmVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgxNTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1
Z1NlcnZlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpkaXNw
YXRjaEJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6ZGlzcGF0Y2hCcmVha3BvaW50QWN0aW9uU291bmQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hCcmVha3BvaW50QWN0aW9uUHJvYmUpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXJzZVNv
dXJjZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEZh
aWxlZFRvUGFyc2VTb3VyY2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZl
cjo6ZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKToKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgUmVwbGFjZSBvdXQtcGFyYW1ldGVyIGJhc2VkIGNvcHlUb1ZlY3Rvciwgd2l0aCBvbmUgdGhh
dCByZXR1cm5zIGEgVmVjdG9yLgorCiAyMDE3LTEwLTEwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlA
YXBwbGUuY29tPgogCiAgICAgICAgIFByb3RvdHlwZSBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiBzaG91
bGQgYmUgYSBkZWZlcnJlZCB0cmFuc2l0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAkocmV2aXNpb24gMjIz
MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw5ICsxNDUsNyBAQCB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpkaXNwYXRjaEJyZWFrcG9pCiAKICAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2Uo
bV9jYWxsaW5nTGlzdGVuZXJzLCB0cnVlKTsKIAotICAgIFZlY3RvcjxTY3JpcHREZWJ1Z0xpc3Rl
bmVyKj4gbGlzdGVuZXJzQ29weTsKLSAgICBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMsIGxpc3Rl
bmVyc0NvcHkpOwotICAgIGZvciAoYXV0byogbGlzdGVuZXIgOiBsaXN0ZW5lcnNDb3B5KQorICAg
IGZvciAoYXV0byogbGlzdGVuZXIgOiBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMpKQogICAgICAg
ICBsaXN0ZW5lci0+YnJlYWtwb2ludEFjdGlvbkxvZygqZXhlYywgbWVzc2FnZSk7CiB9CiAKQEAg
LTE2MSw5ICsxNTksNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEJyZWFrcG9p
CiAKICAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2UobV9jYWxsaW5nTGlzdGVuZXJzLCB0cnVl
KTsKIAotICAgIFZlY3RvcjxTY3JpcHREZWJ1Z0xpc3RlbmVyKj4gbGlzdGVuZXJzQ29weTsKLSAg
ICBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMsIGxpc3RlbmVyc0NvcHkpOwotICAgIGZvciAoYXV0
byogbGlzdGVuZXIgOiBsaXN0ZW5lcnNDb3B5KQorICAgIGZvciAoYXV0byogbGlzdGVuZXIgOiBj
b3B5VG9WZWN0b3IobV9saXN0ZW5lcnMpKQogICAgICAgICBsaXN0ZW5lci0+YnJlYWtwb2ludEFj
dGlvblNvdW5kKGJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMTc5LDkgKzE3
NSw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoQnJlYWtwb2kKIAogICAgIHVu
c2lnbmVkIHNhbXBsZUlkID0gbV9uZXh0UHJvYmVTYW1wbGVJZCsrOwogCi0gICAgVmVjdG9yPFNj
cmlwdERlYnVnTGlzdGVuZXIqPiBsaXN0ZW5lcnNDb3B5OwotICAgIGNvcHlUb1ZlY3RvcihtX2xp
c3RlbmVycywgbGlzdGVuZXJzQ29weSk7Ci0gICAgZm9yIChhdXRvKiBsaXN0ZW5lciA6IGxpc3Rl
bmVyc0NvcHkpCisgICAgZm9yIChhdXRvKiBsaXN0ZW5lciA6IGNvcHlUb1ZlY3RvcihtX2xpc3Rl
bmVycykpCiAgICAgICAgIGxpc3RlbmVyLT5icmVha3BvaW50QWN0aW9uUHJvYmUoKmV4ZWMsIGFj
dGlvbiwgbV9jdXJyZW50UHJvYmVCYXRjaElkLCBzYW1wbGVJZCwgc2FtcGxlVmFsdWUpOwogfQog
CkBAIC0yMjEsMTAgKzIxNSw4IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlk
UGFyc2UKICAgICBlbHNlCiAgICAgICAgIHNjcmlwdC5lbmRDb2x1bW4gPSBzb3VyY2VMZW5ndGgg
LSBsYXN0TGluZVN0YXJ0OwogCi0gICAgVmVjdG9yPFNjcmlwdERlYnVnTGlzdGVuZXIqPiBjb3B5
OwotICAgIGNvcHlUb1ZlY3RvcihsaXN0ZW5lcnMsIGNvcHkpOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY29weS5zaXplKCk7ICsraSkKLSAgICAgICAgY29weVtpXS0+ZGlkUGFyc2VTb3Vy
Y2Uoc291cmNlSUQsIHNjcmlwdCk7CisgICAgZm9yIChhdXRvKiBsaXN0ZW5lciA6IGNvcHlUb1Zl
Y3RvcihsaXN0ZW5lcnMpKQorICAgICAgICBsaXN0ZW5lci0+ZGlkUGFyc2VTb3VyY2Uoc291cmNl
SUQsIHNjcmlwdCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRmFpbGVk
VG9QYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzLCBTb3VyY2VQcm92aWRl
ciogc291cmNlUHJvdmlkZXIsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQpAQCAtMjMzLDEwICsyMjUsOCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRj
aEZhaWxlZFRvCiAgICAgU3RyaW5nIGRhdGEgPSBzb3VyY2VQcm92aWRlci0+c291cmNlKCkudG9T
dHJpbmcoKTsKICAgICBpbnQgZmlyc3RMaW5lID0gc291cmNlUHJvdmlkZXItPnN0YXJ0UG9zaXRp
b24oKS5tX2xpbmUub25lQmFzZWRJbnQoKTsKIAotICAgIFZlY3RvcjxTY3JpcHREZWJ1Z0xpc3Rl
bmVyKj4gY29weTsKLSAgICBjb3B5VG9WZWN0b3IobGlzdGVuZXJzLCBjb3B5KTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNvcHkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNvcHlbaV0tPmZh
aWxlZFRvUGFyc2VTb3VyY2UodXJsLCBkYXRhLCBmaXJzdExpbmUsIGVycm9yTGluZSwgZXJyb3JN
ZXNzYWdlKTsKKyAgICBmb3IgKGF1dG8qIGxpc3RlbmVyIDogY29weVRvVmVjdG9yKGxpc3RlbmVy
cykpCisgICAgICAgIGxpc3RlbmVyLT5mYWlsZWRUb1BhcnNlU291cmNlKHVybCwgZGF0YSwgZmly
c3RMaW5lLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnNvdXJjZVBhcnNlZChFeGVjU3RhdGUqIGV4ZWMsIFNvdXJjZVByb3ZpZGVyKiBzb3Vy
Y2VQcm92aWRlciwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCkBA
IC0yNzEsMTAgKzI2MSw4IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRnVuY3Rp
b24KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJz
KGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFj
ayBjYWxsYmFjaykKIHsKLSAgICBWZWN0b3I8U2NyaXB0RGVidWdMaXN0ZW5lcio+IGNvcHk7Ci0g
ICAgY29weVRvVmVjdG9yKGxpc3RlbmVycywgY29weSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb3B5LnNpemUoKTsgKytpKQotICAgICAgICAodGhpcy0+KmNhbGxiYWNrKShjb3B5W2ld
KTsKKyAgICBmb3IgKGF1dG8qIGxpc3RlbmVyIDogY29weVRvVmVjdG9yKGxpc3RlbmVycykpCisg
ICAgICAgICh0aGlzLT4qY2FsbGJhY2spKGxpc3RlbmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6bm90aWZ5RG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpCkluZGV4OiBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2
aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyNCBAQAorMjAxNy0xMC0xMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgor
CisgICAgICAgIFJlbW92ZSBvdXQtcGFyYW1ldGVyIHZhcmlhbnRzIG9mIGNvcHlUb1ZlY3Rvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTU1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvSGFz
aE1hcC5oOgorICAgICAgICAoV1RGOjpjb3B5VG9WZWN0b3IpOiBEZWxldGVkLgorICAgICAgICAq
IHd0Zi9IYXNoU2V0Lmg6CisgICAgICAgIChXVEY6OmNvcHlUb1ZlY3Rvcik6IERlbGV0ZWQuCisg
ICAgICAgIAorICAgICAgICAgICAgUmVtb3ZlIGNvcHlUb1ZlY3Rvci4KKyAgICAgICAgCisgICAg
ICAgICogd3RmL1ZlY3Rvci5oOgorICAgICAgICAoV1RGOjpjb3B5VG9WZWN0b3JTcGVjaWFsaXph
dGlvbik6CisgICAgICAgIAorICAgICAgICAgICAgQWRkIGFub3RoZXIgdmVyc2lvbiBvZiBjb3B5
VG9WZWN0b3IsIGNhbGxlZCBjb3B5VG9WZWN0b3JTcGVjaWFsaXphdGlvbiwgdGhhdCBhbGxvd3MK
KyAgICAgICAgICAgIHlvdSB0byBzcGVjaWZ5IHRoZSBlbnRpcmUgc3BlY2lhbGl6YXRpb24gZm9y
IHRoZSBWZWN0b3IgeW91IHdhbnQgdG8gY29weSB0by4gVGhpcworICAgICAgICAgICAgY2FuIGJl
IHVzZWZ1bCBpZiB5b3Ugd2FudCB5b3VyIHJlc3VsdGluZyBWZWN0b3IgdG8gaGF2ZSBhbiBpbmxp
bmUgY2FwYWNpdHkuIAorCiAyMDE3LTEwLTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVwbGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3
aXRoIGNvcHlUb1ZlY3RvcihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQpJ
bmRleDogU291cmNlL1dURi93dGYvSGFzaE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0hhc2hNYXAuaAkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dURi93dGYvSGFzaE1h
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzYsMTkgKzU3Niw2IEBAIGlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgSGFzaE1hcDxULCAKICAgICByZXR1cm4gIShhID09IGIpOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBl
bmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIHZvaWQgY29weVRvVmVjdG9yKGNvbnN0IEhhc2hN
YXA8VCwgVSwgViwgVywgWD4mIGNvbGxlY3Rpb24sIFkmIHZlY3RvcikKLXsKLSAgICB0eXBlZGVm
IHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9y
OwotCi0gICAgdmVjdG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNpemUoKSk7Ci0KLSAgICBpdGVyYXRv
ciBpdCA9IGNvbGxlY3Rpb24uYmVnaW4oKTsKLSAgICBpdGVyYXRvciBlbmQgPSBjb2xsZWN0aW9u
LmVuZCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGl0ICE9IGVuZDsgKytpdCwgKytpKQot
ICAgICAgICB2ZWN0b3JbaV0gPSB7ICgqaXQpLmtleSwgKCppdCkudmFsdWUgfTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6SGFzaE1hcDsKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL0hhc2hTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgJKHJl
dmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzU1LDEzICszNTUsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgVz4KLSAgICBp
bmxpbmUgdm9pZCBjb3B5VG9WZWN0b3IoY29uc3QgQyYgY29sbGVjdGlvbiwgVyYgdmVjdG9yKQot
ICAgIHsKLSAgICAgICAgdmVjdG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNpemUoKSk7Ci0gICAgICAg
IHN0ZDo6Y29weShjb2xsZWN0aW9uLmJlZ2luKCksIGNvbGxlY3Rpb24uZW5kKCksIHZlY3Rvci5i
ZWdpbigpKTsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWPgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQ29sbGVjdGlvbj4KICAgICBp
bmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjpvcGVyYXRvcj09KGNvbnN0IE90aGVyQ29sbGVj
dGlvbiYgb3RoZXJDb2xsZWN0aW9uKSBjb25zdApJbmRleDogU291cmNlL1dURi93dGYvVmVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVmVjdG9yLmgJKHJldmlzaW9uIDIyMzE0
OSkKKysrIFNvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjM0LDYg
KzE2MzQsMTcgQEAgVmVjdG9yPHR5cGVuYW1lIE1hcHBlcjxNYXBGdW5jdGlvbiwgU291cgogICAg
IHJldHVybiBNYXBwZXI8TWFwRnVuY3Rpb24sIFNvdXJjZVR5cGU+OjptYXAoc3RkOjpmb3J3YXJk
PFNvdXJjZVR5cGU+KHNvdXJjZSksIHN0ZDo6Zm9yd2FyZDxNYXBGdW5jdGlvbj4obWFwRnVuY3Rp
b24pKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRGVzdGluYXRpb25WZWN0b3IsIHR5cGVuYW1l
IENvbGxlY3Rpb24+CitpbmxpbmUgYXV0byBjb3B5VG9WZWN0b3JTcGVjaWFsaXphdGlvbihjb25z
dCBDb2xsZWN0aW9uJiBjb2xsZWN0aW9uKSAtPiBEZXN0aW5hdGlvblZlY3RvcgoreworICAgIERl
c3RpbmF0aW9uVmVjdG9yIHJlc3VsdDsKKyAgICAvLyBGSVhNRTogVXNlIHN0ZDo6c2l6ZSB3aGVu
IGF2YWlsYWJsZSBvbiBhbGwgY29tcGlsZXJzLgorICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGNvbGxlY3Rpb24uc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBjb2xsZWN0
aW9uKQorICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKGl0ZW0pOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIERlc3RpbmF0aW9uSXRlbVR5cGUsIHR5cGVu
YW1lIENvbGxlY3Rpb24+CiBpbmxpbmUgYXV0byBjb3B5VG9WZWN0b3JPZihjb25zdCBDb2xsZWN0
aW9uJiBjb2xsZWN0aW9uKSAtPiBWZWN0b3I8RGVzdGluYXRpb25JdGVtVHlwZT4KIHsKQEAgLTE2
NTcsNiArMTY2OCw3IEBAIHVzaW5nIFdURjo6VW5zYWZlVmVjdG9yT3ZlcmZsb3c7CiB1c2luZyBX
VEY6OlZlY3RvcjsKIHVzaW5nIFdURjo6Y29weVRvVmVjdG9yOwogdXNpbmcgV1RGOjpjb3B5VG9W
ZWN0b3JPZjsKK3VzaW5nIFdURjo6Y29weVRvVmVjdG9yU3BlY2lhbGl6YXRpb247CiB1c2luZyBX
VEY6OnJlbW92ZVJlcGVhdGVkRWxlbWVudHM7CiAKICNlbmRpZiAvLyBXVEZfVmVjdG9yX2gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDE3LTEwLTExICBTYW0gV2Vpbmln
ICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIG91dC1wYXJhbWV0ZXIgdmFyaWFu
dHMgb2YgY29weVRvVmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzgxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0b3BUaW1lcnNGb3JPbmVTaG90cyk6CisgICAgICAg
IChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6Y2FuY2VsQWxsUmVxdWVzdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246OmhhbmRsZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xv
Y2F0aW9uOjptYWtlU3VjY2Vzc0NhbGxiYWNrcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRyYW5z
YWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRBbGxSZXN1bHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCR2V0QWxsUmVzdWx0OjphbGxCbG9iRmlsZVBhdGhzIGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6bm90aWZ5Q3Vyc29y
c09mVmFsdWVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRl
eDo6bm90aWZ5Q3Vyc29yc09mQWxsUmVjb3Jkc0NoYW5nZWQpOgorICAgICAgICAqIGNzcy9DU1NG
b250U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpkaXNw
YXRjaEludmFsaWRhdGlvbkNhbGxiYWNrcyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojptb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc3VtZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZCk6CisgICAg
ICAgICogZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6Om5vdGlmeU9ic2VydmVyc0ludGVybmFsKToKKyAg
ICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRh
dGlvbk9ic2VydmVyOjpub3RpZnlNdXRhdGlvbk9ic2VydmVycyk6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmludmFsaWRhdGVOb2RlTGlzdEFu
ZENvbGxlY3Rpb25DYWNoZXMpOgorICAgICAgICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHA6
CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlzcGF0Y2hNZXNzYWdlUG9ydEV2ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9N
T2JqZWN0cyk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZM
b2FkSXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmRlbGl2ZXJEZWxheWVkTWFpblJlc291cmNlcyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpmb3JFYWNoUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnBydW5lRGVhZFJlc291cmNl
c1RvU2l6ZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93Ojp3aWxsRGVzdHJveUNhY2hlZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdpbmRvdzo6d2lsbERlc3Ryb3lEb2N1bWVudEluRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93Ojp3aWxsRGV0YWNoRG9jdW1lbnRGcm9tRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93OjpkaXNjb25uZWN0RE9NV2luZG93UHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6OnJlY29ubmVjdERPTVdpbmRvd1Byb3BlcnRpZXMpOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RBbmRQ
cm90ZWN0V2lkZ2V0cyk6CisgICAgICAgICogcGFnZS9NZW1vcnlSZWxlYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlbGVhc2VDcml0aWNhbE1lbW9yeSk6CisgICAgICAgICogcGFnZS9QZXJm
b3JtYW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6cXVldWVFbnRyeSk6
CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpzeXN0ZW1Gb250RmFtaWxpZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW06CisgICAg
ICAgICgtW1dlYkNvcmVNb3Rpb25NYW5hZ2VyIHNlbmRBY2NlbGVyb21ldGVyRGF0YTpdKToKKyAg
ICAgICAgKC1bV2ViQ29yZU1vdGlvbk1hbmFnZXIgc2VuZE1vdGlvbkRhdGE6d2l0aEhlYWRpbmc6
XSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFk
QW5kV3JpdGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbiBpbnZhbGlk
YXRlQW5kQ2FuY2VsXSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjplbmRBbmRDb21taXRVcGRhdGVTY3JvbGxJbmZv
QWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
TGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRMb2dpY2FsV2lkdGhGb3JUZXh0
UnVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZsZXhCb3hJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZVNlY3Rpb246OnBhaW50T2JqZWN0KToKKworICAgICAgICAgICAgUmVwbGFjZSBvdXQt
cGFyYW1ldGVyIGJhc2VkIGNvcHlUb1ZlY3Rvciwgd2l0aCBvbmUgdGhhdCByZXR1cm5zIGEgVmVj
dG9yLgorCiAyMDE3LTEwLTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVwbGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNvcHlU
b1ZlY3RvcihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQpAQCAtODI2NTcs
OCArODI3MzQsNiBAQAogICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6OnNldEludGVyZXN0ZWRJbkNhcHRpb25QcmVmZXJlbmNlQ2hhbmdlcyk6CiAgICAgICAg
ICogcGFnZS9ET01XaW5kb3cuY3BwOgogICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0
TWVzc2FnZSk6Ci0gICAgICAgICogcGFnZS9EZXZpY2VDb250cm9sbGVyLmNwcDoKLSAgICAgICAg
KFdlYkNvcmU6OkRldmljZUNvbnRyb2xsZXI6OmFkZERldmljZUV2ZW50TGlzdGVuZXIpOgogICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKICAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6c2NoZWR1bGVIb3ZlclN0YXRlVXBkYXRlKToKICAgICAgICAgKiBwYWdlL0V2ZW50U291
cmNlLmNwcDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb24uY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ2
LDkgKzU0Niw3IEBAIHZvaWQgR2VvbG9jYXRpb246OnN0b3BUaW1lcihHZW9Ob3RpZmllclYKIAog
dm9pZCBHZW9sb2NhdGlvbjo6c3RvcFRpbWVyc0Zvck9uZVNob3RzKCkKIHsKLSAgICBHZW9Ob3Rp
ZmllclZlY3RvciBjb3B5OwotICAgIGNvcHlUb1ZlY3RvcihtX29uZVNob3RzLCBjb3B5KTsKLSAg
ICAKKyAgICBhdXRvIGNvcHkgPSBjb3B5VG9WZWN0b3IobV9vbmVTaG90cyk7CiAgICAgc3RvcFRp
bWVyKGNvcHkpOwogfQogCkBAIC01NzQsOCArNTcyLDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6Y2Fu
Y2VsUmVxdWVzdHMoR2VvTm90aQogCiB2b2lkIEdlb2xvY2F0aW9uOjpjYW5jZWxBbGxSZXF1ZXN0
cygpCiB7Ci0gICAgR2VvTm90aWZpZXJWZWN0b3IgY29weTsKLSAgICBjb3B5VG9WZWN0b3IobV9v
bmVTaG90cywgY29weSk7CisgICAgYXV0byBjb3B5ID0gY29weVRvVmVjdG9yKG1fb25lU2hvdHMp
OwogICAgIGNhbmNlbFJlcXVlc3RzKGNvcHkpOwogICAgIG1fd2F0Y2hlcnMuZ2V0Tm90aWZpZXJz
VmVjdG9yKGNvcHkpOwogICAgIGNhbmNlbFJlcXVlc3RzKGNvcHkpOwpAQCAtNjAyLDggKzU5OSw3
IEBAIHZvaWQgR2VvbG9jYXRpb246OmNvcHlUb1NldChjb25zdCBHZW9Ob3QKIAogdm9pZCBHZW9s
b2NhdGlvbjo6aGFuZGxlRXJyb3IoUG9zaXRpb25FcnJvciYgZXJyb3IpCiB7Ci0gICAgR2VvTm90
aWZpZXJWZWN0b3Igb25lU2hvdHNDb3B5OwotICAgIGNvcHlUb1ZlY3RvcihtX29uZVNob3RzLCBv
bmVTaG90c0NvcHkpOworICAgIGF1dG8gb25lU2hvdHNDb3B5ID0gY29weVRvVmVjdG9yKG1fb25l
U2hvdHMpOwogCiAgICAgR2VvTm90aWZpZXJWZWN0b3Igd2F0Y2hlcnNDb3B5OwogICAgIG1fd2F0
Y2hlcnMuZ2V0Tm90aWZpZXJzVmVjdG9yKHdhdGNoZXJzQ29weSk7CkBAIC02NTQsOCArNjUwLDcg
QEAgdm9pZCBHZW9sb2NhdGlvbjo6bWFrZVN1Y2Nlc3NDYWxsYmFja3MoRwogICAgIEFTU0VSVChs
YXN0UG9zaXRpb24oKSk7CiAgICAgQVNTRVJUKGlzQWxsb3dlZCgpKTsKICAgICAKLSAgICBHZW9O
b3RpZmllclZlY3RvciBvbmVTaG90c0NvcHk7Ci0gICAgY29weVRvVmVjdG9yKG1fb25lU2hvdHMs
IG9uZVNob3RzQ29weSk7CisgICAgYXV0byBvbmVTaG90c0NvcHkgPSBjb3B5VG9WZWN0b3IobV9v
bmVTaG90cyk7CiAgICAgCiAgICAgR2VvTm90aWZpZXJWZWN0b3Igd2F0Y2hlcnNDb3B5OwogICAg
IG1fd2F0Y2hlcnMuZ2V0Tm90aWZpZXJzVmVjdG9yKHdhdGNoZXJzQ29weSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCShyZXZp
c2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw4ICsxOTEsNyBAQCBFeGNlcHRpb25PcjxS
ZWY8SURCVHJhbnNhY3Rpb24+PiBJREJEYXRhCiAgICAgZm9yIChhdXRvJiBvYmplY3RTdG9yZSA6
IG9iamVjdFN0b3JlcykKICAgICAgICAgb2JqZWN0U3RvcmVTZXQuYWRkKG9iamVjdFN0b3JlKTsK
IAotICAgIG9iamVjdFN0b3Jlcy5jbGVhcigpOwotICAgIGNvcHlUb1ZlY3RvcihvYmplY3RTdG9y
ZVNldCwgb2JqZWN0U3RvcmVzKTsKKyAgICBvYmplY3RTdG9yZXMgPSBjb3B5VG9WZWN0b3Iob2Jq
ZWN0U3RvcmVTZXQpOwogCiAgICAgZm9yIChhdXRvJiBvYmplY3RTdG9yZU5hbWUgOiBvYmplY3RT
dG9yZXMpIHsKICAgICAgICAgaWYgKG1faW5mby5oYXNPYmplY3RTdG9yZShvYmplY3RTdG9yZU5h
bWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0QWxsUmVz
dWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJHZXRBbGxSZXN1bHQuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJHZXRBbGxSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDcsMTAgKzEwNyw3IEBAIFZlY3RvcjxTdHJpbmc+IElEQkdldEFsbFJlc3VsdDo6YWxsQmxvYkYK
ICAgICAgICAgICAgIHBhdGhTZXQuYWRkKHBhdGgpOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJp
bmc+IHBhdGhzOwotICAgIGNvcHlUb1ZlY3RvcihwYXRoU2V0LCBwYXRocyk7Ci0KLSAgICByZXR1
cm4gcGF0aHM7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihwYXRoU2V0KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUluZGV4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCShyZXZpc2lvbiAyMjMxNDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OSwxNyArNzksMTMgQEAgdm9pZCBNZW1vcnlJbmRleDo6b2Jq
ZWN0U3RvcmVDbGVhcmVkKCkKIAogdm9pZCBNZW1vcnlJbmRleDo6bm90aWZ5Q3Vyc29yc09mVmFs
dWVDaGFuZ2UoY29uc3QgSURCS2V5RGF0YSYgaW5kZXhLZXksIGNvbnN0IElEQktleURhdGEmIHBy
aW1hcnlLZXkpCiB7Ci0gICAgVmVjdG9yPE1lbW9yeUluZGV4Q3Vyc29yKj4gY3Vyc29yczsKLSAg
ICBjb3B5VG9WZWN0b3IobV9jbGVhbkN1cnNvcnMsIGN1cnNvcnMpOwotICAgIGZvciAoYXV0byog
Y3Vyc29yIDogY3Vyc29ycykKKyAgICBmb3IgKGF1dG8qIGN1cnNvciA6IGNvcHlUb1ZlY3Rvciht
X2NsZWFuQ3Vyc29ycykpCiAgICAgICAgIGN1cnNvci0+aW5kZXhWYWx1ZUNoYW5nZWQoaW5kZXhL
ZXksIHByaW1hcnlLZXkpOwogfQogCiB2b2lkIE1lbW9yeUluZGV4Ojpub3RpZnlDdXJzb3JzT2ZB
bGxSZWNvcmRzQ2hhbmdlZCgpCiB7Ci0gICAgVmVjdG9yPE1lbW9yeUluZGV4Q3Vyc29yKj4gY3Vy
c29yczsKLSAgICBjb3B5VG9WZWN0b3IobV9jbGVhbkN1cnNvcnMsIGN1cnNvcnMpOwotICAgIGZv
ciAoYXV0byogY3Vyc29yIDogY3Vyc29ycykKKyAgICBmb3IgKGF1dG8qIGN1cnNvciA6IGNvcHlU
b1ZlY3RvcihtX2NsZWFuQ3Vyc29ycykpCiAgICAgICAgIGN1cnNvci0+aW5kZXhSZWNvcmRzQWxs
Q2hhbmdlZCgpOwogCiAgICAgQVNTRVJUKG1fY2xlYW5DdXJzb3JzLmlzRW1wdHkoKSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAkocmV2aXNpb24gMjIzMTQ5KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzOSwxMCArMjM5LDggQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmRpc3BhdGNoSW52YWxp
ZGF0aQogewogICAgICsrbV92ZXJzaW9uOwogCi0gICAgVmVjdG9yPEZvbnRTZWxlY3RvckNsaWVu
dCo+IGNsaWVudHM7Ci0gICAgY29weVRvVmVjdG9yKG1fY2xpZW50cywgY2xpZW50cyk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbGllbnRzLnNpemUoKTsgKytpKQotICAgICAgICBjbGll
bnRzW2ldLT5mb250c05lZWRVcGRhdGUoKnRoaXMpOworICAgIGZvciAoYXV0byYgY2xpZW50IDog
Y29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+Zm9udHNOZWVkVXBkYXRl
KCp0aGlzKTsKIH0KIAogdm9pZCBDU1NGb250U2VsZWN0b3I6OmZvbnRMb2FkZWQoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDM2LDkgKzQwMzYsNyBAQCB2
b2lkIERvY3VtZW50OjpkZXRhY2hOb2RlSXRlcmF0b3IoTm9kZUl0CiAKIHZvaWQgRG9jdW1lbnQ6
Om1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudChOb2RlJiBub2RlLCBEb2N1bWVudCYgbmV3
RG9jdW1lbnQpCiB7Ci0gICAgVmVjdG9yPE5vZGVJdGVyYXRvcio+IG5vZGVJdGVyYXRvcnM7Ci0g
ICAgY29weVRvVmVjdG9yKG1fbm9kZUl0ZXJhdG9ycywgbm9kZUl0ZXJhdG9ycyk7Ci0gICAgZm9y
IChhdXRvKiBpdCA6IG5vZGVJdGVyYXRvcnMpIHsKKyAgICBmb3IgKGF1dG8qIGl0IDogY29weVRv
VmVjdG9yKG1fbm9kZUl0ZXJhdG9ycykpIHsKICAgICAgICAgaWYgKCZpdC0+cm9vdCgpID09ICZu
b2RlKSB7CiAgICAgICAgICAgICBkZXRhY2hOb2RlSXRlcmF0b3IoaXQpOwogICAgICAgICAgICAg
bmV3RG9jdW1lbnQuYXR0YWNoTm9kZUl0ZXJhdG9yKGl0KTsKQEAgLTQ4MjYsOSArNDgyNCw3IEBA
IHZvaWQgRG9jdW1lbnQ6OnJlc3VtZShBY3RpdmVET01PYmplY3Q6OlIKICAgICBpZiAoIW1faXNT
dXNwZW5kZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxFbGVtZW50Kj4gZWxlbWVu
dHM7Ci0gICAgY29weVRvVmVjdG9yKG1fZG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tFbGVtZW50
cywgZWxlbWVudHMpOwotICAgIGZvciAoYXV0byogZWxlbWVudCA6IGVsZW1lbnRzKQorICAgIGZv
ciAoYXV0byogZWxlbWVudCA6IGNvcHlUb1ZlY3RvcihtX2RvY3VtZW50U3VzcGVuc2lvbkNhbGxi
YWNrRWxlbWVudHMpKQogICAgICAgICBlbGVtZW50LT5yZXN1bWVGcm9tRG9jdW1lbnRTdXNwZW5z
aW9uKCk7CiAKICAgICBpZiAocmVuZGVyVmlldygpKQpAQCAtNjg2MSwxMCArNjg1Nyw3IEBAIHZv
aWQgRG9jdW1lbnQ6OmRpZEFzc29jaWF0ZUZvcm1Db250cm9sc1QKICAgICBpZiAoIWZyYW1lKCkg
fHwgIWZyYW1lKCktPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPFJlZlB0
cjxFbGVtZW50Pj4gYXNzb2NpYXRlZEZvcm1Db250cm9sczsKLSAgICBjb3B5VG9WZWN0b3IobV9h
c3NvY2lhdGVkRm9ybUNvbnRyb2xzLCBhc3NvY2lhdGVkRm9ybUNvbnRyb2xzKTsKLQotICAgIGZy
YW1lKCktPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xz
KGFzc29jaWF0ZWRGb3JtQ29udHJvbHMpOworICAgIGZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCku
Y2xpZW50KCkuZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzKGNvcHlUb1ZlY3RvcihtX2Fzc29jaWF0
ZWRGb3JtQ29udHJvbHMpKTsKICAgICBtX2Fzc29jaWF0ZWRGb3JtQ29udHJvbHMuY2xlYXIoKTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeS5jcHAJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw5ICs2Myw3IEBAIHZv
aWQgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlPYnMKICAgICBpZiAoIW1fbm90aWZ5
aW5nT2JzZXJ2ZXJzSW5TZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxJZFRhcmdl
dE9ic2VydmVyKj4gY29weTsKLSAgICBjb3B5VG9WZWN0b3IoKm1fbm90aWZ5aW5nT2JzZXJ2ZXJz
SW5TZXQsIGNvcHkpOwotICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBjb3B5KSB7CisgICAgZm9y
IChhdXRvJiBvYnNlcnZlciA6IGNvcHlUb1ZlY3RvcigqbV9ub3RpZnlpbmdPYnNlcnZlcnNJblNl
dCkpIHsKICAgICAgICAgaWYgKG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQtPmNvbnRhaW5zKG9i
c2VydmVyKSkKICAgICAgICAgICAgIG9ic2VydmVyLT5pZFRhcmdldENoYW5nZWQoKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAy
MjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0OCw5ICsyNDgsNyBAQCB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6Om5vdGlm
eU11dGF0aW9uT2JzCiAgICAgZGVsaXZlcnlJblByb2dyZXNzID0gdHJ1ZTsKIAogICAgIGlmICgh
c3VzcGVuZGVkTXV0YXRpb25PYnNlcnZlcnMoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgVmVjdG9y
PFJlZlB0cjxNdXRhdGlvbk9ic2VydmVyPj4gc3VzcGVuZGVkOwotICAgICAgICBjb3B5VG9WZWN0
b3Ioc3VzcGVuZGVkTXV0YXRpb25PYnNlcnZlcnMoKSwgc3VzcGVuZGVkKTsKLSAgICAgICAgZm9y
IChhdXRvJiBvYnNlcnZlciA6IHN1c3BlbmRlZCkgeworICAgICAgICBmb3IgKGF1dG8mIG9ic2Vy
dmVyIDogY29weVRvVmVjdG9yKHN1c3BlbmRlZE11dGF0aW9uT2JzZXJ2ZXJzKCkpKSB7CiAgICAg
ICAgICAgICBpZiAoIW9ic2VydmVyLT5jYW5EZWxpdmVyKCkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAKQEAgLTI2MSw4ICsyNTksNyBAQCB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6Om5vdGlm
eU11dGF0aW9uT2JzCiAKICAgICB3aGlsZSAoIWFjdGl2ZU11dGF0aW9uT2JzZXJ2ZXJzKCkuaXNF
bXB0eSgpIHx8ICFzaWduYWxTbG90TGlzdCgpLmlzRW1wdHkoKSkgewogICAgICAgICAvLyAyLiBM
ZXQgbm90aWZ5IGxpc3QgYmUgYSBjb3B5IG9mIHVuaXQgb2YgcmVsYXRlZCBzaW1pbGFyLW9yaWdp
biBicm93c2luZyBjb250ZXh0cycgbGlzdCBvZiBNdXRhdGlvbk9ic2VydmVyIG9iamVjdHMuCi0g
ICAgICAgIFZlY3RvcjxSZWZQdHI8TXV0YXRpb25PYnNlcnZlcj4+IG5vdGlmeUxpc3Q7Ci0gICAg
ICAgIGNvcHlUb1ZlY3RvcihhY3RpdmVNdXRhdGlvbk9ic2VydmVycygpLCBub3RpZnlMaXN0KTsK
KyAgICAgICAgYXV0byBub3RpZnlMaXN0ID0gY29weVRvVmVjdG9yKGFjdGl2ZU11dGF0aW9uT2Jz
ZXJ2ZXJzKCkpOwogICAgICAgICBhY3RpdmVNdXRhdGlvbk9ic2VydmVycygpLmNsZWFyKCk7CiAg
ICAgICAgIHN0ZDo6c29ydChub3RpZnlMaXN0LmJlZ2luKCksIG5vdGlmeUxpc3QuZW5kKCksIFtd
KGF1dG8mIGxocywgYXV0byYgcmhzKSB7CiAgICAgICAgICAgICByZXR1cm4gbGhzLT5tX3ByaW9y
aXR5IDwgcmhzLT5tX3ByaW9yaXR5OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMjIz
MTQ5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NTMsMTQgKzg1MywxMCBAQCBpbmxpbmUgYm9vbCBEb2N1bWVudDo6c2hvdWxkSW52YWxpZGF0ZU5v
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW52YWxpZGF0aW9uRnVuY3Rpb24+CiB2b2lkIERvY3VtZW50
OjppbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKEludmFsaWRhdGlvbkZ1bmN0
aW9uIGludmFsaWRhdGUpCiB7Ci0gICAgVmVjdG9yPExpdmVOb2RlTGlzdCosIDg+IGxpc3RzOwot
ICAgIGNvcHlUb1ZlY3RvcihtX2xpc3RzSW52YWxpZGF0ZWRBdERvY3VtZW50LCBsaXN0cyk7Ci0g
ICAgZm9yIChhdXRvKiBsaXN0IDogbGlzdHMpCisgICAgZm9yIChhdXRvKiBsaXN0IDogY29weVRv
VmVjdG9yU3BlY2lhbGl6YXRpb248VmVjdG9yPExpdmVOb2RlTGlzdCosIDg+PihtX2xpc3RzSW52
YWxpZGF0ZWRBdERvY3VtZW50KSkKICAgICAgICAgaW52YWxpZGF0ZSgqbGlzdCk7CiAKLSAgICBW
ZWN0b3I8SFRNTENvbGxlY3Rpb24qLCA4PiBjb2xsZWN0aW9uczsKLSAgICBjb3B5VG9WZWN0b3Io
bV9jb2xsZWN0aW9uc0ludmFsaWRhdGVkQXREb2N1bWVudCwgY29sbGVjdGlvbnMpOwotICAgIGZv
ciAoYXV0byogY29sbGVjdGlvbiA6IGNvbGxlY3Rpb25zKQorICAgIGZvciAoYXV0byogY29sbGVj
dGlvbiA6IGNvcHlUb1ZlY3RvclNwZWNpYWxpemF0aW9uPFZlY3RvcjxIVE1MQ29sbGVjdGlvbios
IDg+PihtX2NvbGxlY3Rpb25zSW52YWxpZGF0ZWRBdERvY3VtZW50KSkKICAgICAgICAgaW52YWxp
ZGF0ZSgqY29sbGVjdGlvbik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1
dHRvbkdyb3Vwcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0
dG9uR3JvdXBzLmNwcAkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Jh
ZGlvQnV0dG9uR3JvdXBzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsOCArNjYsNyBAQCBpbmxp
bmUgYm9vbCBSYWRpb0J1dHRvbkdyb3VwOjppc1ZhbGlkKCkgCiAKIFZlY3RvcjxIVE1MSW5wdXRF
bGVtZW50Kj4gUmFkaW9CdXR0b25Hcm91cDo6bWVtYmVycygpIGNvbnN0CiB7Ci0gICAgVmVjdG9y
PEhUTUxJbnB1dEVsZW1lbnQqPiBtZW1iZXJzOwotICAgIGNvcHlUb1ZlY3RvcihtX21lbWJlcnMs
IG1lbWJlcnMpOworICAgIGF1dG8gbWVtYmVycyA9IGNvcHlUb1ZlY3RvcihtX21lbWJlcnMpOwog
ICAgIHN0ZDo6c29ydChtZW1iZXJzLmJlZ2luKCksIG1lbWJlcnMuZW5kKCksIGRvY3VtZW50T3Jk
ZXJDb21wYXJhdG9yKTsKICAgICByZXR1cm4gbWVtYmVyczsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJKHJldmlzaW9uIDIyMzE0OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQzLDkgKzE0Myw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
ZGlzcGF0Y2hNZXMKICAgICBtX3dpbGxQcm9jZXNzTWVzc2FnZVBvcnRNZXNzYWdlc1Nvb24gPSBm
YWxzZTsKIAogICAgIC8vIE1ha2UgYSBmcm96ZW4gY29weSBvZiB0aGUgcG9ydHMgc28gd2UgY2Fu
IGl0ZXJhdGUgd2hpbGUgbmV3IG9uZXMgbWlnaHQgYmUgYWRkZWQgb3IgZGVzdHJveWVkLgotICAg
IFZlY3RvcjxNZXNzYWdlUG9ydCo+IHBvc3NpYmxlTWVzc2FnZVBvcnRzOwotICAgIGNvcHlUb1Zl
Y3RvcihtX21lc3NhZ2VQb3J0cywgcG9zc2libGVNZXNzYWdlUG9ydHMpOwotICAgIGZvciAoYXV0
byogbWVzc2FnZVBvcnQgOiBwb3NzaWJsZU1lc3NhZ2VQb3J0cykgeworICAgIGZvciAoYXV0byog
bWVzc2FnZVBvcnQgOiBjb3B5VG9WZWN0b3IobV9tZXNzYWdlUG9ydHMpKSB7CiAgICAgICAgIC8v
IFRoZSBwb3J0IG1heSBiZSBkZXN0cm95ZWQsIGFuZCBhbm90aGVyIG9uZSBjcmVhdGVkIGF0IHRo
ZSBzYW1lIGFkZHJlc3MsCiAgICAgICAgIC8vIGJ1dCB0aGlzIGlzIGhhcm1sZXNzLiBUaGUgd29y
c3QgdGhhdCBjYW4gaGFwcGVuIGFzIGEgcmVzdWx0IGlzIHRoYXQKICAgICAgICAgLy8gZGlzcGF0
Y2hNZXNzYWdlcygpIHdpbGwgYmUgY2FsbGVkIG5lZWRsZXNzbHkuCkBAIC0yNzksOCArMjc3LDcg
QEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRAogICAgIG1fYWN0aXZl
RE9NT2JqZWN0c0FyZVN0b3BwZWQgPSB0cnVlOwogCiAgICAgLy8gTWFrZSBhIGZyb3plbiBjb3B5
IG9mIHRoZSBvYmplY3RzIHNvIHdlIGNhbiBpdGVyYXRlIHdoaWxlIG5ldyBvbmVzIG1pZ2h0IGJl
IGRlc3Ryb3llZC4KLSAgICBWZWN0b3I8QWN0aXZlRE9NT2JqZWN0Kj4gcG9zc2libGVBY3RpdmVE
T01PYmplY3RzOwotICAgIGNvcHlUb1ZlY3RvcihtX2FjdGl2ZURPTU9iamVjdHMsIHBvc3NpYmxl
QWN0aXZlRE9NT2JqZWN0cyk7CisgICAgYXV0byBwb3NzaWJsZUFjdGl2ZURPTU9iamVjdHMgPSBj
b3B5VG9WZWN0b3IobV9hY3RpdmVET01PYmplY3RzKTsKIAogICAgIG1fYWN0aXZlRE9NT2JqZWN0
QWRkaXRpb25Gb3JiaWRkZW4gPSB0cnVlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkocmV2aXNp
b24gMjIzMTQ5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzMCw5ICs5MzAsNyBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJCiAgICAgICAgICAgICAvLyBzb21lIG90
aGVyIGNhY2hlIGluIHRoaXMgZ3JvdXAuIFRoZXkgYXJlIG5vdCBhc3NvY2lhdGVkIHdpdGggdGhl
IGZhaWxlZCBuZXcgY2FjaGUuCiAKICAgICAgICAgICAgIC8vIE5lZWQgdG8gY29weSBsb2FkZXJz
LCBiZWNhdXNlIHRoZSBjYWNoZSBncm91cCBtYXkgYmUgZGVzdHJveWVkIGF0IHRoZSBlbmQgb2Yg
aXRlcmF0aW9uLgotICAgICAgICAgICAgVmVjdG9yPERvY3VtZW50TG9hZGVyKj4gbG9hZGVyczsK
LSAgICAgICAgICAgIGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMs
IGxvYWRlcnMpOwotICAgICAgICAgICAgZm9yIChhdXRvJiBsb2FkZXIgOiBsb2FkZXJzKQorICAg
ICAgICAgICAgZm9yIChhdXRvJiBsb2FkZXIgOiBjb3B5VG9WZWN0b3IobV9wZW5kaW5nTWFzdGVy
UmVzb3VyY2VMb2FkZXJzKSkKICAgICAgICAgICAgICAgICBkaXNhc3NvY2lhdGVEb2N1bWVudExv
YWRlcigqbG9hZGVyKTsgLy8gVGhpcyBjYW4gZGVsZXRlIHRoaXMgZ3JvdXAuCiAKICAgICAgICAg
ICAgIC8vIFJlaW5zdGF0ZSB0aGUgb2xkTmV3ZXN0Q2FjaGUsIGlmIHRoZXJlIHdhcyBvbmUuCkBA
IC05NzksOCArOTc3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnN0YXJ0TG9hZGlu
Zwogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRlbGl2ZXJEZWxheWVkTWFpblJlc291cmNl
cygpCiB7CiAgICAgLy8gTmVlZCB0byBjb3B5IGxvYWRlcnMsIGJlY2F1c2UgdGhlIGNhY2hlIGdy
b3VwIG1heSBiZSBkZXN0cm95ZWQgYXQgdGhlIGVuZCBvZiBpdGVyYXRpb24uCi0gICAgVmVjdG9y
PERvY3VtZW50TG9hZGVyKj4gbG9hZGVyczsKLSAgICBjb3B5VG9WZWN0b3IobV9wZW5kaW5nTWFz
dGVyUmVzb3VyY2VMb2FkZXJzLCBsb2FkZXJzKTsKKyAgICBhdXRvIGxvYWRlcnMgPSBjb3B5VG9W
ZWN0b3IobV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzKTsKICAgICBmb3IgKGF1dG8qIGxv
YWRlciA6IGxvYWRlcnMpIHsKICAgICAgICAgaWYgKGxvYWRlci0+aXNMb2FkaW5nTWFpblJlc291
cmNlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1
LDkgKzI2NSw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lTGl2ZVJlc291cmNlcyhib28KIHZv
aWQgTWVtb3J5Q2FjaGU6OmZvckVhY2hSZXNvdXJjZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
Q2FjaGVkUmVzb3VyY2UmKT4mIGZ1bmN0aW9uKQogewogICAgIGZvciAoYXV0byYgdW5wcm90ZWN0
ZWRMUlVMaXN0IDogbV9hbGxSZXNvdXJjZXMpIHsKLSAgICAgICAgVmVjdG9yPENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gbHJ1TGlzdDsKLSAgICAgICAgY29weVRvVmVjdG9y
KCp1bnByb3RlY3RlZExSVUxpc3QsIGxydUxpc3QpOwotICAgICAgICBmb3IgKGF1dG8mIHJlc291
cmNlIDogbHJ1TGlzdCkKKyAgICAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IGNvcHlUb1ZlY3Rv
cigqdW5wcm90ZWN0ZWRMUlVMaXN0KSkKICAgICAgICAgICAgIGZ1bmN0aW9uKCpyZXNvdXJjZSk7
CiAgICAgfQogfQpAQCAtMzYzLDggKzM2MSw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lRGVh
ZFJlc291cmNlc1RvU2kKICAgICBmb3IgKGludCBpID0gbV9hbGxSZXNvdXJjZXMuc2l6ZSgpIC0g
MTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIExSVUxpc3Qg
Zmlyc3QgKGFuZCByZWYgdGhlIHJlc291cmNlcykgYXMgY2FsbGluZwogICAgICAgICAvLyBkZXN0
cm95RGVjb2RlZERhdGEoKSBjYW4gYWx0ZXIgdGhlIExSVUxpc3QuCi0gICAgICAgIFZlY3RvcjxD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IGxydUxpc3Q7Ci0gICAgICAgIGNv
cHlUb1ZlY3RvcigqbV9hbGxSZXNvdXJjZXNbaV0sIGxydUxpc3QpOworICAgICAgICBhdXRvIGxy
dUxpc3QgPSBjb3B5VG9WZWN0b3IoKm1fYWxsUmVzb3VyY2VzW2ldKTsKIAogICAgICAgICAvLyBG
aXJzdCBmbHVzaCBhbGwgdGhlIGRlY29kZWQgZGF0YSBpbiB0aGlzIHF1ZXVlLgogICAgICAgICAv
LyBSZW1vdmUgZnJvbSB0aGUgaGVhZCwgc2luY2UgdGhpcyBpcyB0aGUgbGVhc3QgZnJlcXVlbnRs
eSBhY2Nlc3NlZCBvZiB0aGUgb2JqZWN0cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDgyLDkgKzQ4Miw3IEBAIHZvaWQgRE9NV2luZG93Ojp3aWxs
RGVzdHJveUNhY2hlZEZyYW1lKCkKIHsKICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY29weSBt
X3Byb3BlcnRpZXMgdG8gYSBzZXBhcmF0ZSB2ZWN0b3IgYmVjYXVzZSB0aGUgRE9NV2luZG93UHJv
cGVydGllcyBtYXkKICAgICAvLyB1bnJlZ2lzdGVyIHRoZW1zZWx2ZXMgZnJvbSB0aGUgRE9NV2lu
ZG93IGFzIGEgcmVzdWx0IG9mIHRoZSBjYWxsIHRvIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5D
YWNoZWRGcmFtZS4KLSAgICBWZWN0b3I8RE9NV2luZG93UHJvcGVydHkqPiBwcm9wZXJ0aWVzOwot
ICAgIGNvcHlUb1ZlY3RvcihtX3Byb3BlcnRpZXMsIHByb3BlcnRpZXMpOwotICAgIGZvciAoYXV0
byYgcHJvcGVydHkgOiBwcm9wZXJ0aWVzKQorICAgIGZvciAoYXV0byYgcHJvcGVydHkgOiBjb3B5
VG9WZWN0b3IobV9wcm9wZXJ0aWVzKSkKICAgICAgICAgcHJvcGVydHktPndpbGxEZXN0cm95R2xv
YmFsT2JqZWN0SW5DYWNoZWRGcmFtZSgpOwogfQogCkBAIC00OTIsOSArNDkwLDcgQEAgdm9pZCBE
T01XaW5kb3c6OndpbGxEZXN0cm95RG9jdW1lbnRJbkZyYQogewogICAgIC8vIEl0IGlzIG5lY2Vz
c2FyeSB0byBjb3B5IG1fcHJvcGVydGllcyB0byBhIHNlcGFyYXRlIHZlY3RvciBiZWNhdXNlIHRo
ZSBET01XaW5kb3dQcm9wZXJ0aWVzIG1heQogICAgIC8vIHVucmVnaXN0ZXIgdGhlbXNlbHZlcyBm
cm9tIHRoZSBET01XaW5kb3cgYXMgYSByZXN1bHQgb2YgdGhlIGNhbGwgdG8gd2lsbERlc3Ryb3lH
bG9iYWxPYmplY3RJbkZyYW1lLgotICAgIFZlY3RvcjxET01XaW5kb3dQcm9wZXJ0eSo+IHByb3Bl
cnRpZXM7Ci0gICAgY29weVRvVmVjdG9yKG1fcHJvcGVydGllcywgcHJvcGVydGllcyk7Ci0gICAg
Zm9yIChhdXRvJiBwcm9wZXJ0eSA6IHByb3BlcnRpZXMpCisgICAgZm9yIChhdXRvJiBwcm9wZXJ0
eSA6IGNvcHlUb1ZlY3RvcihtX3Byb3BlcnRpZXMpKQogICAgICAgICBwcm9wZXJ0eS0+d2lsbERl
c3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCk7CiB9CiAKQEAgLTUwMiw5ICs0OTgsNyBAQCB2b2lk
IERPTVdpbmRvdzo6d2lsbERldGFjaERvY3VtZW50RnJvbUZyCiB7CiAgICAgLy8gSXQgaXMgbmVj
ZXNzYXJ5IHRvIGNvcHkgbV9wcm9wZXJ0aWVzIHRvIGEgc2VwYXJhdGUgdmVjdG9yIGJlY2F1c2Ug
dGhlIERPTVdpbmRvd1Byb3BlcnRpZXMgbWF5CiAgICAgLy8gdW5yZWdpc3RlciB0aGVtc2VsdmVz
IGZyb20gdGhlIERPTVdpbmRvdyBhcyBhIHJlc3VsdCBvZiB0aGUgY2FsbCB0byB3aWxsRGV0YWNo
R2xvYmFsT2JqZWN0RnJvbUZyYW1lLgotICAgIFZlY3RvcjxET01XaW5kb3dQcm9wZXJ0eSo+IHBy
b3BlcnRpZXM7Ci0gICAgY29weVRvVmVjdG9yKG1fcHJvcGVydGllcywgcHJvcGVydGllcyk7Ci0g
ICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHByb3BlcnRpZXMpCisgICAgZm9yIChhdXRvJiBwcm9w
ZXJ0eSA6IGNvcHlUb1ZlY3RvcihtX3Byb3BlcnRpZXMpKQogICAgICAgICBwcm9wZXJ0eS0+d2ls
bERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgpOwogCiAgICAgaWYgKG1fcGVyZm9ybWFuY2Up
CkBAIC01NjMsOSArNTU3LDcgQEAgdm9pZCBET01XaW5kb3c6OmRpc2Nvbm5lY3RET01XaW5kb3dQ
cm9wZQogewogICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBjb3B5IG1fcHJvcGVydGllcyB0byBh
IHNlcGFyYXRlIHZlY3RvciBiZWNhdXNlIHRoZSBET01XaW5kb3dQcm9wZXJ0aWVzIG1heQogICAg
IC8vIHVucmVnaXN0ZXIgdGhlbXNlbHZlcyBmcm9tIHRoZSBET01XaW5kb3cgYXMgYSByZXN1bHQg
b2YgdGhlIGNhbGwgdG8gZGlzY29ubmVjdEZyYW1lRm9yRG9jdW1lbnRTdXNwZW5zaW9uLgotICAg
IFZlY3RvcjxET01XaW5kb3dQcm9wZXJ0eSo+IHByb3BlcnRpZXM7Ci0gICAgY29weVRvVmVjdG9y
KG1fcHJvcGVydGllcywgcHJvcGVydGllcyk7Ci0gICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHBy
b3BlcnRpZXMpCisgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IGNvcHlUb1ZlY3RvcihtX3Byb3Bl
cnRpZXMpKQogICAgICAgICBwcm9wZXJ0eS0+ZGlzY29ubmVjdEZyYW1lRm9yRG9jdW1lbnRTdXNw
ZW5zaW9uKCk7CiB9CiAKQEAgLTU3NCw5ICs1NjYsNyBAQCB2b2lkIERPTVdpbmRvdzo6cmVjb25u
ZWN0RE9NV2luZG93UHJvcGVyCiAgICAgQVNTRVJUKG1fc3VzcGVuZGVkRm9yRG9jdW1lbnRTdXNw
ZW5zaW9uKTsKICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY29weSBtX3Byb3BlcnRpZXMgdG8g
YSBzZXBhcmF0ZSB2ZWN0b3IgYmVjYXVzZSB0aGUgRE9NV2luZG93UHJvcGVydGllcyBtYXkKICAg
ICAvLyB1bnJlZ2lzdGVyIHRoZW1zZWx2ZXMgZnJvbSB0aGUgRE9NV2luZG93IGFzIGEgcmVzdWx0
IG9mIHRoZSBjYWxsIHRvIHJlY29ubmVjdEZyb21QYWdlQ2FjaGUuCi0gICAgVmVjdG9yPERPTVdp
bmRvd1Byb3BlcnR5Kj4gcHJvcGVydGllczsKLSAgICBjb3B5VG9WZWN0b3IobV9wcm9wZXJ0aWVz
LCBwcm9wZXJ0aWVzKTsKLSAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogcHJvcGVydGllcykKKyAg
ICBmb3IgKGF1dG8mIHByb3BlcnR5IDogY29weVRvVmVjdG9yKG1fcHJvcGVydGllcykpCiAgICAg
ICAgIHByb3BlcnR5LT5yZWNvbm5lY3RGcmFtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24obV9mcmFt
ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDIyMzE0
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTM0NCw5ICs1MzQ0LDcgQEAgdm9pZCBGcmFtZVZpZXc6OndpbGxSZW1vdmVXaWRnZXRGcm9t
UmVuZAogCiBzdGF0aWMgVmVjdG9yPFJlZlB0cjxXaWRnZXQ+PiBjb2xsZWN0QW5kUHJvdGVjdFdp
ZGdldHMoY29uc3QgSGFzaFNldDxXaWRnZXQqPiYgc2V0KQogewotICAgIFZlY3RvcjxSZWZQdHI8
V2lkZ2V0Pj4gd2lkZ2V0czsKLSAgICBjb3B5VG9WZWN0b3Ioc2V0LCB3aWRnZXRzKTsKLSAgICBy
ZXR1cm4gd2lkZ2V0czsKKyAgICByZXR1cm4gY29weVRvVmVjdG9yT2Y8UmVmUHRyPFdpZGdldD4+
KHNldCk7CiB9CiAKIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVXaWRnZXRQb3NpdGlvbnMoKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04Myw5ICs4Myw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VDcml0aWNhbE1lbW9yeShTeW5jaHIK
IAogICAgIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuZHJhaW4oKTsKIAotICAgIFZlY3RvcjxS
ZWZQdHI8RG9jdW1lbnQ+PiBkb2N1bWVudHM7Ci0gICAgY29weVRvVmVjdG9yKERvY3VtZW50Ojph
bGxEb2N1bWVudHMoKSwgZG9jdW1lbnRzKTsKLSAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogZG9j
dW1lbnRzKSB7CisgICAgZm9yIChhdXRvJiBkb2N1bWVudCA6IGNvcHlUb1ZlY3Rvck9mPFJlZlB0
cjxEb2N1bWVudD4+KERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkpIHsKICAgICAgICAgZG9jdW1l
bnQtPnN0eWxlU2NvcGUoKS5jbGVhclJlc29sdmVyKCk7CiAgICAgICAgIGRvY3VtZW50LT5mb250
U2VsZWN0b3IoKS5lbXB0eUNhY2hlcygpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2UuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDkgKzI3MSw3IEBAIHZvaWQgUGVy
Zm9ybWFuY2U6OnF1ZXVlRW50cnkoUGVyZm9ybWFuY2UKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9wZXJmb3JtYW5jZVRpbWVsaW5lVGFza1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzXSAoKSB7Ci0g
ICAgICAgIFZlY3RvcjxSZWZQdHI8UGVyZm9ybWFuY2VPYnNlcnZlcj4+IG9ic2VydmVyczsKLSAg
ICAgICAgY29weVRvVmVjdG9yKG1fb2JzZXJ2ZXJzLCBvYnNlcnZlcnMpOwotICAgICAgICBmb3Ig
KGF1dG8mIG9ic2VydmVyIDogb2JzZXJ2ZXJzKQorICAgICAgICBmb3IgKGF1dG8mIG9ic2VydmVy
IDogY29weVRvVmVjdG9yKG1fb2JzZXJ2ZXJzKSkKICAgICAgICAgICAgIG9ic2VydmVyLT5kZWxp
dmVyKCk7CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
YXN0ZWJvYXJkQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFzdGVib2FyZENvY29hLm1tCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE2NSw5ICsxNjUsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2Fj
CiAgICAgZm9yIChhdXRvJiBjb2NvYVR5cGUgOiBjb2NvYVR5cGVzKQogICAgICAgICBhZGRIVE1M
Q2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUocmVzdWx0LCBjb2NvYVR5cGUpOwogCi0gICAgVmVj
dG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgY29weVRvVmVjdG9yKHJlc3VsdCwgdHlwZXMpOwotICAg
IHJldHVybiB0eXBlczsKKyAgICByZXR1cm4gY29weVRvVmVjdG9yKHJlc3VsdCk7CiB9CiAKICNp
ZiBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xheWVyQ2hhbmdlc0ZsdXNoZXIuY3BwCShyZXZp
c2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
TGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2LDcgQEAg
TFJFU1VMVCBMYXllckNoYW5nZXNGbHVzaGVyOjpob29rRmlyZWQoaQogCiAgICAgLy8gQ2FsbGlu
ZyBvdXQgdG8gdGhlIGhvc3RzIGNhbiBjYXVzZSBtX2hvc3RzV2l0aENoYW5nZXNUb0ZsdXNoIHRv
IGJlIG1vZGlmaWVkLCBzbyB3ZSBjb3B5IGl0CiAgICAgLy8gaW50byBhIFZlY3RvciBmaXJzdC4K
LSAgICBWZWN0b3I8QWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdCo+IGhvc3RzOwotICAgIGNvcHlU
b1ZlY3RvcihtX2hvc3RzV2l0aENoYW5nZXNUb0ZsdXNoLCBob3N0cyk7CisgICAgYXV0byBob3N0
cyA9IGNvcHlUb1ZlY3RvcihtX2hvc3RzV2l0aENoYW5nZXNUb0ZsdXNoKTsKICAgICBtX2hvc3Rz
V2l0aENoYW5nZXNUb0ZsdXNoLmNsZWFyKCk7CiAKICAgICBtX2lzQ2FsbGluZ0hvc3RzID0gdHJ1
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNo
ZUNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzQ4LDkgKzc0OCw3IEBAIFZlY3RvcjxTdHJpbmc+IEZvbnRD
YWNoZTo6c3lzdGVtRm9udEZhbWkKICAgICAgICAgICAgIHZpc2l0ZWQuYWRkKGZhbWlseU5hbWUu
Z2V0KCkpOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKLSAgICBjb3B5VG9W
ZWN0b3IodmlzaXRlZCwgcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBj
b3B5VG9WZWN0b3IodmlzaXRlZCk7CiB9CiAKIHN0YXRpYyBDVEZvbnRTeW1ib2xpY1RyYWl0cyBj
b21wdXRlVHJhaXRzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zODEsOSArMzgx
LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlcwogICAgICAgICAg
ICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZChTdHJpbmc6OmZyb21VVEY4KGNvZXJjZWRUeXBlKSk7
CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwotICAgIGNvcHlUb1ZlY3Rvcihk
b21QYXN0ZWJvYXJkVHlwZXMsIHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1
cm4gY29weVRvVmVjdG9yKGRvbVBhc3RlYm9hcmRUeXBlcyk7CiB9CiAKIGxvbmcgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFn
ZXIubW0JKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJDb3JlTW90aW9uTWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjIzLDEwICsyMjMsOCBA
QCAtICh2b2lkKXNlbmRBY2NlbGVyb21ldGVyRGF0YTooQ01BY2NlbGVyCiAgICAgV2ViVGhyZWFk
UnVuKF57CiAgICAgICAgIENNQWNjZWxlcmF0aW9uIGFjY2VsID0gbmV3QWNjZWxlcmF0aW9uLmFj
Y2VsZXJhdGlvbjsKIAotICAgICAgICBWZWN0b3I8V2ViQ29yZTo6RGV2aWNlTW90aW9uQ2xpZW50
SU9TKj4gY2xpZW50czsKLSAgICAgICAgY29weVRvVmVjdG9yKG1fZGV2aWNlTW90aW9uQ2xpZW50
cywgY2xpZW50cyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2xpZW50cy5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgIGNsaWVudHNbaV0tPm1vdGlvbkNoYW5nZWQoMCwgMCwgMCwg
YWNjZWwueCAqIGtHcmF2aXR5LCBhY2NlbC55ICoga0dyYXZpdHksIGFjY2VsLnogKiBrR3Jhdml0
eSwgMCwgMCwgMCk7CisgICAgICAgIGZvciAoYXV0byYgY2xpZW50IDogY29weVRvVmVjdG9yKG1f
ZGV2aWNlTW90aW9uQ2xpZW50cykpCisgICAgICAgICAgICBjbGllbnQtPm1vdGlvbkNoYW5nZWQo
MCwgMCwgMCwgYWNjZWwueCAqIGtHcmF2aXR5LCBhY2NlbC55ICoga0dyYXZpdHksIGFjY2VsLnog
KiBrR3Jhdml0eSwgMCwgMCwgMCk7CiAgICAgfSk7CiB9CiAKQEAgLTI0MywxOCArMjQxLDEyIEBA
IC0gKHZvaWQpc2VuZE1vdGlvbkRhdGE6KENNRGV2aWNlTW90aW9uICoKIAogICAgICAgICBDTVJv
dGF0aW9uUmF0ZSByb3RhdGlvblJhdGUgPSBuZXdNb3Rpb24ucm90YXRpb25SYXRlOwogCi0gICAg
ICAgIFZlY3RvcjxXZWJDb3JlOjpEZXZpY2VNb3Rpb25DbGllbnRJT1MqPiBtb3Rpb25DbGllbnRz
OwotICAgICAgICBjb3B5VG9WZWN0b3IobV9kZXZpY2VNb3Rpb25DbGllbnRzLCBtb3Rpb25DbGll
bnRzKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtb3Rpb25DbGllbnRzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICBtb3Rpb25DbGllbnRzW2ldLT5tb3Rpb25DaGFuZ2VkKHVz
ZXJBY2NlbC54ICoga0dyYXZpdHksIHVzZXJBY2NlbC55ICoga0dyYXZpdHksIHVzZXJBY2NlbC56
ICoga0dyYXZpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRvdGFsQWNjZWwueCAqIGtHcmF2aXR5LCB0b3RhbEFjY2VsLnkgKiBrR3Jhdml0eSwgdG90YWxB
Y2NlbC56ICoga0dyYXZpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJhZDJkZWcocm90YXRpb25SYXRlLngpLCByYWQyZGVnKHJvdGF0aW9uUmF0ZS55KSwg
cmFkMmRlZyhyb3RhdGlvblJhdGUueikpOwotICAgICAgICB9CisgICAgICAgIGZvciAoYXV0byYg
Y2xpZW50IDogY29weVRvVmVjdG9yKG1fZGV2aWNlTW90aW9uQ2xpZW50cykpCisgICAgICAgICAg
ICBjbGllbnQtPm1vdGlvbkNoYW5nZWQodXNlckFjY2VsLnggKiBrR3Jhdml0eSwgdXNlckFjY2Vs
LnkgKiBrR3Jhdml0eSwgdXNlckFjY2VsLnogKiBrR3Jhdml0eSwgdG90YWxBY2NlbC54ICoga0dy
YXZpdHksIHRvdGFsQWNjZWwueSAqIGtHcmF2aXR5LCB0b3RhbEFjY2VsLnogKiBrR3Jhdml0eSwg
cmFkMmRlZyhyb3RhdGlvblJhdGUueCksIHJhZDJkZWcocm90YXRpb25SYXRlLnkpLCByYWQyZGVn
KHJvdGF0aW9uUmF0ZS56KSk7CiAKICAgICAgICAgQ01BdHRpdHVkZSogYXR0aXR1ZGUgPSBuZXdN
b3Rpb24uYXR0aXR1ZGU7CiAKLSAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkRldmljZU9yaWVudGF0
aW9uQ2xpZW50SU9TKj4gb3JpZW50YXRpb25DbGllbnRzOwotICAgICAgICBjb3B5VG9WZWN0b3Io
bV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudHMsIG9yaWVudGF0aW9uQ2xpZW50cyk7CisgICAgICAg
IGF1dG8gb3JpZW50YXRpb25DbGllbnRzID0gY29weVRvVmVjdG9yKG1fZGV2aWNlT3JpZW50YXRp
b25DbGllbnRzKTsKIAogICAgICAgICAvLyBDb21wb3NlIHRoZSByYXcgbW90aW9uIGRhdGEgdG8g
YW4gaW50ZXJtZWRpYXRlIFpYWS1iYXNlZCAzeDMgcm90YXRpb24KICAgICAgICAgLy8gbWF0cml4
IChSKSB3aGVyZSBbej1hdHRpdHVkZS55YXcsIHg9YXR0aXR1ZGUucGl0Y2gsIHk9YXR0aXR1ZGUu
cm9sbF0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtUGFzdGVib2FyZE1hYy5tbQkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTI3LDkgKzEyNyw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXMK
ICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoU3RyaW5nOjpmcm9tVVRGOChkb21U
eXBlKSk7CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwotICAgIGNvcHlUb1Zl
Y3Rvcihkb21QYXN0ZWJvYXJkVHlwZXMsIHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICByZXR1cm4gY29weVRvVmVjdG9yKGRvbVBhc3RlYm9hcmRUeXBlcyk7CiB9CiAKIGxvbmcgUGxh
dGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0JKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjAzLDcgKzIwMyw3IEBAIC0gKHZvaWQpaW52YWxpZGF0ZUFuZENh
bmNlbAogICAgIFZlY3RvcjxSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPj4g
dGFza3NDb3B5OwogICAgIHsKICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihfZGF0YVRhc2tz
TG9jayk7Ci0gICAgICAgIGNvcHlUb1ZlY3RvcihfZGF0YVRhc2tzLCB0YXNrc0NvcHkpOworICAg
ICAgICB0YXNrc0NvcHkgPSBjb3B5VG9WZWN0b3IoX2RhdGFUYXNrcyk7CiAgICAgfQogCiAgICAg
Zm9yIChhdXRvJiB0YXNrIDogdGFza3NDb3B5KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzIsOSArMjcyLDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNGb3JMZWdh
YwogICAgICAgICB9CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gdmVjdG9yOwotICAgIGNv
cHlUb1ZlY3RvcihyZXN1bHRzLCB2ZWN0b3IpOwotICAgIHJldHVybiB2ZWN0b3I7CisgICAgcmV0
dXJuIGNvcHlUb1ZlY3RvcihyZXN1bHRzKTsKIH0KIAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRT
dHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE1LDggKzEwMTUsNyBA
QCB2b2lkIFJlbmRlckJsb2NrOjplbmRBbmRDb21taXRVcGRhdGVTY3JvCiAgICAgLy8gZnJvbSB0
aGUgdHJhbnNhY3Rpb24gc3RhY2sgdG8gZW5zdXJlIHRoYXQgYWxsIHN1YnNlcXVlbnQgY2FsbHMg
dG8gUmVuZGVyQmxvY2s6OnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpCiAgICAgLy8gYXJl
IGRpc3BhdGNoZWQgaW1tZWRpYXRlbHkuIFRoYXQgaXMsIHRvIGVuc3VyZSB0aGF0IHN1Y2ggc3Vi
c2VxdWVudCBjYWxscyBhcmVuJ3QgYWRkZWQgdG8gfHRyYW5zYWN0aW9ufAogICAgIC8vIHdoaWxl
IHdlIGFyZSBwcm9jZXNzaW5nIGl0LgotICAgIFZlY3RvcjxSZW5kZXJCbG9jayo+IGJsb2Nrc1Rv
VXBkYXRlOwotICAgIGNvcHlUb1ZlY3Rvcih0cmFuc2FjdGlvbi0+YmxvY2tzLCBibG9ja3NUb1Vw
ZGF0ZSk7CisgICAgYXV0byBibG9ja3NUb1VwZGF0ZSA9IGNvcHlUb1ZlY3Rvcih0cmFuc2FjdGlv
bi0+YmxvY2tzKTsKICAgICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0
YWNrKCktPnJlbW92ZUxhc3QoKTsKICAgICBpZiAodXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0
VHJhbnNhY3Rpb25TdGFjaygpLT5pc0VtcHR5KCkpCiAgICAgICAgIHVwZGF0ZVNjcm9sbEluZm9B
ZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKSA9IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNp
b24gMjIzMTQ5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxh
eW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw3ICs1MzEsNyBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgc2V0TG9naWNhbFdpZHRoRm9yVGV4CiAgICAgICAgIEFTU0VSVChydW4tPmJveCgpLT5i
ZWhhdmVzTGlrZVRleHQoKSk7CiAgICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRz
TWFwOjppdGVyYXRvciBpdCA9IHRleHRCb3hEYXRhTWFwLmFkZChkb3duY2FzdDxJbmxpbmVUZXh0
Qm94PihydW4tPmJveCgpKSwgc3RkOjptYWtlX3BhaXIoVmVjdG9yPGNvbnN0IEZvbnQqPigpLCBH
bHlwaE92ZXJmbG93KCkpKS5pdGVyYXRvcjsKICAgICAgICAgQVNTRVJUKGl0LT52YWx1ZS5maXJz
dC5pc0VtcHR5KCkpOwotICAgICAgICBjb3B5VG9WZWN0b3IoZmFsbGJhY2tGb250cywgaXQtPnZh
bHVlLmZpcnN0KTsKKyAgICAgICAgaXQtPnZhbHVlLmZpcnN0ID0gY29weVRvVmVjdG9yKGZhbGxi
YWNrRm9udHMpOwogICAgICAgICBydW4tPmJveCgpLT5wYXJlbnQoKS0+Y2xlYXJEZXNjZW5kYW50
c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lKCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94LmNwcAkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgz
LDcgQEAgcHVibGljOgogCiAgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgY29weStzb3J0IHRo
ZSB2YWx1ZXMgb25jZSBwZXIgbGF5b3V0IGV2ZW4gaWYgdGhlIGl0ZXJhdG9yIGlzIHJlc2V0Lgog
ICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihtX29yZGluYWxWYWx1
ZXMuc2l6ZSgpKSAhPSBtX3NvcnRlZE9yZGluYWxWYWx1ZXMuc2l6ZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjb3B5VG9WZWN0b3IobV9vcmRpbmFsVmFsdWVzLCBtX3NvcnRlZE9yZGlu
YWxWYWx1ZXMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9zb3J0ZWRPcmRpbmFsVmFsdWVz
ID0gY29weVRvVmVjdG9yKG1fb3JkaW5hbFZhbHVlcyk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnNvcnQobV9zb3J0ZWRPcmRpbmFsVmFsdWVzLmJlZ2luKCksIG1fc29ydGVkT3JkaW5h
bFZhbHVlcy5lbmQoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgbV9jdXJyZW50T3JkaW5hbCA9IG1fZm9yd2FyZCA/IG1fc29ydGVkT3JkaW5hbFZhbHVlc1tt
X29yZGluYWxJdGVyYXRpb24gLSAxXSA6IG1fc29ydGVkT3JkaW5hbFZhbHVlc1ttX3NvcnRlZE9y
ZGluYWxWYWx1ZXMuc2l6ZSgpIC0gbV9vcmRpbmFsSXRlcmF0aW9uXTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCShyZXZpc2lvbiAy
MjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTMxMiw4ICsxMzEyLDcgQEAgdm9pZCBSZW5kZXJUYWJsZVNl
Y3Rpb246OnBhaW50T2JqZWN0KFBhaQogI2VuZGlmCiAKICAgICAgICAgICAgIC8vIFRvIG1ha2Ug
c3VyZSB3ZSBwcm9wZXJseSByZXBhaW50IHRoZSBzZWN0aW9uLCB3ZSByZXBhaW50IGFsbCB0aGUg
b3ZlcmZsb3dpbmcgY2VsbHMgdGhhdCB3ZSBjb2xsZWN0ZWQuCi0gICAgICAgICAgICBWZWN0b3I8
UmVuZGVyVGFibGVDZWxsKj4gY2VsbHM7Ci0gICAgICAgICAgICBjb3B5VG9WZWN0b3IobV9vdmVy
Zmxvd2luZ0NlbGxzLCBjZWxscyk7CisgICAgICAgICAgICBhdXRvIGNlbGxzID0gY29weVRvVmVj
dG9yKG1fb3ZlcmZsb3dpbmdDZWxscyk7CiAKICAgICAgICAgICAgIEhhc2hTZXQ8UmVuZGVyVGFi
bGVDZWxsKj4gc3Bhbm5pbmdDZWxsczsKIApJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzE0OSkK
KysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTctMTAtMTEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBS
ZW1vdmUgb3V0LXBhcmFtZXRlciB2YXJpYW50cyBvZiBjb3B5VG9WZWN0b3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODE1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9f
V0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW06CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdElu
dGVyZmFjZSBkZWJ1Z0Rlc2NyaXB0aW9uXSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6ZHVtcCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6cGVuZGluZ0Nvb2tpZXMgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUHJvY2Vz
c0Fzc2VydGlvbklPUy5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3Vu
ZFRhc2tNYW5hZ2VyIF9ub3RpZnlDbGllbnRzT2ZJbW1pbmVudFN1c3BlbnNpb25dKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldGVy
bWluZVBvc2l0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6aW50ZXJuYWxs
eUZhaWxlZExvYWRUaW1lckZpcmVkKToKKworICAgICAgICAgICAgUmVwbGFjZSBvdXQtcGFyYW1l
dGVyIGJhc2VkIGNvcHlUb1ZlY3Rvciwgd2l0aCBvbmUgdGhhdCByZXR1cm5zIGEgVmVjdG9yLgor
CiAyMDE3LTEwLTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVw
bGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNvcHlUb1ZlY3Rv
cihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQpJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0SW50
ZXJmYWNlLm1tCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMs
OSArMjEzLDcgQEAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZVN0cgogICAg
ICAgICBhdXRvIGRlc2NyaXB0aW9uRm9yQXJndW1lbnQgPSBbXShhdXRvJiBhbGxvd2VkQXJndW1l
bnRDbGFzc2VzKSB7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1tOU011dGFi
bGVTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAieyJdKTsKIAotICAgICAgICAgICAgVmVj
dG9yPENsYXNzPiBvcmRlcmVkQXJndW1lbnRDbGFzc2VzOwotICAgICAgICAgICAgY29weVRvVmVj
dG9yKGFsbG93ZWRBcmd1bWVudENsYXNzZXMsIG9yZGVyZWRBcmd1bWVudENsYXNzZXMpOwotCisg
ICAgICAgICAgICBhdXRvIG9yZGVyZWRBcmd1bWVudENsYXNzZXMgPSBjb3B5VG9WZWN0b3IoYWxs
b3dlZEFyZ3VtZW50Q2xhc3Nlcyk7CiAgICAgICAgICAgICBzdGQ6OnNvcnQob3JkZXJlZEFyZ3Vt
ZW50Q2xhc3Nlcy5iZWdpbigpLCBvcmRlcmVkQXJndW1lbnRDbGFzc2VzLmVuZCgpLCBbXShDbGFz
cyBhLCBDbGFzcyBiKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIENTdHJpbmcoY2xhc3NfZ2V0
TmFtZShhKSkgPCBDU3RyaW5nKGNsYXNzX2dldE5hbWUoYikpOwogICAgICAgICAgICAgfSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rp
b24uY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU5OSwxMSArNTk5LDggQEAgc3RhdGljIHZvaWQgZHVtcChUZXh0U3RyZWFt
JiB0cywgY29uc3QgUwogICAgIGlmIChzdGF0ZVRyZWUucm9vdFN0YXRlTm9kZSgpKQogICAgICAg
ICByZWN1cnNpdmVEdW1wTm9kZXModHMsICpzdGF0ZVRyZWUucm9vdFN0YXRlTm9kZSgpLCBjaGFu
Z2VkUHJvcGVydGllc09ubHkpOwogCi0gICAgaWYgKCFzdGF0ZVRyZWUucmVtb3ZlZE5vZGVzKCku
aXNFbXB0eSgpKSB7Ci0gICAgICAgIFZlY3RvcjxTY3JvbGxpbmdOb2RlSUQ+IHJlbW92ZWROb2Rl
czsKLSAgICAgICAgY29weVRvVmVjdG9yKHN0YXRlVHJlZS5yZW1vdmVkTm9kZXMoKSwgcmVtb3Zl
ZE5vZGVzKTsKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5PFZlY3RvcjxTY3JvbGxpbmdOb2RlSUQ+
PigicmVtb3ZlZC1ub2RlcyIsIHJlbW92ZWROb2Rlcyk7Ci0gICAgfQorICAgIGlmICghc3RhdGVU
cmVlLnJlbW92ZWROb2RlcygpLmlzRW1wdHkoKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5PFZl
Y3RvcjxTY3JvbGxpbmdOb2RlSUQ+PigicmVtb3ZlZC1ub2RlcyIsIGNvcHlUb1ZlY3RvcihzdGF0
ZVRyZWUucmVtb3ZlZE5vZGVzKCkpKTsKIH0KIAogV1RGOjpDU3RyaW5nIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb246OmRlc2NyaXB0aW9uKCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjIzMTQ5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYxNCwxMSArNTYxNCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNl
dFN0YXRlCiAgICAgbV9jYWxsYmFja3MuaW52YWxpZGF0ZShlcnJvcik7CiAgICAgbV9sb2FkRGVw
ZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuY2xlYXIoKTsKIAotICAgIFZlY3RvcjxXZWJFZGl0Q29t
bWFuZFByb3h5Kj4gZWRpdENvbW1hbmRWZWN0b3I7Ci0gICAgY29weVRvVmVjdG9yKG1fZWRpdENv
bW1hbmRTZXQsIGVkaXRDb21tYW5kVmVjdG9yKTsKKyAgICBhdXRvIGVkaXRDb21tYW5kVmVjdG9y
ID0gY29weVRvVmVjdG9yKG1fZWRpdENvbW1hbmRTZXQpOwogICAgIG1fZWRpdENvbW1hbmRTZXQu
Y2xlYXIoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGVkaXRDb21tYW5kVmVjdG9y
LnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgZWRpdENvbW1hbmRWZWN0b3JbaV0tPmlu
dmFsaWRhdGUoKTsKKworICAgIGZvciAoYXV0byYgZWRpdENvbW1hbmQgOiBlZGl0Q29tbWFuZFZl
Y3RvcikKKyAgICAgICAgZWRpdENvbW1hbmQtPmludmFsaWRhdGUoKTsKIAogICAgIG1fYWN0aXZl
UG9wdXBNZW51ID0gbnVsbHB0cjsKICAgICBtX21lZGlhU3RhdGUgPSBNZWRpYVByb2R1Y2VyOjpJ
c05vdFBsYXlpbmc7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxMCwxNiArNzEwLDE2IEBAIFdlYlBy
b2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU4KICAgICBwYXJhbWV0ZXJzLmNhY2hl
TW9kZWwgPSBjYWNoZU1vZGVsKCk7CiAgICAgcGFyYW1ldGVycy5sYW5ndWFnZXMgPSB1c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKCk7CiAKLSAgICBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3Rl
ckFzRW1wdHlEb2N1bWVudCwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzRW1wdHlE
b2N1bWVudCk7Ci0gICAgY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc1NlY3VyZSwg
cGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzU2VjdXJlKTsKLSAgICBjb3B5VG9WZWN0
b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5LCBw
YXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQ
b2xpY3kpOwotICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1NldERvbWFpblJlbGF4YXRpb25G
b3JiaWRkZW5Gb3IsIHBhcmFtZXRlcnMudXJsU2NoZW1lc0ZvcldoaWNoRG9tYWluUmVsYXhhdGlv
bklzRm9yYmlkZGVuKTsKLSAgICBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzTG9j
YWwsIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0xvY2FsKTsKLSAgICBjb3B5VG9W
ZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzTm9BY2Nlc3MsIHBhcmFtZXRlcnMudXJsU2NoZW1l
c1JlZ2lzdGVyZWRBc05vQWNjZXNzKTsKLSAgICBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdp
c3RlckFzRGlzcGxheUlzb2xhdGVkLCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNE
aXNwbGF5SXNvbGF0ZWQpOwotICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXND
T1JTRW5hYmxlZCwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQp
OwotICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNBbHdheXNSZXZhbGlkYXRl
ZCwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQWx3YXlzUmV2YWxpZGF0ZWQpOwot
ICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDYWNoZVBhcnRpdGlvbmVkLCBw
YXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYWNoZVBhcnRpdGlvbmVkKTsKKyAgICBw
YXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNFbXB0eURvY3VtZW50ID0gY29weVRvVmVj
dG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0VtcHR5RG9jdW1lbnQpOworICAgIHBhcmFtZXRlcnMu
dXJsU2NoZW1lc1JlZ2lzdGVyZWRBc1NlY3VyZSA9IGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1Jl
Z2lzdGVyQXNTZWN1cmUpOworICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0J5
cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeSA9IGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1Jl
Z2lzdGVyQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3kpOworICAgIHBhcmFtZXRlcnMu
dXJsU2NoZW1lc0ZvcldoaWNoRG9tYWluUmVsYXhhdGlvbklzRm9yYmlkZGVuID0gY29weVRvVmVj
dG9yKG1fc2NoZW1lc1RvU2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvcik7CisgICAgcGFy
YW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTG9jYWwgPSBjb3B5VG9WZWN0b3IobV9zY2hl
bWVzVG9SZWdpc3RlckFzTG9jYWwpOworICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVy
ZWRBc05vQWNjZXNzID0gY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc05vQWNjZXNz
KTsKKyAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNEaXNwbGF5SXNvbGF0ZWQg
PSBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzRGlzcGxheUlzb2xhdGVkKTsKKyAg
ICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCA9IGNvcHlUb1Zl
Y3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDT1JTRW5hYmxlZCk7CisgICAgcGFyYW1ldGVycy51
cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQWx3YXlzUmV2YWxpZGF0ZWQgPSBjb3B5VG9WZWN0b3IobV9z
Y2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2YWxpZGF0ZWQpOworICAgIHBhcmFtZXRlcnMudXJs
U2NoZW1lc1JlZ2lzdGVyZWRBc0NhY2hlUGFydGl0aW9uZWQgPSBjb3B5VG9WZWN0b3IobV9zY2hl
bWVzVG9SZWdpc3RlckFzQ2FjaGVQYXJ0aXRpb25lZCk7CiAKICAgICBwYXJhbWV0ZXJzLnNob3Vs
ZEFsd2F5c1VzZUNvbXBsZXhUZXh0Q29kZVBhdGggPSBtX2Fsd2F5c1VzZXNDb21wbGV4VGV4dENv
ZGVQYXRoOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkVXNlRm9udFNtb290aGluZyA9IG1fc2hvdWxk
VXNlRm9udFNtb290aGluZzsKQEAgLTczOCw3ICs3MzgsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdl
YlByb2Nlc3NQb29sOjpjcmVhdGVOCiAjZW5kaWYKIAogICAgIHBhcmFtZXRlcnMucGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaGVzID0gbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5hdXRvU3RhcnRP
cmlnaW5IYXNoZXNDb3B5KCk7Ci0gICAgY29weVRvVmVjdG9yKG1fcGx1Z0luQXV0b1N0YXJ0UHJv
dmlkZXIuYXV0b1N0YXJ0T3JpZ2lucygpLCBwYXJhbWV0ZXJzLnBsdWdJbkF1dG9TdGFydE9yaWdp
bnMpOworICAgIHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyA9IGNvcHlUb1ZlY3Rv
cihtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmF1dG9TdGFydE9yaWdpbnMoKSk7CiAKICAgICBw
YXJhbWV0ZXJzLm1lbW9yeUNhY2hlRGlzYWJsZWQgPSBtX21lbW9yeUNhY2hlRGlzYWJsZWQ7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM1Miw5ICsxMzUyLDcgQEAgU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMg
V2Vic2l0ZQogCiBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBXZWJzaXRlRGF0YVN0b3JlOjpwZW5k
aW5nQ29va2llcygpIGNvbnN0CiB7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2ll
czsKLSAgICBjb3B5VG9WZWN0b3IobV9wZW5kaW5nQ29va2llcywgY29va2llcyk7Ci0gICAgcmV0
dXJuIGNvb2tpZXM7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdDb29raWVzKTsK
IH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjphZGRQZW5kaW5nQ29va2llKGNvbnN0IFdlYkNv
cmU6OkNvb2tpZSYgY29va2llKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbQkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03
MCw3ICs3MCw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3QKICAg
ICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyID0gbV91aVByb2Nl
c3NDb29raWVTdG9yYWdlSWRlbnRpZmllcjsKICNlbmRpZgogCi0gICAgY29weVRvVmVjdG9yKG1f
cGVuZGluZ0Nvb2tpZXMsIHBhcmFtZXRlcnMucGVuZGluZ0Nvb2tpZXMpOworICAgIHBhcmFtZXRl
cnMucGVuZGluZ0Nvb2tpZXMgPSBjb3B5VG9WZWN0b3IobV9wZW5kaW5nQ29va2llcyk7CiAKICAg
ICBpZiAoIWNvb2tpZUZpbGUuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShj
b29raWVGaWxlKSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2Vy
dGlvbklPUy5tbQkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTk2LDkgKzk2LDgg
QEAgLSAodm9pZClyZW1vdmVDbGllbnQ6KFByb2Nlc3NBc3NlcnRpb25DbAogLSAodm9pZClfbm90
aWZ5Q2xpZW50c09mSW1taW5lbnRTdXNwZW5zaW9uCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICBWZWN0b3I8UHJvY2Vzc0Fzc2VydGlvbkNsaWVudCo+IGNsaWVudHNUb05v
dGlmeTsKLSAgICBjb3B5VG9WZWN0b3IoX2NsaWVudHMsIGNsaWVudHNUb05vdGlmeSk7Ci0gICAg
Zm9yIChhdXRvKiBjbGllbnQgOiBjbGllbnRzVG9Ob3RpZnkpCisKKyAgICBmb3IgKGF1dG8qIGNs
aWVudCA6IGNvcHlUb1ZlY3RvcihfY2xpZW50cykpCiAgICAgICAgIGNsaWVudC0+YXNzZXJ0aW9u
V2lsbEV4cGlyZUltbWluZW50bHkoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDIy
MzE0OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxMCArNjAsNyBAQCB2b2lkIFdlYkNvb2tpZU1h
bmFnZXI6OmdldEhvc3RuYW1lc1dpdGhDCiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAg
ICBXZWJDb3JlOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcygqc3RvcmFnZVNlc3Npb24sIGhvc3Ru
YW1lcyk7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBob3N0bmFtZUxpc3Q7Ci0gICAgY29weVRvVmVj
dG9yKGhvc3RuYW1lcywgaG9zdG5hbWVMaXN0KTsKLQotICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGhv
c3RuYW1lTGlzdCwgY2FsbGJhY2tJRCksIDApOworICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvcHlU
b1ZlY3Rvcihob3N0bmFtZXMpLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIu
Y3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9j
YXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsMTMg
Kzk0LDExIEBAIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzZXRFbmFibGVIaWcKIHZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uOjpEYXRhJiBkYXRhKQogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAg
ICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gcG9zaXRpb24gPSBHZW9sb2NhdGlvblBvc2l0
aW9uOjpjcmVhdGUoZGF0YS50aW1lc3RhbXAsIGRhdGEubGF0aXR1ZGUsIGRhdGEubG9uZ2l0dWRl
LCBkYXRhLmFjY3VyYWN5LCBkYXRhLmNhblByb3ZpZGVBbHRpdHVkZSwgZGF0YS5hbHRpdHVkZSwg
ZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSwgZGF0YS5hbHRpdHVkZUFjY3VyYWN5LCBk
YXRhLmNhblByb3ZpZGVIZWFkaW5nLCBkYXRhLmhlYWRpbmcsIGRhdGEuY2FuUHJvdmlkZVNwZWVk
LCBkYXRhLnNwZWVkKTsKKyAgICBhdXRvIHBvc2l0aW9uID0gR2VvbG9jYXRpb25Qb3NpdGlvbjo6
Y3JlYXRlKGRhdGEudGltZXN0YW1wLCBkYXRhLmxhdGl0dWRlLCBkYXRhLmxvbmdpdHVkZSwgZGF0
YS5hY2N1cmFjeSwgZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGUsIGRhdGEuYWx0aXR1ZGUsIGRhdGEu
Y2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ksIGRhdGEuYWx0aXR1ZGVBY2N1cmFjeSwgZGF0YS5j
YW5Qcm92aWRlSGVhZGluZywgZGF0YS5oZWFkaW5nLCBkYXRhLmNhblByb3ZpZGVTcGVlZCwgZGF0
YS5zcGVlZCk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2U+PiB3ZWJQYWdlQ29weTsKLSAg
ICBjb3B5VG9WZWN0b3IobV9wYWdlU2V0LCB3ZWJQYWdlQ29weSk7Ci0gICAgZm9yIChhdXRvJiBw
YWdlIDogd2ViUGFnZUNvcHkpIHsKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3Io
bV9wYWdlU2V0KSkgewogICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAgICAg
IEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRpb25D
aGFuZ2VkKHBvc2l0aW9uLmdldCgpKTsKKyAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRpb25DaGFuZ2VkKHBvc2l0aW9uLnB0cigp
KTsKICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKQEAgLTExMyw5ICsxMTEs
NyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0CiAgICAgLy8gRklY
TUU6IEFkZCBsb2NhbGl6ZWQgZXJyb3Igc3RyaW5nLgogICAgIGF1dG8gZXJyb3IgPSBHZW9sb2Nh
dGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwg
ZXJyb3JNZXNzYWdlKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZT4+IHdlYlBhZ2VDb3B5
OwotICAgIGNvcHlUb1ZlY3RvcihtX3BhZ2VTZXQsIHdlYlBhZ2VDb3B5KTsKLSAgICBmb3IgKGF1
dG8mIHBhZ2UgOiB3ZWJQYWdlQ29weSkgeworICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1Zl
Y3RvcihtX3BhZ2VTZXQpKSB7CiAgICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQogICAgICAg
ICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5lcnJv
ck9jY3VycmVkKGVycm9yLmdldCgpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCShyZXZpc2lv
biAyMjMxNDkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OCwxMSArMjU4LDggQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVJbnRlcm5hbAogCiB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5
OjppbnRlcm5hbGx5RmFpbGVkTG9hZFRpbWVyRmlyZWQoKQogewotICAgIFZlY3RvcjxSZWZQdHI8
UmVzb3VyY2VMb2FkZXI+PiBpbnRlcm5hbGx5RmFpbGVkUmVzb3VyY2VMb2FkZXJzOwotICAgIGNv
cHlUb1ZlY3RvcihtX2ludGVybmFsbHlGYWlsZWRSZXNvdXJjZUxvYWRlcnMsIGludGVybmFsbHlG
YWlsZWRSZXNvdXJjZUxvYWRlcnMpOwotICAgIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aW50ZXJuYWxseUZhaWxlZFJlc291cmNlTG9hZGVycy5zaXplKCk7ICsraSkKLSAgICAgICAgaW50
ZXJuYWxseUZhaWxlZFJlc291cmNlTG9hZGVyc1tpXS0+ZGlkRmFpbChpbnRlcm5hbEVycm9yKGlu
dGVybmFsbHlGYWlsZWRSZXNvdXJjZUxvYWRlcnNbaV0tPnVybCgpKSk7CisgICAgZm9yIChhdXRv
JiByZXNvdXJjZUxvYWRlciA6IGNvcHlUb1ZlY3RvcihtX2ludGVybmFsbHlGYWlsZWRSZXNvdXJj
ZUxvYWRlcnMpKQorICAgICAgICByZXNvdXJjZUxvYWRlci0+ZGlkRmFpbChpbnRlcm5hbEVycm9y
KHJlc291cmNlTG9hZGVyLT51cmwoKSkpOwogfQogCiB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpz
dGFydExvY2FsTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAxNy0xMC0xMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlbW92ZSBvdXQtcGFyYW1ldGVyIHZhcmlhbnRzIG9mIGNvcHlUb1ZlY3RvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTU1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dlYkdlb2xvY2F0
aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1Mg
X2hhbmRsZVBlbmRpbmdJbml0aWFsUG9zaXRpb246XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0
aW9uUHJvdmlkZXJJT1MgcG9zaXRpb25DaGFuZ2VkOl0pOgorICAgICAgICAoLVtXZWJHZW9sb2Nh
dGlvblByb3ZpZGVySU9TIGVycm9yT2NjdXJyZWQ6XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0
aW9uUHJvdmlkZXJJT1MgcmVzZXRHZW9sb2NhdGlvbl0pOgorCisgICAgICAgICAgICBSZXBsYWNl
IG91dC1wYXJhbWV0ZXIgYmFzZWQgY29weVRvVmVjdG9yLCB3aXRoIG9uZSB0aGF0IHJldHVybnMg
YSBWZWN0b3IuCisKIDIwMTctMTAtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgV2ViQ29yZVN5c3RlbUludGVyZmFjZQpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9j
YXRpb25Qcm92aWRlcklPUy5tbQkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjAsMTAgKzE2MCw4IEBAIC0gKHZvaWQpX2hhbmRsZVBlbmRpbmdJbml0aWFsUG9zaXRp
b246KE4KICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwogCiAgICAgaWYgKF9sYXN0
UG9zaXRpb24pIHsKLSAgICAgICAgVmVjdG9yPFdlYlZpZXcqPiB3ZWJWaWV3c0NvcHk7Ci0gICAg
ICAgIGNvcHlUb1ZlY3RvcihfcGVuZGluZ0luaXRpYWxQb3NpdGlvbldlYlZpZXcsIHdlYlZpZXdz
Q29weSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViVmlld3NDb3B5LnNpemUo
KTsgKytpKQotICAgICAgICAgICAgW3dlYlZpZXdzQ29weVtpXSBfZ2VvbG9jYXRpb25EaWRDaGFu
Z2VQb3NpdGlvbjpfbGFzdFBvc2l0aW9uLmdldCgpXTsKKyAgICAgICAgZm9yIChhdXRvJiB3ZWJW
aWV3IDogY29weVRvVmVjdG9yKF9wZW5kaW5nSW5pdGlhbFBvc2l0aW9uV2ViVmlldykpCisgICAg
ICAgICAgICBbd2ViVmlldyBfZ2VvbG9jYXRpb25EaWRDaGFuZ2VQb3NpdGlvbjpfbGFzdFBvc2l0
aW9uLmdldCgpXTsKICAgICB9CiAgICAgYWJvcnRTZW5kTGFzdFBvc2l0aW9uKHNlbGYpOwogfQpA
QCAtMjk1LDEwICsyOTMsOCBAQCAtICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViR2VvbG9jYXRp
b25QCiAgICAgYWJvcnRTZW5kTGFzdFBvc2l0aW9uKHNlbGYpOwogCiAgICAgX2xhc3RQb3NpdGlv
biA9IHBvc2l0aW9uOwotICAgIFZlY3RvcjxXZWJWaWV3Kj4gd2ViVmlld3NDb3B5OwotICAgIGNv
cHlUb1ZlY3RvcihfcmVnaXN0ZXJlZFdlYlZpZXdzLCB3ZWJWaWV3c0NvcHkpOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgd2ViVmlld3NDb3B5LnNpemUoKTsgKytpKQotICAgICAgICBbd2Vi
Vmlld3NDb3B5LmF0KGkpIF9nZW9sb2NhdGlvbkRpZENoYW5nZVBvc2l0aW9uOl9sYXN0UG9zaXRp
b24uZ2V0KCldOworICAgIGZvciAoYXV0byYgd2ViVmlldyA6IGNvcHlUb1ZlY3RvcihfcmVnaXN0
ZXJlZFdlYlZpZXdzKSkKKyAgICAgICAgW3dlYlZpZXcgX2dlb2xvY2F0aW9uRGlkQ2hhbmdlUG9z
aXRpb246X2xhc3RQb3NpdGlvbi5nZXQoKV07CiB9CiAKIC0gKHZvaWQpZXJyb3JPY2N1cnJlZDoo
TlNTdHJpbmcgKillcnJvck1lc3NhZ2UKQEAgLTMwNywxMCArMzAzLDggQEAgLSAodm9pZCllcnJv
ck9jY3VycmVkOihOU1N0cmluZyAqKWVycm9yTQogCiAgICAgX2xhc3RQb3NpdGlvbi5jbGVhcigp
OwogCi0gICAgVmVjdG9yPFdlYlZpZXcqPiB3ZWJWaWV3c0NvcHk7Ci0gICAgY29weVRvVmVjdG9y
KF9yZWdpc3RlcmVkV2ViVmlld3MsIHdlYlZpZXdzQ29weSk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB3ZWJWaWV3c0NvcHkuc2l6ZSgpOyArK2kpCi0gICAgICAgIFt3ZWJWaWV3c0NvcHku
YXQoaSkgX2dlb2xvY2F0aW9uRGlkRmFpbFdpdGhNZXNzYWdlOmVycm9yTWVzc2FnZV07CisgICAg
Zm9yIChhdXRvJiB3ZWJWaWV3IDogY29weVRvVmVjdG9yKF9yZWdpc3RlcmVkV2ViVmlld3MpKQor
ICAgICAgICBbd2ViVmlldyBfZ2VvbG9jYXRpb25EaWRGYWlsV2l0aE1lc3NhZ2U6ZXJyb3JNZXNz
YWdlXTsKIH0KIAogLSAodm9pZClyZXNldEdlb2xvY2F0aW9uCkBAIC0zMjcsMTAgKzMyMSw4IEBA
IC0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbgogICAgIGFib3J0U2VuZExhc3RQb3NpdGlvbihzZWxm
KTsKIAogICAgIC8vIDIpIFJlc2V0IHRoZSB2aWV3cywgZWFjaCBmcmFtZSB3aWxsIHJlZ2lzdGVy
IGJhY2sgaWYgbmVlZGVkLgotICAgIFZlY3RvcjxXZWJWaWV3Kj4gd2ViVmlld3NDb3B5OwotICAg
IGNvcHlUb1ZlY3RvcihfdHJhY2tlZFdlYlZpZXdzLCB3ZWJWaWV3c0NvcHkpOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgd2ViVmlld3NDb3B5LnNpemUoKTsgKytpKQotICAgICAgICBbd2Vi
Vmlld3NDb3B5LmF0KGkpIF9yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbl07CisgICAgZm9y
IChhdXRvJiB3ZWJWaWV3IDogY29weVRvVmVjdG9yKF90cmFja2VkV2ViVmlld3MpKQorICAgICAg
ICBbd2ViVmlldyBfcmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25dOwogfQogQGVuZAogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NyBAQAorMjAxNy0xMC0xMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlbW92ZSBvdXQtcGFyYW1ldGVyIHZhcmlhbnRzIG9mIGNvcHlUb1ZlY3RvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTU1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNj
YXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IGRlc3Ry
b3lQbHVnaW5dKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToK
KyAgICAgICAgKG5ld0FycmF5V2l0aFN0cmluZ3MpOgorCisgICAgICAgICAgICBSZXBsYWNlIG91
dC1wYXJhbWV0ZXIgYmFzZWQgY29weVRvVmVjdG9yLCB3aXRoIG9uZSB0aGF0IHJldHVybnMgYSBW
ZWN0b3IuCisKIDIwMTctMTAtMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXBsYWNlIGNvcHlLZXlzVG9WZWN0b3IvY29weVZhbHVlc1RvVmVjdG9yIHdpdGggY29w
eVRvVmVjdG9yKG1hcC5rZXlzKCkpL2NvcHlUb1ZlY3RvcihtYXAudmFsdWVzKCkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luVmlldy5tbQkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTEx
NzMsOSArMTE3Myw3IEBAIC0gKHZvaWQpZGVzdHJveVBsdWdpbgogICAgIC8vIFRvIHN0b3AgYWN0
aXZlIHN0cmVhbXMgaXQncyBuZWNlc3NhcnkgdG8gaW52b2tlIHN0b3AoKSBvbiBhIGNvcHkgCiAg
ICAgLy8gb2Ygc3RyZWFtcy4gVGhpcyBpcyBiZWNhdXNlIGNhbGxpbmcgV2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW06OnN0b3AoKSBhbHNvIGhhcyB0aGUgc2lkZSBlZmZlY3QKICAgICAvLyBvZiByZW1v
dmluZyBhIHN0cmVhbSBmcm9tIHRoaXMgaGFzaCBzZXQuCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbT4+IHN0cmVhbXNDb3B5OwotICAgIGNvcHlUb1ZlY3RvcihzdHJl
YW1zLCBzdHJlYW1zQ29weSk7Ci0gICAgZm9yIChhdXRvJiBzdHJlYW06IHN0cmVhbXNDb3B5KQor
ICAgIGZvciAoYXV0byYgc3RyZWFtIDogY29weVRvVmVjdG9yKHN0cmVhbXMpKQogICAgICAgICBz
dHJlYW0tPnN0b3AoKTsKIAogICAgIGZvciAoV2ViRnJhbWUgKmZyYW1lIGluIFtfcGVuZGluZ0Zy
YW1lTG9hZHMga2V5RW51bWVyYXRvcl0pCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQkocmV2aXNpb24g
MjIzMTQ5KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVz
ZW50YXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTg5LDggKzg5LDcgQEAgQGludGVyZmFjZSBX
ZWJIVE1MUmVwcmVzZW50YXRpb25Qcml2YXRlIAogCiBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+
IG5ld0FycmF5V2l0aFN0cmluZ3MoY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIHNldCkKIHsKLSAgICBWZWN0b3I8TlNTdHJpbmcgKj4gdmVjdG9yOwotICAg
IGNvcHlUb1ZlY3RvcihzZXQsIHZlY3Rvcik7CisgICAgYXV0byB2ZWN0b3IgPSBjb3B5VG9WZWN0
b3JPZjxOU1N0cmluZyAqPihzZXQpOwogICAgIHJldHVybiBhZG9wdE5TKFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzOnZlY3Rvci5kYXRhKCkgY291bnQ6dmVjdG9yLnNpemUoKV0pOwog
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323425</attachid>
            <date>2017-10-11 10:20:20 -0700</date>
            <delta_ts>2017-10-11 11:52:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178155-20171011102019.patch</filename>
            <type>text/plain</type>
            <size>61545</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIzMTY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE3LTEwLTExICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVt
b3ZlIG91dC1wYXJhbWV0ZXIgdmFyaWFudHMgb2YgY29weVRvVmVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgxNTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1
Z1NlcnZlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpkaXNw
YXRjaEJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6ZGlzcGF0Y2hCcmVha3BvaW50QWN0aW9uU291bmQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hCcmVha3BvaW50QWN0aW9uUHJvYmUpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXJzZVNv
dXJjZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEZh
aWxlZFRvUGFyc2VTb3VyY2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZl
cjo6ZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKToKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgUmVwbGFjZSBvdXQtcGFyYW1ldGVyIGJhc2VkIGNvcHlUb1ZlY3Rvciwgd2l0aCBvbmUgdGhh
dCByZXR1cm5zIGEgVmVjdG9yLgorCiAyMDE3LTEwLTEwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlA
YXBwbGUuY29tPgogCiAgICAgICAgIFByb3RvdHlwZSBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiBzaG91
bGQgYmUgYSBkZWZlcnJlZCB0cmFuc2l0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAkocmV2aXNpb24gMjIz
MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw5ICsxNDUsNyBAQCB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpkaXNwYXRjaEJyZWFrcG9pCiAKICAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2Uo
bV9jYWxsaW5nTGlzdGVuZXJzLCB0cnVlKTsKIAotICAgIFZlY3RvcjxTY3JpcHREZWJ1Z0xpc3Rl
bmVyKj4gbGlzdGVuZXJzQ29weTsKLSAgICBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMsIGxpc3Rl
bmVyc0NvcHkpOwotICAgIGZvciAoYXV0byogbGlzdGVuZXIgOiBsaXN0ZW5lcnNDb3B5KQorICAg
IGZvciAoYXV0byogbGlzdGVuZXIgOiBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMpKQogICAgICAg
ICBsaXN0ZW5lci0+YnJlYWtwb2ludEFjdGlvbkxvZygqZXhlYywgbWVzc2FnZSk7CiB9CiAKQEAg
LTE2MSw5ICsxNTksNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEJyZWFrcG9p
CiAKICAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2UobV9jYWxsaW5nTGlzdGVuZXJzLCB0cnVl
KTsKIAotICAgIFZlY3RvcjxTY3JpcHREZWJ1Z0xpc3RlbmVyKj4gbGlzdGVuZXJzQ29weTsKLSAg
ICBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMsIGxpc3RlbmVyc0NvcHkpOwotICAgIGZvciAoYXV0
byogbGlzdGVuZXIgOiBsaXN0ZW5lcnNDb3B5KQorICAgIGZvciAoYXV0byogbGlzdGVuZXIgOiBj
b3B5VG9WZWN0b3IobV9saXN0ZW5lcnMpKQogICAgICAgICBsaXN0ZW5lci0+YnJlYWtwb2ludEFj
dGlvblNvdW5kKGJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyKTsKIH0KIApAQCAtMTc5LDkgKzE3
NSw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoQnJlYWtwb2kKIAogICAgIHVu
c2lnbmVkIHNhbXBsZUlkID0gbV9uZXh0UHJvYmVTYW1wbGVJZCsrOwogCi0gICAgVmVjdG9yPFNj
cmlwdERlYnVnTGlzdGVuZXIqPiBsaXN0ZW5lcnNDb3B5OwotICAgIGNvcHlUb1ZlY3RvcihtX2xp
c3RlbmVycywgbGlzdGVuZXJzQ29weSk7Ci0gICAgZm9yIChhdXRvKiBsaXN0ZW5lciA6IGxpc3Rl
bmVyc0NvcHkpCisgICAgZm9yIChhdXRvKiBsaXN0ZW5lciA6IGNvcHlUb1ZlY3RvcihtX2xpc3Rl
bmVycykpCiAgICAgICAgIGxpc3RlbmVyLT5icmVha3BvaW50QWN0aW9uUHJvYmUoKmV4ZWMsIGFj
dGlvbiwgbV9jdXJyZW50UHJvYmVCYXRjaElkLCBzYW1wbGVJZCwgc2FtcGxlVmFsdWUpOwogfQog
CkBAIC0yMjEsMTAgKzIxNSw4IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlk
UGFyc2UKICAgICBlbHNlCiAgICAgICAgIHNjcmlwdC5lbmRDb2x1bW4gPSBzb3VyY2VMZW5ndGgg
LSBsYXN0TGluZVN0YXJ0OwogCi0gICAgVmVjdG9yPFNjcmlwdERlYnVnTGlzdGVuZXIqPiBjb3B5
OwotICAgIGNvcHlUb1ZlY3RvcihsaXN0ZW5lcnMsIGNvcHkpOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY29weS5zaXplKCk7ICsraSkKLSAgICAgICAgY29weVtpXS0+ZGlkUGFyc2VTb3Vy
Y2Uoc291cmNlSUQsIHNjcmlwdCk7CisgICAgZm9yIChhdXRvKiBsaXN0ZW5lciA6IGNvcHlUb1Zl
Y3RvcihsaXN0ZW5lcnMpKQorICAgICAgICBsaXN0ZW5lci0+ZGlkUGFyc2VTb3VyY2Uoc291cmNl
SUQsIHNjcmlwdCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRmFpbGVk
VG9QYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzLCBTb3VyY2VQcm92aWRl
ciogc291cmNlUHJvdmlkZXIsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQpAQCAtMjMzLDEwICsyMjUsOCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRj
aEZhaWxlZFRvCiAgICAgU3RyaW5nIGRhdGEgPSBzb3VyY2VQcm92aWRlci0+c291cmNlKCkudG9T
dHJpbmcoKTsKICAgICBpbnQgZmlyc3RMaW5lID0gc291cmNlUHJvdmlkZXItPnN0YXJ0UG9zaXRp
b24oKS5tX2xpbmUub25lQmFzZWRJbnQoKTsKIAotICAgIFZlY3RvcjxTY3JpcHREZWJ1Z0xpc3Rl
bmVyKj4gY29weTsKLSAgICBjb3B5VG9WZWN0b3IobGlzdGVuZXJzLCBjb3B5KTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNvcHkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNvcHlbaV0tPmZh
aWxlZFRvUGFyc2VTb3VyY2UodXJsLCBkYXRhLCBmaXJzdExpbmUsIGVycm9yTGluZSwgZXJyb3JN
ZXNzYWdlKTsKKyAgICBmb3IgKGF1dG8qIGxpc3RlbmVyIDogY29weVRvVmVjdG9yKGxpc3RlbmVy
cykpCisgICAgICAgIGxpc3RlbmVyLT5mYWlsZWRUb1BhcnNlU291cmNlKHVybCwgZGF0YSwgZmly
c3RMaW5lLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnNvdXJjZVBhcnNlZChFeGVjU3RhdGUqIGV4ZWMsIFNvdXJjZVByb3ZpZGVyKiBzb3Vy
Y2VQcm92aWRlciwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCkBA
IC0yNzEsMTAgKzI2MSw4IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRnVuY3Rp
b24KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJz
KGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFj
ayBjYWxsYmFjaykKIHsKLSAgICBWZWN0b3I8U2NyaXB0RGVidWdMaXN0ZW5lcio+IGNvcHk7Ci0g
ICAgY29weVRvVmVjdG9yKGxpc3RlbmVycywgY29weSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb3B5LnNpemUoKTsgKytpKQotICAgICAgICAodGhpcy0+KmNhbGxiYWNrKShjb3B5W2ld
KTsKKyAgICBmb3IgKGF1dG8qIGxpc3RlbmVyIDogY29weVRvVmVjdG9yKGxpc3RlbmVycykpCisg
ICAgICAgICh0aGlzLT4qY2FsbGJhY2spKGxpc3RlbmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6bm90aWZ5RG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpCkluZGV4OiBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2
aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyNCBAQAorMjAxNy0xMC0xMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgor
CisgICAgICAgIFJlbW92ZSBvdXQtcGFyYW1ldGVyIHZhcmlhbnRzIG9mIGNvcHlUb1ZlY3Rvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTU1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvSGFz
aE1hcC5oOgorICAgICAgICAoV1RGOjpjb3B5VG9WZWN0b3IpOiBEZWxldGVkLgorICAgICAgICAq
IHd0Zi9IYXNoU2V0Lmg6CisgICAgICAgIChXVEY6OmNvcHlUb1ZlY3Rvcik6IERlbGV0ZWQuCisg
ICAgICAgIAorICAgICAgICAgICAgUmVtb3ZlIGNvcHlUb1ZlY3Rvci4KKyAgICAgICAgCisgICAg
ICAgICogd3RmL1ZlY3Rvci5oOgorICAgICAgICAoV1RGOjpjb3B5VG9WZWN0b3JTcGVjaWFsaXph
dGlvbik6CisgICAgICAgIAorICAgICAgICAgICAgQWRkIGFub3RoZXIgdmVyc2lvbiBvZiBjb3B5
VG9WZWN0b3IsIGNhbGxlZCBjb3B5VG9WZWN0b3JTcGVjaWFsaXphdGlvbiwgdGhhdCBhbGxvd3MK
KyAgICAgICAgICAgIHlvdSB0byBzcGVjaWZ5IHRoZSBlbnRpcmUgc3BlY2lhbGl6YXRpb24gZm9y
IHRoZSBWZWN0b3IgeW91IHdhbnQgdG8gY29weSB0by4gVGhpcworICAgICAgICAgICAgY2FuIGJl
IHVzZWZ1bCBpZiB5b3Ugd2FudCB5b3VyIHJlc3VsdGluZyBWZWN0b3IgdG8gaGF2ZSBhbiBpbmxp
bmUgY2FwYWNpdHkuIAorCiAyMDE3LTEwLTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVwbGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3
aXRoIGNvcHlUb1ZlY3RvcihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQpJ
bmRleDogU291cmNlL1dURi93dGYvSGFzaE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0hhc2hNYXAuaAkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dURi93dGYvSGFzaE1h
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzYsMTkgKzU3Niw2IEBAIGlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgSGFzaE1hcDxULCAKICAgICByZXR1cm4gIShhID09IGIpOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBl
bmFtZSBYLCB0eXBlbmFtZSBZPgotaW5saW5lIHZvaWQgY29weVRvVmVjdG9yKGNvbnN0IEhhc2hN
YXA8VCwgVSwgViwgVywgWD4mIGNvbGxlY3Rpb24sIFkmIHZlY3RvcikKLXsKLSAgICB0eXBlZGVm
IHR5cGVuYW1lIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9y
OwotCi0gICAgdmVjdG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNpemUoKSk7Ci0KLSAgICBpdGVyYXRv
ciBpdCA9IGNvbGxlY3Rpb24uYmVnaW4oKTsKLSAgICBpdGVyYXRvciBlbmQgPSBjb2xsZWN0aW9u
LmVuZCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGl0ICE9IGVuZDsgKytpdCwgKytpKQot
ICAgICAgICB2ZWN0b3JbaV0gPSB7ICgqaXQpLmtleSwgKCppdCkudmFsdWUgfTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6SGFzaE1hcDsKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL0hhc2hTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgJKHJl
dmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzU1LDEzICszNTUsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgVz4KLSAgICBp
bmxpbmUgdm9pZCBjb3B5VG9WZWN0b3IoY29uc3QgQyYgY29sbGVjdGlvbiwgVyYgdmVjdG9yKQot
ICAgIHsKLSAgICAgICAgdmVjdG9yLnJlc2l6ZShjb2xsZWN0aW9uLnNpemUoKSk7Ci0gICAgICAg
IHN0ZDo6Y29weShjb2xsZWN0aW9uLmJlZ2luKCksIGNvbGxlY3Rpb24uZW5kKCksIHZlY3Rvci5i
ZWdpbigpKTsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWPgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQ29sbGVjdGlvbj4KICAgICBp
bmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjpvcGVyYXRvcj09KGNvbnN0IE90aGVyQ29sbGVj
dGlvbiYgb3RoZXJDb2xsZWN0aW9uKSBjb25zdApJbmRleDogU291cmNlL1dURi93dGYvVmVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVmVjdG9yLmgJKHJldmlzaW9uIDIyMzE0
OSkKKysrIFNvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjM0LDYg
KzE2MzQsMTcgQEAgVmVjdG9yPHR5cGVuYW1lIE1hcHBlcjxNYXBGdW5jdGlvbiwgU291cgogICAg
IHJldHVybiBNYXBwZXI8TWFwRnVuY3Rpb24sIFNvdXJjZVR5cGU+OjptYXAoc3RkOjpmb3J3YXJk
PFNvdXJjZVR5cGU+KHNvdXJjZSksIHN0ZDo6Zm9yd2FyZDxNYXBGdW5jdGlvbj4obWFwRnVuY3Rp
b24pKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRGVzdGluYXRpb25WZWN0b3IsIHR5cGVuYW1l
IENvbGxlY3Rpb24+CitpbmxpbmUgYXV0byBjb3B5VG9WZWN0b3JTcGVjaWFsaXphdGlvbihjb25z
dCBDb2xsZWN0aW9uJiBjb2xsZWN0aW9uKSAtPiBEZXN0aW5hdGlvblZlY3RvcgoreworICAgIERl
c3RpbmF0aW9uVmVjdG9yIHJlc3VsdDsKKyAgICAvLyBGSVhNRTogVXNlIHN0ZDo6c2l6ZSB3aGVu
IGF2YWlsYWJsZSBvbiBhbGwgY29tcGlsZXJzLgorICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGNvbGxlY3Rpb24uc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBjb2xsZWN0
aW9uKQorICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKGl0ZW0pOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIERlc3RpbmF0aW9uSXRlbVR5cGUsIHR5cGVu
YW1lIENvbGxlY3Rpb24+CiBpbmxpbmUgYXV0byBjb3B5VG9WZWN0b3JPZihjb25zdCBDb2xsZWN0
aW9uJiBjb2xsZWN0aW9uKSAtPiBWZWN0b3I8RGVzdGluYXRpb25JdGVtVHlwZT4KIHsKQEAgLTE2
NTcsNiArMTY2OCw3IEBAIHVzaW5nIFdURjo6VW5zYWZlVmVjdG9yT3ZlcmZsb3c7CiB1c2luZyBX
VEY6OlZlY3RvcjsKIHVzaW5nIFdURjo6Y29weVRvVmVjdG9yOwogdXNpbmcgV1RGOjpjb3B5VG9W
ZWN0b3JPZjsKK3VzaW5nIFdURjo6Y29weVRvVmVjdG9yU3BlY2lhbGl6YXRpb247CiB1c2luZyBX
VEY6OnJlbW92ZVJlcGVhdGVkRWxlbWVudHM7CiAKICNlbmRpZiAvLyBXVEZfVmVjdG9yX2gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDE3LTEwLTExICBTYW0gV2Vpbmln
ICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIG91dC1wYXJhbWV0ZXIgdmFyaWFu
dHMgb2YgY29weVRvVmVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzgxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OnN0b3BUaW1lcnNGb3JPbmVTaG90cyk6CisgICAgICAg
IChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6Y2FuY2VsQWxsUmVxdWVzdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246OmhhbmRsZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xv
Y2F0aW9uOjptYWtlU3VjY2Vzc0NhbGxiYWNrcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRyYW5z
YWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRBbGxSZXN1bHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCR2V0QWxsUmVzdWx0OjphbGxCbG9iRmlsZVBhdGhzIGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6bm90aWZ5Q3Vyc29y
c09mVmFsdWVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRl
eDo6bm90aWZ5Q3Vyc29yc09mQWxsUmVjb3Jkc0NoYW5nZWQpOgorICAgICAgICAqIGNzcy9DU1NG
b250U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpkaXNw
YXRjaEludmFsaWRhdGlvbkNhbGxiYWNrcyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojptb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc3VtZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZCk6CisgICAg
ICAgICogZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6Om5vdGlmeU9ic2VydmVyc0ludGVybmFsKToKKyAg
ICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRh
dGlvbk9ic2VydmVyOjpub3RpZnlNdXRhdGlvbk9ic2VydmVycyk6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmludmFsaWRhdGVOb2RlTGlzdEFu
ZENvbGxlY3Rpb25DYWNoZXMpOgorICAgICAgICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHA6
CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlzcGF0Y2hNZXNzYWdlUG9ydEV2ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9N
T2JqZWN0cyk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZM
b2FkSXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmRlbGl2ZXJEZWxheWVkTWFpblJlc291cmNlcyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpmb3JFYWNoUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnBydW5lRGVhZFJlc291cmNl
c1RvU2l6ZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93Ojp3aWxsRGVzdHJveUNhY2hlZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdpbmRvdzo6d2lsbERlc3Ryb3lEb2N1bWVudEluRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93Ojp3aWxsRGV0YWNoRG9jdW1lbnRGcm9tRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV2luZG93OjpkaXNjb25uZWN0RE9NV2luZG93UHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6OnJlY29ubmVjdERPTVdpbmRvd1Byb3BlcnRpZXMpOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RBbmRQ
cm90ZWN0V2lkZ2V0cyk6CisgICAgICAgICogcGFnZS9NZW1vcnlSZWxlYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlbGVhc2VDcml0aWNhbE1lbW9yeSk6CisgICAgICAgICogcGFnZS9QZXJm
b3JtYW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6cXVldWVFbnRyeSk6
CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpzeXN0ZW1Gb250RmFtaWxpZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW06CisgICAg
ICAgICgtW1dlYkNvcmVNb3Rpb25NYW5hZ2VyIHNlbmRBY2NlbGVyb21ldGVyRGF0YTpdKToKKyAg
ICAgICAgKC1bV2ViQ29yZU1vdGlvbk1hbmFnZXIgc2VuZE1vdGlvbkRhdGE6d2l0aEhlYWRpbmc6
XSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFk
QW5kV3JpdGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbiBpbnZhbGlk
YXRlQW5kQ2FuY2VsXSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjplbmRBbmRDb21taXRVcGRhdGVTY3JvbGxJbmZv
QWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
TGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRMb2dpY2FsV2lkdGhGb3JUZXh0
UnVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZsZXhCb3hJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZVNlY3Rpb246OnBhaW50T2JqZWN0KToKKworICAgICAgICAgICAgUmVwbGFjZSBvdXQt
cGFyYW1ldGVyIGJhc2VkIGNvcHlUb1ZlY3Rvciwgd2l0aCBvbmUgdGhhdCByZXR1cm5zIGEgVmVj
dG9yLgorCiAyMDE3LTEwLTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVwbGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNvcHlU
b1ZlY3RvcihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQpAQCAtODI2NTcs
OCArODI3MzQsNiBAQAogICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6OnNldEludGVyZXN0ZWRJbkNhcHRpb25QcmVmZXJlbmNlQ2hhbmdlcyk6CiAgICAgICAg
ICogcGFnZS9ET01XaW5kb3cuY3BwOgogICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0
TWVzc2FnZSk6Ci0gICAgICAgICogcGFnZS9EZXZpY2VDb250cm9sbGVyLmNwcDoKLSAgICAgICAg
KFdlYkNvcmU6OkRldmljZUNvbnRyb2xsZXI6OmFkZERldmljZUV2ZW50TGlzdGVuZXIpOgogICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKICAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6c2NoZWR1bGVIb3ZlclN0YXRlVXBkYXRlKToKICAgICAgICAgKiBwYWdlL0V2ZW50U291
cmNlLmNwcDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9j
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb24uY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ2
LDkgKzU0Niw3IEBAIHZvaWQgR2VvbG9jYXRpb246OnN0b3BUaW1lcihHZW9Ob3RpZmllclYKIAog
dm9pZCBHZW9sb2NhdGlvbjo6c3RvcFRpbWVyc0Zvck9uZVNob3RzKCkKIHsKLSAgICBHZW9Ob3Rp
ZmllclZlY3RvciBjb3B5OwotICAgIGNvcHlUb1ZlY3RvcihtX29uZVNob3RzLCBjb3B5KTsKLSAg
ICAKKyAgICBhdXRvIGNvcHkgPSBjb3B5VG9WZWN0b3IobV9vbmVTaG90cyk7CiAgICAgc3RvcFRp
bWVyKGNvcHkpOwogfQogCkBAIC01NzQsOCArNTcyLDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6Y2Fu
Y2VsUmVxdWVzdHMoR2VvTm90aQogCiB2b2lkIEdlb2xvY2F0aW9uOjpjYW5jZWxBbGxSZXF1ZXN0
cygpCiB7Ci0gICAgR2VvTm90aWZpZXJWZWN0b3IgY29weTsKLSAgICBjb3B5VG9WZWN0b3IobV9v
bmVTaG90cywgY29weSk7CisgICAgYXV0byBjb3B5ID0gY29weVRvVmVjdG9yKG1fb25lU2hvdHMp
OwogICAgIGNhbmNlbFJlcXVlc3RzKGNvcHkpOwogICAgIG1fd2F0Y2hlcnMuZ2V0Tm90aWZpZXJz
VmVjdG9yKGNvcHkpOwogICAgIGNhbmNlbFJlcXVlc3RzKGNvcHkpOwpAQCAtNjAyLDggKzU5OSw3
IEBAIHZvaWQgR2VvbG9jYXRpb246OmNvcHlUb1NldChjb25zdCBHZW9Ob3QKIAogdm9pZCBHZW9s
b2NhdGlvbjo6aGFuZGxlRXJyb3IoUG9zaXRpb25FcnJvciYgZXJyb3IpCiB7Ci0gICAgR2VvTm90
aWZpZXJWZWN0b3Igb25lU2hvdHNDb3B5OwotICAgIGNvcHlUb1ZlY3RvcihtX29uZVNob3RzLCBv
bmVTaG90c0NvcHkpOworICAgIGF1dG8gb25lU2hvdHNDb3B5ID0gY29weVRvVmVjdG9yKG1fb25l
U2hvdHMpOwogCiAgICAgR2VvTm90aWZpZXJWZWN0b3Igd2F0Y2hlcnNDb3B5OwogICAgIG1fd2F0
Y2hlcnMuZ2V0Tm90aWZpZXJzVmVjdG9yKHdhdGNoZXJzQ29weSk7CkBAIC02NTQsOCArNjUwLDcg
QEAgdm9pZCBHZW9sb2NhdGlvbjo6bWFrZVN1Y2Nlc3NDYWxsYmFja3MoRwogICAgIEFTU0VSVChs
YXN0UG9zaXRpb24oKSk7CiAgICAgQVNTRVJUKGlzQWxsb3dlZCgpKTsKICAgICAKLSAgICBHZW9O
b3RpZmllclZlY3RvciBvbmVTaG90c0NvcHk7Ci0gICAgY29weVRvVmVjdG9yKG1fb25lU2hvdHMs
IG9uZVNob3RzQ29weSk7CisgICAgYXV0byBvbmVTaG90c0NvcHkgPSBjb3B5VG9WZWN0b3IobV9v
bmVTaG90cyk7CiAgICAgCiAgICAgR2VvTm90aWZpZXJWZWN0b3Igd2F0Y2hlcnNDb3B5OwogICAg
IG1fd2F0Y2hlcnMuZ2V0Tm90aWZpZXJzVmVjdG9yKHdhdGNoZXJzQ29weSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCShyZXZp
c2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw4ICsxOTEsNyBAQCBFeGNlcHRpb25PcjxS
ZWY8SURCVHJhbnNhY3Rpb24+PiBJREJEYXRhCiAgICAgZm9yIChhdXRvJiBvYmplY3RTdG9yZSA6
IG9iamVjdFN0b3JlcykKICAgICAgICAgb2JqZWN0U3RvcmVTZXQuYWRkKG9iamVjdFN0b3JlKTsK
IAotICAgIG9iamVjdFN0b3Jlcy5jbGVhcigpOwotICAgIGNvcHlUb1ZlY3RvcihvYmplY3RTdG9y
ZVNldCwgb2JqZWN0U3RvcmVzKTsKKyAgICBvYmplY3RTdG9yZXMgPSBjb3B5VG9WZWN0b3Iob2Jq
ZWN0U3RvcmVTZXQpOwogCiAgICAgZm9yIChhdXRvJiBvYmplY3RTdG9yZU5hbWUgOiBvYmplY3RT
dG9yZXMpIHsKICAgICAgICAgaWYgKG1faW5mby5oYXNPYmplY3RTdG9yZShvYmplY3RTdG9yZU5h
bWUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0QWxsUmVz
dWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJHZXRBbGxSZXN1bHQuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJHZXRBbGxSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDcsMTAgKzEwNyw3IEBAIFZlY3RvcjxTdHJpbmc+IElEQkdldEFsbFJlc3VsdDo6YWxsQmxvYkYK
ICAgICAgICAgICAgIHBhdGhTZXQuYWRkKHBhdGgpOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJp
bmc+IHBhdGhzOwotICAgIGNvcHlUb1ZlY3RvcihwYXRoU2V0LCBwYXRocyk7Ci0KLSAgICByZXR1
cm4gcGF0aHM7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihwYXRoU2V0KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUluZGV4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCShyZXZpc2lvbiAyMjMxNDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OSwxNyArNzksMTMgQEAgdm9pZCBNZW1vcnlJbmRleDo6b2Jq
ZWN0U3RvcmVDbGVhcmVkKCkKIAogdm9pZCBNZW1vcnlJbmRleDo6bm90aWZ5Q3Vyc29yc09mVmFs
dWVDaGFuZ2UoY29uc3QgSURCS2V5RGF0YSYgaW5kZXhLZXksIGNvbnN0IElEQktleURhdGEmIHBy
aW1hcnlLZXkpCiB7Ci0gICAgVmVjdG9yPE1lbW9yeUluZGV4Q3Vyc29yKj4gY3Vyc29yczsKLSAg
ICBjb3B5VG9WZWN0b3IobV9jbGVhbkN1cnNvcnMsIGN1cnNvcnMpOwotICAgIGZvciAoYXV0byog
Y3Vyc29yIDogY3Vyc29ycykKKyAgICBmb3IgKGF1dG8qIGN1cnNvciA6IGNvcHlUb1ZlY3Rvciht
X2NsZWFuQ3Vyc29ycykpCiAgICAgICAgIGN1cnNvci0+aW5kZXhWYWx1ZUNoYW5nZWQoaW5kZXhL
ZXksIHByaW1hcnlLZXkpOwogfQogCiB2b2lkIE1lbW9yeUluZGV4Ojpub3RpZnlDdXJzb3JzT2ZB
bGxSZWNvcmRzQ2hhbmdlZCgpCiB7Ci0gICAgVmVjdG9yPE1lbW9yeUluZGV4Q3Vyc29yKj4gY3Vy
c29yczsKLSAgICBjb3B5VG9WZWN0b3IobV9jbGVhbkN1cnNvcnMsIGN1cnNvcnMpOwotICAgIGZv
ciAoYXV0byogY3Vyc29yIDogY3Vyc29ycykKKyAgICBmb3IgKGF1dG8qIGN1cnNvciA6IGNvcHlU
b1ZlY3RvcihtX2NsZWFuQ3Vyc29ycykpCiAgICAgICAgIGN1cnNvci0+aW5kZXhSZWNvcmRzQWxs
Q2hhbmdlZCgpOwogCiAgICAgQVNTRVJUKG1fY2xlYW5DdXJzb3JzLmlzRW1wdHkoKSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAkocmV2aXNpb24gMjIzMTQ5KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzOSwxMCArMjM5LDggQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmRpc3BhdGNoSW52YWxp
ZGF0aQogewogICAgICsrbV92ZXJzaW9uOwogCi0gICAgVmVjdG9yPEZvbnRTZWxlY3RvckNsaWVu
dCo+IGNsaWVudHM7Ci0gICAgY29weVRvVmVjdG9yKG1fY2xpZW50cywgY2xpZW50cyk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbGllbnRzLnNpemUoKTsgKytpKQotICAgICAgICBjbGll
bnRzW2ldLT5mb250c05lZWRVcGRhdGUoKnRoaXMpOworICAgIGZvciAoYXV0byYgY2xpZW50IDog
Y29weVRvVmVjdG9yKG1fY2xpZW50cykpCisgICAgICAgIGNsaWVudC0+Zm9udHNOZWVkVXBkYXRl
KCp0aGlzKTsKIH0KIAogdm9pZCBDU1NGb250U2VsZWN0b3I6OmZvbnRMb2FkZWQoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDM2LDkgKzQwMzYsNyBAQCB2
b2lkIERvY3VtZW50OjpkZXRhY2hOb2RlSXRlcmF0b3IoTm9kZUl0CiAKIHZvaWQgRG9jdW1lbnQ6
Om1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudChOb2RlJiBub2RlLCBEb2N1bWVudCYgbmV3
RG9jdW1lbnQpCiB7Ci0gICAgVmVjdG9yPE5vZGVJdGVyYXRvcio+IG5vZGVJdGVyYXRvcnM7Ci0g
ICAgY29weVRvVmVjdG9yKG1fbm9kZUl0ZXJhdG9ycywgbm9kZUl0ZXJhdG9ycyk7Ci0gICAgZm9y
IChhdXRvKiBpdCA6IG5vZGVJdGVyYXRvcnMpIHsKKyAgICBmb3IgKGF1dG8qIGl0IDogY29weVRv
VmVjdG9yKG1fbm9kZUl0ZXJhdG9ycykpIHsKICAgICAgICAgaWYgKCZpdC0+cm9vdCgpID09ICZu
b2RlKSB7CiAgICAgICAgICAgICBkZXRhY2hOb2RlSXRlcmF0b3IoaXQpOwogICAgICAgICAgICAg
bmV3RG9jdW1lbnQuYXR0YWNoTm9kZUl0ZXJhdG9yKGl0KTsKQEAgLTQ4MjYsOSArNDgyNCw3IEBA
IHZvaWQgRG9jdW1lbnQ6OnJlc3VtZShBY3RpdmVET01PYmplY3Q6OlIKICAgICBpZiAoIW1faXNT
dXNwZW5kZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxFbGVtZW50Kj4gZWxlbWVu
dHM7Ci0gICAgY29weVRvVmVjdG9yKG1fZG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tFbGVtZW50
cywgZWxlbWVudHMpOwotICAgIGZvciAoYXV0byogZWxlbWVudCA6IGVsZW1lbnRzKQorICAgIGZv
ciAoYXV0byogZWxlbWVudCA6IGNvcHlUb1ZlY3RvcihtX2RvY3VtZW50U3VzcGVuc2lvbkNhbGxi
YWNrRWxlbWVudHMpKQogICAgICAgICBlbGVtZW50LT5yZXN1bWVGcm9tRG9jdW1lbnRTdXNwZW5z
aW9uKCk7CiAKICAgICBpZiAocmVuZGVyVmlldygpKQpAQCAtNjg2MSwxMCArNjg1Nyw3IEBAIHZv
aWQgRG9jdW1lbnQ6OmRpZEFzc29jaWF0ZUZvcm1Db250cm9sc1QKICAgICBpZiAoIWZyYW1lKCkg
fHwgIWZyYW1lKCktPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPFJlZlB0
cjxFbGVtZW50Pj4gYXNzb2NpYXRlZEZvcm1Db250cm9sczsKLSAgICBjb3B5VG9WZWN0b3IobV9h
c3NvY2lhdGVkRm9ybUNvbnRyb2xzLCBhc3NvY2lhdGVkRm9ybUNvbnRyb2xzKTsKLQotICAgIGZy
YW1lKCktPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xz
KGFzc29jaWF0ZWRGb3JtQ29udHJvbHMpOworICAgIGZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCku
Y2xpZW50KCkuZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzKGNvcHlUb1ZlY3RvcihtX2Fzc29jaWF0
ZWRGb3JtQ29udHJvbHMpKTsKICAgICBtX2Fzc29jaWF0ZWRGb3JtQ29udHJvbHMuY2xlYXIoKTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeS5jcHAJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw5ICs2Myw3IEBAIHZv
aWQgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Ojpub3RpZnlPYnMKICAgICBpZiAoIW1fbm90aWZ5
aW5nT2JzZXJ2ZXJzSW5TZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxJZFRhcmdl
dE9ic2VydmVyKj4gY29weTsKLSAgICBjb3B5VG9WZWN0b3IoKm1fbm90aWZ5aW5nT2JzZXJ2ZXJz
SW5TZXQsIGNvcHkpOwotICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBjb3B5KSB7CisgICAgZm9y
IChhdXRvJiBvYnNlcnZlciA6IGNvcHlUb1ZlY3RvcigqbV9ub3RpZnlpbmdPYnNlcnZlcnNJblNl
dCkpIHsKICAgICAgICAgaWYgKG1fbm90aWZ5aW5nT2JzZXJ2ZXJzSW5TZXQtPmNvbnRhaW5zKG9i
c2VydmVyKSkKICAgICAgICAgICAgIG9ic2VydmVyLT5pZFRhcmdldENoYW5nZWQoKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAy
MjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0OCw5ICsyNDgsNyBAQCB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6Om5vdGlm
eU11dGF0aW9uT2JzCiAgICAgZGVsaXZlcnlJblByb2dyZXNzID0gdHJ1ZTsKIAogICAgIGlmICgh
c3VzcGVuZGVkTXV0YXRpb25PYnNlcnZlcnMoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgVmVjdG9y
PFJlZlB0cjxNdXRhdGlvbk9ic2VydmVyPj4gc3VzcGVuZGVkOwotICAgICAgICBjb3B5VG9WZWN0
b3Ioc3VzcGVuZGVkTXV0YXRpb25PYnNlcnZlcnMoKSwgc3VzcGVuZGVkKTsKLSAgICAgICAgZm9y
IChhdXRvJiBvYnNlcnZlciA6IHN1c3BlbmRlZCkgeworICAgICAgICBmb3IgKGF1dG8mIG9ic2Vy
dmVyIDogY29weVRvVmVjdG9yKHN1c3BlbmRlZE11dGF0aW9uT2JzZXJ2ZXJzKCkpKSB7CiAgICAg
ICAgICAgICBpZiAoIW9ic2VydmVyLT5jYW5EZWxpdmVyKCkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAKQEAgLTI2MSw4ICsyNTksNyBAQCB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6Om5vdGlm
eU11dGF0aW9uT2JzCiAKICAgICB3aGlsZSAoIWFjdGl2ZU11dGF0aW9uT2JzZXJ2ZXJzKCkuaXNF
bXB0eSgpIHx8ICFzaWduYWxTbG90TGlzdCgpLmlzRW1wdHkoKSkgewogICAgICAgICAvLyAyLiBM
ZXQgbm90aWZ5IGxpc3QgYmUgYSBjb3B5IG9mIHVuaXQgb2YgcmVsYXRlZCBzaW1pbGFyLW9yaWdp
biBicm93c2luZyBjb250ZXh0cycgbGlzdCBvZiBNdXRhdGlvbk9ic2VydmVyIG9iamVjdHMuCi0g
ICAgICAgIFZlY3RvcjxSZWZQdHI8TXV0YXRpb25PYnNlcnZlcj4+IG5vdGlmeUxpc3Q7Ci0gICAg
ICAgIGNvcHlUb1ZlY3RvcihhY3RpdmVNdXRhdGlvbk9ic2VydmVycygpLCBub3RpZnlMaXN0KTsK
KyAgICAgICAgYXV0byBub3RpZnlMaXN0ID0gY29weVRvVmVjdG9yKGFjdGl2ZU11dGF0aW9uT2Jz
ZXJ2ZXJzKCkpOwogICAgICAgICBhY3RpdmVNdXRhdGlvbk9ic2VydmVycygpLmNsZWFyKCk7CiAg
ICAgICAgIHN0ZDo6c29ydChub3RpZnlMaXN0LmJlZ2luKCksIG5vdGlmeUxpc3QuZW5kKCksIFtd
KGF1dG8mIGxocywgYXV0byYgcmhzKSB7CiAgICAgICAgICAgICByZXR1cm4gbGhzLT5tX3ByaW9y
aXR5IDwgcmhzLT5tX3ByaW9yaXR5OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMjIz
MTQ5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NTMsMTQgKzg1MywxMCBAQCBpbmxpbmUgYm9vbCBEb2N1bWVudDo6c2hvdWxkSW52YWxpZGF0ZU5v
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW52YWxpZGF0aW9uRnVuY3Rpb24+CiB2b2lkIERvY3VtZW50
OjppbnZhbGlkYXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKEludmFsaWRhdGlvbkZ1bmN0
aW9uIGludmFsaWRhdGUpCiB7Ci0gICAgVmVjdG9yPExpdmVOb2RlTGlzdCosIDg+IGxpc3RzOwot
ICAgIGNvcHlUb1ZlY3RvcihtX2xpc3RzSW52YWxpZGF0ZWRBdERvY3VtZW50LCBsaXN0cyk7Ci0g
ICAgZm9yIChhdXRvKiBsaXN0IDogbGlzdHMpCisgICAgZm9yIChhdXRvKiBsaXN0IDogY29weVRv
VmVjdG9yU3BlY2lhbGl6YXRpb248VmVjdG9yPExpdmVOb2RlTGlzdCosIDg+PihtX2xpc3RzSW52
YWxpZGF0ZWRBdERvY3VtZW50KSkKICAgICAgICAgaW52YWxpZGF0ZSgqbGlzdCk7CiAKLSAgICBW
ZWN0b3I8SFRNTENvbGxlY3Rpb24qLCA4PiBjb2xsZWN0aW9uczsKLSAgICBjb3B5VG9WZWN0b3Io
bV9jb2xsZWN0aW9uc0ludmFsaWRhdGVkQXREb2N1bWVudCwgY29sbGVjdGlvbnMpOwotICAgIGZv
ciAoYXV0byogY29sbGVjdGlvbiA6IGNvbGxlY3Rpb25zKQorICAgIGZvciAoYXV0byogY29sbGVj
dGlvbiA6IGNvcHlUb1ZlY3RvclNwZWNpYWxpemF0aW9uPFZlY3RvcjxIVE1MQ29sbGVjdGlvbios
IDg+PihtX2NvbGxlY3Rpb25zSW52YWxpZGF0ZWRBdERvY3VtZW50KSkKICAgICAgICAgaW52YWxp
ZGF0ZSgqY29sbGVjdGlvbik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1
dHRvbkdyb3Vwcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0
dG9uR3JvdXBzLmNwcAkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Jh
ZGlvQnV0dG9uR3JvdXBzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsOCArNjYsNyBAQCBpbmxp
bmUgYm9vbCBSYWRpb0J1dHRvbkdyb3VwOjppc1ZhbGlkKCkgCiAKIFZlY3RvcjxIVE1MSW5wdXRF
bGVtZW50Kj4gUmFkaW9CdXR0b25Hcm91cDo6bWVtYmVycygpIGNvbnN0CiB7Ci0gICAgVmVjdG9y
PEhUTUxJbnB1dEVsZW1lbnQqPiBtZW1iZXJzOwotICAgIGNvcHlUb1ZlY3RvcihtX21lbWJlcnMs
IG1lbWJlcnMpOworICAgIGF1dG8gbWVtYmVycyA9IGNvcHlUb1ZlY3RvcihtX21lbWJlcnMpOwog
ICAgIHN0ZDo6c29ydChtZW1iZXJzLmJlZ2luKCksIG1lbWJlcnMuZW5kKCksIGRvY3VtZW50T3Jk
ZXJDb21wYXJhdG9yKTsKICAgICByZXR1cm4gbWVtYmVyczsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJKHJldmlzaW9uIDIyMzE0OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQzLDkgKzE0Myw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
ZGlzcGF0Y2hNZXMKICAgICBtX3dpbGxQcm9jZXNzTWVzc2FnZVBvcnRNZXNzYWdlc1Nvb24gPSBm
YWxzZTsKIAogICAgIC8vIE1ha2UgYSBmcm96ZW4gY29weSBvZiB0aGUgcG9ydHMgc28gd2UgY2Fu
IGl0ZXJhdGUgd2hpbGUgbmV3IG9uZXMgbWlnaHQgYmUgYWRkZWQgb3IgZGVzdHJveWVkLgotICAg
IFZlY3RvcjxNZXNzYWdlUG9ydCo+IHBvc3NpYmxlTWVzc2FnZVBvcnRzOwotICAgIGNvcHlUb1Zl
Y3RvcihtX21lc3NhZ2VQb3J0cywgcG9zc2libGVNZXNzYWdlUG9ydHMpOwotICAgIGZvciAoYXV0
byogbWVzc2FnZVBvcnQgOiBwb3NzaWJsZU1lc3NhZ2VQb3J0cykgeworICAgIGZvciAoYXV0byog
bWVzc2FnZVBvcnQgOiBjb3B5VG9WZWN0b3IobV9tZXNzYWdlUG9ydHMpKSB7CiAgICAgICAgIC8v
IFRoZSBwb3J0IG1heSBiZSBkZXN0cm95ZWQsIGFuZCBhbm90aGVyIG9uZSBjcmVhdGVkIGF0IHRo
ZSBzYW1lIGFkZHJlc3MsCiAgICAgICAgIC8vIGJ1dCB0aGlzIGlzIGhhcm1sZXNzLiBUaGUgd29y
c3QgdGhhdCBjYW4gaGFwcGVuIGFzIGEgcmVzdWx0IGlzIHRoYXQKICAgICAgICAgLy8gZGlzcGF0
Y2hNZXNzYWdlcygpIHdpbGwgYmUgY2FsbGVkIG5lZWRsZXNzbHkuCkBAIC0yNzksOCArMjc3LDcg
QEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRAogICAgIG1fYWN0aXZl
RE9NT2JqZWN0c0FyZVN0b3BwZWQgPSB0cnVlOwogCiAgICAgLy8gTWFrZSBhIGZyb3plbiBjb3B5
IG9mIHRoZSBvYmplY3RzIHNvIHdlIGNhbiBpdGVyYXRlIHdoaWxlIG5ldyBvbmVzIG1pZ2h0IGJl
IGRlc3Ryb3llZC4KLSAgICBWZWN0b3I8QWN0aXZlRE9NT2JqZWN0Kj4gcG9zc2libGVBY3RpdmVE
T01PYmplY3RzOwotICAgIGNvcHlUb1ZlY3RvcihtX2FjdGl2ZURPTU9iamVjdHMsIHBvc3NpYmxl
QWN0aXZlRE9NT2JqZWN0cyk7CisgICAgYXV0byBwb3NzaWJsZUFjdGl2ZURPTU9iamVjdHMgPSBj
b3B5VG9WZWN0b3IobV9hY3RpdmVET01PYmplY3RzKTsKIAogICAgIG1fYWN0aXZlRE9NT2JqZWN0
QWRkaXRpb25Gb3JiaWRkZW4gPSB0cnVlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkocmV2aXNp
b24gMjIzMTQ5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzMCw5ICs5MzAsNyBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJCiAgICAgICAgICAgICAvLyBzb21lIG90
aGVyIGNhY2hlIGluIHRoaXMgZ3JvdXAuIFRoZXkgYXJlIG5vdCBhc3NvY2lhdGVkIHdpdGggdGhl
IGZhaWxlZCBuZXcgY2FjaGUuCiAKICAgICAgICAgICAgIC8vIE5lZWQgdG8gY29weSBsb2FkZXJz
LCBiZWNhdXNlIHRoZSBjYWNoZSBncm91cCBtYXkgYmUgZGVzdHJveWVkIGF0IHRoZSBlbmQgb2Yg
aXRlcmF0aW9uLgotICAgICAgICAgICAgVmVjdG9yPERvY3VtZW50TG9hZGVyKj4gbG9hZGVyczsK
LSAgICAgICAgICAgIGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMs
IGxvYWRlcnMpOwotICAgICAgICAgICAgZm9yIChhdXRvJiBsb2FkZXIgOiBsb2FkZXJzKQorICAg
ICAgICAgICAgZm9yIChhdXRvJiBsb2FkZXIgOiBjb3B5VG9WZWN0b3IobV9wZW5kaW5nTWFzdGVy
UmVzb3VyY2VMb2FkZXJzKSkKICAgICAgICAgICAgICAgICBkaXNhc3NvY2lhdGVEb2N1bWVudExv
YWRlcigqbG9hZGVyKTsgLy8gVGhpcyBjYW4gZGVsZXRlIHRoaXMgZ3JvdXAuCiAKICAgICAgICAg
ICAgIC8vIFJlaW5zdGF0ZSB0aGUgb2xkTmV3ZXN0Q2FjaGUsIGlmIHRoZXJlIHdhcyBvbmUuCkBA
IC05NzksOCArOTc3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnN0YXJ0TG9hZGlu
Zwogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRlbGl2ZXJEZWxheWVkTWFpblJlc291cmNl
cygpCiB7CiAgICAgLy8gTmVlZCB0byBjb3B5IGxvYWRlcnMsIGJlY2F1c2UgdGhlIGNhY2hlIGdy
b3VwIG1heSBiZSBkZXN0cm95ZWQgYXQgdGhlIGVuZCBvZiBpdGVyYXRpb24uCi0gICAgVmVjdG9y
PERvY3VtZW50TG9hZGVyKj4gbG9hZGVyczsKLSAgICBjb3B5VG9WZWN0b3IobV9wZW5kaW5nTWFz
dGVyUmVzb3VyY2VMb2FkZXJzLCBsb2FkZXJzKTsKKyAgICBhdXRvIGxvYWRlcnMgPSBjb3B5VG9W
ZWN0b3IobV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzKTsKICAgICBmb3IgKGF1dG8qIGxv
YWRlciA6IGxvYWRlcnMpIHsKICAgICAgICAgaWYgKGxvYWRlci0+aXNMb2FkaW5nTWFpblJlc291
cmNlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1
LDkgKzI2NSw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lTGl2ZVJlc291cmNlcyhib28KIHZv
aWQgTWVtb3J5Q2FjaGU6OmZvckVhY2hSZXNvdXJjZShjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
Q2FjaGVkUmVzb3VyY2UmKT4mIGZ1bmN0aW9uKQogewogICAgIGZvciAoYXV0byYgdW5wcm90ZWN0
ZWRMUlVMaXN0IDogbV9hbGxSZXNvdXJjZXMpIHsKLSAgICAgICAgVmVjdG9yPENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gbHJ1TGlzdDsKLSAgICAgICAgY29weVRvVmVjdG9y
KCp1bnByb3RlY3RlZExSVUxpc3QsIGxydUxpc3QpOwotICAgICAgICBmb3IgKGF1dG8mIHJlc291
cmNlIDogbHJ1TGlzdCkKKyAgICAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IGNvcHlUb1ZlY3Rv
cigqdW5wcm90ZWN0ZWRMUlVMaXN0KSkKICAgICAgICAgICAgIGZ1bmN0aW9uKCpyZXNvdXJjZSk7
CiAgICAgfQogfQpAQCAtMzYzLDggKzM2MSw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lRGVh
ZFJlc291cmNlc1RvU2kKICAgICBmb3IgKGludCBpID0gbV9hbGxSZXNvdXJjZXMuc2l6ZSgpIC0g
MTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIExSVUxpc3Qg
Zmlyc3QgKGFuZCByZWYgdGhlIHJlc291cmNlcykgYXMgY2FsbGluZwogICAgICAgICAvLyBkZXN0
cm95RGVjb2RlZERhdGEoKSBjYW4gYWx0ZXIgdGhlIExSVUxpc3QuCi0gICAgICAgIFZlY3RvcjxD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IGxydUxpc3Q7Ci0gICAgICAgIGNv
cHlUb1ZlY3RvcigqbV9hbGxSZXNvdXJjZXNbaV0sIGxydUxpc3QpOworICAgICAgICBhdXRvIGxy
dUxpc3QgPSBjb3B5VG9WZWN0b3IoKm1fYWxsUmVzb3VyY2VzW2ldKTsKIAogICAgICAgICAvLyBG
aXJzdCBmbHVzaCBhbGwgdGhlIGRlY29kZWQgZGF0YSBpbiB0aGlzIHF1ZXVlLgogICAgICAgICAv
LyBSZW1vdmUgZnJvbSB0aGUgaGVhZCwgc2luY2UgdGhpcyBpcyB0aGUgbGVhc3QgZnJlcXVlbnRs
eSBhY2Nlc3NlZCBvZiB0aGUgb2JqZWN0cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDgyLDkgKzQ4Miw3IEBAIHZvaWQgRE9NV2luZG93Ojp3aWxs
RGVzdHJveUNhY2hlZEZyYW1lKCkKIHsKICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY29weSBt
X3Byb3BlcnRpZXMgdG8gYSBzZXBhcmF0ZSB2ZWN0b3IgYmVjYXVzZSB0aGUgRE9NV2luZG93UHJv
cGVydGllcyBtYXkKICAgICAvLyB1bnJlZ2lzdGVyIHRoZW1zZWx2ZXMgZnJvbSB0aGUgRE9NV2lu
ZG93IGFzIGEgcmVzdWx0IG9mIHRoZSBjYWxsIHRvIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5D
YWNoZWRGcmFtZS4KLSAgICBWZWN0b3I8RE9NV2luZG93UHJvcGVydHkqPiBwcm9wZXJ0aWVzOwot
ICAgIGNvcHlUb1ZlY3RvcihtX3Byb3BlcnRpZXMsIHByb3BlcnRpZXMpOwotICAgIGZvciAoYXV0
byYgcHJvcGVydHkgOiBwcm9wZXJ0aWVzKQorICAgIGZvciAoYXV0byYgcHJvcGVydHkgOiBjb3B5
VG9WZWN0b3IobV9wcm9wZXJ0aWVzKSkKICAgICAgICAgcHJvcGVydHktPndpbGxEZXN0cm95R2xv
YmFsT2JqZWN0SW5DYWNoZWRGcmFtZSgpOwogfQogCkBAIC00OTIsOSArNDkwLDcgQEAgdm9pZCBE
T01XaW5kb3c6OndpbGxEZXN0cm95RG9jdW1lbnRJbkZyYQogewogICAgIC8vIEl0IGlzIG5lY2Vz
c2FyeSB0byBjb3B5IG1fcHJvcGVydGllcyB0byBhIHNlcGFyYXRlIHZlY3RvciBiZWNhdXNlIHRo
ZSBET01XaW5kb3dQcm9wZXJ0aWVzIG1heQogICAgIC8vIHVucmVnaXN0ZXIgdGhlbXNlbHZlcyBm
cm9tIHRoZSBET01XaW5kb3cgYXMgYSByZXN1bHQgb2YgdGhlIGNhbGwgdG8gd2lsbERlc3Ryb3lH
bG9iYWxPYmplY3RJbkZyYW1lLgotICAgIFZlY3RvcjxET01XaW5kb3dQcm9wZXJ0eSo+IHByb3Bl
cnRpZXM7Ci0gICAgY29weVRvVmVjdG9yKG1fcHJvcGVydGllcywgcHJvcGVydGllcyk7Ci0gICAg
Zm9yIChhdXRvJiBwcm9wZXJ0eSA6IHByb3BlcnRpZXMpCisgICAgZm9yIChhdXRvJiBwcm9wZXJ0
eSA6IGNvcHlUb1ZlY3RvcihtX3Byb3BlcnRpZXMpKQogICAgICAgICBwcm9wZXJ0eS0+d2lsbERl
c3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCk7CiB9CiAKQEAgLTUwMiw5ICs0OTgsNyBAQCB2b2lk
IERPTVdpbmRvdzo6d2lsbERldGFjaERvY3VtZW50RnJvbUZyCiB7CiAgICAgLy8gSXQgaXMgbmVj
ZXNzYXJ5IHRvIGNvcHkgbV9wcm9wZXJ0aWVzIHRvIGEgc2VwYXJhdGUgdmVjdG9yIGJlY2F1c2Ug
dGhlIERPTVdpbmRvd1Byb3BlcnRpZXMgbWF5CiAgICAgLy8gdW5yZWdpc3RlciB0aGVtc2VsdmVz
IGZyb20gdGhlIERPTVdpbmRvdyBhcyBhIHJlc3VsdCBvZiB0aGUgY2FsbCB0byB3aWxsRGV0YWNo
R2xvYmFsT2JqZWN0RnJvbUZyYW1lLgotICAgIFZlY3RvcjxET01XaW5kb3dQcm9wZXJ0eSo+IHBy
b3BlcnRpZXM7Ci0gICAgY29weVRvVmVjdG9yKG1fcHJvcGVydGllcywgcHJvcGVydGllcyk7Ci0g
ICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHByb3BlcnRpZXMpCisgICAgZm9yIChhdXRvJiBwcm9w
ZXJ0eSA6IGNvcHlUb1ZlY3RvcihtX3Byb3BlcnRpZXMpKQogICAgICAgICBwcm9wZXJ0eS0+d2ls
bERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgpOwogCiAgICAgaWYgKG1fcGVyZm9ybWFuY2Up
CkBAIC01NjMsOSArNTU3LDcgQEAgdm9pZCBET01XaW5kb3c6OmRpc2Nvbm5lY3RET01XaW5kb3dQ
cm9wZQogewogICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBjb3B5IG1fcHJvcGVydGllcyB0byBh
IHNlcGFyYXRlIHZlY3RvciBiZWNhdXNlIHRoZSBET01XaW5kb3dQcm9wZXJ0aWVzIG1heQogICAg
IC8vIHVucmVnaXN0ZXIgdGhlbXNlbHZlcyBmcm9tIHRoZSBET01XaW5kb3cgYXMgYSByZXN1bHQg
b2YgdGhlIGNhbGwgdG8gZGlzY29ubmVjdEZyYW1lRm9yRG9jdW1lbnRTdXNwZW5zaW9uLgotICAg
IFZlY3RvcjxET01XaW5kb3dQcm9wZXJ0eSo+IHByb3BlcnRpZXM7Ci0gICAgY29weVRvVmVjdG9y
KG1fcHJvcGVydGllcywgcHJvcGVydGllcyk7Ci0gICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHBy
b3BlcnRpZXMpCisgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IGNvcHlUb1ZlY3RvcihtX3Byb3Bl
cnRpZXMpKQogICAgICAgICBwcm9wZXJ0eS0+ZGlzY29ubmVjdEZyYW1lRm9yRG9jdW1lbnRTdXNw
ZW5zaW9uKCk7CiB9CiAKQEAgLTU3NCw5ICs1NjYsNyBAQCB2b2lkIERPTVdpbmRvdzo6cmVjb25u
ZWN0RE9NV2luZG93UHJvcGVyCiAgICAgQVNTRVJUKG1fc3VzcGVuZGVkRm9yRG9jdW1lbnRTdXNw
ZW5zaW9uKTsKICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY29weSBtX3Byb3BlcnRpZXMgdG8g
YSBzZXBhcmF0ZSB2ZWN0b3IgYmVjYXVzZSB0aGUgRE9NV2luZG93UHJvcGVydGllcyBtYXkKICAg
ICAvLyB1bnJlZ2lzdGVyIHRoZW1zZWx2ZXMgZnJvbSB0aGUgRE9NV2luZG93IGFzIGEgcmVzdWx0
IG9mIHRoZSBjYWxsIHRvIHJlY29ubmVjdEZyb21QYWdlQ2FjaGUuCi0gICAgVmVjdG9yPERPTVdp
bmRvd1Byb3BlcnR5Kj4gcHJvcGVydGllczsKLSAgICBjb3B5VG9WZWN0b3IobV9wcm9wZXJ0aWVz
LCBwcm9wZXJ0aWVzKTsKLSAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogcHJvcGVydGllcykKKyAg
ICBmb3IgKGF1dG8mIHByb3BlcnR5IDogY29weVRvVmVjdG9yKG1fcHJvcGVydGllcykpCiAgICAg
ICAgIHByb3BlcnR5LT5yZWNvbm5lY3RGcmFtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24obV9mcmFt
ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDIyMzE0
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTM0NCw5ICs1MzQ0LDcgQEAgdm9pZCBGcmFtZVZpZXc6OndpbGxSZW1vdmVXaWRnZXRGcm9t
UmVuZAogCiBzdGF0aWMgVmVjdG9yPFJlZlB0cjxXaWRnZXQ+PiBjb2xsZWN0QW5kUHJvdGVjdFdp
ZGdldHMoY29uc3QgSGFzaFNldDxXaWRnZXQqPiYgc2V0KQogewotICAgIFZlY3RvcjxSZWZQdHI8
V2lkZ2V0Pj4gd2lkZ2V0czsKLSAgICBjb3B5VG9WZWN0b3Ioc2V0LCB3aWRnZXRzKTsKLSAgICBy
ZXR1cm4gd2lkZ2V0czsKKyAgICByZXR1cm4gY29weVRvVmVjdG9yT2Y8UmVmUHRyPFdpZGdldD4+
KHNldCk7CiB9CiAKIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVXaWRnZXRQb3NpdGlvbnMoKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04Myw5ICs4Myw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VDcml0aWNhbE1lbW9yeShTeW5jaHIK
IAogICAgIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuZHJhaW4oKTsKIAotICAgIFZlY3RvcjxS
ZWZQdHI8RG9jdW1lbnQ+PiBkb2N1bWVudHM7Ci0gICAgY29weVRvVmVjdG9yKERvY3VtZW50Ojph
bGxEb2N1bWVudHMoKSwgZG9jdW1lbnRzKTsKLSAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogZG9j
dW1lbnRzKSB7CisgICAgZm9yIChhdXRvJiBkb2N1bWVudCA6IGNvcHlUb1ZlY3Rvck9mPFJlZlB0
cjxEb2N1bWVudD4+KERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkpIHsKICAgICAgICAgZG9jdW1l
bnQtPnN0eWxlU2NvcGUoKS5jbGVhclJlc29sdmVyKCk7CiAgICAgICAgIGRvY3VtZW50LT5mb250
U2VsZWN0b3IoKS5lbXB0eUNhY2hlcygpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2UuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDkgKzI3MSw3IEBAIHZvaWQgUGVy
Zm9ybWFuY2U6OnF1ZXVlRW50cnkoUGVyZm9ybWFuY2UKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9wZXJmb3JtYW5jZVRpbWVsaW5lVGFza1F1ZXVlLmVucXVldWVUYXNrKFt0aGlzXSAoKSB7Ci0g
ICAgICAgIFZlY3RvcjxSZWZQdHI8UGVyZm9ybWFuY2VPYnNlcnZlcj4+IG9ic2VydmVyczsKLSAg
ICAgICAgY29weVRvVmVjdG9yKG1fb2JzZXJ2ZXJzLCBvYnNlcnZlcnMpOwotICAgICAgICBmb3Ig
KGF1dG8mIG9ic2VydmVyIDogb2JzZXJ2ZXJzKQorICAgICAgICBmb3IgKGF1dG8mIG9ic2VydmVy
IDogY29weVRvVmVjdG9yKG1fb2JzZXJ2ZXJzKSkKICAgICAgICAgICAgIG9ic2VydmVyLT5kZWxp
dmVyKCk7CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
YXN0ZWJvYXJkQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFzdGVib2FyZENvY29hLm1tCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE2NSw5ICsxNjUsNyBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2Fj
CiAgICAgZm9yIChhdXRvJiBjb2NvYVR5cGUgOiBjb2NvYVR5cGVzKQogICAgICAgICBhZGRIVE1M
Q2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUocmVzdWx0LCBjb2NvYVR5cGUpOwogCi0gICAgVmVj
dG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgY29weVRvVmVjdG9yKHJlc3VsdCwgdHlwZXMpOwotICAg
IHJldHVybiB0eXBlczsKKyAgICByZXR1cm4gY29weVRvVmVjdG9yKHJlc3VsdCk7CiB9CiAKICNp
ZiBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xheWVyQ2hhbmdlc0ZsdXNoZXIuY3BwCShyZXZp
c2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
TGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2LDcgQEAg
TFJFU1VMVCBMYXllckNoYW5nZXNGbHVzaGVyOjpob29rRmlyZWQoaQogCiAgICAgLy8gQ2FsbGlu
ZyBvdXQgdG8gdGhlIGhvc3RzIGNhbiBjYXVzZSBtX2hvc3RzV2l0aENoYW5nZXNUb0ZsdXNoIHRv
IGJlIG1vZGlmaWVkLCBzbyB3ZSBjb3B5IGl0CiAgICAgLy8gaW50byBhIFZlY3RvciBmaXJzdC4K
LSAgICBWZWN0b3I8QWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdCo+IGhvc3RzOwotICAgIGNvcHlU
b1ZlY3RvcihtX2hvc3RzV2l0aENoYW5nZXNUb0ZsdXNoLCBob3N0cyk7CisgICAgYXV0byBob3N0
cyA9IGNvcHlUb1ZlY3RvcihtX2hvc3RzV2l0aENoYW5nZXNUb0ZsdXNoKTsKICAgICBtX2hvc3Rz
V2l0aENoYW5nZXNUb0ZsdXNoLmNsZWFyKCk7CiAKICAgICBtX2lzQ2FsbGluZ0hvc3RzID0gdHJ1
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNo
ZUNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAJKHJldmlzaW9uIDIyMzE0OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzQ4LDkgKzc0OCw3IEBAIFZlY3RvcjxTdHJpbmc+IEZvbnRD
YWNoZTo6c3lzdGVtRm9udEZhbWkKICAgICAgICAgICAgIHZpc2l0ZWQuYWRkKGZhbWlseU5hbWUu
Z2V0KCkpOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKLSAgICBjb3B5VG9W
ZWN0b3IodmlzaXRlZCwgcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBj
b3B5VG9WZWN0b3IodmlzaXRlZCk7CiB9CiAKIHN0YXRpYyBDVEZvbnRTeW1ib2xpY1RyYWl0cyBj
b21wdXRlVHJhaXRzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zODEsOSArMzgx
LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlcwogICAgICAgICAg
ICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZChTdHJpbmc6OmZyb21VVEY4KGNvZXJjZWRUeXBlKSk7
CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwotICAgIGNvcHlUb1ZlY3Rvcihk
b21QYXN0ZWJvYXJkVHlwZXMsIHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1
cm4gY29weVRvVmVjdG9yKGRvbVBhc3RlYm9hcmRUeXBlcyk7CiB9CiAKIGxvbmcgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFn
ZXIubW0JKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJDb3JlTW90aW9uTWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjIzLDEwICsyMjMsOCBA
QCAtICh2b2lkKXNlbmRBY2NlbGVyb21ldGVyRGF0YTooQ01BY2NlbGVyCiAgICAgV2ViVGhyZWFk
UnVuKF57CiAgICAgICAgIENNQWNjZWxlcmF0aW9uIGFjY2VsID0gbmV3QWNjZWxlcmF0aW9uLmFj
Y2VsZXJhdGlvbjsKIAotICAgICAgICBWZWN0b3I8V2ViQ29yZTo6RGV2aWNlTW90aW9uQ2xpZW50
SU9TKj4gY2xpZW50czsKLSAgICAgICAgY29weVRvVmVjdG9yKG1fZGV2aWNlTW90aW9uQ2xpZW50
cywgY2xpZW50cyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2xpZW50cy5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgIGNsaWVudHNbaV0tPm1vdGlvbkNoYW5nZWQoMCwgMCwgMCwg
YWNjZWwueCAqIGtHcmF2aXR5LCBhY2NlbC55ICoga0dyYXZpdHksIGFjY2VsLnogKiBrR3Jhdml0
eSwgMCwgMCwgMCk7CisgICAgICAgIGZvciAoYXV0byYgY2xpZW50IDogY29weVRvVmVjdG9yKG1f
ZGV2aWNlTW90aW9uQ2xpZW50cykpCisgICAgICAgICAgICBjbGllbnQtPm1vdGlvbkNoYW5nZWQo
MCwgMCwgMCwgYWNjZWwueCAqIGtHcmF2aXR5LCBhY2NlbC55ICoga0dyYXZpdHksIGFjY2VsLnog
KiBrR3Jhdml0eSwgMCwgMCwgMCk7CiAgICAgfSk7CiB9CiAKQEAgLTI0MywxOCArMjQxLDEyIEBA
IC0gKHZvaWQpc2VuZE1vdGlvbkRhdGE6KENNRGV2aWNlTW90aW9uICoKIAogICAgICAgICBDTVJv
dGF0aW9uUmF0ZSByb3RhdGlvblJhdGUgPSBuZXdNb3Rpb24ucm90YXRpb25SYXRlOwogCi0gICAg
ICAgIFZlY3RvcjxXZWJDb3JlOjpEZXZpY2VNb3Rpb25DbGllbnRJT1MqPiBtb3Rpb25DbGllbnRz
OwotICAgICAgICBjb3B5VG9WZWN0b3IobV9kZXZpY2VNb3Rpb25DbGllbnRzLCBtb3Rpb25DbGll
bnRzKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtb3Rpb25DbGllbnRzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICBtb3Rpb25DbGllbnRzW2ldLT5tb3Rpb25DaGFuZ2VkKHVz
ZXJBY2NlbC54ICoga0dyYXZpdHksIHVzZXJBY2NlbC55ICoga0dyYXZpdHksIHVzZXJBY2NlbC56
ICoga0dyYXZpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRvdGFsQWNjZWwueCAqIGtHcmF2aXR5LCB0b3RhbEFjY2VsLnkgKiBrR3Jhdml0eSwgdG90YWxB
Y2NlbC56ICoga0dyYXZpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJhZDJkZWcocm90YXRpb25SYXRlLngpLCByYWQyZGVnKHJvdGF0aW9uUmF0ZS55KSwg
cmFkMmRlZyhyb3RhdGlvblJhdGUueikpOwotICAgICAgICB9CisgICAgICAgIGZvciAoYXV0byYg
Y2xpZW50IDogY29weVRvVmVjdG9yKG1fZGV2aWNlTW90aW9uQ2xpZW50cykpCisgICAgICAgICAg
ICBjbGllbnQtPm1vdGlvbkNoYW5nZWQodXNlckFjY2VsLnggKiBrR3Jhdml0eSwgdXNlckFjY2Vs
LnkgKiBrR3Jhdml0eSwgdXNlckFjY2VsLnogKiBrR3Jhdml0eSwgdG90YWxBY2NlbC54ICoga0dy
YXZpdHksIHRvdGFsQWNjZWwueSAqIGtHcmF2aXR5LCB0b3RhbEFjY2VsLnogKiBrR3Jhdml0eSwg
cmFkMmRlZyhyb3RhdGlvblJhdGUueCksIHJhZDJkZWcocm90YXRpb25SYXRlLnkpLCByYWQyZGVn
KHJvdGF0aW9uUmF0ZS56KSk7CiAKICAgICAgICAgQ01BdHRpdHVkZSogYXR0aXR1ZGUgPSBuZXdN
b3Rpb24uYXR0aXR1ZGU7CiAKLSAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkRldmljZU9yaWVudGF0
aW9uQ2xpZW50SU9TKj4gb3JpZW50YXRpb25DbGllbnRzOwotICAgICAgICBjb3B5VG9WZWN0b3Io
bV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudHMsIG9yaWVudGF0aW9uQ2xpZW50cyk7CisgICAgICAg
IGF1dG8gb3JpZW50YXRpb25DbGllbnRzID0gY29weVRvVmVjdG9yKG1fZGV2aWNlT3JpZW50YXRp
b25DbGllbnRzKTsKIAogICAgICAgICAvLyBDb21wb3NlIHRoZSByYXcgbW90aW9uIGRhdGEgdG8g
YW4gaW50ZXJtZWRpYXRlIFpYWS1iYXNlZCAzeDMgcm90YXRpb24KICAgICAgICAgLy8gbWF0cml4
IChSKSB3aGVyZSBbej1hdHRpdHVkZS55YXcsIHg9YXR0aXR1ZGUucGl0Y2gsIHk9YXR0aXR1ZGUu
cm9sbF0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtUGFzdGVib2FyZE1hYy5tbQkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTI3LDkgKzEyNyw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXMK
ICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoU3RyaW5nOjpmcm9tVVRGOChkb21U
eXBlKSk7CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwotICAgIGNvcHlUb1Zl
Y3Rvcihkb21QYXN0ZWJvYXJkVHlwZXMsIHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICByZXR1cm4gY29weVRvVmVjdG9yKGRvbVBhc3RlYm9hcmRUeXBlcyk7CiB9CiAKIGxvbmcgUGxh
dGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0JKHJldmlzaW9uIDIyMzE0OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjAzLDcgKzIwMyw3IEBAIC0gKHZvaWQpaW52YWxpZGF0ZUFuZENh
bmNlbAogICAgIFZlY3RvcjxSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPj4g
dGFza3NDb3B5OwogICAgIHsKICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihfZGF0YVRhc2tz
TG9jayk7Ci0gICAgICAgIGNvcHlUb1ZlY3RvcihfZGF0YVRhc2tzLCB0YXNrc0NvcHkpOworICAg
ICAgICB0YXNrc0NvcHkgPSBjb3B5VG9WZWN0b3IoX2RhdGFUYXNrcyk7CiAgICAgfQogCiAgICAg
Zm9yIChhdXRvJiB0YXNrIDogdGFza3NDb3B5KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzIsOSArMjcyLDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNGb3JMZWdh
YwogICAgICAgICB9CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gdmVjdG9yOwotICAgIGNv
cHlUb1ZlY3RvcihyZXN1bHRzLCB2ZWN0b3IpOwotICAgIHJldHVybiB2ZWN0b3I7CisgICAgcmV0
dXJuIGNvcHlUb1ZlY3RvcihyZXN1bHRzKTsKIH0KIAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRT
dHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE1LDggKzEwMTUsNyBA
QCB2b2lkIFJlbmRlckJsb2NrOjplbmRBbmRDb21taXRVcGRhdGVTY3JvCiAgICAgLy8gZnJvbSB0
aGUgdHJhbnNhY3Rpb24gc3RhY2sgdG8gZW5zdXJlIHRoYXQgYWxsIHN1YnNlcXVlbnQgY2FsbHMg
dG8gUmVuZGVyQmxvY2s6OnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpCiAgICAgLy8gYXJl
IGRpc3BhdGNoZWQgaW1tZWRpYXRlbHkuIFRoYXQgaXMsIHRvIGVuc3VyZSB0aGF0IHN1Y2ggc3Vi
c2VxdWVudCBjYWxscyBhcmVuJ3QgYWRkZWQgdG8gfHRyYW5zYWN0aW9ufAogICAgIC8vIHdoaWxl
IHdlIGFyZSBwcm9jZXNzaW5nIGl0LgotICAgIFZlY3RvcjxSZW5kZXJCbG9jayo+IGJsb2Nrc1Rv
VXBkYXRlOwotICAgIGNvcHlUb1ZlY3Rvcih0cmFuc2FjdGlvbi0+YmxvY2tzLCBibG9ja3NUb1Vw
ZGF0ZSk7CisgICAgYXV0byBibG9ja3NUb1VwZGF0ZSA9IGNvcHlUb1ZlY3Rvcih0cmFuc2FjdGlv
bi0+YmxvY2tzKTsKICAgICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0
YWNrKCktPnJlbW92ZUxhc3QoKTsKICAgICBpZiAodXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0
VHJhbnNhY3Rpb25TdGFjaygpLT5pc0VtcHR5KCkpCiAgICAgICAgIHVwZGF0ZVNjcm9sbEluZm9B
ZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKSA9IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNp
b24gMjIzMTQ5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxh
eW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw3ICs1MzEsNyBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgc2V0TG9naWNhbFdpZHRoRm9yVGV4CiAgICAgICAgIEFTU0VSVChydW4tPmJveCgpLT5i
ZWhhdmVzTGlrZVRleHQoKSk7CiAgICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRz
TWFwOjppdGVyYXRvciBpdCA9IHRleHRCb3hEYXRhTWFwLmFkZChkb3duY2FzdDxJbmxpbmVUZXh0
Qm94PihydW4tPmJveCgpKSwgc3RkOjptYWtlX3BhaXIoVmVjdG9yPGNvbnN0IEZvbnQqPigpLCBH
bHlwaE92ZXJmbG93KCkpKS5pdGVyYXRvcjsKICAgICAgICAgQVNTRVJUKGl0LT52YWx1ZS5maXJz
dC5pc0VtcHR5KCkpOwotICAgICAgICBjb3B5VG9WZWN0b3IoZmFsbGJhY2tGb250cywgaXQtPnZh
bHVlLmZpcnN0KTsKKyAgICAgICAgaXQtPnZhbHVlLmZpcnN0ID0gY29weVRvVmVjdG9yKGZhbGxi
YWNrRm9udHMpOwogICAgICAgICBydW4tPmJveCgpLT5wYXJlbnQoKS0+Y2xlYXJEZXNjZW5kYW50
c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lKCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94LmNwcAkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgz
LDcgQEAgcHVibGljOgogCiAgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgY29weStzb3J0IHRo
ZSB2YWx1ZXMgb25jZSBwZXIgbGF5b3V0IGV2ZW4gaWYgdGhlIGl0ZXJhdG9yIGlzIHJlc2V0Lgog
ICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihtX29yZGluYWxWYWx1
ZXMuc2l6ZSgpKSAhPSBtX3NvcnRlZE9yZGluYWxWYWx1ZXMuc2l6ZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjb3B5VG9WZWN0b3IobV9vcmRpbmFsVmFsdWVzLCBtX3NvcnRlZE9yZGlu
YWxWYWx1ZXMpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9zb3J0ZWRPcmRpbmFsVmFsdWVz
ID0gY29weVRvVmVjdG9yKG1fb3JkaW5hbFZhbHVlcyk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnNvcnQobV9zb3J0ZWRPcmRpbmFsVmFsdWVzLmJlZ2luKCksIG1fc29ydGVkT3JkaW5h
bFZhbHVlcy5lbmQoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgbV9jdXJyZW50T3JkaW5hbCA9IG1fZm9yd2FyZCA/IG1fc29ydGVkT3JkaW5hbFZhbHVlc1tt
X29yZGluYWxJdGVyYXRpb24gLSAxXSA6IG1fc29ydGVkT3JkaW5hbFZhbHVlc1ttX3NvcnRlZE9y
ZGluYWxWYWx1ZXMuc2l6ZSgpIC0gbV9vcmRpbmFsSXRlcmF0aW9uXTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCShyZXZpc2lvbiAy
MjMxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTMxMiw4ICsxMzEyLDcgQEAgdm9pZCBSZW5kZXJUYWJsZVNl
Y3Rpb246OnBhaW50T2JqZWN0KFBhaQogI2VuZGlmCiAKICAgICAgICAgICAgIC8vIFRvIG1ha2Ug
c3VyZSB3ZSBwcm9wZXJseSByZXBhaW50IHRoZSBzZWN0aW9uLCB3ZSByZXBhaW50IGFsbCB0aGUg
b3ZlcmZsb3dpbmcgY2VsbHMgdGhhdCB3ZSBjb2xsZWN0ZWQuCi0gICAgICAgICAgICBWZWN0b3I8
UmVuZGVyVGFibGVDZWxsKj4gY2VsbHM7Ci0gICAgICAgICAgICBjb3B5VG9WZWN0b3IobV9vdmVy
Zmxvd2luZ0NlbGxzLCBjZWxscyk7CisgICAgICAgICAgICBhdXRvIGNlbGxzID0gY29weVRvVmVj
dG9yKG1fb3ZlcmZsb3dpbmdDZWxscyk7CiAKICAgICAgICAgICAgIEhhc2hTZXQ8UmVuZGVyVGFi
bGVDZWxsKj4gc3Bhbm5pbmdDZWxsczsKIApJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMzE0OSkK
KysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTctMTAtMTEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBS
ZW1vdmUgb3V0LXBhcmFtZXRlciB2YXJpYW50cyBvZiBjb3B5VG9WZWN0b3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODE1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9f
V0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW06CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdElu
dGVyZmFjZSBkZWJ1Z0Rlc2NyaXB0aW9uXSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6ZHVtcCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6cGVuZGluZ0Nvb2tpZXMgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUHJvY2Vz
c0Fzc2VydGlvbklPUy5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzQXNzZXJ0aW9uQmFja2dyb3Vu
ZFRhc2tNYW5hZ2VyIF9ub3RpZnlDbGllbnRzT2ZJbW1pbmVudFN1c3BlbnNpb25dKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkQ2hhbmdlUG9zaXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OmRpZEZhaWxUb0RldGVy
bWluZVBvc2l0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6aW50ZXJuYWxs
eUZhaWxlZExvYWRUaW1lckZpcmVkKToKKworICAgICAgICAgICAgUmVwbGFjZSBvdXQtcGFyYW1l
dGVyIGJhc2VkIGNvcHlUb1ZlY3Rvciwgd2l0aCBvbmUgdGhhdCByZXR1cm5zIGEgVmVjdG9yLgor
CiAyMDE3LTEwLTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVw
bGFjZSBjb3B5S2V5c1RvVmVjdG9yL2NvcHlWYWx1ZXNUb1ZlY3RvciB3aXRoIGNvcHlUb1ZlY3Rv
cihtYXAua2V5cygpKS9jb3B5VG9WZWN0b3IobWFwLnZhbHVlcygpKQpJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0SW50
ZXJmYWNlLm1tCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMs
OSArMjEzLDcgQEAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZVN0cgogICAg
ICAgICBhdXRvIGRlc2NyaXB0aW9uRm9yQXJndW1lbnQgPSBbXShhdXRvJiBhbGxvd2VkQXJndW1l
bnRDbGFzc2VzKSB7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1tOU011dGFi
bGVTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAieyJdKTsKIAotICAgICAgICAgICAgVmVj
dG9yPENsYXNzPiBvcmRlcmVkQXJndW1lbnRDbGFzc2VzOwotICAgICAgICAgICAgY29weVRvVmVj
dG9yKGFsbG93ZWRBcmd1bWVudENsYXNzZXMsIG9yZGVyZWRBcmd1bWVudENsYXNzZXMpOwotCisg
ICAgICAgICAgICBhdXRvIG9yZGVyZWRBcmd1bWVudENsYXNzZXMgPSBjb3B5VG9WZWN0b3IoYWxs
b3dlZEFyZ3VtZW50Q2xhc3Nlcyk7CiAgICAgICAgICAgICBzdGQ6OnNvcnQob3JkZXJlZEFyZ3Vt
ZW50Q2xhc3Nlcy5iZWdpbigpLCBvcmRlcmVkQXJndW1lbnRDbGFzc2VzLmVuZCgpLCBbXShDbGFz
cyBhLCBDbGFzcyBiKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIENTdHJpbmcoY2xhc3NfZ2V0
TmFtZShhKSkgPCBDU3RyaW5nKGNsYXNzX2dldE5hbWUoYikpOwogICAgICAgICAgICAgfSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rp
b24uY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU5OSwxMSArNTk5LDggQEAgc3RhdGljIHZvaWQgZHVtcChUZXh0U3RyZWFt
JiB0cywgY29uc3QgUwogICAgIGlmIChzdGF0ZVRyZWUucm9vdFN0YXRlTm9kZSgpKQogICAgICAg
ICByZWN1cnNpdmVEdW1wTm9kZXModHMsICpzdGF0ZVRyZWUucm9vdFN0YXRlTm9kZSgpLCBjaGFu
Z2VkUHJvcGVydGllc09ubHkpOwogCi0gICAgaWYgKCFzdGF0ZVRyZWUucmVtb3ZlZE5vZGVzKCku
aXNFbXB0eSgpKSB7Ci0gICAgICAgIFZlY3RvcjxTY3JvbGxpbmdOb2RlSUQ+IHJlbW92ZWROb2Rl
czsKLSAgICAgICAgY29weVRvVmVjdG9yKHN0YXRlVHJlZS5yZW1vdmVkTm9kZXMoKSwgcmVtb3Zl
ZE5vZGVzKTsKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5PFZlY3RvcjxTY3JvbGxpbmdOb2RlSUQ+
PigicmVtb3ZlZC1ub2RlcyIsIHJlbW92ZWROb2Rlcyk7Ci0gICAgfQorICAgIGlmICghc3RhdGVU
cmVlLnJlbW92ZWROb2RlcygpLmlzRW1wdHkoKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5PFZl
Y3RvcjxTY3JvbGxpbmdOb2RlSUQ+PigicmVtb3ZlZC1ub2RlcyIsIGNvcHlUb1ZlY3RvcihzdGF0
ZVRyZWUucmVtb3ZlZE5vZGVzKCkpKTsKIH0KIAogV1RGOjpDU3RyaW5nIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb246OmRlc2NyaXB0aW9uKCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjIzMTQ5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYxNCwxMSArNTYxNCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNl
dFN0YXRlCiAgICAgbV9jYWxsYmFja3MuaW52YWxpZGF0ZShlcnJvcik7CiAgICAgbV9sb2FkRGVw
ZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuY2xlYXIoKTsKIAotICAgIFZlY3RvcjxXZWJFZGl0Q29t
bWFuZFByb3h5Kj4gZWRpdENvbW1hbmRWZWN0b3I7Ci0gICAgY29weVRvVmVjdG9yKG1fZWRpdENv
bW1hbmRTZXQsIGVkaXRDb21tYW5kVmVjdG9yKTsKKyAgICBhdXRvIGVkaXRDb21tYW5kVmVjdG9y
ID0gY29weVRvVmVjdG9yKG1fZWRpdENvbW1hbmRTZXQpOwogICAgIG1fZWRpdENvbW1hbmRTZXQu
Y2xlYXIoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGVkaXRDb21tYW5kVmVjdG9y
LnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgZWRpdENvbW1hbmRWZWN0b3JbaV0tPmlu
dmFsaWRhdGUoKTsKKworICAgIGZvciAoYXV0byYgZWRpdENvbW1hbmQgOiBlZGl0Q29tbWFuZFZl
Y3RvcikKKyAgICAgICAgZWRpdENvbW1hbmQtPmludmFsaWRhdGUoKTsKIAogICAgIG1fYWN0aXZl
UG9wdXBNZW51ID0gbnVsbHB0cjsKICAgICBtX21lZGlhU3RhdGUgPSBNZWRpYVByb2R1Y2VyOjpJ
c05vdFBsYXlpbmc7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxMCwxNiArNzEwLDE2IEBAIFdlYlBy
b2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU4KICAgICBwYXJhbWV0ZXJzLmNhY2hl
TW9kZWwgPSBjYWNoZU1vZGVsKCk7CiAgICAgcGFyYW1ldGVycy5sYW5ndWFnZXMgPSB1c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKCk7CiAKLSAgICBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3Rl
ckFzRW1wdHlEb2N1bWVudCwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzRW1wdHlE
b2N1bWVudCk7Ci0gICAgY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc1NlY3VyZSwg
cGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzU2VjdXJlKTsKLSAgICBjb3B5VG9WZWN0
b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5LCBw
YXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQ
b2xpY3kpOwotICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1NldERvbWFpblJlbGF4YXRpb25G
b3JiaWRkZW5Gb3IsIHBhcmFtZXRlcnMudXJsU2NoZW1lc0ZvcldoaWNoRG9tYWluUmVsYXhhdGlv
bklzRm9yYmlkZGVuKTsKLSAgICBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzTG9j
YWwsIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0xvY2FsKTsKLSAgICBjb3B5VG9W
ZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzTm9BY2Nlc3MsIHBhcmFtZXRlcnMudXJsU2NoZW1l
c1JlZ2lzdGVyZWRBc05vQWNjZXNzKTsKLSAgICBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdp
c3RlckFzRGlzcGxheUlzb2xhdGVkLCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNE
aXNwbGF5SXNvbGF0ZWQpOwotICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXND
T1JTRW5hYmxlZCwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQp
OwotICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNBbHdheXNSZXZhbGlkYXRl
ZCwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQWx3YXlzUmV2YWxpZGF0ZWQpOwot
ICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDYWNoZVBhcnRpdGlvbmVkLCBw
YXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYWNoZVBhcnRpdGlvbmVkKTsKKyAgICBw
YXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNFbXB0eURvY3VtZW50ID0gY29weVRvVmVj
dG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0VtcHR5RG9jdW1lbnQpOworICAgIHBhcmFtZXRlcnMu
dXJsU2NoZW1lc1JlZ2lzdGVyZWRBc1NlY3VyZSA9IGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1Jl
Z2lzdGVyQXNTZWN1cmUpOworICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0J5
cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeSA9IGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1Jl
Z2lzdGVyQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3kpOworICAgIHBhcmFtZXRlcnMu
dXJsU2NoZW1lc0ZvcldoaWNoRG9tYWluUmVsYXhhdGlvbklzRm9yYmlkZGVuID0gY29weVRvVmVj
dG9yKG1fc2NoZW1lc1RvU2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvcik7CisgICAgcGFy
YW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTG9jYWwgPSBjb3B5VG9WZWN0b3IobV9zY2hl
bWVzVG9SZWdpc3RlckFzTG9jYWwpOworICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVy
ZWRBc05vQWNjZXNzID0gY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc05vQWNjZXNz
KTsKKyAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNEaXNwbGF5SXNvbGF0ZWQg
PSBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzRGlzcGxheUlzb2xhdGVkKTsKKyAg
ICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCA9IGNvcHlUb1Zl
Y3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDT1JTRW5hYmxlZCk7CisgICAgcGFyYW1ldGVycy51
cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQWx3YXlzUmV2YWxpZGF0ZWQgPSBjb3B5VG9WZWN0b3IobV9z
Y2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2YWxpZGF0ZWQpOworICAgIHBhcmFtZXRlcnMudXJs
U2NoZW1lc1JlZ2lzdGVyZWRBc0NhY2hlUGFydGl0aW9uZWQgPSBjb3B5VG9WZWN0b3IobV9zY2hl
bWVzVG9SZWdpc3RlckFzQ2FjaGVQYXJ0aXRpb25lZCk7CiAKICAgICBwYXJhbWV0ZXJzLnNob3Vs
ZEFsd2F5c1VzZUNvbXBsZXhUZXh0Q29kZVBhdGggPSBtX2Fsd2F5c1VzZXNDb21wbGV4VGV4dENv
ZGVQYXRoOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkVXNlRm9udFNtb290aGluZyA9IG1fc2hvdWxk
VXNlRm9udFNtb290aGluZzsKQEAgLTczOCw3ICs3MzgsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdl
YlByb2Nlc3NQb29sOjpjcmVhdGVOCiAjZW5kaWYKIAogICAgIHBhcmFtZXRlcnMucGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaGVzID0gbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5hdXRvU3RhcnRP
cmlnaW5IYXNoZXNDb3B5KCk7Ci0gICAgY29weVRvVmVjdG9yKG1fcGx1Z0luQXV0b1N0YXJ0UHJv
dmlkZXIuYXV0b1N0YXJ0T3JpZ2lucygpLCBwYXJhbWV0ZXJzLnBsdWdJbkF1dG9TdGFydE9yaWdp
bnMpOworICAgIHBhcmFtZXRlcnMucGx1Z0luQXV0b1N0YXJ0T3JpZ2lucyA9IGNvcHlUb1ZlY3Rv
cihtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmF1dG9TdGFydE9yaWdpbnMoKSk7CiAKICAgICBw
YXJhbWV0ZXJzLm1lbW9yeUNhY2hlRGlzYWJsZWQgPSBtX21lbW9yeUNhY2hlRGlzYWJsZWQ7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM1Miw5ICsxMzUyLDcgQEAgU3RvcmFnZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMg
V2Vic2l0ZQogCiBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBXZWJzaXRlRGF0YVN0b3JlOjpwZW5k
aW5nQ29va2llcygpIGNvbnN0CiB7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2ll
czsKLSAgICBjb3B5VG9WZWN0b3IobV9wZW5kaW5nQ29va2llcywgY29va2llcyk7Ci0gICAgcmV0
dXJuIGNvb2tpZXM7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdDb29raWVzKTsK
IH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjphZGRQZW5kaW5nQ29va2llKGNvbnN0IFdlYkNv
cmU6OkNvb2tpZSYgY29va2llKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbQkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03
MCw3ICs3MCw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3QKICAg
ICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyID0gbV91aVByb2Nl
c3NDb29raWVTdG9yYWdlSWRlbnRpZmllcjsKICNlbmRpZgogCi0gICAgY29weVRvVmVjdG9yKG1f
cGVuZGluZ0Nvb2tpZXMsIHBhcmFtZXRlcnMucGVuZGluZ0Nvb2tpZXMpOworICAgIHBhcmFtZXRl
cnMucGVuZGluZ0Nvb2tpZXMgPSBjb3B5VG9WZWN0b3IobV9wZW5kaW5nQ29va2llcyk7CiAKICAg
ICBpZiAoIWNvb2tpZUZpbGUuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShj
b29raWVGaWxlKSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2Vy
dGlvbklPUy5tbQkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTk2LDkgKzk2LDgg
QEAgLSAodm9pZClyZW1vdmVDbGllbnQ6KFByb2Nlc3NBc3NlcnRpb25DbAogLSAodm9pZClfbm90
aWZ5Q2xpZW50c09mSW1taW5lbnRTdXNwZW5zaW9uCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICBWZWN0b3I8UHJvY2Vzc0Fzc2VydGlvbkNsaWVudCo+IGNsaWVudHNUb05v
dGlmeTsKLSAgICBjb3B5VG9WZWN0b3IoX2NsaWVudHMsIGNsaWVudHNUb05vdGlmeSk7Ci0gICAg
Zm9yIChhdXRvKiBjbGllbnQgOiBjbGllbnRzVG9Ob3RpZnkpCisKKyAgICBmb3IgKGF1dG8qIGNs
aWVudCA6IGNvcHlUb1ZlY3RvcihfY2xpZW50cykpCiAgICAgICAgIGNsaWVudC0+YXNzZXJ0aW9u
V2lsbEV4cGlyZUltbWluZW50bHkoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDIy
MzE0OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxMCArNjAsNyBAQCB2b2lkIFdlYkNvb2tpZU1h
bmFnZXI6OmdldEhvc3RuYW1lc1dpdGhDCiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAg
ICBXZWJDb3JlOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcygqc3RvcmFnZVNlc3Npb24sIGhvc3Ru
YW1lcyk7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBob3N0bmFtZUxpc3Q7Ci0gICAgY29weVRvVmVj
dG9yKGhvc3RuYW1lcywgaG9zdG5hbWVMaXN0KTsKLQotICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGhv
c3RuYW1lTGlzdCwgY2FsbGJhY2tJRCksIDApOworICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OkRpZEdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvcHlU
b1ZlY3Rvcihob3N0bmFtZXMpLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKIHZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIu
Y3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9j
YXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsMTMg
Kzk0LDExIEBAIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpzZXRFbmFibGVIaWcKIHZvaWQg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyOjpkaWRDaGFuZ2VQb3NpdGlvbihjb25zdCBXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uOjpEYXRhJiBkYXRhKQogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAg
ICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gcG9zaXRpb24gPSBHZW9sb2NhdGlvblBvc2l0
aW9uOjpjcmVhdGUoZGF0YS50aW1lc3RhbXAsIGRhdGEubGF0aXR1ZGUsIGRhdGEubG9uZ2l0dWRl
LCBkYXRhLmFjY3VyYWN5LCBkYXRhLmNhblByb3ZpZGVBbHRpdHVkZSwgZGF0YS5hbHRpdHVkZSwg
ZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGVBY2N1cmFjeSwgZGF0YS5hbHRpdHVkZUFjY3VyYWN5LCBk
YXRhLmNhblByb3ZpZGVIZWFkaW5nLCBkYXRhLmhlYWRpbmcsIGRhdGEuY2FuUHJvdmlkZVNwZWVk
LCBkYXRhLnNwZWVkKTsKKyAgICBhdXRvIHBvc2l0aW9uID0gR2VvbG9jYXRpb25Qb3NpdGlvbjo6
Y3JlYXRlKGRhdGEudGltZXN0YW1wLCBkYXRhLmxhdGl0dWRlLCBkYXRhLmxvbmdpdHVkZSwgZGF0
YS5hY2N1cmFjeSwgZGF0YS5jYW5Qcm92aWRlQWx0aXR1ZGUsIGRhdGEuYWx0aXR1ZGUsIGRhdGEu
Y2FuUHJvdmlkZUFsdGl0dWRlQWNjdXJhY3ksIGRhdGEuYWx0aXR1ZGVBY2N1cmFjeSwgZGF0YS5j
YW5Qcm92aWRlSGVhZGluZywgZGF0YS5oZWFkaW5nLCBkYXRhLmNhblByb3ZpZGVTcGVlZCwgZGF0
YS5zcGVlZCk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2U+PiB3ZWJQYWdlQ29weTsKLSAg
ICBjb3B5VG9WZWN0b3IobV9wYWdlU2V0LCB3ZWJQYWdlQ29weSk7Ci0gICAgZm9yIChhdXRvJiBw
YWdlIDogd2ViUGFnZUNvcHkpIHsKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3Io
bV9wYWdlU2V0KSkgewogICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKLSAgICAgICAgICAg
IEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRpb25D
aGFuZ2VkKHBvc2l0aW9uLmdldCgpKTsKKyAgICAgICAgICAgIEdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+cG9zaXRpb25DaGFuZ2VkKHBvc2l0aW9uLnB0cigp
KTsKICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKQEAgLTExMyw5ICsxMTEs
NyBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlcjo6ZGlkRmFpbFRvRGV0CiAgICAgLy8gRklY
TUU6IEFkZCBsb2NhbGl6ZWQgZXJyb3Igc3RyaW5nLgogICAgIGF1dG8gZXJyb3IgPSBHZW9sb2Nh
dGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwg
ZXJyb3JNZXNzYWdlKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZT4+IHdlYlBhZ2VDb3B5
OwotICAgIGNvcHlUb1ZlY3RvcihtX3BhZ2VTZXQsIHdlYlBhZ2VDb3B5KTsKLSAgICBmb3IgKGF1
dG8mIHBhZ2UgOiB3ZWJQYWdlQ29weSkgeworICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1Zl
Y3RvcihtX3BhZ2VTZXQpKSB7CiAgICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQogICAgICAg
ICAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5lcnJv
ck9jY3VycmVkKGVycm9yLmdldCgpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCShyZXZpc2lv
biAyMjMxNDkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OCwxMSArMjU4LDggQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVJbnRlcm5hbAogCiB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5
OjppbnRlcm5hbGx5RmFpbGVkTG9hZFRpbWVyRmlyZWQoKQogewotICAgIFZlY3RvcjxSZWZQdHI8
UmVzb3VyY2VMb2FkZXI+PiBpbnRlcm5hbGx5RmFpbGVkUmVzb3VyY2VMb2FkZXJzOwotICAgIGNv
cHlUb1ZlY3RvcihtX2ludGVybmFsbHlGYWlsZWRSZXNvdXJjZUxvYWRlcnMsIGludGVybmFsbHlG
YWlsZWRSZXNvdXJjZUxvYWRlcnMpOwotICAgIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aW50ZXJuYWxseUZhaWxlZFJlc291cmNlTG9hZGVycy5zaXplKCk7ICsraSkKLSAgICAgICAgaW50
ZXJuYWxseUZhaWxlZFJlc291cmNlTG9hZGVyc1tpXS0+ZGlkRmFpbChpbnRlcm5hbEVycm9yKGlu
dGVybmFsbHlGYWlsZWRSZXNvdXJjZUxvYWRlcnNbaV0tPnVybCgpKSk7CisgICAgZm9yIChhdXRv
JiByZXNvdXJjZUxvYWRlciA6IGNvcHlUb1ZlY3RvcihtX2ludGVybmFsbHlGYWlsZWRSZXNvdXJj
ZUxvYWRlcnMpKQorICAgICAgICByZXNvdXJjZUxvYWRlci0+ZGlkRmFpbChpbnRlcm5hbEVycm9y
KHJlc291cmNlTG9hZGVyLT51cmwoKSkpOwogfQogCiB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpz
dGFydExvY2FsTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAxNy0xMC0xMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlbW92ZSBvdXQtcGFyYW1ldGVyIHZhcmlhbnRzIG9mIGNvcHlUb1ZlY3RvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTU1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dlYkdlb2xvY2F0
aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1Mg
X2hhbmRsZVBlbmRpbmdJbml0aWFsUG9zaXRpb246XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0
aW9uUHJvdmlkZXJJT1MgcG9zaXRpb25DaGFuZ2VkOl0pOgorICAgICAgICAoLVtXZWJHZW9sb2Nh
dGlvblByb3ZpZGVySU9TIGVycm9yT2NjdXJyZWQ6XSk6CisgICAgICAgICgtW1dlYkdlb2xvY2F0
aW9uUHJvdmlkZXJJT1MgcmVzZXRHZW9sb2NhdGlvbl0pOgorCisgICAgICAgICAgICBSZXBsYWNl
IG91dC1wYXJhbWV0ZXIgYmFzZWQgY29weVRvVmVjdG9yLCB3aXRoIG9uZSB0aGF0IHJldHVybnMg
YSBWZWN0b3IuCisKIDIwMTctMTAtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgV2ViQ29yZVN5c3RlbUludGVyZmFjZQpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViR2VvbG9j
YXRpb25Qcm92aWRlcklPUy5tbQkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjAsMTAgKzE2MCw4IEBAIC0gKHZvaWQpX2hhbmRsZVBlbmRpbmdJbml0aWFsUG9zaXRp
b246KE4KICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwogCiAgICAgaWYgKF9sYXN0
UG9zaXRpb24pIHsKLSAgICAgICAgVmVjdG9yPFdlYlZpZXcqPiB3ZWJWaWV3c0NvcHk7Ci0gICAg
ICAgIGNvcHlUb1ZlY3RvcihfcGVuZGluZ0luaXRpYWxQb3NpdGlvbldlYlZpZXcsIHdlYlZpZXdz
Q29weSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViVmlld3NDb3B5LnNpemUo
KTsgKytpKQotICAgICAgICAgICAgW3dlYlZpZXdzQ29weVtpXSBfZ2VvbG9jYXRpb25EaWRDaGFu
Z2VQb3NpdGlvbjpfbGFzdFBvc2l0aW9uLmdldCgpXTsKKyAgICAgICAgZm9yIChhdXRvJiB3ZWJW
aWV3IDogY29weVRvVmVjdG9yKF9wZW5kaW5nSW5pdGlhbFBvc2l0aW9uV2ViVmlldykpCisgICAg
ICAgICAgICBbd2ViVmlldyBfZ2VvbG9jYXRpb25EaWRDaGFuZ2VQb3NpdGlvbjpfbGFzdFBvc2l0
aW9uLmdldCgpXTsKICAgICB9CiAgICAgYWJvcnRTZW5kTGFzdFBvc2l0aW9uKHNlbGYpOwogfQpA
QCAtMjk1LDEwICsyOTMsOCBAQCAtICh2b2lkKXBvc2l0aW9uQ2hhbmdlZDooV2ViR2VvbG9jYXRp
b25QCiAgICAgYWJvcnRTZW5kTGFzdFBvc2l0aW9uKHNlbGYpOwogCiAgICAgX2xhc3RQb3NpdGlv
biA9IHBvc2l0aW9uOwotICAgIFZlY3RvcjxXZWJWaWV3Kj4gd2ViVmlld3NDb3B5OwotICAgIGNv
cHlUb1ZlY3RvcihfcmVnaXN0ZXJlZFdlYlZpZXdzLCB3ZWJWaWV3c0NvcHkpOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgd2ViVmlld3NDb3B5LnNpemUoKTsgKytpKQotICAgICAgICBbd2Vi
Vmlld3NDb3B5LmF0KGkpIF9nZW9sb2NhdGlvbkRpZENoYW5nZVBvc2l0aW9uOl9sYXN0UG9zaXRp
b24uZ2V0KCldOworICAgIGZvciAoYXV0byYgd2ViVmlldyA6IGNvcHlUb1ZlY3RvcihfcmVnaXN0
ZXJlZFdlYlZpZXdzKSkKKyAgICAgICAgW3dlYlZpZXcgX2dlb2xvY2F0aW9uRGlkQ2hhbmdlUG9z
aXRpb246X2xhc3RQb3NpdGlvbi5nZXQoKV07CiB9CiAKIC0gKHZvaWQpZXJyb3JPY2N1cnJlZDoo
TlNTdHJpbmcgKillcnJvck1lc3NhZ2UKQEAgLTMwNywxMCArMzAzLDggQEAgLSAodm9pZCllcnJv
ck9jY3VycmVkOihOU1N0cmluZyAqKWVycm9yTQogCiAgICAgX2xhc3RQb3NpdGlvbi5jbGVhcigp
OwogCi0gICAgVmVjdG9yPFdlYlZpZXcqPiB3ZWJWaWV3c0NvcHk7Ci0gICAgY29weVRvVmVjdG9y
KF9yZWdpc3RlcmVkV2ViVmlld3MsIHdlYlZpZXdzQ29weSk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB3ZWJWaWV3c0NvcHkuc2l6ZSgpOyArK2kpCi0gICAgICAgIFt3ZWJWaWV3c0NvcHku
YXQoaSkgX2dlb2xvY2F0aW9uRGlkRmFpbFdpdGhNZXNzYWdlOmVycm9yTWVzc2FnZV07CisgICAg
Zm9yIChhdXRvJiB3ZWJWaWV3IDogY29weVRvVmVjdG9yKF9yZWdpc3RlcmVkV2ViVmlld3MpKQor
ICAgICAgICBbd2ViVmlldyBfZ2VvbG9jYXRpb25EaWRGYWlsV2l0aE1lc3NhZ2U6ZXJyb3JNZXNz
YWdlXTsKIH0KIAogLSAodm9pZClyZXNldEdlb2xvY2F0aW9uCkBAIC0zMjcsMTAgKzMyMSw4IEBA
IC0gKHZvaWQpcmVzZXRHZW9sb2NhdGlvbgogICAgIGFib3J0U2VuZExhc3RQb3NpdGlvbihzZWxm
KTsKIAogICAgIC8vIDIpIFJlc2V0IHRoZSB2aWV3cywgZWFjaCBmcmFtZSB3aWxsIHJlZ2lzdGVy
IGJhY2sgaWYgbmVlZGVkLgotICAgIFZlY3RvcjxXZWJWaWV3Kj4gd2ViVmlld3NDb3B5OwotICAg
IGNvcHlUb1ZlY3RvcihfdHJhY2tlZFdlYlZpZXdzLCB3ZWJWaWV3c0NvcHkpOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgd2ViVmlld3NDb3B5LnNpemUoKTsgKytpKQotICAgICAgICBbd2Vi
Vmlld3NDb3B5LmF0KGkpIF9yZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbl07CisgICAgZm9y
IChhdXRvJiB3ZWJWaWV3IDogY29weVRvVmVjdG9yKF90cmFja2VkV2ViVmlld3MpKQorICAgICAg
ICBbd2ViVmlldyBfcmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25dOwogfQogQGVuZAogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjMxNDkpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NyBAQAorMjAxNy0xMC0xMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlbW92ZSBvdXQtcGFyYW1ldGVyIHZhcmlhbnRzIG9mIGNvcHlUb1ZlY3RvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTU1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNj
YXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IGRlc3Ry
b3lQbHVnaW5dKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToK
KyAgICAgICAgKG5ld0FycmF5V2l0aFN0cmluZ3MpOgorCisgICAgICAgICAgICBSZXBsYWNlIG91
dC1wYXJhbWV0ZXIgYmFzZWQgY29weVRvVmVjdG9yLCB3aXRoIG9uZSB0aGF0IHJldHVybnMgYSBW
ZWN0b3IuCisKIDIwMTctMTAtMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXBsYWNlIGNvcHlLZXlzVG9WZWN0b3IvY29weVZhbHVlc1RvVmVjdG9yIHdpdGggY29w
eVRvVmVjdG9yKG1hcC5rZXlzKCkpL2NvcHlUb1ZlY3RvcihtYXAudmFsdWVzKCkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luVmlldy5tbQkocmV2aXNpb24gMjIzMTQ5KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTEx
NzMsOSArMTE3Myw3IEBAIC0gKHZvaWQpZGVzdHJveVBsdWdpbgogICAgIC8vIFRvIHN0b3AgYWN0
aXZlIHN0cmVhbXMgaXQncyBuZWNlc3NhcnkgdG8gaW52b2tlIHN0b3AoKSBvbiBhIGNvcHkgCiAg
ICAgLy8gb2Ygc3RyZWFtcy4gVGhpcyBpcyBiZWNhdXNlIGNhbGxpbmcgV2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW06OnN0b3AoKSBhbHNvIGhhcyB0aGUgc2lkZSBlZmZlY3QKICAgICAvLyBvZiByZW1v
dmluZyBhIHN0cmVhbSBmcm9tIHRoaXMgaGFzaCBzZXQuCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbT4+IHN0cmVhbXNDb3B5OwotICAgIGNvcHlUb1ZlY3RvcihzdHJl
YW1zLCBzdHJlYW1zQ29weSk7Ci0gICAgZm9yIChhdXRvJiBzdHJlYW06IHN0cmVhbXNDb3B5KQor
ICAgIGZvciAoYXV0byYgc3RyZWFtIDogY29weVRvVmVjdG9yKHN0cmVhbXMpKQogICAgICAgICBz
dHJlYW0tPnN0b3AoKTsKIAogICAgIGZvciAoV2ViRnJhbWUgKmZyYW1lIGluIFtfcGVuZGluZ0Zy
YW1lTG9hZHMga2V5RW51bWVyYXRvcl0pCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQkocmV2aXNpb24g
MjIzMTQ5KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVz
ZW50YXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTg5LDggKzg5LDcgQEAgQGludGVyZmFjZSBX
ZWJIVE1MUmVwcmVzZW50YXRpb25Qcml2YXRlIAogCiBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+
IG5ld0FycmF5V2l0aFN0cmluZ3MoY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIHNldCkKIHsKLSAgICBWZWN0b3I8TlNTdHJpbmcgKj4gdmVjdG9yOwotICAg
IGNvcHlUb1ZlY3RvcihzZXQsIHZlY3Rvcik7CisgICAgYXV0byB2ZWN0b3IgPSBjb3B5VG9WZWN0
b3JPZjxOU1N0cmluZyAqPihzZXQpOwogICAgIHJldHVybiBhZG9wdE5TKFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzOnZlY3Rvci5kYXRhKCkgY291bnQ6dmVjdG9yLnNpemUoKV0pOwog
fQogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjMxOTApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAxNy0xMC0xMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgor
CisgICAgICAgIFJlbW92ZSBvdXQtcGFyYW1ldGVyIHZhcmlhbnRzIG9mIGNvcHlUb1ZlY3Rvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MTU1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKHN0b3BKYXZhU2NyaXB0
VGhyZWFkcyk6CisKIDIwMTctMTAtMTEgIE5hZWwgT3VlZHJhb2dvICA8bmFlbC5vdWVkcmFvZ29A
Y3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIE1hbnkgbWVkaWEgc291cmNlIHRl
c3RzIGNyYXNoaW5nIHdpdGggR1N0cmVhbWVyLUNSSVRJQ0FMICoqOiBfZ3N0X3V0aWxfdWludDY0
X3NjYWxlOiBhc3NlcnRpb24gJ2Rlbm9tICE9IDAnIGZhaWxlZCBpbiBnc3RfcXRkZW11eF9jb25m
aWd1cmVfc3RyZWFtKCkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJl
YWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRU
aHJlYWRpbmcuY3BwCShyZXZpc2lvbiAyMjMxNDkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9K
YXZhU2NyaXB0VGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDcgKzE0Miw3IEBA
IHZvaWQgc3RvcEphdmFTY3JpcHRUaHJlYWRzKCkKICAgICBWZWN0b3I8UmVmUHRyPFRocmVhZD4s
IGphdmFTY3JpcHRUaHJlYWRzQ291bnQ+IHRocmVhZHM7CiAgICAgewogICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkpOwotICAgICAgICBjb3B5VG9WZWN0
b3IoamF2YVNjcmlwdFRocmVhZHMoKSwgdGhyZWFkcyk7CisgICAgICAgIHRocmVhZHMgPSBjb3B5
VG9WZWN0b3IoamF2YVNjcmlwdFRocmVhZHMoKSk7CiAgICAgICAgIEFTU0VSVCh0aHJlYWRzLnNp
emUoKSA9PSBqYXZhU2NyaXB0VGhyZWFkc0NvdW50KTsKICAgICB9CiAK
</data>
<flag name="review"
          id="343194"
          type_id="1"
          status="+"
          setter="thorton"
    />
    <flag name="commit-queue"
          id="343205"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>