<?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>149579</bug_id>
          
          <creation_ts>2015-09-25 23:15:05 -0700</creation_ts>
          <short_desc>Use modern for-loops in WebCore/inspector.</short_desc>
          <delta_ts>2015-09-26 20:03:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hunseop Jeong">hs85.jeong</reporter>
          <assigned_to name="Hunseop Jeong">hs85.jeong</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1128852</commentid>
    <comment_count>0</comment_count>
    <who name="Hunseop Jeong">hs85.jeong</who>
    <bug_when>2015-09-25 23:15:05 -0700</bug_when>
    <thetext>Refactor the for-loops using the ranged-for loops and auto keyword.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128855</commentid>
    <comment_count>1</comment_count>
      <attachid>261964</attachid>
    <who name="Hunseop Jeong">hs85.jeong</who>
    <bug_when>2015-09-25 23:24:30 -0700</bug_when>
    <thetext>Created attachment 261964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128923</commentid>
    <comment_count>2</comment_count>
      <attachid>261964</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-26 20:03:56 -0700</bug_when>
    <thetext>Comment on attachment 261964
Patch

Clearing flags on attachment: 261964

Committed r190271: &lt;http://trac.webkit.org/changeset/190271&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128924</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-26 20:03:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261964</attachid>
            <date>2015-09-25 23:24:30 -0700</date>
            <delta_ts>2015-09-26 20:03:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149579-20150926152408.patch</filename>
            <type>text/plain</type>
            <size>35179</size>
            <attacher name="Hunseop Jeong">hs85.jeong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDE1LTA5LTI1ICBIdW5zZW9w
IEplb25nICA8aHM4NS5qZW9uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBVc2UgbW9kZXJuIGZv
ci1sb29wcyBpbiBXZWJDb3JlL2luc3BlY3Rvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTU3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJl
aGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0OjpkaWZmKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRjaENoaWxkcmVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVBhdGNoU3VwcG9ydDo6cmVtb3ZlQ2hpbGRBbmRNb3ZlVG9OZXcpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0OjptYXJrTm9kZUFzVXNlZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1
dGVQc2V1ZG9DbGFzc01hc2spOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbmdlUmVnaW9uT3ZlcnNl
dFRhc2s6OnRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OnJlc2V0UHNldWRvU3RhdGVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRl
VGFzazo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
cmVsZWFzZUJhY2tlbmROb2RlSWRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpzdHlsZUF0dHJpYnV0ZUludmFsaWRhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JEYXRhYmFzZUFnZW50OjpnZXREYXRhYmFzZVRhYmxlTmFtZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGF0YWJhc2VJZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpmaW5kQnlGaWxlTmFtZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZnJvbnRlbmRMb2FkZWQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRSZW5kZXJlckhpZ2hs
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9iamVjdEZvckhpZ2hsaWdodCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JSZXBsYXlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEluc3BlY3Rv
ck9iamVjdEZvclNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSZXBsYXlBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFJlY2FsY3VsYXRl
U3R5bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAg
ICAgICAgKGZsYXR0ZW5Tb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0
eWxlOjpidWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JTdHlsZTo6cG9wdWxhdGVBbGxQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
bGVjdG9yc0Zyb21Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVl
dDo6cnVsZUluZGV4QnlTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2Vu
dDo6Y3JlYXRlV29ya2VyRnJvbnRlbmRDaGFubmVsc0ZvckV4aXN0aW5nV29ya2Vycyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGVzdHJveVdvcmtlckZyb250ZW5k
Q2hhbm5lbHMpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVtb3ZlQ2FjaGVkUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmNsZWFyKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlUnVudGltZUFnZW50OjpyZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24pOgor
ICAgICAgICAqIGluc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0UGF1c2VkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvbnNvbGVBZ2VudDo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHRzRm9yKToKKwogMjAx
NS0wOS0yNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDbGVhbiB1cCB1c2VyIG1lZGlhIHJlcXVlc3QgaW50ZXJuYWwgQVBJCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAkocmV2aXNpb24gMTkwMjM3
KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxMCwxNCArMjEwLDE0IEBAIERPTVBhdGNoU3VwcG9ydDo6ZGlmZihjb25z
dCBWZWN0b3I8c3RkOjoKICAgICBSZXN1bHRNYXAgbmV3TWFwKG5ld0xpc3Quc2l6ZSgpKTsKICAg
ICBSZXN1bHRNYXAgb2xkTWFwKG9sZExpc3Quc2l6ZSgpKTsKIAotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgb2xkTWFwLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIG9sZE1hcFtpXS5maXJzdCA9
IG51bGxwdHI7Ci0gICAgICAgIG9sZE1hcFtpXS5zZWNvbmQgPSAwOworICAgIGZvciAoYXV0byYg
cmVzdWx0IDogb2xkTWFwKSB7CisgICAgICAgIHJlc3VsdC5maXJzdCA9IG51bGxwdHI7CisgICAg
ICAgIHJlc3VsdC5zZWNvbmQgPSAwOwogICAgIH0KIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbmV3TWFwLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIG5ld01hcFtpXS5maXJzdCA9IG51bGxw
dHI7Ci0gICAgICAgIG5ld01hcFtpXS5zZWNvbmQgPSAwOworICAgIGZvciAoYXV0byYgcmVzdWx0
IDogbmV3TWFwKSB7CisgICAgICAgIHJlc3VsdC5maXJzdCA9IG51bGxwdHI7CisgICAgICAgIHJl
c3VsdC5zZWNvbmQgPSAwOwogICAgIH0KIAogICAgIC8vIFRyaW0gaGVhZCBhbmQgdGFpbC4KQEAg
LTM2OCw4ICszNjgsOCBAQCBib29sIERPTVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRjaENoaWxkcmVu
CiAgICAgfQogCiAgICAgLy8gMi4gUGF0Y2ggbm9kZXMgbWFya2VkIGZvciBtZXJnZS4KLSAgICBm
b3IgKEhhc2hNYXA8RGlnZXN0KiwgRGlnZXN0Kj46Oml0ZXJhdG9yIGl0ID0gbWVyZ2VzLmJlZ2lu
KCk7IGl0ICE9IG1lcmdlcy5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoIWlubmVyUGF0Y2hO
b2RlKGl0LT52YWx1ZSwgaXQtPmtleSwgZWMpKQorICAgIGZvciAoYXV0byYgbWVyZ2UgOiBtZXJn
ZXMpIHsKKyAgICAgICAgaWYgKCFpbm5lclBhdGNoTm9kZShtZXJnZS52YWx1ZSwgbWVyZ2Uua2V5
LCBlYykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC00NzUsOCArNDc1
LDggQEAgYm9vbCBET01QYXRjaFN1cHBvcnQ6OnJlbW92ZUNoaWxkQW5kTW92ZQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9sZERpZ2Vz
dC0+bV9jaGlsZHJlbi5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoIXJlbW92ZUNoaWxkQW5k
TW92ZVRvTmV3KG9sZERpZ2VzdC0+bV9jaGlsZHJlbltpXS5nZXQoKSwgZWMpKQorICAgIGZvciAo
YXV0byYgY2hpbGQgOiBvbGREaWdlc3QtPm1fY2hpbGRyZW4pIHsKKyAgICAgICAgaWYgKCFyZW1v
dmVDaGlsZEFuZE1vdmVUb05ldyhjaGlsZC5nZXQoKSwgZWMpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ4OSw4ICs0ODksOCBAQCB2b2lk
IERPTVBhdGNoU3VwcG9ydDo6bWFya05vZGVBc1VzZWQoRGlnCiAgICAgd2hpbGUgKCFxdWV1ZS5p
c0VtcHR5KCkpIHsKICAgICAgICAgRGlnZXN0KiBmaXJzdCA9IHF1ZXVlLnRha2VGaXJzdCgpOwog
ICAgICAgICBtX3VudXNlZE5vZGVzTWFwLnJlbW92ZShmaXJzdC0+bV9zaGExKTsKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaXJzdC0+bV9jaGlsZHJlbi5zaXplKCk7ICsraSkKLSAg
ICAgICAgICAgIHF1ZXVlLmFwcGVuZChmaXJzdC0+bV9jaGlsZHJlbltpXS5nZXQoKSk7CisgICAg
ICAgIGZvciAoYXV0byYgY2hpbGQgOiBmaXJzdC0+bV9jaGlsZHJlbikKKyAgICAgICAgICAgIHF1
ZXVlLmFwcGVuZChjaGlsZC5nZXQoKSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAJKHJldmlzaW9uIDE5MDIzNykK
KysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg3LDggKzg3LDcgQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVQc2V1ZG9D
bGFzc01hc2soYwogICAgICAgICByZXR1cm4gUHNldWRvQ2xhc3NOb25lOwogCiAgICAgdW5zaWdu
ZWQgcmVzdWx0ID0gUHNldWRvQ2xhc3NOb25lOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cHNldWRvQ2xhc3NBcnJheS5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4gcHNldWRvQ2xhc3NWYWx1ZSA9IHBzZXVkb0NsYXNzQXJyYXkuZ2V0KGkpOworICAg
IGZvciAoYXV0byYgcHNldWRvQ2xhc3NWYWx1ZSA6IHBzZXVkb0NsYXNzQXJyYXkpIHsKICAgICAg
ICAgU3RyaW5nIHBzZXVkb0NsYXNzOwogICAgICAgICBib29sIHN1Y2Nlc3MgPSBwc2V1ZG9DbGFz
c1ZhbHVlLT5hc1N0cmluZyhwc2V1ZG9DbGFzcyk7CiAgICAgICAgIGlmICghc3VjY2VzcykKQEAg
LTE0OCw4ICsxNDcsOCBAQCB2b2lkIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjpyZXNldCgpCiB2
b2lkIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjp0aW1lckZpcmVkKCkKIHsKICAgICAvLyBUaGUg
dGltZXIgaXMgc3RvcHBlZCBvbiBtX2Nzc0FnZW50IGRlc3RydWN0aW9uLCBzbyB0aGlzIG1ldGhv
ZCB3aWxsIG5ldmVyIGJlIGNhbGxlZCBhZnRlciBtX2Nzc0FnZW50IGhhcyBiZWVuIGRlc3Ryb3ll
ZC4KLSAgICBmb3IgKEhhc2hNYXA8V2ViS2l0TmFtZWRGbG93KiwgaW50Pjo6aXRlcmF0b3IgaXQg
PSBtX25hbWVkRmxvd3MuYmVnaW4oKSwgZW5kID0gbV9uYW1lZEZsb3dzLmVuZCgpOyBpdCAhPSBl
bmQ7ICsraXQpCi0gICAgICAgIG1fY3NzQWdlbnQtPnJlZ2lvbk92ZXJzZXRDaGFuZ2VkKGl0LT5r
ZXksIGl0LT52YWx1ZSk7CisgICAgZm9yIChhdXRvJiBuYW1lZEZsb3cgOiBtX25hbWVkRmxvd3Mp
CisgICAgICAgIG1fY3NzQWdlbnQtPnJlZ2lvbk92ZXJzZXRDaGFuZ2VkKG5hbWVkRmxvdy5rZXks
IG5hbWVkRmxvdy52YWx1ZSk7CiAKICAgICBtX25hbWVkRmxvd3MuY2xlYXIoKTsKIH0KQEAgLTkw
NCw4ICs5MDMsOCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsCiAg
ICAgVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+PiBuYW1lZEZsb3dzVmVjdG9yID0gZG9j
dW1lbnQtPm5hbWVkRmxvd3MoKS5uYW1lZEZsb3dzKCk7CiAgICAgYXV0byBuYW1lZEZsb3dzID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1l
ZEZsb3c+OjpjcmVhdGUoKTsKIAotICAgIGZvciAoVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZs
b3c+Pjo6aXRlcmF0b3IgaXQgPSBuYW1lZEZsb3dzVmVjdG9yLmJlZ2luKCk7IGl0ICE9IG5hbWVk
Rmxvd3NWZWN0b3IuZW5kKCk7ICsraXQpCi0gICAgICAgIG5hbWVkRmxvd3MtPmFkZEl0ZW0oYnVp
bGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JTdHJpbmcsIGl0LT5nZXQoKSwgZG9jdW1lbnROb2Rl
SWQpKTsKKyAgICBmb3IgKGF1dG8mIG5hbWVkRmxvdyA6IG5hbWVkRmxvd3NWZWN0b3IpCisgICAg
ICAgIG5hbWVkRmxvd3MtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JTdHJp
bmcsIG5hbWVkRmxvdy5nZXQoKSwgZG9jdW1lbnROb2RlSWQpKTsKIAogICAgIHJlc3VsdCA9IFdU
Rjo6bW92ZShuYW1lZEZsb3dzKTsKIH0KQEAgLTExODMsMTQgKzExODIsMTQgQEAgdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6c3R5bGVTaGVldENoYW5nZQogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
cmVzZXRQc2V1ZG9TdGF0ZXMoKQogewogICAgIEhhc2hTZXQ8RG9jdW1lbnQqPiBkb2N1bWVudHNU
b0NoYW5nZTsKLSAgICBmb3IgKE5vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGU6Oml0ZXJhdG9yIGl0
ID0gbV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlLmJlZ2luKCksIGVuZCA9IG1fbm9kZUlkVG9G
b3JjZWRQc2V1ZG9TdGF0ZS5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmIChF
bGVtZW50KiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4obV9kb21BZ2VudC0+bm9kZUZvcklk
KGl0LT5rZXkpKSkKKyAgICBmb3IgKGF1dG8mIG5vZGVJZCA6IG1fbm9kZUlkVG9Gb3JjZWRQc2V1
ZG9TdGF0ZSkgeworICAgICAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IGRvd25jYXN0PEVsZW1l
bnQ+KG1fZG9tQWdlbnQtPm5vZGVGb3JJZChub2RlSWQua2V5KSkpCiAgICAgICAgICAgICBkb2N1
bWVudHNUb0NoYW5nZS5hZGQoJmVsZW1lbnQtPmRvY3VtZW50KCkpOwogICAgIH0KIAogICAgIG1f
bm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5jbGVhcigpOwotICAgIGZvciAoSGFzaFNldDxEb2N1
bWVudCo+OjppdGVyYXRvciBpdCA9IGRvY3VtZW50c1RvQ2hhbmdlLmJlZ2luKCksIGVuZCA9IGRv
Y3VtZW50c1RvQ2hhbmdlLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5z
dHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAgICBmb3IgKGF1
dG8mIGRvY3VtZW50IDogZG9jdW1lbnRzVG9DaGFuZ2UpCisgICAgICAgIGRvY3VtZW50LT5zdHls
ZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCShyZXZpc2lvbiAxOTAyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsOCArMTg2
LDggQEAgdm9pZCBSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrOjp0aW1lcgogewogICAgIC8v
IFRoZSB0aW1lciBpcyBzdG9wcGVkIG9uIG1fZG9tQWdlbnQgZGVzdHJ1Y3Rpb24sIHNvIHRoaXMg
bWV0aG9kIHdpbGwgbmV2ZXIgYmUgY2FsbGVkIGFmdGVyIG1fZG9tQWdlbnQgaGFzIGJlZW4gZGVz
dHJveWVkLgogICAgIFZlY3RvcjxFbGVtZW50Kj4gZWxlbWVudHM7Ci0gICAgZm9yIChIYXNoU2V0
PFJlZlB0cjxFbGVtZW50Pj46Oml0ZXJhdG9yIGl0ID0gbV9lbGVtZW50cy5iZWdpbigpLCBlbmQg
PSBtX2VsZW1lbnRzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGVsZW1lbnRzLmFw
cGVuZChpdC0+Z2V0KCkpOworICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpCisg
ICAgICAgIGVsZW1lbnRzLmFwcGVuZChlbGVtZW50LmdldCgpKTsKICAgICBtX2RvbUFnZW50LT5z
dHlsZUF0dHJpYnV0ZUludmFsaWRhdGVkKGVsZW1lbnRzKTsKIAogICAgIG1fZWxlbWVudHMuY2xl
YXIoKTsKQEAgLTYzMSw4ICs2MzEsOCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZWxlYXNl
QmFja2VuZE5vCiB7CiAgICAgaWYgKG1fbm9kZUdyb3VwVG9CYWNrZW5kSWRNYXAuY29udGFpbnMo
bm9kZUdyb3VwKSkgewogICAgICAgICBOb2RlVG9CYWNrZW5kSWRNYXAmIG1hcCA9IG1fbm9kZUdy
b3VwVG9CYWNrZW5kSWRNYXAuZmluZChub2RlR3JvdXApLT52YWx1ZTsKLSAgICAgICAgZm9yIChO
b2RlVG9CYWNrZW5kSWRNYXA6Oml0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IG1hcC5l
bmQoKTsgKytpdCkKLSAgICAgICAgICAgIG1fYmFja2VuZElkVG9Ob2RlLnJlbW92ZShpdC0+dmFs
dWUpOworICAgICAgICBmb3IgKGF1dG8mIGJhY2tlbmRJZCA6IG1hcC52YWx1ZXMoKSkKKyAgICAg
ICAgICAgIG1fYmFja2VuZElkVG9Ob2RlLnJlbW92ZShiYWNrZW5kSWQpOwogICAgICAgICBtX25v
ZGVHcm91cFRvQmFja2VuZElkTWFwLnJlbW92ZShub2RlR3JvdXApOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtODEzLDExICs4MTMsOCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRF
dmVudExpc3RlbmVyCiAKICAgICAvLyBHZXQgQ2FwdHVyaW5nIExpc3RlbmVycyAoaW4gdGhpcyBv
cmRlcikKICAgICBzaXplX3QgZXZlbnRJbmZvcm1hdGlvbkxlbmd0aCA9IGV2ZW50SW5mb3JtYXRp
b24uc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXZlbnRJbmZvcm1hdGlvbkxl
bmd0aDsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEV2ZW50TGlzdGVuZXJJbmZvJiBpbmZvID0gZXZl
bnRJbmZvcm1hdGlvbltpXTsKLSAgICAgICAgY29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciYgdmVj
dG9yID0gaW5mby5ldmVudExpc3RlbmVyVmVjdG9yOwotICAgICAgICBmb3IgKHNpemVfdCBqID0g
MDsgaiA8IHZlY3Rvci5zaXplKCk7ICsraikgewotICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJl
ZEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyID0gdmVjdG9yW2pdOworICAgIGZvciAoYXV0byYgaW5m
byA6IGV2ZW50SW5mb3JtYXRpb24pIHsKKyAgICAgICAgZm9yIChhdXRvJiBsaXN0ZW5lciA6IGlu
Zm8uZXZlbnRMaXN0ZW5lclZlY3RvcikgewogICAgICAgICAgICAgaWYgKGxpc3RlbmVyLnVzZUNh
cHR1cmUpCiAgICAgICAgICAgICAgICAgbGlzdGVuZXJzQXJyYXktPmFkZEl0ZW0oYnVpbGRPYmpl
Y3RGb3JFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBpbmZvLmV2ZW50VHlwZSwgaW5mby5ub2RlLCBv
YmplY3RHcm91cCkpOwogICAgICAgICB9CkBAIC04MjYsOSArODIzLDcgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcgogICAgIC8vIEdldCBCdWJibGluZyBMaXN0ZW5l
cnMgKHJldmVyc2Ugb3JkZXIpCiAgICAgZm9yIChzaXplX3QgaSA9IGV2ZW50SW5mb3JtYXRpb25M
ZW5ndGg7IGk7IC0taSkgewogICAgICAgICBjb25zdCBFdmVudExpc3RlbmVySW5mbyYgaW5mbyA9
IGV2ZW50SW5mb3JtYXRpb25baSAtIDFdOwotICAgICAgICBjb25zdCBFdmVudExpc3RlbmVyVmVj
dG9yJiB2ZWN0b3IgPSBpbmZvLmV2ZW50TGlzdGVuZXJWZWN0b3I7Ci0gICAgICAgIGZvciAoc2l6
ZV90IGogPSAwOyBqIDwgdmVjdG9yLnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICBjb25zdCBS
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIgPSB2ZWN0b3Jbal07CisgICAgICAgIGZv
ciAoYXV0byYgbGlzdGVuZXIgOiBpbmZvLmV2ZW50TGlzdGVuZXJWZWN0b3IpIHsKICAgICAgICAg
ICAgIGlmICghbGlzdGVuZXIudXNlQ2FwdHVyZSkKICAgICAgICAgICAgICAgICBsaXN0ZW5lcnNB
cnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGluZm8u
ZXZlbnRUeXBlLCBpbmZvLm5vZGUsIG9iamVjdEdyb3VwKSk7CiAgICAgICAgIH0KQEAgLTg1Mywx
NSArODQ4LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXIKICAg
ICAgICAgaWYgKCFkKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIC8vIEdldCB0aGUg
bGlzdCBvZiBldmVudCB0eXBlcyB0aGlzIE5vZGUgaXMgY29uY2VybmVkIHdpdGgKLSAgICAgICAg
VmVjdG9yPEF0b21pY1N0cmluZz4gZXZlbnRUeXBlcyA9IGQtPmV2ZW50TGlzdGVuZXJNYXAuZXZl
bnRUeXBlcygpOwotICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGV2ZW50VHlwZXMuc2l6
ZSgpOyArK2opIHsKLSAgICAgICAgICAgIEF0b21pY1N0cmluZyYgdHlwZSA9IGV2ZW50VHlwZXNb
al07CisgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGQtPmV2ZW50TGlzdGVuZXJNYXAuZXZlbnRU
eXBlcygpKSB7CiAgICAgICAgICAgICBjb25zdCBFdmVudExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5l
cnMgPSBhbmNlc3Rvci0+Z2V0RXZlbnRMaXN0ZW5lcnModHlwZSk7CiAgICAgICAgICAgICBFdmVu
dExpc3RlbmVyVmVjdG9yIGZpbHRlcmVkTGlzdGVuZXJzOwogICAgICAgICAgICAgZmlsdGVyZWRM
aXN0ZW5lcnMucmVzZXJ2ZUNhcGFjaXR5KGxpc3RlbmVycy5zaXplKCkpOwotICAgICAgICAgICAg
Zm9yIChzaXplX3QgayA9IDA7IGsgPCBsaXN0ZW5lcnMuc2l6ZSgpOyArK2spIHsKLSAgICAgICAg
ICAgICAgICBpZiAobGlzdGVuZXJzW2tdLmxpc3RlbmVyLT50eXBlKCkgPT0gRXZlbnRMaXN0ZW5l
cjo6SlNFdmVudExpc3RlbmVyVHlwZSkKLSAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRMaXN0
ZW5lcnMuYXBwZW5kKGxpc3RlbmVyc1trXSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGxpc3Rl
bmVyIDogbGlzdGVuZXJzKSB7CisgICAgICAgICAgICAgICAgaWYgKGxpc3RlbmVyLmxpc3RlbmVy
LT50eXBlKCkgPT0gRXZlbnRMaXN0ZW5lcjo6SlNFdmVudExpc3RlbmVyVHlwZSkKKyAgICAgICAg
ICAgICAgICAgICAgZmlsdGVyZWRMaXN0ZW5lcnMuYXBwZW5kKGxpc3RlbmVyKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmICghZmlsdGVyZWRMaXN0ZW5lcnMuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIGV2ZW50SW5mb3JtYXRpb24uYXBwZW5kKEV2ZW50TGlzdGVuZXJJbmZvKGFu
Y2VzdG9yLCB0eXBlLCBmaWx0ZXJlZExpc3RlbmVycykpOwpAQCAtODg0LDggKzg3Nyw3IEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2goRXIKICAgICBJbnNwZWN0b3JOb2Rl
RmluZGVyIGZpbmRlcih3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KTsKIAogICAgIGlmIChub2RlSWRz
KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBub2RlSWRzLT5sZW5ndGgoKTsg
KytpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG5vZGVWYWx1ZSA9IG5v
ZGVJZHMtPmdldChpKTsKKyAgICAgICAgZm9yIChhdXRvJiBub2RlVmFsdWUgOiAqbm9kZUlkcykg
ewogICAgICAgICAgICAgaWYgKCFub2RlVmFsdWUpIHsKICAgICAgICAgICAgICAgICBlcnJvclN0
cmluZyA9IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBub2RlSWRzIGl0ZW0uIik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtOTEyLDggKzkwNCw4IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnBlcmZvcm1TZWFyY2goRXIKICAgICAqc2VhcmNoSWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OmNy
ZWF0ZUlkZW50aWZpZXIoKTsKIAogICAgIGF1dG8mIHJlc3VsdHNWZWN0b3IgPSBtX3NlYXJjaFJl
c3VsdHMuYWRkKCpzZWFyY2hJZCwgVmVjdG9yPFJlZlB0cjxOb2RlPj4oKSkuaXRlcmF0b3ItPnZh
bHVlOwotICAgIGZvciAoYXV0byBpdGVyYXRvciA9IGZpbmRlci5yZXN1bHRzKCkuYmVnaW4oKTsg
aXRlcmF0b3IgIT0gZmluZGVyLnJlc3VsdHMoKS5lbmQoKTsgKytpdGVyYXRvcikKLSAgICAgICAg
cmVzdWx0c1ZlY3Rvci5hcHBlbmQoKml0ZXJhdG9yKTsKKyAgICBmb3IgKGF1dG8mIHJlc3VsdCA6
IGZpbmRlci5yZXN1bHRzKCkpCisgICAgICAgIHJlc3VsdHNWZWN0b3IuYXBwZW5kKHJlc3VsdCk7
CiAKICAgICAqcmVzdWx0Q291bnQgPSByZXN1bHRzVmVjdG9yLnNpemUoKTsKIH0KQEAgLTE5NjMs
OCArMTk1NSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTUF0dHIKIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnN0eWxlQXR0cmlidXRlSW52YWxpZGF0ZWQoY29uc3QgVmVj
dG9yPEVsZW1lbnQqPiYgZWxlbWVudHMpCiB7CiAgICAgYXV0byBub2RlSWRzID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MCwgc2l6ZSA9IGVsZW1lbnRzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gZWxlbWVudHMuYXQoaSk7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDog
ZWxlbWVudHMpIHsKICAgICAgICAgaW50IGlkID0gYm91bmROb2RlSWQoZWxlbWVudCk7CiAgICAg
ICAgIC8vIElmIG5vZGUgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdub3JlIHRoZSBldmVudC4KICAg
ICAgICAgaWYgKCFpZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAJKHJldmlzaW9uIDE5MDIzNykKKysrIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzk1LDkgKzM5NSw5IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6d2lsbFNlbmQKICAgICBpZiAobV9wYXVzZU9uQWxsWEhSc0VuYWJsZWQpCiAgICAgICAg
IGJyZWFrcG9pbnRVUkwgPSBlbXB0eVN0cmluZygpOwogICAgIGVsc2UgewotICAgICAgICBmb3Ig
KGF1dG8gaXQgPSBtX3hockJyZWFrcG9pbnRzLmJlZ2luKCksIGVuZCA9IG1feGhyQnJlYWtwb2lu
dHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKHVybC5jb250YWlu
cygqaXQpKSB7Ci0gICAgICAgICAgICAgICAgYnJlYWtwb2ludFVSTCA9ICppdDsKKyAgICAgICAg
Zm9yIChhdXRvJiBicmVha3BvaW50IDogbV94aHJCcmVha3BvaW50cykgeworICAgICAgICAgICAg
aWYgKHVybC5jb250YWlucyhicmVha3BvaW50KSkgeworICAgICAgICAgICAgICAgIGJyZWFrcG9p
bnRVUkwgPSBicmVha3BvaW50OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCShyZXZpc2lvbiAxOTAyMzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgwLDE0ICs4MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFNRTFJlc3VsdFNldFJvd0xpc3Qq
IHJvd0xpc3QgPSByZXN1bHRTZXQtPnJvd3MoKTsKIAogICAgICAgICBhdXRvIGNvbHVtbk5hbWVz
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7Ci0gICAgICAg
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb2x1bW5zID0gcm93TGlzdC0+Y29sdW1uTmFtZXMoKTsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2x1bW5zLnNpemUoKTsgKytpKQotICAg
ICAgICAgICAgY29sdW1uTmFtZXMtPmFkZEl0ZW0oY29sdW1uc1tpXSk7CisgICAgICAgIGZvciAo
YXV0byYgY29sdW1uIDogcm93TGlzdC0+Y29sdW1uTmFtZXMoKSkKKyAgICAgICAgICAgIGNvbHVt
bk5hbWVzLT5hZGRJdGVtKGNvbHVtbik7CiAKICAgICAgICAgYXV0byB2YWx1ZXMgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3JWYWx1ZT46OmNyZWF0ZSgpOwotICAgICAgICBj
b25zdCBWZWN0b3I8U1FMVmFsdWU+JiBkYXRhID0gcm93TGlzdC0+dmFsdWVzKCk7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAg
Y29uc3QgU1FMVmFsdWUmIHZhbHVlID0gcm93TGlzdC0+dmFsdWVzKClbaV07CisgICAgICAgIGZv
ciAoYXV0byYgdmFsdWUgOiByb3dMaXN0LT52YWx1ZXMoKSkgewogICAgICAgICAgICAgUmVmUHRy
PEluc3BlY3RvclZhbHVlPiBpbnNwZWN0b3JWYWx1ZTsKICAgICAgICAgICAgIHN3aXRjaCAodmFs
dWUudHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpTdHJpbmdWYWx1ZTogaW5z
cGVjdG9yVmFsdWUgPSBJbnNwZWN0b3JTdHJpbmc6OmNyZWF0ZSh2YWx1ZS5zdHJpbmcoKSk7IGJy
ZWFrOwpAQCAtMjQxLDkgKzIzOCw4IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZW5h
YmxlKEVycm8KICAgICAgICAgcmV0dXJuOwogICAgIG1fZW5hYmxlZCA9IHRydWU7CiAKLSAgICBE
YXRhYmFzZVJlc291cmNlc01hcDo6aXRlcmF0b3IgZGF0YWJhc2VzRW5kID0gbV9yZXNvdXJjZXMu
ZW5kKCk7Ci0gICAgZm9yIChEYXRhYmFzZVJlc291cmNlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Jl
c291cmNlcy5iZWdpbigpOyBpdCAhPSBkYXRhYmFzZXNFbmQ7ICsraXQpCi0gICAgICAgIGl0LT52
YWx1ZS0+YmluZChtX2Zyb250ZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgZm9yIChhdXRvJiBy
ZXNvdXJjZSA6IG1fcmVzb3VyY2VzLnZhbHVlcygpKQorICAgICAgICByZXNvdXJjZS0+YmluZCht
X2Zyb250ZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCkBAIC0yNjQsMTAgKzI2MCw4IEBAIHZvaWQgSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2UKIAogICAgIERhdGFiYXNlKiBkYXRhYmFz
ZSA9IGRhdGFiYXNlRm9ySWQoZGF0YWJhc2VJZCk7CiAgICAgaWYgKGRhdGFiYXNlKSB7Ci0gICAg
ICAgIFZlY3RvcjxTdHJpbmc+IHRhYmxlTmFtZXMgPSBkYXRhYmFzZS0+dGFibGVOYW1lcygpOwot
ICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSB0YWJsZU5hbWVzLnNpemUoKTsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgbmFtZXMtPmFk
ZEl0ZW0odGFibGVOYW1lc1tpXSk7CisgICAgICAgIGZvciAoYXV0byYgdGFibGVOYW1lIDogZGF0
YWJhc2UtPnRhYmxlTmFtZXMoKSkKKyAgICAgICAgICAgIG5hbWVzLT5hZGRJdGVtKHRhYmxlTmFt
ZSk7CiAgICAgfQogfQogCkBAIC0yOTIsMTggKzI4NiwxOCBAQCB2b2lkIEluc3BlY3RvckRhdGFi
YXNlQWdlbnQ6OmV4ZWN1dGVTUUwoCiAKIFN0cmluZyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojpk
YXRhYmFzZUlkKERhdGFiYXNlKiBkYXRhYmFzZSkKIHsKLSAgICBmb3IgKERhdGFiYXNlUmVzb3Vy
Y2VzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IG1fcmVzb3Vy
Y2VzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC0+dmFsdWUtPmRhdGFiYXNlKCkgPT0g
ZGF0YWJhc2UpCi0gICAgICAgICAgICByZXR1cm4gaXQtPmtleTsKKyAgICBmb3IgKGF1dG8mIHJl
c291cmNlIDogbV9yZXNvdXJjZXMpIHsKKyAgICAgICAgaWYgKHJlc291cmNlLnZhbHVlLT5kYXRh
YmFzZSgpID09IGRhdGFiYXNlKQorICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlLmtleTsKICAg
ICB9CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNl
KiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpmaW5kQnlGaWxlTmFtZShjb25zdCBTdHJpbmcmIGZp
bGVOYW1lKQogewotICAgIGZvciAoRGF0YWJhc2VSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9yZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCk7ICsraXQpIHsKLSAg
ICAgICAgaWYgKGl0LT52YWx1ZS0+ZGF0YWJhc2UoKS0+ZmlsZU5hbWUoKSA9PSBmaWxlTmFtZSkK
LSAgICAgICAgICAgIHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7CisgICAgZm9yIChhdXRvJiByZXNv
dXJjZSA6IG1fcmVzb3VyY2VzLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChyZXNvdXJjZS0+ZGF0
YWJhc2UoKS0+ZmlsZU5hbWUoKSA9PSBmaWxlTmFtZSkKKyAgICAgICAgICAgIHJldHVybiByZXNv
dXJjZS5nZXQoKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuY3BwCShyZXZpc2lvbiAxOTAyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw4
ICsxNjYsOCBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmZyb250CiAgICAg
c2V0RG9ja2luZ1VuYXZhaWxhYmxlKCFjYW5BdHRhY2hXaW5kb3coKSk7CiAgICAgYnJpbmdUb0Zy
b250KCk7CiAgICAgbV9mcm9udGVuZExvYWRlZCA9IHRydWU7Ci0gICAgZm9yIChWZWN0b3I8U3Ry
aW5nPjo6aXRlcmF0b3IgaXQgPSBtX2V2YWx1YXRlT25Mb2FkLmJlZ2luKCk7IGl0ICE9IG1fZXZh
bHVhdGVPbkxvYWQuZW5kKCk7ICsraXQpCi0gICAgICAgIGV2YWx1YXRlT25Mb2FkKCppdCk7Cisg
ICAgZm9yIChhdXRvJiBldmFsdWF0ZSA6IG1fZXZhbHVhdGVPbkxvYWQpCisgICAgICAgIGV2YWx1
YXRlT25Mb2FkKGV2YWx1YXRlKTsKICAgICBtX2V2YWx1YXRlT25Mb2FkLmNsZWFyKCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY3BwCShyZXZpc2lvbiAxOTAyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsOCArODUsOCBA
QCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZUNvbnRleHRNZW51KENv
bnRleHRNZW51KiBtZW51KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2l0ZW1zLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbWVudS0+YXBwZW5kSXRl
bShtX2l0ZW1zW2ldKTsKKyAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogbV9pdGVtcykKKyAgICAg
ICAgICAgIG1lbnUtPmFwcGVuZEl0ZW0oaXRlbSk7CiAgICAgfQogICAgIAogICAgIHZpcnR1YWwg
dm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pIG92ZXJy
aWRlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5jcHAJKHJldmlzaW9uIDE5MDIzNykKKysrIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
OSw5ICsyNTksOCBAQCBzdGF0aWMgUmVmUHRyPEtleVBhdGg+IGtleVBhdGhGcm9tSURCS2V5CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSURCS2V5UGF0aDo6QXJyYXlUeXBlOiB7CiAgICAgICAg
IGF1dG8gYXJyYXkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUo
KTsKLSAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0cmluZ0FycmF5ID0gaWRiS2V5UGF0
aC5hcnJheSgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmluZ0FycmF5LnNp
emUoKTsgKytpKQotICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0oc3RyaW5nQXJyYXlbaV0pOwor
ICAgICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IGlkYktleVBhdGguYXJyYXkoKSkKKyAgICAgICAg
ICAgIGFycmF5LT5hZGRJdGVtKHN0cmluZyk7CiAgICAgICAgIGtleVBhdGggPSBLZXlQYXRoOjpj
cmVhdGUoKQogICAgICAgICAgICAgLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6QXJyYXkpCiAgICAg
ICAgICAgICAucmVsZWFzZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5LmNwcAkocmV2aXNpb24gMTkwMjM3KQorKysgU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw4ICs5
Niw4IEBAIHN0YXRpYyB2b2lkIGJ1aWxkUmVuZGVyZXJIaWdobGlnaHQoUmVuZGUKICAgICBpZiAo
aXNTVkdSZW5kZXJlcikgewogICAgICAgICBoaWdobGlnaHQudHlwZSA9IEhpZ2hsaWdodFR5cGU6
OlJlY3RzOwogICAgICAgICByZW5kZXJlci0+YWJzb2x1dGVRdWFkcyhoaWdobGlnaHQucXVhZHMp
OwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhpZ2hsaWdodC5xdWFkcy5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgIGNvbnRlbnRzUXVhZFRvQ29vcmRpbmF0ZVN5c3RlbShtYWluVmll
dywgY29udGFpbmluZ1ZpZXcsIGhpZ2hsaWdodC5xdWFkc1tpXSwgY29vcmRpbmF0ZVN5c3RlbSk7
CisgICAgICAgIGZvciAoYXV0byYgcXVhZCA6IGhpZ2hsaWdodC5xdWFkcykKKyAgICAgICAgICAg
IGNvbnRlbnRzUXVhZFRvQ29vcmRpbmF0ZVN5c3RlbShtYWluVmlldywgY29udGFpbmluZ1ZpZXcs
IHF1YWQsIGNvb3JkaW5hdGVTeXN0ZW0pOwogICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVyQm94Pigq
cmVuZGVyZXIpIHx8IGlzPFJlbmRlcklubGluZT4oKnJlbmRlcmVyKSkgewogICAgICAgICBMYXlv
dXRSZWN0IGNvbnRlbnRCb3g7CiAgICAgICAgIExheW91dFJlY3QgcGFkZGluZ0JveDsKQEAgLTM3
OCw4ICszNzgsOCBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUCiBz
dGF0aWMgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdo
bGlnaHREYXRhPiBidWlsZE9iamVjdEZvckhpZ2hsaWdodChjb25zdCBIaWdobGlnaHQmIGhpZ2hs
aWdodCkKIHsKICAgICBhdXRvIGFycmF5T2ZRdWFkcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6UXVhZD46OmNyZWF0ZSgpOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaGlnaGxpZ2h0LnF1YWRzLnNpemUoKTsgKytpKQot
ICAgICAgICBhcnJheU9mUXVhZHMtPmFkZEl0ZW0oYnVpbGRBcnJheUZvclF1YWQoaGlnaGxpZ2h0
LnF1YWRzW2ldKSk7CisgICAgZm9yIChhdXRvJiBxdWFkIDogaGlnaGxpZ2h0LnF1YWRzKQorICAg
ICAgICBhcnJheU9mUXVhZHMtPmFkZEl0ZW0oYnVpbGRBcnJheUZvclF1YWQocXVhZCkpOwogCiAg
ICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdo
bGlnaHREYXRhOjpjcmVhdGUoKQogICAgICAgICAuc2V0UXVhZHMoV1RGOjptb3ZlKGFycmF5T2ZR
dWFkcykpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAkocmV2aXNpb24gMTkwMjM3KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxMiwxMCArNTEyLDkg
QEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJybwogICAgICAgICAgICAg
ICAgIC8vIGJlY2F1c2UgImRvY3VtZW50IiBpcyB0aGUgZG9jdW1lbnQgb2YgdGhlIG1haW4gZnJh
bWUgb2YgdGhlIHBhZ2UuCiAgICAgICAgICAgICAgICAgc3RyaW5nQ29va2llc0xpc3QuYXBwZW5k
KGRvY3VtZW50LT5jb29raWUoQVNTRVJUX05PX0VYQ0VQVElPTikpOwogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBpbnQgY29va2llc1NpemUgPSBkb2NDb29raWVzTGlzdC5z
aXplKCk7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb29raWVzU2l6ZTsg
aSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcmF3Q29va2llc0xpc3QuY29udGFpbnMo
ZG9jQ29va2llc0xpc3RbaV0pKQotICAgICAgICAgICAgICAgICAgICAgICAgcmF3Q29va2llc0xp
c3QuYWRkKGRvY0Nvb2tpZXNMaXN0W2ldKTsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGNv
b2tpZSA6IGRvY0Nvb2tpZXNMaXN0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghcmF3Q29v
a2llc0xpc3QuY29udGFpbnMoY29va2llKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhd0Nv
b2tpZXNMaXN0LmFkZChjb29raWUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxh
eUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVwbGF5QWdlbnQuY3BwCShyZXZpc2lvbiAxOTAyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw4
ICs3Niw4IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjoKIHsKICAg
ICBhdXRvIHNlZ21lbnRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U2VnbWVudElkZW50
aWZpZXI+OjpjcmVhdGUoKTsKIAotICAgIGZvciAoYXV0byBpdCA9IHNlc3Npb24tPmJlZ2luKCk7
IGl0ICE9IHNlc3Npb24tPmVuZCgpOyArK2l0KQotICAgICAgICBzZWdtZW50cy0+YWRkSXRlbSgo
Kml0KS0+aWRlbnRpZmllcigpKTsKKyAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqc2Vzc2lvbikK
KyAgICAgICAgc2VnbWVudHMtPmFkZEl0ZW0oc2VnbWVudC0+aWRlbnRpZmllcigpKTsKIAogICAg
IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheVNlc3Npb246OmNyZWF0
ZSgpCiAgICAgICAgIC5zZXRJZChzZXNzaW9uLT5pZGVudGlmaWVyKCkpCkBAIC0xODUsOCArMTg1
LDggQEAgdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6ZGlkQ3JlYXRlRnJvbgogICAgIFJlZlB0
cjxSZXBsYXlTZXNzaW9uPiBzZXNzaW9uID0gbV9wYWdlLnJlcGxheUNvbnRyb2xsZXIoKS5sb2Fk
ZWRTZXNzaW9uKCk7CiAgICAgbV9zZXNzaW9uc01hcC5hZGQoc2Vzc2lvbi0+aWRlbnRpZmllcigp
LCBzZXNzaW9uKTsKIAotICAgIGZvciAoYXV0byBpdCA9IHNlc3Npb24tPmJlZ2luKCk7IGl0ICE9
IHNlc3Npb24tPmVuZCgpOyArK2l0KQotICAgICAgICBtX3NlZ21lbnRzTWFwLmFkZCgoKml0KS0+
aWRlbnRpZmllcigpLCAqaXQpOworICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICpzZXNzaW9uKQor
ICAgICAgICBtX3NlZ21lbnRzTWFwLmFkZChzZWdtZW50LT5pZGVudGlmaWVyKCksIHNlZ21lbnQp
OwogfQogCiB2b2lkIEluc3BlY3RvclJlcGxheUFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCShyZXZpc2lv
biAxOTAyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4Myw5ICs0ODMsOCBAQCB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OndpbGxEZXN0cm95CiAgICAgYm9vbCBiYXNlNjRFbmNvZGVkOwogICAg
IGlmICghSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoJmNhY2hlZFJl
c291cmNlLCAmY29udGVudCwgJmJhc2U2NEVuY29kZWQpKQogICAgICAgICByZXR1cm47Ci0gICAg
VmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGVuZCA9IHJlcXVlc3RJZHMuZW5kKCk7Ci0gICAgZm9y
IChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgaXQgPSByZXF1ZXN0SWRzLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkKLSAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQo
Kml0LCBjb250ZW50LCBiYXNlNjRFbmNvZGVkKTsKKyAgICBmb3IgKGF1dG8mIGlkIDogcmVxdWVz
dElkcykKKyAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQoaWQsIGNv
bnRlbnQsIGJhc2U2NEVuY29kZWQpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OndpbGxSZWNhbGN1bGF0ZVN0eWxlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDE5MDIzNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTYsOCArOTYsNyBAQCB2b2lkIFBhcnNlZFN0eWxlU2hlZXQ6OnNldFRleHQoY29uc3Qg
U3RyCiAKIHN0YXRpYyB2b2lkIGZsYXR0ZW5Tb3VyY2VEYXRhKFJ1bGVTb3VyY2VEYXRhTGlzdCog
ZGF0YUxpc3QsIFJ1bGVTb3VyY2VEYXRhTGlzdCogdGFyZ2V0KQogewotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZGF0YUxpc3QtPnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NS
dWxlU291cmNlRGF0YT4mIGRhdGEgPSBkYXRhTGlzdC0+YXQoaSk7CisgICAgZm9yIChhdXRvJiBk
YXRhIDogKmRhdGFMaXN0KSB7CiAgICAgICAgIGlmIChkYXRhLT50eXBlID09IENTU1J1bGVTb3Vy
Y2VEYXRhOjpTVFlMRV9SVUxFKQogICAgICAgICAgICAgdGFyZ2V0LT5hcHBlbmQoZGF0YSk7CiAg
ICAgICAgIGVsc2UgaWYgKGRhdGEtPnR5cGUgPT0gQ1NTUnVsZVNvdXJjZURhdGE6Ok1FRElBX1JV
TEUpCkBAIC0zMTksOCArMzE4LDggQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3RvcgogICAgIFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiBwcm9wZXJ0aWVzOwog
ICAgIHBvcHVsYXRlQWxsUHJvcGVydGllcygmcHJvcGVydGllcyk7CiAKLSAgICBmb3IgKFZlY3Rv
cjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5Pjo6aXRlcmF0b3IgaXQgPSBwcm9wZXJ0aWVzLmJlZ2lu
KCksIGl0RW5kID0gcHJvcGVydGllcy5lbmQoKTsgaXQgIT0gaXRFbmQ7ICsraXQpIHsKLSAgICAg
ICAgY29uc3QgQ1NTUHJvcGVydHlTb3VyY2VEYXRhJiBwcm9wZXJ0eUVudHJ5ID0gaXQtPnNvdXJj
ZURhdGE7CisgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHByb3BlcnRpZXMpIHsKKyAgICAgICAg
Y29uc3QgQ1NTUHJvcGVydHlTb3VyY2VEYXRhJiBwcm9wZXJ0eUVudHJ5ID0gcHJvcGVydHkuc291
cmNlRGF0YTsKICAgICAgICAgYXV0byBlbnRyeSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5OjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldE5hbWUo
cHJvcGVydHlFbnRyeS5uYW1lKQogICAgICAgICAgICAgLnNldFZhbHVlKHByb3BlcnR5RW50cnku
dmFsdWUpCkBAIC0zNjYsMTEgKzM2NSwxMSBAQCBib29sIEluc3BlY3RvclN0eWxlOjpwb3B1bGF0
ZUFsbFByb3BlcnRpCiAgICAgICAgIFN0cmluZyBzdHlsZURlY2xhcmF0aW9uOwogICAgICAgICBi
b29sIGlzU3R5bGVUZXh0S25vd24gPSBnZXRUZXh0KCZzdHlsZURlY2xhcmF0aW9uKTsKICAgICAg
ICAgQVNTRVJUX1VOVVNFRChpc1N0eWxlVGV4dEtub3duLCBpc1N0eWxlVGV4dEtub3duKTsKLSAg
ICAgICAgZm9yIChWZWN0b3I8Q1NTUHJvcGVydHlTb3VyY2VEYXRhPjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBzb3VyY2VQcm9wZXJ0eURhdGEtPmJlZ2luKCk7IGl0ICE9IHNvdXJjZVByb3BlcnR5RGF0
YS0+ZW5kKCk7ICsraXQpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclN0eWxlUHJvcGVydHkgcCgq
aXQsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgZm9yIChhdXRvJiBzb3VyY2VEYXRhIDogKnNvdXJj
ZVByb3BlcnR5RGF0YSkgeworICAgICAgICAgICAgSW5zcGVjdG9yU3R5bGVQcm9wZXJ0eSBwKHNv
dXJjZURhdGEsIHRydWUsIGZhbHNlKTsKICAgICAgICAgICAgIHAuc2V0UmF3VGV4dEZyb21TdHls
ZURlY2xhcmF0aW9uKHN0eWxlRGVjbGFyYXRpb24pOwogICAgICAgICAgICAgcmVzdWx0LT5hcHBl
bmQocCk7Ci0gICAgICAgICAgICBzb3VyY2VQcm9wZXJ0eU5hbWVzLmFkZChsb3dlcmNhc2VQcm9w
ZXJ0eU5hbWUoaXQtPm5hbWUpKTsKKyAgICAgICAgICAgIHNvdXJjZVByb3BlcnR5TmFtZXMuYWRk
KGxvd2VyY2FzZVByb3BlcnR5TmFtZShzb3VyY2VEYXRhLm5hbWUpKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtODg0LDE2ICs4ODMsMTQgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29s
OjpBcnJheTxJbgogICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChKU0M6OllhcnI6
OlJlZ3VsYXJFeHByZXNzaW9uLCBjb21tZW50LCAoIi9cXCpbXl0qP1xcKi8iLCBUZXh0Q2FzZVNl
bnNpdGl2ZSwgSlNDOjpZYXJyOjpNdWx0aWxpbmVFbmFibGVkKSk7CiAKICAgICBhdXRvIHJlc3Vs
dCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU2VsZWN0b3I+OjpjcmVhdGUoKTsKLSAgICBjb25zdCBTZWxlY3RvclJhbmdlTGlzdCYgcmFu
Z2VzID0gc291cmNlRGF0YS0+c2VsZWN0b3JSYW5nZXM7CiAgICAgY29uc3QgQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDAs
IHNpemUgPSByYW5nZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgZm9yIChhdXRvJiBy
YW5nZSA6IHNvdXJjZURhdGEtPnNlbGVjdG9yUmFuZ2VzKSB7CiAgICAgICAgIC8vIElmIHdlIGRv
bid0IGhhdmUgYSBzZWxlY3RvciwgdGhhdCBtZWFucyB0aGUgU291cmNlRGF0YSBmb3IgdGhpcyBD
U1NTdHlsZVNoZWV0CiAgICAgICAgIC8vIG5vIGxvbmdlciBtYXRjaGVzIHVwIHdpdGggdGhlIGFj
dHVhbCBydWxlcyBpbiB0aGUgQ1NTU3R5bGVTaGVldC4KICAgICAgICAgQVNTRVJUKHNlbGVjdG9y
KTsKICAgICAgICAgaWYgKCFzZWxlY3RvcikKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
IGNvbnN0IFNvdXJjZVJhbmdlJiByYW5nZSA9IHJhbmdlcy5hdChpKTsKICAgICAgICAgU3RyaW5n
IHNlbGVjdG9yVGV4dCA9IHNoZWV0VGV4dC5zdWJzdHJpbmcocmFuZ2Uuc3RhcnQsIHJhbmdlLmxl
bmd0aCgpKTsKIAogICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHNlZSBhbnkgY29tbWVudHMg
aW4gdGhlIHNlbGVjdG9yIGNvbXBvbmVudHMsIG9ubHkgdGhlIG1lYW5pbmdmdWwgcGFydHMuCkBA
IC0xMDc2LDggKzEwNzMsOCBAQCB1bnNpZ25lZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpydWxlSW5k
ZXhCCiB7CiAgICAgZW5zdXJlRmxhdFJ1bGVzKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBtX2ZsYXRSdWxlcy5zaXplKCk7IGkgPCBz
aXplOyArK2kpIHsKLSAgICAgICAgaWYgKCZtX2ZsYXRSdWxlcy5hdChpKS0+c3R5bGUoKSA9PSBw
YWdlU3R5bGUpCisgICAgZm9yIChhdXRvJiBydWxlIDogbV9mbGF0UnVsZXMpIHsKKyAgICAgICAg
aWYgKCZydWxlLT5zdHlsZSgpID09IHBhZ2VTdHlsZSkKICAgICAgICAgICAgIHJldHVybiBpbmRl
eDsKIAogICAgICAgICArK2luZGV4OwpAQCAtMTI0MCw4ICsxMjM3LDggQEAgUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3RvcgogICAgIENTU1N0eWxlUnVsZVZlY3RvciBydWxl
czsKICAgICBjb2xsZWN0RmxhdFJ1bGVzKFdURjo6bW92ZShyZWZSdWxlTGlzdCksICZydWxlcyk7
CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXplID0gcnVsZXMuc2l6ZSgpOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICByZXN1bHQtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JSdWxlKHJ1bGVz
LmF0KGkpLmdldCgpLCBudWxscHRyKSk7CisgICAgZm9yIChhdXRvJiBydWxlIDogcnVsZXMpCisg
ICAgICAgIHJlc3VsdC0+YWRkSXRlbShidWlsZE9iamVjdEZvclJ1bGUocnVsZS5nZXQoKSwgbnVs
bHB0cikpOwogCiAgICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHQpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCShyZXZp
c2lvbiAxOTAyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2Vy
QWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsMTUgKzIwMywxNSBAQCB2b2lkIEluc3Bl
Y3RvcldvcmtlckFnZW50Ojp3b3JrZXJHbG9iYWxTCiAKIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdl
bnQ6OmNyZWF0ZVdvcmtlckZyb250ZW5kQ2hhbm5lbHNGb3JFeGlzdGluZ1dvcmtlcnMoKQogewot
ICAgIGZvciAoRGVkaWNhdGVkV29ya2Vyczo6aXRlcmF0b3IgaXQgPSBtX2RlZGljYXRlZFdvcmtl
cnMuYmVnaW4oKTsgaXQgIT0gbV9kZWRpY2F0ZWRXb3JrZXJzLmVuZCgpOyArK2l0KQotICAgICAg
ICBjcmVhdGVXb3JrZXJGcm9udGVuZENoYW5uZWwoaXQtPmtleSwgaXQtPnZhbHVlKTsKKyAgICBm
b3IgKGF1dG8mIHdvcmtlciA6IG1fZGVkaWNhdGVkV29ya2VycykKKyAgICAgICAgY3JlYXRlV29y
a2VyRnJvbnRlbmRDaGFubmVsKHdvcmtlci5rZXksIHdvcmtlci52YWx1ZSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRlc3Ryb3lXb3JrZXJGcm9udGVuZENoYW5uZWxzKCkKIHsK
LSAgICBmb3IgKFdvcmtlckNoYW5uZWxzOjppdGVyYXRvciBpdCA9IG1faWRUb0NoYW5uZWwuYmVn
aW4oKTsgaXQgIT0gbV9pZFRvQ2hhbm5lbC5lbmQoKTsgKytpdCkgewotICAgICAgICBpdC0+dmFs
dWUtPmRpc2Nvbm5lY3RGcm9tV29ya2VyR2xvYmFsU2NvcGUoKTsKLSAgICAgICAgZGVsZXRlIGl0
LT52YWx1ZTsKKyAgICBmb3IgKGF1dG8mIGNoYW5uZWwgOiBtX2lkVG9DaGFubmVsLnZhbHVlcygp
KSB7CisgICAgICAgIGNoYW5uZWwtPmRpc2Nvbm5lY3RGcm9tV29ya2VyR2xvYmFsU2NvcGUoKTsK
KyAgICAgICAgZGVsZXRlIGNoYW5uZWw7CiAgICAgfQogICAgIG1faWRUb0NoYW5uZWwuY2xlYXIo
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcAkocmV2aXNpb24gMTkwMjM3KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU0LDEzICsy
NTQsMTEgQEAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdAogVmVjdG9y
PFN0cmluZz4gTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hl
ZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7
Ci0gICAgUmVzb3VyY2VEYXRhTWFwOjppdGVyYXRvciBpdDsKLSAgICBSZXNvdXJjZURhdGFNYXA6
Oml0ZXJhdG9yIGVuZCA9IG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuZW5kKCk7Ci0gICAg
Zm9yIChpdCA9IG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gaXQtPnZhbHVl
OworICAgIGZvciAoYXV0byYgZW50cnkgOiBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwKSB7
CisgICAgICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gZW50cnkudmFsdWU7CiAgICAg
ICAgIGlmIChyZXNvdXJjZURhdGEtPmNhY2hlZFJlc291cmNlKCkgPT0gY2FjaGVkUmVzb3VyY2Up
IHsKICAgICAgICAgICAgIHJlc291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UobnVsbHB0cik7
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGl0LT5rZXkpOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChlbnRyeS5rZXkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNzQsMTMgKzI3Miwx
MSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpjbGVhcihjb25zdCBTCiAKICAgICBSZXNv
dXJjZURhdGFNYXAgcHJlc2VydmVkTWFwOwogCi0gICAgUmVzb3VyY2VEYXRhTWFwOjppdGVyYXRv
ciBpdDsKLSAgICBSZXNvdXJjZURhdGFNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcmVxdWVzdElkVG9S
ZXNvdXJjZURhdGFNYXAuZW5kKCk7Ci0gICAgZm9yIChpdCA9IG1fcmVxdWVzdElkVG9SZXNvdXJj
ZURhdGFNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJlc291cmNlRGF0
YSogcmVzb3VyY2VEYXRhID0gaXQtPnZhbHVlOworICAgIGZvciAoYXV0byYgZW50cnkgOiBtX3Jl
cXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwKSB7CisgICAgICAgIFJlc291cmNlRGF0YSogcmVzb3Vy
Y2VEYXRhID0gZW50cnkudmFsdWU7CiAgICAgICAgIEFTU0VSVChyZXNvdXJjZURhdGEpOwogICAg
ICAgICBpZiAoIXByZXNlcnZlZExvYWRlcklkLmlzTnVsbCgpICYmIHJlc291cmNlRGF0YS0+bG9h
ZGVySWQoKSA9PSBwcmVzZXJ2ZWRMb2FkZXJJZCkKLSAgICAgICAgICAgIHByZXNlcnZlZE1hcC5z
ZXQoaXQtPmtleSwgaXQtPnZhbHVlKTsKKyAgICAgICAgICAgIHByZXNlcnZlZE1hcC5zZXQoZW50
cnkua2V5LCBlbnRyeS52YWx1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRlbGV0ZSBy
ZXNvdXJjZURhdGE7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VS
dW50aW1lQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlUnVudGltZUFnZW50LmNwcAkocmV2aXNpb24gMTkwMjM3KQorKysgU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsOCAr
MTUyLDggQEAgdm9pZCBQYWdlUnVudGltZUFnZW50OjpyZXBvcnRFeGVjdXRpb25DbwogICAgICAg
ICBmcmFtZS0+c2NyaXB0KCkuY29sbGVjdElzb2xhdGVkQ29udGV4dHMoaXNvbGF0ZWRDb250ZXh0
cyk7CiAgICAgICAgIGlmIChpc29sYXRlZENvbnRleHRzLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaTwgaXNvbGF0ZWRDb250ZXh0
cy5zaXplKCk7IGkrKykKLSAgICAgICAgICAgIG5vdGlmeUNvbnRleHRDcmVhdGVkKGZyYW1lSWQs
IGlzb2xhdGVkQ29udGV4dHNbaV0uZmlyc3QsIGlzb2xhdGVkQ29udGV4dHNbaV0uc2Vjb25kLCBm
YWxzZSk7CisgICAgICAgIGZvciAoYXV0byYgY29udGV4dCA6IGlzb2xhdGVkQ29udGV4dHMpCisg
ICAgICAgICAgICBub3RpZnlDb250ZXh0Q3JlYXRlZChmcmFtZUlkLCBjb250ZXh0LmZpcnN0LCBj
b250ZXh0LnNlY29uZCwgZmFsc2UpOwogICAgICAgICBpc29sYXRlZENvbnRleHRzLmNsZWFyKCk7
CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1
Z1NlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5jcHAJKHJldmlzaW9uIDE5MDIzNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDYsMTEgKzE0Niw4IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXAK
IHsKICAgICBzZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKHBhdXNlZCk7CiAKLSAgICBjb25z
dCBIYXNoU2V0PFBhZ2UqPiYgcGFnZXMgPSBwYWdlR3JvdXAucGFnZXMoKTsKLQotICAgIEhhc2hT
ZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwYWdlcy5lbmQoKTsKLSAgICBmb3IgKEhh
c2hTZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHBhZ2VzLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkKLSAgICAgICAgc2V0SmF2YVNjcmlwdFBhdXNlZCgqaXQsIHBhdXNlZCk7CisgICAg
Zm9yIChhdXRvJiBwYWdlIDogcGFnZUdyb3VwLnBhZ2VzKCkpCisgICAgICAgIHNldEphdmFTY3Jp
cHRQYXVzZWQocGFnZSwgcGF1c2VkKTsKIH0KIAogdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6
OnNldEphdmFTY3JpcHRQYXVzZWQoUGFnZSogcGFnZSwgYm9vbCBwYXVzZWQpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcAkocmV2aXNpb24gMTkw
MjM3KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDE0ICs1MywxMyBAQCB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6c2V0
TW9uaXRvcmluZ1hIUkVuCiAKIHZvaWQgV2ViQ29uc29sZUFnZW50OjpmcmFtZVdpbmRvd0Rpc2Nh
cmRlZChET01XaW5kb3cqIHdpbmRvdykKIHsKLSAgICBzaXplX3QgbWVzc2FnZUNvdW50ID0gbV9j
b25zb2xlTWVzc2FnZXMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWVzc2Fn
ZUNvdW50OyArK2kpIHsKLSAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2NvbnNvbGVN
ZXNzYWdlc1tpXS0+c2NyaXB0U3RhdGUoKTsKKyAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2Nv
bnNvbGVNZXNzYWdlcykgeworICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1lc3NhZ2Ut
PnNjcmlwdFN0YXRlKCk7CiAgICAgICAgIGlmICghZXhlYykKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBpZiAoZG9tV2luZG93RnJvbUV4ZWNTdGF0ZShleGVjKSAhPSB3aW5kb3cpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9jb25zb2xlTWVzc2FnZXNbaV0tPmNsZWFy
KCk7CisgICAgICAgIG1lc3NhZ2UtPmNsZWFyKCk7CiAgICAgfQogCiAgICAgc3RhdGljX2Nhc3Q8
V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJj4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpLmRpc2Nh
cmRJbmplY3RlZFNjcmlwdHNGb3Iod2luZG93KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCShyZXZpc2lvbiAx
OTAyMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsOCArNjYsOCBAQCB2b2lkIFdlYkluamVjdGVk
U2NyaXB0TWFuYWdlcjo6ZGlzY2FyZEluCiAgICAgICAgIGlkc1RvUmVtb3ZlLmFwcGVuZChpdC5r
ZXkpOwogICAgIH0KIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaWRzVG9SZW1vdmUuc2l6
ZSgpOyBpKyspCi0gICAgICAgIG1faWRUb0luamVjdGVkU2NyaXB0LnJlbW92ZShpZHNUb1JlbW92
ZVtpXSk7CisgICAgZm9yIChhdXRvJiBpZCA6IGlkc1RvUmVtb3ZlKQorICAgICAgICBtX2lkVG9J
bmplY3RlZFNjcmlwdC5yZW1vdmUoaWQpOwogCiAgICAgLy8gTm93IHJlbW92ZSBzY3JpcHQgc3Rh
dGVzIHRoYXQgaGF2ZSBpZCBidXQgbm8gaW5qZWN0ZWQgc2NyaXB0LgogICAgIFZlY3RvcjxKU0M6
OkV4ZWNTdGF0ZSo+IHNjcmlwdFN0YXRlc1RvUmVtb3ZlOwpAQCAtNzcsOCArNzcsOCBAQCB2b2lk
IFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZEluCiAgICAgICAgICAgICBzY3JpcHRT
dGF0ZXNUb1JlbW92ZS5hcHBlbmQoc2NyaXB0U3RhdGUpOwogICAgIH0KIAotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2NyaXB0U3RhdGVzVG9SZW1vdmUuc2l6ZSgpOyBpKyspCi0gICAgICAg
IG1fc2NyaXB0U3RhdGVUb0lkLnJlbW92ZShzY3JpcHRTdGF0ZXNUb1JlbW92ZVtpXSk7CisgICAg
Zm9yIChhdXRvJiBzY3JpcHRTdGF0ZSA6IHNjcmlwdFN0YXRlc1RvUmVtb3ZlKQorICAgICAgICBt
X3NjcmlwdFN0YXRlVG9JZC5yZW1vdmUoc2NyaXB0U3RhdGUpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>