<?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>176477</bug_id>
          
          <creation_ts>2017-09-06 15:01:59 -0700</creation_ts>
          <short_desc>Require LoggingHelper overrides to provide identifier</short_desc>
          <delta_ts>2017-09-08 11:25:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1346109</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-09-06 15:01:59 -0700</bug_when>
    <thetext>Require LoggingHelper overrides to provide an identifier instead of logging &apos;this&apos;. Also get rid of &quot;notice&quot; log level, &quot;info&quot; seems to be enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346111</commentid>
    <comment_count>1</comment_count>
      <attachid>320064</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-09-06 15:09:16 -0700</bug_when>
    <thetext>Created attachment 320064
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346208</commentid>
    <comment_count>2</comment_count>
      <attachid>320064</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-06 19:33:01 -0700</bug_when>
    <thetext>Comment on attachment 320064
Proposed patch.

Clearing flags on attachment: 320064

Committed r221712: &lt;http://trac.webkit.org/changeset/221712&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346209</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-06 19:33:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346881</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-08 11:25:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/34335104&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320064</attachid>
            <date>2017-09-06 15:09:16 -0700</date>
            <delta_ts>2017-09-06 19:33:01 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>logger_update_patch_1.txt</filename>
            <type>text/plain</type>
            <size>59851</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMjE2NTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE3LTA5LTA2ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJlcXVpcmUgTG9nZ2luZ0hlbHBlciBvdmVy
cmlkZXMgdG8gcHJvdmlkZSBpZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmNwcDogTm8gbW9yZSBXVEZMb2dM
ZXZlbE5vdGljZS4KKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5oOiBEaXR0by4KKwogMjAxNy0w
OS0wNSAgWW9zaGlha2kgSml0c3VrYXdhICA8WW9zaGlha2kuSml0c3VrYXdhQHNvbnkuY29tPgog
CiAgICAgICAgIFtXaW5dIEZpeCB0aGUgd2luY2Fpcm8gYnVpbGQgYWZ0ZXIgcjIyMTU1OCBhbmQg
cjIyMTU4MwpJbmRleDogU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAJKHJldmlzaW9uIDIyMTY1OCkKKysrIFNv
dXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjksOCArNTY5
LDYgQEAgdm9pZCBXVEZJbml0aWFsaXplTG9nQ2hhbm5lbFN0YXRlc0Zyb21TdAogICAgICAgICAg
ICAgICAgIGxvZ0NoYW5uZWxMZXZlbCA9IFdURkxvZ0xldmVsRXJyb3I7CiAgICAgICAgICAgICBl
bHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShsZXZlbCwgIndhcm5pbmciKSkK
ICAgICAgICAgICAgICAgICBsb2dDaGFubmVsTGV2ZWwgPSBXVEZMb2dMZXZlbFdhcm5pbmc7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShsZXZlbCwg
Im5vdGljZSIpKQotICAgICAgICAgICAgICAgIGxvZ0NoYW5uZWxMZXZlbCA9IFdURkxvZ0xldmVs
Tm90aWNlOwogICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobGV2ZWwsICJpbmZvIikpCiAgICAgICAgICAgICAgICAgbG9nQ2hhbm5lbExldmVsID0gV1RG
TG9nTGV2ZWxJbmZvOwogICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UobGV2ZWwsICJkZWJ1ZyIpKQpJbmRleDogU291cmNlL1dURi93dGYvQXNzZXJ0aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAkocmV2aXNpb24g
MjIxNjU4KQorKysgU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDgsNyArMTQ4LDcgQEAgZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAogdHlwZWRlZiBlbnVtIHsg
V1RGTG9nQ2hhbm5lbE9mZiwgV1RGTG9nQ2hhbm5lbE9uLCBXVEZMb2dDaGFubmVsT25XaXRoQWNj
dW11bGF0aW9uIH0gV1RGTG9nQ2hhbm5lbFN0YXRlOwotdHlwZWRlZiBlbnVtIHsgV1RGTG9nTGV2
ZWxBbHdheXMsIFdURkxvZ0xldmVsRXJyb3IsIFdURkxvZ0xldmVsV2FybmluZywgV1RGTG9nTGV2
ZWxOb3RpY2UsIFdURkxvZ0xldmVsSW5mbywgV1RGTG9nTGV2ZWxEZWJ1ZyB9IFdURkxvZ0xldmVs
OwordHlwZWRlZiBlbnVtIHsgV1RGTG9nTGV2ZWxBbHdheXMsIFdURkxvZ0xldmVsRXJyb3IsIFdU
RkxvZ0xldmVsV2FybmluZywgV1RGTG9nTGV2ZWxJbmZvLCBXVEZMb2dMZXZlbERlYnVnIH0gV1RG
TG9nTGV2ZWw7CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBXVEZMb2dDaGFubmVsU3RhdGUgc3Rh
dGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0wOS0wNiAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXF1aXJlIExv
Z2dpbmdIZWxwZXIgb3ZlcnJpZGVzIHRvIHByb3ZpZGUgaWRlbnRpZmllcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDc3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB1cGRhdGVk
IEFQSSB0ZXN0LgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om5leHRMb2dJZGVudGlmaWVyKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6IEluaXRpYWxpemUgbV9sb2dJZGVu
ZGlmaWVyLiBMT0dUSElTIC0+IExPR0lERU5USUZJRVIuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6IERpdHRvLgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5oOgorCiAyMDE3LTA5LTA1ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRk
YWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjE0OTUu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTY1OCkKKysrIFNvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0w
OS0wNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXF1aXJlIExvZ2dpbmdIZWxwZXIgb3ZlcnJpZGVzIHRvIHByb3ZpZGUgaWRlbnRpZmllcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDc3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvTG9nZ2Vy
Lmg6CisgICAgICAgIChQQUw6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXI6OkxvZ1NpdGVJZGVu
dGlmaWVyKToKKyAgICAgICAgKFBBTDo6TG9nQXJndW1lbnQ8TG9nZ2VyOjpMb2dTaXRlSWRlbnRp
Zmllcj46OnRvU3RyaW5nKToKKyAgICAgICAgKFBBTDo6TG9nZ2VyOjpub3RpY2UgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoUEFMOjpMb2dnZXI6Ok1ldGhvZEFuZFBvaW50ZXI6Ok1ldGhvZEFu
ZFBvaW50ZXIpOiBEZWxldGVkLgorICAgICAgICAoUEFMOjpMb2dBcmd1bWVudDxMb2dnZXI6Ok1l
dGhvZEFuZFBvaW50ZXI+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogcGFsL0xvZ2dl
ckhlbHBlci5oOgorCiAyMDE3LTA5LTA0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIxNDk0IGFuZCBy
MjIxNTAwLgpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dlci5oCShyZXZpc2lvbiAyMjE2NTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niwx
NSArOTYsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJn
dW1lbnRzPgotICAgIGlubGluZSB2b2lkIG5vdGljZShXVEZMb2dDaGFubmVsJiBjaGFubmVsLCBj
b25zdCBBcmd1bWVudHMmLi4uIGFyZ3VtZW50cykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICgh
d2lsbExvZyhjaGFubmVsLCBXVEZMb2dMZXZlbE5vdGljZSkpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgbG9nKGNoYW5uZWwsIFdURkxvZ0xldmVsTm90aWNlLCBhcmd1bWVudHMuLi4p
OwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBpbmxp
bmUgdm9pZCBpbmZvKFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIGNvbnN0IEFyZ3VtZW50cyYuLi4g
YXJndW1lbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCF3aWxsTG9nKGNoYW5uZWwsIFdU
RkxvZ0xldmVsSW5mbykpCkBAIC0xNDEsMTQgKzEzMiwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBtX2VuYWJsZWQgPSBlbmFibGVkOwogICAgIH0KIAotICAgIHN0cnVjdCBNZXRob2RBbmRQb2lu
dGVyIHsKLSAgICAgICAgTWV0aG9kQW5kUG9pbnRlcihjb25zdCBjaGFyKiBtZXRob2ROYW1lLCBj
b25zdCB2b2lkKiBvYmplY3RQdHIpCisgICAgc3RydWN0IExvZ1NpdGVJZGVudGlmaWVyIHsKKyAg
ICAgICAgTG9nU2l0ZUlkZW50aWZpZXIoY29uc3QgY2hhciogbWV0aG9kTmFtZSwgY29uc3Qgdm9p
ZCogb2JqZWN0UHRyKQogICAgICAgICAgICAgOiBtZXRob2ROYW1lIHsgbWV0aG9kTmFtZSB9CiAg
ICAgICAgICAgICAsIG9iamVjdFB0ciB7IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihvYmpl
Y3RQdHIpIH0KICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgTWV0aG9kQW5kUG9pbnRl
cihjb25zdCBjaGFyKiBjbGFzc05hbWUsIGNvbnN0IGNoYXIqIG1ldGhvZE5hbWUsIGNvbnN0IHZv
aWQqIG9iamVjdFB0cikKKyAgICAgICAgTG9nU2l0ZUlkZW50aWZpZXIoY29uc3QgY2hhciogY2xh
c3NOYW1lLCBjb25zdCBjaGFyKiBtZXRob2ROYW1lLCBjb25zdCB2b2lkKiBvYmplY3RQdHIpCiAg
ICAgICAgICAgICA6IGNsYXNzTmFtZSB7IGNsYXNzTmFtZSB9CiAgICAgICAgICAgICAsIG1ldGhv
ZE5hbWUgeyBtZXRob2ROYW1lIH0KICAgICAgICAgICAgICwgb2JqZWN0UHRyIHsgcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KG9iamVjdFB0cikgfQpAQCAtMjAzLDggKzE5NCw4IEBAIHByaXZh
dGU6CiB9OwogCiB0ZW1wbGF0ZSA8Pgotc3RydWN0IExvZ0FyZ3VtZW50PExvZ2dlcjo6TWV0aG9k
QW5kUG9pbnRlcj4gewotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgTG9nZ2VyOjpN
ZXRob2RBbmRQb2ludGVyJiB2YWx1ZSkKK3N0cnVjdCBMb2dBcmd1bWVudDxMb2dnZXI6OkxvZ1Np
dGVJZGVudGlmaWVyPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBMb2dnZXI6
OkxvZ1NpdGVJZGVudGlmaWVyJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKIApAQCAtMjEzLDcgKzIwNCw3IEBAIHN0cnVjdCBMb2dBcmd1bWVudDxMb2dnZXI6
Ok1ldGhvZEFuZFBvaW4KICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOjoiKTsK
ICAgICAgICAgfQogICAgICAgICBidWlsZGVyLmFwcGVuZCh2YWx1ZS5tZXRob2ROYW1lKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIoMHgiKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIoIik7CiAgICAgICAgIGFwcGVuZFVuc2lnbmVkNjRBc0hleCh2YWx1ZS5vYmpl
Y3RQdHIsIGJ1aWxkZXIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIikgIik7CiAg
ICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL0xvZ2dlckhlbHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvTG9nZ2VySGVscGVyLmgJKHJldmlzaW9uIDIyMTY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvTG9nZ2VySGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxNCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+TG9nZ2VySGVscGVyKCkgPSBkZWZhdWx0OwogCiAgICAgdmly
dHVhbCBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIGNsYXNzTmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGxv
Z0NsYXNzTmFtZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFdURkxvZ0NoYW5uZWwmIGxvZ0No
YW5uZWwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVy
KCkgY29uc3QgPSAwOwogCiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIAotI2RlZmluZSBM
T0dUSElTIExvZ2dlcjo6TWV0aG9kQW5kUG9pbnRlcihjbGFzc05hbWUoKSwgX19mdW5jX18sIHRo
aXMpCisjZGVmaW5lIExPR0lERU5USUZJRVIgTG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcihsb2dD
bGFzc05hbWUoKSwgX19mdW5jX18sIGxvZ0lkZW50aWZpZXIoKSkKIAogI2RlZmluZSBBTFdBWVNf
TE9HKC4uLikgICAgIGxvZ2dlcigpLmxvZ0Fsd2F5cyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19f
KQogI2RlZmluZSBFUlJPUl9MT0coLi4uKSAgICAgIGxvZ2dlcigpLmVycm9yKGxvZ0NoYW5uZWwo
KSwgX19WQV9BUkdTX18pCkBAIC00OSw3ICs1MCw3IEBAIHB1YmxpYzoKIAogI2Vsc2UKIAotI2Rl
ZmluZSBMT0dUSElTICgodm9pZCkwKQorI2RlZmluZSBMT0dJREVOVElGSUVSICgodm9pZCkwKQog
CiAjZGVmaW5lIEFMV0FZU19MT0coLi4uKSAgICAgKCh2b2lkKTApCiAjZGVmaW5lIEVSUk9SX0xP
RyguLi4pICAgICAgKCh2b2lkKTApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAJKHJldmlzaW9uIDIyMTY1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMCw2ICs0MDAsMTQgQEAgc3Rh
dGljIGJvb2wgbWVkaWFTZXNzaW9uTWF5QmVDb25mdXNlZFdpdAogICAgIHJldHVybiB0cnVlOwog
fQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitzdGF0aWMgdWludDY0X3QgbmV4dExvZ0lk
ZW50aWZpZXIoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBsb2dJZGVudGlmaWVyID0gY3J5cHRv
Z3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKKyAgICByZXR1cm4gKytsb2dJZGVudGlmaWVyOwor
fQorI2VuZGlmCisKIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBh
cnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgQWN0aXZl
RE9NT2JqZWN0KCZkb2N1bWVudCkKQEAgLTQ1MiwxMSArNDYwLDEyIEBAIEhUTUxNZWRpYUVsZW1l
bnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QKICAgICAsIG1fbWVkaWFTZXNzaW9uKHN0ZDo6bWFr
ZV91bmlxdWU8TWVkaWFFbGVtZW50U2Vzc2lvbj4oKnRoaXMpKQogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAogICAgICwgbV9sb2dnZXIoJmRvY3VtZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJ
ZGVudGlmaWVyKG5leHRMb2dJZGVudGlmaWVyKCkpCiAjZW5kaWYKIHsKICAgICBhbGxNZWRpYUVs
ZW1lbnRzKCkuYWRkKHRoaXMpOwogCi0gICAgQUxXQVlTX0xPRyhMT0dUSElTKTsKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2Fs
bGJhY2tzKCk7CiAKQEAgLTUzMyw3ICs1NDIsNyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVk
aWFFbGVtZW50KGNvbnN0CiAKIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkK
IHsKLSAgICBBTFdBWVNfTE9HKExPR1RISVMpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
Uik7CiAKICAgICBiZWdpbklnbm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKTsKICAg
ICBhbGxNZWRpYUVsZW1lbnRzKCkucmVtb3ZlKHRoaXMpOwpAQCAtODY1LDcgKzg3NCw3IEBAIGJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGUKIAogTm9kZTo6SW5zZXJ0aW9u
Tm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFp
bmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7Ci0gICAgTk9USUNFX0xPRyhMT0dUSElTKTsKKyAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZElu
dG8oaW5zZXJ0aW9uUG9pbnQpOwogICAgIGlmIChpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3RlZCgp
KSB7CkBAIC05MjQsNyArOTMzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUFmdGVy
RGV0YWNoZQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5v
ZGUmIGluc2VydGlvblBvaW50KQogewotICAgIE5PVElDRV9MT0coTE9HVEhJUyk7CisgICAgSU5G
T19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBtX2luQWN0aXZlRG9jdW1lbnQgPSBmYWxzZTsK
ICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuaXNDb25uZWN0ZWQoKSkgewpAQCAtOTc1LDcgKzk4NCw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUoU3QKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2NoZWR1bGVEZWxheWVkQWN0aW9uKERlbGF5ZWRBY3Rpb25UeXBlIGFjdGlv
blR5cGUpCiB7CiAgICAgaWYgKGFjdGlvblR5cGUgXiBtX3BlbmRpbmdBY3Rpb25GbGFncykKLSAg
ICAgICAgQUxXQVlTX0xPRyhMT0dUSElTLCAic2V0dGluZyAiLCBhY3Rpb25OYW1lKGFjdGlvblR5
cGUpLCAiIGZsYWciKTsKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAic2V0dGlu
ZyAiLCBhY3Rpb25OYW1lKGFjdGlvblR5cGUpLCAiIGZsYWciKTsKIAogI2lmIEVOQUJMRShWSURF
T19UUkFDSykKICAgICBpZiAoYWN0aW9uVHlwZSAmIENvbmZpZ3VyZVRleHRUcmFja3MpCkBAIC0x
MDc0LDcgKzEwODMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBlbmRpbmdBY3Rpb25UaW1l
CiAgICAgaWYgKCFwZW5kaW5nQWN0aW9ucykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlT
X0xPRyhMT0dUSElTLCAic2V0dGluZyAiLCBhY3Rpb25OYW1lKHN0YXRpY19jYXN0PERlbGF5ZWRB
Y3Rpb25UeXBlPihwZW5kaW5nQWN0aW9ucykpLCAiIGZsYWciKTsKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsICJzZXR0aW5nICIsIGFjdGlvbk5hbWUoc3RhdGljX2Nhc3Q8RGVsYXllZEFj
dGlvblR5cGU+KHBlbmRpbmdBY3Rpb25zKSksICIgZmxhZyIpOwogCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogICAgIGlmIChwZW5kaW5nQWN0aW9ucyAmIENvbmZpZ3VyZVRleHRUcmFja3MpCkBA
IC0xMDgzLDcgKzEwOTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBlbmRpbmdBY3Rpb25U
aW1lCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIGlmIChwZW5k
aW5nQWN0aW9ucyAmIENoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRhYmxpdHkgJiYgbV9pc1BsYXlp
bmdUb1dpcmVsZXNzVGFyZ2V0ICYmICFtX3BsYXllci0+Y2FuUGxheVRvV2lyZWxlc3NQbGF5YmFj
a1RhcmdldCgpKSB7Ci0gICAgICAgIE5PVElDRV9MT0coTE9HVEhJUywgImNhbGxpbmcgc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoZmFsc2UpIik7CisgICAgICAgIElORk9fTE9HKExPR0lE
RU5USUZJRVIsICJjYWxsaW5nIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKSIp
OwogICAgICAgICBtX2ZhaWxlZFRvUGxheVRvV2lyZWxlc3NUYXJnZXQgPSB0cnVlOwogICAgICAg
ICBtX3BsYXllci0+c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoZmFsc2UpOwogICAgIH0K
QEAgLTExNjAsNyArMTE2OSw3IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlw
ZShjb24KICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIERFQlVHX0xPRyhMT0dUSElT
LCAiWyIsIG1pbWVUeXBlLCAiXSAtPiAiLCBjYW5QbGF5KTsKKyAgICBERUJVR19MT0coTE9HSURF
TlRJRklFUiwgIlsiLCBtaW1lVHlwZSwgIl0gLT4gIiwgY2FuUGxheSk7CiAKICAgICByZXR1cm4g
Y2FuUGxheTsKIH0KQEAgLTExNzYsNyArMTE4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bG9hZCgpCiB7CiAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OyAvLyBwcmVwYXJlRm9yTG9hZCBtYXkgcmVzdWx0IGluIGEgJ2JlZm9yZWxvYWQnIGV2ZW50LCB3
aGljaCBjYW4gbWFrZSBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KIAotICAgIE5PVElDRV9MT0co
TE9HVEhJUyk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBpZiAoIW1fbWVk
aWFTZXNzaW9uLT5kYXRhTG9hZGluZ1Blcm1pdHRlZCgqdGhpcykpCiAgICAgICAgIHJldHVybjsK
QEAgLTExOTUsNyArMTIwNCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxv
YWQoKQogICAgIC8vIFRoZSBNZWRpYSBFbGVtZW50IExvYWQgQWxnb3JpdGhtCiAgICAgLy8gMTIg
RmVicnVhcnkgMjAxNwogCi0gICAgTk9USUNFX0xPRyhMT0dUSElTKTsKKyAgICBJTkZPX0xPRyhM
T0dJREVOVElGSUVSKTsKIAogICAgIC8vIDEgLSBBYm9ydCBhbnkgYWxyZWFkeS1ydW5uaW5nIGlu
c3RhbmNlIG9mIHRoZSByZXNvdXJjZSBzZWxlY3Rpb24gYWxnb3JpdGhtIGZvciB0aGlzIGVsZW1l
bnQuCiAgICAgLy8gUGVyZm9ybSB0aGUgY2xlYW51cCByZXF1aXJlZCBmb3IgdGhlIHJlc291cmNl
IGxvYWQgYWxnb3JpdGhtIHRvIHJ1bi4KQEAgLTEzMTQsNyArMTMyMyw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KCFtX21lZGlhU2Vzc2lvbi0+cGFnZUFsbG93c0RhdGFMb2FkaW5nKCp0aGlzKSkgewotICAgICAg
ICBBTFdBWVNfTE9HKExPR1RISVMsICJub3QgYWxsb3dlZCB0byBsb2FkIGluIGJhY2tncm91bmQs
IHdhaXRpbmciKTsKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAibm90IGFsbG93
ZWQgdG8gbG9hZCBpbiBiYWNrZ3JvdW5kLCB3YWl0aW5nIik7CiAgICAgICAgIHNldFNob3VsZERl
bGF5TG9hZEV2ZW50KGZhbHNlKTsKICAgICAgICAgaWYgKG1faXNXYWl0aW5nVW50aWxNZWRpYUNh
blN0YXJ0KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTM1OSw3ICsxMzY4LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cgogICAgICAgICAgICAgbW9kZSA9IEF0
dHJpYnV0ZTsKICAgICAgICAgICAgIEFTU0VSVChtX3BsYXllcik7CiAgICAgICAgICAgICBpZiAo
IW1fcGxheWVyKSB7Ci0gICAgICAgICAgICAgICAgRVJST1JfTE9HKExPR1RISVMsICIgLSBoYXMg
c3JjQXR0ciBidXQgbV9wbGF5ZXIgaXMgbm90IGNyZWF0ZWQiKTsKKyAgICAgICAgICAgICAgICBF
UlJPUl9MT0coTE9HSURFTlRJRklFUiwgIiAtIGhhcyBzcmNBdHRyIGJ1dCBtX3BsYXllciBpcyBu
b3QgY3JlYXRlZCIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIGlmIChhdXRvIGZpcnN0U291cmNlID0gY2hpbGRyZW5PZlR5cGU8SFRNTFNv
dXJjZUVsZW1lbnQ+KCp0aGlzKS5maXJzdCgpKSB7CkBAIC0xMzc2LDcgKzEzODUsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyCiAgICAgICAgICAgICBzZXRTaG91
bGREZWxheUxvYWRFdmVudChmYWxzZSk7CiAgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE5F
VFdPUktfRU1QVFk7CiAKLSAgICAgICAgICAgIEFMV0FZU19MT0coTE9HVEhJUywgIm5vdGhpbmcg
dG8gbG9hZCIpOworICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAibm90aGlu
ZyB0byBsb2FkIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTQwNiw3
ICsxNDE1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cgogCiAg
ICAgICAgICAgICBDb250ZW50VHlwZSBjb250ZW50VHlwZTsKICAgICAgICAgICAgIGxvYWRSZXNv
dXJjZShVUkwoKSwgY29udGVudFR5cGUsIFN0cmluZygpKTsKLSAgICAgICAgICAgIEFMV0FZU19M
T0coTE9HVEhJUywgInVzaW5nICdzcmNPYmplY3QnIHByb3BlcnR5Iik7CisgICAgICAgICAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ1c2luZyAnc3JjT2JqZWN0JyBwcm9wZXJ0eSIpOwog
CiAgICAgICAgICAgICAvLyAgICBJZiB0aGF0IGFsZ29yaXRobSByZXR1cm5zIHdpdGhvdXQgYWJv
cnRpbmcgdGhpcyBvbmUsIHRoZW4gdGhlIGxvYWQgZmFpbGVkLgogICAgICAgICAgICAgLy8gNC4g
RmFpbGVkIHdpdGggbWVkaWEgcHJvdmlkZXI6IFJlYWNoaW5nIHRoaXMgc3RlcCBpbmRpY2F0ZXMg
dGhhdCB0aGUgbWVkaWEgcmVzb3VyY2UKQEAgLTE0MjksNyArMTQzOCw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXIKICAgICAgICAgICAgIFVSTCBhYnNvbHV0ZVVS
TCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwogICAgICAgICAgICAgaWYgKGFi
c29sdXRlVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxl
ZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOwotICAgICAgICAgICAgICAgIEFMV0FZU19MT0co
TE9HVEhJUywgImVtcHR5ICdzcmMnIik7CisgICAgICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCAiZW1wdHkgJ3NyYyciKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAKQEAgLTE0NTAsNyArMTQ1OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c2VsZWN0TWVkaWFSZXNvdXIKICAgICAgICAgICAgIC8vIHdpbGwgaGF2ZSB0byBwaWNrIGEgbWVk
aWEgZW5naW5lIGJhc2VkIG9uIHRoZSBmaWxlIGV4dGVuc2lvbi4KICAgICAgICAgICAgIENvbnRl
bnRUeXBlIGNvbnRlbnRUeXBlOwogICAgICAgICAgICAgbG9hZFJlc291cmNlKGFic29sdXRlVVJM
LCBjb250ZW50VHlwZSwgU3RyaW5nKCkpOwotICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dUSElT
LCAidXNpbmcgJ3NyYycgYXR0cmlidXRlIHVybCIpOworICAgICAgICAgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCAidXNpbmcgJ3NyYycgYXR0cmlidXRlIHVybCIpOwogCiAgICAgICAgICAg
ICAvLyA2LiBGYWlsZWQgd2l0aCBhdHRyaWJ1dGU6IFJlYWNoaW5nIHRoaXMgc3RlcCBpbmRpY2F0
ZXMgdGhhdCB0aGUgbWVkaWEgcmVzb3VyY2UgZmFpbGVkIHRvIGxvYWQKICAgICAgICAgICAgIC8v
ICAgIG9yIHRoYXQgdGhlIGdpdmVuIFVSTCBjb3VsZCBub3QgYmUgcmVzb2x2ZWQuIFF1ZXVlIGEg
dGFzayB0byBydW4gdGhlIGRlZGljYXRlZCBtZWRpYSBzb3VyY2UgZmFpbHVyZSBzdGVwcy4KQEAg
LTE0ODYsNyArMTQ5NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNv
bnMKIHsKICAgICBBU1NFUlQoaW5pdGlhbFVSTC5pc0VtcHR5KCkgfHwgaXNTYWZlVG9Mb2FkVVJM
KGluaXRpYWxVUkwsIENvbXBsYWluKSk7CiAKLSAgICBOT1RJQ0VfTE9HKExPR1RISVMsIGluaXRp
YWxVUkwsIGNvbnRlbnRUeXBlLnJhdygpLCBrZXlTeXN0ZW0pOworICAgIElORk9fTE9HKExPR0lE
RU5USUZJRVIsIGluaXRpYWxVUkwsIGNvbnRlbnRUeXBlLnJhdygpLCBrZXlTeXN0ZW0pOwogCiAg
ICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpIHsK
QEAgLTE1NDAsMTAgKzE1NDksMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3Vy
Y2UoY29ucwogCiAgICAgaWYgKHJlc291cmNlKSB7CiAgICAgICAgIHVybCA9IEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKHJlc291cmNlLT5wYXRoKCkpOwotICAgICAgICBOT1RJ
Q0VfTE9HKExPR1RISVMsICJ3aWxsIGxvYWQgIiwgdXJsLCAiIGZyb20gYXBwIGNhY2hlIik7Cisg
ICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJ3aWxsIGxvYWQgIiwgdXJsLCAiIGZyb20g
YXBwIGNhY2hlIik7CiAgICAgfQogCi0gICAgTk9USUNFX0xPRyhMT0dUSElTLCAibV9jdXJyZW50
U3JjIGlzICIsIG1fY3VycmVudFNyYyk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIm1f
Y3VycmVudFNyYyBpcyAiLCBtX2N1cnJlbnRTcmMpOwogCiAgICAgc3RhcnRQcm9ncmVzc0V2ZW50
VGltZXIoKTsKIApAQCAtMTY1MSw3ICsxNjYwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1
cGRhdGVBY3RpdmVUZXh0VAogICAgIGlmIChpZ25vcmVUcmFja0Rpc3BsYXlVcGRhdGVSZXF1ZXN0
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBERUJVR19MT0coTE9HVEhJUyk7CisgICAgREVC
VUdfTE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgLy8gMSAtIExldCBjdXJyZW50IGN1ZXMgYmUg
YSBsaXN0IG9mIGN1ZXMsIGluaXRpYWxpemVkIHRvIGNvbnRhaW4gYWxsIHRoZQogICAgIC8vIGN1
ZXMgb2YgYWxsIHRoZSBoaWRkZW4sIHNob3dpbmcsIG9yIHNob3dpbmcgYnkgZGVmYXVsdCB0ZXh0
IHRyYWNrcyBvZiB0aGUKQEAgLTIwNTEsNyArMjA2MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c0FsbG93ZWRUb0xvYWRNZWRpYVUKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2Fk
VVJMKGNvbnN0IFVSTCYgdXJsLCBJbnZhbGlkVVJMQWN0aW9uIGFjdGlvbklmSW52YWxpZCkKIHsK
ICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgRVJST1JfTE9HKExPR1RISVMsIHVy
bCwgIiBpcyBpbnZhbGlkIik7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCB1cmws
ICIgaXMgaW52YWxpZCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yMDU5
LDEyICsyMDY4LDEyIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJMKGMK
ICAgICBpZiAoIWZyYW1lIHx8ICFkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuY2FuRGlzcGxh
eSh1cmwpKSB7CiAgICAgICAgIGlmIChhY3Rpb25JZkludmFsaWQgPT0gQ29tcGxhaW4pCiAgICAg
ICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGZyYW1lLCB1cmwuc3Ry
aW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkpOwotICAgICAgICAgICAgRVJST1JfTE9HKExP
R1RISVMsIHVybCAsICIgd2FzIHJlamVjdGVkIGJ5IFNlY3VyaXR5T3JpZ2luIik7CisgICAgICAg
ICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgdXJsICwgIiB3YXMgcmVqZWN0ZWQgYnkgU2Vj
dXJpdHlPcmlnaW4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICgh
aXNBbGxvd2VkVG9Mb2FkTWVkaWFVUkwoKnRoaXMsIHVybCwgaXNJblVzZXJBZ2VudFNoYWRvd1Ry
ZWUoKSkpIHsKLSAgICAgICAgRVJST1JfTE9HKExPR1RISVMsIHVybCwgIiB3YXMgcmVqZWN0ZWQg
YnkgQ29udGVudCBTZWN1cml0eSBQb2xpY3kiKTsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5U
SUZJRVIsIHVybCwgIiB3YXMgcmVqZWN0ZWQgYnkgQ29udGVudCBTZWN1cml0eSBQb2xpY3kiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjA4Myw3ICsyMDkyLDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzdGFydFByb2dyZXNzRXZlbgogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OndhaXRGb3JTb3VyY2VDaGFuZ2UoKQogewotICAgIE5PVElDRV9MT0coTE9HVEhJUyk7
CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBzdG9wUGVyaW9kaWNUaW1lcnMo
KTsKICAgICBtX2xvYWRTdGF0ZSA9IFdhaXRpbmdGb3JTb3VyY2U7CkBAIC0yMTAwLDcgKzIxMDks
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndhaXRGb3JTb3VyY2VDaGFuCiAKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6bm9uZVN1cHBvcnRlZCgpCiB7Ci0gICAgTk9USUNFX0xPRyhMT0dUSElT
KTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIHN0b3BQZXJpb2RpY1RpbWVy
cygpOwogICAgIG1fbG9hZFN0YXRlID0gV2FpdGluZ0ZvclNvdXJjZTsKQEAgLTIxODAsNyArMjE4
OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFMb2FkaW5nRmFpbGUKIAogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpjYW5jZWxQZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKCkKIHsKLSAg
ICBOT1RJQ0VfTE9HKExPR1RISVMpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogICAg
IG1fYXN5bmNFdmVudFF1ZXVlLmNhbmNlbEFsbEV2ZW50cygpOwogCiAgICAgZm9yIChhdXRvJiBz
b3VyY2UgOiBjaGlsZHJlbk9mVHlwZTxIVE1MU291cmNlRWxlbWVudD4oKnRoaXMpKQpAQCAtMjI0
NSw3ICsyMjU0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUxvYWRpbmdGYWlsZQog
ICAgICAgICBpZiAobV9jdXJyZW50U291cmNlTm9kZSkKICAgICAgICAgICAgIG1fY3VycmVudFNv
dXJjZU5vZGUtPnNjaGVkdWxlRXJyb3JFdmVudCgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBOT1RJQ0VfTE9HKExPR1RISVMsICJlcnJvciBldmVudCBub3Qgc2VudCwgPHNvdXJjZT4gd2Fz
IHJlbW92ZWQiKTsKKyAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJlcnJvciBl
dmVudCBub3Qgc2VudCwgPHNvdXJjZT4gd2FzIHJlbW92ZWQiKTsKIAogICAgICAgICAvLyA5Lk90
aGVyd2lzZS4xMCAtIEFzeW5jaHJvbm91c2x5IGF3YWl0IGEgc3RhYmxlIHN0YXRlLiBUaGUgc3lu
Y2hyb25vdXMgc2VjdGlvbiBjb25zaXN0cyBvZiBhbGwgdGhlIHJlbWFpbmluZyBzdGVwcyBvZiB0
aGlzIGFsZ29yaXRobSB1bnRpbCB0aGUgYWxnb3JpdGhtIHNheXMgdGhlIHN5bmNocm9ub3VzIHNl
Y3Rpb24gaGFzIGVuZGVkLgogCkBAIC0yMjUzLDEwICsyMjYyLDEwIEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFMb2FkaW5nRmFpbGUKICAgICAgICAgZm9yZ2V0UmVzb3VyY2VTcGVjaWZp
Y1RyYWNrcygpOwogCiAgICAgICAgIGlmIChoYXZlUG90ZW50aWFsU291cmNlQ2hpbGQoKSkgewot
ICAgICAgICAgICAgTk9USUNFX0xPRyhMT0dUSElTLCAic2NoZWR1bGluZyBuZXh0IDxzb3VyY2U+
Iik7CisgICAgICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAic2NoZWR1bGluZyBuZXh0
IDxzb3VyY2U+Iik7CiAgICAgICAgICAgICBzY2hlZHVsZU5leHRTb3VyY2VDaGlsZCgpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgTk9USUNFX0xPRyhMT0dUSElTLCAibm8gbW9yZSA8
c291cmNlPiBlbGVtZW50cywgd2FpdGluZyIpOworICAgICAgICAgICAgSU5GT19MT0coTE9HSURF
TlRJRklFUiwgIm5vIG1vcmUgPHNvdXJjZT4gZWxlbWVudHMsIHdhaXRpbmciKTsKICAgICAgICAg
ICAgIHdhaXRGb3JTb3VyY2VDaGFuZ2UoKTsKICAgICAgICAgfQogCkBAIC0yMjc0LDcgKzIyODMs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlCiAgICAgICAgIG1l
ZGlhQ29udHJvbHMoKS0+cmVwb3J0ZWRFcnJvcigpOwogICAgIH0KIAotICAgIEVSUk9SX0xPRyhM
T0dUSElTLCAiZXJyb3IgPSAiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yKSk7CisgICAgRVJST1Jf
TE9HKExPR0lERU5USUZJRVIsICJlcnJvciA9ICIsIHN0YXRpY19jYXN0PGludD4oZXJyb3IpKTsK
IAogICAgIGxvZ01lZGlhTG9hZFJlcXVlc3QoZG9jdW1lbnQoKS5wYWdlKCksIFN0cmluZygpLCBz
dHJpbmdGb3JOZXR3b3JrU3RhdGUoZXJyb3IpLCBmYWxzZSk7CiAKQEAgLTIyODQsNyArMjI5Myw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFMb2FkaW5nRmFpbGUKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgc3Rh
dGUpCiB7CiAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oc3RhdGUpICE9IHN0YXRpY19jYXN0PGlu
dD4obV9uZXR3b3JrU3RhdGUpKQotICAgICAgICBBTFdBWVNfTE9HKExPR1RISVMsICJuZXcgc3Rh
dGUgPSAiLCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRlKSwgIiwgY3VycmVudCBzdGF0ZSA9ICIsIHN0
YXRpY19jYXN0PGludD4obV9uZXR3b3JrU3RhdGUpKTsKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCAibmV3IHN0YXRlID0gIiwgc3RhdGljX2Nhc3Q8aW50PihzdGF0ZSksICIsIGN1
cnJlbnQgc3RhdGUgPSAiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fbmV0d29ya1N0YXRlKSk7CiAKICAg
ICBpZiAoc3RhdGUgPT0gTWVkaWFQbGF5ZXI6OkVtcHR5KSB7CiAgICAgICAgIC8vIEp1c3QgdXBk
YXRlIHRoZSBjYWNoZWQgc3RhdGUgYW5kIGxlYXZlLCB3ZSBjYW4ndCBkbyBhbnl0aGluZy4KQEAg
LTIzNTUsNyArMjM2NCw3IEBAIFN1Y2Nlc3NPcjxNZWRpYVBsYXliYWNrRGVuaWFsUmVhc29uPiBI
VE0KICAgICAgICAgJiYgbV9yZWFkeVN0YXRlID09IEhBVkVfRU5PVUdIX0RBVEEpCiAgICAgICAg
IHJldHVybiBtZWRpYVNlc3Npb24oKS5wbGF5YmFja1Blcm1pdHRlZCgqdGhpcyk7CiAKLSAgICBB
TFdBWVNfTE9HKExPR1RISVMsICJwYWdlIGNvbnNlbnQgcmVxdWlyZWQiKTsKKyAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsICJwYWdlIGNvbnNlbnQgcmVxdWlyZWQiKTsKICAgICByZXR1cm4g
TWVkaWFQbGF5YmFja0RlbmlhbFJlYXNvbjo6UGFnZUNvbnNlbnRSZXF1aXJlZDsKIH0KIApAQCAt
MjM5MCw3ICsyMzk5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKE1l
ZAogICAgIGJvb2wgdHJhY2tzQXJlUmVhZHkgPSB0cnVlOwogI2VuZGlmCiAKLSAgICBBTFdBWVNf
TE9HKExPR1RISVMsICJuZXcgc3RhdGUgPSAiLCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRlKSwgIiwg
Y3VycmVudCBzdGF0ZSA9ICIsIHN0YXRpY19jYXN0PGludD4obV9yZWFkeVN0YXRlKSk7CisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAibmV3IHN0YXRlID0gIiwgc3RhdGljX2Nhc3Q8aW50
PihzdGF0ZSksICIsIGN1cnJlbnQgc3RhdGUgPSAiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVhZHlT
dGF0ZSkpOwogCiAgICAgaWYgKHRyYWNrc0FyZVJlYWR5KQogICAgICAgICBtX3JlYWR5U3RhdGUg
PSBuZXdTdGF0ZTsKQEAgLTI3ODEsNyArMjc5MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cmV0dXJuVG9SZWFsdGltZSgKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRQbGF5ZWRSYW5n
ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCkKIHsKLSAgICBE
RUJVR19MT0coTE9HVEhJUywgIlsiLCBzdGFydCwgIiwgIiwgZW5kLCAiXSIpOworICAgIERFQlVH
X0xPRyhMT0dJREVOVElGSUVSLCAiWyIsIHN0YXJ0LCAiLCAiLCBlbmQsICJdIik7CiAgICAgaWYg
KCFtX3BsYXllZFRpbWVSYW5nZXMpCiAgICAgICAgIG1fcGxheWVkVGltZVJhbmdlcyA9IFRpbWVS
YW5nZXM6OmNyZWF0ZSgpOwogICAgIG1fcGxheWVkVGltZVJhbmdlcy0+cmFuZ2VzKCkuYWRkKHN0
YXJ0LCBlbmQpOwpAQCAtMjc5NCw3ICsyODAzLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpz
dXBwb3J0c1NjYW5uaW5nKAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVUb1BsYXko
KQogewotICAgIE5PVElDRV9MT0coTE9HVEhJUyk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklF
Uik7CiAgICAgaWYgKG1faGF2ZVByZXBhcmVkVG9QbGF5KQogICAgICAgICByZXR1cm47CiAgICAg
bV9oYXZlUHJlcGFyZWRUb1BsYXkgPSB0cnVlOwpAQCAtMjgwOSw3ICsyODE4LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpmYXN0U2Vlayhkb3VibGUgdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmZhc3RTZWVrKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKIHsKLSAgICBOT1RJQ0VfTE9HKExP
R1RISVMsIHRpbWUpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsIHRpbWUpOwogICAgIC8v
IDQuNy4xMC45IFNlZWtpbmcKICAgICAvLyA5LiBJZiB0aGUgYXBwcm94aW1hdGUtZm9yLXNwZWVk
IGZsYWcgaXMgc2V0LCBhZGp1c3QgdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbiB0byBhIHZhbHVl
IHRoYXQgd2lsbAogICAgIC8vIGFsbG93IGZvciBwbGF5YmFjayB0byByZXN1bWUgcHJvbXB0bHku
IElmIG5ldyBwbGF5YmFjayBwb3NpdGlvbiBiZWZvcmUgdGhpcyBzdGVwIGlzIGJlZm9yZSBjdXJy
ZW50CkBAIC0yODI1LDEzICsyODM0LDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZmFzdFNl
ZWsoY29uc3QgTWUKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrKGNvbnN0IE1lZGlhVGlt
ZSYgdGltZSkKIHsKLSAgICBOT1RJQ0VfTE9HKExPR1RISVMsIHRpbWUpOworICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIsIHRpbWUpOwogICAgIHNlZWtXaXRoVG9sZXJhbmNlKHRpbWUsIE1lZGlh
VGltZTo6emVyb1RpbWUoKSwgTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCB0cnVlKTsKIH0KIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrSW50ZXJuYWwoY29uc3QgTWVkaWFUaW1lJiB0aW1lKQog
ewotICAgIE5PVElDRV9MT0coTE9HVEhJUywgdGltZSk7CisgICAgSU5GT19MT0coTE9HSURFTlRJ
RklFUiwgdGltZSk7CiAgICAgc2Vla1dpdGhUb2xlcmFuY2UodGltZSwgTWVkaWFUaW1lOjp6ZXJv
VGltZSgpLCBNZWRpYVRpbWU6Onplcm9UaW1lKCksIGZhbHNlKTsKIH0KIApAQCAtMjg1OSw3ICsy
ODY4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrV2l0aFRvbGVyYW5jZQogICAgIC8v
IGFscmVhZHkgcnVubmluZy4gQWJvcnQgdGhhdCBvdGhlciBpbnN0YW5jZSBvZiB0aGUgYWxnb3Jp
dGhtIHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIHN0ZXAgdGhhdAogICAgIC8vIGl0IGlzIHJ1bm5p
bmcgdG8gY29tcGxldGUuCiAgICAgaWYgKG1fc2Vla1Rhc2tRdWV1ZS5oYXNQZW5kaW5nVGFza3Mo
KSkgewotICAgICAgICBOT1RJQ0VfTE9HKExPR1RISVMsICJjYW5jZWxsaW5nIHBlbmRpbmcgc2Vl
a3MiKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNhbmNlbGxpbmcgcGVuZGlu
ZyBzZWVrcyIpOwogICAgICAgICBtX3NlZWtUYXNrUXVldWUuY2FuY2VsQWxsVGFza3MoKTsKICAg
ICAgICAgaWYgKG1fcGVuZGluZ1NlZWspIHsKICAgICAgICAgICAgIG5vdyA9IG1fcGVuZGluZ1Nl
ZWstPm5vdzsKQEAgLTI4ODEsNyArMjg5MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vl
a1dpdGhUb2xlcmFuY2UKICAgICAvLyB0aGUgc2NyaXB0LiBUaGUgcmVtYWluZGVyIG9mIHRoZXNl
IHN0ZXBzIG11c3QgYmUgcnVuIGFzeW5jaHJvbm91c2x5LgogICAgIG1fcGVuZGluZ1NlZWsgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdTZWVrPihub3csIHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNl
LCBwb3NpdGl2ZVRvbGVyYW5jZSk7CiAgICAgaWYgKGZyb21ET00pIHsKLSAgICAgICAgTk9USUNF
X0xPRyhMT0dUSElTLCAiZW5xdWV1aW5nIHNlZWsgZnJvbSAiLCBub3csICIgdG8gIiwgdGltZSk7
CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJlbnF1ZXVpbmcgc2VlayBmcm9tICIs
IG5vdywgIiB0byAiLCB0aW1lKTsKICAgICAgICAgbV9zZWVrVGFza1F1ZXVlLmVucXVldWVUYXNr
KHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVudDo6c2Vla1Rhc2ssIHRoaXMpKTsKICAgICB9IGVs
c2UKICAgICAgICAgc2Vla1Rhc2soKTsKQEAgLTI4OTIsNyArMjkwMSw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2Vla1dpdGhUb2xlcmFuY2UKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZWVrVGFzaygpCiB7Ci0gICAgTk9USUNFX0xPRyhMT0dUSElTKTsKKyAgICBJTkZPX0xPRyhMT0dJ
REVOVElGSUVSKTsKIAogICAgIGlmICghbV9wbGF5ZXIpIHsKICAgICAgICAgY2xlYXJTZWVraW5n
KCk7CkBAIC0yOTI0LDcgKzI5MzMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUYXNr
KCkKICAgICBpZiAod2lsbExvZyhXVEZMb2dMZXZlbERlYnVnKSkgewogICAgICAgICBNZWRpYVRp
bWUgbWVkaWFUaW1lID0gbV9wbGF5ZXItPm1lZGlhVGltZUZvclRpbWVWYWx1ZSh0aW1lKTsKICAg
ICAgICAgaWYgKHRpbWUgIT0gbWVkaWFUaW1lKQotICAgICAgICAgICAgREVCVUdfTE9HKExPR1RI
SVMsIHRpbWUsICIgbWVkaWEgdGltZWxpbmUgZXF1aXZhbGVudCBpcyAiLCBtZWRpYVRpbWUpOwor
ICAgICAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIHRpbWUsICIgbWVkaWEgdGltZWxp
bmUgZXF1aXZhbGVudCBpcyAiLCBtZWRpYVRpbWUpOwogICAgIH0KIAogICAgIHRpbWUgPSBtX3Bs
YXllci0+bWVkaWFUaW1lRm9yVGltZVZhbHVlKHRpbWUpOwpAQCAtMjk1MSw3ICsyOTYwLDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrVGFzaygpCiAjZW5kaWYKIAogICAgIGlmIChub1Nl
ZWtSZXF1aXJlZCkgewotICAgICAgICBOT1RJQ0VfTE9HKExPR1RISVMsICJzZWVrIHRvICIsIHRp
bWUsICIgaWdub3JlZCIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAic2VlayB0
byAiLCB0aW1lLCAiIGlnbm9yZWQiKTsKICAgICAgICAgaWYgKHRpbWUgPT0gbm93KSB7CiAgICAg
ICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5zZWVraW5nRXZlbnQpOwogICAgICAg
ICAgICAgc2NoZWR1bGVUaW1ldXBkYXRlRXZlbnQoZmFsc2UpOwpAQCAtMjk5Myw3ICszMDAyLDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpmaW5pc2hTZWVrKCkKICAgICAvLyAxNCAtIFNldCB0
aGUgc2Vla2luZyBJREwgYXR0cmlidXRlIHRvIGZhbHNlLgogICAgIGNsZWFyU2Vla2luZygpOwog
Ci0gICAgTk9USUNFX0xPRyhMT0dUSElTLCAiY3VycmVudCB0aW1lID0gIiwgY3VycmVudE1lZGlh
VGltZSgpKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiY3VycmVudCB0aW1lID0gIiwg
Y3VycmVudE1lZGlhVGltZSgpKTsKIAogICAgIC8vIDE1IC0gUnVuIHRoZSB0aW1lIG1hY2hlcyBv
biBzdGVwcy4KICAgICAvLyBIYW5kbGVkIGJ5IG1lZGlhUGxheWVyVGltZUNoYW5nZWQoKS4KQEAg
LTMwNzYsNyArMzA4NSw3IEBAIE1lZGlhVGltZSBIVE1MTWVkaWFFbGVtZW50OjpjdXJyZW50TWVk
aWEKICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsKIAogICAgIGlmIChtX3Nl
ZWtpbmcpIHsKLSAgICAgICAgTk9USUNFX0xPRyhMT0dUSElTLCAic2Vla2luZywgcmV0dXJuaW5n
IiwgbV9sYXN0U2Vla1RpbWUpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAic2Vl
a2luZywgcmV0dXJuaW5nIiwgbV9sYXN0U2Vla1RpbWUpOwogICAgICAgICByZXR1cm4gbV9sYXN0
U2Vla1RpbWU7CiAgICAgfQogCkBAIC0zMDg0LDcgKzMwOTMsNyBAQCBNZWRpYVRpbWUgSFRNTE1l
ZGlhRWxlbWVudDo6Y3VycmVudE1lZGlhCiAjaWYgTE9HX0NBQ0hFRF9USU1FX1dBUk5JTkdTCiAg
ICAgICAgIE1lZGlhVGltZSBkZWx0YSA9IG1fY2FjaGVkVGltZSAtIG1fcGxheWVyLT5jdXJyZW50
VGltZSgpOwogICAgICAgICBpZiAoZGVsdGEgPiBtaW5DYWNoZWREZWx0YUZvcldhcm5pbmcpCi0g
ICAgICAgICAgICBXQVJOSU5HX0xPRyhMT0dUSElTLCAiY2FjaGVkIHRpbWUgaXMgIiwgZGVsdGEs
ICIgc2Vjb25kcyBvZmYgb2YgbWVkaWEgdGltZSB3aGVuIHBhdXNlZCIpOworICAgICAgICAgICAg
V0FSTklOR19MT0coTE9HSURFTlRJRklFUiwgImNhY2hlZCB0aW1lIGlzICIsIGRlbHRhLCAiIHNl
Y29uZHMgb2ZmIG9mIG1lZGlhIHRpbWUgd2hlbiBwYXVzZWQiKTsKICNlbmRpZgogICAgICAgICBy
ZXR1cm4gbV9jYWNoZWRUaW1lOwogICAgIH0KQEAgLTMxMDMsNyArMzExMiw3IEBAIE1lZGlhVGlt
ZSBIVE1MTWVkaWFFbGVtZW50OjpjdXJyZW50TWVkaWEKICNpZiBMT0dfQ0FDSEVEX1RJTUVfV0FS
TklOR1MKICAgICAgICAgICAgIE1lZGlhVGltZSBkZWx0YSA9IGFkanVzdGVkQ2FjaGVUaW1lIC0g
bV9wbGF5ZXItPmN1cnJlbnRUaW1lKCk7CiAgICAgICAgICAgICBpZiAoZGVsdGEgPiBtaW5DYWNo
ZWREZWx0YUZvcldhcm5pbmcpCi0gICAgICAgICAgICAgICAgV0FSTklOR19MT0coTE9HVEhJUywg
ImNhY2hlZCB0aW1lIGlzICIsIGRlbHRhLCAiIHNlY29uZHMgb2ZmIG9mIG1lZGlhIHRpbWUgd2hl
biBwbGF5aW5nIik7CisgICAgICAgICAgICAgICAgV0FSTklOR19MT0coTE9HSURFTlRJRklFUiwg
ImNhY2hlZCB0aW1lIGlzICIsIGRlbHRhLCAiIHNlY29uZHMgb2ZmIG9mIG1lZGlhIHRpbWUgd2hl
biBwbGF5aW5nIik7CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBhZGp1c3RlZENhY2hlVGlt
ZTsKICAgICAgICAgfQpAQCAtMzExMyw3ICszMTIyLDcgQEAgTWVkaWFUaW1lIEhUTUxNZWRpYUVs
ZW1lbnQ6OmN1cnJlbnRNZWRpYQogICAgIGlmIChtYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFU
aW1lICYmIG5vdyA+IG1fbWluaW11bUNsb2NrVGltZVRvVXBkYXRlQ2FjaGVkVGltZSAmJiBtX2Nh
Y2hlZFRpbWUgIT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkpIHsKICAgICAgICAgZG91Ymxl
IGNsb2NrRGVsdGEgPSBub3cgLSBtX2Nsb2NrVGltZUF0TGFzdENhY2hlZFRpbWVVcGRhdGU7CiAg
ICAgICAgIE1lZGlhVGltZSBkZWx0YSA9IG1fY2FjaGVkVGltZSArIE1lZGlhVGltZTo6Y3JlYXRl
V2l0aERvdWJsZShlZmZlY3RpdmVQbGF5YmFja1JhdGUoKSAqIGNsb2NrRGVsdGEpIC0gbV9wbGF5
ZXItPmN1cnJlbnRUaW1lKCk7Ci0gICAgICAgIFdBUk5JTkdfTE9HKExPR1RISVMsICJjYWNoZWQg
dGltZSB3YXMgIiwgZGVsdGEsICIgc2Vjb25kcyBvZmYgb2YgbWVkaWEgdGltZSB3aGVuIGl0IGV4
cGlyZWQiKTsKKyAgICAgICAgV0FSTklOR19MT0coTE9HSURFTlRJRklFUiwgImNhY2hlZCB0aW1l
IHdhcyAiLCBkZWx0YSwgIiBzZWNvbmRzIG9mZiBvZiBtZWRpYSB0aW1lIHdoZW4gaXQgZXhwaXJl
ZCIpOwogICAgIH0KICNlbmRpZgogCkBAIC0zMjAxLDcgKzMyMTAsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNldERlZmF1bHRQbGF5YmFjCiAgICAgaWYgKG1fZGVmYXVsdFBsYXliYWNrUmF0
ZSA9PSByYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBBTFdBWVNfTE9HKExPR1RISVMsIHJh
dGUpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgcmF0ZSk7CiAgICAgbV9kZWZhdWx0
UGxheWJhY2tSYXRlID0gcmF0ZTsKICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5yYXRl
Y2hhbmdlRXZlbnQpOwogfQpAQCAtMzIzMiw3ICszMjQxLDcgQEAgZG91YmxlIEhUTUxNZWRpYUVs
ZW1lbnQ6OnBsYXliYWNrUmF0ZSgpIAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBsYXli
YWNrUmF0ZShkb3VibGUgcmF0ZSkKIHsKLSAgICBBTFdBWVNfTE9HKExPR1RISVMsIHJhdGUpOwor
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgcmF0ZSk7CiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogICAgIC8vIGh0dHA6Ly93M2MuZ2l0aHViLmlvL21lZGlhY2FwdHVyZS1tYWluLyNt
ZWRpYXN0cmVhbXMtaW4tbWVkaWEtZWxlbWVudHMKQEAgLTMyNjcsNyArMzI3Niw3IEBAIGJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6d2Via2l0UHJlc2VydmVzUGkKIAogdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpzZXRXZWJraXRQcmVzZXJ2ZXNQaXRjaChib29sIHByZXNlcnZlc1BpdGNoKQogewotICAg
IE5PVElDRV9MT0coTE9HVEhJUywgcHJlc2VydmVzUGl0Y2gpOworICAgIElORk9fTE9HKExPR0lE
RU5USUZJRVIsIHByZXNlcnZlc1BpdGNoKTsKIAogICAgIG1fd2Via2l0UHJlc2VydmVzUGl0Y2gg
PSBwcmVzZXJ2ZXNQaXRjaDsKIApAQCAtMzMyMiw3ICszMzMxLDcgQEAgU3RyaW5nIEhUTUxNZWRp
YUVsZW1lbnQ6OnByZWxvYWQoKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBy
ZWxvYWQoY29uc3QgU3RyaW5nJiBwcmVsb2FkKQogewotICAgIE5PVElDRV9MT0coTE9HVEhJUywg
cHJlbG9hZCk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgcHJlbG9hZCk7CiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKICAgICAvLyBodHRwOi8vdzNjLmdpdGh1Yi5pby9tZWRpYWNhcHR1
cmUtbWFpbi8jbWVkaWFzdHJlYW1zLWluLW1lZGlhLWVsZW1lbnRzCiAgICAgLy8gInByZWxvYWQi
IC0gT24gZ2V0dGluZzogbm9uZS4gT24gc2V0dGluZzogaWdub3JlZC4KQEAgLTMzMzUsNyArMzM0
NCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UHJlbG9hZChjb25zdCAKIAogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpwbGF5KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2Up
CiB7Ci0gICAgQUxXQVlTX0xPRyhMT0dUSElTKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwogCiAgICAgYXV0byBzdWNjZXNzID0gbV9tZWRpYVNlc3Npb24tPnBsYXliYWNrUGVybWl0
dGVkKCp0aGlzKTsKICAgICBpZiAoIXN1Y2Nlc3MpIHsKQEAgLTMzNjMsNyArMzM3Miw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheShET01Qcm9taXNlRGUKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpwbGF5KCkKIHsKLSAgICBBTFdBWVNfTE9HKExPR1RISVMpOworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CiAKICAgICBhdXRvIHN1Y2Nlc3MgPSBtX21lZGlhU2Vzc2lvbi0+
cGxheWJhY2tQZXJtaXR0ZWQoKnRoaXMpOwogICAgIGlmICghc3VjY2VzcykgewpAQCAtMzM3OSwx
MCArMzM4OCwxMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXkoKQogCiBib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiB7Ci0gICAgQUxXQVlTX0xPRyhMT0dUSElTKTsK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgaWYgKCFtX21lZGlhU2Vzc2lv
bi0+Y2xpZW50V2lsbEJlZ2luUGxheWJhY2soKSkgewotICAgICAgICBBTFdBWVNfTE9HKExPR1RI
SVMsICIgIHJldHVybmluZyBiZWNhdXNlIG9mIGludGVycnVwdGlvbiIpOworICAgICAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIsICIgIHJldHVybmluZyBiZWNhdXNlIG9mIGludGVycnVwdGlv
biIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gVHJlYXQgYXMgc3VjY2VzcyBiZWNhdXNlIHdl
IHdpbGwgYmVnaW4gcGxheWJhY2sgb24gY2Vzc2F0aW9uIG9mIHRoZSBpbnRlcnJ1cHRpb24uCiAg
ICAgfQogCkBAIC0zNDUxLDcgKzM0NjAsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJ
bnRlcm5hbCgpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2UoKQogewotICAgIEFMV0FZ
U19MT0coTE9HVEhJUyk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIG1f
dGVtcG9yYXJpbHlBbGxvd2luZ0lubGluZVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuID0gZmFsc2U7
CiAKQEAgLTM0NjcsMTAgKzM0NzYsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZSgp
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2VJbnRlcm5hbCgpCiB7Ci0gICAgQUxXQVlT
X0xPRyhMT0dUSElTKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgaWYg
KCFtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soKSkgewotICAgICAgICBB
TFdBWVNfTE9HKExPR1RISVMsICIgIHJldHVybmluZyBiZWNhdXNlIG9mIGludGVycnVwdGlvbiIp
OworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICIgIHJldHVybmluZyBiZWNhdXNl
IG9mIGludGVycnVwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNTI0LDcg
KzM1MzMsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omxvb3AoKSBjb25zdAogCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldExvb3AoYm9vbCBiKQogewotICAgIE5PVElDRV9MT0coTE9HVEhJ
UywgYik7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgYik7CiAgICAgc2V0Qm9vbGVhbkF0
dHJpYnV0ZShsb29wQXR0ciwgYik7CiB9CiAKQEAgLTM1NDEsNyArMzU1MCw3IEBAIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6Y29udHJvbHMoKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNldENvbnRyb2xzKGJvb2wgYikKIHsKLSAgICBOT1RJQ0VfTE9HKExPR1RISVMsIGIpOworICAg
IElORk9fTE9HKExPR0lERU5USUZJRVIsIGIpOwogICAgIHNldEJvb2xlYW5BdHRyaWJ1dGUoY29u
dHJvbHNBdHRyLCBiKTsKIH0KIApAQCAtMzU1Miw3ICszNTYxLDcgQEAgZG91YmxlIEhUTUxNZWRp
YUVsZW1lbnQ6OnZvbHVtZSgpIGNvbnN0CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFZvbHVtZShkb3VibGUgdm9sdW1lKQogewotICAgIE5PVElDRV9MT0coTE9HVEhJ
Uywgdm9sdW1lKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCB2b2x1bWUpOwogCiAgICAg
aWYgKCEodm9sdW1lID49IDAgJiYgdm9sdW1lIDw9IDEpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKQEAgLTM1NzYsNyArMzU4NSw3IEBAIGJvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6bXV0ZWQoKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE11
dGVkKGJvb2wgbXV0ZWQpCiB7Ci0gICAgTk9USUNFX0xPRyhMT0dUSElTLCBtdXRlZCk7CisgICAg
SU5GT19MT0coTE9HSURFTlRJRklFUiwgbXV0ZWQpOwogCiAgICAgYm9vbCBtdXRlZFN0YXRlQ2hh
bmdlZCA9IG1fbXV0ZWQgIT0gbXV0ZWQ7CiAgICAgaWYgKG11dGVkU3RhdGVDaGFuZ2VkIHx8ICFt
X2V4cGxpY2l0bHlNdXRlZCkgewpAQCAtMzYzNyw3ICszNjQ2LDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpoYXJkd2FyZU11dGVkU3RhdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2ds
ZVBsYXlTdGF0ZSgpCiB7Ci0gICAgTk9USUNFX0xPRyhMT0dUSElTLCAiY2FuUGxheSgpIGlzICIs
IGNhblBsYXkoKSk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImNhblBsYXkoKSBpcyAi
LCBjYW5QbGF5KCkpOwogCiAgICAgLy8gV2UgY2FuIHNhZmVseSBjYWxsIHRoZSBpbnRlcm5hbCBw
bGF5L3BhdXNlIG1ldGhvZHMsIHdoaWNoIGRvbid0IGNoZWNrIHJlc3RyaWN0aW9ucywgYmVjYXVz
ZQogICAgIC8vIHRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIGZyb20gdGhlIGJ1aWx0LWluIG1l
ZGlhIGNvbnRyb2xsZXIKQEAgLTM2NTAsNyArMzY1OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6dG9nZ2xlUGxheVN0YXRlKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpiZWdpblNjcnVi
YmluZygpCiB7Ci0gICAgTk9USUNFX0xPRyhMT0dUSElTLCAicGF1c2VkKCkgaXMgIiwgcGF1c2Vk
KCkpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJwYXVzZWQoKSBpcyAiLCBwYXVzZWQo
KSk7CiAKICAgICBpZiAoIXBhdXNlZCgpKSB7CiAgICAgICAgIGlmIChlbmRlZCgpKSB7CkBAIC0z
NjcxLDcgKzM2ODAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmJlZ2luU2NydWJiaW5nKCkK
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbmRTY3J1YmJpbmcoKQogewotICAgIE5PVElDRV9M
T0coTE9HVEhJUywgIm1fcGF1c2VkSW50ZXJuYWwgaXMiLCBtX3BhdXNlZEludGVybmFsKTsKKyAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAibV9wYXVzZWRJbnRlcm5hbCBpcyIsIG1fcGF1c2Vk
SW50ZXJuYWwpOwogCiAgICAgaWYgKG1fcGF1c2VkSW50ZXJuYWwpCiAgICAgICAgIHNldFBhdXNl
ZEludGVybmFsKGZhbHNlKTsKQEAgLTQwODgsNyArNDA5Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6Y29uZmlndXJlVGV4dFRyYWMKICAgICAgICAgICAgIGN1cnJlbnRseUVuYWJsZWRUcmFj
a3MuYXBwZW5kKHRleHRUcmFjayk7CiAKICAgICAgICAgaW50IHRyYWNrU2NvcmUgPSBjYXB0aW9u
UHJlZmVyZW5jZXMgPyBjYXB0aW9uUHJlZmVyZW5jZXMtPnRleHRUcmFja1NlbGVjdGlvblNjb3Jl
KHRleHRUcmFjay5nZXQoKSwgdGhpcykgOiAwOwotICAgICAgICBOT1RJQ0VfTE9HKExPR1RISVMs
ICInIiwgdGV4dFRyYWNrLT5raW5kS2V5d29yZCgpLCAiJyB0cmFjayB3aXRoIGxhbmd1YWdlICci
LCB0ZXh0VHJhY2stPmxhbmd1YWdlKCksICInIGFuZCBCQ1AgNDcgbGFuZ3VhZ2UgJyIsIHRleHRU
cmFjay0+dmFsaWRCQ1A0N0xhbmd1YWdlKCksICInIGhhcyBzY29yZSAiLCB0cmFja1Njb3JlKTsK
KyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIiciLCB0ZXh0VHJhY2stPmtpbmRLZXl3
b3JkKCksICInIHRyYWNrIHdpdGggbGFuZ3VhZ2UgJyIsIHRleHRUcmFjay0+bGFuZ3VhZ2UoKSwg
IicgYW5kIEJDUCA0NyBsYW5ndWFnZSAnIiwgdGV4dFRyYWNrLT52YWxpZEJDUDQ3TGFuZ3VhZ2Uo
KSwgIicgaGFzIHNjb3JlICIsIHRyYWNrU2NvcmUpOwogCiAgICAgICAgIGlmICh0cmFja1Njb3Jl
KSB7CiAKQEAgLTQ0MjEsMTEgKzQ0MzAsMTEgQEAgVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVj
dE5leHRTb3VyY2VDaAogICAgIC8vIERvbid0IGxvZyBpZiB0aGlzIHdhcyBqdXN0IGNhbGxlZCB0
byBmaW5kIG91dCBpZiB0aGVyZSBhcmUgYW55IHZhbGlkIDxzb3VyY2U+IGVsZW1lbnRzLgogICAg
IGJvb2wgc2hvdWxkTG9nID0gd2lsbExvZyhXVEZMb2dMZXZlbERlYnVnKSAmJiBhY3Rpb25JZklu
dmFsaWQgIT0gRG9Ob3RoaW5nOwogICAgIGlmIChzaG91bGRMb2cpCi0gICAgICAgIE5PVElDRV9M
T0coTE9HVEhJUyk7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgaWYg
KCFtX25leHRDaGlsZE5vZGVUb0NvbnNpZGVyKSB7CiAgICAgICAgIGlmIChzaG91bGRMb2cpCi0g
ICAgICAgICAgICBOT1RJQ0VfTE9HKExPR1RISVMsICJlbmQgb2YgbGlzdCwgc3RvcHBpbmciKTsK
KyAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJlbmQgb2YgbGlzdCwgc3RvcHBp
bmciKTsKICAgICAgICAgcmV0dXJuIFVSTCgpOwogICAgIH0KIApAQCAtNDQ0NSwxMyArNDQ1NCwx
MyBAQCBVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoCiAgICAgICAgIGF1
dG8gbWVkaWFVUkwgPSBzb3VyY2UtPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwog
ICAgICAgICBTdHJpbmcgdHlwZTsKICAgICAgICAgaWYgKHNob3VsZExvZykKLSAgICAgICAgICAg
IE5PVElDRV9MT0coTE9HVEhJUywgIidzcmMnIGlzICIsIG1lZGlhVVJMKTsKKyAgICAgICAgICAg
IElORk9fTE9HKExPR0lERU5USUZJRVIsICInc3JjJyBpcyAiLCBtZWRpYVVSTCk7CiAgICAgICAg
IGlmIChtZWRpYVVSTC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBnb3RvIENoZWNrQWdhaW47CiAK
ICAgICAgICAgaWYgKGF1dG8qIG1lZGlhID0gc291cmNlLT5wYXJzZWRNZWRpYUF0dHJpYnV0ZSgp
KSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkTG9nKQotICAgICAgICAgICAgICAgIE5PVElDRV9M
T0coTE9HVEhJUywgIidtZWRpYScgaXMgIiwgc291cmNlLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKG1lZGlhQXR0cikpOworICAgICAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIsICInbWVkaWEnIGlzICIsIHNvdXJjZS0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihtZWRpYUF0dHIpKTsKICAgICAgICAgICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVu
ZGVyZXIoKTsKICAgICAgICAgICAgIExPRyhNZWRpYVF1ZXJpZXMsICJIVE1MTWVkaWFFbGVtZW50
ICVwIHNlbGVjdE5leHRTb3VyY2VDaGlsZCBldmFsdWF0aW5nIG1lZGlhIHF1ZXJpZXMiLCB0aGlz
KTsKICAgICAgICAgICAgIGlmICghTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iLCBkb2N1
bWVudCgpLCByZW5kZXJlciA/ICZyZW5kZXJlci0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0
ZSgqbWVkaWEpKQpAQCAtNDQ2Myw3ICs0NDcyLDcgQEAgVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
bGVjdE5leHRTb3VyY2VDaAogICAgICAgICAgICAgdHlwZSA9IG1pbWVUeXBlRnJvbURhdGFVUkwo
bWVkaWFVUkwpOwogICAgICAgICBpZiAoIXR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBp
ZiAoc2hvdWxkTG9nKQotICAgICAgICAgICAgICAgIE5PVElDRV9MT0coTE9HVEhJUywgIid0eXBl
JyBpcyAiLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAi
J3R5cGUnIGlzICIsIHR5cGUpOwogICAgICAgICAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyBwYXJhbWV0ZXJzOwogICAgICAgICAgICAgcGFyYW1ldGVycy50eXBlID0gQ29udGVudFR5
cGUodHlwZSk7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLnVybCA9IG1lZGlhVVJMOwpAQCAtNDQ4
Niw3ICs0NDk1LDcgQEAgVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaAog
CiAgICAgICAgIC8vIEEgJ2JlZm9yZWxvYWQnIGV2ZW50IGhhbmRsZXIgY2FuIG11dGF0ZSB0aGUg
RE9NLCBzbyBjaGVjayB0byBzZWUgaWYgdGhlIHNvdXJjZSBlbGVtZW50IGlzIHN0aWxsIGEgY2hp
bGQgbm9kZS4KICAgICAgICAgaWYgKHNvdXJjZS0+cGFyZW50Tm9kZSgpICE9IHRoaXMpIHsKLSAg
ICAgICAgICAgIE5PVElDRV9MT0coTE9HVEhJUywgIidiZWZvcmVsb2FkJyByZW1vdmVkIGN1cnJl
bnQgZWxlbWVudCIpOworICAgICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIidiZWZv
cmVsb2FkJyByZW1vdmVkIGN1cnJlbnQgZWxlbWVudCIpOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KIApAQCAtNDQ5Nyw3ICs0NTA2LDcgQEAgVVJMIEhUTUxNZWRpYUVsZW1lbnQ6
OnNlbGVjdE5leHRTb3VyY2VDaAogICAgICAgICBtX2N1cnJlbnRTb3VyY2VOb2RlID0gV1RGTW92
ZShzb3VyY2UpOwogCiAgICAgICAgIGlmIChzaG91bGRMb2cpCi0gICAgICAgICAgICBOT1RJQ0Vf
TE9HKExPR1RISVMsICIgPSAiLCBtZWRpYVVSTCk7CisgICAgICAgICAgICBJTkZPX0xPRyhMT0dJ
REVOVElGSUVSLCAiID0gIiwgbWVkaWFVUkwpOwogCiAgICAgICAgIHJldHVybiBtZWRpYVVSTDsK
IApAQCAtNDUxMSwxNiArNDUyMCwxNiBAQCBDaGVja0FnYWluOgogCiAjaWYgIUxPR19ESVNBQkxF
RAogICAgIGlmIChzaG91bGRMb2cpCi0gICAgICAgIE5PVElDRV9MT0coTE9HVEhJUywgImZhaWxl
ZCIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiZmFpbGVkIik7CiAjZW5kaWYK
ICAgICByZXR1cm4gVVJMKCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2Fz
QWRkZWQoSFRNTFNvdXJjZUVsZW1lbnQmIHNvdXJjZSkKIHsKLSAgICBpZiAod2lsbExvZyhXVEZM
b2dMZXZlbE5vdGljZSkgJiYgc291cmNlLmhhc1RhZ05hbWUoc291cmNlVGFnKSkgeworICAgIGlm
ICh3aWxsTG9nKFdURkxvZ0xldmVsSW5mbykgJiYgc291cmNlLmhhc1RhZ05hbWUoc291cmNlVGFn
KSkgewogICAgICAgICBVUkwgdXJsID0gc291cmNlLmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNy
Y0F0dHIpOwotICAgICAgICBOT1RJQ0VfTE9HKExPR1RISVMsICInc3JjJyBpcyAiLCB1cmwpOwor
ICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiJ3NyYycgaXMgIiwgdXJsKTsKICAgICB9
CiAKICAgICAvLyBXZSBzaG91bGQgb25seSBjb25zaWRlciBhIDxzb3VyY2U+IGVsZW1lbnQgd2hl
biB0aGVyZSBpcyBub3Qgc3JjIGF0dHJpYnV0ZSBhdCBhbGwuCkBAIC00NTQwLDcgKzQ1NDksNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKEhUCiAgICAgfQogCiAgICAg
aWYgKG1fY3VycmVudFNvdXJjZU5vZGUgJiYgJnNvdXJjZSA9PSBUcmF2ZXJzYWw8SFRNTFNvdXJj
ZUVsZW1lbnQ+OjpuZXh0U2libGluZygqbV9jdXJyZW50U291cmNlTm9kZSkpIHsKLSAgICAgICAg
Tk9USUNFX0xPRyhMT0dUSElTLCAiPHNvdXJjZT4gaW5zZXJ0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIg
Y3VycmVudCBzb3VyY2UiKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIjxzb3Vy
Y2U+IGluc2VydGVkIGltbWVkaWF0ZWx5IGFmdGVyIGN1cnJlbnQgc291cmNlIik7CiAgICAgICAg
IG1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXIgPSAmc291cmNlOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNDU2NSw5ICs0NTc0LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VX
YXNBZGRlZChIVAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc1JlbW92ZWQoSFRN
TFNvdXJjZUVsZW1lbnQmIHNvdXJjZSkKIHsKLSAgICBpZiAod2lsbExvZyhXVEZMb2dMZXZlbE5v
dGljZSkgJiYgc291cmNlLmhhc1RhZ05hbWUoc291cmNlVGFnKSkgeworICAgIGlmICh3aWxsTG9n
KFdURkxvZ0xldmVsSW5mbykgJiYgc291cmNlLmhhc1RhZ05hbWUoc291cmNlVGFnKSkgewogICAg
ICAgICBVUkwgdXJsID0gc291cmNlLmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwot
ICAgICAgICBOT1RJQ0VfTE9HKExPR1RISVMsICInc3JjJyBpcyAiLCB1cmwpOworICAgICAgICBJ
TkZPX0xPRyhMT0dJREVOVElGSUVSLCAiJ3NyYycgaXMgIiwgdXJsKTsKICAgICB9CiAKICAgICBp
ZiAoJnNvdXJjZSAhPSBtX2N1cnJlbnRTb3VyY2VOb2RlICYmICZzb3VyY2UgIT0gbV9uZXh0Q2hp
bGROb2RlVG9Db25zaWRlcikKQEAgLTQ1NzUsMTkgKzQ1ODQsMTkgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojpzb3VyY2VXYXNSZW1vdmVkKAogCiAgICAgaWYgKCZzb3VyY2UgPT0gbV9uZXh0Q2hp
bGROb2RlVG9Db25zaWRlcikgewogICAgICAgICBtX25leHRDaGlsZE5vZGVUb0NvbnNpZGVyID0g
bV9jdXJyZW50U291cmNlTm9kZSA/IFRyYXZlcnNhbDxIVE1MU291cmNlRWxlbWVudD46Om5leHRT
aWJsaW5nKCptX2N1cnJlbnRTb3VyY2VOb2RlKSA6IG51bGxwdHI7Ci0gICAgICAgIE5PVElDRV9M
T0coTE9HVEhJUyk7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogICAgIH0gZWxz
ZSBpZiAoJnNvdXJjZSA9PSBtX2N1cnJlbnRTb3VyY2VOb2RlKSB7CiAgICAgICAgIC8vIENsZWFy
IHRoZSBjdXJyZW50IHNvdXJjZSBub2RlIHBvaW50ZXIsIGJ1dCBkb24ndCBjaGFuZ2UgdGhlIG1v
dmllIGFzIHRoZSBzcGVjIHNheXM6CiAgICAgICAgIC8vIDQuOC44IC0gRHluYW1pY2FsbHkgbW9k
aWZ5aW5nIGEgc291cmNlIGVsZW1lbnQgYW5kIGl0cyBhdHRyaWJ1dGUgd2hlbiB0aGUgZWxlbWVu
dCBpcyBhbHJlYWR5CiAgICAgICAgIC8vIGluc2VydGVkIGluIGEgdmlkZW8gb3IgYXVkaW8gZWxl
bWVudCB3aWxsIGhhdmUgbm8gZWZmZWN0LgogICAgICAgICBtX2N1cnJlbnRTb3VyY2VOb2RlID0g
bnVsbHB0cjsKLSAgICAgICAgTk9USUNFX0xPRyhMT0dUSElTLCAibV9jdXJyZW50U291cmNlTm9k
ZSBzZXQgdG8gMCIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAibV9jdXJyZW50
U291cmNlTm9kZSBzZXQgdG8gMCIpOwogICAgIH0KIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIHsKLSAgICBOT1RJQ0VfTE9H
KExPR1RISVMpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY3VycmVudE1lZGlhVGlt
ZSgpKTsKQEAgLTQ3MTUsNyArNDcyNCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vla1Rv
UGxheWJhY2tQb3MKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclZvbHVtZUNo
YW5nZWQoTWVkaWFQbGF5ZXIqKQogewotICAgIE5PVElDRV9MT0coTE9HVEhJUyk7CisgICAgSU5G
T19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNh
bGxiYWNrKCk7CiAgICAgaWYgKG1fcGxheWVyKSB7CkBAIC00NzMxLDcgKzQ3NDAsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVm9sdW1lCiAKIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJNdXRlQ2hhbmdlZChNZWRpYVBsYXllciopCiB7Ci0gICAgTk9USUNF
X0xPRyhMT0dUSElTKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIGJlZ2lu
UHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJhY2soKTsKICAgICBpZiAobV9wbGF5ZXIpCkBAIC00
NzQxLDcgKzQ3NTAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTXV0ZUNo
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQoTWVk
aWFQbGF5ZXIqIHBsYXllcikKIHsKLSAgICBOT1RJQ0VfTE9HKExPR1RISVMpOworICAgIElORk9f
TE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgYmVnaW5Qcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxs
YmFjaygpOwogCkBAIC00NzY0LDcgKzQ3NzMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyUmF0ZUNoCiAgICAgLy8gdXNpbmcgKGVnLiBpdCBjYW4ndCBoYW5kbGUgdGhlIHJh
dGUgd2Ugc2V0KQogICAgIG1fcmVwb3J0ZWRQbGF5YmFja1JhdGUgPSBtX3BsYXllci0+cmF0ZSgp
OwogCi0gICAgTk9USUNFX0xPRyhMT0dUSElTLCAicmF0ZTogIiwgbV9yZXBvcnRlZFBsYXliYWNr
UmF0ZSk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJhdGU6ICIsIG1fcmVwb3J0ZWRQ
bGF5YmFja1JhdGUpOwogCiAgICAgaWYgKG1fcGxheWluZykKICAgICAgICAgaW52YWxpZGF0ZUNh
Y2hlZFRpbWUoKTsKQEAgLTQ3NzYsNyArNDc4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJSYXRlQ2gKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclBs
YXliYWNrU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIHsKLSAgICBOT1RJQ0VfTE9HKExPR1RI
SVMpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgaWYgKCFtX3BsYXllciB8
fCBtX3BhdXNlZEludGVybmFsKQogICAgICAgICByZXR1cm47CkBAIC00NzkxLDcgKzQ4MDAsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGxheWJhCiAKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTYXdVbnN1cHBvcnRlZFRyYWNrcyhNZWRpYVBsYXllciop
CiB7Ci0gICAgTk9USUNFX0xPRyhMT0dUSElTKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
KTsKIAogICAgIC8vIFRoZSBNZWRpYVBsYXllciBjYW1lIGFjcm9zcyBjb250ZW50IGl0IGNhbm5v
dCBjb21wbGV0ZWx5IGhhbmRsZS4KICAgICAvLyBUaGlzIGlzIG5vcm1hbGx5IGFjY2VwdGFibGUg
ZXhjZXB0IHdoZW4gd2UgYXJlIGluIGEgc3RhbmRhbG9uZQpAQCAtNDgwMiw3ICs0ODExLDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNhd1VucwogCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQoTWVkaWFQbGF5ZXIqKQog
ewotICAgIE5PVElDRV9MT0coTE9HVEhJUyk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7
CiAKICAgICAvLyBUaGUgTWVkaWFQbGF5ZXIgY2FtZSBhY3Jvc3MgY29udGVudCB3aGljaCBubyBp
bnN0YWxsZWQgZW5naW5lIHN1cHBvcnRzLgogICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBs
YXllcjo6Rm9ybWF0RXJyb3IpOwpAQCAtNDgyMCw3ICs0ODI5LDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllclJlcGFpbgogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyU2l6ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogewotICAgIE5PVElDRV9MT0coTE9HVEhJ
Uyk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBpZiAoaXM8TWVkaWFEb2N1
bWVudD4oZG9jdW1lbnQoKSkgJiYgbV9wbGF5ZXIpCiAgICAgICAgIGRvd25jYXN0PE1lZGlhRG9j
dW1lbnQ+KGRvY3VtZW50KCkpLm1lZGlhRWxlbWVudE5hdHVyYWxTaXplQ2hhbmdlZChleHBhbmRl
ZEludFNpemUobV9wbGF5ZXItPm5hdHVyYWxTaXplKCkpKTsKQEAgLTQ4NDEsNyArNDg1MCw3IEBA
IGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZW5kZXIKIAogdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKE1lZGlhUGxheWVyKikK
IHsKLSAgICBOT1RJQ0VfTE9HKExPR1RISVMpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIp
OwogCiAgICAgLy8gS2ljayBvZmYgYSBmYWtlIHJlY2FsY1N0eWxlIHRoYXQgd2lsbCB1cGRhdGUg
dGhlIGNvbXBvc2l0aW5nIHRyZWUuCiAgICAgaW52YWxpZGF0ZVN0eWxlQW5kTGF5ZXJDb21wb3Np
dGlvbigpOwpAQCAtNDg2Niw3ICs0ODc1LDcgQEAgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBIVE1M
TWVkaWFFbGVtZW50OgogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhRW5naW5lV2FzVXBk
YXRlZCgpCiB7Ci0gICAgTk9USUNFX0xPRyhMT0dUSElTKTsKKyAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSKTsKICAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiAgICAg
dXBkYXRlUmVuZGVyZXIoKTsKICAgICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygp
OwpAQCAtNDkwMSw3ICs0OTEwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUVuZ2lu
ZVdhc1VwZAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRW5naW5lVXBkYXRl
ZChNZWRpYVBsYXllciopCiB7Ci0gICAgTk9USUNFX0xPRyhMT0dUSElTKTsKKyAgICBJTkZPX0xP
RyhMT0dJREVOVElGSUVSKTsKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgbV9kcm9w
cGVkVmlkZW9GcmFtZXMgPSAwOwpAQCAtNDkxNCw3ICs0OTIzLDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckVuZ2luZQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKE1lZGlhUGxheWVyKikKIHsKLSAgICBOT1RJ
Q0VfTE9HKExPR1RISVMsICJjdXJyZW50IGRpc3BsYXkgbW9kZSA9ICIsIChpbnQpZGlzcGxheU1v
ZGUoKSk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImN1cnJlbnQgZGlzcGxheSBtb2Rl
ID0gIiwgKGludClkaXNwbGF5TW9kZSgpKTsKIAogICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxh
eWVyQ2FsbGJhY2soKTsKICAgICBpZiAoZGlzcGxheU1vZGUoKSA9PSBQb3N0ZXJXYWl0aW5nRm9y
VmlkZW8pIHsKQEAgLTQ5MjYsNyArNDkzNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJGaXJzdFYKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNoYXJh
Y3RlcmlzdGljQ2hhbmdlZChNZWRpYVBsYXllciopCiB7Ci0gICAgTk9USUNFX0xPRyhMT0dUSElT
KTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIGJlZ2luUHJvY2Vzc2luZ01l
ZGlhUGxheWVyQ2FsbGJhY2soKTsKIApAQCAtNTE3Niw3ICs1MTg1LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUoVQogICAgIGJvb2wgc2hvdWxkQmVQbGF5aW5nID0g
cG90ZW50aWFsbHlQbGF5aW5nKCk7CiAgICAgYm9vbCBwbGF5ZXJQYXVzZWQgPSBtX3BsYXllci0+
cGF1c2VkKCk7CiAKLSAgICBOT1RJQ0VfTE9HKExPR1RISVMsICJzaG91bGRCZVBsYXlpbmcgPSAi
LCBzaG91bGRCZVBsYXlpbmcsICIgcGxheWVyUGF1c2VkID0gIiwgcGxheWVyUGF1c2VkKTsKKyAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAic2hvdWxkQmVQbGF5aW5nID0gIiwgc2hvdWxkQmVQ
bGF5aW5nLCAiIHBsYXllclBhdXNlZCA9ICIsIHBsYXllclBhdXNlZCk7CiAKICAgICBpZiAoc2hv
dWxkQmVQbGF5aW5nKSB7CiAgICAgICAgIHNjaGVkdWxlVXBkYXRlUGxheWJhY2tDb250cm9sc01h
bmFnZXIoKTsKQEAgLTUyNzIsNyArNTI4MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3Rv
cFBlcmlvZGljVGltZXIKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9h
ZCgpCiB7Ci0gICAgTk9USUNFX0xPRyhMT0dUSElTKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElG
SUVSKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbG9vayB0byByZWNvbmNpbGUgdGhlIGlP
UyBhbmQgbm9uLWlPUyBjb2RlIChiZWxvdykuCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNTMyNSw3
ICs1MzM0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9hZAogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIoRGVsYXllZEFjdGlvblR5cGUg
ZmxhZ3MpCiB7Ci0gICAgTk9USUNFX0xPRyhMT0dUSElTLCAiZmxhZ3MgPSAiLCBhY3Rpb25OYW1l
KGZsYWdzKSk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImZsYWdzID0gIiwgYWN0aW9u
TmFtZShmbGFncykpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBpZiAoIW1fc2V0
dGluZ01lZGlhU3RyZWFtU3JjT2JqZWN0KQpAQCAtNTQwMCw3ICs1NDA5LDcgQEAgY29uc3QgY2hh
ciogSFRNTE1lZGlhRWxlbWVudDo6YWN0aXZlRE9NTwogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnN0b3BXaXRob3V0RGVzdHJveWluZ01lZGlhUGxheWVyKCkKIHsKLSAgICBOT1RJQ0VfTE9HKExP
R1RISVMpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgaWYgKG1fdmlkZW9G
dWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkKICAgICAgICAgZXhpdEZ1
bGxzY3JlZW4oKTsKQEAgLTU0NDQsNyArNTQ1Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
Y29udGV4dERlc3Ryb3llZCgKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdG9wKCkKIHsKLSAg
ICBOT1RJQ0VfTE9HKExPR1RISVMpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCiAg
ICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIHN0b3BX
aXRob3V0RGVzdHJveWluZ01lZGlhUGxheWVyKCk7CkBAIC01NDY0LDcgKzU0NzMsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnN0b3AoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN1c3Bl
bmQoUmVhc29uRm9yU3VzcGVuc2lvbiB3aHkpCiB7Ci0gICAgTk9USUNFX0xPRyhMT0dUSElTKTsK
KyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBzd2l0Y2ggKHdoeSkKQEAgLTU0ODUsNyArNTQ5
NCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZChSZWFzb25Gb3IKIAogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpyZXN1bWUoKQogewotICAgIE5PVElDRV9MT0coTE9HVEhJUyk7Cisg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBtX2luQWN0aXZlRG9jdW1lbnQgPSB0
cnVlOwogCkBAIC01NTE5LDE0ICs1NTI4LDE0IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aGFz
UGVuZGluZ0FjdGl2aXQKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVZvbHVtZURpZENo
YW5nZSgpCiB7Ci0gICAgTk9USUNFX0xPRyhMT0dUSElTKTsKKyAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSKTsKICAgICB1cGRhdGVWb2x1bWUoKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkKIHsKICAgICBtX2VsZW1lbnRJc0hpZGRlbiA9IGRv
Y3VtZW50KCkuaGlkZGVuKCkgJiYgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlICE9IFZpZGVvRnVsbHNj
cmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlOwotICAgIE5PVElDRV9MT0coTE9HVEhJUywgInZpc2li
bGUgPSAiLCAhbV9lbGVtZW50SXNIaWRkZW4pOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIs
ICJ2aXNpYmxlID0gIiwgIW1fZWxlbWVudElzSGlkZGVuKTsKICAgICB1cGRhdGVTbGVlcERpc2Fi
bGluZygpOwogICAgIG1fbWVkaWFTZXNzaW9uLT52aXNpYmlsaXR5Q2hhbmdlZCgpOwogICAgIGlm
IChtX3BsYXllcikKQEAgLTU1MzUsMTAgKzU1NDQsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp2aXNpYmlsaXR5U3RhdGVDaAogICAgIGJvb2wgaXNQbGF5aW5nQXVkaW8gPSBpc1BsYXlpbmco
KSAmJiBoYXNBdWRpbygpICYmICFtdXRlZCgpICYmIHZvbHVtZSgpOwogICAgIGlmICghaXNQbGF5
aW5nQXVkaW8pIHsKICAgICAgICAgaWYgKG1fZWxlbWVudElzSGlkZGVuKSB7Ci0gICAgICAgICAg
ICBBTFdBWVNfTE9HKExPR1RISVMsICJ2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkgU3VzcGVuZGlu
ZyBwbGF5YmFjayBhZnRlciBnb2luZyB0byB0aGUgYmFja2dyb3VuZCIpOworICAgICAgICAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIFN1c3Bl
bmRpbmcgcGxheWJhY2sgYWZ0ZXIgZ29pbmcgdG8gdGhlIGJhY2tncm91bmQiKTsKICAgICAgICAg
ICAgIG1fbWVkaWFTZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6RW50ZXJpbmdCYWNrZ3JvdW5kKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFM
V0FZU19MT0coTE9HVEhJUywgInZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBSZXN1bWluZyBwbGF5
YmFjayBhZnRlciBlbnRlcmluZyBmb3JlZ3JvdW5kIik7CisgICAgICAgICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsICJ2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkgUmVzdW1pbmcgcGxheWJh
Y2sgYWZ0ZXIgZW50ZXJpbmcgZm9yZWdyb3VuZCIpOwogICAgICAgICAgICAgbV9tZWRpYVNlc3Np
b24tPmVuZEludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWlu
Zyk7CiAgICAgICAgIH0KICAgICB9CkBAIC01NTY2LDcgKzU1NzUsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnN5bmNUZXh0VHJhY2tCb3VuCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2Via2l0U2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKCkKIHsKLSAgICBOT1RJQ0VfTE9HKExPR1RISVMpOworICAgIElORk9fTE9HKExPR0lE
RU5USUZJRVIpOwogICAgIGlmIChwcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKQogICAg
ICAgICByZW1vdmVCZWhhdmlvcnNSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNlckdlc3R1cmUoKTsK
ICAgICBtX21lZGlhU2Vzc2lvbi0+c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKCp0aGlzKTsKQEAg
LTU1ODYsNyArNTU5NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDdXJy
ZW4KIHsKICAgICBtX2lzUGxheWluZ1RvV2lyZWxlc3NUYXJnZXQgPSBtX3BsYXllciAmJiBtX3Bs
YXllci0+aXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpOwogCi0gICAgTk9USUNFX0xP
RyhMT0dUSElTLCAid2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcyA9ICIsIG1f
aXNQbGF5aW5nVG9XaXJlbGVzc1RhcmdldCk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwg
IndlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MgPSAiLCBtX2lzUGxheWluZ1Rv
V2lyZWxlc3NUYXJnZXQpOwogICAgIEFTU0VSVChtX3BsYXllcik7CiAgICAgY29uZmlndXJlTWVk
aWFDb250cm9scygpOwogICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGN1cnJl
bnRwbGF5YmFja3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkRXZlbnQpOwpAQCAtNTYwMyw3ICs1NjEy
LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpkaXNwYXRjaEV2ZW50KEV2ZQogICAgICAgICBz
Y2hlZHVsZURlbGF5ZWRBY3Rpb24oQ2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGFibGl0eSk7CiAg
ICAgfQogCi0gICAgREVCVUdfTE9HKExPR1RISVMsICJkaXNwYXRjaGluZyAnIiwgZXZlbnQudHlw
ZSgpLCAiJyIpOworICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiZGlzcGF0Y2hpbmcgJyIs
IGV2ZW50LnR5cGUoKSwgIiciKTsKIAogICAgIHJldHVybiBIVE1MRWxlbWVudDo6ZGlzcGF0Y2hF
dmVudChldmVudCk7CiB9CkBAIC01NjIyLDcgKzU2MzEsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1l
bnQ6OmFkZEV2ZW50TGlzdGVuZXIoCiAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5zZXRIYXNQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycygqdGhpcywgdHJ1ZSk7CiAgICAgfQogCi0g
ICAgTk9USUNFX0xPRyhMT0dUSElTLCAiJ3dlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5
Y2hhbmdlZCciKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiJ3dlYmtpdHBsYXliYWNr
dGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZCciKTsKIAogICAgIGVucXVldWVQbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVudCgpOyAvLyBFbnN1cmUgdGhlIGV2ZW50IGxpc3RlbmVy
IGdldHMgYXQgbGVhc3Qgb25lIGV2ZW50LgogICAgIHJldHVybiB0cnVlOwpAQCAtNTYzNyw3ICs1
NjQ2LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIGRpZFJlbW92ZUxhc3RBdmFpbGFiaWxpdHlDaGFu
Z2VkTGlzdGVuZXIgPSAhaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLndlYmtpdHBsYXli
YWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50KTsKLSAgICBOT1RJQ0VfTE9HKExPR1RI
SVMsICJyZW1vdmVkIGxhc3QgbGlzdGVuZXIgPSAiLCBkaWRSZW1vdmVMYXN0QXZhaWxhYmlsaXR5
Q2hhbmdlZExpc3RlbmVyKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmVtb3ZlZCBs
YXN0IGxpc3RlbmVyID0gIiwgZGlkUmVtb3ZlTGFzdEF2YWlsYWJpbGl0eUNoYW5nZWRMaXN0ZW5l
cik7CiAgICAgaWYgKGRpZFJlbW92ZUxhc3RBdmFpbGFiaWxpdHlDaGFuZ2VkTGlzdGVuZXIpIHsK
ICAgICAgICAgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyA9IGZhbHNl
OwogICAgICAgICBtX21lZGlhU2Vzc2lvbi0+c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlMaXN0ZW5lcnMoKnRoaXMsIGZhbHNlKTsKQEAgLTU2NTAsNyArNTY1OSw3IEBAIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6cmVtb3ZlRXZlbnRMaXN0ZW4KIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
ZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KCkKIHsKICAgICBi
b29sIGhhc1RhcmdldHMgPSBtX21lZGlhU2Vzc2lvbi0+aGFzV2lyZWxlc3NQbGF5YmFja1Rhcmdl
dHMoKnRoaXMpOwotICAgIE5PVElDRV9MT0coTE9HVEhJUywgImhhc1RhcmdldHMgPSAiLCBoYXNU
YXJnZXRzKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiaGFzVGFyZ2V0cyA9ICIsIGhh
c1RhcmdldHMpOwogICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxh
YmlsaXR5Y2hhbmdlZEV2ZW50LCBoYXNUYXJnZXRzKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRo
aXMpOwogICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7
CkBAIC01NjU5LDcgKzU2NjgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVucXVldWVQbGF5
YmFja1RhCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0V2lyZWxlc3NQbGF5YmFja1Rhcmdl
dChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiBkZXZpY2UpCiB7Ci0gICAgTk9USUNFX0xPRyhM
T0dUSElTKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBpZiAobV9wbGF5ZXIp
CiAgICAgICAgIG1fcGxheWVyLT5zZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFdURk1vdmUoZGV2
aWNlKSk7CiB9CkBAIC01NjY4LDcgKzU2NzcsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNh
blBsYXlUb1dpcmVsZXNzCiB7CiAgICAgYm9vbCBjYW5QbGF5ID0gbV9wbGF5ZXIgJiYgbV9wbGF5
ZXItPmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKTsKIAotICAgIE5PVElDRV9MT0co
TE9HVEhJUywgInJldHVybmluZyAiLCBjYW5QbGF5KTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElG
SUVSLCAicmV0dXJuaW5nICIsIGNhblBsYXkpOwogCiAgICAgcmV0dXJuIGNhblBsYXk7CiB9CkBA
IC01NjgwLDcgKzU2ODksNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzUGxheWluZ1RvV2ly
ZWxlCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJn
ZXQoYm9vbCBzaG91bGRQbGF5KQogewotICAgIE5PVElDRV9MT0coTE9HVEhJUywgInNob3VsZFBs
YXkgPSAiLCBzaG91bGRQbGF5KTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAic2hvdWxk
UGxheSA9ICIsIHNob3VsZFBsYXkpOwogCiAgICAgaWYgKG1fcGxheWVyKQogICAgICAgICBtX3Bs
YXllci0+c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoc2hvdWxkUGxheSk7CkBAIC01NzM3
LDcgKzU3NDYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVN0YW5kYXJkRnVsCiAK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKFZpZGVvRnVsbHNjcmVlbk1v
ZGUgbW9kZSkKIHsKLSAgICBOT1RJQ0VfTE9HKExPR1RISVMpOworICAgIElORk9fTE9HKExPR0lE
RU5USUZJRVIpOwogICAgIEFTU0VSVChtb2RlICE9IFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsK
IAogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGUgPT0gbW9kZSkKQEAgLTU3ODIsNyArNTc5
MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKCkKIAogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbigpCiB7Ci0gICAgTk9USUNFX0xPRyhMT0dU
SElTKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKICAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmZ1bGxTY3JlZW5FbmFibGVk
KCkgJiYgZG9jdW1lbnQoKS53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSB0aGlz
KSB7CkBAIC01OTg4LDcgKzU5OTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVRl
eHRUcmFja0RpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNp
YmxlKGJvb2wgY2xvc2VkQ2FwdGlvblZpc2libGUpCiB7Ci0gICAgTk9USUNFX0xPRyhMT0dUSElT
LCBjbG9zZWRDYXB0aW9uVmlzaWJsZSk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgY2xv
c2VkQ2FwdGlvblZpc2libGUpOwogCiAgICAgbV9jbG9zZWRDYXB0aW9uc1Zpc2libGUgPSBmYWxz
ZTsKIApAQCAtNjA0Myw3ICs2MDUyLDcgQEAgdW5zaWduZWQgSFRNTE1lZGlhRWxlbWVudDo6d2Vi
a2l0VmlkZW9EZQogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUNhblN0YXJ0KERvY3VtZW50
JiBkb2N1bWVudCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGRvY3VtZW50LCAmZG9jdW1lbnQgPT0g
JnRoaXMtPmRvY3VtZW50KCkpOwotICAgIE5PVElDRV9MT0coTE9HVEhJUywgIm1faXNXYWl0aW5n
VW50aWxNZWRpYUNhblN0YXJ0ID0gIiwgbV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQsICIs
IG1fcGF1c2VkSW50ZXJuYWwgPSAiLCBtX3BhdXNlZEludGVybmFsKTsKKyAgICBJTkZPX0xPRyhM
T0dJREVOVElGSUVSLCAibV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQgPSAiLCBtX2lzV2Fp
dGluZ1VudGlsTWVkaWFDYW5TdGFydCwgIiwgbV9wYXVzZWRJbnRlcm5hbCA9ICIsIG1fcGF1c2Vk
SW50ZXJuYWwpOwogCiAgICAgQVNTRVJUKG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0IHx8
IG1fcGF1c2VkSW50ZXJuYWwpOwogICAgIGlmIChtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFy
dCkgewpAQCAtNjA2NCw3ICs2MDczLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTaG91
bGREZWxheUxvYQogICAgIGlmIChtX3Nob3VsZERlbGF5TG9hZEV2ZW50ID09IHNob3VsZERlbGF5
KQogICAgICAgICByZXR1cm47CiAKLSAgICBOT1RJQ0VfTE9HKExPR1RISVMsIHNob3VsZERlbGF5
KTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCBzaG91bGREZWxheSk7CiAKICAgICBtX3No
b3VsZERlbGF5TG9hZEV2ZW50ID0gc2hvdWxkRGVsYXk7CiAgICAgaWYgKHNob3VsZERlbGF5KQpA
QCAtNjI5Niw3ICs2MzA1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptYXJrQ2FwdGlvbkFu
ZFN1YgogICAgIGlmICghbV90ZXh0VHJhY2tzKQogICAgICAgICByZXR1cm47CiAKLSAgICBOT1RJ
Q0VfTE9HKExPR1RISVMpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgLy8g
TWFyayBhbGwgdHJhY2tzIGFzIG5vdCAiY29uZmlndXJlZCIgc28gdGhhdCBjb25maWd1cmVUZXh0
VHJhY2tzKCkKICAgICAvLyB3aWxsIHJlY29uc2lkZXIgd2hpY2ggdHJhY2tzIHRvIGRpc3BsYXkg
aW4gbGlnaHQgb2YgbmV3IHVzZXIgcHJlZmVyZW5jZXMKQEAgLTYzMjIsNyArNjMzMSw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRTdWIKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpjcmVhdGVNZWRpYVBsYXllcigpCiB7Ci0gICAgTk9USUNFX0xPRyhMT0dUSElTKTsK
KyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAg
ICAgaWYgKG1fYXVkaW9Tb3VyY2VOb2RlKQpAQCAtNjkyOCw3ICs2OTM3LDcgQEAgRE9NV3JhcHBl
cldvcmxkJiBIVE1MTWVkaWFFbGVtZW50OjplbnN1cgogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OmVuc3VyZU1lZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCgpCiB7Ci0gICAgREVCVUdfTE9HKExP
R1RISVMpOworICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBQYWdlKiBwYWdlID0g
ZG9jdW1lbnQoKS5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC03MDA1LDcgKzcwMTQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldENvbnRyb2xs
ZXJKU1ByCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9v
dChTaGFkb3dSb290KiByb290KQogewotICAgIERFQlVHX0xPRyhMT0dUSElTKTsKKyAgICBERUJV
R19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdl
KCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtNzA4OCwxMCArNzA5NywxMCBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0
TWVkaWFDb250cm9sc0RlcGVuZE9uUGFnZVNjYWxlRmFjdG9yKGJvb2wgZGVwZW5kc09uUGFnZVNj
YWxlKQogewotICAgIERFQlVHX0xPRyhMT0dUSElTLCAiTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNv
bnRyb2xzRGVwZW5kUGFnZVNjYWxlRmFjdG9yIiwgZGVwZW5kc09uUGFnZVNjYWxlKTsKKyAgICBE
RUJVR19MT0coTE9HSURFTlRJRklFUiwgIk1lZGlhRWxlbWVudDo6c2V0TWVkaWFDb250cm9sc0Rl
cGVuZFBhZ2VTY2FsZUZhY3RvciIsIGRlcGVuZHNPblBhZ2VTY2FsZSk7CiAKICAgICBpZiAoZG9j
dW1lbnQoKS5zZXR0aW5ncygpLm1lZGlhQ29udHJvbHNTY2FsZVdpdGhQYWdlWm9vbSgpKSB7Ci0g
ICAgICAgIERFQlVHX0xPRyhMT0dUSElTLCAiTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNvbnRyb2xz
RGVwZW5kUGFnZVNjYWxlRmFjdG9yIiwgImZvcmNlZCB0byBmYWxzZSBieSBTZXR0aW5ncyB2YWx1
ZSIpOworICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgIk1lZGlhRWxlbWVudDo6c2V0
TWVkaWFDb250cm9sc0RlcGVuZFBhZ2VTY2FsZUZhY3RvciIsICJmb3JjZWQgdG8gZmFsc2UgYnkg
U2V0dGluZ3MgdmFsdWUiKTsKICAgICAgICAgbV9tZWRpYUNvbnRyb2xzRGVwZW5kT25QYWdlU2Nh
bGVGYWN0b3IgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTcyNzIsMTQgKzcy
ODEsMTQgQEAgc2l6ZV90IEhUTUxNZWRpYUVsZW1lbnQ6Om1heGltdW1Tb3VyY2VCdQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmRQbGF5YmFjaygpCiB7Ci0gICAgTk9USUNFX0xPRyhM
T0dUSElTLCAicGF1c2VkID0gIiwgcGF1c2VkKCkpOworICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIsICJwYXVzZWQgPSAiLCBwYXVzZWQoKSk7CiAgICAgaWYgKCFwYXVzZWQoKSkKICAgICAgICAg
cGF1c2UoKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWVBdXRvcGxheWluZygp
CiB7Ci0gICAgTk9USUNFX0xPRyhMT0dUSElTLCAicGF1c2VkID0gIiwgcGF1c2VkKCkpOworICAg
IElORk9fTE9HKExPR0lERU5USUZJRVIsICJwYXVzZWQgPSAiLCBwYXVzZWQoKSk7CiAgICAgbV9h
dXRvcGxheWluZyA9IHRydWU7CiAKICAgICBpZiAoY2FuVHJhbnNpdGlvbkZyb21BdXRvcGxheVRv
UGxheSgpKQpAQCAtNzI4OCw3ICs3Mjk3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1
bWVBdXRvcGxheWluZwogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1heVJlc3VtZVBsYXliYWNr
KGJvb2wgc2hvdWxkUmVzdW1lKQogewotICAgIE5PVElDRV9MT0coTE9HVEhJUywgInBhdXNlZCA9
ICIsIHBhdXNlZCgpKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicGF1c2VkID0gIiwg
cGF1c2VkKCkpOwogICAgIGlmIChwYXVzZWQoKSAmJiBzaG91bGRSZXN1bWUpCiAgICAgICAgIHBs
YXkoKTsKIH0KQEAgLTczMDMsNyArNzMxMiw3IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVNlc3Npb25UaXQKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZWNlaXZlUmVtb3Rl
Q29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZSBjb21tYW5kLCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFy
Z3VtZW50KiBhcmd1bWVudCkKIHsKLSAgICBOT1RJQ0VfTE9HKExPR1RISVMsIHN0YXRpY19jYXN0
PGludD4oY29tbWFuZCkpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsIHN0YXRpY19jYXN0
PGludD4oY29tbWFuZCkpOwogCiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgcmVtb3RlQ29udHJv
bFVzZXJHZXN0dXJlKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgJmRvY3VtZW50KCkpOwogICAgIHN3
aXRjaCAoY29tbWFuZCkgewpAQCAtNzM1Niw3ICs3MzY1LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjpzaG91bGRPdmVycmlkZUJhYwogICAgIGlmICh0eXBlID09IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpFbnRlcmluZ0JhY2tncm91bmQpIHsKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKQogICAgICAgICBpZiAobV9pc1BsYXlpbmdUb1dpcmVsZXNzVGFyZ2V0KSB7Ci0gICAg
ICAgICAgICBOT1RJQ0VfTE9HKExPR1RISVMsICJyZXR1cm5pbmcgdHJ1ZSBiZWNhdXNlIG1faXNQ
bGF5aW5nVG9XaXJlbGVzc1RhcmdldCBpcyB0cnVlIik7CisgICAgICAgICAgICBJTkZPX0xPRyhM
T0dJREVOVElGSUVSLCAicmV0dXJuaW5nIHRydWUgYmVjYXVzZSBtX2lzUGxheWluZ1RvV2lyZWxl
c3NUYXJnZXQgaXMgdHJ1ZSIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
ICNlbmRpZgpAQCAtNzM2OSw3ICs3Mzc4LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpzaG91
bGRPdmVycmlkZUJhYwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6U3VzcGVuZGVkVW5kZXJMb2NrKSB7CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkKICAgICAgICAgaWYgKG1faXNQbGF5aW5nVG9XaXJlbGVzc1RhcmdldCkgewotICAgICAg
ICAgICAgTk9USUNFX0xPRyhMT0dUSElTLCAicmV0dXJuaW5nIHRydWUgYmVjYXVzZSBtX2lzUGxh
eWluZ1RvV2lyZWxlc3NUYXJnZXQgaXMgdHJ1ZSIpOworICAgICAgICAgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUiwgInJldHVybmluZyB0cnVlIGJlY2F1c2UgbV9pc1BsYXlpbmdUb1dpcmVsZXNz
VGFyZ2V0IGlzIHRydWUiKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAj
ZW5kaWYKQEAgLTc1MzAsMTQgKzc1MzksMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwdXJn
ZUJ1ZmZlcmVkRGF0YQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pc1BsYXlpbmdUb1dp
cmVsZXNzVGFyZ2V0KSB7Ci0gICAgICAgIE5PVElDRV9MT0coTE9HVEhJUywgImVhcmx5IHJldHVy
biBiZWNhdXNlIHBsYXlpbmcgdG8gd2lyZWxlc3MgdGFyZ2V0Iik7CisgICAgICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIsICJlYXJseSByZXR1cm4gYmVjYXVzZSBwbGF5aW5nIHRvIHdpcmVsZXNz
IHRhcmdldCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gVGhpcyBpcyBjYWxs
ZWQgdG8gcmVsaWV2ZSBtZW1vcnkgcHJlc3N1cmUuIFR1cm5pbmcgb2ZmIGJ1ZmZlcmluZyBjYXVz
ZXMgdGhlIG1lZGlhIHBsYXliYWNrCiAgICAgLy8gZGFlbW9uIHRvIHJlbGVhc2UgbWVtb3J5IGFz
c29jaWF0ZWQgd2l0aCBxdWV1ZWQtdXAgdmlkZW8gZnJhbWVzLgogICAgIC8vIFdlIHR1cm4gaXQg
YmFjayBvbiByaWdodCBhd2F5LCBidXQgbmV3IGZyYW1lcyB3b24ndCBnZXQgbG9hZGVkIHVubGVz
cyBwbGF5YmFjayBpcyByZXN1bWVkLgotICAgIE5PVElDRV9MT0coTE9HVEhJUywgInRvZ2dsaW5n
IGRhdGEgYnVmZmVyaW5nIik7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInRvZ2dsaW5n
IGRhdGEgYnVmZmVyaW5nIik7CiAgICAgc2V0U2hvdWxkQnVmZmVyRGF0YShmYWxzZSk7CiAgICAg
c2V0U2hvdWxkQnVmZmVyRGF0YSh0cnVlKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDIyMTY1OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04OTYsNyArODk2LDgg
QEAgcHJpdmF0ZToKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IFBBTDo6
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0K
LSAgICBjb25zdCBjaGFyKiBjbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiSFRNTE1l
ZGlhRWxlbWVudCI7IH0KKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiSFRNTE1lZGlhRWxlbWVudCI7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVu
dGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4obV9sb2dJZGVudGlmaWVyKTsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBj
b25zdCBmaW5hbDsKICNlbmRpZgogCkBAIC0xMTIxLDYgKzExMjIsNyBAQCBwcml2YXRlOgogCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmUHRyPFBBTDo6TG9nZ2VyPiBtX2xvZ2dl
cjsKKyAgICB1aW50NjRfdCBtX2xvZ0lkZW50aWZpZXI7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShN
RURJQV9DT05UUk9MU19TQ1JJUFQpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE3MDYpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0wOS0wNiAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXF1aXJlIExvZ2dpbmdIZWxw
ZXIgb3ZlcnJpZGVzIHRvIHByb3ZpZGUgaWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
TG9nZ2luZy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDE3LTA5
LTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMTY5NC4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9Mb2dnaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTG9nZ2luZy5jcHAJKHJldmlzaW9uIDIyMTY1OCkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Mb2dnaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAxLDggKzEwMSw5IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBjb25zdCBMb2dn
ZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9Ci0gICAg
Y29uc3QgY2hhciogY2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkxvZ2dpbmdUZXN0
IjsgfQorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJMb2dnaW5nVGVzdCI7IH0KICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gVGVzdENoYW5uZWwxOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRp
ZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+
KDEyMzQ1Njc4OSk7IH0KIAogcHJpdmF0ZToKIApAQCAtMTQxLDkgKzE0Miw5IEBAIFRFU1RfRihM
b2dnaW5nVGVzdCwgSW5pdGlhbGl6YXRpb24pCiAgICAgRVhQRUNUX0VRKFRlc3RDaGFubmVsMy5s
ZXZlbCwgV1RGTG9nTGV2ZWxFcnJvcik7CiAgICAgRVhQRUNUX0VRKFRlc3RDaGFubmVsNC5sZXZl
bCwgV1RGTG9nTGV2ZWxFcnJvcik7CiAKLSAgICBXVEZJbml0aWFsaXplTG9nQ2hhbm5lbFN0YXRl
c0Zyb21TdHJpbmcodGVzdExvZ0NoYW5uZWxzLCBsb2dDaGFubmVsQ291bnQsICJDaGFubmVsND0g
ICBkZWJ1ZywgQ2hhbm5lbDMgPSBpbmZvLENoYW5uZWwyPW5vdGljZSIpOworICAgIFdURkluaXRp
YWxpemVMb2dDaGFubmVsU3RhdGVzRnJvbVN0cmluZyh0ZXN0TG9nQ2hhbm5lbHMsIGxvZ0NoYW5u
ZWxDb3VudCwgIkNoYW5uZWw0PSAgIGRlYnVnLCBDaGFubmVsMyA9IGluZm8sQ2hhbm5lbDI9ZXJy
b3IiKTsKICAgICBFWFBFQ1RfRVEoVGVzdENoYW5uZWwxLmxldmVsLCBXVEZMb2dMZXZlbFdhcm5p
bmcpOwotICAgIEVYUEVDVF9FUShUZXN0Q2hhbm5lbDIubGV2ZWwsIFdURkxvZ0xldmVsTm90aWNl
KTsKKyAgICBFWFBFQ1RfRVEoVGVzdENoYW5uZWwyLmxldmVsLCBXVEZMb2dMZXZlbEVycm9yKTsK
ICAgICBFWFBFQ1RfRVEoVGVzdENoYW5uZWwzLmxldmVsLCBXVEZMb2dMZXZlbEluZm8pOwogICAg
IEVYUEVDVF9FUShUZXN0Q2hhbm5lbDQubGV2ZWwsIFdURkxvZ0xldmVsRGVidWcpOwogCkBAIC0y
ODQsMTQgKzI4NSwxMiBAQCBURVNUX0YoTG9nZ2luZ1Rlc3QsIExvZ2dlcikKICAgICBFWFBFQ1Rf
VFJVRShvdXRwdXQoKS5jb250YWlucygiWW91J3JlIHVzaW5nIGNvY29udXRzISIsIGZhbHNlKSk7
CiAgICAgbG9nZ2VyLT53YXJuaW5nKFRlc3RDaGFubmVsMSwgIllvdSdyZSB1c2luZyBjb2NvbnV0
cyEiKTsKICAgICBFWFBFQ1RfRVEoMHUsIG91dHB1dCgpLmxlbmd0aCgpKTsKLSAgICBsb2dnZXIt
Pm5vdGljZShUZXN0Q2hhbm5lbDEsICJZb3UncmUgdXNpbmcgY29jb251dHMhIik7Ci0gICAgRVhQ
RUNUX0VRKDB1LCBvdXRwdXQoKS5sZW5ndGgoKSk7CiAgICAgbG9nZ2VyLT5pbmZvKFRlc3RDaGFu
bmVsMSwgIllvdSdyZSB1c2luZyBjb2NvbnV0cyEiKTsKICAgICBFWFBFQ1RfRVEoMHUsIG91dHB1
dCgpLmxlbmd0aCgpKTsKICAgICBsb2dnZXItPmRlYnVnKFRlc3RDaGFubmVsMSwgIllvdSdyZSB1
c2luZyBjb2NvbnV0cyEiKTsKICAgICBFWFBFQ1RfRVEoMHUsIG91dHB1dCgpLmxlbmd0aCgpKTsK
IAotICAgIGxvZ2dlci0+ZXJyb3IoVGVzdENoYW5uZWwxLCBMb2dnZXI6Ok1ldGhvZEFuZFBvaW50
ZXIoIkxvZ2dpbmdUZXN0OjpMb2dnZXIiLCB0aGlzKSAsICI6IHRlc3Qgb3V0cHV0Iik7CisgICAg
bG9nZ2VyLT5lcnJvcihUZXN0Q2hhbm5lbDEsIExvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoIkxv
Z2dpbmdUZXN0OjpMb2dnZXIiLCB0aGlzKSAsICI6IHRlc3Qgb3V0cHV0Iik7CiAgICAgRVhQRUNU
X1RSVUUob3V0cHV0KCkuY29udGFpbnMoIkxvZ2dpbmdUZXN0OjpMb2dnZXIoIiwgZmFsc2UpKTsK
IAogICAgIGxvZ2dlci0+ZXJyb3IoVGVzdENoYW5uZWwxLCAiV2hhdCBpcyAiLCAxLCAiICsgIiAs
IDEyLjVGLCAiPyIpOwpAQCAtMzE3LDcgKzMxNiw2IEBAIFRFU1RfRihMb2dnaW5nVGVzdCwgTG9n
Z2VyKQogICAgIGxvZ2dlci0+c2V0RW5hYmxlZCh0aGlzLCBmYWxzZSk7CiAgICAgRVhQRUNUX0ZB
TFNFKGxvZ2dlci0+d2lsbExvZyhUZXN0Q2hhbm5lbDEsIFdURkxvZ0xldmVsRXJyb3IpKTsKICAg
ICBFWFBFQ1RfRkFMU0UobG9nZ2VyLT53aWxsTG9nKFRlc3RDaGFubmVsMSwgV1RGTG9nTGV2ZWxX
YXJuaW5nKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGxvZ2dlci0+d2lsbExvZyhUZXN0Q2hhbm5lbDEs
IFdURkxvZ0xldmVsTm90aWNlKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGxvZ2dlci0+d2lsbExvZyhU
ZXN0Q2hhbm5lbDEsIFdURkxvZ0xldmVsSW5mbykpOwogICAgIEVYUEVDVF9GQUxTRShsb2dnZXIt
PndpbGxMb2coVGVzdENoYW5uZWwxLCBXVEZMb2dMZXZlbERlYnVnKSk7CiAgICAgRVhQRUNUX0ZB
TFNFKGxvZ2dlci0+ZW5hYmxlZCgpKTsKQEAgLTM0MSwzNCArMzM5LDMxIEBAIFRFU1RfRihMb2dn
aW5nVGVzdCwgTG9nZ2VySGVscGVyKQogICAgIEVYUEVDVF9UUlVFKGxvZ2dlcigpLmVuYWJsZWQo
KSk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJMb2dnaW5nVGVzdDo6VGVzdEJvZHkoMHgiKTsKLSAgICBhcHBlbmRVbnNpZ25lZDY0QXNI
ZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpLCBidWlsZGVyKTsKKyAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIkxvZ2dpbmdUZXN0OjpUZXN0Qm9keSgiKTsKKyAgICBhcHBlbmRV
bnNpZ25lZDY0QXNIZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGxvZ0lkZW50aWZpZXIo
KSksIGJ1aWxkZXIpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSIpOwogICAgIFN0cmlu
ZyBzaWduYXR1cmUgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAKLSAgICBBTFdBWVNfTE9HKExPR1RI
SVMpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAgICAgRVhQRUNUX1RSVUUodGhp
cy0+b3V0cHV0KCkuY29udGFpbnMoc2lnbmF0dXJlLCBmYWxzZSkpOwogCi0gICAgQUxXQVlTX0xP
RyhMT0dUSElTLCAiV2VsY29tZSBiYWNrIiwgIiBteSBmcmllbmRzIiwgIiB0byB0aGUgc2hvdyIs
ICIgdGhhdCBuZXZlciBlbmRzIik7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiV2Vs
Y29tZSBiYWNrIiwgIiBteSBmcmllbmRzIiwgIiB0byB0aGUgc2hvdyIsICIgdGhhdCBuZXZlciBl
bmRzIik7CiAgICAgU3RyaW5nIHJlc3VsdCA9IHRoaXMtPm91dHB1dCgpOwogICAgIEVYUEVDVF9U
UlVFKHJlc3VsdC5jb250YWlucyhzaWduYXR1cmUsIGZhbHNlKSk7CiAgICAgRVhQRUNUX1RSVUUo
cmVzdWx0LmNvbnRhaW5zKCJ0byB0aGUgc2hvdyB0aGF0IG5ldmVyIiwgZmFsc2UpKTsKIAogICAg
IFdURlNldExvZ0NoYW5uZWxMZXZlbCgmVGVzdENoYW5uZWwxLCBXVEZMb2dMZXZlbFdhcm5pbmcp
OwogCi0gICAgRVJST1JfTE9HKExPR1RISVMsICJXZSdyZSBzbyBnbGFkIHlvdSBjb3VsZCBhdHRl
bmQiKTsKKyAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIldlJ3JlIHNvIGdsYWQgeW91IGNv
dWxkIGF0dGVuZCIpOwogICAgIEVYUEVDVF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJXZSdyZSBz
byBnbGFkIHlvdSBjb3VsZCBhdHRlbmQiLCBmYWxzZSkpOwogCi0gICAgV0FSTklOR19MT0coTE9H
VEhJUywgIkNvbWUgaW5zaWRlISAiLCAiQ29tZSBpbnNpZGUhIik7CisgICAgV0FSTklOR19MT0co
TE9HSURFTlRJRklFUiwgIkNvbWUgaW5zaWRlISAiLCAiQ29tZSBpbnNpZGUhIik7CiAgICAgRVhQ
RUNUX1RSVUUob3V0cHV0KCkuY29udGFpbnMoIkNvbWUgaW5zaWRlISBDb21lIGluc2lkZSEiLCBm
YWxzZSkpOwogCi0gICAgTk9USUNFX0xPRyhMT0dUSElTLCAiVGhlcmUgYmVoaW5kIGEgZ2xhc3Mg
aXMgYSByZWFsIGJsYWRlIG9mIGdyYXNzIik7Ci0gICAgRVhQRUNUX0VRKDB1LCBvdXRwdXQoKS5s
ZW5ndGgoKSk7Ci0KLSAgICBJTkZPX0xPRyhMT0dUSElTLCAiYmUgY2FyZWZ1bCBhcyB5b3UgcGFz
cy4iKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiYmUgY2FyZWZ1bCBhcyB5b3UgcGFz
cy4iKTsKICAgICBFWFBFQ1RfRVEoMHUsIG91dHB1dCgpLmxlbmd0aCgpKTsKIAotICAgIERFQlVH
X0xPRyhMT0dUSElTLCAiTW92ZSBhbG9uZyEgTW92ZSBhbG9uZyEiKTsKKyAgICBERUJVR19MT0co
TE9HSURFTlRJRklFUiwgIk1vdmUgYWxvbmchIE1vdmUgYWxvbmchIik7CiAgICAgRVhQRUNUX0VR
KDB1LCBvdXRwdXQoKS5sZW5ndGgoKSk7CiB9CiAKQEAgLTQwOCw3ICs0MDMsNyBAQCBURVNUX0Yo
TG9nZ2luZ1Rlc3QsIExvZ09ic2VydmVyKQogICAgIEVYUEVDVF9UUlVFKGxvZ2dlcigpLmVuYWJs
ZWQoKSk7CiAKICAgICBsb2dnZXIoKS5hZGRPYnNlcnZlcihvYnNlcnZlcik7Ci0gICAgQUxXQVlT
X0xPRyhMT0dUSElTLCAidGVzdGluZyAxLCAyLCAzIik7CisgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCAidGVzdGluZyAxLCAyLCAzIik7CiAgICAgRVhQRUNUX1RSVUUodGhpcy0+b3V0cHV0
KCkuY29udGFpbnMoInRlc3RpbmcgMSwgMiwgMyIsIGZhbHNlKSk7CiAgICAgRVhQRUNUX1RSVUUo
b2JzZXJ2ZXIubG9nKCkuY29udGFpbnMoInRlc3RpbmcgMSwgMiwgMyIsIGZhbHNlKSk7CiAgICAg
RVhQRUNUX1NUUkVRKG9ic2VydmVyLmNoYW5uZWwoKS5uYW1lLCBsb2dDaGFubmVsKCkubmFtZSk7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>