<?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>276078</bug_id>
          
          <creation_ts>2024-07-01 10:19:42 -0700</creation_ts>
          <short_desc>REGRESSION(280514@main): Introduced crashes in WebAudio tests</short_desc>
          <delta_ts>2024-07-01 10:23:15 -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>
          
          <blocked>276036</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>cdumez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2043994</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2024-07-01 10:19:42 -0700</bug_when>
    <thetext>https://commits.webkit.org/280514@main introduced a regression:
Introduced crashes in WebAudio tests

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2043996</commentid>
    <comment_count>1</comment_count>
      <attachid>471783</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2024-07-01 10:19:49 -0700</bug_when>
    <thetext>Created attachment 471783
REVERT of 280514@main

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2043997</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-07-01 10:22:52 -0700</bug_when>
    <thetext>Committed 280541@main (e995762d1abd): &lt;https://commits.webkit.org/280541@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 471783.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2043998</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-07-01 10:23:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/130905399&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>471783</attachid>
            <date>2024-07-01 10:19:49 -0700</date>
            <delta_ts>2024-07-01 10:22:53 -0700</delta_ts>
            <desc>REVERT of 280514@main</desc>
            <filename>bug-276078-20240701171948.patch</filename>
            <type>text/plain</type>
            <size>100954</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSBmZjlkY2VjMGRkOTNmZDgwOTRlYmRmOTljNjU2MmZmZDljYzgxYjVjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBNb24sIDEgSnVsIDIwMjQgMTc6MTk6NDYgKzAwMDAKU3ViamVjdDogW1BBVENIXSBV
bnJldmlld2VkLCByZXZlcnRpbmcgMjgwNTE0QG1haW4uCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2MDc4CgpJbnRyb2R1Y2VkIGNyYXNoZXMgaW4gV2ViQXVkaW8g
dGVzdHMKClJldmVydGVkIGNoYW5nZXNldDoKCiJEcm9wIEF1ZGlvQXJyYXk6OmRhdGEoKSBpbiBm
YXZvciBvZiBzcGFuKCkiCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NzYwMzYKaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMjgwNTE0QG1haW4KLS0tCiAuLi4vV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcCAgfCAgMiArLQogLi4uL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgICAgICAgIHwgIDIgKy0KIC4uLi9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuY3BwICAgICAgICB8IDM2ICsrKystLS0tCiAuLi4vd2Vi
YXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCAgICAgfCAgNCArLQogLi4uL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAgICAgIHwgIDYgKy0KIC4uLi93ZWJhdWRp
by9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuY3BwICAgICAgICB8IDEwICstLQogLi4uL01vZHVsZXMv
d2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcCAgICAgIHwgIDIgKy0KIC4uLi9Nb2R1bGVzL3dl
YmF1ZGlvL0NvbnN0YW50U291cmNlTm9kZS5jcHAgICB8ICA2ICstCiAuLi4vTW9kdWxlcy93ZWJh
dWRpby9EZWxheURTUEtlcm5lbC5jcHAgICAgICAgfCAgOCArLQogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAgIHwgIDIgKy0KIC4uLi9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vSUlSUHJvY2Vzc29yLmNwcCB8ICAyICstCiAuLi4vd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZUNvY29hLmNwcCAgfCAgMiArLQogLi4uL01lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VHU3RyZWFtZXIuY3BwICAgICAgIHwgIDIgKy0KIC4uLi93ZWJhdWRpby9PZmZsaW5lQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuY3BwICB8ICAyICstCiAuLi4vTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxh
dG9yTm9kZS5jcHAgICAgICAgfCAgOCArLQogLi4uL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Q
ZXJpb2RpY1dhdmUuY3BwIHwgMTQgKystLQogLi4uL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVB
bmFseXNlci5jcHAgICAgIHwgMzQgKysrKy0tLS0KIC4uLi9Nb2R1bGVzL3dlYmF1ZGlvL1Njcmlw
dFByb2Nlc3Nvck5vZGUuY3BwICB8ICAyICstCiAuLi4vTW9kdWxlcy93ZWJhdWRpby9TdGVyZW9Q
YW5uZXJOb2RlLmNwcCAgICAgfCAgMiArLQogLi4uL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBl
ckRTUEtlcm5lbC5jcHAgIHwgIDYgKy0KIC4uLi9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQ
cm9jZXNzb3IuY3BwICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b0FycmF5LmggICAgfCAyNSArKystLS0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvQnVzLmNwcCAgICB8IDgyICsrKysrKysrKy0tLS0tLS0tLS0KIC4uLi9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5jcHAgICB8IDE5ICsrLS0tCiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaCAgfCAyMSArKystLQogLi4uL2F1ZGlvL0F1ZGlv
RFNQS2VybmVsUHJvY2Vzc29yLmNwcCAgICAgICAgIHwgIDIgKy0KIC4uLi9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcCB8ICAyICstCiAuLi4vcGxhdGZvcm0vYXVkaW8v
QXVkaW9SZXNhbXBsZXJLZXJuZWwuY3BwICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQmlxdWFkLmNwcCAgICAgIHwgMjIgKystLS0KIC4uLi9wbGF0Zm9ybS9hdWRpby9E
aXJlY3RDb252b2x2ZXIuY3BwICAgICAgICB8ICA4ICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9Eb3duU2FtcGxlci5jcHAgfCAgNiArLQogLi4uL3BsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvci5jcHAgICAgIHwgIDYgKy0KIC4uLi9hdWRpby9EeW5hbWljc0NvbXByZXNz
b3JLZXJuZWwuY3BwICAgICAgICB8ICA0ICstCiAuLi4vcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dl
clBhbm5lci5jcHAgICAgICAgfCAxNiArKy0tCiAuLi4vV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9G
RlRDb252b2x2ZXIuY3BwICAgfCAxMiArLS0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0ZGVEZyYW1lLmNwcCAgICB8IDEyICstLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
SFJURktlcm5lbC5jcHAgIHwgIDYgKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hS
VEZQYW5uZXIuY3BwICB8IDE2ICsrLS0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0lJ
UkZpbHRlci5jcHAgICB8ICA4ICstCiAuLi4vcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVz
YW1wbGVyLmNwcCAgfCAgMiArLQogLi4uL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxG
SUZPLmNwcCAgIHwgIDggKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5j
cHAgICAgICB8ICAyICstCiAuLi4vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmNwcCAg
ICAgICAgfCAgNCArLQogLi4uL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAgICAg
ICAgIHwgIDYgKy0KIC4uLi9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAg
ICB8ICA4ICstCiAuLi4vcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuY3BwICAgICAg
fCAgNiArLQogLi4uL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAgIHwg
IDggKy0KIC4uLi9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1N0ZXJlb1Bhbm5lci5jcHAgICB8IDE2
ICsrLS0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5jcHAgICB8ICA2
ICstCiAuLi4vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwICAgICAgfCAgOCAr
LQogLi4uL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwICAgIHwgIDIgKy0K
IC4uLi9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcCAgICAgICAgICB8ICAyICstCiAu
Li4vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcCAgICAgfCAxMiArLS0KIC4u
Li9wbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwICAgICAgICB8IDE2ICsrLS0KIC4u
Li9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSAgICAgICAgICAgICB8ICAyICstCiAuLi4v
bWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5tbSAgICAgICAgfCAgMiArLQogNTYgZmls
ZXMgY2hhbmdlZCwgMjY4IGluc2VydGlvbnMoKyksIDI2NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCmluZGV4IDI0YTE4
OWJiMmQxYi4uYjk5MjQ0YjY0MmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIEF1ZGlvQnVmZmVyOjpB
dWRpb0J1ZmZlcihBdWRpb0J1cyYgYnVzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgY2hhbm5lbERhdGFBcnJheS0+c2V0UmFuZ2UoYnVzLmNoYW5uZWwoaSktPnNw
YW4oKS5kYXRhKCksIG1fb3JpZ2luYWxMZW5ndGgsIDApOworICAgICAgICBjaGFubmVsRGF0YUFy
cmF5LT5zZXRSYW5nZShidXMuY2hhbm5lbChpKS0+ZGF0YSgpLCBtX29yaWdpbmFsTGVuZ3RoLCAw
KTsKICAgICAgICAgY2hhbm5lbHMuYXBwZW5kKFdURk1vdmUoY2hhbm5lbERhdGFBcnJheSkpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDc4MWU0NzBhNzkxNS4uZjg2YmZmYjliNTA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBBdWRpb0J1ZmZl
clNvdXJjZU5vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICB9CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3V0cHV0QnVzLm51bWJlck9mQ2hhbm5lbHMoKTsg
KytpKQotICAgICAgICBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHNbaV0gPSBvdXRwdXRCdXMuY2hhbm5l
bChpKS0+bXV0YWJsZVNwYW4oKS5kYXRhKCk7CisgICAgICAgIG1fZGVzdGluYXRpb25DaGFubmVs
c1tpXSA9IG91dHB1dEJ1cy5jaGFubmVsKGkpLT5tdXRhYmxlRGF0YSgpOwogCiAgICAgLy8gUmVu
ZGVyIGJ5IHJlYWRpbmcgZGlyZWN0bHkgZnJvbSB0aGUgYnVmZmVyLgogICAgIGlmICghcmVuZGVy
RnJvbUJ1ZmZlcigmb3V0cHV0QnVzLCBxdWFudHVtRnJhbWVPZmZzZXQsIGJ1ZmZlckZyYW1lc1Rv
UHJvY2Vzcywgc3RhcnRGcmFtZU9mZnNldCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9MaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuY3BwCmluZGV4IGU5YTZlNDY4YTRjMy4uNzZjNzZk
NzU0NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9M
aXN0ZW5lci5jcHAKQEAgLTEwOSwxNyArMTA5LDE3IEBAIHZvaWQgQXVkaW9MaXN0ZW5lcjo6dXBk
YXRlVmFsdWVzSWZOZWVkZWQoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICAgICAgQVNTRVJU
KGZyYW1lc1RvUHJvY2VzcyA8PSBtX3VwWVZhbHVlcy5zaXplKCkpOwogICAgICAgICBBU1NFUlQo
ZnJhbWVzVG9Qcm9jZXNzIDw9IG1fdXBaVmFsdWVzLnNpemUoKSk7CiAKLSAgICAgICAgcG9zaXRp
b25YKCkuY2FsY3VsYXRlU2FtcGxlQWNjdXJhdGVWYWx1ZXMobV9wb3NpdGlvblhWYWx1ZXMubXV0
YWJsZVNwYW4oKS5kYXRhKCksIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAgIHBvc2l0aW9uWSgp
LmNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlVmFsdWVzKG1fcG9zaXRpb25ZVmFsdWVzLm11dGFibGVT
cGFuKCkuZGF0YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgICAgICBwb3NpdGlvblooKS5jYWxj
dWxhdGVTYW1wbGVBY2N1cmF0ZVZhbHVlcyhtX3Bvc2l0aW9uWlZhbHVlcy5tdXRhYmxlU3Bhbigp
LmRhdGEoKSwgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgcG9zaXRpb25YKCkuY2FsY3VsYXRl
U2FtcGxlQWNjdXJhdGVWYWx1ZXMobV9wb3NpdGlvblhWYWx1ZXMuZGF0YSgpLCBmcmFtZXNUb1By
b2Nlc3MpOworICAgICAgICBwb3NpdGlvblkoKS5jYWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVZhbHVl
cyhtX3Bvc2l0aW9uWVZhbHVlcy5kYXRhKCksIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgICAgIHBv
c2l0aW9uWigpLmNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlVmFsdWVzKG1fcG9zaXRpb25aVmFsdWVz
LmRhdGEoKSwgZnJhbWVzVG9Qcm9jZXNzKTsKIAotICAgICAgICBmb3J3YXJkWCgpLmNhbGN1bGF0
ZVNhbXBsZUFjY3VyYXRlVmFsdWVzKG1fZm9yd2FyZFhWYWx1ZXMubXV0YWJsZVNwYW4oKS5kYXRh
KCksIGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgICAgIGZvcndhcmRZKCkuY2FsY3VsYXRlU2FtcGxl
QWNjdXJhdGVWYWx1ZXMobV9mb3J3YXJkWVZhbHVlcy5tdXRhYmxlU3BhbigpLmRhdGEoKSwgZnJh
bWVzVG9Qcm9jZXNzKTsKLSAgICAgICAgZm9yd2FyZFooKS5jYWxjdWxhdGVTYW1wbGVBY2N1cmF0
ZVZhbHVlcyhtX2ZvcndhcmRaVmFsdWVzLm11dGFibGVTcGFuKCkuZGF0YSgpLCBmcmFtZXNUb1By
b2Nlc3MpOworICAgICAgICBmb3J3YXJkWCgpLmNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlVmFsdWVz
KG1fZm9yd2FyZFhWYWx1ZXMuZGF0YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICBmb3J3
YXJkWSgpLmNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlVmFsdWVzKG1fZm9yd2FyZFlWYWx1ZXMuZGF0
YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICBmb3J3YXJkWigpLmNhbGN1bGF0ZVNhbXBs
ZUFjY3VyYXRlVmFsdWVzKG1fZm9yd2FyZFpWYWx1ZXMuZGF0YSgpLCBmcmFtZXNUb1Byb2Nlc3Mp
OwogCi0gICAgICAgIHVwWCgpLmNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlVmFsdWVzKG1fdXBYVmFs
dWVzLm11dGFibGVTcGFuKCkuZGF0YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgICAgICB1cFko
KS5jYWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVZhbHVlcyhtX3VwWVZhbHVlcy5tdXRhYmxlU3Bhbigp
LmRhdGEoKSwgZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICAgICAgdXBaKCkuY2FsY3VsYXRlU2FtcGxl
QWNjdXJhdGVWYWx1ZXMobV91cFpWYWx1ZXMubXV0YWJsZVNwYW4oKS5kYXRhKCksIGZyYW1lc1Rv
UHJvY2Vzcyk7CisgICAgICAgIHVwWCgpLmNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlVmFsdWVzKG1f
dXBYVmFsdWVzLmRhdGEoKSwgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgdXBZKCkuY2FsY3Vs
YXRlU2FtcGxlQWNjdXJhdGVWYWx1ZXMobV91cFlWYWx1ZXMuZGF0YSgpLCBmcmFtZXNUb1Byb2Nl
c3MpOworICAgICAgICB1cFooKS5jYWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVZhbHVlcyhtX3VwWlZh
bHVlcy5kYXRhKCksIGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAgfQogfQogCkBAIC0xNDAsNTUgKzE0
MCw1NSBAQCB2b2lkIEF1ZGlvTGlzdGVuZXI6OnVwZGF0ZURpcnR5U3RhdGUoKQogY29uc3QgZmxv
YXQqIEF1ZGlvTGlzdGVuZXI6OnBvc2l0aW9uWFZhbHVlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KQogewogICAgIHVwZGF0ZVZhbHVlc0lmTmVlZGVkKGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgcmV0
dXJuIG1fcG9zaXRpb25YVmFsdWVzLnNwYW4oKS5kYXRhKCk7CisgICAgcmV0dXJuIG1fcG9zaXRp
b25YVmFsdWVzLmRhdGEoKTsKIH0KIAogY29uc3QgZmxvYXQqIEF1ZGlvTGlzdGVuZXI6OnBvc2l0
aW9uWVZhbHVlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogewogICAgIHVwZGF0ZVZhbHVlc0lm
TmVlZGVkKGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgcmV0dXJuIG1fcG9zaXRpb25ZVmFsdWVzLnNw
YW4oKS5kYXRhKCk7CisgICAgcmV0dXJuIG1fcG9zaXRpb25ZVmFsdWVzLmRhdGEoKTsKIH0KIAog
Y29uc3QgZmxvYXQqIEF1ZGlvTGlzdGVuZXI6OnBvc2l0aW9uWlZhbHVlcyhzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKQogewogICAgIHVwZGF0ZVZhbHVlc0lmTmVlZGVkKGZyYW1lc1RvUHJvY2Vzcyk7
Ci0gICAgcmV0dXJuIG1fcG9zaXRpb25aVmFsdWVzLnNwYW4oKS5kYXRhKCk7CisgICAgcmV0dXJu
IG1fcG9zaXRpb25aVmFsdWVzLmRhdGEoKTsKIH0KIAogY29uc3QgZmxvYXQqIEF1ZGlvTGlzdGVu
ZXI6OmZvcndhcmRYVmFsdWVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgdXBkYXRl
VmFsdWVzSWZOZWVkZWQoZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICByZXR1cm4gbV9mb3J3YXJkWFZh
bHVlcy5zcGFuKCkuZGF0YSgpOworICAgIHJldHVybiBtX2ZvcndhcmRYVmFsdWVzLmRhdGEoKTsK
IH0KIAogY29uc3QgZmxvYXQqIEF1ZGlvTGlzdGVuZXI6OmZvcndhcmRZVmFsdWVzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgdXBkYXRlVmFsdWVzSWZOZWVkZWQoZnJhbWVzVG9Qcm9j
ZXNzKTsKLSAgICByZXR1cm4gbV9mb3J3YXJkWVZhbHVlcy5zcGFuKCkuZGF0YSgpOworICAgIHJl
dHVybiBtX2ZvcndhcmRZVmFsdWVzLmRhdGEoKTsKIH0KIAogY29uc3QgZmxvYXQqIEF1ZGlvTGlz
dGVuZXI6OmZvcndhcmRaVmFsdWVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgdXBk
YXRlVmFsdWVzSWZOZWVkZWQoZnJhbWVzVG9Qcm9jZXNzKTsKLSAgICByZXR1cm4gbV9mb3J3YXJk
WlZhbHVlcy5zcGFuKCkuZGF0YSgpOworICAgIHJldHVybiBtX2ZvcndhcmRaVmFsdWVzLmRhdGEo
KTsKIH0KIAogY29uc3QgZmxvYXQqIEF1ZGlvTGlzdGVuZXI6OnVwWFZhbHVlcyhzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKQogewogICAgIHVwZGF0ZVZhbHVlc0lmTmVlZGVkKGZyYW1lc1RvUHJvY2Vz
cyk7Ci0gICAgcmV0dXJuIG1fdXBYVmFsdWVzLnNwYW4oKS5kYXRhKCk7CisgICAgcmV0dXJuIG1f
dXBYVmFsdWVzLmRhdGEoKTsKIH0KIAogY29uc3QgZmxvYXQqIEF1ZGlvTGlzdGVuZXI6OnVwWVZh
bHVlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogewogICAgIHVwZGF0ZVZhbHVlc0lmTmVlZGVk
KGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgcmV0dXJuIG1fdXBZVmFsdWVzLnNwYW4oKS5kYXRhKCk7
CisgICAgcmV0dXJuIG1fdXBZVmFsdWVzLmRhdGEoKTsKIH0KIAogY29uc3QgZmxvYXQqIEF1ZGlv
TGlzdGVuZXI6OnVwWlZhbHVlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogewogICAgIHVwZGF0
ZVZhbHVlc0lmTmVlZGVkKGZyYW1lc1RvUHJvY2Vzcyk7Ci0gICAgcmV0dXJuIG1fdXBaVmFsdWVz
LnNwYW4oKS5kYXRhKCk7CisgICAgcmV0dXJuIG1fdXBaVmFsdWVzLmRhdGEoKTsKIH0KIAogRXhj
ZXB0aW9uT3I8dm9pZD4gQXVkaW9MaXN0ZW5lcjo6c2V0UG9zaXRpb24oZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgeikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAppbmRleCBiNzkyNGE1NGE5NGQuLjE1
M2FjZjAyMDMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcApAQCAtMTE1LDcgKzExNSw3IEBA
IHZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjp1cGRhdGVTY2hlZHVsaW5nSW5mbyhzaXpl
X3QgcXVhbnR1bUZyYW1lU2l6ZSwgQXVkCiAgICAgLy8gWmVybyBhbnkgaW5pdGlhbCBmcmFtZXMg
cmVwcmVzZW50aW5nIHNpbGVuY2UgbGVhZGluZyB1cCB0byBhIHJlbmRlcmluZyBzdGFydCB0aW1l
IGluIHRoZSBtaWRkbGUgb2YgdGhlIHF1YW50dW0uCiAgICAgaWYgKHF1YW50dW1GcmFtZU9mZnNl
dCkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3V0cHV0QnVzLm51bWJlck9m
Q2hhbm5lbHMoKTsgKytpKQotICAgICAgICAgICAgbWVtc2V0U3BhbihvdXRwdXRCdXMuY2hhbm5l
bChpKS0+bXV0YWJsZVNwYW4oKS5maXJzdChxdWFudHVtRnJhbWVPZmZzZXQpLCAwKTsKKyAgICAg
ICAgICAgIG1lbXNldChvdXRwdXRCdXMuY2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKSwgMCwgc2l6
ZW9mKGZsb2F0KSAqIHF1YW50dW1GcmFtZU9mZnNldCk7CiAgICAgfQogCiAgICAgLy8gSGFuZGxl
IHNpbGVuY2UgYWZ0ZXIgd2UncmUgZG9uZSBwbGF5aW5nLgpAQCAtMTM3LDcgKzEzNyw3IEBAIHZv
aWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjp1cGRhdGVTY2hlZHVsaW5nSW5mbyhzaXplX3Qg
cXVhbnR1bUZyYW1lU2l6ZSwgQXVkCiAgICAgICAgICAgICAgICAgbm9uU2lsZW50RnJhbWVzVG9Q
cm9jZXNzIC09IGZyYW1lc1RvWmVybzsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG91dHB1dEJ1cy5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkKLSAgICAgICAgICAgICAg
ICBtZW1zZXRTcGFuKG91dHB1dEJ1cy5jaGFubmVsKGkpLT5tdXRhYmxlU3BhbigpLnN1YnNwYW4o
emVyb1N0YXJ0RnJhbWUsIGZyYW1lc1RvWmVybyksIDApOworICAgICAgICAgICAgICAgIG1lbXNl
dChvdXRwdXRCdXMuY2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKSArIHplcm9TdGFydEZyYW1lLCAw
LCBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9aZXJvKTsKICAgICAgICAgfQogCiAgICAgICAgIGZp
bmlzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0Tm9kZS5jcHAKaW5kZXggNDhjM2VjYWVhMTgzLi4yODMyOTczN2FjMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNw
cApAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQgQXVkaW9Xb3JrbGV0Tm9kZTo6cHJvY2VzcyhzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgICAgICAgICAgaWYgKGF1dG8mIGlucHV0ID0gbV9pbnB1
dHNbaW5wdXRJbmRleF0pIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNoYW5uZWxJ
bmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IGlucHV0LT5udW1iZXJPZkNoYW5uZWxzKCk7ICsrY2hh
bm5lbEluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGNoYW5uZWwgPSBpbnB1dC0+
Y2hhbm5lbChjaGFubmVsSW5kZXgpOwotICAgICAgICAgICAgICAgICAgICBBdWRpb1V0aWxpdGll
czo6YXBwbHlOb2lzZShjaGFubmVsLT5tdXRhYmxlU3BhbigpLmRhdGEoKSwgY2hhbm5lbC0+bGVu
Z3RoKCksIDAuMDEpOworICAgICAgICAgICAgICAgICAgICBBdWRpb1V0aWxpdGllczo6YXBwbHlO
b2lzZShjaGFubmVsLT5tdXRhYmxlRGF0YSgpLCBjaGFubmVsLT5sZW5ndGgoKSwgMC4wMSk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMzIsOSArMjMy
LDkgQEAgdm9pZCBBdWRpb1dvcmtsZXROb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpCiAgICAgICAgIEFTU0VSVChwYXJhbVZhbHVlcyk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHBhcmFtVmFsdWVzLT5zaXplKCkgPj0gZnJhbWVzVG9Qcm9jZXNzKTsKICAgICAgICAgaWYgKGF1
ZGlvUGFyYW0tPmhhc1NhbXBsZUFjY3VyYXRlVmFsdWVzKCkgJiYgYXVkaW9QYXJhbS0+YXV0b21h
dGlvblJhdGUoKSA9PSBBdXRvbWF0aW9uUmF0ZTo6QVJhdGUpCi0gICAgICAgICAgICBhdWRpb1Bh
cmFtLT5jYWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVZhbHVlcyhwYXJhbVZhbHVlcy0+bXV0YWJsZVNw
YW4oKS5kYXRhKCksIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgICAgICAgICBhdWRpb1BhcmFtLT5j
YWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVZhbHVlcyhwYXJhbVZhbHVlcy0+ZGF0YSgpLCBmcmFtZXNU
b1Byb2Nlc3MpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGQ6OmZpbGxfbihwYXJhbVZh
bHVlcy0+bXV0YWJsZVNwYW4oKS5kYXRhKCksIGZyYW1lc1RvUHJvY2VzcywgYXVkaW9QYXJhbS0+
ZmluYWxWYWx1ZSgpKTsKKyAgICAgICAgICAgIHN0ZDo6ZmlsbF9uKHBhcmFtVmFsdWVzLT5kYXRh
KCksIGZyYW1lc1RvUHJvY2VzcywgYXVkaW9QYXJhbS0+ZmluYWxWYWx1ZSgpKTsKICAgICB9CiAK
ICAgICBib29sIHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5jcHAKaW5kZXgg
ZjVjZThhYTdkOGI2Li40NWI5NGMwNjAwM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5jcHAKQEAgLTg3LDcg
Kzg3LDcgQEAgc3RhdGljIEpTT2JqZWN0KiBjb25zdHJ1Y3RGcm96ZW5LZXlWYWx1ZU9iamVjdChW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmoKICAgICAgICAgUHV0UHJvcGVydHlTbG90
IHNsb3Qob2JqZWN0LCBmYWxzZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKICAgICAgICAg
Ly8gUGVyIHRoZSBzcGVjaWZpY2F0aW9uLCBpZiB0aGUgdmFsdWUgaXMgY29uc3RhbnQsIHdlIHBh
c3MgdGhlIEpTIGFuIGFycmF5IHdpdGggbGVuZ3RoIDEsIHdpdGggdGhlIGFycmF5IGl0ZW0gYmVp
bmcgdGhlIGNvbnN0YW50LgogICAgICAgICB1bnNpZ25lZCBqc0FycmF5U2l6ZSA9IHBhaXIudmFs
dWUtPmNvbnRhaW5zQ29uc3RhbnRWYWx1ZSgpID8gMSA6IHBhaXIudmFsdWUtPnNpemUoKTsKLSAg
ICAgICAgb2JqZWN0LT5wdXRJbmxpbmUoJmdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcGFpci5rZXkpLCBjb25zdHJ1Y3RKU0Zsb2F0MzJBcnJheShnbG9iYWxPYmplY3Qs
IGpzQXJyYXlTaXplLCBwYWlyLnZhbHVlLT5zcGFuKCkuZGF0YSgpKSwgc2xvdCk7CisgICAgICAg
IG9iamVjdC0+cHV0SW5saW5lKCZnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHBhaXIua2V5KSwgY29uc3RydWN0SlNGbG9hdDMyQXJyYXkoZ2xvYmFsT2JqZWN0LCBqc0Fy
cmF5U2l6ZSwgcGFpci52YWx1ZS0+ZGF0YSgpKSwgc2xvdCk7CiAgICAgfQogICAgIEpTQzo6b2Jq
ZWN0Q29uc3RydWN0b3JGcmVlemUoJmdsb2JhbE9iamVjdCwgb2JqZWN0KTsKICAgICBFWENFUFRJ
T05fQVNTRVJUX1VOVVNFRChzY29wZSwgIXNjb3BlLmV4Y2VwdGlvbigpKTsKQEAgLTEwMyw3ICsx
MDMsNyBAQCBzdGF0aWMgSlNBcnJheSogY29uc3RydWN0RnJvemVuSlNBcnJheShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQwogICAgIGF1dG8qIGNoYW5uZWxzRGF0YSA9
IEpTQXJyYXk6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0Lm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVG
b3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoQ29udGlndW91cyksIG51bWJlck9mQ2hhbm5lbHMpOwog
ICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBudW1iZXJPZkNoYW5uZWxzOyArK2opIHsKICAg
ICAgICAgYXV0byogY2hhbm5lbCA9IGJ1cy0+Y2hhbm5lbChqKTsKLSAgICAgICAgY2hhbm5lbHNE
YXRhLT5zZXRJbmRleFF1aWNrbHkodm0sIGosIGNvbnN0cnVjdEpTRmxvYXQzMkFycmF5KGdsb2Jh
bE9iamVjdCwgY2hhbm5lbC0+bGVuZ3RoKCksIHNob3VsZFBvcHVsYXRlV2l0aEJ1c0RhdGEgPT0g
U2hvdWxkUG9wdWxhdGVXaXRoQnVzRGF0YTo6WWVzID8gY2hhbm5lbC0+c3BhbigpLmRhdGEoKSA6
IG51bGxwdHIpKTsKKyAgICAgICAgY2hhbm5lbHNEYXRhLT5zZXRJbmRleFF1aWNrbHkodm0sIGos
IGNvbnN0cnVjdEpTRmxvYXQzMkFycmF5KGdsb2JhbE9iamVjdCwgY2hhbm5lbC0+bGVuZ3RoKCks
IHNob3VsZFBvcHVsYXRlV2l0aEJ1c0RhdGEgPT0gU2hvdWxkUG9wdWxhdGVXaXRoQnVzRGF0YTo6
WWVzID8gY2hhbm5lbC0+ZGF0YSgpIDogbnVsbHB0cikpOwogICAgIH0KICAgICBKU0M6Om9iamVj
dENvbnN0cnVjdG9yRnJlZXplKCZnbG9iYWxPYmplY3QsIGNoYW5uZWxzRGF0YSk7CiAgICAgRVhD
RVBUSU9OX0FTU0VSVF9VTlVTRUQoc2NvcGUsICFzY29wZS5leGNlcHRpb24oKSk7CkBAIC0xMzYs
NyArMTM2LDcgQEAgc3RhdGljIHZvaWQgY29weURhdGFGcm9tSlNBcnJheVRvQnVzZXMoSlNHbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgSlNBcnIKICAgICAgICAgICAgIGF1dG8qIGNo
YW5uZWwgPSBidXMtPmNoYW5uZWwoaik7CiAgICAgICAgICAgICBhdXRvKiBqc0NoYW5uZWxEYXRh
ID0ganNEeW5hbWljQ2FzdDxKU0Zsb2F0MzJBcnJheSo+KGNoYW5uZWxzQXJyYXktPmdldEluZGV4
KCZnbG9iYWxPYmplY3QsIGopKTsKICAgICAgICAgICAgIGlmIChMSUtFTFkoanNDaGFubmVsRGF0
YSAmJiBqc0NoYW5uZWxEYXRhLT5sZW5ndGgoKSA9PSBjaGFubmVsLT5sZW5ndGgoKSkpCi0gICAg
ICAgICAgICAgICAgbWVtY3B5KGNoYW5uZWwtPm11dGFibGVTcGFuKCkuZGF0YSgpLCBqc0NoYW5u
ZWxEYXRhLT50eXBlZFZlY3RvcigpLCBzaXplb2YoZmxvYXQpICogY2hhbm5lbC0+bGVuZ3RoKCkp
OworICAgICAgICAgICAgICAgIG1lbWNweShjaGFubmVsLT5tdXRhYmxlRGF0YSgpLCBqc0NoYW5u
ZWxEYXRhLT50eXBlZFZlY3RvcigpLCBzaXplb2YoZmxvYXQpICogY2hhbm5lbC0+bGVuZ3RoKCkp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNoYW5uZWwtPnplcm8oKTsKICAg
ICAgICAgfQpAQCAtMTU5LDcgKzE1OSw3IEBAIHN0YXRpYyBib29sIGNvcHlEYXRhRnJvbUJ1c2Vz
VG9KU0FycmF5KEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvCiAgICAg
ICAgICAgICBhdXRvKiBqc0NoYW5uZWxBcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNGbG9hdDMyQXJy
YXkqPihqc0NoYW5uZWxzQXJyYXktPmdldEluZGV4KCZnbG9iYWxPYmplY3QsIGNoYW5uZWxJbmRl
eCkpOwogICAgICAgICAgICAgaWYgKCFqc0NoYW5uZWxBcnJheSB8fCBqc0NoYW5uZWxBcnJheS0+
bGVuZ3RoKCkgIT0gY2hhbm5lbC0+bGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgbWVtY3B5KGpzQ2hhbm5lbEFycmF5LT50eXBlZFZlY3RvcigpLCBj
aGFubmVsLT5tdXRhYmxlU3BhbigpLmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGpzQ2hhbm5lbEFy
cmF5LT5sZW5ndGgoKSk7CisgICAgICAgICAgICBtZW1jcHkoanNDaGFubmVsQXJyYXktPnR5cGVk
VmVjdG9yKCksIGNoYW5uZWwtPm11dGFibGVEYXRhKCksIHNpemVvZihmbG9hdCkgKiBqc0NoYW5u
ZWxBcnJheS0+bGVuZ3RoKCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpA
QCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyBib29sIGNvcHlEYXRhRnJvbVBhcmFtZXRlck1hcFRv
SlNPYmplY3QoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqCiAgICAgICAgIHVuc2ln
bmVkIGV4cGVjdGVkTGVuZ3RoID0gcGFpci52YWx1ZS0+Y29udGFpbnNDb25zdGFudFZhbHVlKCkg
PyAxIDogcGFpci52YWx1ZS0+c2l6ZSgpOwogICAgICAgICBpZiAoanNUeXBlZEFycmF5LT5sZW5n
dGgoKSAhPSBleHBlY3RlZExlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgbWVtY3B5KGpzVHlwZWRBcnJheS0+dHlwZWRWZWN0b3IoKSwgcGFpci52YWx1ZS0+c3Bhbigp
LmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGpzVHlwZWRBcnJheS0+bGVuZ3RoKCkpOworICAgICAg
ICBtZW1jcHkoanNUeXBlZEFycmF5LT50eXBlZFZlY3RvcigpLCBwYWlyLnZhbHVlLT5kYXRhKCks
IHNpemVvZihmbG9hdCkgKiBqc1R5cGVkQXJyYXktPmxlbmd0aCgpKTsKICAgICB9CiAgICAgcmV0
dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0JpcXVhZFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jp
cXVhZFByb2Nlc3Nvci5jcHAKaW5kZXggNmQ5ZTY4OWQwYmY1Li5mOWE1NDM0ZTg4MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5j
cHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEJpcXVhZFByb2Nlc3Nvcjo6cHJvY2Vzcyhjb25z
dCBBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpegogICAgICAgICAg
ICAgCiAgICAgLy8gRm9yIGVhY2ggY2hhbm5lbCBvZiBvdXIgaW5wdXQsIHByb2Nlc3MgdXNpbmcg
dGhlIGNvcnJlc3BvbmRpbmcgQmlxdWFkRFNQS2VybmVsIGludG8gdGhlIG91dHB1dCBjaGFubmVs
LgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2tlcm5lbHMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIG1fa2VybmVsc1tpXS0+cHJvY2Vzcyhzb3VyY2UtPmNoYW5uZWwoaSktPnNwYW4oKS5k
YXRhKCksIGRlc3RpbmF0aW9uLT5jaGFubmVsKGkpLT5tdXRhYmxlU3BhbigpLmRhdGEoKSwgZnJh
bWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgbV9rZXJuZWxzW2ldLT5wcm9jZXNzKHNvdXJjZS0+Y2hh
bm5lbChpKS0+ZGF0YSgpLCBkZXN0aW5hdGlvbi0+Y2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKSwg
ZnJhbWVzVG9Qcm9jZXNzKTsKIH0KIAogdm9pZCBCaXF1YWRQcm9jZXNzb3I6OnByb2Nlc3NPbmx5
QXVkaW9QYXJhbXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29uc3RhbnRTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29uc3RhbnRTb3VyY2VOb2RlLmNwcAppbmRleCA0ZDEy
ODM1ZTQ0ZDcuLjNjZGZhOTg0NDY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db25zdGFudFNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQ29uc3RhbnRTb3VyY2VOb2RlLmNwcApAQCAtODEsMTAgKzgxLDEwIEBA
IHZvaWQgQ29uc3RhbnRTb3VyY2VOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
CiAgICAgCiAgICAgYm9vbCBpc1NhbXBsZUFjY3VyYXRlID0gbV9vZmZzZXQtPmhhc1NhbXBsZUFj
Y3VyYXRlVmFsdWVzKCk7CiAgICAgaWYgKGlzU2FtcGxlQWNjdXJhdGUgJiYgbV9vZmZzZXQtPmF1
dG9tYXRpb25SYXRlKCkgPT0gQXV0b21hdGlvblJhdGU6OkFSYXRlKSB7Ci0gICAgICAgIGZsb2F0
KiBvZmZzZXRzID0gbV9zYW1wbGVBY2N1cmF0ZVZhbHVlcy5tdXRhYmxlU3BhbigpLmRhdGEoKTsK
KyAgICAgICAgZmxvYXQqIG9mZnNldHMgPSBtX3NhbXBsZUFjY3VyYXRlVmFsdWVzLmRhdGEoKTsK
ICAgICAgICAgbV9vZmZzZXQtPmNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlVmFsdWVzKG9mZnNldHMs
IGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAgICAgIGlmIChub25TaWxlbnRGcmFtZXNUb1Byb2Nlc3Mg
PiAwKSB7Ci0gICAgICAgICAgICBtZW1jcHkob3V0cHV0QnVzLmNoYW5uZWwoMCktPm11dGFibGVT
cGFuKCkuc3Vic3BhbihxdWFudHVtRnJhbWVPZmZzZXQpLmRhdGEoKSwgb2Zmc2V0cyArIHF1YW50
dW1GcmFtZU9mZnNldCwgbm9uU2lsZW50RnJhbWVzVG9Qcm9jZXNzICogc2l6ZW9mKCpvZmZzZXRz
KSk7CisgICAgICAgICAgICBtZW1jcHkob3V0cHV0QnVzLmNoYW5uZWwoMCktPm11dGFibGVEYXRh
KCkgKyBxdWFudHVtRnJhbWVPZmZzZXQsIG9mZnNldHMgKyBxdWFudHVtRnJhbWVPZmZzZXQsIG5v
blNpbGVudEZyYW1lc1RvUHJvY2VzcyAqIHNpemVvZigqb2Zmc2V0cykpOwogICAgICAgICAgICAg
b3V0cHV0QnVzLmNsZWFyU2lsZW50RmxhZygpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IG91dHB1dEJ1cy56ZXJvKCk7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgQ29uc3RhbnRTb3VyY2VO
b2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgaWYgKCF2YWx1ZSkKICAg
ICAgICAgb3V0cHV0QnVzLnplcm8oKTsKICAgICBlbHNlIHsKLSAgICAgICAgZmxvYXQqIGRlc3Qg
PSBvdXRwdXRCdXMuY2hhbm5lbCgwKS0+bXV0YWJsZVNwYW4oKS5kYXRhKCk7CisgICAgICAgIGZs
b2F0KiBkZXN0ID0gb3V0cHV0QnVzLmNoYW5uZWwoMCktPm11dGFibGVEYXRhKCk7CiAgICAgICAg
IHN0ZDo6ZmlsbF9uKGRlc3QgKyBxdWFudHVtRnJhbWVPZmZzZXQsIG5vblNpbGVudEZyYW1lc1Rv
UHJvY2VzcywgdmFsdWUpOwogICAgICAgICBvdXRwdXRCdXMuY2xlYXJTaWxlbnRGbGFnKCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheURT
UEtlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5RFNQS2Vy
bmVsLmNwcAppbmRleCBmOWNjNWEyNDg2MGEuLmI2MWI2ZGU1MThkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAKQEAgLTExNCw5
ICsxMTQsOSBAQCB2b2lkIERlbGF5RFNQS2VybmVsOjpwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3Vy
Y2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYQogdm9pZCBEZWxheURTUEtlcm5lbDo6
cHJvY2Vzc0FSYXRlKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgc2l6
ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKICAgICBzaXplX3QgYnVmZmVyTGVuZ3RoID0gbV9idWZm
ZXIuc2l6ZSgpOwotICAgIGF1dG8qIGJ1ZmZlciA9IG1fYnVmZmVyLm11dGFibGVTcGFuKCkuZGF0
YSgpOworICAgIGF1dG8qIGJ1ZmZlciA9IG1fYnVmZmVyLmRhdGEoKTsKIAotICAgIGRlbGF5UHJv
Y2Vzc29yKCktPmRlbGF5VGltZSgpLmNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlVmFsdWVzKG1fZGVs
YXlUaW1lcy5tdXRhYmxlU3BhbigpLmRhdGEoKSwgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICBkZWxh
eVByb2Nlc3NvcigpLT5kZWxheVRpbWUoKS5jYWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVZhbHVlcyht
X2RlbGF5VGltZXMuZGF0YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOwogCiAgICAgY29weVRvQ2lyY3Vs
YXJCdWZmZXIoYnVmZmVyLCBtX3dyaXRlSW5kZXgsIGJ1ZmZlckxlbmd0aCwgc291cmNlLCBmcmFt
ZXNUb1Byb2Nlc3MpOwogCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBEZWxheURTUEtlcm5lbDo6
cHJvY2Vzc0FSYXRlKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgc2l6
ZV8KIHZvaWQgRGVsYXlEU1BLZXJuZWw6OnByb2Nlc3NLUmF0ZShjb25zdCBmbG9hdCogc291cmNl
LCBmbG9hdCogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgc2l6
ZV90IGJ1ZmZlckxlbmd0aCA9IG1fYnVmZmVyLnNpemUoKTsKLSAgICBhdXRvKiBidWZmZXIgPSBt
X2J1ZmZlci5tdXRhYmxlU3BhbigpLmRhdGEoKTsKKyAgICBhdXRvKiBidWZmZXIgPSBtX2J1ZmZl
ci5kYXRhKCk7CiAKICAgICBkb3VibGUgZGVsYXlUaW1lID0gZGVsYXlQcm9jZXNzb3IoKSA/IGRl
bGF5UHJvY2Vzc29yKCktPmRlbGF5VGltZSgpLmZpbmFsVmFsdWUoKSA6IG1fZGVzaXJlZERlbGF5
RnJhbWVzIC8gc2FtcGxlUmF0ZSgpOwogICAgIC8vIE1ha2Ugc3VyZSB0aGUgZGVsYXkgdGltZSBp
cyBpbiBhIHZhbGlkIHJhbmdlLgpAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgRGVsYXlEU1BLZXJu
ZWw6OnByb2Nlc3NLUmF0ZShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24s
IHNpemVfCiAgICAgQVNTRVJUKGZyYW1lc1RvUHJvY2VzcyA8PSBtX3RlbXBCdWZmZXIuc2l6ZSgp
KTsKIAogICAgIHNpemVfdCByZWFkSW5kZXgyID0gKHJlYWRJbmRleDEgKyAxKSAlIGJ1ZmZlckxl
bmd0aDsKLSAgICBhdXRvKiBzYW1wbGUyID0gbV90ZW1wQnVmZmVyLm11dGFibGVTcGFuKCkuZGF0
YSgpOworICAgIGF1dG8qIHNhbXBsZTIgPSBtX3RlbXBCdWZmZXIuZGF0YSgpOwogCiAgICAgcmVh
ZFBvaW50ZXIgPSAmYnVmZmVyW3JlYWRJbmRleDJdOwogICAgIHJlbWFpbmRlciA9IHBvc2l0aXZl
U3VidHJhY3QoYnVmZmVyRW5kLCByZWFkUG9pbnRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4IDY4OTk5ZGI1YzBlOC4uMjA0NzkwMzMwMDU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcApAQCAt
ODAsNyArODAsNyBAQCB2b2lkIEdhaW5Ob2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpCiAgICAgICAgICAgICAvLyBBcHBseSBzYW1wbGUtYWNjdXJhdGUgZ2FpbiBzY2FsaW5nIGZv
ciBwcmVjaXNlIGVudmVsb3BlcywgZ3JhaW4gd2luZG93cywgZXRjLgogICAgICAgICAgICAgQVNT
RVJUKGZyYW1lc1RvUHJvY2VzcyA8PSBtX3NhbXBsZUFjY3VyYXRlR2FpblZhbHVlcy5zaXplKCkp
OwogICAgICAgICAgICAgaWYgKGZyYW1lc1RvUHJvY2VzcyA8PSBtX3NhbXBsZUFjY3VyYXRlR2Fp
blZhbHVlcy5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCogZ2FpblZhbHVlcyA9IG1f
c2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzLm11dGFibGVTcGFuKCkuZGF0YSgpOworICAgICAgICAg
ICAgICAgIGZsb2F0KiBnYWluVmFsdWVzID0gbV9zYW1wbGVBY2N1cmF0ZUdhaW5WYWx1ZXMuZGF0
YSgpOwogICAgICAgICAgICAgICAgIGdhaW4oKS5jYWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVZhbHVl
cyhnYWluVmFsdWVzLCBmcmFtZXNUb1Byb2Nlc3MpOwogICAgICAgICAgICAgICAgIG91dHB1dEJ1
cy0+Y29weVdpdGhTYW1wbGVBY2N1cmF0ZUdhaW5WYWx1ZXNGcm9tKCppbnB1dEJ1cywgZ2FpblZh
bHVlcywgZnJhbWVzVG9Qcm9jZXNzKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vSUlSUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vSUlSUHJvY2Vzc29yLmNwcAppbmRleCBkNzNhMjc0OTcxYTUu
LjY1YjQyNzMwOWEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9JSVJQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
SUlSUHJvY2Vzc29yLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIElJUlByb2Nlc3Nvcjo6cHJv
Y2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVf
dAogICAgIC8vIEZvciBlYWNoIGNoYW5uZWwgb2Ygb3VyIGlucHV0LCBwcm9jZXNzIHVzaW5nIHRo
ZSBjb3JyZXNwb25kaW5nIElJUkRTUEtlcm5lbAogICAgIC8vIGludG8gdGhlIG91dHB1dCBjaGFu
bmVsLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9rZXJuZWxzLnNpemUoKTsgKytpKQot
ICAgICAgICBtX2tlcm5lbHNbaV0tPnByb2Nlc3Moc291cmNlLT5jaGFubmVsKGkpLT5zcGFuKCku
ZGF0YSgpLCBkZXN0aW5hdGlvbi0+Y2hhbm5lbChpKS0+bXV0YWJsZVNwYW4oKS5kYXRhKCksIGZy
YW1lc1RvUHJvY2Vzcyk7CisgICAgICAgIG1fa2VybmVsc1tpXS0+cHJvY2Vzcyhzb3VyY2UtPmNo
YW5uZWwoaSktPmRhdGEoKSwgZGVzdGluYXRpb24tPmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCks
IGZyYW1lc1RvUHJvY2Vzcyk7CiB9CiAKIHZvaWQgSUlSUHJvY2Vzc29yOjpnZXRGcmVxdWVuY3lS
ZXNwb25zZSh1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IGZsb2F0KiBmcmVxdWVuY3lIeiwgZmxvYXQq
IG1hZ1Jlc3BvbnNlLCBmbG9hdCogcGhhc2VSZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNv
Y29hLmNwcAppbmRleCA5MTAwOTIwODdjMGUuLmE0MTI4NjIxZjFlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlQ29jb2Eu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZUNvY29hLmNwcApAQCAtNTksNyArNTksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29w
eUNoYW5uZWxEYXRhKEF1ZGlvQ2hhbm5lbCYgY2hhbm5lbCwgQXVkaW9CdWZmZXImIGJ1ZmZlciwg
cwogICAgICAgICBtZW1zZXQoYnVmZmVyLm1EYXRhLCAwLCBidWZmZXIubURhdGFCeXRlU2l6ZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbWVtY3B5KGJ1ZmZlci5tRGF0YSwgY2hhbm5l
bC5zcGFuKCkuZGF0YSgpLCBidWZmZXIubURhdGFCeXRlU2l6ZSk7CisgICAgbWVtY3B5KGJ1ZmZl
ci5tRGF0YSwgY2hhbm5lbC5kYXRhKCksIGJ1ZmZlci5tRGF0YUJ5dGVTaXplKTsKIH0KIAogdm9p
ZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVkaW8oQXVkaW9CdXMmIGJ1cywgc2l6
ZV90IG51bWJlck9mRnJhbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAK
aW5kZXggOGE1ZjE4MWQ0ZTVhLi42ZTcwMGM0ZjY2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291
cmNlR1N0cmVhbWVyLmNwcApAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgdm9pZCBjb3B5QnVzRGF0
YShBdWRpb0J1cyYgYnVzLCBHc3RCdWZmZXIqIGJ1ZmZlciwgYm9vbCBpc011dGVkKQogICAgIGZv
ciAoc2l6ZV90IGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IGJ1cy5udW1iZXJPZkNo
YW5uZWxzKCk7ICsrY2hhbm5lbEluZGV4KSB7CiAgICAgICAgIGNvbnN0IGF1dG8mIGNoYW5uZWwg
PSAqYnVzLmNoYW5uZWwoY2hhbm5lbEluZGV4KTsKICAgICAgICAgYXV0byBkYXRhU2l6ZSA9IHNp
emVvZihmbG9hdCkgKiBjaGFubmVsLmxlbmd0aCgpOwotICAgICAgICBtZW1jcHkobWFwcGVkQnVm
ZmVyLmRhdGEoKSArIG9mZnNldCwgY2hhbm5lbC5zcGFuKCkuZGF0YSgpLCBkYXRhU2l6ZSk7Cisg
ICAgICAgIG1lbWNweShtYXBwZWRCdWZmZXIuZGF0YSgpICsgb2Zmc2V0LCBjaGFubmVsLmRhdGEo
KSwgZGF0YVNpemUpOwogICAgICAgICBvZmZzZXQgKz0gZGF0YVNpemU7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDQzOWVjY2FlZTI2YS4uZmU4Nzc2NDBjZDZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgYXV0
byBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlbmRlck9uQXVkaW9UaHJlYWQoKSAtPiBS
ZW5kZXJSZXN1bHQKICAgICAgICAgc2l6ZV90IGZyYW1lc0F2YWlsYWJsZVRvQ29weSA9IHN0ZDo6
bWluKG1fZnJhbWVzVG9Qcm9jZXNzLCBBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemUp
OwogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGFubmVsSW5kZXggPSAwOyBjaGFu
bmVsSW5kZXggPCBudW1iZXJPZkNoYW5uZWxzOyArK2NoYW5uZWxJbmRleCkgewotICAgICAgICAg
ICAgY29uc3QgZmxvYXQqIHNvdXJjZSA9IG1fcmVuZGVyQnVzLT5jaGFubmVsKGNoYW5uZWxJbmRl
eCktPnNwYW4oKS5kYXRhKCk7CisgICAgICAgICAgICBjb25zdCBmbG9hdCogc291cmNlID0gbV9y
ZW5kZXJCdXMtPmNoYW5uZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOwogICAgICAgICAgICAgZmxv
YXQqIGRlc3RpbmF0aW9uID0gbV9yZW5kZXJUYXJnZXQtPmNoYW5uZWxEYXRhKGNoYW5uZWxJbmRl
eCktPmRhdGEoKTsKICAgICAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiArIG1fZGVzdGluYXRp
b25PZmZzZXQsIHNvdXJjZSwgc2l6ZW9mKGZsb2F0KSAqIGZyYW1lc0F2YWlsYWJsZVRvQ29weSk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T3NjaWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2Np
bGxhdG9yTm9kZS5jcHAKaW5kZXggYjc1MjZkODk5MzZiLi5jNjhhY2E2ZjRjYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCkBA
IC0xMzAsNyArMTMwLDcgQEAgYm9vbCBPc2NpbGxhdG9yTm9kZTo6Y2FsY3VsYXRlU2FtcGxlQWNj
dXJhdGVQaGFzZUluY3JlbWVudHMoc2l6ZV90IGZyYW1lc1RvUHJvY2UKIAogICAgIGJvb2wgaGFz
U2FtcGxlQWNjdXJhdGVWYWx1ZXMgPSBmYWxzZTsKICAgICBib29sIGhhc0ZyZXF1ZW5jeUNoYW5n
ZXMgPSBmYWxzZTsKLSAgICBmbG9hdCogcGhhc2VJbmNyZW1lbnRzID0gbV9waGFzZUluY3JlbWVu
dHMubXV0YWJsZVNwYW4oKS5kYXRhKCk7CisgICAgZmxvYXQqIHBoYXNlSW5jcmVtZW50cyA9IG1f
cGhhc2VJbmNyZW1lbnRzLmRhdGEoKTsKIAogICAgIGZsb2F0IGZpbmFsU2NhbGUgPSBtX3Blcmlv
ZGljV2F2ZS0+cmF0ZVNjYWxlKCk7CiAKQEAgLTE1MCw3ICsxNTAsNyBAQCBib29sIE9zY2lsbGF0
b3JOb2RlOjpjYWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVBoYXNlSW5jcmVtZW50cyhzaXplX3QgZnJh
bWVzVG9Qcm9jZQogICAgICAgICBoYXNTYW1wbGVBY2N1cmF0ZVZhbHVlcyA9IHRydWU7CiAKICAg
ICAgICAgLy8gR2V0IHRoZSBzYW1wbGUtYWNjdXJhdGUgZGV0dW5lIHZhbHVlcy4KLSAgICAgICAg
ZmxvYXQqIGRldHVuZVZhbHVlcyA9IGhhc0ZyZXF1ZW5jeUNoYW5nZXMgPyBtX2RldHVuZVZhbHVl
cy5tdXRhYmxlU3BhbigpLmRhdGEoKSA6IHBoYXNlSW5jcmVtZW50czsKKyAgICAgICAgZmxvYXQq
IGRldHVuZVZhbHVlcyA9IGhhc0ZyZXF1ZW5jeUNoYW5nZXMgPyBtX2RldHVuZVZhbHVlcy5kYXRh
KCkgOiBwaGFzZUluY3JlbWVudHM7CiAgICAgICAgIG1fZGV0dW5lLT5jYWxjdWxhdGVTYW1wbGVB
Y2N1cmF0ZVZhbHVlcyhkZXR1bmVWYWx1ZXMsIGZyYW1lc1RvUHJvY2Vzcyk7CiAKICAgICAgICAg
Ly8gQ29udmVydCBmcm9tIGNlbnRzIHRvIHJhdGUgc2NhbGFyLgpAQCAtMzc1LDcgKzM3NSw3IEBA
IHZvaWQgT3NjaWxsYXRvck5vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGZsb2F0KiBkZXN0UCA9IG91dHB1dEJ1cy5jaGFu
bmVsKDApLT5tdXRhYmxlU3BhbigpLmRhdGEoKTsKKyAgICBmbG9hdCogZGVzdFAgPSBvdXRwdXRC
dXMuY2hhbm5lbCgwKS0+bXV0YWJsZURhdGEoKTsKIAogICAgIEFTU0VSVChxdWFudHVtRnJhbWVP
ZmZzZXQgPD0gZnJhbWVzVG9Qcm9jZXNzKTsKIApAQCAtMzk5LDcgKzM5OSw3IEBAIHZvaWQgT3Nj
aWxsYXRvck5vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICAgICAgbV9w
ZXJpb2RpY1dhdmUtPndhdmVEYXRhRm9yRnVuZGFtZW50YWxGcmVxdWVuY3koZnJlcXVlbmN5LCBs
b3dlcldhdmVEYXRhLCBoaWdoZXJXYXZlRGF0YSwgdGFibGVJbnRlcnBvbGF0aW9uRmFjdG9yKTsK
ICAgICB9CiAKLSAgICBmbG9hdCogcGhhc2VJbmNyZW1lbnRzID0gbV9waGFzZUluY3JlbWVudHMu
bXV0YWJsZVNwYW4oKS5kYXRhKCk7CisgICAgZmxvYXQqIHBoYXNlSW5jcmVtZW50cyA9IG1fcGhh
c2VJbmNyZW1lbnRzLmRhdGEoKTsKIAogICAgIC8vIFN0YXJ0IHJlbmRlcmluZyBhdCB0aGUgY29y
cmVjdCBvZmZzZXQuCiAgICAgZGVzdFAgKz0gcXVhbnR1bUZyYW1lT2Zmc2V0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwCmluZGV4IDNlNDAx
NmZiMzBmYi4uNmQyYzJjMDAzOWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwCkBAIC0xNTQsOCArMTU0LDggQEAgdm9pZCBQZXJpb2Rp
Y1dhdmU6OndhdmVEYXRhRm9yRnVuZGFtZW50YWxGcmVxdWVuY3koZmxvYXQgZnVuZGFtZW50YWxG
cmVxdWVuY3ksIGYKICAgICB1bnNpZ25lZCByYW5nZUluZGV4MSA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihwaXRjaFJhbmdlKTsKICAgICB1bnNpZ25lZCByYW5nZUluZGV4MiA9IHJhbmdlSW5kZXgx
IDwgbV9udW1iZXJPZlJhbmdlcyAtIDEgPyByYW5nZUluZGV4MSArIDEgOiByYW5nZUluZGV4MTsK
IAotICAgIGxvd2VyV2F2ZURhdGEgPSBtX2JhbmRMaW1pdGVkVGFibGVzW3JhbmdlSW5kZXgyXS0+
bXV0YWJsZVNwYW4oKS5kYXRhKCk7Ci0gICAgaGlnaGVyV2F2ZURhdGEgPSBtX2JhbmRMaW1pdGVk
VGFibGVzW3JhbmdlSW5kZXgxXS0+bXV0YWJsZVNwYW4oKS5kYXRhKCk7CisgICAgbG93ZXJXYXZl
RGF0YSA9IG1fYmFuZExpbWl0ZWRUYWJsZXNbcmFuZ2VJbmRleDJdLT5kYXRhKCk7CisgICAgaGln
aGVyV2F2ZURhdGEgPSBtX2JhbmRMaW1pdGVkVGFibGVzW3JhbmdlSW5kZXgxXS0+ZGF0YSgpOwog
ICAgIAogICAgIC8vIFJhbmdlcyBmcm9tIDAgLT4gMSB0byBpbnRlcnBvbGF0ZSBiZXR3ZWVuIGxv
d2VyIC0+IGhpZ2hlci4KICAgICB0YWJsZUludGVycG9sYXRpb25GYWN0b3IgPSBwaXRjaFJhbmdl
IC0gcmFuZ2VJbmRleDE7CkBAIC0yMDQsOCArMjA0LDggQEAgdm9pZCBQZXJpb2RpY1dhdmU6OmNy
ZWF0ZUJhbmRMaW1pdGVkVGFibGVzKGNvbnN0IGZsb2F0KiByZWFsRGF0YSwgY29uc3QgZmxvYXQq
IGkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW1hZ1Auc2l6ZSgpID49IG51bWJlck9mQ29tcG9u
ZW50cyk7CiAKICAgICAgICAgLy8gQ29weSBmcm9tIGxvYWRlZCBmcmVxdWVuY3kgZGF0YSBhbmQg
c2NhbGUuCi0gICAgICAgIFZlY3Rvck1hdGg6Om11bHRpcGx5QnlTY2FsYXIocmVhbERhdGEsIGZm
dFNpemUsIHJlYWxQLm11dGFibGVTcGFuKCkuZGF0YSgpLCBudW1iZXJPZkNvbXBvbmVudHMpOwot
ICAgICAgICBWZWN0b3JNYXRoOjptdWx0aXBseUJ5U2NhbGFyKGltYWdEYXRhLCAtc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGZmdFNpemUpLCBpbWFnUC5tdXRhYmxlU3BhbigpLmRhdGEoKSwgbnVtYmVyT2ZD
b21wb25lbnRzKTsKKyAgICAgICAgVmVjdG9yTWF0aDo6bXVsdGlwbHlCeVNjYWxhcihyZWFsRGF0
YSwgZmZ0U2l6ZSwgcmVhbFAuZGF0YSgpLCBudW1iZXJPZkNvbXBvbmVudHMpOworICAgICAgICBW
ZWN0b3JNYXRoOjptdWx0aXBseUJ5U2NhbGFyKGltYWdEYXRhLCAtc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGZmdFNpemUpLCBpbWFnUC5kYXRhKCksIG51bWJlck9mQ29tcG9uZW50cyk7CiAKICAgICAgICAg
Ly8gRmluZCB0aGUgc3RhcnRpbmcgYmluIHdoZXJlIHdlIHNob3VsZCBzdGFydCBjdWxsaW5nLgog
ICAgICAgICAvLyBXZSBuZWVkIHRvIGNsZWFyIG91dCB0aGUgaGlnaGVzdCBmcmVxdWVuY2llcyB0
byBiYW5kLWxpbWl0IHRoZSB3YXZlZm9ybS4KQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIFBlcmlv
ZGljV2F2ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMoY29uc3QgZmxvYXQqIHJlYWxEYXRhLCBj
b25zdCBmbG9hdCogaQogICAgICAgICBtX2JhbmRMaW1pdGVkVGFibGVzLmFwcGVuZChtYWtlVW5p
cXVlPEF1ZGlvRmxvYXRBcnJheT4od2F2ZVNpemUpKTsKIAogICAgICAgICAvLyBBcHBseSBhbiBp
bnZlcnNlIEZGVCB0byBnZW5lcmF0ZSB0aGUgdGltZS1kb21haW4gdGFibGUgZGF0YS4KLSAgICAg
ICAgZmxvYXQqIGRhdGEgPSBtX2JhbmRMaW1pdGVkVGFibGVzW3JhbmdlSW5kZXhdLT5tdXRhYmxl
U3BhbigpLmRhdGEoKTsKKyAgICAgICAgZmxvYXQqIGRhdGEgPSBtX2JhbmRMaW1pdGVkVGFibGVz
W3JhbmdlSW5kZXhdLT5kYXRhKCk7CiAgICAgICAgIGZyYW1lLmRvSW52ZXJzZUZGVChkYXRhKTsK
IAogICAgICAgICAvLyBGb3IgdGhlIGZpcnN0IHJhbmdlICh3aGljaCBoYXMgdGhlIGhpZ2hlc3Qg
cG93ZXIpLCBjYWxjdWxhdGUgaXRzIHBlYWsgdmFsdWUgdGhlbiBjb21wdXRlIG5vcm1hbGl6YXRp
b24gc2NhbGUuCkBAIC0yNTUsOCArMjU1LDggQEAgdm9pZCBQZXJpb2RpY1dhdmU6OmdlbmVyYXRl
QmFzaWNXYXZlZm9ybShUeXBlIHNoYXBlKQogCiAgICAgQXVkaW9GbG9hdEFycmF5IHJlYWwoaGFs
ZlNpemUpOwogICAgIEF1ZGlvRmxvYXRBcnJheSBpbWFnKGhhbGZTaXplKTsKLSAgICBmbG9hdCog
cmVhbFAgPSByZWFsLm11dGFibGVTcGFuKCkuZGF0YSgpOwotICAgIGZsb2F0KiBpbWFnUCA9IGlt
YWcubXV0YWJsZVNwYW4oKS5kYXRhKCk7CisgICAgZmxvYXQqIHJlYWxQID0gcmVhbC5kYXRhKCk7
CisgICAgZmxvYXQqIGltYWdQID0gaW1hZy5kYXRhKCk7CiAKICAgICAvLyBDbGVhciBEQyBhbmQg
TnlxdWlzdC4KICAgICByZWFsUFswXSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAppbmRleCAzNDQ0MzZkODMwYzkuLjA4
MzY4ZTQyYjE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9S
ZWFsdGltZUFuYWx5c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1JlYWx0aW1lQW5hbHlzZXIuY3BwCkBAIC04NywxMyArODcsMTMgQEAgdm9pZCBSZWFsdGltZUFu
YWx5c2VyOjp3cml0ZUlucHV0KEF1ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
CiAgICAgICAgIHJldHVybjsgICAgCiAgICAgCiAgICAgLy8gUGVyZm9ybSByZWFsLXRpbWUgYW5h
bHlzaXMKLSAgICBhdXRvIGRlc3QgPSBtX2lucHV0QnVmZmVyLm11dGFibGVTcGFuKCkuc3Vic3Bh
bihtX3dyaXRlSW5kZXgsIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgZmxvYXQqIGRlc3QgPSBtX2lu
cHV0QnVmZmVyLmRhdGEoKSArIG1fd3JpdGVJbmRleDsKIAogICAgIC8vIENsZWFyIHRoZSBidXMg
YW5kIGRvd25taXggdGhlIGlucHV0IGFjY29yZGluZyB0byB0aGUgZG93biBtaXhpbmcgcnVsZXMu
CiAgICAgLy8gVGhlbiBzYXZlIHRoZSByZXN1bHQgaW4gdGhlIG1faW5wdXRCdWZmZXIgYXQgdGhl
IGFwcHJvcHJpYXRlIHBsYWNlLgogICAgIG1fZG93bm1peEJ1cy0+emVybygpOwogICAgIG1fZG93
bm1peEJ1cy0+c3VtRnJvbSgqYnVzKTsKLSAgICBtZW1jcHlTcGFuKGRlc3QsIG1fZG93bm1peEJ1
cy0+Y2hhbm5lbCgwKS0+c3BhbigpLmZpcnN0KGZyYW1lc1RvUHJvY2VzcykpOworICAgIG1lbWNw
eShkZXN0LCBtX2Rvd25taXhCdXMtPmNoYW5uZWwoMCktPmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAq
IGZyYW1lc1RvUHJvY2Vzcyk7CiAKICAgICBtX3dyaXRlSW5kZXggKz0gZnJhbWVzVG9Qcm9jZXNz
OwogICAgIGlmIChtX3dyaXRlSW5kZXggPj0gSW5wdXRCdWZmZXJTaXplKQpAQCAtMTM3LDIzICsx
MzcsMjMgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpkb0ZGVEFuYWx5c2lzSWZOZWNlc3Nhcnko
KQogICAgIHNpemVfdCBmZnRTaXplID0gdGhpcy0+ZmZ0U2l6ZSgpOwogICAgIAogICAgIEF1ZGlv
RmxvYXRBcnJheSB0ZW1wb3JhcnlCdWZmZXIoZmZ0U2l6ZSk7Ci0gICAgYXV0byBpbnB1dEJ1ZmZl
ciA9IG1faW5wdXRCdWZmZXIuc3BhbigpOwotICAgIGF1dG8gdGVtcFAgPSB0ZW1wb3JhcnlCdWZm
ZXIubXV0YWJsZVNwYW4oKTsKKyAgICBmbG9hdCogaW5wdXRCdWZmZXIgPSBtX2lucHV0QnVmZmVy
LmRhdGEoKTsKKyAgICBmbG9hdCogdGVtcFAgPSB0ZW1wb3JhcnlCdWZmZXIuZGF0YSgpOwogCiAg
ICAgLy8gVGFrZSB0aGUgcHJldmlvdXMgZmZ0U2l6ZSB2YWx1ZXMgZnJvbSB0aGUgaW5wdXQgYnVm
ZmVyIGFuZCBjb3B5IGludG8gdGhlIHRlbXBvcmFyeSBidWZmZXIuCiAgICAgdW5zaWduZWQgd3Jp
dGVJbmRleCA9IG1fd3JpdGVJbmRleDsKICAgICBpZiAod3JpdGVJbmRleCA8IGZmdFNpemUpIHsK
LSAgICAgICAgbWVtY3B5U3Bhbih0ZW1wUC5maXJzdChmZnRTaXplIC0gd3JpdGVJbmRleCksIGlu
cHV0QnVmZmVyLnN1YnNwYW4od3JpdGVJbmRleCAtIGZmdFNpemUgKyBJbnB1dEJ1ZmZlclNpemUs
IGZmdFNpemUgLSB3cml0ZUluZGV4KSk7Ci0gICAgICAgIG1lbWNweVNwYW4odGVtcFAuc3Vic3Bh
bihmZnRTaXplIC0gd3JpdGVJbmRleCwgd3JpdGVJbmRleCksIGlucHV0QnVmZmVyLmZpcnN0KHdy
aXRlSW5kZXgpKTsKKyAgICAgICAgbWVtY3B5KHRlbXBQLCBpbnB1dEJ1ZmZlciArIHdyaXRlSW5k
ZXggLSBmZnRTaXplICsgSW5wdXRCdWZmZXJTaXplLCBzaXplb2YoKnRlbXBQKSAqIChmZnRTaXpl
IC0gd3JpdGVJbmRleCkpOworICAgICAgICBtZW1jcHkodGVtcFAgKyBmZnRTaXplIC0gd3JpdGVJ
bmRleCwgaW5wdXRCdWZmZXIsIHNpemVvZigqdGVtcFApICogd3JpdGVJbmRleCk7CiAgICAgfSBl
bHNlIAotICAgICAgICBtZW1jcHlTcGFuKHRlbXBQLmZpcnN0KGZmdFNpemUpLCBpbnB1dEJ1ZmZl
ci5zdWJzcGFuKHdyaXRlSW5kZXggLSBmZnRTaXplLCBmZnRTaXplKSk7CisgICAgICAgIG1lbWNw
eSh0ZW1wUCwgaW5wdXRCdWZmZXIgKyB3cml0ZUluZGV4IC0gZmZ0U2l6ZSwgc2l6ZW9mKCp0ZW1w
UCkgKiBmZnRTaXplKTsKIAogICAgIAogICAgIC8vIFdpbmRvdyB0aGUgaW5wdXQgc2FtcGxlcy4K
LSAgICBhcHBseVdpbmRvdyh0ZW1wUC5kYXRhKCksIGZmdFNpemUpOworICAgIGFwcGx5V2luZG93
KHRlbXBQLCBmZnRTaXplKTsKICAgICAKICAgICAvLyBEbyB0aGUgYW5hbHlzaXMuCi0gICAgbV9h
bmFseXNpc0ZyYW1lLT5kb0ZGVCh0ZW1wUC5kYXRhKCkpOworICAgIG1fYW5hbHlzaXNGcmFtZS0+
ZG9GRlQodGVtcFApOwogCiAgICAgYXV0byYgcmVhbFAgPSBtX2FuYWx5c2lzRnJhbWUtPnJlYWxE
YXRhKCk7CiAgICAgYXV0byYgaW1hZ1AgPSBtX2FuYWx5c2lzRnJhbWUtPmltYWdEYXRhKCk7CkBA
IC0xNzAsNyArMTcwLDcgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpkb0ZGVEFuYWx5c2lzSWZO
ZWNlc3NhcnkoKQogICAgIGsgPSBzdGQ6Om1pbigxLjAsIGspOyAgICAKICAgICAKICAgICAvLyBD
b252ZXJ0IHRoZSBhbmFseXNpcyBkYXRhIGZyb20gY29tcGxleCB0byBtYWduaXR1ZGUgYW5kIGF2
ZXJhZ2Ugd2l0aCB0aGUgcHJldmlvdXMgcmVzdWx0LgotICAgIGF1dG8gZGVzdGluYXRpb24gPSBt
YWduaXR1ZGVCdWZmZXIoKS5tdXRhYmxlU3BhbigpOworICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9
IG1hZ25pdHVkZUJ1ZmZlcigpLmRhdGEoKTsKICAgICBzaXplX3QgbiA9IG1hZ25pdHVkZUJ1ZmZl
cigpLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAg
ICBzdGQ6OmNvbXBsZXg8ZG91YmxlPiBjKHJlYWxQW2ldLCBpbWFnUFtpXSk7CkBAIC0xNzksNyAr
MTc5LDcgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpkb0ZGVEFuYWx5c2lzSWZOZWNlc3Nhcnko
KQogICAgIH0KIAogICAgIGlmIChtX25vaXNlSW5qZWN0aW9uUG9saWN5ID09IE5vaXNlSW5qZWN0
aW9uUG9saWN5OjpNaW5pbWFsKQotICAgICAgICBBdWRpb1V0aWxpdGllczo6YXBwbHlOb2lzZShk
ZXN0aW5hdGlvbi5kYXRhKCksIG4sIDAuMjUpOworICAgICAgICBBdWRpb1V0aWxpdGllczo6YXBw
bHlOb2lzZShkZXN0aW5hdGlvbiwgbiwgMC4yNSk7CiB9CiAKIHZvaWQgUmVhbHRpbWVBbmFseXNl
cjo6Z2V0RmxvYXRGcmVxdWVuY3lEYXRhKEZsb2F0MzJBcnJheSYgZGVzdGluYXRpb25BcnJheSkK
QEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0RnJlcXVl
bmN5RGF0YShGbG9hdDMyQXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiAgICAgCiAgICAgLy8gQ29u
dmVydCBmcm9tIGxpbmVhciBtYWduaXR1ZGUgdG8gZmxvYXRpbmctcG9pbnQgZGVjaWJlbHMuCiAg
ICAgc2l6ZV90IGxlbmd0aCA9IHN0ZDo6bWluPHNpemVfdD4obWFnbml0dWRlQnVmZmVyKCkuc2l6
ZSgpLCBkZXN0aW5hdGlvbkFycmF5Lmxlbmd0aCgpKTsKLSAgICBWZWN0b3JNYXRoOjpsaW5lYXJU
b0RlY2liZWxzKG1hZ25pdHVkZUJ1ZmZlcigpLm11dGFibGVTcGFuKCkuZGF0YSgpLCBkZXN0aW5h
dGlvbkFycmF5LmRhdGEoKSwgbGVuZ3RoKTsKKyAgICBWZWN0b3JNYXRoOjpsaW5lYXJUb0RlY2li
ZWxzKG1hZ25pdHVkZUJ1ZmZlcigpLmRhdGEoKSwgZGVzdGluYXRpb25BcnJheS5kYXRhKCksIGxl
bmd0aCk7CiB9CiAKIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZUZyZXF1ZW5jeURhdGEo
VWludDhBcnJheSYgZGVzdGluYXRpb25BcnJheSkKQEAgLTIwNyw4ICsyMDcsOCBAQCB2b2lkIFJl
YWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0
aW9uQXJyYXkpCiAgICAgICAgIGNvbnN0IGRvdWJsZSByYW5nZVNjYWxlRmFjdG9yID0gbV9tYXhE
ZWNpYmVscyA9PSBtX21pbkRlY2liZWxzID8gMSA6IDEgLyAobV9tYXhEZWNpYmVscyAtIG1fbWlu
RGVjaWJlbHMpOwogICAgICAgICBjb25zdCBkb3VibGUgbWluRGVjaWJlbHMgPSBtX21pbkRlY2li
ZWxzOwogCi0gICAgICAgIGF1dG8gc291cmNlID0gbWFnbml0dWRlQnVmZmVyKCkuc3BhbigpOwot
ICAgICAgICBhdXRvIGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb25BcnJheS5tdXRhYmxlU3Bhbigp
OworICAgICAgICBjb25zdCBmbG9hdCogc291cmNlID0gbWFnbml0dWRlQnVmZmVyKCkuZGF0YSgp
OworICAgICAgICB1bnNpZ25lZCBjaGFyKiBkZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uQXJyYXku
ZGF0YSgpOwogICAgICAgICAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgewogICAgICAgICAgICAgZmxvYXQgbGluZWFyVmFsdWUgPSBzb3VyY2VbaV07CkBAIC0y
NDEsOCArMjQxLDggQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpnZXRGbG9hdFRpbWVEb21haW5E
YXRhKEZsb2F0MzJBcnJheSYgZGVzdGluYXRpb25BcnJheSkKICAgICAgICAgaWYgKCFpc0lucHV0
QnVmZmVyR29vZCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIGF1dG8g
aW5wdXRCdWZmZXIgPSBtX2lucHV0QnVmZmVyLnNwYW4oKTsKLSAgICAgICAgYXV0byBkZXN0aW5h
dGlvbiA9IGRlc3RpbmF0aW9uQXJyYXkubXV0YWJsZVNwYW4oKTsKKyAgICAgICAgZmxvYXQqIGlu
cHV0QnVmZmVyID0gbV9pbnB1dEJ1ZmZlci5kYXRhKCk7CisgICAgICAgIGZsb2F0KiBkZXN0aW5h
dGlvbiA9IGRlc3RpbmF0aW9uQXJyYXkuZGF0YSgpOwogICAgICAgICAKICAgICAgICAgdW5zaWdu
ZWQgd3JpdGVJbmRleCA9IG1fd3JpdGVJbmRleDsKICAgICAgICAgCkBAIC0yNjYsNyArMjY2LDcg
QEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlVGltZURvbWFpbkRhdGEoVWludDhBcnJh
eSYgZGVzdGluYXRpb25BcnJheSkKICAgICAgICAgaWYgKCFpc0lucHV0QnVmZmVyR29vZCkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIGlucHV0QnVmZmVyID0gbV9pbnB1dEJ1
ZmZlci5zcGFuKCk7CisgICAgICAgIGZsb2F0KiBpbnB1dEJ1ZmZlciA9IG1faW5wdXRCdWZmZXIu
ZGF0YSgpOyAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRlc3RpbmF0aW9uID0gZGVz
dGluYXRpb25BcnJheS5kYXRhKCk7CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCB3cml0ZUlu
ZGV4ID0gbV93cml0ZUluZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggOTNhOWQ2Zjk4ZWNjLi4xMDk1
OTBhMDZmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2Ny
aXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgU2NyaXB0
UHJvY2Vzc29yTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogCiAgICAgLy8g
Q29weSBmcm9tIHRoZSBvdXRwdXQgYnVmZmVyIHRvIHRoZSBvdXRwdXQuIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZk91dHB1dENoYW5uZWxzOyArK2kpCi0gICAgICAgIG1l
bWNweShvdXRwdXRCdXMtPmNoYW5uZWwoaSktPm11dGFibGVTcGFuKCkuZGF0YSgpLCBvdXRwdXRC
dWZmZXItPnJhd0NoYW5uZWxEYXRhKGkpICsgbV9idWZmZXJSZWFkV3JpdGVJbmRleCwgc2l6ZW9m
KGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgICAgIG1lbWNweShvdXRwdXRCdXMtPmNo
YW5uZWwoaSktPm11dGFibGVEYXRhKCksIG91dHB1dEJ1ZmZlci0+cmF3Q2hhbm5lbERhdGEoaSkg
KyBtX2J1ZmZlclJlYWRXcml0ZUluZGV4LCBzaXplb2YoZmxvYXQpICogZnJhbWVzVG9Qcm9jZXNz
KTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgYnVmZmVyaW5nIGluZGV4LgogICAgIG1fYnVmZmVyUmVh
ZFdyaXRlSW5kZXggPSAobV9idWZmZXJSZWFkV3JpdGVJbmRleCArIGZyYW1lc1RvUHJvY2Vzcykg
JSBidWZmZXJTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1N0ZXJlb1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9TdGVyZW9QYW5uZXJOb2RlLmNwcAppbmRleCBkYmVlY2VmZjE1NDYuLmFkZTE3YjY3ZTliNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TdGVyZW9QYW5uZXJO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1N0ZXJlb1Bhbm5l
ck5vZGUuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgU3RlcmVvUGFubmVyTm9kZTo6cHJvY2Vz
cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgIH0KIAogICAgIGlmIChtX3Bhbi0+aGFzU2Ft
cGxlQWNjdXJhdGVWYWx1ZXMoKSAmJiBtX3Bhbi0+YXV0b21hdGlvblJhdGUoKSA9PSBBdXRvbWF0
aW9uUmF0ZTo6QVJhdGUpIHsKLSAgICAgICAgZmxvYXQqIHBhblZhbHVlcyA9IG1fc2FtcGxlQWNj
dXJhdGVWYWx1ZXMubXV0YWJsZVNwYW4oKS5kYXRhKCk7CisgICAgICAgIGZsb2F0KiBwYW5WYWx1
ZXMgPSBtX3NhbXBsZUFjY3VyYXRlVmFsdWVzLmRhdGEoKTsKICAgICAgICAgbV9wYW4tPmNhbGN1
bGF0ZVNhbXBsZUFjY3VyYXRlVmFsdWVzKHBhblZhbHVlcywgZnJhbWVzVG9Qcm9jZXNzKTsKICAg
ICAgICAgU3RlcmVvUGFubmVyOjpwYW5XaXRoU2FtcGxlQWNjdXJhdGVWYWx1ZXMoc291cmNlLCBk
ZXN0aW5hdGlvbiwgcGFuVmFsdWVzLCBmcmFtZXNUb1Byb2Nlc3MpOwogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJE
U1BLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
RFNQS2VybmVsLmNwcAppbmRleCA0YmI1NGVkNzY5MWMuLjkzNmI0MTAxMjFiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJu
ZWwuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBXYXZlU2hhcGVyRFNQS2VybmVsOjpwcm9j
ZXNzQ3VydmUyeChjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24KICAgICBp
ZiAoIWlzU2FmZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZmxvYXQqIHRlbXBQID0gbV90ZW1w
QnVmZmVyLT5tdXRhYmxlU3BhbigpLmRhdGEoKTsKKyAgICBmbG9hdCogdGVtcFAgPSBtX3RlbXBC
dWZmZXItPmRhdGEoKTsKIAogICAgIG1fdXBTYW1wbGVyLT5wcm9jZXNzKHNvdXJjZSwgdGVtcFAs
IGZyYW1lc1RvUHJvY2Vzcyk7CiAKQEAgLTE0MSw4ICsxNDEsOCBAQCB2b2lkIFdhdmVTaGFwZXJE
U1BLZXJuZWw6OnByb2Nlc3NDdXJ2ZTR4KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0
aW5hdGlvbgogICAgIGlmICghaXNTYWZlKQogICAgICAgICByZXR1cm47CiAKLSAgICBmbG9hdCog
dGVtcFAgPSBtX3RlbXBCdWZmZXItPm11dGFibGVTcGFuKCkuZGF0YSgpOwotICAgIGZsb2F0KiB0
ZW1wUDIgPSBtX3RlbXBCdWZmZXIyLT5tdXRhYmxlU3BhbigpLmRhdGEoKTsKKyAgICBmbG9hdCog
dGVtcFAgPSBtX3RlbXBCdWZmZXItPmRhdGEoKTsKKyAgICBmbG9hdCogdGVtcFAyID0gbV90ZW1w
QnVmZmVyMi0+ZGF0YSgpOwogCiAgICAgbV91cFNhbXBsZXItPnByb2Nlc3Moc291cmNlLCB0ZW1w
UCwgZnJhbWVzVG9Qcm9jZXNzKTsKICAgICBtX3VwU2FtcGxlcjItPnByb2Nlc3ModGVtcFAsIHRl
bXBQMiwgZnJhbWVzVG9Qcm9jZXNzICogMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAppbmRleCAwN2Q3NTEwNTU1
YzQuLjM2ZWY2NDU5NDJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQg
V2F2ZVNoYXBlclByb2Nlc3Nvcjo6cHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlLCBBdWRp
b0J1cyogZGVzdGluYXRpb24sCiAKICAgICAvLyBGb3IgZWFjaCBjaGFubmVsIG9mIG91ciBpbnB1
dCwgcHJvY2VzcyB1c2luZyB0aGUgY29ycmVzcG9uZGluZyBXYXZlU2hhcGVyRFNQS2VybmVsIGlu
dG8gdGhlIG91dHB1dCBjaGFubmVsLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9rZXJu
ZWxzLnNpemUoKTsgKytpKQotICAgICAgICBzdGF0aWNfY2FzdDxXYXZlU2hhcGVyRFNQS2VybmVs
Jj4oKm1fa2VybmVsc1tpXSkucHJvY2Vzcyhzb3VyY2UtPmNoYW5uZWwoaSktPnNwYW4oKS5kYXRh
KCksIGRlc3RpbmF0aW9uLT5jaGFubmVsKGkpLT5tdXRhYmxlU3BhbigpLmRhdGEoKSwgZnJhbWVz
VG9Qcm9jZXNzKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8V2F2ZVNoYXBlckRTUEtlcm5lbCY+KCpt
X2tlcm5lbHNbaV0pLnByb2Nlc3Moc291cmNlLT5jaGFubmVsKGkpLT5kYXRhKCksIGRlc3RpbmF0
aW9uLT5jaGFubmVsKGkpLT5tdXRhYmxlRGF0YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb0FycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b0FycmF5LmgKaW5kZXggZjA4MTg2YWJkNmJhLi41Y2IxMmYxYTkzMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQXJyYXkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0FycmF5LmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNs
dWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NCw4ICs3MywxMCBAQCBwdWJsaWM6CiAgICAgICAg
IHplcm8oKTsKICAgICB9CiAKLSAgICBzdGQ6OnNwYW48VD4gbXV0YWJsZVNwYW4oKSB7IHJldHVy
biB7IG1fYWxsb2NhdGlvbiwgc2l6ZSgpIH07IH0KLSAgICBzdGQ6OnNwYW48Y29uc3QgVD4gc3Bh
bigpIGNvbnN0IHsgcmV0dXJuIHsgbV9hbGxvY2F0aW9uLCBzaXplKCkgfTsgfQorICAgIHN0ZDo6
c3BhbjxUPiBzcGFuKCkgeyByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OyB9CisgICAgc3RkOjpz
cGFuPGNvbnN0IFQ+IHNwYW4oKSBjb25zdCB7IHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07IH0K
KyAgICBUKiBkYXRhKCkgeyByZXR1cm4gbV9hbGxvY2F0aW9uOyB9CisgICAgY29uc3QgVCogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb2NhdGlvbjsgfQogICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
IW1fc2l6ZTsgfQogCkBAIC04MywxNCArODQsMTYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
Ly8gTm90ZSB0aGF0IGFsdGhvdWdoIGl0IGlzIGEgc2l6ZV90LCBtX3NpemUgaXMgbm93IGd1YXJh
bnRlZWQgdG8gYmUKICAgICAgICAgLy8gbm8gZ3JlYXRlciB0aGFuIG1heCB1bnNpZ25lZC4gVGhp
cyBndWFyYW50ZWUgaXMgZW5mb3JjZWQgaW4gcmVzaXplKCkuCi0gICAgICAgIHJldHVybiBtdXRh
YmxlU3BhbigpW2ldOworICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihp
IDwgc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIGRhdGEoKVtpXTsKICAgICB9CiAKICAgICBjb25z
dCBUJiBhdChzaXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAgIC8vIE5vdGUgdGhhdCBhbHRo
b3VnaCBpdCBpcyBhIHNpemVfdCwgbV9zaXplIGlzIG5vdyBndWFyYW50ZWVkIHRvIGJlCiAgICAg
ICAgIC8vIG5vIGdyZWF0ZXIgdGhhbiBtYXggdW5zaWduZWQuIFRoaXMgZ3VhcmFudGVlIGlzIGVu
Zm9yY2VkIGluIHJlc2l6ZSgpLgotICAgICAgICByZXR1cm4gc3BhbigpW2ldOworICAgICAgICBS
RUxFQVNFX0FTU0VSVChpIDwgc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIGRhdGEoKVtpXTsKICAg
ICB9CiAKICAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IHJldHVybiBhdChpKTsgfQpAQCAt
OTksNyArMTAyLDcgQEAgcHVibGljOgogICAgIHZvaWQgemVybygpCiAgICAgewogICAgICAgICAv
LyBUaGlzIG11bHRpcGxpY2F0aW9uIGlzIG1hZGUgc2FmZSBieSB0aGUgY2hlY2sgaW4gcmVzaXpl
KCkuCi0gICAgICAgIG1lbXNldFNwYW4obXV0YWJsZVNwYW4oKSwgMCk7CisgICAgICAgIG1lbXNl
dCh0aGlzLT5kYXRhKCksIDAsIHNpemVvZihUKSAqIHRoaXMtPnNpemUoKSk7CiAgICAgfQogCiAg
ICAgdm9pZCB6ZXJvUmFuZ2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkKQEAgLTExMSw3
ICsxMTQsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gVGhpcyBleHByZXNzaW9uIGNhbm5vdCBv
dmVyZmxvdyBiZWNhdXNlIGVuZCAtIHN0YXJ0IGNhbm5vdCBiZQogICAgICAgICAvLyBncmVhdGVy
IHRoYW4gbV9zaXplLCB3aGljaCBpcyBzYWZlIGR1ZSB0byB0aGUgY2hlY2sgaW4gcmVzaXplKCku
Ci0gICAgICAgIG1lbXNldFNwYW4obXV0YWJsZVNwYW4oKS5zdWJzcGFuKHN0YXJ0LCBlbmQgLSBz
dGFydCksIDApOworICAgICAgICBtZW1zZXQodGhpcy0+ZGF0YSgpICsgc3RhcnQsIDAsIHNpemVv
ZihUKSAqIChlbmQgLSBzdGFydCkpOwogICAgIH0KIAogICAgIHZvaWQgY29weVRvUmFuZ2UoY29u
c3QgVCogc291cmNlRGF0YSwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkKQEAgLTEyMywx
NiArMTI2LDE2IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBUaGlzIGV4cHJlc3Npb24gY2Fubm90
IG92ZXJmbG93IGJlY2F1c2UgZW5kIC0gc3RhcnQgY2Fubm90IGJlCiAgICAgICAgIC8vIGdyZWF0
ZXIgdGhhbiBtX3NpemUsIHdoaWNoIGlzIHNhZmUgZHVlIHRvIHRoZSBjaGVjayBpbiByZXNpemUo
KS4KLSAgICAgICAgbWVtY3B5U3BhbihtdXRhYmxlU3BhbigpLnN1YnNwYW4oc3RhcnQsIGVuZCAt
IHN0YXJ0KSwgc3RkOjpzcGFuIHsgc291cmNlRGF0YSwgZW5kIC0gc3RhcnQgfSk7CisgICAgICAg
IG1lbWNweSh0aGlzLT5kYXRhKCkgKyBzdGFydCwgc291cmNlRGF0YSwgc2l6ZW9mKFQpICogKGVu
ZCAtIHN0YXJ0KSk7CiAgICAgfQogCiAgICAgYm9vbCBjb250YWluc0NvbnN0YW50VmFsdWUoKSBj
b25zdAogICAgIHsKICAgICAgICAgaWYgKG1fc2l6ZSA8PSAxKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIGZsb2F0IGNvbnN0YW50ID0gc3BhbigpLmZyb250KCk7Ci0gICAgICAg
IGZvciAoYXV0byB2YWx1ZSA6IHNwYW4oKS5zdWJzcGFuKDEpKSB7Ci0gICAgICAgICAgICBpZiAo
dmFsdWUgIT0gY29uc3RhbnQpCisgICAgICAgIGZsb2F0IGNvbnN0YW50ID0gZGF0YSgpWzBdOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbV9zaXplOyArK2kpIHsKKyAgICAgICAg
ICAgIGlmIChkYXRhKClbaV0gIT0gY29uc3RhbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCmluZGV4IDRmMmUzZmQ1YmNmYS4uODJhYzIxMzAwOWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCkBAIC0zMDks
MjEgKzMwOSwyMSBAQCB2b2lkIEF1ZGlvQnVzOjpzcGVha2Vyc1N1bUZyb21CeURvd25NaXhpbmco
Y29uc3QgQXVkaW9CdXMmIHNvdXJjZUJ1cykKICAgICAgICAgLy8gSGFuZGxlIHN0ZXJlbyAtPiBt
b25vIGNhc2UuIG91dHB1dCArPSAwLjUgKiAoaW5wdXQuTCArIGlucHV0LlIpLgogICAgICAgICBB
dWRpb0J1cyYgc291cmNlQnVzU2FmZSA9IGNvbnN0X2Nhc3Q8QXVkaW9CdXMmPihzb3VyY2VCdXMp
OwogCi0gICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VMID0gc291cmNlQnVzU2FmZS5jaGFubmVs
QnlUeXBlKENoYW5uZWxMZWZ0KS0+c3BhbigpLmRhdGEoKTsKLSAgICAgICAgY29uc3QgZmxvYXQq
IHNvdXJjZVIgPSBzb3VyY2VCdXNTYWZlLmNoYW5uZWxCeVR5cGUoQ2hhbm5lbFJpZ2h0KS0+c3Bh
bigpLmRhdGEoKTsKKyAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJjZUwgPSBzb3VyY2VCdXNTYWZl
LmNoYW5uZWxCeVR5cGUoQ2hhbm5lbExlZnQpLT5kYXRhKCk7CisgICAgICAgIGNvbnN0IGZsb2F0
KiBzb3VyY2VSID0gc291cmNlQnVzU2FmZS5jaGFubmVsQnlUeXBlKENoYW5uZWxSaWdodCktPmRh
dGEoKTsKIAotICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBjaGFubmVsQnlUeXBlKENoYW5u
ZWxMZWZ0KS0+bXV0YWJsZVNwYW4oKS5kYXRhKCk7CisgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlv
biA9IGNoYW5uZWxCeVR5cGUoQ2hhbm5lbExlZnQpLT5tdXRhYmxlRGF0YSgpOwogICAgICAgICBW
ZWN0b3JNYXRoOjptdWx0aXBseUJ5U2NhbGFyVGhlbkFkZFRvT3V0cHV0KHNvdXJjZUwsIDAuNSwg
ZGVzdGluYXRpb24sIGxlbmd0aCgpKTsKICAgICAgICAgVmVjdG9yTWF0aDo6bXVsdGlwbHlCeVNj
YWxhclRoZW5BZGRUb091dHB1dChzb3VyY2VSLCAwLjUsIGRlc3RpbmF0aW9uLCBsZW5ndGgoKSk7
CiAgICAgfSBlbHNlIGlmIChudW1iZXJPZlNvdXJjZUNoYW5uZWxzID09IDQgJiYgbnVtYmVyT2ZE
ZXN0aW5hdGlvbkNoYW5uZWxzID09IDEpIHsKICAgICAgICAgLy8gRG93bi1taXhpbmc6IDQgLT4g
MQogICAgICAgICAvLyBvdXRwdXQgPSAwLjI1ICogKGlucHV0LkwgKyBpbnB1dC5SICsgaW5wdXQu
U0wgKyBpbnB1dC5TUikKLSAgICAgICAgYXV0byogc291cmNlTCA9IHNvdXJjZUJ1cy5jaGFubmVs
QnlUeXBlKENoYW5uZWxMZWZ0KS0+c3BhbigpLmRhdGEoKTsKLSAgICAgICAgYXV0byogc291cmNl
UiA9IHNvdXJjZUJ1cy5jaGFubmVsQnlUeXBlKENoYW5uZWxSaWdodCktPnNwYW4oKS5kYXRhKCk7
Ci0gICAgICAgIGF1dG8qIHNvdXJjZVNMID0gc291cmNlQnVzLmNoYW5uZWxCeVR5cGUoQ2hhbm5l
bFN1cnJvdW5kTGVmdCktPnNwYW4oKS5kYXRhKCk7Ci0gICAgICAgIGF1dG8qIHNvdXJjZVNSID0g
c291cmNlQnVzLmNoYW5uZWxCeVR5cGUoQ2hhbm5lbFN1cnJvdW5kUmlnaHQpLT5zcGFuKCkuZGF0
YSgpOworICAgICAgICBhdXRvKiBzb3VyY2VMID0gc291cmNlQnVzLmNoYW5uZWxCeVR5cGUoQ2hh
bm5lbExlZnQpLT5kYXRhKCk7CisgICAgICAgIGF1dG8qIHNvdXJjZVIgPSBzb3VyY2VCdXMuY2hh
bm5lbEJ5VHlwZShDaGFubmVsUmlnaHQpLT5kYXRhKCk7CisgICAgICAgIGF1dG8qIHNvdXJjZVNM
ID0gc291cmNlQnVzLmNoYW5uZWxCeVR5cGUoQ2hhbm5lbFN1cnJvdW5kTGVmdCktPmRhdGEoKTsK
KyAgICAgICAgYXV0byogc291cmNlU1IgPSBzb3VyY2VCdXMuY2hhbm5lbEJ5VHlwZShDaGFubmVs
U3Vycm91bmRSaWdodCktPmRhdGEoKTsKIAotICAgICAgICBhdXRvKiBkZXN0aW5hdGlvbiA9IGNo
YW5uZWxCeVR5cGUoQ2hhbm5lbExlZnQpLT5tdXRhYmxlU3BhbigpLmRhdGEoKTsKKyAgICAgICAg
YXV0byogZGVzdGluYXRpb24gPSBjaGFubmVsQnlUeXBlKENoYW5uZWxMZWZ0KS0+bXV0YWJsZURh
dGEoKTsKIAogICAgICAgICBWZWN0b3JNYXRoOjptdWx0aXBseUJ5U2NhbGFyVGhlbkFkZFRvT3V0
cHV0KHNvdXJjZUwsIDAuMjUsIGRlc3RpbmF0aW9uLCBsZW5ndGgoKSk7CiAgICAgICAgIFZlY3Rv
ck1hdGg6Om11bHRpcGx5QnlTY2FsYXJUaGVuQWRkVG9PdXRwdXQoc291cmNlUiwgMC4yNSwgZGVz
dGluYXRpb24sIGxlbmd0aCgpKTsKQEAgLTMzMiwxMyArMzMyLDEzIEBAIHZvaWQgQXVkaW9CdXM6
OnNwZWFrZXJzU3VtRnJvbUJ5RG93bk1peGluZyhjb25zdCBBdWRpb0J1cyYgc291cmNlQnVzKQog
ICAgIH0gZWxzZSBpZiAobnVtYmVyT2ZTb3VyY2VDaGFubmVscyA9PSA2ICYmIG51bWJlck9mRGVz
dGluYXRpb25DaGFubmVscyA9PSAxKSB7CiAgICAgICAgIC8vIERvd24tbWl4aW5nOiA1LjEgLT4g
MQogICAgICAgICAvLyBvdXRwdXQgPSBzcXJ0KDEvMikgKiAoaW5wdXQuTCArIGlucHV0LlIpICsg
aW5wdXQuQyArIDAuNSAqIChpbnB1dC5TTCArIGlucHV0LlNSKQotICAgICAgICBhdXRvKiBzb3Vy
Y2VMID0gc291cmNlQnVzLmNoYW5uZWxCeVR5cGUoQ2hhbm5lbExlZnQpLT5zcGFuKCkuZGF0YSgp
OwotICAgICAgICBhdXRvKiBzb3VyY2VSID0gc291cmNlQnVzLmNoYW5uZWxCeVR5cGUoQ2hhbm5l
bFJpZ2h0KS0+c3BhbigpLmRhdGEoKTsKLSAgICAgICAgYXV0byogc291cmNlQyA9IHNvdXJjZUJ1
cy5jaGFubmVsQnlUeXBlKENoYW5uZWxDZW50ZXIpLT5zcGFuKCkuZGF0YSgpOwotICAgICAgICBh
dXRvKiBzb3VyY2VTTCA9IHNvdXJjZUJ1cy5jaGFubmVsQnlUeXBlKENoYW5uZWxTdXJyb3VuZExl
ZnQpLT5zcGFuKCkuZGF0YSgpOwotICAgICAgICBhdXRvKiBzb3VyY2VTUiA9IHNvdXJjZUJ1cy5j
aGFubmVsQnlUeXBlKENoYW5uZWxTdXJyb3VuZFJpZ2h0KS0+c3BhbigpLmRhdGEoKTsKKyAgICAg
ICAgYXV0byogc291cmNlTCA9IHNvdXJjZUJ1cy5jaGFubmVsQnlUeXBlKENoYW5uZWxMZWZ0KS0+
ZGF0YSgpOworICAgICAgICBhdXRvKiBzb3VyY2VSID0gc291cmNlQnVzLmNoYW5uZWxCeVR5cGUo
Q2hhbm5lbFJpZ2h0KS0+ZGF0YSgpOworICAgICAgICBhdXRvKiBzb3VyY2VDID0gc291cmNlQnVz
LmNoYW5uZWxCeVR5cGUoQ2hhbm5lbENlbnRlciktPmRhdGEoKTsKKyAgICAgICAgYXV0byogc291
cmNlU0wgPSBzb3VyY2VCdXMuY2hhbm5lbEJ5VHlwZShDaGFubmVsU3Vycm91bmRMZWZ0KS0+ZGF0
YSgpOworICAgICAgICBhdXRvKiBzb3VyY2VTUiA9IHNvdXJjZUJ1cy5jaGFubmVsQnlUeXBlKENo
YW5uZWxTdXJyb3VuZFJpZ2h0KS0+ZGF0YSgpOwogCi0gICAgICAgIGF1dG8qIGRlc3RpbmF0aW9u
ID0gY2hhbm5lbEJ5VHlwZShDaGFubmVsTGVmdCktPm11dGFibGVTcGFuKCkuZGF0YSgpOworICAg
ICAgICBhdXRvKiBkZXN0aW5hdGlvbiA9IGNoYW5uZWxCeVR5cGUoQ2hhbm5lbExlZnQpLT5tdXRh
YmxlRGF0YSgpOwogICAgICAgICBmbG9hdCBzY2FsZVNxcnRIYWxmID0gc3FydGYoMC41KTsKIAog
ICAgICAgICBWZWN0b3JNYXRoOjptdWx0aXBseUJ5U2NhbGFyVGhlbkFkZFRvT3V0cHV0KHNvdXJj
ZUwsIHNjYWxlU3FydEhhbGYsIGRlc3RpbmF0aW9uLCBsZW5ndGgoKSk7CkBAIC0zNTAsMTMgKzM1
MCwxMyBAQCB2b2lkIEF1ZGlvQnVzOjpzcGVha2Vyc1N1bUZyb21CeURvd25NaXhpbmcoY29uc3Qg
QXVkaW9CdXMmIHNvdXJjZUJ1cykKICAgICAgICAgLy8gRG93bi1taXhpbmc6IDQgLT4gMgogICAg
ICAgICAvLyBvdXRwdXQuTCA9IDAuNSAqIChpbnB1dC5MICsgaW5wdXQuU0wpCiAgICAgICAgIC8v
IG91dHB1dC5SID0gMC41ICogKGlucHV0LlIgKyBpbnB1dC5TUikKLSAgICAgICAgYXV0byogc291
cmNlTCA9IHNvdXJjZUJ1cy5jaGFubmVsQnlUeXBlKENoYW5uZWxMZWZ0KS0+c3BhbigpLmRhdGEo
KTsKLSAgICAgICAgYXV0byogc291cmNlUiA9IHNvdXJjZUJ1cy5jaGFubmVsQnlUeXBlKENoYW5u
ZWxSaWdodCktPnNwYW4oKS5kYXRhKCk7Ci0gICAgICAgIGF1dG8qIHNvdXJjZVNMID0gc291cmNl
QnVzLmNoYW5uZWxCeVR5cGUoQ2hhbm5lbFN1cnJvdW5kTGVmdCktPnNwYW4oKS5kYXRhKCk7Ci0g
ICAgICAgIGF1dG8qIHNvdXJjZVNSID0gc291cmNlQnVzLmNoYW5uZWxCeVR5cGUoQ2hhbm5lbFN1
cnJvdW5kUmlnaHQpLT5zcGFuKCkuZGF0YSgpOworICAgICAgICBhdXRvKiBzb3VyY2VMID0gc291
cmNlQnVzLmNoYW5uZWxCeVR5cGUoQ2hhbm5lbExlZnQpLT5kYXRhKCk7CisgICAgICAgIGF1dG8q
IHNvdXJjZVIgPSBzb3VyY2VCdXMuY2hhbm5lbEJ5VHlwZShDaGFubmVsUmlnaHQpLT5kYXRhKCk7
CisgICAgICAgIGF1dG8qIHNvdXJjZVNMID0gc291cmNlQnVzLmNoYW5uZWxCeVR5cGUoQ2hhbm5l
bFN1cnJvdW5kTGVmdCktPmRhdGEoKTsKKyAgICAgICAgYXV0byogc291cmNlU1IgPSBzb3VyY2VC
dXMuY2hhbm5lbEJ5VHlwZShDaGFubmVsU3Vycm91bmRSaWdodCktPmRhdGEoKTsKIAotICAgICAg
ICBhdXRvKiBkZXN0aW5hdGlvbkwgPSBjaGFubmVsQnlUeXBlKENoYW5uZWxMZWZ0KS0+bXV0YWJs
ZVNwYW4oKS5kYXRhKCk7Ci0gICAgICAgIGF1dG8qIGRlc3RpbmF0aW9uUiA9IGNoYW5uZWxCeVR5
cGUoQ2hhbm5lbFJpZ2h0KS0+bXV0YWJsZVNwYW4oKS5kYXRhKCk7CisgICAgICAgIGF1dG8qIGRl
c3RpbmF0aW9uTCA9IGNoYW5uZWxCeVR5cGUoQ2hhbm5lbExlZnQpLT5tdXRhYmxlRGF0YSgpOwor
ICAgICAgICBhdXRvKiBkZXN0aW5hdGlvblIgPSBjaGFubmVsQnlUeXBlKENoYW5uZWxSaWdodCkt
Pm11dGFibGVEYXRhKCk7CiAKICAgICAgICAgVmVjdG9yTWF0aDo6bXVsdGlwbHlCeVNjYWxhclRo
ZW5BZGRUb091dHB1dChzb3VyY2VMLCAwLjUsIGRlc3RpbmF0aW9uTCwgbGVuZ3RoKCkpOwogICAg
ICAgICBWZWN0b3JNYXRoOjptdWx0aXBseUJ5U2NhbGFyVGhlbkFkZFRvT3V0cHV0KHNvdXJjZVNM
LCAwLjUsIGRlc3RpbmF0aW9uTCwgbGVuZ3RoKCkpOwpAQCAtMzY2LDE0ICszNjYsMTQgQEAgdm9p
ZCBBdWRpb0J1czo6c3BlYWtlcnNTdW1Gcm9tQnlEb3duTWl4aW5nKGNvbnN0IEF1ZGlvQnVzJiBz
b3VyY2VCdXMpCiAgICAgICAgIC8vIERvd24tbWl4aW5nOiA1LjEgLT4gMgogICAgICAgICAvLyBv
dXRwdXQuTCA9IGlucHV0LkwgKyBzcXJ0KDEvMikgKiAoaW5wdXQuQyArIGlucHV0LlNMKQogICAg
ICAgICAvLyBvdXRwdXQuUiA9IGlucHV0LlIgKyBzcXJ0KDEvMikgKiAoaW5wdXQuQyArIGlucHV0
LlNSKQotICAgICAgICBhdXRvKiBzb3VyY2VMID0gc291cmNlQnVzLmNoYW5uZWxCeVR5cGUoQ2hh
bm5lbExlZnQpLT5zcGFuKCkuZGF0YSgpOwotICAgICAgICBhdXRvKiBzb3VyY2VSID0gc291cmNl
QnVzLmNoYW5uZWxCeVR5cGUoQ2hhbm5lbFJpZ2h0KS0+c3BhbigpLmRhdGEoKTsKLSAgICAgICAg
YXV0byogc291cmNlQyA9IHNvdXJjZUJ1cy5jaGFubmVsQnlUeXBlKENoYW5uZWxDZW50ZXIpLT5z
cGFuKCkuZGF0YSgpOwotICAgICAgICBhdXRvKiBzb3VyY2VTTCA9IHNvdXJjZUJ1cy5jaGFubmVs
QnlUeXBlKENoYW5uZWxTdXJyb3VuZExlZnQpLT5zcGFuKCkuZGF0YSgpOwotICAgICAgICBhdXRv
KiBzb3VyY2VTUiA9IHNvdXJjZUJ1cy5jaGFubmVsQnlUeXBlKENoYW5uZWxTdXJyb3VuZFJpZ2h0
KS0+c3BhbigpLmRhdGEoKTsKLQotICAgICAgICBmbG9hdCogZGVzdGluYXRpb25MID0gY2hhbm5l
bEJ5VHlwZShDaGFubmVsTGVmdCktPm11dGFibGVTcGFuKCkuZGF0YSgpOwotICAgICAgICBmbG9h
dCogZGVzdGluYXRpb25SID0gY2hhbm5lbEJ5VHlwZShDaGFubmVsUmlnaHQpLT5tdXRhYmxlU3Bh
bigpLmRhdGEoKTsKKyAgICAgICAgYXV0byogc291cmNlTCA9IHNvdXJjZUJ1cy5jaGFubmVsQnlU
eXBlKENoYW5uZWxMZWZ0KS0+ZGF0YSgpOworICAgICAgICBhdXRvKiBzb3VyY2VSID0gc291cmNl
QnVzLmNoYW5uZWxCeVR5cGUoQ2hhbm5lbFJpZ2h0KS0+ZGF0YSgpOworICAgICAgICBhdXRvKiBz
b3VyY2VDID0gc291cmNlQnVzLmNoYW5uZWxCeVR5cGUoQ2hhbm5lbENlbnRlciktPmRhdGEoKTsK
KyAgICAgICAgYXV0byogc291cmNlU0wgPSBzb3VyY2VCdXMuY2hhbm5lbEJ5VHlwZShDaGFubmVs
U3Vycm91bmRMZWZ0KS0+ZGF0YSgpOworICAgICAgICBhdXRvKiBzb3VyY2VTUiA9IHNvdXJjZUJ1
cy5jaGFubmVsQnlUeXBlKENoYW5uZWxTdXJyb3VuZFJpZ2h0KS0+ZGF0YSgpOworCisgICAgICAg
IGZsb2F0KiBkZXN0aW5hdGlvbkwgPSBjaGFubmVsQnlUeXBlKENoYW5uZWxMZWZ0KS0+bXV0YWJs
ZURhdGEoKTsKKyAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IGNoYW5uZWxCeVR5cGUoQ2hh
bm5lbFJpZ2h0KS0+bXV0YWJsZURhdGEoKTsKICAgICAgICAgZmxvYXQgc2NhbGVTcXJ0SGFsZiA9
IHNxcnRmKDAuNSk7CiAKICAgICAgICAgVmVjdG9yTWF0aDo6YWRkKHNvdXJjZUwsIGRlc3RpbmF0
aW9uTCwgZGVzdGluYXRpb25MLCBsZW5ndGgoKSk7CkBAIC0zODgsMTIgKzM4OCwxMiBAQCB2b2lk
IEF1ZGlvQnVzOjpzcGVha2Vyc1N1bUZyb21CeURvd25NaXhpbmcoY29uc3QgQXVkaW9CdXMmIHNv
dXJjZUJ1cykKICAgICAgICAgLy8gb3V0cHV0LlIgPSBpbnB1dC5SICsgc3FydCgxLzIpICogaW5w
dXQuQwogICAgICAgICAvLyBvdXRwdXQuU0wgPSBpbnB1dC5TTAogICAgICAgICAvLyBvdXRwdXQu
U1IgPSBpbnB1dC5TUgotICAgICAgICBhdXRvKiBzb3VyY2VMID0gc291cmNlQnVzLmNoYW5uZWxC
eVR5cGUoQ2hhbm5lbExlZnQpLT5zcGFuKCkuZGF0YSgpOwotICAgICAgICBhdXRvKiBzb3VyY2VS
ID0gc291cmNlQnVzLmNoYW5uZWxCeVR5cGUoQ2hhbm5lbFJpZ2h0KS0+c3BhbigpLmRhdGEoKTsK
LSAgICAgICAgYXV0byogc291cmNlQyA9IHNvdXJjZUJ1cy5jaGFubmVsQnlUeXBlKENoYW5uZWxD
ZW50ZXIpLT5zcGFuKCkuZGF0YSgpOworICAgICAgICBhdXRvKiBzb3VyY2VMID0gc291cmNlQnVz
LmNoYW5uZWxCeVR5cGUoQ2hhbm5lbExlZnQpLT5kYXRhKCk7CisgICAgICAgIGF1dG8qIHNvdXJj
ZVIgPSBzb3VyY2VCdXMuY2hhbm5lbEJ5VHlwZShDaGFubmVsUmlnaHQpLT5kYXRhKCk7CisgICAg
ICAgIGF1dG8qIHNvdXJjZUMgPSBzb3VyY2VCdXMuY2hhbm5lbEJ5VHlwZShDaGFubmVsQ2VudGVy
KS0+ZGF0YSgpOwogCi0gICAgICAgIGF1dG8qIGRlc3RpbmF0aW9uTCA9IGNoYW5uZWxCeVR5cGUo
Q2hhbm5lbExlZnQpLT5tdXRhYmxlU3BhbigpLmRhdGEoKTsKLSAgICAgICAgYXV0byogZGVzdGlu
YXRpb25SID0gY2hhbm5lbEJ5VHlwZShDaGFubmVsUmlnaHQpLT5tdXRhYmxlU3BhbigpLmRhdGEo
KTsKKyAgICAgICAgYXV0byogZGVzdGluYXRpb25MID0gY2hhbm5lbEJ5VHlwZShDaGFubmVsTGVm
dCktPm11dGFibGVEYXRhKCk7CisgICAgICAgIGF1dG8qIGRlc3RpbmF0aW9uUiA9IGNoYW5uZWxC
eVR5cGUoQ2hhbm5lbFJpZ2h0KS0+bXV0YWJsZURhdGEoKTsKICAgICAgICAgYXV0byBzY2FsZVNx
cnRIYWxmID0gc3FydGYoMC41KTsKIAogICAgICAgICBWZWN0b3JNYXRoOjphZGQoc291cmNlTCwg
ZGVzdGluYXRpb25MLCBkZXN0aW5hdGlvbkwsIGxlbmd0aCgpKTsKQEAgLTQ1MSw4ICs0NTEsOCBA
QCB2b2lkIEF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKGNvbnN0IEF1ZGlvQnVzJiBzb3VyY2VC
dXMsIGZsb2F0IGdhaW4pCiAgICAgZmxvYXQqIGRlc3RpbmF0aW9uc1tNYXhCdXNDaGFubmVsc107
CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSB7
Ci0gICAgICAgIHNvdXJjZXNbaV0gPSBzb3VyY2VCdXNTYWZlLmNoYW5uZWwoaSktPnNwYW4oKS5k
YXRhKCk7Ci0gICAgICAgIGRlc3RpbmF0aW9uc1tpXSA9IGNoYW5uZWwoaSktPm11dGFibGVTcGFu
KCkuZGF0YSgpOworICAgICAgICBzb3VyY2VzW2ldID0gc291cmNlQnVzU2FmZS5jaGFubmVsKGkp
LT5kYXRhKCk7CisgICAgICAgIGRlc3RpbmF0aW9uc1tpXSA9IGNoYW5uZWwoaSktPm11dGFibGVE
YXRhKCk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgZnJhbWVzVG9Qcm9jZXNzID0gbGVuZ3RoKCk7
CkBAIC00OTAsMTEgKzQ5MCwxMSBAQCB2b2lkIEF1ZGlvQnVzOjpjb3B5V2l0aFNhbXBsZUFjY3Vy
YXRlR2FpblZhbHVlc0Zyb20oY29uc3QgQXVkaW9CdXMgJnNvdXJjZUJ1cywgZgogICAgIH0KIAog
ICAgIC8vIFdlIGhhbmRsZSBib3RoIHRoZSAxIC0+IE4gYW5kIE4gLT4gTiBjYXNlIGhlcmUuCi0g
ICAgY29uc3QgZmxvYXQqIHNvdXJjZSA9IHNvdXJjZUJ1cy5jaGFubmVsKDApLT5zcGFuKCkuZGF0
YSgpOworICAgIGNvbnN0IGZsb2F0KiBzb3VyY2UgPSBzb3VyY2VCdXMuY2hhbm5lbCgwKS0+ZGF0
YSgpOwogICAgIGZvciAodW5zaWduZWQgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwg
bnVtYmVyT2ZDaGFubmVscygpOyArK2NoYW5uZWxJbmRleCkgewogICAgICAgICBpZiAoc291cmNl
QnVzLm51bWJlck9mQ2hhbm5lbHMoKSA9PSBudW1iZXJPZkNoYW5uZWxzKCkpCi0gICAgICAgICAg
ICBzb3VyY2UgPSBzb3VyY2VCdXMuY2hhbm5lbChjaGFubmVsSW5kZXgpLT5zcGFuKCkuZGF0YSgp
OwotICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBjaGFubmVsKGNoYW5uZWxJbmRleCktPm11
dGFibGVTcGFuKCkuZGF0YSgpOworICAgICAgICAgICAgc291cmNlID0gc291cmNlQnVzLmNoYW5u
ZWwoY2hhbm5lbEluZGV4KS0+ZGF0YSgpOworICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBj
aGFubmVsKGNoYW5uZWxJbmRleCktPm11dGFibGVEYXRhKCk7CiAgICAgICAgIFZlY3Rvck1hdGg6
Om11bHRpcGx5KHNvdXJjZSwgZ2FpblZhbHVlcywgZGVzdGluYXRpb24sIG51bWJlck9mR2FpblZh
bHVlcyk7CiAgICAgfQogfQpAQCAtNTc0LDkgKzU3NCw5IEBAIFJlZlB0cjxBdWRpb0J1cz4gQXVk
aW9CdXM6OmNyZWF0ZUJ5TWl4aW5nVG9Nb25vKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2VCdXMpCiAg
ICAgICAgICAgICB1bnNpZ25lZCBuID0gc291cmNlQnVzLT5sZW5ndGgoKTsKICAgICAgICAgICAg
IFJlZlB0cjxBdWRpb0J1cz4gZGVzdGluYXRpb25CdXMgPSBjcmVhdGUoMSwgbik7CiAKLSAgICAg
ICAgICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VMID0gc291cmNlQnVzLT5jaGFubmVsKDApLT5zcGFu
KCkuZGF0YSgpOwotICAgICAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJjZVIgPSBzb3VyY2VCdXMt
PmNoYW5uZWwoMSktPnNwYW4oKS5kYXRhKCk7Ci0gICAgICAgICAgICBmbG9hdCogZGVzdGluYXRp
b24gPSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbCgwKS0+bXV0YWJsZVNwYW4oKS5kYXRhKCk7Cisg
ICAgICAgICAgICBjb25zdCBmbG9hdCogc291cmNlTCA9IHNvdXJjZUJ1cy0+Y2hhbm5lbCgwKS0+
ZGF0YSgpOworICAgICAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJjZVIgPSBzb3VyY2VCdXMtPmNo
YW5uZWwoMSktPmRhdGEoKTsKKyAgICAgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGRlc3Rp
bmF0aW9uQnVzLT5jaGFubmVsKDApLT5tdXRhYmxlRGF0YSgpOwogICAgICAgICAKICAgICAgICAg
ICAgIC8vIERvIHRoZSBtb25vIG1peGRvd24uCiAgICAgICAgICAgICBWZWN0b3JNYXRoOjphZGRW
ZWN0b3JzVGhlbk11bHRpcGx5QnlTY2FsYXIoc291cmNlTCwgc291cmNlUiwgMC41LCBkZXN0aW5h
dGlvbiwgbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b0NoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVs
LmNwcAppbmRleCA3Yzc0ODlkMDQyMDAuLjhhZTJlYTg3NGRmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHZv
aWQgQXVkaW9DaGFubmVsOjpzY2FsZShmbG9hdCBzY2FsZSkKICAgICBpZiAoaXNTaWxlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yTWF0aDo6bXVsdGlwbHlCeVNjYWxhcihzcGFu
KCkuZGF0YSgpLCBzY2FsZSwgbXV0YWJsZVNwYW4oKS5kYXRhKCksIGxlbmd0aCgpKTsKKyAgICBW
ZWN0b3JNYXRoOjptdWx0aXBseUJ5U2NhbGFyKGRhdGEoKSwgc2NhbGUsIG11dGFibGVEYXRhKCks
IGxlbmd0aCgpKTsKIH0KIAogdm9pZCBBdWRpb0NoYW5uZWw6OmNvcHlGcm9tKGNvbnN0IEF1ZGlv
Q2hhbm5lbCogc291cmNlQ2hhbm5lbCkKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBBdWRpb0NoYW5u
ZWw6OmNvcHlGcm9tKGNvbnN0IEF1ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbCkKICAgICAgICAg
emVybygpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1lbWNweVNwYW4obXV0YWJsZVNw
YW4oKSwgc291cmNlQ2hhbm5lbC0+c3BhbigpLmZpcnN0KGxlbmd0aCgpKSk7CisgICAgbWVtY3B5
KG11dGFibGVEYXRhKCksIHNvdXJjZUNoYW5uZWwtPmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGxl
bmd0aCgpKTsKIH0KIAogdm9pZCBBdWRpb0NoYW5uZWw6OmNvcHlGcm9tUmFuZ2UoY29uc3QgQXVk
aW9DaGFubmVsKiBzb3VyY2VDaGFubmVsLCB1bnNpZ25lZCBzdGFydEZyYW1lLCB1bnNpZ25lZCBl
bmRGcmFtZSkKQEAgLTc2LDE3ICs3NiwxNiBAQCB2b2lkIEF1ZGlvQ2hhbm5lbDo6Y29weUZyb21S
YW5nZShjb25zdCBBdWRpb0NoYW5uZWwqIHNvdXJjZUNoYW5uZWwsIHVuc2lnbmVkIHN0YQogICAg
IGlmICghaXNSYW5nZUxlbmd0aFNhZmUpCiAgICAgICAgIHJldHVybjsKIAorICAgIGNvbnN0IGZs
b2F0KiBzb3VyY2UgPSBzb3VyY2VDaGFubmVsLT5kYXRhKCk7CisgICAgZmxvYXQqIGRlc3RpbmF0
aW9uID0gbXV0YWJsZURhdGEoKTsKIAotICAgIGF1dG8gZGVzdGluYXRpb24gPSBtdXRhYmxlU3Bh
bigpLmZpcnN0KHJhbmdlTGVuZ3RoKTsKICAgICBpZiAoc291cmNlQ2hhbm5lbC0+aXNTaWxlbnQo
KSkgewogICAgICAgICBpZiAocmFuZ2VMZW5ndGggPT0gbGVuZ3RoKCkpCiAgICAgICAgICAgICB6
ZXJvKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1lbXNldFNwYW4oZGVzdGluYXRpb24s
IDApOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gc291cmNlID0gc291cmNlQ2hhbm5lbC0+
c3BhbigpLnN1YnNwYW4oc3RhcnRGcmFtZSwgcmFuZ2VMZW5ndGgpOwotICAgICAgICBtZW1jcHlT
cGFuKGRlc3RpbmF0aW9uLCBzb3VyY2UpOwotICAgIH0KKyAgICAgICAgICAgIG1lbXNldChkZXN0
aW5hdGlvbiwgMCwgc2l6ZW9mKGZsb2F0KSAqIHJhbmdlTGVuZ3RoKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UgKyBzdGFydEZyYW1lLCBzaXplb2YoZmxv
YXQpICogcmFuZ2VMZW5ndGgpOwogfQogCiB2b2lkIEF1ZGlvQ2hhbm5lbDo6c3VtRnJvbShjb25z
dCBBdWRpb0NoYW5uZWwqIHNvdXJjZUNoYW5uZWwpCkBAIC0xMDIsNyArMTAxLDcgQEAgdm9pZCBB
dWRpb0NoYW5uZWw6OnN1bUZyb20oY29uc3QgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFubmVsKQog
ICAgIGlmIChpc1NpbGVudCgpKQogICAgICAgICBjb3B5RnJvbShzb3VyY2VDaGFubmVsKTsKICAg
ICBlbHNlCi0gICAgICAgIFZlY3Rvck1hdGg6OmFkZChzcGFuKCkuZGF0YSgpLCBzb3VyY2VDaGFu
bmVsLT5zcGFuKCkuZGF0YSgpLCBtdXRhYmxlU3BhbigpLmRhdGEoKSwgbGVuZ3RoKCkpOworICAg
ICAgICBWZWN0b3JNYXRoOjphZGQoZGF0YSgpLCBzb3VyY2VDaGFubmVsLT5kYXRhKCksIG11dGFi
bGVEYXRhKCksIGxlbmd0aCgpKTsKIH0KIAogZmxvYXQgQXVkaW9DaGFubmVsOjptYXhBYnNWYWx1
ZSgpIGNvbnN0CkBAIC0xMTAsNyArMTA5LDcgQEAgZmxvYXQgQXVkaW9DaGFubmVsOjptYXhBYnNW
YWx1ZSgpIGNvbnN0CiAgICAgaWYgKGlzU2lsZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgcmV0dXJuIFZlY3Rvck1hdGg6Om1heGltdW1NYWduaXR1ZGUoc3BhbigpLmRhdGEoKSwgbGVu
Z3RoKCkpOworICAgIHJldHVybiBWZWN0b3JNYXRoOjptYXhpbXVtTWFnbml0dWRlKGRhdGEoKSwg
bGVuZ3RoKCkpOwogfQogCiB9IC8vIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9DaGFubmVsLmgKaW5kZXggOTg0ZWYyZGY1OWNhLi5hYjRiMWZjOTI2NWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCkBAIC04Miwy
MiArODIsMTggQEAgcHVibGljOgogICAgICAgICBtX2xlbmd0aCA9IG5ld0xlbmd0aDsKICAgICB9
CiAKLSAgICBzdGQ6OnNwYW48Y29uc3QgZmxvYXQ+IHNwYW4oKSBjb25zdAotICAgIHsKLSAgICAg
ICAgaWYgKG1fcmF3UG9pbnRlcikKLSAgICAgICAgICAgIHJldHVybiB7IG1fcmF3UG9pbnRlciwg
bGVuZ3RoKCkgfTsKLSAgICAgICAgcmV0dXJuIG1fbWVtQnVmZmVyLT5zcGFuKCk7Ci0gICAgfQor
ICAgIHN0ZDo6c3Bhbjxjb25zdCBmbG9hdD4gc3BhbigpIGNvbnN0IHsgcmV0dXJuIHsgZGF0YSgp
LCBsZW5ndGgoKSB9OyB9CisgICAgc3RkOjpzcGFuPGZsb2F0PiBtdXRhYmxlU3BhbigpIHsgcmV0
dXJuIHsgbXV0YWJsZURhdGEoKSwgbGVuZ3RoKCkgfTsgfQogCiAgICAgLy8gRGlyZWN0IGFjY2Vz
cyB0byBQQ00gc2FtcGxlIGRhdGEuIE5vbi1jb25zdCBhY2Nlc3NvciBjbGVhcnMgc2lsZW50IGZs
YWcuCi0gICAgc3RkOjpzcGFuPGZsb2F0PiBtdXRhYmxlU3BhbigpCisgICAgZmxvYXQqIG11dGFi
bGVEYXRhKCkKICAgICB7CiAgICAgICAgIGNsZWFyU2lsZW50RmxhZygpOwotICAgICAgICBpZiAo
bV9yYXdQb2ludGVyKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9yYXdQb2ludGVyLCBsZW5ndGgo
KSB9OwotICAgICAgICByZXR1cm4gbV9tZW1CdWZmZXItPm11dGFibGVTcGFuKCk7CisgICAgICAg
IHJldHVybiBtX3Jhd1BvaW50ZXIgPyBtX3Jhd1BvaW50ZXIgOiBtX21lbUJ1ZmZlci0+ZGF0YSgp
OyAKICAgICB9CiAKKyAgICBjb25zdCBmbG9hdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmF3
UG9pbnRlciA/IG1fcmF3UG9pbnRlciA6IG1fbWVtQnVmZmVyLT5kYXRhKCk7IH0KKwogICAgIC8v
IFplcm9lcyBvdXQgYWxsIHNhbXBsZSB2YWx1ZXMgaW4gYnVmZmVyLgogICAgIHZvaWQgemVybygp
CiAgICAgewpAQCAtMTA2LDcgKzEwMiwxMCBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9zaWxlbnQg
PSB0cnVlOwogCi0gICAgICAgIG1lbXNldFNwYW4obXV0YWJsZVNwYW4oKSwgMCk7CisgICAgICAg
IGlmIChtX21lbUJ1ZmZlci5nZXQoKSkKKyAgICAgICAgICAgIG1fbWVtQnVmZmVyLT56ZXJvKCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lbXNldChtX3Jhd1BvaW50ZXIsIDAsIHNpemVv
ZihmbG9hdCkgKiBtX2xlbmd0aCk7CiAgICAgfQogCiAgICAgLy8gQ2xlYXJzIHRoZSBzaWxlbnQg
ZmxhZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
RFNQS2VybmVsUHJvY2Vzc29yLmNwcAppbmRleCAxZjhiNTRiZDMyYTIuLjI0ZDBiMzg0OTY1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQ
cm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEF1ZGlvRFNQS2VybmVs
UHJvY2Vzc29yOjpwcm9jZXNzKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0
aW5hdAogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2tlcm5lbHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fa2VybmVsc1tpXS0+cHJvY2Vz
cyhzb3VyY2UtPmNoYW5uZWwoaSktPnNwYW4oKS5kYXRhKCksIGRlc3RpbmF0aW9uLT5jaGFubmVs
KGkpLT5tdXRhYmxlU3BhbigpLmRhdGEoKSwgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgbV9r
ZXJuZWxzW2ldLT5wcm9jZXNzKHNvdXJjZS0+Y2hhbm5lbChpKS0+ZGF0YSgpLCBkZXN0aW5hdGlv
bi0+Y2hhbm5lbChpKS0+bXV0YWJsZURhdGEoKSwgZnJhbWVzVG9Qcm9jZXNzKTsKIH0KIAogdm9p
ZCBBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvcjo6cHJvY2Vzc09ubHlBdWRpb1BhcmFtcyhzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9SZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9SZXNhbXBsZXIuY3BwCmluZGV4IDc4M2U5OGU5NjRlZS4uNDFiNzE3NTc5ZDVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwCkBAIC05
OCw3ICs5OCw3IEBAIHZvaWQgQXVkaW9SZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92
aWRlciogcHJvdmlkZXIsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvCiAgICAgLy8gTm93IHRoYXQgd2Ug
aGF2ZSB0aGUgc291cmNlIGRhdGEsIHJlc2FtcGxlIGVhY2ggY2hhbm5lbCBpbnRvIHRoZSBkZXN0
aW5hdGlvbiBidXMuCiAgICAgLy8gRklYTUU6IG9wdGltaXplIGZvciB0aGUgY29tbW9uIHN0ZXJl
byBjYXNlIHdoZXJlIGl0J3MgZmFzdGVyIHRvIHByb2Nlc3MgYm90aCBsZWZ0L3JpZ2h0IGNoYW5u
ZWxzIGluIHRoZSBzYW1lIGlubmVyIGxvb3AuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bWJlck9mQ2hhbm5lbHM7ICsraSkgewotICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBk
ZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbChpKS0+bXV0YWJsZVNwYW4oKS5kYXRhKCk7CisgICAgICAg
IGZsb2F0KiBkZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uQnVzLT5jaGFubmVsKGkpLT5tdXRhYmxl
RGF0YSgpOwogICAgICAgICBtX2tlcm5lbHNbaV0tPnByb2Nlc3MoZGVzdGluYXRpb24sIGZyYW1l
c1RvUHJvY2Vzcyk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuY3BwCmluZGV4IGQ4MDg2NGUwM2Q1Yy4uZWQ4
MjUyMzkyZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Jlc2FtcGxlcktlcm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9SZXNhbXBsZXJLZXJuZWwuY3BwCkBAIC02NSwxNCArNjUsMTQgQEAgZmxvYXQqIEF1ZGlv
UmVzYW1wbGVyS2VybmVsOjpnZXRTb3VyY2VQb2ludGVyKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Ms
IHNpemVfdCogbnUKICAgICBpZiAoIWlzR29vZCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBy
ZXR1cm4gbV9zb3VyY2VCdWZmZXIubXV0YWJsZVNwYW4oKS5zdWJzcGFuKG1fZmlsbEluZGV4KS5k
YXRhKCk7CisgICAgcmV0dXJuIG1fc291cmNlQnVmZmVyLmRhdGEoKSArIG1fZmlsbEluZGV4Owog
fQogCiB2b2lkIEF1ZGlvUmVzYW1wbGVyS2VybmVsOjpwcm9jZXNzKGZsb2F0KiBkZXN0aW5hdGlv
biwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKICAgICBBU1NFUlQoZnJhbWVzVG9Qcm9jZXNz
IDw9IEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSk7CiAKLSAgICBmbG9hdCogc291
cmNlID0gbV9zb3VyY2VCdWZmZXIubXV0YWJsZVNwYW4oKS5kYXRhKCk7CisgICAgZmxvYXQqIHNv
dXJjZSA9IG1fc291cmNlQnVmZmVyLmRhdGEoKTsKICAgICAKICAgICBkb3VibGUgcmF0ZSA9IHRo
aXMtPnJhdGUoKTsKICAgICByYXRlID0gc3RkOjptYXgoMC4wLCByYXRlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9CaXF1YWQuY3BwCmluZGV4IGJlYTEyZWExMDFiYy4uMGQyZGZlOGIw
NDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9CaXF1YWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5jcHAKQEAgLTgyLDEx
ICs4MiwxMSBAQCB2b2lkIEJpcXVhZDo6cHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlUCwgZmxv
YXQqIGRlc3RQLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgICAgICBkb3VibGUgeTEgPSBt
X3kxOwogICAgICAgICBkb3VibGUgeTIgPSBtX3kyOwogCi0gICAgICAgIGF1dG8gYjAgPSBtX2Iw
LnNwYW4oKTsKLSAgICAgICAgYXV0byBiMSA9IG1fYjEuc3BhbigpOwotICAgICAgICBhdXRvIGIy
ID0gbV9iMi5zcGFuKCk7Ci0gICAgICAgIGF1dG8gYTEgPSBtX2ExLnNwYW4oKTsKLSAgICAgICAg
YXV0byBhMiA9IG1fYTIuc3BhbigpOworICAgICAgICBhdXRvKiBiMCA9IG1fYjAuZGF0YSgpOwor
ICAgICAgICBhdXRvKiBiMSA9IG1fYjEuZGF0YSgpOworICAgICAgICBhdXRvKiBiMiA9IG1fYjIu
ZGF0YSgpOworICAgICAgICBhdXRvKiBhMSA9IG1fYTEuZGF0YSgpOworICAgICAgICBhdXRvKiBh
MiA9IG1fYTIuZGF0YSgpOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgbjsgKytr
KSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBjYW4gYmUgb3B0aW1pemVkIGJ5IHBpcGVs
aW5pbmcgdGhlIG11bHRpcGx5IGFkZHMuLi4KQEAgLTEyMSw4ICsxMjEsOCBAQCB2b2lkIEJpcXVh
ZDo6cHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlUCwgZmxvYXQqIGRlc3RQLCBzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKQogICAgIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFKQotICAgIGF1dG8gaW5w
dXRQID0gbV9pbnB1dEJ1ZmZlci5tdXRhYmxlU3BhbigpOwotICAgIGF1dG8gb3V0cHV0UCA9IG1f
b3V0cHV0QnVmZmVyLm11dGFibGVTcGFuKCk7CisgICAgYXV0byogaW5wdXRQID0gbV9pbnB1dEJ1
ZmZlci5kYXRhKCk7CisgICAgYXV0byogb3V0cHV0UCA9IG1fb3V0cHV0QnVmZmVyLmRhdGEoKTsK
IAogICAgIC8vIFNldCB1cCBmaWx0ZXIgc3RhdGUuIFRoaXMgaXMgbmVlZGVkIGluIGNhc2Ugd2Un
cmUgc3dpdGNoaW5nIGZyb20KICAgICAvLyBmaWx0ZXJpbmcgd2l0aCB2YXJpYWJsZSBjb2VmZmlj
aWVudHMgKGkuZS4sIHdpdGggYXV0b21hdGlvbnMpIHRvCkBAIC0xOTgsOCArMTk4LDggQEAgdm9p
ZCBCaXF1YWQ6OnByb2Nlc3NGYXN0KGNvbnN0IGZsb2F0KiBzb3VyY2VQLCBmbG9hdCogZGVzdFAs
IHNpemVfdCBmcmFtZXNUb1Byb2MKICAgICBmaWx0ZXJDb2VmZmljaWVudHNbM10gPSBtX2ExWzBd
OwogICAgIGZpbHRlckNvZWZmaWNpZW50c1s0XSA9IG1fYTJbMF07CiAKLSAgICBkb3VibGUqIGlu
cHV0UCA9IG1faW5wdXRCdWZmZXIubXV0YWJsZVNwYW4oKS5kYXRhKCk7Ci0gICAgZG91YmxlKiBv
dXRwdXRQID0gbV9vdXRwdXRCdWZmZXIubXV0YWJsZVNwYW4oKS5kYXRhKCk7CisgICAgZG91Ymxl
KiBpbnB1dFAgPSBtX2lucHV0QnVmZmVyLmRhdGEoKTsKKyAgICBkb3VibGUqIG91dHB1dFAgPSBt
X291dHB1dEJ1ZmZlci5kYXRhKCk7CiAKICAgICBkb3VibGUqIGlucHV0MlAgPSBpbnB1dFAgKyAy
OwogICAgIGRvdWJsZSogb3V0cHV0MlAgPSBvdXRwdXRQICsgMjsKQEAgLTI0NiwxMSArMjQ2LDEx
IEBAIHZvaWQgQmlxdWFkOjpyZXNldCgpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEUpCiAgICAgLy8g
VHdvIGV4dHJhIHNhbXBsZXMgZm9yIGZpbHRlciBoaXN0b3J5Ci0gICAgYXV0byBpbnB1dFAgPSBt
X2lucHV0QnVmZmVyLm11dGFibGVTcGFuKCk7CisgICAgZG91YmxlKiBpbnB1dFAgPSBtX2lucHV0
QnVmZmVyLmRhdGEoKTsKICAgICBpbnB1dFBbMF0gPSAwOwogICAgIGlucHV0UFsxXSA9IDA7CiAK
LSAgICBhdXRvIG91dHB1dFAgPSBtX291dHB1dEJ1ZmZlci5tdXRhYmxlU3BhbigpOworICAgIGRv
dWJsZSogb3V0cHV0UCA9IG1fb3V0cHV0QnVmZmVyLmRhdGEoKTsKICAgICBvdXRwdXRQWzBdID0g
MDsKICAgICBvdXRwdXRQWzFdID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5jcHAKaW5kZXggN2I0NjFmZjRiYmM3Li5kNjk4
NzllM2UxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0RpcmVj
dENvbnZvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0
Q29udm9sdmVyLmNwcApAQCAtNTgsMTUgKzU4LDE1IEBAIHZvaWQgRGlyZWN0Q29udm9sdmVyOjpw
cm9jZXNzKEF1ZGlvRmxvYXRBcnJheSogY29udm9sdXRpb25LZXJuZWwsIGNvbnN0IGZsb2F0KiBz
CiAgICAgaWYgKGtlcm5lbFNpemUgPiBtX2lucHV0QmxvY2tTaXplKQogICAgICAgICByZXR1cm47
CiAKLSAgICBmbG9hdCoga2VybmVsUCA9IGNvbnZvbHV0aW9uS2VybmVsLT5tdXRhYmxlU3Bhbigp
LmRhdGEoKTsKKyAgICBmbG9hdCoga2VybmVsUCA9IGNvbnZvbHV0aW9uS2VybmVsLT5kYXRhKCk7
CiAKICAgICAvLyBTYW5pdHkgY2hlY2sKLSAgICBib29sIGlzQ29weUdvb2QgPSBrZXJuZWxQICYm
IHNvdXJjZVAgJiYgZGVzdFAgJiYgbV9idWZmZXIuc3BhbigpLmRhdGEoKTsKKyAgICBib29sIGlz
Q29weUdvb2QgPSBrZXJuZWxQICYmIHNvdXJjZVAgJiYgZGVzdFAgJiYgbV9idWZmZXIuZGF0YSgp
OwogICAgIEFTU0VSVChpc0NvcHlHb29kKTsKICAgICBpZiAoIWlzQ29weUdvb2QpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGZsb2F0KiBpbnB1dFAgPSBtX2J1ZmZlci5tdXRhYmxlU3BhbigpLnN1
YnNwYW4obV9pbnB1dEJsb2NrU2l6ZSkuZGF0YSgpOworICAgIGZsb2F0KiBpbnB1dFAgPSBtX2J1
ZmZlci5kYXRhKCkgKyBtX2lucHV0QmxvY2tTaXplOwogCiAgICAgLy8gQ29weSBzYW1wbGVzIHRv
IDJuZCBoYWxmIG9mIGlucHV0IGJ1ZmZlci4KICAgICBtZW1jcHkoaW5wdXRQLCBzb3VyY2VQLCBz
aXplb2YoZmxvYXQpICogZnJhbWVzVG9Qcm9jZXNzKTsKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lk
IERpcmVjdENvbnZvbHZlcjo6cHJvY2VzcyhBdWRpb0Zsb2F0QXJyYXkqIGNvbnZvbHV0aW9uS2Vy
bmVsLCBjb25zdCBmbG9hdCogcwogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFKQogCiAgICAgLy8g
Q29weSAybmQgaGFsZiBvZiBpbnB1dCBidWZmZXIgdG8gMXN0IGhhbGYuCi0gICAgbWVtY3B5KG1f
YnVmZmVyLm11dGFibGVTcGFuKCkuZGF0YSgpLCBpbnB1dFAsIHNpemVvZihmbG9hdCkgKiBmcmFt
ZXNUb1Byb2Nlc3MpOworICAgIG1lbWNweShtX2J1ZmZlci5kYXRhKCksIGlucHV0UCwgc2l6ZW9m
KGZsb2F0KSAqIGZyYW1lc1RvUHJvY2Vzcyk7CiB9CiAKIHZvaWQgRGlyZWN0Q29udm9sdmVyOjpy
ZXNldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2Ft
cGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5jcHAK
aW5kZXggMmRlOTgyNmQ3MzdkLi40ODAwMzM1ZTVjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5jcHAKQEAgLTEwNiwxMiArMTA2LDEyIEBAIHZvaWQg
RG93blNhbXBsZXI6OnByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZVAsIGZsb2F0KiBkZXN0UCwg
c2l6ZV90IHNvdXJjZUZyYW1lCiAgICAgaWYgKCFpc0lucHV0QnVmZmVyR29vZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZmxvYXQqIGlucHV0UCA9IG1faW5wdXRCdWZmZXIubXV0YWJsZVNwYW4o
KS5zdWJzcGFuKHNvdXJjZUZyYW1lc1RvUHJvY2VzcykuZGF0YSgpOworICAgIGZsb2F0KiBpbnB1
dFAgPSBtX2lucHV0QnVmZmVyLmRhdGEoKSArIHNvdXJjZUZyYW1lc1RvUHJvY2VzczsKICAgICBt
ZW1jcHkoaW5wdXRQLCBzb3VyY2VQLCBzaXplb2YoZmxvYXQpICogc291cmNlRnJhbWVzVG9Qcm9j
ZXNzKTsKIAogICAgIC8vIENvcHkgdGhlIG9kZCBzYW1wbGUtZnJhbWVzIGZyb20gc291cmNlUCwg
ZGVsYXllZCBieSBvbmUgc2FtcGxlLWZyYW1lIChkZXN0aW5hdGlvbiBzYW1wbGUtcmF0ZSkKICAg
ICAvLyB0byBtYXRjaCBzaGlmdGluZyBmb3J3YXJkIGluIHRpbWUgaW4gbV9yZWR1Y2VkS2VybmVs
LgotICAgIGZsb2F0KiBvZGRTYW1wbGVzUCA9IG1fdGVtcEJ1ZmZlci5tdXRhYmxlU3BhbigpLmRh
dGEoKTsKKyAgICBmbG9hdCogb2RkU2FtcGxlc1AgPSBtX3RlbXBCdWZmZXIuZGF0YSgpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXN0RnJhbWVzVG9Qcm9jZXNzOyArK2kpCiAgICAg
ICAgIG9kZFNhbXBsZXNQW2ldID0gKigoaW5wdXRQIC0gMSkgKyBpICogMik7CiAKQEAgLTEyOCw3
ICsxMjgsNyBAQCB2b2lkIERvd25TYW1wbGVyOjpwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2VQ
LCBmbG9hdCogZGVzdFAsIHNpemVfdCBzb3VyY2VGcmFtZQogICAgICAgICBkZXN0UFtpXSArPSAw
LjUgKiAqKChpbnB1dFAgLSBoYWxmU2l6ZSkgKyBpICogMik7CiAKICAgICAvLyBDb3B5IDJuZCBo
YWxmIG9mIGlucHV0IGJ1ZmZlciB0byAxc3QgaGFsZi4KLSAgICBtZW1jcHkobV9pbnB1dEJ1ZmZl
ci5tdXRhYmxlU3BhbigpLmRhdGEoKSwgaW5wdXRQLCBzaXplb2YoZmxvYXQpICogc291cmNlRnJh
bWVzVG9Qcm9jZXNzKTsKKyAgICBtZW1jcHkobV9pbnB1dEJ1ZmZlci5kYXRhKCksIGlucHV0UCwg
c2l6ZW9mKGZsb2F0KSAqIHNvdXJjZUZyYW1lc1RvUHJvY2Vzcyk7CiB9CiAKIHZvaWQgRG93blNh
bXBsZXI6OnJlc2V0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3IuY3BwCmluZGV4IDFiNjMwZTUzOTM5My4uNzMxOWUyMTJmYzNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNz
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvci5jcHAKQEAgLTEwNSwxMCArMTA1LDEwIEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjpw
cm9jZXNzKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvCiAK
ICAgICBzd2l0Y2ggKG51bWJlck9mQ2hhbm5lbHMpIHsKICAgICBjYXNlIDI6IC8vIHN0ZXJlbwot
ICAgICAgICBtX3NvdXJjZUNoYW5uZWxzWzBdID0gc291cmNlQnVzLT5jaGFubmVsKDApLT5zcGFu
KCkuZGF0YSgpOworICAgICAgICBtX3NvdXJjZUNoYW5uZWxzWzBdID0gc291cmNlQnVzLT5jaGFu
bmVsKDApLT5kYXRhKCk7CiAKICAgICAgICAgaWYgKG51bWJlck9mU291cmNlQ2hhbm5lbHMgPiAx
KQotICAgICAgICAgICAgbV9zb3VyY2VDaGFubmVsc1sxXSA9IHNvdXJjZUJ1cy0+Y2hhbm5lbCgx
KS0+c3BhbigpLmRhdGEoKTsKKyAgICAgICAgICAgIG1fc291cmNlQ2hhbm5lbHNbMV0gPSBzb3Vy
Y2VCdXMtPmNoYW5uZWwoMSktPmRhdGEoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgLy8g
U2ltcGx5IGR1cGxpY2F0ZSBtb25vIGNoYW5uZWwgaW5wdXQgZGF0YSB0byByaWdodCBjaGFubmVs
IGZvciBzdGVyZW8gcHJvY2Vzc2luZy4KICAgICAgICAgICAgIG1fc291cmNlQ2hhbm5lbHNbMV0g
PSBtX3NvdXJjZUNoYW5uZWxzWzBdOwpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgRHluYW1pY3ND
b21wcmVzc29yOjpwcm9jZXNzKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBk
ZXN0aW5hdGlvCiAgICAgfQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9m
Q2hhbm5lbHM7ICsraSkKLSAgICAgICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzW2ldID0gZGVzdGlu
YXRpb25CdXMtPmNoYW5uZWwoaSktPm11dGFibGVTcGFuKCkuZGF0YSgpOworICAgICAgICBtX2Rl
c3RpbmF0aW9uQ2hhbm5lbHNbaV0gPSBkZXN0aW5hdGlvbkJ1cy0+Y2hhbm5lbChpKS0+bXV0YWJs
ZURhdGEoKTsKIAogICAgIGZsb2F0IGRiVGhyZXNob2xkID0gcGFyYW1ldGVyVmFsdWUoUGFyYW1U
aHJlc2hvbGQpOwogICAgIGZsb2F0IGRiS25lZSA9IHBhcmFtZXRlclZhbHVlKFBhcmFtS25lZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yS2VybmVsLmNwcAppbmRleCA3MWEwOGJlMDk3ZTAuLmRmYTk0NjE5YTE0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
S2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3JLZXJuZWwuY3BwCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBEeW5hbWljc0NvbXBy
ZXNzb3JLZXJuZWw6OnByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZUNoYW5uZWxzW10sCiAKICAg
ICAgICAgICAgICAgICAvLyBQcmVkZWxheSBzaWduYWwsIGNvbXB1dGluZyBjb21wcmVzc2lvbiBh
bW91bnQgZnJvbSB1bi1kZWxheWVkIHZlcnNpb24uCiAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkgewotICAgICAgICAgICAgICAg
ICAgICBmbG9hdCogZGVsYXlCdWZmZXIgPSBtX3ByZURlbGF5QnVmZmVyc1tpXS0+bXV0YWJsZVNw
YW4oKS5kYXRhKCk7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0KiBkZWxheUJ1ZmZlciA9IG1f
cHJlRGVsYXlCdWZmZXJzW2ldLT5kYXRhKCk7CiAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHVu
ZGVsYXllZFNvdXJjZSA9IHNvdXJjZUNoYW5uZWxzW2ldW2ZyYW1lSW5kZXhdOwogICAgICAgICAg
ICAgICAgICAgICBkZWxheUJ1ZmZlcltwcmVEZWxheVdyaXRlSW5kZXhdID0gdW5kZWxheWVkU291
cmNlOwogCkBAIC00MjQsNyArNDI0LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6
OnByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZUNoYW5uZWxzW10sCiAKICAgICAgICAgICAgICAg
ICAvLyBBcHBseSBmaW5hbCBnYWluLgogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxv
YXQqIGRlbGF5QnVmZmVyID0gbV9wcmVEZWxheUJ1ZmZlcnNbaV0tPm11dGFibGVTcGFuKCkuZGF0
YSgpOworICAgICAgICAgICAgICAgICAgICBmbG9hdCogZGVsYXlCdWZmZXIgPSBtX3ByZURlbGF5
QnVmZmVyc1tpXS0+ZGF0YSgpOwogICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbkNoYW5u
ZWxzW2ldW2ZyYW1lSW5kZXhdID0gZGVsYXlCdWZmZXJbcHJlRGVsYXlSZWFkSW5kZXhdICogdG90
YWxHYWluOwogICAgICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmNwcAppbmRleCBmYTk2YzEzNWI4ZmMuLjhjNTg2
Y2NmYjU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQ
b3dlclBhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQ
b3dlclBhbm5lci5jcHAKQEAgLTkxLDEwICs5MSwxMCBAQCB2b2lkIEVxdWFsUG93ZXJQYW5uZXI6
OnBhbihkb3VibGUgYXppbXV0aCwgZG91YmxlIC8qZWxldmF0aW9uKi8sIGNvbnN0IEF1ZGlvQnVz
KgogICAgIGlmICghaXNPdXRwdXRTYWZlKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBm
bG9hdCogc291cmNlTCA9IGlucHV0QnVzLT5jaGFubmVsKDApLT5zcGFuKCkuZGF0YSgpOwotICAg
IGNvbnN0IGZsb2F0KiBzb3VyY2VSID0gbnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gMSA/IGlucHV0
QnVzLT5jaGFubmVsKDEpLT5zcGFuKCkuZGF0YSgpIDogc291cmNlTDsKLSAgICBmbG9hdCogZGVz
dGluYXRpb25MID0gb3V0cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlvQnVzOjpDaGFubmVsTGVm
dCktPm11dGFibGVTcGFuKCkuZGF0YSgpOwotICAgIGZsb2F0KiBkZXN0aW5hdGlvblIgPSBvdXRw
dXRCdXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCktPm11dGFibGVTcGFu
KCkuZGF0YSgpOworICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VMID0gaW5wdXRCdXMtPmNoYW5uZWwo
MCktPmRhdGEoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgY29uc3QgZmxv
YXQqIHNvdXJjZVIgPSBudW1iZXJPZklucHV0Q2hhbm5lbHMgPiAxID8gaW5wdXRCdXMtPmNoYW5u
ZWwoMSktPmRhdGEoKSA6IHNvdXJjZUw7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uTCA9IG91dHB1
dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbExlZnQpLT5tdXRhYmxlRGF0YSgp
OworICAgIGZsb2F0KiBkZXN0aW5hdGlvblIgPSBvdXRwdXRCdXMtPmNoYW5uZWxCeVR5cGUoQXVk
aW9CdXM6OkNoYW5uZWxSaWdodCktPm11dGFibGVEYXRhKCk7CiAgICAgCiAgICAgaWYgKCFzb3Vy
Y2VMIHx8ICFzb3VyY2VSIHx8ICFkZXN0aW5hdGlvbkwgfHwgIWRlc3RpbmF0aW9uUikKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTU2LDEwICsxNTYsMTAgQEAgdm9pZCBFcXVhbFBvd2VyUGFubmVyOjpw
YW5XaXRoU2FtcGxlQWNjdXJhdGVWYWx1ZXMoZG91YmxlKiBhemltdXRoLCBkb3VibGUqLCBjb24K
ICAgICBBU1NFUlQob3V0cHV0QnVzLT5udW1iZXJPZkNoYW5uZWxzKCkgPT0gMnUpOwogICAgIEFT
U0VSVChmcmFtZXNUb1Byb2Nlc3MgPD0gb3V0cHV0QnVzLT5sZW5ndGgoKSk7CiAKLSAgICBjb25z
dCBmbG9hdCogc291cmNlTCA9IGlucHV0QnVzLT5jaGFubmVsKDApLT5zcGFuKCkuZGF0YSgpOwot
ICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VSID0gbnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gMSA/IGlu
cHV0QnVzLT5jaGFubmVsKDEpLT5zcGFuKCkuZGF0YSgpIDogc291cmNlTDsKLSAgICBmbG9hdCog
ZGVzdGluYXRpb25MID0gb3V0cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlvQnVzOjpDaGFubmVs
TGVmdCktPm11dGFibGVTcGFuKCkuZGF0YSgpOwotICAgIGZsb2F0KiBkZXN0aW5hdGlvblIgPSBv
dXRwdXRCdXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCktPm11dGFibGVT
cGFuKCkuZGF0YSgpOworICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VMID0gaW5wdXRCdXMtPmNoYW5u
ZWwoMCktPmRhdGEoKTsKKyAgICBjb25zdCBmbG9hdCogc291cmNlUiA9IG51bWJlck9mSW5wdXRD
aGFubmVscyA+IDEgPyBpbnB1dEJ1cy0+Y2hhbm5lbCgxKS0+ZGF0YSgpIDogc291cmNlTDsKKyAg
ICBmbG9hdCogZGVzdGluYXRpb25MID0gb3V0cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlvQnVz
OjpDaGFubmVsTGVmdCktPm11dGFibGVEYXRhKCk7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9
IG91dHB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KS0+bXV0YWJs
ZURhdGEoKTsKIAogICAgIEFTU0VSVChzb3VyY2VMKTsKICAgICBBU1NFUlQoc291cmNlUik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmNwcAppbmRleCBk
Y2VkNGZlY2YwZGEuLjgxNjdmMWRmODAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9GRlRDb252b2x2ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgRkZUQ29udm9s
dmVyOjpwcm9jZXNzKEZGVEZyYW1lKiBmZnRLZXJuZWwsIGNvbnN0IGZsb2F0KiBzb3VyY2VQLCBm
bG9hdCogZGVzCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mRGl2aXNpb25z
OyArK2ksIHNvdXJjZVAgKz0gZGl2aXNpb25TaXplLCBkZXN0UCArPSBkaXZpc2lvblNpemUpIHsK
ICAgICAgICAgLy8gQ29weSBzYW1wbGVzIHRvIGlucHV0IGJ1ZmZlciAobm90ZSBjb250cmFpbnQg
YWJvdmUhKQotICAgICAgICBmbG9hdCogaW5wdXRQID0gbV9pbnB1dEJ1ZmZlci5tdXRhYmxlU3Bh
bigpLmRhdGEoKTsKKyAgICAgICAgZmxvYXQqIGlucHV0UCA9IG1faW5wdXRCdWZmZXIuZGF0YSgp
OwogCiAgICAgICAgIC8vIFNhbml0eSBjaGVjawogICAgICAgICBib29sIGlzQ29weUdvb2QxID0g
c291cmNlUCAmJiBpbnB1dFAgJiYgbV9yZWFkV3JpdGVJbmRleCArIGRpdmlzaW9uU2l6ZSA8PSBt
X2lucHV0QnVmZmVyLnNpemUoKTsKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBGRlRDb252b2x2ZXI6
OnByb2Nlc3MoRkZURnJhbWUqIGZmdEtlcm5lbCwgY29uc3QgZmxvYXQqIHNvdXJjZVAsIGZsb2F0
KiBkZXMKICAgICAgICAgbWVtY3B5KGlucHV0UCArIG1fcmVhZFdyaXRlSW5kZXgsIHNvdXJjZVAs
IHNpemVvZihmbG9hdCkgKiBkaXZpc2lvblNpemUpOwogCiAgICAgICAgIC8vIENvcHkgc2FtcGxl
cyBmcm9tIG91dHB1dCBidWZmZXIKLSAgICAgICAgZmxvYXQqIG91dHB1dFAgPSBtX291dHB1dEJ1
ZmZlci5tdXRhYmxlU3BhbigpLmRhdGEoKTsKKyAgICAgICAgZmxvYXQqIG91dHB1dFAgPSBtX291
dHB1dEJ1ZmZlci5kYXRhKCk7CiAKICAgICAgICAgLy8gU2FuaXR5IGNoZWNrCiAgICAgICAgIGJv
b2wgaXNDb3B5R29vZDIgPSBkZXN0UCAmJiBvdXRwdXRQICYmIG1fcmVhZFdyaXRlSW5kZXggKyBk
aXZpc2lvblNpemUgPD0gbV9vdXRwdXRCdWZmZXIuc2l6ZSgpOwpAQCAtODUsMTIgKzg1LDEyIEBA
IHZvaWQgRkZUQ29udm9sdmVyOjpwcm9jZXNzKEZGVEZyYW1lKiBmZnRLZXJuZWwsIGNvbnN0IGZs
b2F0KiBzb3VyY2VQLCBmbG9hdCogZGVzCiAgICAgICAgIC8vIENoZWNrIGlmIGl0J3MgdGltZSB0
byBwZXJmb3JtIHRoZSBuZXh0IEZGVAogICAgICAgICBpZiAobV9yZWFkV3JpdGVJbmRleCA9PSBo
YWxmU2l6ZSkgewogICAgICAgICAgICAgLy8gVGhlIGlucHV0IGJ1ZmZlciBpcyBub3cgZmlsbGVk
IChnZXQgZnJlcXVlbmN5LWRvbWFpbiB2ZXJzaW9uKQotICAgICAgICAgICAgbV9mcmFtZS5kb0ZG
VChtX2lucHV0QnVmZmVyLnNwYW4oKS5kYXRhKCkpOworICAgICAgICAgICAgbV9mcmFtZS5kb0ZG
VChtX2lucHV0QnVmZmVyLmRhdGEoKSk7CiAgICAgICAgICAgICBtX2ZyYW1lLm11bHRpcGx5KCpm
ZnRLZXJuZWwpOwotICAgICAgICAgICAgbV9mcmFtZS5kb0ludmVyc2VGRlQobV9vdXRwdXRCdWZm
ZXIubXV0YWJsZVNwYW4oKS5kYXRhKCkpOworICAgICAgICAgICAgbV9mcmFtZS5kb0ludmVyc2VG
RlQobV9vdXRwdXRCdWZmZXIuZGF0YSgpKTsKIAogICAgICAgICAgICAgLy8gT3ZlcmxhcC1hZGQg
MXN0IGhhbGYgZnJvbSBwcmV2aW91cyB0aW1lCi0gICAgICAgICAgICBWZWN0b3JNYXRoOjphZGQo
bV9vdXRwdXRCdWZmZXIuc3BhbigpLmRhdGEoKSwgbV9sYXN0T3ZlcmxhcEJ1ZmZlci5zcGFuKCku
ZGF0YSgpLCBtX291dHB1dEJ1ZmZlci5tdXRhYmxlU3BhbigpLmRhdGEoKSwgaGFsZlNpemUpOwor
ICAgICAgICAgICAgVmVjdG9yTWF0aDo6YWRkKG1fb3V0cHV0QnVmZmVyLmRhdGEoKSwgbV9sYXN0
T3ZlcmxhcEJ1ZmZlci5kYXRhKCksIG1fb3V0cHV0QnVmZmVyLmRhdGEoKSwgaGFsZlNpemUpOwog
CiAgICAgICAgICAgICAvLyBGaW5hbGx5LCBzYXZlIDJuZCBoYWxmIG9mIHJlc3VsdAogICAgICAg
ICAgICAgYm9vbCBpc0NvcHlHb29kMyA9IG1fb3V0cHV0QnVmZmVyLnNpemUoKSA9PSAyICogaGFs
ZlNpemUgJiYgbV9sYXN0T3ZlcmxhcEJ1ZmZlci5zaXplKCkgPT0gaGFsZlNpemU7CkBAIC05OCw3
ICs5OCw3IEBAIHZvaWQgRkZUQ29udm9sdmVyOjpwcm9jZXNzKEZGVEZyYW1lKiBmZnRLZXJuZWws
IGNvbnN0IGZsb2F0KiBzb3VyY2VQLCBmbG9hdCogZGVzCiAgICAgICAgICAgICBpZiAoIWlzQ29w
eUdvb2QzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgbWVtY3B5U3Bh
bihtX2xhc3RPdmVybGFwQnVmZmVyLm11dGFibGVTcGFuKCkuZmlyc3QoaGFsZlNpemUpLCBtX291
dHB1dEJ1ZmZlci5zcGFuKCkuc3Vic3BhbihoYWxmU2l6ZSwgaGFsZlNpemUpKTsKKyAgICAgICAg
ICAgIG1lbWNweShtX2xhc3RPdmVybGFwQnVmZmVyLmRhdGEoKSwgbV9vdXRwdXRCdWZmZXIuZGF0
YSgpICsgaGFsZlNpemUsIHNpemVvZihmbG9hdCkgKiBoYWxmU2l6ZSk7CiAKICAgICAgICAgICAg
IC8vIFJlc2V0IGluZGV4IGJhY2sgdG8gc3RhcnQgZm9yIG5leHQgdGltZQogICAgICAgICAgICAg
bV9yZWFkV3JpdGVJbmRleCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9GRlRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRG
cmFtZS5jcHAKaW5kZXggOGY2ZjA0YjIyMDJhLi5mZTFiZTA0MTdmMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBG
RlRGcmFtZTo6ZG9QYWRkZWRGRlQoY29uc3QgZmxvYXQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkK
ICAgICBwYWRkZWRSZXNwb25zZS5jb3B5VG9SYW5nZShkYXRhLCAwLCBkYXRhU2l6ZSk7CiAKICAg
ICAvLyBHZXQgdGhlIGZyZXF1ZW5jeS1kb21haW4gdmVyc2lvbiBvZiBwYWRkZWQgcmVzcG9uc2UK
LSAgICBkb0ZGVChwYWRkZWRSZXNwb25zZS5zcGFuKCkuZGF0YSgpKTsKKyAgICBkb0ZGVChwYWRk
ZWRSZXNwb25zZS5kYXRhKCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RkZURnJhbWU+IEZGVEZy
YW1lOjpjcmVhdGVJbnRlcnBvbGF0ZWRGcmFtZShjb25zdCBGRlRGcmFtZSYgZnJhbWUxLCBjb25z
dCBGRlRGcmFtZSYgZnJhbWUyLCBkb3VibGUgeCkKQEAgLTYyLDExICs2MiwxMSBAQCBzdGQ6OnVu
aXF1ZV9wdHI8RkZURnJhbWU+IEZGVEZyYW1lOjpjcmVhdGVJbnRlcnBvbGF0ZWRGcmFtZShjb25z
dCBGRlRGcmFtZSYgZnJhbQogICAgIC8vIEluIHRoZSB0aW1lLWRvbWFpbiwgdGhlIDJuZCBoYWxm
IG9mIHRoZSByZXNwb25zZSBtdXN0IGJlIHplcm8sIHRvIGF2b2lkIGNpcmN1bGFyIGNvbnZvbHV0
aW9uIGFsaWFzaW5nLi4uCiAgICAgaW50IGZmdFNpemUgPSBuZXdGcmFtZS0+ZmZ0U2l6ZSgpOwog
ICAgIEF1ZGlvRmxvYXRBcnJheSBidWZmZXIoZmZ0U2l6ZSk7Ci0gICAgbmV3RnJhbWUtPmRvSW52
ZXJzZUZGVChidWZmZXIubXV0YWJsZVNwYW4oKS5kYXRhKCkpOworICAgIG5ld0ZyYW1lLT5kb0lu
dmVyc2VGRlQoYnVmZmVyLmRhdGEoKSk7CiAgICAgYnVmZmVyLnplcm9SYW5nZShmZnRTaXplIC8g
MiwgZmZ0U2l6ZSk7CiAKICAgICAvLyBQdXQgYmFjayBpbnRvIGZyZXF1ZW5jeSBkb21haW4uCi0g
ICAgbmV3RnJhbWUtPmRvRkZUKGJ1ZmZlci5zcGFuKCkuZGF0YSgpKTsKKyAgICBuZXdGcmFtZS0+
ZG9GRlQoYnVmZmVyLmRhdGEoKSk7CiAKICAgICByZXR1cm4gbmV3RnJhbWU7CiB9CkBAIC0xNzUs
OCArMTc1LDggQEAgdm9pZCBGRlRGcmFtZTo6aW50ZXJwb2xhdGVGcmVxdWVuY3lDb21wb25lbnRz
KGNvbnN0IEZGVEZyYW1lJiBmcmFtZTEsIGNvbnN0IEZGVEYKIAogdm9pZCBGRlRGcmFtZTo6c2Nh
bGVGRlQoZmxvYXQgZmFjdG9yKQogewotICAgIFZlY3Rvck1hdGg6Om11bHRpcGx5QnlTY2FsYXIo
cmVhbERhdGEoKS5zcGFuKCkuZGF0YSgpLCBmYWN0b3IsIHJlYWxEYXRhKCkubXV0YWJsZVNwYW4o
KS5kYXRhKCksIHJlYWxEYXRhKCkuc2l6ZSgpKTsKLSAgICBWZWN0b3JNYXRoOjptdWx0aXBseUJ5
U2NhbGFyKGltYWdEYXRhKCkuc3BhbigpLmRhdGEoKSwgZmFjdG9yLCBpbWFnRGF0YSgpLm11dGFi
bGVTcGFuKCkuZGF0YSgpLCByZWFsRGF0YSgpLnNpemUoKSk7CisgICAgVmVjdG9yTWF0aDo6bXVs
dGlwbHlCeVNjYWxhcihyZWFsRGF0YSgpLmRhdGEoKSwgZmFjdG9yLCByZWFsRGF0YSgpLmRhdGEo
KSwgcmVhbERhdGEoKS5zaXplKCkpOworICAgIFZlY3Rvck1hdGg6Om11bHRpcGx5QnlTY2FsYXIo
aW1hZ0RhdGEoKS5kYXRhKCksIGZhY3RvciwgaW1hZ0RhdGEoKS5kYXRhKCksIHJlYWxEYXRhKCku
c2l6ZSgpKTsKIH0KIAogdm9pZCBGRlRGcmFtZTo6bXVsdGlwbHkoY29uc3QgRkZURnJhbWUmIGZy
YW1lKQpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgRkZURnJhbWU6Om11bHRpcGx5KGNvbnN0IEZG
VEZyYW1lJiBmcmFtZSkKICAgICBmbG9hdCBpbWFnMCA9IGltYWdQMVswXTsKIAogICAgIC8vIENv
bXBsZXggbXVsdGlwbHkKLSAgICBWZWN0b3JNYXRoOjptdWx0aXBseUNvbXBsZXgocmVhbFAxLnNw
YW4oKS5kYXRhKCksIGltYWdQMS5zcGFuKCkuZGF0YSgpLCByZWFsUDIuc3BhbigpLmRhdGEoKSwg
aW1hZ1AyLnNwYW4oKS5kYXRhKCksIHJlYWxQMS5tdXRhYmxlU3BhbigpLmRhdGEoKSwgaW1hZ1Ax
Lm11dGFibGVTcGFuKCkuZGF0YSgpLCBoYWxmU2l6ZSk7CisgICAgVmVjdG9yTWF0aDo6bXVsdGlw
bHlDb21wbGV4KHJlYWxQMS5kYXRhKCksIGltYWdQMS5kYXRhKCksIHJlYWxQMi5kYXRhKCksIGlt
YWdQMi5kYXRhKCksIHJlYWxQMS5kYXRhKCksIGltYWdQMS5kYXRhKCksIGhhbGZTaXplKTsKIAog
ICAgIC8vIE11bHRpcGx5IHRoZSBwYWNrZWQgREMvbnlxdWlzdCBjb21wb25lbnQKICAgICByZWFs
UDFbMF0gPSByZWFsMCAqIHJlYWxQMlswXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURktlcm5lbC5jcHAKaW5kZXggYzNjOTdkY2RkNTNiLi4wNjQ3ODEyOGU0NjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCkBAIC00OCw3ICs0
OCw3IEBAIHN0YXRpYyBmbG9hdCBleHRyYWN0QXZlcmFnZUdyb3VwRGVsYXkoQXVkaW9DaGFubmVs
KiBjaGFubmVsLCBzaXplX3QgYW5hbHlzaXNGRlRTCiB7CiAgICAgQVNTRVJUKGNoYW5uZWwpOwog
ICAgICAgICAKLSAgICBmbG9hdCogaW1wdWxzZVAgPSBjaGFubmVsLT5tdXRhYmxlU3BhbigpLmRh
dGEoKTsKKyAgICBmbG9hdCogaW1wdWxzZVAgPSBjaGFubmVsLT5tdXRhYmxlRGF0YSgpOwogICAg
IAogICAgIGJvb2wgaXNTaXplR29vZCA9IGNoYW5uZWwtPmxlbmd0aCgpID49IGFuYWx5c2lzRkZU
U2l6ZTsKICAgICBBU1NFUlQoaXNTaXplR29vZCk7CkBAIC03NSw3ICs3NSw3IEBAIEhSVEZLZXJu
ZWw6OkhSVEZLZXJuZWwoQXVkaW9DaGFubmVsKiBjaGFubmVsLCBzaXplX3QgZmZ0U2l6ZSwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICAvLyBEZXRlcm1pbmUgdGhlIGxlYWRpbmcgZGVsYXkgKGF2ZXJh
Z2UgZ3JvdXAgZGVsYXkpIGZvciB0aGUgcmVzcG9uc2UuCiAgICAgbV9mcmFtZURlbGF5ID0gZXh0
cmFjdEF2ZXJhZ2VHcm91cERlbGF5KGNoYW5uZWwsIGZmdFNpemUgLyAyKTsKIAotICAgIGZsb2F0
KiBpbXB1bHNlUmVzcG9uc2UgPSBjaGFubmVsLT5tdXRhYmxlU3BhbigpLmRhdGEoKTsKKyAgICBm
bG9hdCogaW1wdWxzZVJlc3BvbnNlID0gY2hhbm5lbC0+bXV0YWJsZURhdGEoKTsKICAgICBzaXpl
X3QgcmVzcG9uc2VMZW5ndGggPSBjaGFubmVsLT5sZW5ndGgoKTsKIAogICAgIC8vIFdlIG5lZWQg
dG8gdHJ1bmNhdGUgdG8gZml0IGludG8gMS8yIHRoZSBGRlQgc2l6ZSAod2l0aCB6ZXJvIHBhZGRp
bmcpIGluIG9yZGVyIHRvIGRvIHByb3BlciBjb252b2x1dGlvbi4KQEAgLTEwNyw3ICsxMDcsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9DaGFubmVsPiBIUlRGS2VybmVsOjpjcmVhdGVJbXB1bHNl
UmVzcG9uc2UoKQogCiAgICAgLy8gQWRkIGxlYWRpbmcgZGVsYXkgYmFjayBpbi4KICAgICBmZnRG
cmFtZS5hZGRDb25zdGFudEdyb3VwRGVsYXkobV9mcmFtZURlbGF5KTsKLSAgICBmZnRGcmFtZS5k
b0ludmVyc2VGRlQoY2hhbm5lbC0+bXV0YWJsZVNwYW4oKS5kYXRhKCkpOworICAgIGZmdEZyYW1l
LmRvSW52ZXJzZUZGVChjaGFubmVsLT5tdXRhYmxlRGF0YSgpKTsKIAogICAgIHJldHVybiBjaGFu
bmVsOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBh
bm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcApp
bmRleCA1YWM5ZWIyYzAwYTYuLmY3ZTIwMjExODMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHAKQEAgLTE2OCwxMCArMTY4LDEwIEBAIHZvaWQgSFJU
RlBhbm5lcjo6cGFuKGRvdWJsZSBkZXNpcmVkQXppbXV0aCwgZG91YmxlIGVsZXZhdGlvbiwgY29u
c3QgQXVkaW9CdXMqIGluCiAgICAgY29uc3QgQXVkaW9DaGFubmVsKiBpbnB1dENoYW5uZWxSID0g
bnVtSW5wdXRDaGFubmVscyA+IDEgPyBpbnB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6
Q2hhbm5lbFJpZ2h0KSA6IDA7CiAKICAgICAvLyBHZXQgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBw
b2ludGVycy4KLSAgICBjb25zdCBmbG9hdCogc291cmNlTCA9IGlucHV0Q2hhbm5lbEwtPnNwYW4o
KS5kYXRhKCk7Ci0gICAgY29uc3QgZmxvYXQqIHNvdXJjZVIgPSBudW1JbnB1dENoYW5uZWxzID4g
MSA/IGlucHV0Q2hhbm5lbFItPnNwYW4oKS5kYXRhKCkgOiBzb3VyY2VMOwotICAgIGZsb2F0KiBk
ZXN0aW5hdGlvbkwgPSBvdXRwdXRCdXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxM
ZWZ0KS0+bXV0YWJsZVNwYW4oKS5kYXRhKCk7Ci0gICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IG91
dHB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbFJpZ2h0KS0+bXV0YWJsZVNw
YW4oKS5kYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHNvdXJjZUwgPSBpbnB1dENoYW5uZWxMLT5k
YXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHNvdXJjZVIgPSBudW1JbnB1dENoYW5uZWxzID4gMSA/
IGlucHV0Q2hhbm5lbFItPmRhdGEoKSA6IHNvdXJjZUw7CisgICAgZmxvYXQqIGRlc3RpbmF0aW9u
TCA9IG91dHB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbExlZnQpLT5tdXRh
YmxlRGF0YSgpOworICAgIGZsb2F0KiBkZXN0aW5hdGlvblIgPSBvdXRwdXRCdXMtPmNoYW5uZWxC
eVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCktPm11dGFibGVEYXRhKCk7CiAKICAgICBkb3Vi
bGUgYXppbXV0aEJsZW5kOwogICAgIGludCBkZXNpcmVkQXppbXV0aEluZGV4ID0gY2FsY3VsYXRl
RGVzaXJlZEF6aW11dGhJbmRleEFuZEJsZW5kKGF6aW11dGgsIGF6aW11dGhCbGVuZCk7CkBAIC0y
NTksMTAgKzI1OSwxMCBAQCB2b2lkIEhSVEZQYW5uZXI6OnBhbihkb3VibGUgZGVzaXJlZEF6aW11
dGgsIGRvdWJsZSBlbGV2YXRpb24sIGNvbnN0IEF1ZGlvQnVzKiBpbgogICAgICAgICBib29sIG5l
ZWRzQ3Jvc3NmYWRpbmcgPSBtX2Nyb3NzZmFkZUluY3I7CiAgICAgICAgIAogICAgICAgICAvLyBI
YXZlIHRoZSBjb252b2x2ZXJzIHJlbmRlciBkaXJlY3RseSB0byB0aGUgZmluYWwgZGVzdGluYXRp
b24gaWYgd2UncmUgbm90IGNyb3NzLWZhZGluZy4KLSAgICAgICAgZmxvYXQqIGNvbnZvbHV0aW9u
RGVzdGluYXRpb25MMSA9IG5lZWRzQ3Jvc3NmYWRpbmcgPyBtX3RlbXBMMS5tdXRhYmxlU3Bhbigp
LmRhdGEoKSA6IHNlZ21lbnREZXN0aW5hdGlvbkw7Ci0gICAgICAgIGZsb2F0KiBjb252b2x1dGlv
bkRlc3RpbmF0aW9uUjEgPSBuZWVkc0Nyb3NzZmFkaW5nID8gbV90ZW1wUjEubXV0YWJsZVNwYW4o
KS5kYXRhKCkgOiBzZWdtZW50RGVzdGluYXRpb25SOwotICAgICAgICBmbG9hdCogY29udm9sdXRp
b25EZXN0aW5hdGlvbkwyID0gbmVlZHNDcm9zc2ZhZGluZyA/IG1fdGVtcEwyLm11dGFibGVTcGFu
KCkuZGF0YSgpIDogc2VnbWVudERlc3RpbmF0aW9uTDsKLSAgICAgICAgZmxvYXQqIGNvbnZvbHV0
aW9uRGVzdGluYXRpb25SMiA9IG5lZWRzQ3Jvc3NmYWRpbmcgPyBtX3RlbXBSMi5tdXRhYmxlU3Bh
bigpLmRhdGEoKSA6IHNlZ21lbnREZXN0aW5hdGlvblI7CisgICAgICAgIGZsb2F0KiBjb252b2x1
dGlvbkRlc3RpbmF0aW9uTDEgPSBuZWVkc0Nyb3NzZmFkaW5nID8gbV90ZW1wTDEuZGF0YSgpIDog
c2VnbWVudERlc3RpbmF0aW9uTDsKKyAgICAgICAgZmxvYXQqIGNvbnZvbHV0aW9uRGVzdGluYXRp
b25SMSA9IG5lZWRzQ3Jvc3NmYWRpbmcgPyBtX3RlbXBSMS5kYXRhKCkgOiBzZWdtZW50RGVzdGlu
YXRpb25SOworICAgICAgICBmbG9hdCogY29udm9sdXRpb25EZXN0aW5hdGlvbkwyID0gbmVlZHND
cm9zc2ZhZGluZyA/IG1fdGVtcEwyLmRhdGEoKSA6IHNlZ21lbnREZXN0aW5hdGlvbkw7CisgICAg
ICAgIGZsb2F0KiBjb252b2x1dGlvbkRlc3RpbmF0aW9uUjIgPSBuZWVkc0Nyb3NzZmFkaW5nID8g
bV90ZW1wUjIuZGF0YSgpIDogc2VnbWVudERlc3RpbmF0aW9uUjsKIAogICAgICAgICAvLyBOb3cg
ZG8gdGhlIGNvbnZvbHV0aW9ucy4KICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGF2b2lkIGRvaW5n
IGNvbnZvbHV0aW9ucyBvbiBib3RoIHNldHMgb2YgY29udm9sdmVycyBpZiB3ZSdyZSBub3QgY3Vy
cmVudGx5IGNyb3NzLWZhZGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0lJUkZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9JSVJG
aWx0ZXIuY3BwCmluZGV4IGU4MzVmNjNlYzU4Ny4uYzdiMzA5MmMxMjljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9JSVJGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0lJUkZpbHRlci5jcHAKQEAgLTIwMSwxNiArMjAxLDE2IEBA
IGRvdWJsZSBJSVJGaWx0ZXI6OnRhaWxUaW1lKGRvdWJsZSBzYW1wbGVSYXRlLCBib29sIGlzRmls
dGVyU3RhYmxlKQogICAgIGlucHV0WzBdID0gMTsKIAogICAgIC8vIFByb2Nlc3MgdGhlIGZpcnN0
IGJsb2NrIGFuZCBnZXQgdGhlIG1heCBtYWduaXR1ZGUgb2YgdGhlIG91dHB1dC4KLSAgICBwcm9j
ZXNzKGlucHV0LnNwYW4oKS5kYXRhKCksIG91dHB1dC5tdXRhYmxlU3BhbigpLmRhdGEoKSwgQXVk
aW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplKTsKLSAgICBtYWduaXR1ZGVzWzBdID0gVmVj
dG9yTWF0aDo6bWF4aW11bU1hZ25pdHVkZShvdXRwdXQuc3BhbigpLmRhdGEoKSwgQXVkaW9VdGls
aXRpZXM6OnJlbmRlclF1YW50dW1TaXplKTsKKyAgICBwcm9jZXNzKGlucHV0LmRhdGEoKSwgb3V0
cHV0LmRhdGEoKSwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplKTsKKyAgICBtYWdu
aXR1ZGVzWzBdID0gVmVjdG9yTWF0aDo6bWF4aW11bU1hZ25pdHVkZShvdXRwdXQuZGF0YSgpLCBB
dWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemUpOwogCiAgICAgLy8gUHJvY2VzcyB0aGUg
cmVzdCBvZiB0aGUgc2lnbmFsLCBnZXR0aW5nIHRoZSBtYXggbWFnbml0dWRlIG9mIHRoZQogICAg
IC8vIG91dHB1dCBmb3IgZWFjaCBibG9jay4KICAgICBpbnB1dFswXSA9IDA7CiAKICAgICBmb3Ig
KGludCBrID0gMTsgayA8IG51bWJlck9mQmxvY2tzOyArK2spIHsKLSAgICAgICAgcHJvY2Vzcyhp
bnB1dC5zcGFuKCkuZGF0YSgpLCBvdXRwdXQubXV0YWJsZVNwYW4oKS5kYXRhKCksIEF1ZGlvVXRp
bGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSk7Ci0gICAgICAgIG1hZ25pdHVkZXNba10gPSBWZWN0
b3JNYXRoOjptYXhpbXVtTWFnbml0dWRlKG91dHB1dC5zcGFuKCkuZGF0YSgpLCBBdWRpb1V0aWxp
dGllczo6cmVuZGVyUXVhbnR1bVNpemUpOworICAgICAgICBwcm9jZXNzKGlucHV0LmRhdGEoKSwg
b3V0cHV0LmRhdGEoKSwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplKTsKKyAgICAg
ICAgbWFnbml0dWRlc1trXSA9IFZlY3Rvck1hdGg6Om1heGltdW1NYWduaXR1ZGUob3V0cHV0LmRh
dGEoKSwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplKTsKICAgICB9CiAKICAgICAv
LyBEb25lIGNvbXB1dGluZyB0aGUgaW1wdWxzZSByZXNwb25zZTsgcmVzZXQgdGhlIHN0YXRlIHNv
IHRoZSBhY3R1YWwgbm9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKaW5kZXggYTE4ZDYyYTcwODBjLi42MDgwYjhm
ODk2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hh
bm5lbFJlc2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVs
dGlDaGFubmVsUmVzYW1wbGVyLmNwcApAQCAtNTAsNyArNTAsNyBAQCBNdWx0aUNoYW5uZWxSZXNh
bXBsZXI6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVk
IG51bWJlcgogICAgICAgICBtX2NoYW5uZWxzTWVtb3J5ID0gVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxBdWRpb0Zsb2F0QXJyYXk+PihudW1iZXJPZkNoYW5uZWxzIC0gMSwgWyZdKHNpemVfdCBpKSB7
CiAgICAgICAgICAgICBzaXplX3QgY2hhbm5lbEluZGV4ID0gaSArIDE7CiAgICAgICAgICAgICBh
dXRvIGZsb2F0QXJyYXkgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4ocmVxdWVzdEZyYW1l
cyk7Ci0gICAgICAgICAgICBtX211bHRpQ2hhbm5lbEJ1cy0+c2V0Q2hhbm5lbE1lbW9yeShjaGFu
bmVsSW5kZXgsIGZsb2F0QXJyYXktPm11dGFibGVTcGFuKCkuZGF0YSgpLCByZXF1ZXN0RnJhbWVz
KTsKKyAgICAgICAgICAgIG1fbXVsdGlDaGFubmVsQnVzLT5zZXRDaGFubmVsTWVtb3J5KGNoYW5u
ZWxJbmRleCwgZmxvYXRBcnJheS0+ZGF0YSgpLCByZXF1ZXN0RnJhbWVzKTsKICAgICAgICAgICAg
IHJldHVybiBmbG9hdEFycmF5OwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QdXNoUHVsbEZJRk8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUHVzaFB1bGxGSUZPLmNwcAppbmRleCA1MTY4NTI5OTJjOTkuLjNl
ZGU2MmNlMjNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUHVz
aFB1bGxGSUZPLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QdXNoUHVs
bEZJRk8uY3BwCkBAIC01Miw4ICs1Miw4IEBAIHZvaWQgUHVzaFB1bGxGSUZPOjpwdXNoKGNvbnN0
IEF1ZGlvQnVzKiBpbnB1dEJ1cykKICAgICBjb25zdCBzaXplX3QgcmVtYWluZGVyID0gbV9maWZv
TGVuZ3RoIC0gbV9pbmRleFdyaXRlOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
Zmlmb0J1cy0+bnVtYmVyT2ZDaGFubmVscygpOyArK2kpIHsKLSAgICAgICAgZmxvYXQqIGZpZm9C
dXNDaGFubmVsID0gbV9maWZvQnVzLT5jaGFubmVsKGkpLT5tdXRhYmxlU3BhbigpLmRhdGEoKTsK
LSAgICAgICAgY29uc3QgZmxvYXQqIGlucHV0QnVzQ2hhbm5lbCA9IGlucHV0QnVzLT5jaGFubmVs
KGkpLT5zcGFuKCkuZGF0YSgpOworICAgICAgICBmbG9hdCogZmlmb0J1c0NoYW5uZWwgPSBtX2Zp
Zm9CdXMtPmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCk7CisgICAgICAgIGNvbnN0IGZsb2F0KiBp
bnB1dEJ1c0NoYW5uZWwgPSBpbnB1dEJ1cy0+Y2hhbm5lbChpKS0+ZGF0YSgpOwogICAgICAgICBp
ZiAocmVtYWluZGVyID49IGlucHV0QnVzTGVuZ3RoKSB7CiAgICAgICAgICAgICAvLyBUaGUgcmVt
YWluZGVyIGlzIGJpZyBlbm91Z2ggZm9yIHRoZSBpbnB1dCBkYXRhLgogICAgICAgICAgICAgbWVt
Y3B5KGZpZm9CdXNDaGFubmVsICsgbV9pbmRleFdyaXRlLCBpbnB1dEJ1c0NoYW5uZWwsIGlucHV0
QnVzTGVuZ3RoICogc2l6ZW9mKCpmaWZvQnVzQ2hhbm5lbCkpOwpAQCAtOTAsOCArOTAsOCBAQCBz
aXplX3QgUHVzaFB1bGxGSUZPOjpwdWxsKEF1ZGlvQnVzKiBvdXRwdXRCdXMsIHNpemVfdCBmcmFt
ZXNSZXF1ZXN0ZWQpCiAgICAgY29uc3Qgc2l6ZV90IGZyYW1lc1RvRmlsbCA9IHN0ZDo6bWluKG1f
ZnJhbWVzQXZhaWxhYmxlLCBmcmFtZXNSZXF1ZXN0ZWQpOwogCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fZmlmb0J1cy0+bnVtYmVyT2ZDaGFubmVscygpOyArK2kpIHsKLSAgICAgICAg
Y29uc3QgZmxvYXQqIGZpZm9CdXNDaGFubmVsID0gbV9maWZvQnVzLT5jaGFubmVsKGkpLT5zcGFu
KCkuZGF0YSgpOwotICAgICAgICBmbG9hdCogb3V0cHV0QnVzQ2hhbm5lbCA9IG91dHB1dEJ1cy0+
Y2hhbm5lbChpKS0+bXV0YWJsZVNwYW4oKS5kYXRhKCk7CisgICAgICAgIGNvbnN0IGZsb2F0KiBm
aWZvQnVzQ2hhbm5lbCA9IG1fZmlmb0J1cy0+Y2hhbm5lbChpKS0+ZGF0YSgpOworICAgICAgICBm
bG9hdCogb3V0cHV0QnVzQ2hhbm5lbCA9IG91dHB1dEJ1cy0+Y2hhbm5lbChpKS0+bXV0YWJsZURh
dGEoKTsKIAogICAgICAgICAvLyBGaWxsIHVwIHRoZSBvdXRwdXQgYnVzIHdpdGggdGhlIGF2YWls
YWJsZSBmcmFtZXMgZmlyc3QuCiAgICAgICAgIGlmIChyZW1haW5kZXIgPj0gZnJhbWVzVG9GaWxs
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcAppbmRleCA5YTg4YjIw
MWZlYWIuLmNhMGNlYTBlMGNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUmV2ZXJiLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmIuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyBmbG9hdCBjYWxjdWxhdGVOb3JtYWxpemF0
aW9uU2NhbGUoQXVkaW9CdXMqIHJlc3BvbnNlKQogICAgIGZsb2F0IHBvd2VyID0gMDsKIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKQotICAgICAgICBw
b3dlciArPSBWZWN0b3JNYXRoOjpzdW1PZlNxdWFyZXMocmVzcG9uc2UtPmNoYW5uZWwoaSktPnNw
YW4oKS5kYXRhKCksIGxlbmd0aCk7CisgICAgICAgIHBvd2VyICs9IFZlY3Rvck1hdGg6OnN1bU9m
U3F1YXJlcyhyZXNwb25zZS0+Y2hhbm5lbChpKS0+ZGF0YSgpLCBsZW5ndGgpOwogCiAgICAgcG93
ZXIgPSBzcXJ0KHBvd2VyIC8gKG51bWJlck9mQ2hhbm5lbHMgKiBsZW5ndGgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlv
bkJ1ZmZlci5jcHAKaW5kZXggOGEyY2QxOGM5YTliLi4zMmFiYmJiN2ZjMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9u
QnVmZmVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZl
cjo6cmVhZEFuZENsZWFyKGZsb2F0KiBkZXN0aW5hdGlvbiwgc2l6ZV90IG51bWJlck9mRgogICAg
IHNpemVfdCBudW1iZXJPZkZyYW1lczEgPSBzdGQ6Om1pbihudW1iZXJPZkZyYW1lcywgZnJhbWVz
QXZhaWxhYmxlKTsKICAgICBzaXplX3QgbnVtYmVyT2ZGcmFtZXMyID0gbnVtYmVyT2ZGcmFtZXMg
LSBudW1iZXJPZkZyYW1lczE7CiAKLSAgICBmbG9hdCogc291cmNlID0gbV9idWZmZXIubXV0YWJs
ZVNwYW4oKS5kYXRhKCk7CisgICAgZmxvYXQqIHNvdXJjZSA9IG1fYnVmZmVyLmRhdGEoKTsKICAg
ICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSArIG1fcmVhZEluZGV4LCBzaXplb2YoZmxvYXQp
ICogbnVtYmVyT2ZGcmFtZXMxKTsKICAgICBtZW1zZXQoc291cmNlICsgbV9yZWFkSW5kZXgsIDAs
IHNpemVvZihmbG9hdCkgKiBudW1iZXJPZkZyYW1lczEpOwogCkBAIC04OSw3ICs4OSw3IEBAIGlu
dCBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXI6OmFjY3VtdWxhdGUoZmxvYXQqIHNvdXJjZSwgc2l6
ZV90IG51bWJlck9mRnJhbWVzLCBpCiAgICAgc2l6ZV90IG51bWJlck9mRnJhbWVzMSA9IHN0ZDo6
bWluKG51bWJlck9mRnJhbWVzLCBmcmFtZXNBdmFpbGFibGUpOwogICAgIHNpemVfdCBudW1iZXJP
ZkZyYW1lczIgPSBudW1iZXJPZkZyYW1lcyAtIG51bWJlck9mRnJhbWVzMTsKIAotICAgIGZsb2F0
KiBkZXN0aW5hdGlvbiA9IG1fYnVmZmVyLm11dGFibGVTcGFuKCkuZGF0YSgpOworICAgIGZsb2F0
KiBkZXN0aW5hdGlvbiA9IG1fYnVmZmVyLmRhdGEoKTsKIAogICAgIGJvb2wgaXNTYWZlID0gd3Jp
dGVJbmRleCA8PSBidWZmZXJMZW5ndGggJiYgbnVtYmVyT2ZGcmFtZXMxICsgd3JpdGVJbmRleCA8
PSBidWZmZXJMZW5ndGggJiYgbnVtYmVyT2ZGcmFtZXMyIDw9IGJ1ZmZlckxlbmd0aDsKICAgICBB
U1NFUlQoaXNTYWZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYkNvbnZvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJDb252b2x2ZXIuY3BwCmluZGV4IGZjZGFiNTMxMDJkMi4uNjgzOWI3YTJlYmRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKQEAg
LTcwLDcgKzcwLDcgQEAgUmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIoQXVkaW9DaGFu
bmVsKiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCByZW5kZXJTbGkKICAgICAvLyBPdGhlcndpc2Us
IGFzc3VtZSB3ZSdyZSBiZWluZyBydW4gZnJvbSBhIGNvbW1hbmQtbGluZSB0b29sLgogICAgIGJv
b2wgaGFzUmVhbHRpbWVDb25zdHJhaW50ID0gdXNlQmFja2dyb3VuZFRocmVhZHM7CiAKLSAgICBj
b25zdCBmbG9hdCogcmVzcG9uc2UgPSBpbXB1bHNlUmVzcG9uc2UtPnNwYW4oKS5kYXRhKCk7Cisg
ICAgY29uc3QgZmxvYXQqIHJlc3BvbnNlID0gaW1wdWxzZVJlc3BvbnNlLT5kYXRhKCk7CiAgICAg
c2l6ZV90IHRvdGFsUmVzcG9uc2VMZW5ndGggPSBpbXB1bHNlUmVzcG9uc2UtPmxlbmd0aCgpOwog
CiAgICAgLy8gVGhlIHRvdGFsIGxhdGVuY3kgaXMgemVybyBiZWNhdXNlIHRoZSBkaXJlY3QtY29u
dm9sdXRpb24gaXMgdXNlZCBpbiB0aGUgbGVhZGluZyBwb3J0aW9uLgpAQCAtMTc0LDggKzE3NCw4
IEBAIHZvaWQgUmV2ZXJiQ29udm9sdmVyOjpwcm9jZXNzKGNvbnN0IEF1ZGlvQ2hhbm5lbCogc291
cmNlQ2hhbm5lbCwgQXVkaW9DaGFubmVsKiBkCiAgICAgaWYgKCFpc1NhZmUpCiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCi0gICAgY29uc3QgZmxvYXQqIHNvdXJjZSA9IHNvdXJjZUNoYW5uZWwt
PnNwYW4oKS5kYXRhKCk7Ci0gICAgZmxvYXQqIGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb25DaGFu
bmVsLT5tdXRhYmxlU3BhbigpLmRhdGEoKTsKKyAgICBjb25zdCBmbG9hdCogc291cmNlID0gc291
cmNlQ2hhbm5lbC0+ZGF0YSgpOworICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9u
Q2hhbm5lbC0+bXV0YWJsZURhdGEoKTsKICAgICBib29sIGlzRGF0YVNhZmUgPSBzb3VyY2UgJiYg
ZGVzdGluYXRpb247CiAgICAgQVNTRVJUKGlzRGF0YVNhZmUpOwogICAgIGlmICghaXNEYXRhU2Fm
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmNwcAppbmRleCAyM2QzMjdmMjE1YjYuLjljYzAzMzRkZGVkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdl
LmNwcApAQCAtNjksNyArNjksNyBAQCBSZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2ZXJiQ29udm9s
dmVyU3RhZ2UoY29uc3QgZmxvYXQqIGltcHVsc2VSZXNwb25zZSwgc2l6ZV90LAogICAgICAgICBt
X2RpcmVjdEtlcm5lbC0+Y29weVRvUmFuZ2UoaW1wdWxzZVJlc3BvbnNlLCAwLCBzdGFnZUxlbmd0
aCk7CiAgICAgICAgIC8vIEFjY291bnQgZm9yIHRoZSBub3JtYWxpemF0aW9uIChpZiBhbnkpIG9m
IHRoZSBjb252b2x2ZXIgbm9kZS4KICAgICAgICAgaWYgKHNjYWxlICE9IDEpCi0gICAgICAgICAg
ICBWZWN0b3JNYXRoOjptdWx0aXBseUJ5U2NhbGFyKG1fZGlyZWN0S2VybmVsLT5zcGFuKCkuZGF0
YSgpLCBzY2FsZSwgbV9kaXJlY3RLZXJuZWwtPm11dGFibGVTcGFuKCkuZGF0YSgpLCBzdGFnZUxl
bmd0aCk7CisgICAgICAgICAgICBWZWN0b3JNYXRoOjptdWx0aXBseUJ5U2NhbGFyKG1fZGlyZWN0
S2VybmVsLT5kYXRhKCksIHNjYWxlLCBtX2RpcmVjdEtlcm5lbC0+ZGF0YSgpLCBzdGFnZUxlbmd0
aCk7CiAgICAgICAgIG1fZGlyZWN0Q29udm9sdmVyID0gbWFrZVVuaXF1ZTxEaXJlY3RDb252b2x2
ZXI+KHJlbmRlclNsaWNlU2l6ZSk7CiAgICAgfQogCkBAIC0xMzAsMTQgKzEzMCwxNCBAQCB2b2lk
IFJldmVyYkNvbnZvbHZlclN0YWdlOjpwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIHNpemVf
dCBmcmFtZXNUb1Byb2Nlc3MpCiAKICAgICAgICAgaXNUZW1wb3JhcnlCdWZmZXJTYWZlID0gZnJh
bWVzVG9Qcm9jZXNzIDw9IG1fdGVtcG9yYXJ5QnVmZmVyLnNpemUoKTsKIAotICAgICAgICBwcmVE
ZWxheWVkRGVzdGluYXRpb24gPSBtX3ByZURlbGF5QnVmZmVyLm11dGFibGVTcGFuKCkuc3Vic3Bh
bihtX3ByZVJlYWRXcml0ZUluZGV4KS5kYXRhKCk7CisgICAgICAgIHByZURlbGF5ZWREZXN0aW5h
dGlvbiA9IG1fcHJlRGVsYXlCdWZmZXIuZGF0YSgpICsgbV9wcmVSZWFkV3JpdGVJbmRleDsKICAg
ICAgICAgcHJlRGVsYXllZFNvdXJjZSA9IHByZURlbGF5ZWREZXN0aW5hdGlvbjsKLSAgICAgICAg
dGVtcG9yYXJ5QnVmZmVyID0gbV90ZW1wb3JhcnlCdWZmZXIubXV0YWJsZVNwYW4oKS5kYXRhKCk7
CisgICAgICAgIHRlbXBvcmFyeUJ1ZmZlciA9IG1fdGVtcG9yYXJ5QnVmZmVyLmRhdGEoKTsgICAg
ICAgIAogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFplcm8gZGVsYXkKICAgICAgICAgcHJlRGVs
YXllZERlc3RpbmF0aW9uID0gMDsKICAgICAgICAgcHJlRGVsYXllZFNvdXJjZSA9IHNvdXJjZTsK
LSAgICAgICAgdGVtcG9yYXJ5QnVmZmVyID0gbV9wcmVEZWxheUJ1ZmZlci5tdXRhYmxlU3Bhbigp
LmRhdGEoKTsKKyAgICAgICAgdGVtcG9yYXJ5QnVmZmVyID0gbV9wcmVEZWxheUJ1ZmZlci5kYXRh
KCk7CiAgICAgICAgIAogICAgICAgICBpc1RlbXBvcmFyeUJ1ZmZlclNhZmUgPSBmcmFtZXNUb1By
b2Nlc3MgPD0gbV9wcmVEZWxheUJ1ZmZlci5zaXplKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuY3BwCmluZGV4IDY5MTYx
ODJlYzExNi4uZThmMTVhNmU3OTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgUmV2
ZXJiSW5wdXRCdWZmZXI6OndyaXRlKGNvbnN0IGZsb2F0KiBzb3VyY2VQLCBzaXplX3QgbnVtYmVy
T2ZGcmFtZXMpCiAgICAgaWYgKCFpc0NvcHlTYWZlKQogICAgICAgICByZXR1cm47CiAgICAgICAg
IAotICAgIG1lbWNweShtX2J1ZmZlci5tdXRhYmxlU3BhbigpLnN1YnNwYW4obV93cml0ZUluZGV4
KS5kYXRhKCksIHNvdXJjZVAsIHNpemVvZihmbG9hdCkgKiBudW1iZXJPZkZyYW1lcyk7CisgICAg
bWVtY3B5KG1fYnVmZmVyLmRhdGEoKSArIG1fd3JpdGVJbmRleCwgc291cmNlUCwgc2l6ZW9mKGZs
b2F0KSAqIG51bWJlck9mRnJhbWVzKTsKIAogICAgIG1fd3JpdGVJbmRleCArPSBudW1iZXJPZkZy
YW1lczsKICAgICBBU1NFUlQobV93cml0ZUluZGV4IDw9IGJ1ZmZlckxlbmd0aCk7CkBAIC02NSwx
MCArNjUsMTAgQEAgZmxvYXQqIFJldmVyYklucHV0QnVmZmVyOjpkaXJlY3RSZWFkRnJvbShpbnQq
IHJlYWRJbmRleCwgc2l6ZV90IG51bWJlck9mRnJhbWVzKQogICAgICAgICAvLyBTaG91bGQgbmV2
ZXIgaGFwcGVuIGluIHByYWN0aWNlIGJ1dCByZXR1cm4gcG9pbnRlciB0byBzdGFydCBvZiBidWZm
ZXIgKGF2b2lkIGNyYXNoKQogICAgICAgICBpZiAocmVhZEluZGV4KQogICAgICAgICAgICAgKnJl
YWRJbmRleCA9IDA7Ci0gICAgICAgIHJldHVybiBtX2J1ZmZlci5tdXRhYmxlU3BhbigpLmRhdGEo
KTsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsKICAgICB9CiAgICAgICAgIAotICAg
IGZsb2F0KiBzb3VyY2VQID0gbV9idWZmZXIubXV0YWJsZVNwYW4oKS5kYXRhKCk7CisgICAgZmxv
YXQqIHNvdXJjZVAgPSBtX2J1ZmZlci5kYXRhKCk7CiAgICAgZmxvYXQqIHAgPSBzb3VyY2VQICsg
KnJlYWRJbmRleDsKIAogICAgIC8vIFVwZGF0ZSByZWFkSW5kZXgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAKaW5kZXggYjFkZDg0MjFiMjFhLi4w
Mjk5ZjY3OTYzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Np
bmNSZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNS
ZXNhbXBsZXIuY3BwCkBAIC0xMzIsOCArMTMyLDggQEAgU2luY1Jlc2FtcGxlcjo6U2luY1Jlc2Ft
cGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIHJlcXVlc3RGcmFtZXMsIEZ1bmN0aW8K
ICAgICAsIG1fcmVxdWVzdEZyYW1lcyhyZXF1ZXN0RnJhbWVzKQogICAgICwgbV9wcm92aWRlSW5w
dXQoV1RGTW92ZShwcm92aWRlSW5wdXQpKQogICAgICwgbV9pbnB1dEJ1ZmZlcihtX3JlcXVlc3RG
cmFtZXMgKyBrZXJuZWxTaXplKSAvLyBTZWUgaW5wdXQgYnVmZmVyIGxheW91dCBhYm92ZS4KLSAg
ICAsIG1fcjEobV9pbnB1dEJ1ZmZlci5tdXRhYmxlU3BhbigpKQotICAgICwgbV9yMihtX2lucHV0
QnVmZmVyLm11dGFibGVTcGFuKCkuc3Vic3BhbihrZXJuZWxTaXplIC8gMikpCisgICAgLCBtX3Ix
KG1faW5wdXRCdWZmZXIuZGF0YSgpLCBtX2lucHV0QnVmZmVyLnNpemUoKSkKKyAgICAsIG1fcjIo
bV9pbnB1dEJ1ZmZlci5zcGFuKCkuc3Vic3BhbihrZXJuZWxTaXplIC8gMikpCiB7CiAgICAgQVNT
RVJUKG1fcHJvdmlkZUlucHV0KTsKICAgICBBU1NFUlQobV9yZXF1ZXN0RnJhbWVzID4gMCk7CkBA
IC0xNDYsMTQgKzE0NiwxNCBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OnVwZGF0ZVJlZ2lvbnMoYm9v
bCBpc1NlY29uZExvYWQpCiB7CiAgICAgLy8gU2V0dXAgdmFyaW91cyByZWdpb24gcG9pbnRlcnMg
aW4gdGhlIGJ1ZmZlciAoc2VlIGRpYWdyYW0gYWJvdmUpLiBJZiB3ZSdyZQogICAgIC8vIG9uIHRo
ZSBzZWNvbmQgbG9hZCB3ZSBuZWVkIHRvIHNsaWRlIG1fcjAgdG8gdGhlIHJpZ2h0IGJ5IGtlcm5l
bFNpemUgLyAyLgotICAgIG1fcjAgPSBtX2lucHV0QnVmZmVyLm11dGFibGVTcGFuKCkuc3Vic3Bh
bihpc1NlY29uZExvYWQgPyBrZXJuZWxTaXplIDoga2VybmVsU2l6ZSAvIDIpOworICAgIG1fcjAg
PSBtX2lucHV0QnVmZmVyLnNwYW4oKS5zdWJzcGFuKGlzU2Vjb25kTG9hZCA/IGtlcm5lbFNpemUg
OiBrZXJuZWxTaXplIC8gMik7CiAgICAgbV9yMyA9IG1fcjAuc3Vic3BhbihtX3JlcXVlc3RGcmFt
ZXMgLSBrZXJuZWxTaXplKTsKICAgICBtX3I0ID0gbV9yMC5zdWJzcGFuKG1fcmVxdWVzdEZyYW1l
cyAtIGtlcm5lbFNpemUgLyAyKTsKICAgICBtX2Jsb2NrU2l6ZSA9IHN0ZDo6ZGlzdGFuY2UobV9y
Mi5iZWdpbigpLCBtX3I0LmJlZ2luKCkpOwogICAgIG1fY2h1bmtTaXplID0gY2FsY3VsYXRlQ2h1
bmtTaXplKG1fYmxvY2tTaXplLCBtX3NjYWxlRmFjdG9yKTsKIAogICAgIC8vIG1fcjEgYXQgdGhl
IGJlZ2lubmluZyBvZiB0aGUgYnVmZmVyLgotICAgIEFTU0VSVChtX3IxLmRhdGEoKSA9PSBtX2lu
cHV0QnVmZmVyLnNwYW4oKS5kYXRhKCkpOworICAgIEFTU0VSVChtX3IxLmRhdGEoKSA9PSBtX2lu
cHV0QnVmZmVyLmRhdGEoKSk7CiAgICAgLy8gbV9yMSBsZWZ0IG9mIG1fcjIsIG1fcjQgbGVmdCBv
ZiBtX3IzIGFuZCBzaXplIGNvcnJlY3QuCiAgICAgQVNTRVJUKHN0ZDo6ZGlzdGFuY2UobV9yMS5i
ZWdpbigpLCBtX3IyLmJlZ2luKCkpID09IHN0ZDo6ZGlzdGFuY2UobV9yMy5iZWdpbigpLCBtX3I0
LmJlZ2luKCkpKTsKICAgICAvLyBtX3IyIGxlZnQgb2YgcjMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TdGVyZW9QYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vU3RlcmVvUGFubmVyLmNwcAppbmRleCBlY2FjNTBhY2IzODEuLjE1NWU1
ZTFhZDRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU3RlcmVv
UGFubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TdGVyZW9QYW5u
ZXIuY3BwCkBAIC01MSwxMCArNTEsMTAgQEAgdm9pZCBwYW5XaXRoU2FtcGxlQWNjdXJhdGVWYWx1
ZXMoY29uc3QgQXVkaW9CdXMqIGlucHV0QnVzLCBBdWRpb0J1cyogb3V0cHV0QnVzLAogICAgIGlm
ICghaXNPdXRwdXRTYWZlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgY29uc3QgZmxvYXQq
IHNvdXJjZUwgPSBpbnB1dEJ1cy0+Y2hhbm5lbCgwKS0+c3BhbigpLmRhdGEoKTsKLSAgICBjb25z
dCBmbG9hdCogc291cmNlUiA9IG51bWJlck9mSW5wdXRDaGFubmVscyA+IDEgPyBpbnB1dEJ1cy0+
Y2hhbm5lbCgxKS0+c3BhbigpLmRhdGEoKSA6IHNvdXJjZUw7Ci0gICAgZmxvYXQqIGRlc3RpbmF0
aW9uTCA9IG91dHB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5lbExlZnQpLT5t
dXRhYmxlU3BhbigpLmRhdGEoKTsKLSAgICBmbG9hdCogZGVzdGluYXRpb25SID0gb3V0cHV0QnVz
LT5jaGFubmVsQnlUeXBlKEF1ZGlvQnVzOjpDaGFubmVsUmlnaHQpLT5tdXRhYmxlU3BhbigpLmRh
dGEoKTsKKyAgICBjb25zdCBmbG9hdCogc291cmNlTCA9IGlucHV0QnVzLT5jaGFubmVsKDApLT5k
YXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHNvdXJjZVIgPSBudW1iZXJPZklucHV0Q2hhbm5lbHMg
PiAxID8gaW5wdXRCdXMtPmNoYW5uZWwoMSktPmRhdGEoKSA6IHNvdXJjZUw7CisgICAgZmxvYXQq
IGRlc3RpbmF0aW9uTCA9IG91dHB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hhbm5l
bExlZnQpLT5tdXRhYmxlRGF0YSgpOworICAgIGZsb2F0KiBkZXN0aW5hdGlvblIgPSBvdXRwdXRC
dXMtPmNoYW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxSaWdodCktPm11dGFibGVEYXRhKCk7
CiAgICAgCiAgICAgaWYgKCFzb3VyY2VMIHx8ICFzb3VyY2VSIHx8ICFkZXN0aW5hdGlvbkwgfHwg
IWRlc3RpbmF0aW9uUikKICAgICAgICAgcmV0dXJuOwpAQCAtMTExLDEwICsxMTEsMTAgQEAgdm9p
ZCBwYW5Ub1RhcmdldFZhbHVlKGNvbnN0IEF1ZGlvQnVzKiBpbnB1dEJ1cywgQXVkaW9CdXMqIG91
dHB1dEJ1cywgZmxvYXQgcGFuVmEKICAgICBpZiAoIWlzT3V0cHV0U2FmZSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIGNvbnN0IGZsb2F0KiBzb3VyY2VMID0gaW5wdXRCdXMtPmNoYW5uZWwo
MCktPnNwYW4oKS5kYXRhKCk7Ci0gICAgY29uc3QgZmxvYXQqIHNvdXJjZVIgPSBudW1iZXJPZklu
cHV0Q2hhbm5lbHMgPiAxID8gaW5wdXRCdXMtPmNoYW5uZWwoMSktPnNwYW4oKS5kYXRhKCkgOiBz
b3VyY2VMOwotICAgIGZsb2F0KiBkZXN0aW5hdGlvbkwgPSBvdXRwdXRCdXMtPmNoYW5uZWxCeVR5
cGUoQXVkaW9CdXM6OkNoYW5uZWxMZWZ0KS0+bXV0YWJsZVNwYW4oKS5kYXRhKCk7Ci0gICAgZmxv
YXQqIGRlc3RpbmF0aW9uUiA9IG91dHB1dEJ1cy0+Y2hhbm5lbEJ5VHlwZShBdWRpb0J1czo6Q2hh
bm5lbFJpZ2h0KS0+bXV0YWJsZVNwYW4oKS5kYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHNvdXJj
ZUwgPSBpbnB1dEJ1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpOworICAgIGNvbnN0IGZsb2F0KiBzb3Vy
Y2VSID0gbnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gMSA/IGlucHV0QnVzLT5jaGFubmVsKDEpLT5k
YXRhKCkgOiBzb3VyY2VMOworICAgIGZsb2F0KiBkZXN0aW5hdGlvbkwgPSBvdXRwdXRCdXMtPmNo
YW5uZWxCeVR5cGUoQXVkaW9CdXM6OkNoYW5uZWxMZWZ0KS0+bXV0YWJsZURhdGEoKTsKKyAgICBm
bG9hdCogZGVzdGluYXRpb25SID0gb3V0cHV0QnVzLT5jaGFubmVsQnlUeXBlKEF1ZGlvQnVzOjpD
aGFubmVsUmlnaHQpLT5tdXRhYmxlRGF0YSgpOwogICAgIAogICAgIGlmICghc291cmNlTCB8fCAh
c291cmNlUiB8fCAhZGVzdGluYXRpb25MIHx8ICFkZXN0aW5hdGlvblIpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuY3BwCmluZGV4IGE0
ZmNiNTAyZWJlNS4uMGRjMDc4NTY5MWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9VcFNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1VwU2FtcGxlci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBVcFNhbXBsZXI6OnByb2Nl
c3MoY29uc3QgZmxvYXQqIHNvdXJjZVAsIGZsb2F0KiBkZXN0UCwgc2l6ZV90IHNvdXJjZUZyYW1l
c1QKICAgICBpZiAoIWlzSW5wdXRCdWZmZXJHb29kKQogICAgICAgICByZXR1cm47CiAKLSAgICBm
bG9hdCogaW5wdXRQID0gbV9pbnB1dEJ1ZmZlci5tdXRhYmxlU3BhbigpLnN1YnNwYW4oc291cmNl
RnJhbWVzVG9Qcm9jZXNzKS5kYXRhKCk7CisgICAgZmxvYXQqIGlucHV0UCA9IG1faW5wdXRCdWZm
ZXIuZGF0YSgpICsgc291cmNlRnJhbWVzVG9Qcm9jZXNzOwogICAgIG1lbWNweShpbnB1dFAsIHNv
dXJjZVAsIHNpemVvZihmbG9hdCkgKiBzb3VyY2VGcmFtZXNUb1Byb2Nlc3MpOwogCiAgICAgLy8g
Q29weSBldmVuIHNhbXBsZS1mcmFtZXMgMCwyLDQsNi4uLiAoZGVsYXllZCBieSB0aGUgbGluZWFy
IHBoYXNlIGRlbGF5KSBkaXJlY3RseSBpbnRvIGRlc3RQLgpAQCAtMTA1LDE0ICsxMDUsMTQgQEAg
dm9pZCBVcFNhbXBsZXI6OnByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZVAsIGZsb2F0KiBkZXN0
UCwgc2l6ZV90IHNvdXJjZUZyYW1lc1QKICAgICAgICAgZGVzdFBbaSAqIDJdID0gKigoaW5wdXRQ
IC0gaGFsZlNpemUpICsgaSk7CiAKICAgICAvLyBDb21wdXRlIG9kZCBzYW1wbGUtZnJhbWVzIDEs
Myw1LDcuLi4KLSAgICBmbG9hdCogb2RkU2FtcGxlc1AgPSBtX3RlbXBCdWZmZXIubXV0YWJsZVNw
YW4oKS5kYXRhKCk7CisgICAgZmxvYXQqIG9kZFNhbXBsZXNQID0gbV90ZW1wQnVmZmVyLmRhdGEo
KTsKICAgICBtX2NvbnZvbHZlci5wcm9jZXNzKCZtX2tlcm5lbCwgc291cmNlUCwgb2RkU2FtcGxl
c1AsIHNvdXJjZUZyYW1lc1RvUHJvY2Vzcyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc291cmNlRnJhbWVzVG9Qcm9jZXNzOyArK2kpCiAgICAgICAgIGRlc3RQW2kgKiAyICsgMV0g
PSBvZGRTYW1wbGVzUFtpXTsKIAogICAgIC8vIENvcHkgMm5kIGhhbGYgb2YgaW5wdXQgYnVmZmVy
IHRvIDFzdCBoYWxmLgotICAgIG1lbWNweShtX2lucHV0QnVmZmVyLm11dGFibGVTcGFuKCkuZGF0
YSgpLCBpbnB1dFAsIHNpemVvZihmbG9hdCkgKiBzb3VyY2VGcmFtZXNUb1Byb2Nlc3MpOworICAg
IG1lbWNweShtX2lucHV0QnVmZmVyLmRhdGEoKSwgaW5wdXRQLCBzaXplb2YoZmxvYXQpICogc291
cmNlRnJhbWVzVG9Qcm9jZXNzKTsKIH0KIAogdm9pZCBVcFNhbXBsZXI6OnJlc2V0KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRl
ckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmls
ZVJlYWRlckNvY29hLmNwcAppbmRleCBmMWIwNGVjMjU5MzcuLmI5MDY0NTBhMzA0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVy
Q29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RmlsZVJlYWRlckNvY29hLmNwcApAQCAtNTc3LDExICs1NzcsMTEgQEAgUmVmUHRyPEF1ZGlvQnVz
PiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRv
TW9ubykKIAogICAgICAgICBidWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMg
PSAxOwogICAgICAgICBidWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gYnVm
ZmVyU2l6ZTsKLSAgICAgICAgYnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGEgPSBsZWZ0Q2hh
bm5lbC5tdXRhYmxlU3BhbigpLmRhdGEoKTsKKyAgICAgICAgYnVmZmVyTGlzdC0+bUJ1ZmZlcnNb
MF0ubURhdGEgPSBsZWZ0Q2hhbm5lbC5kYXRhKCk7CiAKICAgICAgICAgYnVmZmVyTGlzdC0+bUJ1
ZmZlcnNbMV0ubU51bWJlckNoYW5uZWxzID0gMTsKICAgICAgICAgYnVmZmVyTGlzdC0+bUJ1ZmZl
cnNbMV0ubURhdGFCeXRlU2l6ZSA9IGJ1ZmZlclNpemU7Ci0gICAgICAgIGJ1ZmZlckxpc3QtPm1C
dWZmZXJzWzFdLm1EYXRhID0gcmlnaHRDaGFubmVsLm11dGFibGVTcGFuKCkuZGF0YSgpOworICAg
ICAgICBidWZmZXJMaXN0LT5tQnVmZmVyc1sxXS5tRGF0YSA9IHJpZ2h0Q2hhbm5lbC5kYXRhKCk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1peFRvTW9ubyB8fCBudW1i
ZXJPZkNoYW5uZWxzID09IDEpOwogCkBAIC01OTAsNyArNTkwLDcgQEAgUmVmUHRyPEF1ZGlvQnVz
PiBBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRv
TW9ubykKICAgICAgICAgICAgIGF1ZGlvQnVzLT5jaGFubmVsKGkpLT56ZXJvKCk7CiAgICAgICAg
ICAgICBidWZmZXJMaXN0LT5tQnVmZmVyc1tpXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOwogICAgICAg
ICAgICAgYnVmZmVyTGlzdC0+bUJ1ZmZlcnNbaV0ubURhdGFCeXRlU2l6ZSA9IGJ1ZmZlclNpemU7
Ci0gICAgICAgICAgICBidWZmZXJMaXN0LT5tQnVmZmVyc1tpXS5tRGF0YSA9IGF1ZGlvQnVzLT5j
aGFubmVsKGkpLT5tdXRhYmxlU3BhbigpLmRhdGEoKTsKKyAgICAgICAgICAgIGJ1ZmZlckxpc3Qt
Pm1CdWZmZXJzW2ldLm1EYXRhID0gYXVkaW9CdXMtPmNoYW5uZWwoaSktPm11dGFibGVEYXRhKCk7
CiAgICAgICAgICAgICBBU1NFUlQoYnVmZmVyTGlzdC0+bUJ1ZmZlcnNbaV0ubURhdGEpOwogICAg
ICAgICB9CiAgICAgfQpAQCAtNjM3LDcgKzYzNyw3IEBAIFJlZlB0cjxBdWRpb0J1cz4gQXVkaW9G
aWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCiAK
ICAgICBpZiAobWl4VG9Nb25vICYmIG51bWJlck9mQ2hhbm5lbHMgPT0gMikgewogICAgICAgICAv
LyBNaXggc3RlcmVvIGRvd24gdG8gbW9ubwotICAgICAgICBhdXRvIGRlc3RMID0gYXVkaW9CdXMt
PmNoYW5uZWwoMCktPm11dGFibGVTcGFuKCk7CisgICAgICAgIGZsb2F0KiBkZXN0TCA9IGF1ZGlv
QnVzLT5jaGFubmVsKDApLT5tdXRhYmxlRGF0YSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bWJlck9mRnJhbWVzOyArK2kpCiAgICAgICAgICAgICBkZXN0TFtpXSA9IDAuNWYg
KiAobGVmdENoYW5uZWxbaV0gKyByaWdodENoYW5uZWxbaV0pOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKaW5kZXggMjcwNGI4MDk2MGMwLi42YmExOWFkYzI4
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0xMTIsNyAr
MTEyLDcgQEAgaW50IGRlY29kZWJpbkF1dG9wbHVnU2VsZWN0Q2FsbGJhY2soR3N0RWxlbWVudCos
IEdzdFBhZCosIEdzdENhcHMqLCBHc3RFbGVtZW50RmEKIAogc3RhdGljIHZvaWQgY29weUdzdHJl
YW1lckJ1ZmZlcnNUb0F1ZGlvQ2hhbm5lbChjb25zdCBHUmVmUHRyPEdzdEJ1ZmZlckxpc3Q+JiBi
dWZmZXJzLCBBdWRpb0NoYW5uZWwqIGF1ZGlvQ2hhbm5lbCkKIHsKLSAgICBmbG9hdCogZGVzdGlu
YXRpb24gPSBhdWRpb0NoYW5uZWwtPm11dGFibGVTcGFuKCkuZGF0YSgpOworICAgIGZsb2F0KiBk
ZXN0aW5hdGlvbiA9IGF1ZGlvQ2hhbm5lbC0+bXV0YWJsZURhdGEoKTsKICAgICB1bnNpZ25lZCBi
dWZmZXJDb3VudCA9IGdzdF9idWZmZXJfbGlzdF9sZW5ndGgoYnVmZmVycy5nZXQoKSk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1ZmZlckNvdW50OyArK2kpIHsKICAgICAgICAgR3N0
QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVyX2xpc3RfZ2V0KGJ1ZmZlcnMuZ2V0KCksIGkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
U291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwCmluZGV4IGRlNTdi
OTFlOTQ1Ni4uZDc3MDRkYjE4ODY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyB2b2lkIGNvcHlHU3RyZWFt
ZXJCdWZmZXJzVG9BdWRpb0NoYW5uZWwoR3N0QWRhcHRlciogYWRhcHRlciwgQXVkaW9CdXMqIGJ1
CiAgICAgR1NUX1RSQUNFKCIlenUgc2FtcGxlcyBhdmFpbGFibGUgZm9yIGNoYW5uZWwgJWQgKCV6
dSBmcmFtZXMgcmVxdWVzdGVkKSIsIGF2YWlsYWJsZSwgY2hhbm5lbE51bWJlciwgZnJhbWVzVG9Q
cm9jZXNzKTsKICAgICBzaXplX3QgYnl0ZXMgPSBmcmFtZXNUb1Byb2Nlc3MgKiBzaXplb2YoZmxv
YXQpOwogICAgIGlmIChhdmFpbGFibGUgPj0gYnl0ZXMpIHsKLSAgICAgICAgZ3N0X2FkYXB0ZXJf
Y29weShhZGFwdGVyLCBidXMtPmNoYW5uZWwoY2hhbm5lbE51bWJlciktPm11dGFibGVTcGFuKCku
ZGF0YSgpLCAwLCBieXRlcyk7CisgICAgICAgIGdzdF9hZGFwdGVyX2NvcHkoYWRhcHRlciwgYnVz
LT5jaGFubmVsKGNoYW5uZWxOdW1iZXIpLT5tdXRhYmxlRGF0YSgpLCAwLCBieXRlcyk7CiAgICAg
ICAgIGdzdF9hZGFwdGVyX2ZsdXNoKGFkYXB0ZXIsIGJ5dGVzKTsKICAgICB9IGVsc2UKICAgICAg
ICAgYnVzLT56ZXJvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcAppbmRleCBkNzAzZTNmZjY1
ZDQuLjIzNmE3YTM3OGFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwCkBAIC03OSw4ICs3
OSw4IEBAIEZGVEZyYW1lOjpGRlRGcmFtZShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCiAgICAgbV9p
bnZlcnNlRmZ0ID0gZ3N0X2ZmdF9mMzJfbmV3KGZmdExlbmd0aCwgVFJVRSk7CiAKICAgICAvLyBD
b3B5L3NldHVwIGZyYW1lIGRhdGEuCi0gICAgbWVtY3B5U3BhbihyZWFsRGF0YSgpLm11dGFibGVT
cGFuKCksIGZyYW1lLnJlYWxEYXRhKCkuc3BhbigpKTsKLSAgICBtZW1jcHlTcGFuKGltYWdEYXRh
KCkubXV0YWJsZVNwYW4oKSwgZnJhbWUuaW1hZ0RhdGEoKS5zcGFuKCkpOworICAgIG1lbWNweShy
ZWFsRGF0YSgpLmRhdGEoKSwgZnJhbWUucmVhbERhdGEoKS5kYXRhKCksIHNpemVvZihmbG9hdCkg
KiByZWFsRGF0YSgpLnNpemUoKSk7CisgICAgbWVtY3B5KGltYWdEYXRhKCkuZGF0YSgpLCBmcmFt
ZS5pbWFnRGF0YSgpLmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGltYWdEYXRhKCkuc2l6ZSgpKTsK
IH0KIAogdm9pZCBGRlRGcmFtZTo6aW5pdGlhbGl6ZSgpCkBAIC0xMDMsOCArMTAzLDggQEAgdm9p
ZCBGRlRGcmFtZTo6ZG9GRlQoY29uc3QgZmxvYXQqIGRhdGEpCiB7CiAgICAgZ3N0X2ZmdF9mMzJf
ZmZ0KG1fZmZ0LCBkYXRhLCBtX2NvbXBsZXhEYXRhLmdldCgpKTsKIAotICAgIGF1dG8gaW1hZ0Rh
dGEgPSBtX2ltYWdEYXRhLm11dGFibGVTcGFuKCk7Ci0gICAgYXV0byByZWFsRGF0YSA9IG1fcmVh
bERhdGEubXV0YWJsZVNwYW4oKTsKKyAgICBmbG9hdCogaW1hZ0RhdGEgPSBtX2ltYWdEYXRhLmRh
dGEoKTsKKyAgICBmbG9hdCogcmVhbERhdGEgPSBtX3JlYWxEYXRhLmRhdGEoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgdW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpOyArK2kp
IHsKICAgICAgICAgaW1hZ0RhdGFbaV0gPSBtX2NvbXBsZXhEYXRhW2ldLmk7CiAgICAgICAgIHJl
YWxEYXRhW2ldID0gbV9jb21wbGV4RGF0YVtpXS5yOwpAQCAtMTE0LDggKzExNCw4IEBAIHZvaWQg
RkZURnJhbWU6OmRvRkZUKGNvbnN0IGZsb2F0KiBkYXRhKQogdm9pZCBGRlRGcmFtZTo6ZG9JbnZl
cnNlRkZUKGZsb2F0KiBkYXRhKQogewogICAgIC8vICBNZXJnZSB0aGUgcmVhbCBhbmQgaW1hZ2lu
YXJ5IHZlY3RvcnMgdG8gY29tcGxleCB2ZWN0b3IuCi0gICAgYXV0byByZWFsRGF0YSA9IG1fcmVh
bERhdGEuc3BhbigpOwotICAgIGF1dG8gaW1hZ0RhdGEgPSBtX2ltYWdEYXRhLnNwYW4oKTsKKyAg
ICBmbG9hdCogcmVhbERhdGEgPSBtX3JlYWxEYXRhLmRhdGEoKTsKKyAgICBmbG9hdCogaW1hZ0Rh
dGEgPSBtX2ltYWdEYXRhLmRhdGEoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdW5w
YWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpOyArK2kpIHsKICAgICAgICAgbV9jb21wbGV4RGF0
YVtpXS5pID0gaW1hZ0RhdGFbaV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvRkZURnJhbWVNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vbWFjL0ZGVEZyYW1lTWFjLmNwcAppbmRleCA0NGFiODU1Mzg1NjkuLjIyOTBmN2VhODYwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvRkZURnJhbWVNYWMu
Y3BwCkBAIC03MCw4ICs3MCw4IEBAIEZGVEZyYW1lOjpGRlRGcmFtZSh1bnNpZ25lZCBmZnRTaXpl
KQogICAgIG1fRkZUU2V0dXAgPSBmZnRTZXR1cEZvclNpemUoZmZ0U2l6ZSk7CiAKICAgICAvLyBT
ZXR1cCBmcmFtZSBkYXRhCi0gICAgbV9mcmFtZS5yZWFscCA9IG1fcmVhbERhdGEubXV0YWJsZVNw
YW4oKS5kYXRhKCk7Ci0gICAgbV9mcmFtZS5pbWFncCA9IG1faW1hZ0RhdGEubXV0YWJsZVNwYW4o
KS5kYXRhKCk7CisgICAgbV9mcmFtZS5yZWFscCA9IG1fcmVhbERhdGEuZGF0YSgpOworICAgIG1f
ZnJhbWUuaW1hZ3AgPSBtX2ltYWdEYXRhLmRhdGEoKTsKIH0KIAogLy8gQ3JlYXRlcyBhIGJsYW5r
L2VtcHR5IGZyYW1lIChpbnRlcnBvbGF0ZSgpIG11c3QgbGF0ZXIgYmUgY2FsbGVkKQpAQCAtOTQs
MTIgKzk0LDEyIEBAIEZGVEZyYW1lOjpGRlRGcmFtZShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCiAg
ICAgLCBtX2ltYWdEYXRhKGZyYW1lLm1fRkZUU2l6ZSkKIHsKICAgICAvLyBTZXR1cCBmcmFtZSBk
YXRhCi0gICAgbV9mcmFtZS5yZWFscCA9IG1fcmVhbERhdGEubXV0YWJsZVNwYW4oKS5kYXRhKCk7
Ci0gICAgbV9mcmFtZS5pbWFncCA9IG1faW1hZ0RhdGEubXV0YWJsZVNwYW4oKS5kYXRhKCk7Cisg
ICAgbV9mcmFtZS5yZWFscCA9IG1fcmVhbERhdGEuZGF0YSgpOworICAgIG1fZnJhbWUuaW1hZ3Ag
PSBtX2ltYWdEYXRhLmRhdGEoKTsKIAogICAgIC8vIENvcHkvc2V0dXAgZnJhbWUgZGF0YQotICAg
IG1lbWNweShyZWFsRGF0YSgpLm11dGFibGVTcGFuKCkuZGF0YSgpLCBmcmFtZS5tX2ZyYW1lLnJl
YWxwLCBzaXplb2YoZmxvYXQpICogcmVhbERhdGEoKS5zaXplKCkpOwotICAgIG1lbWNweShpbWFn
RGF0YSgpLm11dGFibGVTcGFuKCkuZGF0YSgpLCBmcmFtZS5tX2ZyYW1lLmltYWdwLCBzaXplb2Yo
ZmxvYXQpICogaW1hZ0RhdGEoKS5zaXplKCkpOworICAgIG1lbWNweShyZWFsRGF0YSgpLmRhdGEo
KSwgZnJhbWUubV9mcmFtZS5yZWFscCwgc2l6ZW9mKGZsb2F0KSAqIHJlYWxEYXRhKCkuc2l6ZSgp
KTsKKyAgICBtZW1jcHkoaW1hZ0RhdGEoKS5kYXRhKCksIGZyYW1lLm1fZnJhbWUuaW1hZ3AsIHNp
emVvZihmbG9hdCkgKiBpbWFnRGF0YSgpLnNpemUoKSk7CiB9CiAKIEZGVEZyYW1lOjp+RkZURnJh
bWUoKSA9IGRlZmF1bHQ7CkBAIC0xMTgsOCArMTE4LDggQEAgdm9pZCBGRlRGcmFtZTo6ZG9GRlQo
Y29uc3QgZmxvYXQqIGRhdGEpCiAgICAgLy8gKFNlZSBodHRwczovL2RldmVsb3Blci5hcHBsZS5j
b20vbGlicmFyeS9hcmNoaXZlL2RvY3VtZW50YXRpb24vUGVyZm9ybWFuY2UvQ29uY2VwdHVhbC92
RFNQX1Byb2dyYW1taW5nX0d1aWRlL1VzaW5nRm91cmllclRyYW5zZm9ybXMvVXNpbmdGb3VyaWVy
VHJhbnNmb3Jtcy5odG1sIy8vYXBwbGVfcmVmL2RvYy91aWQvVFA0MDAwNTE0Ny1DSDMtU1c1KQog
ICAgIC8vIEluIHRoZSBjYXNlIG9mIGEgUmVhbCBmb3J3YXJkIFRyYW5zZm9ybSBsaWtlIGFib3Zl
OiBSRmltcCA9IFJGbWF0aCAqIDIgc28gd2UgbmVlZCB0byBkaXZpZGUgdGhlIG91dHB1dAogICAg
IC8vIGJ5IDIgdG8gZ2V0IHRoZSBjb3JyZWN0IHZhbHVlLgotICAgIFZlY3Rvck1hdGg6Om11bHRp
cGx5QnlTY2FsYXIocmVhbERhdGEoKS5zcGFuKCkuZGF0YSgpLCAwLjUsIHJlYWxEYXRhKCkubXV0
YWJsZVNwYW4oKS5kYXRhKCksIGhhbGZTaXplKTsKLSAgICBWZWN0b3JNYXRoOjptdWx0aXBseUJ5
U2NhbGFyKGltYWdEYXRhKCkuc3BhbigpLmRhdGEoKSwgMC41LCBpbWFnRGF0YSgpLm11dGFibGVT
cGFuKCkuZGF0YSgpLCBoYWxmU2l6ZSk7CisgICAgVmVjdG9yTWF0aDo6bXVsdGlwbHlCeVNjYWxh
cihyZWFsRGF0YSgpLmRhdGEoKSwgMC41LCByZWFsRGF0YSgpLmRhdGEoKSwgaGFsZlNpemUpOwor
ICAgIFZlY3Rvck1hdGg6Om11bHRpcGx5QnlTY2FsYXIoaW1hZ0RhdGEoKS5kYXRhKCksIDAuNSwg
aW1hZ0RhdGEoKS5kYXRhKCksIGhhbGZTaXplKTsKIH0KIAogdm9pZCBGRlRGcmFtZTo6ZG9JbnZl
cnNlRkZUKGZsb2F0KiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDLm1tCmluZGV4IDExMzJkNjFiMzE0Ny4uZDdkMmZkMjQ2ODVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCkBAIC0xMzcs
NyArMTM3LDcgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJvdmlkZUlucHV0
KEF1ZGlvQnVzKiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2MKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9saXN0LT5tTnVtYmVyQnVmZmVyczsgKytpKSB7CiAgICAgICAgIEF1ZGlvQ2hh
bm5lbCogY2hhbm5lbCA9IGJ1cy0+Y2hhbm5lbChpKTsKICAgICAgICAgbV9saXN0LT5tQnVmZmVy
c1tpXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOwotICAgICAgICBtX2xpc3QtPm1CdWZmZXJzW2ldLm1E
YXRhID0gY2hhbm5lbC0+bXV0YWJsZVNwYW4oKS5kYXRhKCk7CisgICAgICAgIG1fbGlzdC0+bUJ1
ZmZlcnNbaV0ubURhdGEgPSBjaGFubmVsLT5tdXRhYmxlRGF0YSgpOwogICAgICAgICBtX2xpc3Qt
Pm1CdWZmZXJzW2ldLm1EYXRhQnl0ZVNpemUgPSBjaGFubmVsLT5sZW5ndGgoKSAqIHNpemVvZihm
bG9hdCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5t
bQppbmRleCAwNjczYTZhNDkwN2YuLjUyMjAxMWQ0NTQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckNvY29hLm1tCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgV2ViQXVkaW9T
b3VyY2VQcm92aWRlckNvY29hOjpwcm92aWRlSW5wdXQoQXVkaW9CdXMqIGJ1cywgc2l6ZV90IGZy
YW1lc1RvUHJvCiAgICAgICAgIH0KICAgICAgICAgYXV0byogYnVmZmVyID0gbV9hdWRpb0J1ZmZl
ckxpc3QtPmJ1ZmZlcihpKTsKICAgICAgICAgYnVmZmVyLT5tTnVtYmVyQ2hhbm5lbHMgPSAxOwot
ICAgICAgICBidWZmZXItPm1EYXRhID0gY2hhbm5lbC5tdXRhYmxlU3BhbigpLmRhdGEoKTsKKyAg
ICAgICAgYnVmZmVyLT5tRGF0YSA9IGNoYW5uZWwubXV0YWJsZURhdGEoKTsKICAgICAgICAgYnVm
ZmVyLT5tRGF0YUJ5dGVTaXplID0gY2hhbm5lbC5sZW5ndGgoKSAqIHNpemVvZihmbG9hdCk7CiAg
ICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>