<?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>36874</bug_id>
          
          <creation_ts>2010-03-31 00:40:15 -0700</creation_ts>
          <short_desc>Cleanup RedirectScheduler</short_desc>
          <delta_ts>2010-03-31 16:22:35 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>mjs</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>206396</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-31 00:40:15 -0700</bug_when>
    <thetext>Looking at RedirectScheduler last night with othermaciej, it occurred to us that the psuedo-union ScheduleRedirection is really ugly.  Othermaciej asked me to clean up the class, so here it is in a less ugly form.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206398</commentid>
    <comment_count>1</comment_count>
      <attachid>52138</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-31 00:44:38 -0700</bug_when>
    <thetext>Created attachment 52138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206407</commentid>
    <comment_count>2</comment_count>
      <attachid>52138</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-03-31 01:29:39 -0700</bug_when>
    <thetext>Comment on attachment 52138
Patch

* Suggested renames:

- AbstractRedirect --&gt; ScheduledNavigation
- SimpleRedirect --&gt; ScheduledURLNavigation

* It may or may not be helpful to also add &quot;Scheduled&quot; back to the concrete classes too.

* Odd that locationChangePending is true for classes other than LocationChange. Also: even if the API on the scheduler is locationChangePending(), shouldn&apos;t the boolean method on an individual AbstractRedirect (or ScheduledNavigation) object be isLocationChange or countsAsLocationChange or something? It&apos;s only telling you about what it is, not what is pending.

That&apos;s my style comments. r- to consider those. I will have to do another pass to check behavior-preservingness of the refactoring (since the lines got moved around a lot, was hard to check that with a linear scan).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206414</commentid>
    <comment_count>3</comment_count>
      <attachid>52142</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-31 01:53:53 -0700</bug_when>
    <thetext>Created attachment 52142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206417</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-03-31 02:00:06 -0700</bug_when>
    <thetext>Attachment 52142 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/1621116</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206418</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-31 02:00:42 -0700</bug_when>
    <thetext>Attachment 52142 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1572099</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206423</commentid>
    <comment_count>6</comment_count>
      <attachid>52144</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-31 02:04:32 -0700</bug_when>
    <thetext>Created attachment 52144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206558</commentid>
    <comment_count>7</comment_count>
      <attachid>52144</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-03-31 10:01:46 -0700</bug_when>
    <thetext>Comment on attachment 52144
Patch

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; +        Cleanup RedirectScheduler
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=36874
&gt; +
&gt; +       Removed the nutty ScheduledRedirection struct in favor of a hierarchy

^^^ bad indentation

otherwise, this all looks good to me.  given the naming of the file, it seems
like it would be nice if the base interface were named ScheduledRedirect, but
I realize why you chose not to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206590</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-31 11:05:32 -0700</bug_when>
    <thetext>Yeah, the better solution is probably to rename the class.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206592</commentid>
    <comment_count>9</comment_count>
      <attachid>52188</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-31 11:08:12 -0700</bug_when>
    <thetext>Created attachment 52188
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206794</commentid>
    <comment_count>10</comment_count>
      <attachid>52188</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-31 16:22:29 -0700</bug_when>
    <thetext>Comment on attachment 52188
Patch for landing

Clearing flags on attachment: 52188

Committed r56875: &lt;http://trac.webkit.org/changeset/56875&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206795</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-31 16:22:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52138</attachid>
            <date>2010-03-31 00:44:38 -0700</date>
            <delta_ts>2010-03-31 01:53:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36874-20100331004436.patch</filename>
            <type>text/plain</type>
            <size>23336</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTU0YzA0ZC4uY2E2MjlmMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAxMC0wMy0zMSAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENsZWFudXAgUmVkaXJlY3RTY2hlZHVsZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2ODc0CisKKyAgICAgICAgUmVtb3ZlZCB0
aGUgbnV0dHkgU2NoZWR1bGVkUmVkaXJlY3Rpb24gc3RydWN0IGluIGZhdm9yIG9mIGEgaGllcmFy
Y2h5CisgICAgICAgIG9mIGNsYXNzZXMgdG8gcmVwcmVzZW50IHRoZSB2YXJpb3VzIGtpbmRzIG9m
IHNjaGVkdWxlZCByZWRpcmVjdHMuCisgICAgICAgIERvaW5nIHRoaXMgbGV0cyB1cyBnZXQgcmlk
IG9mIHRoZSBwc2V1ZG8gUlRUSSBzd2l0Y2ggc3RhdGVtZW50cyBvbgorICAgICAgICAidHlwZSIg
aW4gZmF2b3VyIG9mIGNhbGxpbmcgdmlydHVhbCBmdW5jdGlvbnMuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIGJlY2F1c2UgdGhpcyBjaGFuZ2Ugc2hvdWxkIGJlIEFQSSBpZGVudGljYWwgd2l0aCB0
aGUKKyAgICAgICAgZXhpc3RpbmcgUmVkaXJlY3RTY2hlZHVsZXIuCisKKyAgICAgICAgKiBsb2Fk
ZXIvUmVkaXJlY3RTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RSZWRp
cmVjdDo6QWJzdHJhY3RSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFJlZGly
ZWN0Ojp+QWJzdHJhY3RSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFJlZGly
ZWN0Ojpsb2NhdGlvbkNoYW5nZVBlbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RS
ZWRpcmVjdDo6ZGlkU2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RSZWRpcmVj
dDo6c2hvdWxkU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFJlZGlyZWN0
OjpkaWRTdGFydFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0UmVkaXJlY3Q6OmRp
ZFN0b3BUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFJlZGlyZWN0OjpkZWxheSk6
CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdFJlZGlyZWN0Ojpsb2NrSGlzdG9yeSk6CisgICAg
ICAgIChXZWJDb3JlOjpBYnN0cmFjdFJlZGlyZWN0Ojpsb2NrQmFja0ZvcndhcmRMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFic3RyYWN0UmVkaXJlY3Q6Ondhc0R1cmluZ0xvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlUmVkaXJlY3Q6OlNpbXBsZVJlZGlyZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZVJlZGlyZWN0OjpmaXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZVJl
ZGlyZWN0OjpkaWRTdGFydFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZVJlZGlyZWN0
OjpkaWRTdG9wVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlUmVkaXJlY3Q6OnVybCk6
CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVSZWRpcmVjdDo6cmVmZXJyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlUmVkaXJlY3Q6Ondhc1VzZXJHZXN0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlZGlyZWN0OjpSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdDo6bG9j
YXRpb25DaGFuZ2VQZW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0OjpkaWRTY2hl
ZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdDo6c2hvdWxkU3RhcnRUaW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbkNoYW5nZTo6TG9jYXRpb25DaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVmcmVzaDo6UmVmcmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpSZWZyZXNo
OjpmaXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlOYXZpZ2F0aW9uOjpIaXN0b3J5TmF2
aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5TmF2aWdhdGlvbjo6ZmlyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6Rm9ybVN1Ym1pc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9ybVN1Ym1pc3Npb246On5Gb3JtU3VibWlzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6ZmlyZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVj
dFNjaGVkdWxlcjo6cmVkaXJlY3RTY2hlZHVsZWREdXJpbmdMb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlZGlyZWN0U2NoZWR1bGVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVj
dFNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVj
dFNjaGVkdWxlcjo6bXVzdExvY2tCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6bG9jYXRpb25DaGFuZ2VQZW5kaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjp0aW1lckZpcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVsZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c3RhcnRUaW1lcik6CisgICAgICAgIChXZWJD
b3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6Y2FuY2VsKToKKyAgICAgICAgKiBsb2FkZXIvUmVkaXJl
Y3RTY2hlZHVsZXIuaDoKKwogMjAxMC0wMy0zMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1JlZGly
ZWN0U2NoZWR1bGVyLmNwcAppbmRleCA0YjQ0NDIyLi42Mzg1YzY5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvUmVk
aXJlY3RTY2hlZHVsZXIuY3BwCkBAIC00Nyw4NyArNDcsMTY5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RydWN0IFNjaGVkdWxlZFJlZGlyZWN0aW9uIDogTm9uY29weWFibGUgewotICAg
IGVudW0gVHlwZSB7IHJlZGlyZWN0aW9uLCBsb2NhdGlvbkNoYW5nZSwgaGlzdG9yeU5hdmlnYXRp
b24sIGZvcm1TdWJtaXNzaW9uIH07Ci0KLSAgICBjb25zdCBUeXBlIHR5cGU7Ci0gICAgY29uc3Qg
ZG91YmxlIGRlbGF5OwotICAgIGNvbnN0IFN0cmluZyB1cmw7Ci0gICAgY29uc3QgU3RyaW5nIHJl
ZmVycmVyOwotICAgIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVSZXF1ZXN0OwotICAgIGNv
bnN0IFJlZlB0cjxFdmVudD4gZXZlbnQ7Ci0gICAgY29uc3QgUmVmUHRyPEZvcm1TdGF0ZT4gZm9y
bVN0YXRlOwotICAgIGNvbnN0IGludCBoaXN0b3J5U3RlcHM7Ci0gICAgY29uc3QgYm9vbCBsb2Nr
SGlzdG9yeTsKLSAgICBjb25zdCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3Q7Ci0gICAgY29uc3Qg
Ym9vbCB3YXNVc2VyR2VzdHVyZTsKLSAgICBjb25zdCBib29sIHdhc1JlZnJlc2g7Ci0gICAgY29u
c3QgYm9vbCB3YXNEdXJpbmdMb2FkOwotICAgIGJvb2wgdG9sZENsaWVudDsKLQotICAgIFNjaGVk
dWxlZFJlZGlyZWN0aW9uKGRvdWJsZSBkZWxheSwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgbG9j
a0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSwg
Ym9vbCByZWZyZXNoKQotICAgICAgICA6IHR5cGUocmVkaXJlY3Rpb24pCi0gICAgICAgICwgZGVs
YXkoZGVsYXkpCi0gICAgICAgICwgdXJsKHVybCkKLSAgICAgICAgLCBoaXN0b3J5U3RlcHMoMCkK
LSAgICAgICAgLCBsb2NrSGlzdG9yeShsb2NrSGlzdG9yeSkKLSAgICAgICAgLCBsb2NrQmFja0Zv
cndhcmRMaXN0KGxvY2tCYWNrRm9yd2FyZExpc3QpCi0gICAgICAgICwgd2FzVXNlckdlc3R1cmUo
d2FzVXNlckdlc3R1cmUpCi0gICAgICAgICwgd2FzUmVmcmVzaChyZWZyZXNoKQotICAgICAgICAs
IHdhc0R1cmluZ0xvYWQoZmFsc2UpCi0gICAgICAgICwgdG9sZENsaWVudChmYWxzZSkKK2NsYXNz
IEFic3RyYWN0UmVkaXJlY3QgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIEFi
c3RyYWN0UmVkaXJlY3QoZG91YmxlIGRlbGF5LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tC
YWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzRHVyaW5nTG9hZCkKKyAgICAgICAgOiBtX2RlbGF5KGRl
bGF5KQorICAgICAgICAsIG1fbG9ja0hpc3RvcnkobG9ja0hpc3RvcnkpCisgICAgICAgICwgbV9s
b2NrQmFja0ZvcndhcmRMaXN0KGxvY2tCYWNrRm9yd2FyZExpc3QpCisgICAgICAgICwgbV93YXNE
dXJpbmdMb2FkKHdhc0R1cmluZ0xvYWQpCiAgICAgewotICAgICAgICBBU1NFUlQoIXVybC5pc0Vt
cHR5KCkpOwogICAgIH0KKyAgICB2aXJ0dWFsIH5BYnN0cmFjdFJlZGlyZWN0KCkgeyB9CiAKLSAg
ICBTY2hlZHVsZWRSZWRpcmVjdGlvbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBib29s
IHdhc1VzZXJHZXN0dXJlLCBib29sIHJlZnJlc2gsIGJvb2wgZHVyaW5nTG9hZCkKLSAgICAgICAg
OiB0eXBlKGxvY2F0aW9uQ2hhbmdlKQotICAgICAgICAsIGRlbGF5KDApCi0gICAgICAgICwgdXJs
KHVybCkKLSAgICAgICAgLCByZWZlcnJlcihyZWZlcnJlcikKLSAgICAgICAgLCBoaXN0b3J5U3Rl
cHMoMCkKLSAgICAgICAgLCBsb2NrSGlzdG9yeShsb2NrSGlzdG9yeSkKLSAgICAgICAgLCBsb2Nr
QmFja0ZvcndhcmRMaXN0KGxvY2tCYWNrRm9yd2FyZExpc3QpCi0gICAgICAgICwgd2FzVXNlckdl
c3R1cmUod2FzVXNlckdlc3R1cmUpCi0gICAgICAgICwgd2FzUmVmcmVzaChyZWZyZXNoKQotICAg
ICAgICAsIHdhc0R1cmluZ0xvYWQoZHVyaW5nTG9hZCkKLSAgICAgICAgLCB0b2xkQ2xpZW50KGZh
bHNlKQorICAgIHZpcnR1YWwgdm9pZCBmaXJlKEZyYW1lKikgPSAwOworCisgICAgdmlydHVhbCBi
b29sIGxvY2F0aW9uQ2hhbmdlUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkU2NoZWR1bGUoRnJhbWUqIGZyYW1lKQorICAgIHsKKyAgICAgICAgaWYg
KCFmcmFtZS0+bG9hZGVyKCktPmlzQ29tcGxldGUoKSkKKyAgICAgICAgICAgIGZyYW1lLT5sb2Fk
ZXIoKS0+Y29tcGxldGVkKCk7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIHNob3VsZFN0YXJ0
VGltZXIoRnJhbWUqKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0
VGltZXIoRnJhbWUqLCBUaW1lcjxSZWRpcmVjdFNjaGVkdWxlcj4qKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkU3RvcFRpbWVyKEZyYW1lKiwgYm9vbCAvKiBuZXdMb2FkSW5Qcm9ncmVzcyAqLykg
eyB9CisKKyAgICBkb3VibGUgZGVsYXkoKSBjb25zdCB7IHJldHVybiBtX2RlbGF5OyB9CisgICAg
Ym9vbCBsb2NrSGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9ja0hpc3Rvcnk7IH0KKyAgICBi
b29sIGxvY2tCYWNrRm9yd2FyZExpc3QoKSBjb25zdCB7IHJldHVybiBtX2xvY2tCYWNrRm9yd2Fy
ZExpc3Q7IH0KKyAgICBib29sIHdhc0R1cmluZ0xvYWQoKSBjb25zdCB7IHJldHVybiBtX3dhc0R1
cmluZ0xvYWQ7IH0KKworcHJpdmF0ZToKKyAgICBkb3VibGUgbV9kZWxheTsKKyAgICBib29sIG1f
bG9ja0hpc3Rvcnk7CisgICAgYm9vbCBtX2xvY2tCYWNrRm9yd2FyZExpc3Q7CisgICAgYm9vbCBt
X3dhc0R1cmluZ0xvYWQ7Cit9OworCitjbGFzcyBTaW1wbGVSZWRpcmVjdCA6IHB1YmxpYyBBYnN0
cmFjdFJlZGlyZWN0IHsKK3B1YmxpYzoKKyAgICBTaW1wbGVSZWRpcmVjdChkb3VibGUgZGVsYXks
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxvY2tIaXN0
b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzVXNlckdlc3R1cmUsIGJvb2wg
ZHVyaW5nTG9hZCkKKyAgICAgICAgOiBBYnN0cmFjdFJlZGlyZWN0KGRlbGF5LCBsb2NrSGlzdG9y
eSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkKKyAgICAgICAgLCBtX3VybCh1cmwp
CisgICAgICAgICwgbV9yZWZlcnJlcihyZWZlcnJlcikKKyAgICAgICAgLCBtX3dhc1VzZXJHZXN0
dXJlKHdhc1VzZXJHZXN0dXJlKQorICAgICAgICAsIG1faGF2ZVRvbGRDbGllbnQoZmFsc2UpCisg
ICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBmaXJlKEZyYW1lKiBmcmFtZSkKKyAgICB7
CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2hhbmdlTG9jYXRpb24oS1VSTChQYXJzZWRVUkxT
dHJpbmcsIG1fdXJsKSwgbV9yZWZlcnJlciwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJk
TGlzdCgpLCBtX3dhc1VzZXJHZXN0dXJlLCBmYWxzZSk7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIGRpZFN0YXJ0VGltZXIoRnJhbWUqIGZyYW1lLCBUaW1lcjxSZWRpcmVjdFNjaGVkdWxlcj4q
IHRpbWVyKQorICAgIHsKKyAgICAgICAgaWYgKG1faGF2ZVRvbGRDbGllbnQpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIG1faGF2ZVRvbGRDbGllbnQgPSB0cnVlOworICAgICAgICBmcmFt
ZS0+bG9hZGVyKCktPmNsaWVudFJlZGlyZWN0ZWQoS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1fdXJs
KSwgZGVsYXkoKSwgY3VycmVudFRpbWUoKSArIHRpbWVyLT5uZXh0RmlyZUludGVydmFsKCksIGxv
Y2tCYWNrRm9yd2FyZExpc3QoKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BU
aW1lcihGcmFtZSogZnJhbWUsIGJvb2wgbmV3TG9hZEluUHJvZ3Jlc3MpCisgICAgeworICAgICAg
ICBpZiAoIW1faGF2ZVRvbGRDbGllbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZy
YW1lLT5sb2FkZXIoKS0+Y2xpZW50UmVkaXJlY3RDYW5jZWxsZWRPckZpbmlzaGVkKG5ld0xvYWRJ
blByb2dyZXNzKTsKKyAgICB9CisKKyAgICBTdHJpbmcgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91
cmw7IH0KKyAgICBTdHJpbmcgcmVmZXJyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlZmVycmVyOyB9
CisgICAgYm9vbCB3YXNVc2VyR2VzdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzVXNlckdlc3R1
cmU7IH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV91cmw7CisgICAgU3RyaW5nIG1fcmVmZXJy
ZXI7CisgICAgYm9vbCBtX3dhc1VzZXJHZXN0dXJlOworICAgIGJvb2wgbV9oYXZlVG9sZENsaWVu
dDsKK307CisKK2NsYXNzIFJlZGlyZWN0IDogcHVibGljIFNpbXBsZVJlZGlyZWN0IHsKK3B1Ymxp
YzoKKyAgICBSZWRpcmVjdChkb3VibGUgZGVsYXksIGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGxv
Y2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzVXNlckdlc3R1cmUp
CisgICAgICAgIDogU2ltcGxlUmVkaXJlY3QoZGVsYXksIHVybCwgU3RyaW5nKCksIGxvY2tIaXN0
b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCB3YXNVc2VyR2VzdHVyZSwgZmFsc2UpIHsgfQorCisg
ICAgdmlydHVhbCBib29sIGxvY2F0aW9uQ2hhbmdlUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisKKyAgICAvLyBUaGlzIGlzIHNsaWdodGx5IHdvbmt5LCBidXQgd2Ugb3ZlcnJpZGUg
ZGlkU2NoZWR1bGUgaGVyZSBiZWNhdXNlCisgICAgLy8gc2NoZWR1bGluZyBhIFJlZGlyZWN0IGRv
ZXNuJ3QgY29tcGxldGUgdGhlIGN1cnJlbnQgbG9hZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2No
ZWR1bGUoRnJhbWUqKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdGFydFRpbWVyKEZy
YW1lKiBmcmFtZSkgeyByZXR1cm4gZnJhbWUtPmxvYWRlcigpLT5hbGxBbmNlc3RvcnNBcmVDb21w
bGV0ZSgpOyB9Cit9OworCitjbGFzcyBMb2NhdGlvbkNoYW5nZSA6IHB1YmxpYyBTaW1wbGVSZWRp
cmVjdCB7CitwdWJsaWM6CisgICAgTG9jYXRpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3
YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSwgYm9vbCBkdXJpbmdMb2FkKQorICAgICAgICA6
IFNpbXBsZVJlZGlyZWN0KDAuMCwgdXJsLCByZWZlcnJlciwgbG9ja0hpc3RvcnksIGxvY2tCYWNr
Rm9yd2FyZExpc3QsIHdhc1VzZXJHZXN0dXJlLCBkdXJpbmdMb2FkKSB7IH0KK307CisKK2NsYXNz
IFJlZnJlc2ggOiBwdWJsaWMgU2ltcGxlUmVkaXJlY3QgeworcHVibGljOgorICAgIFJlZnJlc2go
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgd2FzVXNlckdl
c3R1cmUpCisgICAgICAgIDogU2ltcGxlUmVkaXJlY3QoMC4wLCB1cmwsIHJlZmVycmVyLCB0cnVl
LCB0cnVlLCB3YXNVc2VyR2VzdHVyZSwgZmFsc2UpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGZp
cmUoRnJhbWUqIGZyYW1lKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCF1cmwuaXNFbXB0eSgpKTsK
KyAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2NhdGlvbihLVVJMKFBhcnNlZFVSTFN0
cmluZywgdXJsKCkpLCByZWZlcnJlcigpLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRM
aXN0KCksIHdhc1VzZXJHZXN0dXJlKCksIHRydWUpOwogICAgIH0KK307CiAKLSAgICBleHBsaWNp
dCBTY2hlZHVsZWRSZWRpcmVjdGlvbihpbnQgaGlzdG9yeU5hdmlnYXRpb25TdGVwcykKLSAgICAg
ICAgOiB0eXBlKGhpc3RvcnlOYXZpZ2F0aW9uKQotICAgICAgICAsIGRlbGF5KDApCi0gICAgICAg
ICwgaGlzdG9yeVN0ZXBzKGhpc3RvcnlOYXZpZ2F0aW9uU3RlcHMpCi0gICAgICAgICwgbG9ja0hp
c3RvcnkoZmFsc2UpCi0gICAgICAgICwgbG9ja0JhY2tGb3J3YXJkTGlzdChmYWxzZSkKLSAgICAg
ICAgLCB3YXNVc2VyR2VzdHVyZShmYWxzZSkKLSAgICAgICAgLCB3YXNSZWZyZXNoKGZhbHNlKQot
ICAgICAgICAsIHdhc0R1cmluZ0xvYWQoZmFsc2UpCi0gICAgICAgICwgdG9sZENsaWVudChmYWxz
ZSkKK2NsYXNzIEhpc3RvcnlOYXZpZ2F0aW9uIDogcHVibGljIEFic3RyYWN0UmVkaXJlY3Qgewor
cHVibGljOgorICAgIGV4cGxpY2l0IEhpc3RvcnlOYXZpZ2F0aW9uKGludCBoaXN0b3J5U3RlcHMp
IDogQWJzdHJhY3RSZWRpcmVjdCgwLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSwgbV9oaXN0b3J5U3Rl
cHMoaGlzdG9yeVN0ZXBzKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBmaXJlKEZyYW1lKiBmcmFt
ZSkKICAgICB7CisgICAgICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7
CisgICAgICAgIGlmICghbV9oaXN0b3J5U3RlcHMpIHsKKyAgICAgICAgICAgIC8vIFNwZWNpYWwg
Y2FzZSBmb3IgZ28oMCkgZnJvbSBhIGZyYW1lIC0+IHJlbG9hZCBvbmx5IHRoZSBmcmFtZQorICAg
ICAgICAgICAgbG9hZGVyLT51cmxTZWxlY3RlZChsb2FkZXItPnVybCgpLCAiIiwgMCwgbG9ja0hp
c3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCBmYWxzZSwgU2VuZFJlZmVycmVyKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBnbyhpIT0wKSBmcm9tIGEg
ZnJhbWUgbmF2aWdhdGVzIGludG8gdGhlIGhpc3Rvcnkgb2YgdGhlIGZyYW1lIG9ubHksCisgICAg
ICAgIC8vIGluIGJvdGggSUUgYW5kIE5TIChidXQgbm90IGluIE1vemlsbGEpLiBXZSBjYW4ndCBl
YXNpbHkgZG8gdGhhdC4KKyAgICAgICAgZnJhbWUtPnBhZ2UoKS0+Z29CYWNrT3JGb3J3YXJkKG1f
aGlzdG9yeVN0ZXBzKTsKICAgICB9CiAKLSAgICBTY2hlZHVsZWRSZWRpcmVjdGlvbihjb25zdCBG
cmFtZUxvYWRSZXF1ZXN0JiBmcmFtZVJlcXVlc3QsCi0gICAgICAgICAgICBib29sIGxvY2tIaXN0
b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBQ
YXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLAotICAgICAgICAgICAgYm9vbCBkdXJpbmdM
b2FkKQotICAgICAgICA6IHR5cGUoZm9ybVN1Ym1pc3Npb24pCi0gICAgICAgICwgZGVsYXkoMCkK
LSAgICAgICAgLCBmcmFtZVJlcXVlc3QoZnJhbWVSZXF1ZXN0KQotICAgICAgICAsIGV2ZW50KGV2
ZW50KQotICAgICAgICAsIGZvcm1TdGF0ZShmb3JtU3RhdGUpCi0gICAgICAgICwgaGlzdG9yeVN0
ZXBzKDApCi0gICAgICAgICwgbG9ja0hpc3RvcnkobG9ja0hpc3RvcnkpCi0gICAgICAgICwgbG9j
a0JhY2tGb3J3YXJkTGlzdChsb2NrQmFja0ZvcndhcmRMaXN0KQotICAgICAgICAsIHdhc1VzZXJH
ZXN0dXJlKGZhbHNlKQotICAgICAgICAsIHdhc1JlZnJlc2goZmFsc2UpCi0gICAgICAgICwgd2Fz
RHVyaW5nTG9hZChkdXJpbmdMb2FkKQotICAgICAgICAsIHRvbGRDbGllbnQoZmFsc2UpCitwcml2
YXRlOgorICAgIGludCBtX2hpc3RvcnlTdGVwczsKK307CisKK2NsYXNzIEZvcm1TdWJtaXNzaW9u
IDogcHVibGljIEFic3RyYWN0UmVkaXJlY3QgeworcHVibGljOgorICAgIEZvcm1TdWJtaXNzaW9u
KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lUmVxdWVzdCwgYm9vbCBsb2NrSGlzdG9yeSwg
Ym9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgUGFzc1Jl
ZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgYm9vbCBkdXJpbmdMb2FkKQorICAgICAgICA6IEFi
c3RyYWN0UmVkaXJlY3QoMCwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmlu
Z0xvYWQpCisgICAgICAgICwgbV9mcmFtZVJlcXVlc3QoZnJhbWVSZXF1ZXN0KQorICAgICAgICAs
IG1fZXZlbnQoZXZlbnQpCisgICAgICAgICwgbV9mb3JtU3RhdGUoZm9ybVN0YXRlKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKCFmcmFtZVJlcXVlc3QuaXNFbXB0eSgpKTsKLSAgICAgICAgQVNTRVJU
KHRoaXMtPmZvcm1TdGF0ZSk7CisgICAgICAgIEFTU0VSVChtX2Zvcm1TdGF0ZSk7CiAgICAgfQor
ICAgIHZpcnR1YWwgfkZvcm1TdWJtaXNzaW9uKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZmly
ZShGcmFtZSogZnJhbWUpCisgICAgeworICAgICAgICAvLyBUaGUgc3VibWl0Rm9ybSBmdW5jdGlv
biB3aWxsIGZpbmQgYSB0YXJnZXQgZnJhbWUgYmVmb3JlIHVzaW5nIHRoZSByZWRpcmVjdGlvbiB0
aW1lci4KKyAgICAgICAgLy8gTm93IHRoYXQgdGhlIHRpbWVyIGhhcyBmaXJlZCwgd2UgbmVlZCB0
byByZXBlYXQgdGhlIHNlY3VyaXR5IGNoZWNrIHdoaWNoIG5vcm1hbGx5IGlzIGRvbmUgd2hlbgor
ICAgICAgICAvLyBzZWxlY3RpbmcgYSB0YXJnZXQsIGluIGNhc2UgY29uZGl0aW9ucyBoYXZlIGNo
YW5nZWQuIE90aGVyIGNvZGUgcGF0aHMgYXZvaWQgdGhpcyBieSB0YXJnZXRpbmcKKyAgICAgICAg
Ly8gd2l0aG91dCBsZWF2aW5nIGEgdGltZSB3aW5kb3cuIElmIHdlIGZhaWwgdGhlIGNoZWNrIGp1
c3Qgc2lsZW50bHkgZHJvcCB0aGUgZm9ybSBzdWJtaXNzaW9uLgorICAgICAgICBpZiAoIW1fZm9y
bVN0YXRlLT5zb3VyY2VGcmFtZSgpLT5sb2FkZXIoKS0+c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGZy
YW1lKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5sb2Fk
RnJhbWVSZXF1ZXN0KG1fZnJhbWVSZXF1ZXN0LCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0Zvcndh
cmRMaXN0KCksIG1fZXZlbnQsIG1fZm9ybVN0YXRlLCBTZW5kUmVmZXJyZXIpOworICAgIH0KKwor
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZGlkU3RhcnRUaW1lcj8gSXQgd291bGQgbWFrZSBzZW5z
ZSB0byByZXBvcnQgZm9ybQorICAgIC8vIHN1Ym1pc3Npb25zIGFzIGNsaWVudCByZWRpcmVjdHMg
dG9vLiBCdXQgd2UgZGlkbid0IGRvIHRoYXQgaW4gdGhlIHBhc3QKKyAgICAvLyB3aGVuIGZvcm0g
c3VibWlzc2lvbiB1c2VkIGEgc2VwYXJhdGUgZGVsYXkgbWVjaGFuaXNtLCBzbyBkb2luZyBpdCB3
aWxsCisgICAgLy8gYmUgYSBiZWhhdmlvciBjaGFuZ2UuCisKK3ByaXZhdGU6CisgICAgY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCBtX2ZyYW1lUmVxdWVzdDsKKyAgICBjb25zdCBSZWZQdHI8RXZlbnQ+
IG1fZXZlbnQ7CisgICAgY29uc3QgUmVmUHRyPEZvcm1TdGF0ZT4gbV9mb3JtU3RhdGU7CiB9Owog
CiBSZWRpcmVjdFNjaGVkdWxlcjo6UmVkaXJlY3RTY2hlZHVsZXIoRnJhbWUqIGZyYW1lKQpAQCAt
MTQyLDI5ICsyMjQsMjcgQEAgUmVkaXJlY3RTY2hlZHVsZXI6On5SZWRpcmVjdFNjaGVkdWxlcigp
CiAKIGJvb2wgUmVkaXJlY3RTY2hlZHVsZXI6OnJlZGlyZWN0U2NoZWR1bGVkRHVyaW5nTG9hZCgp
CiB7Ci0gICAgcmV0dXJuIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24gJiYgbV9zY2hlZHVsZWRSZWRp
cmVjdGlvbi0+d2FzRHVyaW5nTG9hZDsKKyAgICByZXR1cm4gbV9yZWRpcmVjdCAmJiBtX3JlZGly
ZWN0LT53YXNEdXJpbmdMb2FkKCk7CiB9CiAKIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OmNsZWFy
KCkKIHsKICAgICBtX3RpbWVyLnN0b3AoKTsKLSAgICBtX3NjaGVkdWxlZFJlZGlyZWN0aW9uLmNs
ZWFyKCk7CisgICAgbV9yZWRpcmVjdC5jbGVhcigpOwogfQogCiB2b2lkIFJlZGlyZWN0U2NoZWR1
bGVyOjpzY2hlZHVsZVJlZGlyZWN0KGRvdWJsZSBkZWxheSwgY29uc3QgU3RyaW5nJiB1cmwpCiB7
Ci0gICAgaWYgKGRlbGF5IDwgMCB8fCBkZWxheSA+IElOVF9NQVggLyAxMDAwKQotICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIAogICAgIGlmICghbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1
cm47Ci0KKyAgICBpZiAoZGVsYXkgPCAwIHx8IGRlbGF5ID4gSU5UX01BWCAvIDEwMDApCisgICAg
ICAgIHJldHVybjsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gV2Ugd2FudCBhIG5ldyBoaXN0b3J5IGl0ZW0gaWYgdGhlIHJlZnJlc2ggdGltZW91dCBp
cyA+IDEgc2Vjb25kLgotICAgIGlmICghbV9zY2hlZHVsZWRSZWRpcmVjdGlvbiB8fCBkZWxheSA8
PSBtX3NjaGVkdWxlZFJlZGlyZWN0aW9uLT5kZWxheSkKLSAgICAgICAgc2NoZWR1bGUobmV3IFNj
aGVkdWxlZFJlZGlyZWN0aW9uKGRlbGF5LCB1cmwsIHRydWUsIGRlbGF5IDw9IDEsIGZhbHNlLCBm
YWxzZSkpOworICAgIGlmICghbV9yZWRpcmVjdCB8fCBkZWxheSA8PSBtX3JlZGlyZWN0LT5kZWxh
eSgpKQorICAgICAgICBzY2hlZHVsZShuZXcgUmVkaXJlY3QoZGVsYXksIHVybCwgdHJ1ZSwgZGVs
YXkgPD0gMSwgZmFsc2UpKTsKIH0KIAogYm9vbCBSZWRpcmVjdFNjaGVkdWxlcjo6bXVzdExvY2tC
YWNrRm9yd2FyZExpc3QoRnJhbWUqIHRhcmdldEZyYW1lKQpAQCAtMTcyLDcgKzI1Miw3IEBAIGJv
b2wgUmVkaXJlY3RTY2hlZHVsZXI6Om11c3RMb2NrQmFja0ZvcndhcmRMaXN0KEZyYW1lKiB0YXJn
ZXRGcmFtZSkKICAgICAvLyBOYXZpZ2F0aW9uIG9mIGEgc3ViZnJhbWUgZHVyaW5nIGxvYWRpbmcg
b2YgYW4gYW5jZXN0b3IgZnJhbWUgZG9lcyBub3QgY3JlYXRlIGEgbmV3IGJhY2svZm9yd2FyZCBp
dGVtLgogICAgIC8vIFRoZSBkZWZpbml0aW9uIG9mICJkdXJpbmcgbG9hZCIgaXMgYW55IHRpbWUg
YmVmb3JlIGFsbCBoYW5kbGVycyBmb3IgdGhlIGxvYWQgZXZlbnQgaGF2ZSBiZWVuIHJ1bi4KICAg
ICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTU3IGZv
ciB0aGUgb3JpZ2luYWwgbW90aXZhdGlvbiBmb3IgdGhpcy4KLSAgICAKKwogICAgIGZvciAoRnJh
bWUqIGFuY2VzdG9yID0gdGFyZ2V0RnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7IGFuY2VzdG9yOyBh
bmNlc3RvciA9IGFuY2VzdG9yLT50cmVlKCktPnBhcmVudCgpKSB7CiAgICAgICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IGFuY2VzdG9yLT5kb2N1bWVudCgpOwogICAgICAgICBpZiAoIWFuY2VzdG9y
LT5sb2FkZXIoKS0+aXNDb21wbGV0ZSgpIHx8IChkb2N1bWVudCAmJiBkb2N1bWVudC0+cHJvY2Vz
c2luZ0xvYWRFdmVudCgpKSkKQEAgLTE4NSw3ICsyNjUsNiBAQCB2b2lkIFJlZGlyZWN0U2NoZWR1
bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmCiB7CiAgICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVybjsKLQogICAg
IGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTIwNSw3ICsyODQsNyBA
QCB2b2lkIFJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgLy8gVGhpcyBtYXkgaGFwcGVuIHdoZW4gYSBm
cmFtZSBjaGFuZ2VzIHRoZSBsb2NhdGlvbiBvZiBhbm90aGVyIGZyYW1lLgogICAgIGJvb2wgZHVy
aW5nTG9hZCA9ICFsb2FkZXItPmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpOwogCi0g
ICAgc2NoZWR1bGUobmV3IFNjaGVkdWxlZFJlZGlyZWN0aW9uKHVybCwgcmVmZXJyZXIsIGxvY2tI
aXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCB3YXNVc2VyR2VzdHVyZSwgZmFsc2UsIGR1cmlu
Z0xvYWQpKTsKKyAgICBzY2hlZHVsZShuZXcgTG9jYXRpb25DaGFuZ2UodXJsLCByZWZlcnJlciwg
bG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHdhc1VzZXJHZXN0dXJlLCBkdXJpbmdM
b2FkKSk7CiB9CiAKIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Np
b24oY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVSZXF1ZXN0LApAQCAtMjI3LDM3ICszMDYs
MjUgQEAgdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVGb3JtU3VibWlzc2lvbihjb25z
dCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZVJlcXUKIAogICAgIGJvb2wgbG9ja0JhY2tGb3J3YXJk
TGlzdCA9IG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KG1fZnJhbWUpIHx8IChmb3JtU3RhdGUtPmZv
cm1TdWJtaXNzaW9uVHJpZ2dlcigpID09IFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCAmJiBtX2ZyYW1l
LT50cmVlKCktPnBhcmVudCgpKTsKIAotICAgIHNjaGVkdWxlKG5ldyBTY2hlZHVsZWRSZWRpcmVj
dGlvbihmcmFtZVJlcXVlc3QsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBldmVu
dCwgZm9ybVN0YXRlLCBkdXJpbmdMb2FkKSk7CisgICAgc2NoZWR1bGUobmV3IEZvcm1TdWJtaXNz
aW9uKGZyYW1lUmVxdWVzdCwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGV2ZW50
LCBmb3JtU3RhdGUsIGR1cmluZ0xvYWQpKTsKIH0KIAogdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6
c2NoZWR1bGVSZWZyZXNoKGJvb2wgd2FzVXNlckdlc3R1cmUpCiB7CiAgICAgaWYgKCFtX2ZyYW1l
LT5wYWdlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKICAgICBjb25zdCBLVVJMJiB1cmwgPSBt
X2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7Ci0KICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgc2NoZWR1bGUobmV3IFNjaGVkdWxlZFJlZGlyZWN0aW9uKHVybC5z
dHJpbmcoKSwgbV9mcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSwgdHJ1ZSwgdHJ1
ZSwgd2FzVXNlckdlc3R1cmUsIHRydWUsIGZhbHNlKSk7CisgICAgc2NoZWR1bGUobmV3IFJlZnJl
c2godXJsLnN0cmluZygpLCBtX2ZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLCB3
YXNVc2VyR2VzdHVyZSkpOwogfQogCiBib29sIFJlZGlyZWN0U2NoZWR1bGVyOjpsb2NhdGlvbkNo
YW5nZVBlbmRpbmcoKQogewotICAgIGlmICghbV9zY2hlZHVsZWRSZWRpcmVjdGlvbikKKyAgICBp
ZiAoIW1fcmVkaXJlY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN3aXRjaCAobV9z
Y2hlZHVsZWRSZWRpcmVjdGlvbi0+dHlwZSkgewotICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGly
ZWN0aW9uOjpyZWRpcmVjdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
Y2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6aGlzdG9yeU5hdmlnYXRpb246Ci0gICAgICAgIGNh
c2UgU2NoZWR1bGVkUmVkaXJlY3Rpb246OmxvY2F0aW9uQ2hhbmdlOgotICAgICAgICBjYXNlIFNj
aGVkdWxlZFJlZGlyZWN0aW9uOjpmb3JtU3VibWlzc2lvbjoKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIG1fcmVkaXJlY3QtPmxvY2F0aW9uQ2hhbmdlUGVuZGluZygpOwogfQogCiB2
b2lkIFJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGludCBzdGVw
cykKQEAgLTI4NCwxMTkgKzM1MSw2MSBAQCB2b2lkIFJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVs
ZUhpc3RvcnlOYXZpZ2F0aW9uKGludCBzdGVwcykKICNlbmRpZgogICAgIAogICAgIC8vIEluIGFs
bCBvdGhlciBjYXNlcywgc2NoZWR1bGUgdGhlIGhpc3RvcnkgdHJhdmVyc2FsIHRvIG9jY3VyIGFz
eW5jaHJvbm91c2x5LgotICAgIHNjaGVkdWxlKG5ldyBTY2hlZHVsZWRSZWRpcmVjdGlvbihzdGVw
cykpOworICAgIHNjaGVkdWxlKG5ldyBIaXN0b3J5TmF2aWdhdGlvbihzdGVwcykpOwogfQogCiB2
b2lkIFJlZGlyZWN0U2NoZWR1bGVyOjp0aW1lckZpcmVkKFRpbWVyPFJlZGlyZWN0U2NoZWR1bGVy
PiopCiB7CiAgICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVybjsKLQogICAg
IGlmIChtX2ZyYW1lLT5wYWdlKCktPmRlZmVyc0xvYWRpbmcoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgT3duUHRyPFNjaGVkdWxlZFJlZGlyZWN0aW9uPiByZWRpcmVjdGlvbihtX3NjaGVkdWxl
ZFJlZGlyZWN0aW9uLnJlbGVhc2UoKSk7Ci0gICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9IG1fZnJh
bWUtPmxvYWRlcigpOwotCi0gICAgc3dpdGNoIChyZWRpcmVjdGlvbi0+dHlwZSkgewotICAgICAg
ICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpyZWRpcmVjdGlvbjoKLSAgICAgICAgY2FzZSBT
Y2hlZHVsZWRSZWRpcmVjdGlvbjo6bG9jYXRpb25DaGFuZ2U6Ci0gICAgICAgICAgICBsb2FkZXIt
PmNoYW5nZUxvY2F0aW9uKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCByZWRpcmVjdGlvbi0+dXJsKSwg
cmVkaXJlY3Rpb24tPnJlZmVycmVyLAotICAgICAgICAgICAgICAgIHJlZGlyZWN0aW9uLT5sb2Nr
SGlzdG9yeSwgcmVkaXJlY3Rpb24tPmxvY2tCYWNrRm9yd2FyZExpc3QsIHJlZGlyZWN0aW9uLT53
YXNVc2VyR2VzdHVyZSwgcmVkaXJlY3Rpb24tPndhc1JlZnJlc2gpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpoaXN0b3J5TmF2aWdhdGlv
bjoKLSAgICAgICAgICAgIGlmIChyZWRpcmVjdGlvbi0+aGlzdG9yeVN0ZXBzID09IDApIHsKLSAg
ICAgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGdvKDApIGZyb20gYSBmcmFtZSAtPiBy
ZWxvYWQgb25seSB0aGUgZnJhbWUKLSAgICAgICAgICAgICAgICBsb2FkZXItPnVybFNlbGVjdGVk
KGxvYWRlci0+dXJsKCksICIiLCAwLCByZWRpcmVjdGlvbi0+bG9ja0hpc3RvcnksIHJlZGlyZWN0
aW9uLT5sb2NrQmFja0ZvcndhcmRMaXN0LCByZWRpcmVjdGlvbi0+d2FzVXNlckdlc3R1cmUsIFNl
bmRSZWZlcnJlcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgLy8gZ28oaSE9MCkgZnJvbSBhIGZyYW1lIG5hdmlnYXRlcyBpbnRvIHRoZSBoaXN0
b3J5IG9mIHRoZSBmcmFtZSBvbmx5LAotICAgICAgICAgICAgLy8gaW4gYm90aCBJRSBhbmQgTlMg
KGJ1dCBub3QgaW4gTW96aWxsYSkuIFdlIGNhbid0IGVhc2lseSBkbyB0aGF0LgotICAgICAgICAg
ICAgbV9mcmFtZS0+cGFnZSgpLT5nb0JhY2tPckZvcndhcmQocmVkaXJlY3Rpb24tPmhpc3RvcnlT
dGVwcyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJl
Y3Rpb246OmZvcm1TdWJtaXNzaW9uOgotICAgICAgICAgICAgLy8gVGhlIHN1Ym1pdEZvcm0gZnVu
Y3Rpb24gd2lsbCBmaW5kIGEgdGFyZ2V0IGZyYW1lIGJlZm9yZSB1c2luZyB0aGUgcmVkaXJlY3Rp
b24gdGltZXIuCi0gICAgICAgICAgICAvLyBOb3cgdGhhdCB0aGUgdGltZXIgaGFzIGZpcmVkLCB3
ZSBuZWVkIHRvIHJlcGVhdCB0aGUgc2VjdXJpdHkgY2hlY2sgd2hpY2ggbm9ybWFsbHkgaXMgZG9u
ZSB3aGVuCi0gICAgICAgICAgICAvLyBzZWxlY3RpbmcgYSB0YXJnZXQsIGluIGNhc2UgY29uZGl0
aW9ucyBoYXZlIGNoYW5nZWQuIE90aGVyIGNvZGUgcGF0aHMgYXZvaWQgdGhpcyBieSB0YXJnZXRp
bmcKLSAgICAgICAgICAgIC8vIHdpdGhvdXQgbGVhdmluZyBhIHRpbWUgd2luZG93LiBJZiB3ZSBm
YWlsIHRoZSBjaGVjayBqdXN0IHNpbGVudGx5IGRyb3AgdGhlIGZvcm0gc3VibWlzc2lvbi4KLSAg
ICAgICAgICAgIGlmICghcmVkaXJlY3Rpb24tPmZvcm1TdGF0ZS0+c291cmNlRnJhbWUoKS0+bG9h
ZGVyKCktPnNob3VsZEFsbG93TmF2aWdhdGlvbihtX2ZyYW1lKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBsb2FkZXItPmxvYWRGcmFtZVJlcXVlc3QocmVkaXJlY3Rpb24t
PmZyYW1lUmVxdWVzdCwgcmVkaXJlY3Rpb24tPmxvY2tIaXN0b3J5LCByZWRpcmVjdGlvbi0+bG9j
a0JhY2tGb3J3YXJkTGlzdCwKLSAgICAgICAgICAgICAgICByZWRpcmVjdGlvbi0+ZXZlbnQsIHJl
ZGlyZWN0aW9uLT5mb3JtU3RhdGUsIFNlbmRSZWZlcnJlcik7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgT3duUHRyPEFic3RyYWN0
UmVkaXJlY3Q+IHJlZGlyZWN0KG1fcmVkaXJlY3QucmVsZWFzZSgpKTsKKyAgICByZWRpcmVjdC0+
ZmlyZShtX2ZyYW1lKTsKIH0KIAotdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGUoUGFz
c093blB0cjxTY2hlZHVsZWRSZWRpcmVjdGlvbj4gcmVkaXJlY3Rpb24pCit2b2lkIFJlZGlyZWN0
U2NoZWR1bGVyOjpzY2hlZHVsZShQYXNzT3duUHRyPEFic3RyYWN0UmVkaXJlY3Q+IHJlZGlyZWN0
KQogewogICAgIEFTU0VSVChtX2ZyYW1lLT5wYWdlKCkpOwotICAgIEZyYW1lTG9hZGVyKiBsb2Fk
ZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKIAogICAgIC8vIElmIGEgcmVkaXJlY3Qgd2FzIHNjaGVk
dWxlZCBkdXJpbmcgYSBsb2FkLCB0aGVuIHN0b3AgdGhlIGN1cnJlbnQgbG9hZC4KICAgICAvLyBP
dGhlcndpc2Ugd2hlbiB0aGUgY3VycmVudCBsb2FkIHRyYW5zaXRpb25zIGZyb20gYSBwcm92aXNp
b25hbCB0byBhIAogICAgIC8vIGNvbW1pdHRlZCBzdGF0ZSwgcGVuZGluZyByZWRpcmVjdHMgbWF5
IGJlIGNhbmNlbGxlZC4gCi0gICAgaWYgKHJlZGlyZWN0aW9uLT53YXNEdXJpbmdMb2FkKSB7Ci0g
ICAgICAgIGlmIChEb2N1bWVudExvYWRlciogcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlciA9IGxv
YWRlci0+cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKQorICAgIGlmIChyZWRpcmVjdC0+d2Fz
RHVyaW5nTG9hZCgpKSB7CisgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogcHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpLT5wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyKCkpCiAgICAgICAgICAgICBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdG9wTG9hZGlu
ZygpOwotICAgICAgICBsb2FkZXItPnN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9saWN5VW5sb2Fk
QW5kUGFnZUhpZGUpOyAgIAorICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+c3RvcExvYWRpbmco
VW5sb2FkRXZlbnRQb2xpY3lVbmxvYWRBbmRQYWdlSGlkZSk7ICAgCiAgICAgfQogCiAgICAgY2Fu
Y2VsKCk7Ci0gICAgbV9zY2hlZHVsZWRSZWRpcmVjdGlvbiA9IHJlZGlyZWN0aW9uOwotICAgIGlm
ICghbG9hZGVyLT5pc0NvbXBsZXRlKCkgJiYgbV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+dHlwZSAh
PSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6cmVkaXJlY3Rpb24pCi0gICAgICAgIGxvYWRlci0+Y29t
cGxldGVkKCk7CisgICAgbV9yZWRpcmVjdCA9IHJlZGlyZWN0OworICAgIG1fcmVkaXJlY3QtPmRp
ZFNjaGVkdWxlKG1fZnJhbWUpOwogICAgIHN0YXJ0VGltZXIoKTsKIH0KIAogdm9pZCBSZWRpcmVj
dFNjaGVkdWxlcjo6c3RhcnRUaW1lcigpCiB7Ci0gICAgaWYgKCFtX3NjaGVkdWxlZFJlZGlyZWN0
aW9uKQorICAgIGlmICghbV9yZWRpcmVjdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJU
KG1fZnJhbWUtPnBhZ2UoKSk7Ci0gICAgCi0gICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9IG1fZnJh
bWUtPmxvYWRlcigpOwotCiAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPnR5cGUgPT0gU2NoZWR1bGVk
UmVkaXJlY3Rpb246OnJlZGlyZWN0aW9uICYmICFsb2FkZXItPmFsbEFuY2VzdG9yc0FyZUNvbXBs
ZXRlKCkpCisgICAgaWYgKCFtX3JlZGlyZWN0LT5zaG91bGRTdGFydFRpbWVyKG1fZnJhbWUpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChtX3NjaGVkdWxlZFJl
ZGlyZWN0aW9uLT5kZWxheSk7Ci0KLSAgICBzd2l0Y2ggKG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24t
PnR5cGUpIHsKLSAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6bG9jYXRpb25DaGFu
Z2U6Ci0gICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJlY3Rpb246OnJlZGlyZWN0aW9uOgotICAg
ICAgICAgICAgaWYgKG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPnRvbGRDbGllbnQpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+dG9s
ZENsaWVudCA9IHRydWU7Ci0gICAgICAgICAgICBsb2FkZXItPmNsaWVudFJlZGlyZWN0ZWQoS1VS
TChQYXJzZWRVUkxTdHJpbmcsIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPnVybCksCi0gICAgICAg
ICAgICAgICAgbV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+ZGVsYXksCi0gICAgICAgICAgICAgICAg
Y3VycmVudFRpbWUoKSArIG1fdGltZXIubmV4dEZpcmVJbnRlcnZhbCgpLAotICAgICAgICAgICAg
ICAgIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPmxvY2tCYWNrRm9yd2FyZExpc3QpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpmb3JtU3Vi
bWlzc2lvbjoKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBtYWtlIHNlbnNlIHRvIHJl
cG9ydCBmb3JtIHN1Ym1pc3Npb25zIGFzIGNsaWVudCByZWRpcmVjdHMgdG9vLgotICAgICAgICAg
ICAgLy8gQnV0IHdlIGRpZG4ndCBkbyB0aGF0IGluIHRoZSBwYXN0IHdoZW4gZm9ybSBzdWJtaXNz
aW9uIHVzZWQgYSBzZXBhcmF0ZSBkZWxheQotICAgICAgICAgICAgLy8gbWVjaGFuaXNtLCBzbyBk
b2luZyBpdCB3aWxsIGJlIGEgYmVoYXZpb3IgY2hhbmdlLgotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpoaXN0b3J5TmF2aWdhdGlvbjoKLSAg
ICAgICAgICAgIC8vIERvbid0IHJlcG9ydCBoaXN0b3J5IG5hdmlnYXRpb25zLgotICAgICAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBtX3RpbWVy
LnN0YXJ0T25lU2hvdChtX3JlZGlyZWN0LT5kZWxheSgpKTsKKyAgICBtX3JlZGlyZWN0LT5kaWRT
dGFydFRpbWVyKG1fZnJhbWUsICZtX3RpbWVyKTsKIH0KIAogdm9pZCBSZWRpcmVjdFNjaGVkdWxl
cjo6Y2FuY2VsKGJvb2wgbmV3TG9hZEluUHJvZ3Jlc3MpCiB7CiAgICAgbV90aW1lci5zdG9wKCk7
CiAKLSAgICBPd25QdHI8U2NoZWR1bGVkUmVkaXJlY3Rpb24+IHJlZGlyZWN0aW9uKG1fc2NoZWR1
bGVkUmVkaXJlY3Rpb24ucmVsZWFzZSgpKTsKLSAgICBpZiAocmVkaXJlY3Rpb24gJiYgcmVkaXJl
Y3Rpb24tPnRvbGRDbGllbnQpCi0gICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnRSZWRp
cmVjdENhbmNlbGxlZE9yRmluaXNoZWQobmV3TG9hZEluUHJvZ3Jlc3MpOworICAgIE93blB0cjxB
YnN0cmFjdFJlZGlyZWN0PiByZWRpcmVjdChtX3JlZGlyZWN0LnJlbGVhc2UoKSk7CisgICAgaWYg
KHJlZGlyZWN0KQorICAgICAgICByZWRpcmVjdC0+ZGlkU3RvcFRpbWVyKG1fZnJhbWUsIG5ld0xv
YWRJblByb2dyZXNzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuaCBiL1dlYkNvcmUvbG9hZGVyL1JlZGly
ZWN0U2NoZWR1bGVyLmgKaW5kZXggMDA1YTE3My4uYTViMzY3ZiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9SZWRpcmVj
dFNjaGVkdWxlci5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgU3RyaW5n
OwogCiBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKLXN0cnVjdCBTY2hlZHVsZWRSZWRpcmVjdGlv
bjsKK2NsYXNzIEFic3RyYWN0UmVkaXJlY3Q7CiAKIGNsYXNzIFJlZGlyZWN0U2NoZWR1bGVyIDog
cHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKQEAgLTY3LDEzICs2NywxMyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPFJlZGlyZWN0U2NoZWR1bGVy
PiopOwotICAgIHZvaWQgc2NoZWR1bGUoUGFzc093blB0cjxTY2hlZHVsZWRSZWRpcmVjdGlvbj4p
OworICAgIHZvaWQgc2NoZWR1bGUoUGFzc093blB0cjxBYnN0cmFjdFJlZGlyZWN0Pik7CiAKICAg
ICBzdGF0aWMgYm9vbCBtdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChGcmFtZSogdGFyZ2V0RnJhbWUp
OwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgVGltZXI8UmVkaXJlY3RTY2hlZHVsZXI+IG1f
dGltZXI7Ci0gICAgT3duUHRyPFNjaGVkdWxlZFJlZGlyZWN0aW9uPiBtX3NjaGVkdWxlZFJlZGly
ZWN0aW9uOworICAgIE93blB0cjxBYnN0cmFjdFJlZGlyZWN0PiBtX3JlZGlyZWN0OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52142</attachid>
            <date>2010-03-31 01:53:53 -0700</date>
            <delta_ts>2010-03-31 02:04:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36874-20100331015352.patch</filename>
            <type>text/plain</type>
            <size>23468</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NWQ0Y2Y0Yy4uMmM1NWNiOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMC0wMy0zMSAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENsZWFudXAgUmVkaXJlY3RTY2hlZHVsZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2ODc0CisKKyAgICAgICBSZW1vdmVkIHRo
ZSBudXR0eSBTY2hlZHVsZWRSZWRpcmVjdGlvbiBzdHJ1Y3QgaW4gZmF2b3Igb2YgYSBoaWVyYXJj
aHkKKyAgICAgICBvZiBjbGFzc2VzIHRvIHJlcHJlc2VudCB0aGUgdmFyaW91cyBraW5kcyBvZiBz
Y2hlZHVsZWQgcmVkaXJlY3RzLgorICAgICAgIERvaW5nIHRoaXMgbGV0cyB1cyBnZXQgcmlkIG9m
IHRoZSBwc2V1ZG8gUlRUSSBzd2l0Y2ggc3RhdGVtZW50cyBvbgorICAgICAgICJ0eXBlIiBpbiBm
YXZvdXIgb2YgY2FsbGluZyB2aXJ0dWFsIGZ1bmN0aW9ucy4KKworICAgICAgIE5vIG5ldyB0ZXN0
cyBiZWNhdXNlIHRoaXMgY2hhbmdlIHNob3VsZCBiZSBBUEkgaWRlbnRpY2FsIHdpdGggdGhlCisg
ICAgICAgZXhpc3RpbmcgUmVkaXJlY3RTY2hlZHVsZXIuCisKKyAgICAgICAgKiBsb2FkZXIvUmVk
aXJlY3RTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkTmF2aWdhdGlv
bjo6U2NoZWR1bGVkTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWROYXZp
Z2F0aW9uOjp+U2NoZWR1bGVkTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVs
ZWROYXZpZ2F0aW9uOjppc0xvY2F0aW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVk
dWxlZE5hdmlnYXRpb246OnNob3VsZFN0YXJ0VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2No
ZWR1bGVkTmF2aWdhdGlvbjo6ZGlkU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpTY2hl
ZHVsZWROYXZpZ2F0aW9uOjpkaWRTdG9wVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1
bGVkTmF2aWdhdGlvbjo6ZGVsYXkpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkTmF2aWdh
dGlvbjo6bG9ja0hpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkTmF2aWdhdGlv
bjo6bG9ja0JhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWROYXZp
Z2F0aW9uOjp3YXNEdXJpbmdMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZFVSTE5h
dmlnYXRpb246OlNjaGVkdWxlZFVSTE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2No
ZWR1bGVkVVJMTmF2aWdhdGlvbjo6ZmlyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRV
UkxOYXZpZ2F0aW9uOjpkaWRTdGFydFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxl
ZFVSTE5hdmlnYXRpb246OmRpZFN0b3BUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVs
ZWRVUkxOYXZpZ2F0aW9uOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkVVJMTmF2
aWdhdGlvbjo6cmVmZXJyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkVVJMTmF2aWdh
dGlvbjo6d2FzVXNlckdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkUmVkaXJl
Y3Q6OlNjaGVkdWxlZFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZFJlZGly
ZWN0Ojppc0xvY2F0aW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZFJlZGly
ZWN0OjpzaG91bGRTdGFydFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZExvY2F0
aW9uQ2hhbmdlOjpTY2hlZHVsZWRMb2NhdGlvbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y2hlZHVsZWRSZWZyZXNoOjpTY2hlZHVsZWRSZWZyZXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
aGVkdWxlZFJlZnJlc2g6OmZpcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkSGlzdG9y
eU5hdmlnYXRpb246OlNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uOjpmaXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uOjpTY2hlZHVsZWRGb3JtU3VibWlzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY2hlZHVsZWRGb3JtU3VibWlzc2lvbjo6ZmlyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6cmVkaXJlY3RTY2hlZHVsZWREdXJpbmdMb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjpjbGVhcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6bXVzdExvY2tCYWNrRm9yd2FyZExpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1p
c3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlUmVm
cmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6bG9jYXRpb25DaGFu
Z2VQZW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVs
ZUhpc3RvcnlOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVy
Ojp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjpzY2hl
ZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c3RhcnRUaW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6Y2FuY2VsKToKKyAgICAgICAg
KiBsb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuaDoKKwogMjAxMC0wMy0zMCAgR2F2aW4gQmFycmFj
bG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyIHN0YW1wZWQg
YnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1
bGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcAppbmRleCA0YjQ0
NDIyLi41NjQ1MzgyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxl
ci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuY3BwCkBAIC00Nyw4
NyArNDcsMTU5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IFNjaGVkdWxlZFJl
ZGlyZWN0aW9uIDogTm9uY29weWFibGUgewotICAgIGVudW0gVHlwZSB7IHJlZGlyZWN0aW9uLCBs
b2NhdGlvbkNoYW5nZSwgaGlzdG9yeU5hdmlnYXRpb24sIGZvcm1TdWJtaXNzaW9uIH07Ci0KLSAg
ICBjb25zdCBUeXBlIHR5cGU7Ci0gICAgY29uc3QgZG91YmxlIGRlbGF5OwotICAgIGNvbnN0IFN0
cmluZyB1cmw7Ci0gICAgY29uc3QgU3RyaW5nIHJlZmVycmVyOwotICAgIGNvbnN0IEZyYW1lTG9h
ZFJlcXVlc3QgZnJhbWVSZXF1ZXN0OwotICAgIGNvbnN0IFJlZlB0cjxFdmVudD4gZXZlbnQ7Ci0g
ICAgY29uc3QgUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlOwotICAgIGNvbnN0IGludCBoaXN0
b3J5U3RlcHM7Ci0gICAgY29uc3QgYm9vbCBsb2NrSGlzdG9yeTsKLSAgICBjb25zdCBib29sIGxv
Y2tCYWNrRm9yd2FyZExpc3Q7Ci0gICAgY29uc3QgYm9vbCB3YXNVc2VyR2VzdHVyZTsKLSAgICBj
b25zdCBib29sIHdhc1JlZnJlc2g7Ci0gICAgY29uc3QgYm9vbCB3YXNEdXJpbmdMb2FkOwotICAg
IGJvb2wgdG9sZENsaWVudDsKLQotICAgIFNjaGVkdWxlZFJlZGlyZWN0aW9uKGRvdWJsZSBkZWxh
eSwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3
YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSwgYm9vbCByZWZyZXNoKQotICAgICAgICA6IHR5
cGUocmVkaXJlY3Rpb24pCi0gICAgICAgICwgZGVsYXkoZGVsYXkpCi0gICAgICAgICwgdXJsKHVy
bCkKLSAgICAgICAgLCBoaXN0b3J5U3RlcHMoMCkKLSAgICAgICAgLCBsb2NrSGlzdG9yeShsb2Nr
SGlzdG9yeSkKLSAgICAgICAgLCBsb2NrQmFja0ZvcndhcmRMaXN0KGxvY2tCYWNrRm9yd2FyZExp
c3QpCi0gICAgICAgICwgd2FzVXNlckdlc3R1cmUod2FzVXNlckdlc3R1cmUpCi0gICAgICAgICwg
d2FzUmVmcmVzaChyZWZyZXNoKQotICAgICAgICAsIHdhc0R1cmluZ0xvYWQoZmFsc2UpCi0gICAg
ICAgICwgdG9sZENsaWVudChmYWxzZSkKK2NsYXNzIFNjaGVkdWxlZE5hdmlnYXRpb24gOiBwdWJs
aWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIFNjaGVkdWxlZE5hdmlnYXRpb24oZG91Ymxl
IGRlbGF5LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wg
d2FzRHVyaW5nTG9hZCkKKyAgICAgICAgOiBtX2RlbGF5KGRlbGF5KQorICAgICAgICAsIG1fbG9j
a0hpc3RvcnkobG9ja0hpc3RvcnkpCisgICAgICAgICwgbV9sb2NrQmFja0ZvcndhcmRMaXN0KGxv
Y2tCYWNrRm9yd2FyZExpc3QpCisgICAgICAgICwgbV93YXNEdXJpbmdMb2FkKHdhc0R1cmluZ0xv
YWQpCiAgICAgewotICAgICAgICBBU1NFUlQoIXVybC5pc0VtcHR5KCkpOwogICAgIH0KKyAgICB2
aXJ0dWFsIH5TY2hlZHVsZWROYXZpZ2F0aW9uKCkgeyB9CiAKLSAgICBTY2hlZHVsZWRSZWRpcmVj
dGlvbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBsb2Nr
SGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBib29sIHdhc1VzZXJHZXN0dXJlLCBi
b29sIHJlZnJlc2gsIGJvb2wgZHVyaW5nTG9hZCkKLSAgICAgICAgOiB0eXBlKGxvY2F0aW9uQ2hh
bmdlKQotICAgICAgICAsIGRlbGF5KDApCi0gICAgICAgICwgdXJsKHVybCkKLSAgICAgICAgLCBy
ZWZlcnJlcihyZWZlcnJlcikKLSAgICAgICAgLCBoaXN0b3J5U3RlcHMoMCkKLSAgICAgICAgLCBs
b2NrSGlzdG9yeShsb2NrSGlzdG9yeSkKLSAgICAgICAgLCBsb2NrQmFja0ZvcndhcmRMaXN0KGxv
Y2tCYWNrRm9yd2FyZExpc3QpCi0gICAgICAgICwgd2FzVXNlckdlc3R1cmUod2FzVXNlckdlc3R1
cmUpCi0gICAgICAgICwgd2FzUmVmcmVzaChyZWZyZXNoKQotICAgICAgICAsIHdhc0R1cmluZ0xv
YWQoZHVyaW5nTG9hZCkKLSAgICAgICAgLCB0b2xkQ2xpZW50KGZhbHNlKQorICAgIHZpcnR1YWwg
dm9pZCBmaXJlKEZyYW1lKikgPSAwOworCisgICAgLy8gVGhpcyBtZXRob2QgZmVlbHMgYSBiaXQg
bGlrZSBSVFRJLCBidXQgSSBkb24ndCBzZWUgYSBjbGVhbmVyIHdheSB0byBnZXQgdGhlIGJlaGF2
aW9yIHdlIHdhbnQuCisgICAgdmlydHVhbCBib29sIGlzTG9jYXRpb25DaGFuZ2UoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RhcnRUaW1lcihGcmFt
ZSopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRUaW1lcihGcmFt
ZSosIFRpbWVyPFJlZGlyZWN0U2NoZWR1bGVyPiopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRT
dG9wVGltZXIoRnJhbWUqLCBib29sIC8qIG5ld0xvYWRJblByb2dyZXNzICovKSB7IH0KKworICAg
IGRvdWJsZSBkZWxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsYXk7IH0KKyAgICBib29sIGxvY2tI
aXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9sb2NrSGlzdG9yeTsgfQorICAgIGJvb2wgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9ja0JhY2tGb3J3YXJkTGlzdDsgfQor
ICAgIGJvb2wgd2FzRHVyaW5nTG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzRHVyaW5nTG9hZDsg
fQorCitwcml2YXRlOgorICAgIGRvdWJsZSBtX2RlbGF5OworICAgIGJvb2wgbV9sb2NrSGlzdG9y
eTsKKyAgICBib29sIG1fbG9ja0JhY2tGb3J3YXJkTGlzdDsKKyAgICBib29sIG1fd2FzRHVyaW5n
TG9hZDsKK307CisKK2NsYXNzIFNjaGVkdWxlZFVSTE5hdmlnYXRpb24gOiBwdWJsaWMgU2NoZWR1
bGVkTmF2aWdhdGlvbiB7CitwdWJsaWM6CisgICAgU2NoZWR1bGVkVVJMTmF2aWdhdGlvbihkb3Vi
bGUgZGVsYXksIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29s
IGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzVXNlckdlc3R1
cmUsIGJvb2wgZHVyaW5nTG9hZCkKKyAgICAgICAgOiBTY2hlZHVsZWROYXZpZ2F0aW9uKGRlbGF5
LCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkKKyAgICAgICAg
LCBtX3VybCh1cmwpCisgICAgICAgICwgbV9yZWZlcnJlcihyZWZlcnJlcikKKyAgICAgICAgLCBt
X3dhc1VzZXJHZXN0dXJlKHdhc1VzZXJHZXN0dXJlKQorICAgICAgICAsIG1faGF2ZVRvbGRDbGll
bnQoZmFsc2UpCiAgICAgewotICAgICAgICBBU1NFUlQoIXVybC5pc0VtcHR5KCkpOwogICAgIH0K
IAotICAgIGV4cGxpY2l0IFNjaGVkdWxlZFJlZGlyZWN0aW9uKGludCBoaXN0b3J5TmF2aWdhdGlv
blN0ZXBzKQotICAgICAgICA6IHR5cGUoaGlzdG9yeU5hdmlnYXRpb24pCi0gICAgICAgICwgZGVs
YXkoMCkKLSAgICAgICAgLCBoaXN0b3J5U3RlcHMoaGlzdG9yeU5hdmlnYXRpb25TdGVwcykKLSAg
ICAgICAgLCBsb2NrSGlzdG9yeShmYWxzZSkKLSAgICAgICAgLCBsb2NrQmFja0ZvcndhcmRMaXN0
KGZhbHNlKQotICAgICAgICAsIHdhc1VzZXJHZXN0dXJlKGZhbHNlKQotICAgICAgICAsIHdhc1Jl
ZnJlc2goZmFsc2UpCi0gICAgICAgICwgd2FzRHVyaW5nTG9hZChmYWxzZSkKLSAgICAgICAgLCB0
b2xkQ2xpZW50KGZhbHNlKQorICAgIHZpcnR1YWwgdm9pZCBmaXJlKEZyYW1lKiBmcmFtZSkKICAg
ICB7CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2hhbmdlTG9jYXRpb24oS1VSTChQYXJzZWRV
UkxTdHJpbmcsIG1fdXJsKSwgbV9yZWZlcnJlciwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3
YXJkTGlzdCgpLCBtX3dhc1VzZXJHZXN0dXJlLCBmYWxzZSk7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIGRpZFN0YXJ0VGltZXIoRnJhbWUqIGZyYW1lLCBUaW1lcjxSZWRpcmVjdFNjaGVkdWxl
cj4qIHRpbWVyKQorICAgIHsKKyAgICAgICAgaWYgKG1faGF2ZVRvbGRDbGllbnQpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1faGF2ZVRvbGRDbGllbnQgPSB0cnVlOworICAgICAgICBm
cmFtZS0+bG9hZGVyKCktPmNsaWVudFJlZGlyZWN0ZWQoS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1f
dXJsKSwgZGVsYXkoKSwgY3VycmVudFRpbWUoKSArIHRpbWVyLT5uZXh0RmlyZUludGVydmFsKCks
IGxvY2tCYWNrRm9yd2FyZExpc3QoKSk7CiAgICAgfQogCi0gICAgU2NoZWR1bGVkUmVkaXJlY3Rp
b24oY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVSZXF1ZXN0LAotICAgICAgICAgICAgYm9v
bCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBQYXNzUmVmUHRyPEV2ZW50
PiBldmVudCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwKLSAgICAgICAgICAgIGJv
b2wgZHVyaW5nTG9hZCkKLSAgICAgICAgOiB0eXBlKGZvcm1TdWJtaXNzaW9uKQotICAgICAgICAs
IGRlbGF5KDApCi0gICAgICAgICwgZnJhbWVSZXF1ZXN0KGZyYW1lUmVxdWVzdCkKLSAgICAgICAg
LCBldmVudChldmVudCkKLSAgICAgICAgLCBmb3JtU3RhdGUoZm9ybVN0YXRlKQotICAgICAgICAs
IGhpc3RvcnlTdGVwcygwKQotICAgICAgICAsIGxvY2tIaXN0b3J5KGxvY2tIaXN0b3J5KQotICAg
ICAgICAsIGxvY2tCYWNrRm9yd2FyZExpc3QobG9ja0JhY2tGb3J3YXJkTGlzdCkKLSAgICAgICAg
LCB3YXNVc2VyR2VzdHVyZShmYWxzZSkKLSAgICAgICAgLCB3YXNSZWZyZXNoKGZhbHNlKQotICAg
ICAgICAsIHdhc0R1cmluZ0xvYWQoZHVyaW5nTG9hZCkKLSAgICAgICAgLCB0b2xkQ2xpZW50KGZh
bHNlKQorICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wVGltZXIoRnJhbWUqIGZyYW1lLCBib29sIG5l
d0xvYWRJblByb2dyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2hhdmVUb2xkQ2xpZW50KQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudFJlZGly
ZWN0Q2FuY2VsbGVkT3JGaW5pc2hlZChuZXdMb2FkSW5Qcm9ncmVzcyk7CisgICAgfQorCisgICAg
U3RyaW5nIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgU3RyaW5nIHJlZmVycmVy
KCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcnJlcjsgfQorICAgIGJvb2wgd2FzVXNlckdlc3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX3dhc1VzZXJHZXN0dXJlOyB9CisKK3ByaXZhdGU6CisgICAgU3Ry
aW5nIG1fdXJsOworICAgIFN0cmluZyBtX3JlZmVycmVyOworICAgIGJvb2wgbV93YXNVc2VyR2Vz
dHVyZTsKKyAgICBib29sIG1faGF2ZVRvbGRDbGllbnQ7Cit9OworCitjbGFzcyBTY2hlZHVsZWRS
ZWRpcmVjdCA6IHB1YmxpYyBTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uIHsKK3B1YmxpYzoKKyAgICBT
Y2hlZHVsZWRSZWRpcmVjdChkb3VibGUgZGVsYXksIGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGxv
Y2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzVXNlckdlc3R1cmUp
CisgICAgICAgIDogU2NoZWR1bGVkVVJMTmF2aWdhdGlvbihkZWxheSwgdXJsLCBTdHJpbmcoKSwg
bG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHdhc1VzZXJHZXN0dXJlLCBmYWxzZSkg
eyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbkNoYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZFN0YXJ0VGltZXIoRnJhbWUqIGZyYW1l
KSB7IHJldHVybiBmcmFtZS0+bG9hZGVyKCktPmFsbEFuY2VzdG9yc0FyZUNvbXBsZXRlKCk7IH0K
K307CisKK2NsYXNzIFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlIDogcHVibGljIFNjaGVkdWxlZFVS
TE5hdmlnYXRpb24geworcHVibGljOgorICAgIFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlKGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxvY2tIaXN0b3J5LCBi
b29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzVXNlckdlc3R1cmUsIGJvb2wgZHVyaW5n
TG9hZCkKKyAgICAgICAgOiBTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uKDAuMCwgdXJsLCByZWZlcnJl
ciwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHdhc1VzZXJHZXN0dXJlLCBkdXJp
bmdMb2FkKSB7IH0KK307CisKK2NsYXNzIFNjaGVkdWxlZFJlZnJlc2ggOiBwdWJsaWMgU2NoZWR1
bGVkVVJMTmF2aWdhdGlvbiB7CitwdWJsaWM6CisgICAgU2NoZWR1bGVkUmVmcmVzaChjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCB3YXNVc2VyR2VzdHVyZSkK
KyAgICAgICAgOiBTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uKDAuMCwgdXJsLCByZWZlcnJlciwgdHJ1
ZSwgdHJ1ZSwgd2FzVXNlckdlc3R1cmUsIGZhbHNlKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBm
aXJlKEZyYW1lKiBmcmFtZSkKKyAgICB7CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2hhbmdl
TG9jYXRpb24oS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCgpKSwgcmVmZXJyZXIoKSwgbG9ja0hp
c3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCB3YXNVc2VyR2VzdHVyZSgpLCB0cnVlKTsK
KyAgICB9Cit9OworCitjbGFzcyBTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbiA6IHB1YmxpYyBT
Y2hlZHVsZWROYXZpZ2F0aW9uIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTY2hlZHVsZWRIaXN0
b3J5TmF2aWdhdGlvbihpbnQgaGlzdG9yeVN0ZXBzKSA6IFNjaGVkdWxlZE5hdmlnYXRpb24oMCwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSksIG1faGlzdG9yeVN0ZXBzKGhpc3RvcnlTdGVwcykgeyB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgZmlyZShGcmFtZSogZnJhbWUpCisgICAgeworICAgICAgICBGcmFt
ZUxvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOworICAgICAgICBpZiAoIW1faGlzdG9y
eVN0ZXBzKSB7CisgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGdvKDApIGZyb20gYSBm
cmFtZSAtPiByZWxvYWQgb25seSB0aGUgZnJhbWUKKyAgICAgICAgICAgIGxvYWRlci0+dXJsU2Vs
ZWN0ZWQobG9hZGVyLT51cmwoKSwgIiIsIDAsIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2Fy
ZExpc3QoKSwgZmFsc2UsIFNlbmRSZWZlcnJlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgLy8gZ28oaSE9MCkgZnJvbSBhIGZyYW1lIG5hdmlnYXRlcyBpbnRvIHRo
ZSBoaXN0b3J5IG9mIHRoZSBmcmFtZSBvbmx5LAorICAgICAgICAvLyBpbiBib3RoIElFIGFuZCBO
UyAoYnV0IG5vdCBpbiBNb3ppbGxhKS4gV2UgY2FuJ3QgZWFzaWx5IGRvIHRoYXQuCisgICAgICAg
IGZyYW1lLT5wYWdlKCktPmdvQmFja09yRm9yd2FyZChtX2hpc3RvcnlTdGVwcyk7CisgICAgfQor
Citwcml2YXRlOgorICAgIGludCBtX2hpc3RvcnlTdGVwczsKK307CisKK2NsYXNzIFNjaGVkdWxl
ZEZvcm1TdWJtaXNzaW9uIDogcHVibGljIFNjaGVkdWxlZE5hdmlnYXRpb24geworcHVibGljOgor
ICAgIFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1l
UmVxdWVzdCwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBQYXNz
UmVmUHRyPEV2ZW50PiBldmVudCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgYm9v
bCBkdXJpbmdMb2FkKQorICAgICAgICA6IFNjaGVkdWxlZE5hdmlnYXRpb24oMCwgbG9ja0hpc3Rv
cnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQpCisgICAgICAgICwgbV9mcmFtZVJl
cXVlc3QoZnJhbWVSZXF1ZXN0KQorICAgICAgICAsIG1fZXZlbnQoZXZlbnQpCisgICAgICAgICwg
bV9mb3JtU3RhdGUoZm9ybVN0YXRlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFmcmFtZVJlcXVl
c3QuaXNFbXB0eSgpKTsKLSAgICAgICAgQVNTRVJUKHRoaXMtPmZvcm1TdGF0ZSk7CisgICAgICAg
IEFTU0VSVChtX2Zvcm1TdGF0ZSk7CiAgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGZpcmUoRnJh
bWUqIGZyYW1lKQorICAgIHsKKyAgICAgICAgLy8gVGhlIHN1Ym1pdEZvcm0gZnVuY3Rpb24gd2ls
bCBmaW5kIGEgdGFyZ2V0IGZyYW1lIGJlZm9yZSB1c2luZyB0aGUgcmVkaXJlY3Rpb24gdGltZXIu
CisgICAgICAgIC8vIE5vdyB0aGF0IHRoZSB0aW1lciBoYXMgZmlyZWQsIHdlIG5lZWQgdG8gcmVw
ZWF0IHRoZSBzZWN1cml0eSBjaGVjayB3aGljaCBub3JtYWxseSBpcyBkb25lIHdoZW4KKyAgICAg
ICAgLy8gc2VsZWN0aW5nIGEgdGFyZ2V0LCBpbiBjYXNlIGNvbmRpdGlvbnMgaGF2ZSBjaGFuZ2Vk
LiBPdGhlciBjb2RlIHBhdGhzIGF2b2lkIHRoaXMgYnkgdGFyZ2V0aW5nCisgICAgICAgIC8vIHdp
dGhvdXQgbGVhdmluZyBhIHRpbWUgd2luZG93LiBJZiB3ZSBmYWlsIHRoZSBjaGVjayBqdXN0IHNp
bGVudGx5IGRyb3AgdGhlIGZvcm0gc3VibWlzc2lvbi4KKyAgICAgICAgaWYgKCFtX2Zvcm1TdGF0
ZS0+c291cmNlRnJhbWUoKS0+bG9hZGVyKCktPnNob3VsZEFsbG93TmF2aWdhdGlvbihmcmFtZSkp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+bG9hZEZyYW1l
UmVxdWVzdChtX2ZyYW1lUmVxdWVzdCwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlz
dCgpLCBtX2V2ZW50LCBtX2Zvcm1TdGF0ZSwgU2VuZFJlZmVycmVyKTsKKyAgICB9CisKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGRpZFN0YXJ0VGltZXI/IEl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8g
cmVwb3J0IGZvcm0KKyAgICAvLyBzdWJtaXNzaW9ucyBhcyBjbGllbnQgcmVkaXJlY3RzIHRvby4g
QnV0IHdlIGRpZG4ndCBkbyB0aGF0IGluIHRoZSBwYXN0CisgICAgLy8gd2hlbiBmb3JtIHN1Ym1p
c3Npb24gdXNlZCBhIHNlcGFyYXRlIGRlbGF5IG1lY2hhbmlzbSwgc28gZG9pbmcgaXQgd2lsbAor
ICAgIC8vIGJlIGEgYmVoYXZpb3IgY2hhbmdlLgorCitwcml2YXRlOgorICAgIGNvbnN0IEZyYW1l
TG9hZFJlcXVlc3QgbV9mcmFtZVJlcXVlc3Q7CisgICAgY29uc3QgUmVmUHRyPEV2ZW50PiBtX2V2
ZW50OworICAgIGNvbnN0IFJlZlB0cjxGb3JtU3RhdGU+IG1fZm9ybVN0YXRlOwogfTsKIAogUmVk
aXJlY3RTY2hlZHVsZXI6OlJlZGlyZWN0U2NoZWR1bGVyKEZyYW1lKiBmcmFtZSkKQEAgLTE0Miwy
OSArMjE0LDI3IEBAIFJlZGlyZWN0U2NoZWR1bGVyOjp+UmVkaXJlY3RTY2hlZHVsZXIoKQogCiBi
b29sIFJlZGlyZWN0U2NoZWR1bGVyOjpyZWRpcmVjdFNjaGVkdWxlZER1cmluZ0xvYWQoKQogewot
ICAgIHJldHVybiBtX3NjaGVkdWxlZFJlZGlyZWN0aW9uICYmIG1fc2NoZWR1bGVkUmVkaXJlY3Rp
b24tPndhc0R1cmluZ0xvYWQ7CisgICAgcmV0dXJuIG1fcmVkaXJlY3QgJiYgbV9yZWRpcmVjdC0+
d2FzRHVyaW5nTG9hZCgpOwogfQogCiB2b2lkIFJlZGlyZWN0U2NoZWR1bGVyOjpjbGVhcigpCiB7
CiAgICAgbV90aW1lci5zdG9wKCk7Ci0gICAgbV9zY2hlZHVsZWRSZWRpcmVjdGlvbi5jbGVhcigp
OworICAgIG1fcmVkaXJlY3QuY2xlYXIoKTsKIH0KIAogdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6
c2NoZWR1bGVSZWRpcmVjdChkb3VibGUgZGVsYXksIGNvbnN0IFN0cmluZyYgdXJsKQogewotICAg
IGlmIChkZWxheSA8IDAgfHwgZGVsYXkgPiBJTlRfTUFYIC8gMTAwMCkKLSAgICAgICAgcmV0dXJu
OwotICAgICAgICAKICAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwot
CisgICAgaWYgKGRlbGF5IDwgMCB8fCBkZWxheSA+IElOVF9NQVggLyAxMDAwKQorICAgICAgICBy
ZXR1cm47CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IFdlIHdhbnQgYSBuZXcgaGlzdG9yeSBpdGVtIGlmIHRoZSByZWZyZXNoIHRpbWVvdXQgaXMgPiAx
IHNlY29uZC4KLSAgICBpZiAoIW1fc2NoZWR1bGVkUmVkaXJlY3Rpb24gfHwgZGVsYXkgPD0gbV9z
Y2hlZHVsZWRSZWRpcmVjdGlvbi0+ZGVsYXkpCi0gICAgICAgIHNjaGVkdWxlKG5ldyBTY2hlZHVs
ZWRSZWRpcmVjdGlvbihkZWxheSwgdXJsLCB0cnVlLCBkZWxheSA8PSAxLCBmYWxzZSwgZmFsc2Up
KTsKKyAgICBpZiAoIW1fcmVkaXJlY3QgfHwgZGVsYXkgPD0gbV9yZWRpcmVjdC0+ZGVsYXkoKSkK
KyAgICAgICAgc2NoZWR1bGUobmV3IFNjaGVkdWxlZFJlZGlyZWN0KGRlbGF5LCB1cmwsIHRydWUs
IGRlbGF5IDw9IDEsIGZhbHNlKSk7CiB9CiAKIGJvb2wgUmVkaXJlY3RTY2hlZHVsZXI6Om11c3RM
b2NrQmFja0ZvcndhcmRMaXN0KEZyYW1lKiB0YXJnZXRGcmFtZSkKQEAgLTE3Miw3ICsyNDIsNyBA
QCBib29sIFJlZGlyZWN0U2NoZWR1bGVyOjptdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChGcmFtZSog
dGFyZ2V0RnJhbWUpCiAgICAgLy8gTmF2aWdhdGlvbiBvZiBhIHN1YmZyYW1lIGR1cmluZyBsb2Fk
aW5nIG9mIGFuIGFuY2VzdG9yIGZyYW1lIGRvZXMgbm90IGNyZWF0ZSBhIG5ldyBiYWNrL2Zvcndh
cmQgaXRlbS4KICAgICAvLyBUaGUgZGVmaW5pdGlvbiBvZiAiZHVyaW5nIGxvYWQiIGlzIGFueSB0
aW1lIGJlZm9yZSBhbGwgaGFuZGxlcnMgZm9yIHRoZSBsb2FkIGV2ZW50IGhhdmUgYmVlbiBydW4u
CiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk1
NyBmb3IgdGhlIG9yaWdpbmFsIG1vdGl2YXRpb24gZm9yIHRoaXMuCi0gICAgCisKICAgICBmb3Ig
KEZyYW1lKiBhbmNlc3RvciA9IHRhcmdldEZyYW1lLT50cmVlKCktPnBhcmVudCgpOyBhbmNlc3Rv
cjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+dHJlZSgpLT5wYXJlbnQoKSkgewogICAgICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBhbmNlc3Rvci0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYgKCFhbmNl
c3Rvci0+bG9hZGVyKCktPmlzQ29tcGxldGUoKSB8fCAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnBy
b2Nlc3NpbmdMb2FkRXZlbnQoKSkpCkBAIC0xODUsNyArMjU1LDYgQEAgdm9pZCBSZWRpcmVjdFNj
aGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJgogewogICAgIGlmICghbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm47Ci0K
ICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMDUsNyArMjc0
LDcgQEAgdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgIC8vIFRoaXMgbWF5IGhhcHBlbiB3aGVu
IGEgZnJhbWUgY2hhbmdlcyB0aGUgbG9jYXRpb24gb2YgYW5vdGhlciBmcmFtZS4KICAgICBib29s
IGR1cmluZ0xvYWQgPSAhbG9hZGVyLT5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKTsK
IAotICAgIHNjaGVkdWxlKG5ldyBTY2hlZHVsZWRSZWRpcmVjdGlvbih1cmwsIHJlZmVycmVyLCBs
b2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgd2FzVXNlckdlc3R1cmUsIGZhbHNlLCBk
dXJpbmdMb2FkKSk7CisgICAgc2NoZWR1bGUobmV3IFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlKHVy
bCwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCB3YXNVc2VyR2Vz
dHVyZSwgZHVyaW5nTG9hZCkpOwogfQogCiB2b2lkIFJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVs
ZUZvcm1TdWJtaXNzaW9uKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lUmVxdWVzdCwKQEAg
LTIyNywzNyArMjk2LDI1IEBAIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1
Ym1pc3Npb24oY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVSZXF1CiAKICAgICBib29sIGxv
Y2tCYWNrRm9yd2FyZExpc3QgPSBtdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChtX2ZyYW1lKSB8fCAo
Zm9ybVN0YXRlLT5mb3JtU3VibWlzc2lvblRyaWdnZXIoKSA9PSBTdWJtaXR0ZWRCeUphdmFTY3Jp
cHQgJiYgbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSk7CiAKLSAgICBzY2hlZHVsZShuZXcgU2No
ZWR1bGVkUmVkaXJlY3Rpb24oZnJhbWVSZXF1ZXN0LCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3
YXJkTGlzdCwgZXZlbnQsIGZvcm1TdGF0ZSwgZHVyaW5nTG9hZCkpOworICAgIHNjaGVkdWxlKG5l
dyBTY2hlZHVsZWRGb3JtU3VibWlzc2lvbihmcmFtZVJlcXVlc3QsIGxvY2tIaXN0b3J5LCBsb2Nr
QmFja0ZvcndhcmRMaXN0LCBldmVudCwgZm9ybVN0YXRlLCBkdXJpbmdMb2FkKSk7CiB9CiAKIHZv
aWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaChib29sIHdhc1VzZXJHZXN0dXJl
KQogewogICAgIGlmICghbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCiAg
ICAgY29uc3QgS1VSTCYgdXJsID0gbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpOwotCiAgICAgaWYg
KHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNjaGVkdWxlKG5ldyBTY2hl
ZHVsZWRSZWRpcmVjdGlvbih1cmwuc3RyaW5nKCksIG1fZnJhbWUtPmxvYWRlcigpLT5vdXRnb2lu
Z1JlZmVycmVyKCksIHRydWUsIHRydWUsIHdhc1VzZXJHZXN0dXJlLCB0cnVlLCBmYWxzZSkpOwor
ICAgIHNjaGVkdWxlKG5ldyBTY2hlZHVsZWRSZWZyZXNoKHVybC5zdHJpbmcoKSwgbV9mcmFtZS0+
bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSwgd2FzVXNlckdlc3R1cmUpKTsKIH0KIAogYm9v
bCBSZWRpcmVjdFNjaGVkdWxlcjo6bG9jYXRpb25DaGFuZ2VQZW5kaW5nKCkKIHsKLSAgICBpZiAo
IW1fc2NoZWR1bGVkUmVkaXJlY3Rpb24pCisgICAgaWYgKCFtX3JlZGlyZWN0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBzd2l0Y2ggKG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPnR5cGUp
IHsKLSAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6cmVkaXJlY3Rpb246Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJlY3Rpb246
Omhpc3RvcnlOYXZpZ2F0aW9uOgotICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjps
b2NhdGlvbkNoYW5nZToKLSAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6Zm9ybVN1
Ym1pc3Npb246Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3JlZGlyZWN0LT5p
c0xvY2F0aW9uQ2hhbmdlKCk7CiB9CiAKIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxl
SGlzdG9yeU5hdmlnYXRpb24oaW50IHN0ZXBzKQpAQCAtMjg0LDExOSArMzQxLDY0IEBAIHZvaWQg
UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24oaW50IHN0ZXBzKQog
I2VuZGlmCiAgICAgCiAgICAgLy8gSW4gYWxsIG90aGVyIGNhc2VzLCBzY2hlZHVsZSB0aGUgaGlz
dG9yeSB0cmF2ZXJzYWwgdG8gb2NjdXIgYXN5bmNocm9ub3VzbHkuCi0gICAgc2NoZWR1bGUobmV3
IFNjaGVkdWxlZFJlZGlyZWN0aW9uKHN0ZXBzKSk7CisgICAgc2NoZWR1bGUobmV3IFNjaGVkdWxl
ZEhpc3RvcnlOYXZpZ2F0aW9uKHN0ZXBzKSk7CiB9CiAKIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6
OnRpbWVyRmlyZWQoVGltZXI8UmVkaXJlY3RTY2hlZHVsZXI+KikKIHsKICAgICBpZiAoIW1fZnJh
bWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKS0+
ZGVmZXJzTG9hZGluZygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBPd25QdHI8U2NoZWR1bGVk
UmVkaXJlY3Rpb24+IHJlZGlyZWN0aW9uKG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24ucmVsZWFzZSgp
KTsKLSAgICBGcmFtZUxvYWRlciogbG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCk7Ci0KLSAgICBz
d2l0Y2ggKHJlZGlyZWN0aW9uLT50eXBlKSB7Ci0gICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJl
Y3Rpb246OnJlZGlyZWN0aW9uOgotICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjps
b2NhdGlvbkNoYW5nZToKLSAgICAgICAgICAgIGxvYWRlci0+Y2hhbmdlTG9jYXRpb24oS1VSTChQ
YXJzZWRVUkxTdHJpbmcsIHJlZGlyZWN0aW9uLT51cmwpLCByZWRpcmVjdGlvbi0+cmVmZXJyZXIs
Ci0gICAgICAgICAgICAgICAgcmVkaXJlY3Rpb24tPmxvY2tIaXN0b3J5LCByZWRpcmVjdGlvbi0+
bG9ja0JhY2tGb3J3YXJkTGlzdCwgcmVkaXJlY3Rpb24tPndhc1VzZXJHZXN0dXJlLCByZWRpcmVj
dGlvbi0+d2FzUmVmcmVzaCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgU2No
ZWR1bGVkUmVkaXJlY3Rpb246Omhpc3RvcnlOYXZpZ2F0aW9uOgotICAgICAgICAgICAgaWYgKHJl
ZGlyZWN0aW9uLT5oaXN0b3J5U3RlcHMgPT0gMCkgewotICAgICAgICAgICAgICAgIC8vIFNwZWNp
YWwgY2FzZSBmb3IgZ28oMCkgZnJvbSBhIGZyYW1lIC0+IHJlbG9hZCBvbmx5IHRoZSBmcmFtZQot
ICAgICAgICAgICAgICAgIGxvYWRlci0+dXJsU2VsZWN0ZWQobG9hZGVyLT51cmwoKSwgIiIsIDAs
IHJlZGlyZWN0aW9uLT5sb2NrSGlzdG9yeSwgcmVkaXJlY3Rpb24tPmxvY2tCYWNrRm9yd2FyZExp
c3QsIHJlZGlyZWN0aW9uLT53YXNVc2VyR2VzdHVyZSwgU2VuZFJlZmVycmVyKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBnbyhpIT0wKSBm
cm9tIGEgZnJhbWUgbmF2aWdhdGVzIGludG8gdGhlIGhpc3Rvcnkgb2YgdGhlIGZyYW1lIG9ubHks
Ci0gICAgICAgICAgICAvLyBpbiBib3RoIElFIGFuZCBOUyAoYnV0IG5vdCBpbiBNb3ppbGxhKS4g
V2UgY2FuJ3QgZWFzaWx5IGRvIHRoYXQuCi0gICAgICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPmdv
QmFja09yRm9yd2FyZChyZWRpcmVjdGlvbi0+aGlzdG9yeVN0ZXBzKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6Zm9ybVN1Ym1pc3Npb246
Ci0gICAgICAgICAgICAvLyBUaGUgc3VibWl0Rm9ybSBmdW5jdGlvbiB3aWxsIGZpbmQgYSB0YXJn
ZXQgZnJhbWUgYmVmb3JlIHVzaW5nIHRoZSByZWRpcmVjdGlvbiB0aW1lci4KLSAgICAgICAgICAg
IC8vIE5vdyB0aGF0IHRoZSB0aW1lciBoYXMgZmlyZWQsIHdlIG5lZWQgdG8gcmVwZWF0IHRoZSBz
ZWN1cml0eSBjaGVjayB3aGljaCBub3JtYWxseSBpcyBkb25lIHdoZW4KLSAgICAgICAgICAgIC8v
IHNlbGVjdGluZyBhIHRhcmdldCwgaW4gY2FzZSBjb25kaXRpb25zIGhhdmUgY2hhbmdlZC4gT3Ro
ZXIgY29kZSBwYXRocyBhdm9pZCB0aGlzIGJ5IHRhcmdldGluZwotICAgICAgICAgICAgLy8gd2l0
aG91dCBsZWF2aW5nIGEgdGltZSB3aW5kb3cuIElmIHdlIGZhaWwgdGhlIGNoZWNrIGp1c3Qgc2ls
ZW50bHkgZHJvcCB0aGUgZm9ybSBzdWJtaXNzaW9uLgotICAgICAgICAgICAgaWYgKCFyZWRpcmVj
dGlvbi0+Zm9ybVN0YXRlLT5zb3VyY2VGcmFtZSgpLT5sb2FkZXIoKS0+c2hvdWxkQWxsb3dOYXZp
Z2F0aW9uKG1fZnJhbWUpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGxv
YWRlci0+bG9hZEZyYW1lUmVxdWVzdChyZWRpcmVjdGlvbi0+ZnJhbWVSZXF1ZXN0LCByZWRpcmVj
dGlvbi0+bG9ja0hpc3RvcnksIHJlZGlyZWN0aW9uLT5sb2NrQmFja0ZvcndhcmRMaXN0LAotICAg
ICAgICAgICAgICAgIHJlZGlyZWN0aW9uLT5ldmVudCwgcmVkaXJlY3Rpb24tPmZvcm1TdGF0ZSwg
U2VuZFJlZmVycmVyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICBPd25QdHI8U2NoZWR1bGVkTmF2aWdhdGlvbj4gcmVkaXJlY3Qo
bV9yZWRpcmVjdC5yZWxlYXNlKCkpOworICAgIHJlZGlyZWN0LT5maXJlKG1fZnJhbWUpOwogfQog
Ci12b2lkIFJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVsZShQYXNzT3duUHRyPFNjaGVkdWxlZFJl
ZGlyZWN0aW9uPiByZWRpcmVjdGlvbikKK3ZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxl
KFBhc3NPd25QdHI8U2NoZWR1bGVkTmF2aWdhdGlvbj4gcmVkaXJlY3QpCiB7CiAgICAgQVNTRVJU
KG1fZnJhbWUtPnBhZ2UoKSk7Ci0gICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9IG1fZnJhbWUtPmxv
YWRlcigpOwogCiAgICAgLy8gSWYgYSByZWRpcmVjdCB3YXMgc2NoZWR1bGVkIGR1cmluZyBhIGxv
YWQsIHRoZW4gc3RvcCB0aGUgY3VycmVudCBsb2FkLgogICAgIC8vIE90aGVyd2lzZSB3aGVuIHRo
ZSBjdXJyZW50IGxvYWQgdHJhbnNpdGlvbnMgZnJvbSBhIHByb3Zpc2lvbmFsIHRvIGEgCiAgICAg
Ly8gY29tbWl0dGVkIHN0YXRlLCBwZW5kaW5nIHJlZGlyZWN0cyBtYXkgYmUgY2FuY2VsbGVkLiAK
LSAgICBpZiAocmVkaXJlY3Rpb24tPndhc0R1cmluZ0xvYWQpIHsKLSAgICAgICAgaWYgKERvY3Vt
ZW50TG9hZGVyKiBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyID0gbG9hZGVyLT5wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyKCkpCisgICAgaWYgKHJlZGlyZWN0LT53YXNEdXJpbmdMb2FkKCkpIHsK
KyAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyID0g
bV9mcmFtZS0+bG9hZGVyKCktPnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAg
ICAgIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0b3BMb2FkaW5nKCk7Ci0gICAgICAgIGxv
YWRlci0+c3RvcExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3lVbmxvYWRBbmRQYWdlSGlkZSk7ICAg
CisgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGlj
eVVubG9hZEFuZFBhZ2VIaWRlKTsgICAKICAgICB9CiAKICAgICBjYW5jZWwoKTsKLSAgICBtX3Nj
aGVkdWxlZFJlZGlyZWN0aW9uID0gcmVkaXJlY3Rpb247Ci0gICAgaWYgKCFsb2FkZXItPmlzQ29t
cGxldGUoKSAmJiBtX3NjaGVkdWxlZFJlZGlyZWN0aW9uLT50eXBlICE9IFNjaGVkdWxlZFJlZGly
ZWN0aW9uOjpyZWRpcmVjdGlvbikKLSAgICAgICAgbG9hZGVyLT5jb21wbGV0ZWQoKTsKKyAgICBt
X3JlZGlyZWN0ID0gcmVkaXJlY3Q7CisKKyAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+aXNDb21w
bGV0ZSgpICYmIG1fcmVkaXJlY3QtPmlzTG9jYXRpb25DaGFuZ2UoKSkKKyAgICAgICAgZnJhbWUt
PmxvYWRlcigpLT5jb21wbGV0ZWQoKTsKKwogICAgIHN0YXJ0VGltZXIoKTsKIH0KIAogdm9pZCBS
ZWRpcmVjdFNjaGVkdWxlcjo6c3RhcnRUaW1lcigpCiB7Ci0gICAgaWYgKCFtX3NjaGVkdWxlZFJl
ZGlyZWN0aW9uKQorICAgIGlmICghbV9yZWRpcmVjdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
QVNTRVJUKG1fZnJhbWUtPnBhZ2UoKSk7Ci0gICAgCi0gICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9
IG1fZnJhbWUtPmxvYWRlcigpOwotCiAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKICAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPnR5cGUgPT0gU2No
ZWR1bGVkUmVkaXJlY3Rpb246OnJlZGlyZWN0aW9uICYmICFsb2FkZXItPmFsbEFuY2VzdG9yc0Fy
ZUNvbXBsZXRlKCkpCisgICAgaWYgKCFtX3JlZGlyZWN0LT5zaG91bGRTdGFydFRpbWVyKG1fZnJh
bWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChtX3NjaGVk
dWxlZFJlZGlyZWN0aW9uLT5kZWxheSk7Ci0KLSAgICBzd2l0Y2ggKG1fc2NoZWR1bGVkUmVkaXJl
Y3Rpb24tPnR5cGUpIHsKLSAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6bG9jYXRp
b25DaGFuZ2U6Ci0gICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJlY3Rpb246OnJlZGlyZWN0aW9u
OgotICAgICAgICAgICAgaWYgKG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPnRvbGRDbGllbnQpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9zY2hlZHVsZWRSZWRpcmVjdGlv
bi0+dG9sZENsaWVudCA9IHRydWU7Ci0gICAgICAgICAgICBsb2FkZXItPmNsaWVudFJlZGlyZWN0
ZWQoS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPnVybCksCi0g
ICAgICAgICAgICAgICAgbV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+ZGVsYXksCi0gICAgICAgICAg
ICAgICAgY3VycmVudFRpbWUoKSArIG1fdGltZXIubmV4dEZpcmVJbnRlcnZhbCgpLAotICAgICAg
ICAgICAgICAgIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPmxvY2tCYWNrRm9yd2FyZExpc3QpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpm
b3JtU3VibWlzc2lvbjoKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBtYWtlIHNlbnNl
IHRvIHJlcG9ydCBmb3JtIHN1Ym1pc3Npb25zIGFzIGNsaWVudCByZWRpcmVjdHMgdG9vLgotICAg
ICAgICAgICAgLy8gQnV0IHdlIGRpZG4ndCBkbyB0aGF0IGluIHRoZSBwYXN0IHdoZW4gZm9ybSBz
dWJtaXNzaW9uIHVzZWQgYSBzZXBhcmF0ZSBkZWxheQotICAgICAgICAgICAgLy8gbWVjaGFuaXNt
LCBzbyBkb2luZyBpdCB3aWxsIGJlIGEgYmVoYXZpb3IgY2hhbmdlLgotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpoaXN0b3J5TmF2aWdhdGlv
bjoKLSAgICAgICAgICAgIC8vIERvbid0IHJlcG9ydCBoaXN0b3J5IG5hdmlnYXRpb25zLgotICAg
ICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBt
X3RpbWVyLnN0YXJ0T25lU2hvdChtX3JlZGlyZWN0LT5kZWxheSgpKTsKKyAgICBtX3JlZGlyZWN0
LT5kaWRTdGFydFRpbWVyKG1fZnJhbWUsICZtX3RpbWVyKTsKIH0KIAogdm9pZCBSZWRpcmVjdFNj
aGVkdWxlcjo6Y2FuY2VsKGJvb2wgbmV3TG9hZEluUHJvZ3Jlc3MpCiB7CiAgICAgbV90aW1lci5z
dG9wKCk7CiAKLSAgICBPd25QdHI8U2NoZWR1bGVkUmVkaXJlY3Rpb24+IHJlZGlyZWN0aW9uKG1f
c2NoZWR1bGVkUmVkaXJlY3Rpb24ucmVsZWFzZSgpKTsKLSAgICBpZiAocmVkaXJlY3Rpb24gJiYg
cmVkaXJlY3Rpb24tPnRvbGRDbGllbnQpCi0gICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGll
bnRSZWRpcmVjdENhbmNlbGxlZE9yRmluaXNoZWQobmV3TG9hZEluUHJvZ3Jlc3MpOworICAgIE93
blB0cjxTY2hlZHVsZWROYXZpZ2F0aW9uPiByZWRpcmVjdChtX3JlZGlyZWN0LnJlbGVhc2UoKSk7
CisgICAgaWYgKHJlZGlyZWN0KQorICAgICAgICByZWRpcmVjdC0+ZGlkU3RvcFRpbWVyKG1fZnJh
bWUsIG5ld0xvYWRJblByb2dyZXNzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuaCBiL1dlYkNvcmUvbG9h
ZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmgKaW5kZXggMDA1YTE3My4uYWMzNzMxYyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuaAorKysgYi9XZWJDb3JlL2xvYWRl
ci9SZWRpcmVjdFNjaGVkdWxlci5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEZyYW1lOwogY2xh
c3MgU3RyaW5nOwogCiBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKLXN0cnVjdCBTY2hlZHVsZWRS
ZWRpcmVjdGlvbjsKK2NsYXNzIFNjaGVkdWxlZE5hdmlnYXRpb247CiAKIGNsYXNzIFJlZGlyZWN0
U2NoZWR1bGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKQEAgLTY3LDEzICs2Nywx
MyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPFJlZGly
ZWN0U2NoZWR1bGVyPiopOwotICAgIHZvaWQgc2NoZWR1bGUoUGFzc093blB0cjxTY2hlZHVsZWRS
ZWRpcmVjdGlvbj4pOworICAgIHZvaWQgc2NoZWR1bGUoUGFzc093blB0cjxTY2hlZHVsZWROYXZp
Z2F0aW9uPik7CiAKICAgICBzdGF0aWMgYm9vbCBtdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChGcmFt
ZSogdGFyZ2V0RnJhbWUpOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgVGltZXI8UmVkaXJl
Y3RTY2hlZHVsZXI+IG1fdGltZXI7Ci0gICAgT3duUHRyPFNjaGVkdWxlZFJlZGlyZWN0aW9uPiBt
X3NjaGVkdWxlZFJlZGlyZWN0aW9uOworICAgIE93blB0cjxTY2hlZHVsZWROYXZpZ2F0aW9uPiBt
X3JlZGlyZWN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52144</attachid>
            <date>2010-03-31 02:04:32 -0700</date>
            <delta_ts>2010-03-31 11:08:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36874-20100331020431.patch</filename>
            <type>text/plain</type>
            <size>23472</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NWQ0Y2Y0Yy4uMmM1NWNiOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMC0wMy0zMSAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENsZWFudXAgUmVkaXJlY3RTY2hlZHVsZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2ODc0CisKKyAgICAgICBSZW1vdmVkIHRo
ZSBudXR0eSBTY2hlZHVsZWRSZWRpcmVjdGlvbiBzdHJ1Y3QgaW4gZmF2b3Igb2YgYSBoaWVyYXJj
aHkKKyAgICAgICBvZiBjbGFzc2VzIHRvIHJlcHJlc2VudCB0aGUgdmFyaW91cyBraW5kcyBvZiBz
Y2hlZHVsZWQgcmVkaXJlY3RzLgorICAgICAgIERvaW5nIHRoaXMgbGV0cyB1cyBnZXQgcmlkIG9m
IHRoZSBwc2V1ZG8gUlRUSSBzd2l0Y2ggc3RhdGVtZW50cyBvbgorICAgICAgICJ0eXBlIiBpbiBm
YXZvdXIgb2YgY2FsbGluZyB2aXJ0dWFsIGZ1bmN0aW9ucy4KKworICAgICAgIE5vIG5ldyB0ZXN0
cyBiZWNhdXNlIHRoaXMgY2hhbmdlIHNob3VsZCBiZSBBUEkgaWRlbnRpY2FsIHdpdGggdGhlCisg
ICAgICAgZXhpc3RpbmcgUmVkaXJlY3RTY2hlZHVsZXIuCisKKyAgICAgICAgKiBsb2FkZXIvUmVk
aXJlY3RTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkTmF2aWdhdGlv
bjo6U2NoZWR1bGVkTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWROYXZp
Z2F0aW9uOjp+U2NoZWR1bGVkTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVs
ZWROYXZpZ2F0aW9uOjppc0xvY2F0aW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVk
dWxlZE5hdmlnYXRpb246OnNob3VsZFN0YXJ0VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2No
ZWR1bGVkTmF2aWdhdGlvbjo6ZGlkU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpTY2hl
ZHVsZWROYXZpZ2F0aW9uOjpkaWRTdG9wVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1
bGVkTmF2aWdhdGlvbjo6ZGVsYXkpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkTmF2aWdh
dGlvbjo6bG9ja0hpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkTmF2aWdhdGlv
bjo6bG9ja0JhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWROYXZp
Z2F0aW9uOjp3YXNEdXJpbmdMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZFVSTE5h
dmlnYXRpb246OlNjaGVkdWxlZFVSTE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2No
ZWR1bGVkVVJMTmF2aWdhdGlvbjo6ZmlyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRV
UkxOYXZpZ2F0aW9uOjpkaWRTdGFydFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxl
ZFVSTE5hdmlnYXRpb246OmRpZFN0b3BUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVs
ZWRVUkxOYXZpZ2F0aW9uOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkVVJMTmF2
aWdhdGlvbjo6cmVmZXJyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkVVJMTmF2aWdh
dGlvbjo6d2FzVXNlckdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkUmVkaXJl
Y3Q6OlNjaGVkdWxlZFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZFJlZGly
ZWN0Ojppc0xvY2F0aW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZFJlZGly
ZWN0OjpzaG91bGRTdGFydFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZExvY2F0
aW9uQ2hhbmdlOjpTY2hlZHVsZWRMb2NhdGlvbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y2hlZHVsZWRSZWZyZXNoOjpTY2hlZHVsZWRSZWZyZXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
aGVkdWxlZFJlZnJlc2g6OmZpcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkSGlzdG9y
eU5hdmlnYXRpb246OlNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uOjpmaXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uOjpTY2hlZHVsZWRGb3JtU3VibWlzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY2hlZHVsZWRGb3JtU3VibWlzc2lvbjo6ZmlyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6cmVkaXJlY3RTY2hlZHVsZWREdXJpbmdMb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjpjbGVhcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6bXVzdExvY2tCYWNrRm9yd2FyZExpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1p
c3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlUmVm
cmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6bG9jYXRpb25DaGFu
Z2VQZW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVs
ZUhpc3RvcnlOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVy
Ojp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjpzY2hl
ZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c3RhcnRUaW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6Y2FuY2VsKToKKyAgICAgICAg
KiBsb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuaDoKKwogMjAxMC0wMy0zMCAgR2F2aW4gQmFycmFj
bG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyIHN0YW1wZWQg
YnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1
bGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcAppbmRleCA0YjQ0
NDIyLi42ZTU4NjA5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxl
ci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuY3BwCkBAIC00Nyw4
NyArNDcsMTU5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IFNjaGVkdWxlZFJl
ZGlyZWN0aW9uIDogTm9uY29weWFibGUgewotICAgIGVudW0gVHlwZSB7IHJlZGlyZWN0aW9uLCBs
b2NhdGlvbkNoYW5nZSwgaGlzdG9yeU5hdmlnYXRpb24sIGZvcm1TdWJtaXNzaW9uIH07Ci0KLSAg
ICBjb25zdCBUeXBlIHR5cGU7Ci0gICAgY29uc3QgZG91YmxlIGRlbGF5OwotICAgIGNvbnN0IFN0
cmluZyB1cmw7Ci0gICAgY29uc3QgU3RyaW5nIHJlZmVycmVyOwotICAgIGNvbnN0IEZyYW1lTG9h
ZFJlcXVlc3QgZnJhbWVSZXF1ZXN0OwotICAgIGNvbnN0IFJlZlB0cjxFdmVudD4gZXZlbnQ7Ci0g
ICAgY29uc3QgUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlOwotICAgIGNvbnN0IGludCBoaXN0
b3J5U3RlcHM7Ci0gICAgY29uc3QgYm9vbCBsb2NrSGlzdG9yeTsKLSAgICBjb25zdCBib29sIGxv
Y2tCYWNrRm9yd2FyZExpc3Q7Ci0gICAgY29uc3QgYm9vbCB3YXNVc2VyR2VzdHVyZTsKLSAgICBj
b25zdCBib29sIHdhc1JlZnJlc2g7Ci0gICAgY29uc3QgYm9vbCB3YXNEdXJpbmdMb2FkOwotICAg
IGJvb2wgdG9sZENsaWVudDsKLQotICAgIFNjaGVkdWxlZFJlZGlyZWN0aW9uKGRvdWJsZSBkZWxh
eSwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3
YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSwgYm9vbCByZWZyZXNoKQotICAgICAgICA6IHR5
cGUocmVkaXJlY3Rpb24pCi0gICAgICAgICwgZGVsYXkoZGVsYXkpCi0gICAgICAgICwgdXJsKHVy
bCkKLSAgICAgICAgLCBoaXN0b3J5U3RlcHMoMCkKLSAgICAgICAgLCBsb2NrSGlzdG9yeShsb2Nr
SGlzdG9yeSkKLSAgICAgICAgLCBsb2NrQmFja0ZvcndhcmRMaXN0KGxvY2tCYWNrRm9yd2FyZExp
c3QpCi0gICAgICAgICwgd2FzVXNlckdlc3R1cmUod2FzVXNlckdlc3R1cmUpCi0gICAgICAgICwg
d2FzUmVmcmVzaChyZWZyZXNoKQotICAgICAgICAsIHdhc0R1cmluZ0xvYWQoZmFsc2UpCi0gICAg
ICAgICwgdG9sZENsaWVudChmYWxzZSkKK2NsYXNzIFNjaGVkdWxlZE5hdmlnYXRpb24gOiBwdWJs
aWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIFNjaGVkdWxlZE5hdmlnYXRpb24oZG91Ymxl
IGRlbGF5LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wg
d2FzRHVyaW5nTG9hZCkKKyAgICAgICAgOiBtX2RlbGF5KGRlbGF5KQorICAgICAgICAsIG1fbG9j
a0hpc3RvcnkobG9ja0hpc3RvcnkpCisgICAgICAgICwgbV9sb2NrQmFja0ZvcndhcmRMaXN0KGxv
Y2tCYWNrRm9yd2FyZExpc3QpCisgICAgICAgICwgbV93YXNEdXJpbmdMb2FkKHdhc0R1cmluZ0xv
YWQpCiAgICAgewotICAgICAgICBBU1NFUlQoIXVybC5pc0VtcHR5KCkpOwogICAgIH0KKyAgICB2
aXJ0dWFsIH5TY2hlZHVsZWROYXZpZ2F0aW9uKCkgeyB9CiAKLSAgICBTY2hlZHVsZWRSZWRpcmVj
dGlvbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBsb2Nr
SGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBib29sIHdhc1VzZXJHZXN0dXJlLCBi
b29sIHJlZnJlc2gsIGJvb2wgZHVyaW5nTG9hZCkKLSAgICAgICAgOiB0eXBlKGxvY2F0aW9uQ2hh
bmdlKQotICAgICAgICAsIGRlbGF5KDApCi0gICAgICAgICwgdXJsKHVybCkKLSAgICAgICAgLCBy
ZWZlcnJlcihyZWZlcnJlcikKLSAgICAgICAgLCBoaXN0b3J5U3RlcHMoMCkKLSAgICAgICAgLCBs
b2NrSGlzdG9yeShsb2NrSGlzdG9yeSkKLSAgICAgICAgLCBsb2NrQmFja0ZvcndhcmRMaXN0KGxv
Y2tCYWNrRm9yd2FyZExpc3QpCi0gICAgICAgICwgd2FzVXNlckdlc3R1cmUod2FzVXNlckdlc3R1
cmUpCi0gICAgICAgICwgd2FzUmVmcmVzaChyZWZyZXNoKQotICAgICAgICAsIHdhc0R1cmluZ0xv
YWQoZHVyaW5nTG9hZCkKLSAgICAgICAgLCB0b2xkQ2xpZW50KGZhbHNlKQorICAgIHZpcnR1YWwg
dm9pZCBmaXJlKEZyYW1lKikgPSAwOworCisgICAgLy8gVGhpcyBtZXRob2QgZmVlbHMgYSBiaXQg
bGlrZSBSVFRJLCBidXQgSSBkb24ndCBzZWUgYSBjbGVhbmVyIHdheSB0byBnZXQgdGhlIGJlaGF2
aW9yIHdlIHdhbnQuCisgICAgdmlydHVhbCBib29sIGlzTG9jYXRpb25DaGFuZ2UoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RhcnRUaW1lcihGcmFt
ZSopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRUaW1lcihGcmFt
ZSosIFRpbWVyPFJlZGlyZWN0U2NoZWR1bGVyPiopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRT
dG9wVGltZXIoRnJhbWUqLCBib29sIC8qIG5ld0xvYWRJblByb2dyZXNzICovKSB7IH0KKworICAg
IGRvdWJsZSBkZWxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsYXk7IH0KKyAgICBib29sIGxvY2tI
aXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9sb2NrSGlzdG9yeTsgfQorICAgIGJvb2wgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9ja0JhY2tGb3J3YXJkTGlzdDsgfQor
ICAgIGJvb2wgd2FzRHVyaW5nTG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzRHVyaW5nTG9hZDsg
fQorCitwcml2YXRlOgorICAgIGRvdWJsZSBtX2RlbGF5OworICAgIGJvb2wgbV9sb2NrSGlzdG9y
eTsKKyAgICBib29sIG1fbG9ja0JhY2tGb3J3YXJkTGlzdDsKKyAgICBib29sIG1fd2FzRHVyaW5n
TG9hZDsKK307CisKK2NsYXNzIFNjaGVkdWxlZFVSTE5hdmlnYXRpb24gOiBwdWJsaWMgU2NoZWR1
bGVkTmF2aWdhdGlvbiB7CitwdWJsaWM6CisgICAgU2NoZWR1bGVkVVJMTmF2aWdhdGlvbihkb3Vi
bGUgZGVsYXksIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29s
IGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzVXNlckdlc3R1
cmUsIGJvb2wgZHVyaW5nTG9hZCkKKyAgICAgICAgOiBTY2hlZHVsZWROYXZpZ2F0aW9uKGRlbGF5
LCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkKKyAgICAgICAg
LCBtX3VybCh1cmwpCisgICAgICAgICwgbV9yZWZlcnJlcihyZWZlcnJlcikKKyAgICAgICAgLCBt
X3dhc1VzZXJHZXN0dXJlKHdhc1VzZXJHZXN0dXJlKQorICAgICAgICAsIG1faGF2ZVRvbGRDbGll
bnQoZmFsc2UpCiAgICAgewotICAgICAgICBBU1NFUlQoIXVybC5pc0VtcHR5KCkpOwogICAgIH0K
IAotICAgIGV4cGxpY2l0IFNjaGVkdWxlZFJlZGlyZWN0aW9uKGludCBoaXN0b3J5TmF2aWdhdGlv
blN0ZXBzKQotICAgICAgICA6IHR5cGUoaGlzdG9yeU5hdmlnYXRpb24pCi0gICAgICAgICwgZGVs
YXkoMCkKLSAgICAgICAgLCBoaXN0b3J5U3RlcHMoaGlzdG9yeU5hdmlnYXRpb25TdGVwcykKLSAg
ICAgICAgLCBsb2NrSGlzdG9yeShmYWxzZSkKLSAgICAgICAgLCBsb2NrQmFja0ZvcndhcmRMaXN0
KGZhbHNlKQotICAgICAgICAsIHdhc1VzZXJHZXN0dXJlKGZhbHNlKQotICAgICAgICAsIHdhc1Jl
ZnJlc2goZmFsc2UpCi0gICAgICAgICwgd2FzRHVyaW5nTG9hZChmYWxzZSkKLSAgICAgICAgLCB0
b2xkQ2xpZW50KGZhbHNlKQorICAgIHZpcnR1YWwgdm9pZCBmaXJlKEZyYW1lKiBmcmFtZSkKICAg
ICB7CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2hhbmdlTG9jYXRpb24oS1VSTChQYXJzZWRV
UkxTdHJpbmcsIG1fdXJsKSwgbV9yZWZlcnJlciwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3
YXJkTGlzdCgpLCBtX3dhc1VzZXJHZXN0dXJlLCBmYWxzZSk7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIGRpZFN0YXJ0VGltZXIoRnJhbWUqIGZyYW1lLCBUaW1lcjxSZWRpcmVjdFNjaGVkdWxl
cj4qIHRpbWVyKQorICAgIHsKKyAgICAgICAgaWYgKG1faGF2ZVRvbGRDbGllbnQpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1faGF2ZVRvbGRDbGllbnQgPSB0cnVlOworICAgICAgICBm
cmFtZS0+bG9hZGVyKCktPmNsaWVudFJlZGlyZWN0ZWQoS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1f
dXJsKSwgZGVsYXkoKSwgY3VycmVudFRpbWUoKSArIHRpbWVyLT5uZXh0RmlyZUludGVydmFsKCks
IGxvY2tCYWNrRm9yd2FyZExpc3QoKSk7CiAgICAgfQogCi0gICAgU2NoZWR1bGVkUmVkaXJlY3Rp
b24oY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVSZXF1ZXN0LAotICAgICAgICAgICAgYm9v
bCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBQYXNzUmVmUHRyPEV2ZW50
PiBldmVudCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwKLSAgICAgICAgICAgIGJv
b2wgZHVyaW5nTG9hZCkKLSAgICAgICAgOiB0eXBlKGZvcm1TdWJtaXNzaW9uKQotICAgICAgICAs
IGRlbGF5KDApCi0gICAgICAgICwgZnJhbWVSZXF1ZXN0KGZyYW1lUmVxdWVzdCkKLSAgICAgICAg
LCBldmVudChldmVudCkKLSAgICAgICAgLCBmb3JtU3RhdGUoZm9ybVN0YXRlKQotICAgICAgICAs
IGhpc3RvcnlTdGVwcygwKQotICAgICAgICAsIGxvY2tIaXN0b3J5KGxvY2tIaXN0b3J5KQotICAg
ICAgICAsIGxvY2tCYWNrRm9yd2FyZExpc3QobG9ja0JhY2tGb3J3YXJkTGlzdCkKLSAgICAgICAg
LCB3YXNVc2VyR2VzdHVyZShmYWxzZSkKLSAgICAgICAgLCB3YXNSZWZyZXNoKGZhbHNlKQotICAg
ICAgICAsIHdhc0R1cmluZ0xvYWQoZHVyaW5nTG9hZCkKLSAgICAgICAgLCB0b2xkQ2xpZW50KGZh
bHNlKQorICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wVGltZXIoRnJhbWUqIGZyYW1lLCBib29sIG5l
d0xvYWRJblByb2dyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2hhdmVUb2xkQ2xpZW50KQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudFJlZGly
ZWN0Q2FuY2VsbGVkT3JGaW5pc2hlZChuZXdMb2FkSW5Qcm9ncmVzcyk7CisgICAgfQorCisgICAg
U3RyaW5nIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgU3RyaW5nIHJlZmVycmVy
KCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcnJlcjsgfQorICAgIGJvb2wgd2FzVXNlckdlc3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX3dhc1VzZXJHZXN0dXJlOyB9CisKK3ByaXZhdGU6CisgICAgU3Ry
aW5nIG1fdXJsOworICAgIFN0cmluZyBtX3JlZmVycmVyOworICAgIGJvb2wgbV93YXNVc2VyR2Vz
dHVyZTsKKyAgICBib29sIG1faGF2ZVRvbGRDbGllbnQ7Cit9OworCitjbGFzcyBTY2hlZHVsZWRS
ZWRpcmVjdCA6IHB1YmxpYyBTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uIHsKK3B1YmxpYzoKKyAgICBT
Y2hlZHVsZWRSZWRpcmVjdChkb3VibGUgZGVsYXksIGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGxv
Y2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzVXNlckdlc3R1cmUp
CisgICAgICAgIDogU2NoZWR1bGVkVVJMTmF2aWdhdGlvbihkZWxheSwgdXJsLCBTdHJpbmcoKSwg
bG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHdhc1VzZXJHZXN0dXJlLCBmYWxzZSkg
eyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbkNoYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZFN0YXJ0VGltZXIoRnJhbWUqIGZyYW1l
KSB7IHJldHVybiBmcmFtZS0+bG9hZGVyKCktPmFsbEFuY2VzdG9yc0FyZUNvbXBsZXRlKCk7IH0K
K307CisKK2NsYXNzIFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlIDogcHVibGljIFNjaGVkdWxlZFVS
TE5hdmlnYXRpb24geworcHVibGljOgorICAgIFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlKGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxvY2tIaXN0b3J5LCBi
b29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzVXNlckdlc3R1cmUsIGJvb2wgZHVyaW5n
TG9hZCkKKyAgICAgICAgOiBTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uKDAuMCwgdXJsLCByZWZlcnJl
ciwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHdhc1VzZXJHZXN0dXJlLCBkdXJp
bmdMb2FkKSB7IH0KK307CisKK2NsYXNzIFNjaGVkdWxlZFJlZnJlc2ggOiBwdWJsaWMgU2NoZWR1
bGVkVVJMTmF2aWdhdGlvbiB7CitwdWJsaWM6CisgICAgU2NoZWR1bGVkUmVmcmVzaChjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCB3YXNVc2VyR2VzdHVyZSkK
KyAgICAgICAgOiBTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uKDAuMCwgdXJsLCByZWZlcnJlciwgdHJ1
ZSwgdHJ1ZSwgd2FzVXNlckdlc3R1cmUsIGZhbHNlKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBm
aXJlKEZyYW1lKiBmcmFtZSkKKyAgICB7CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2hhbmdl
TG9jYXRpb24oS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCgpKSwgcmVmZXJyZXIoKSwgbG9ja0hp
c3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCB3YXNVc2VyR2VzdHVyZSgpLCB0cnVlKTsK
KyAgICB9Cit9OworCitjbGFzcyBTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbiA6IHB1YmxpYyBT
Y2hlZHVsZWROYXZpZ2F0aW9uIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTY2hlZHVsZWRIaXN0
b3J5TmF2aWdhdGlvbihpbnQgaGlzdG9yeVN0ZXBzKSA6IFNjaGVkdWxlZE5hdmlnYXRpb24oMCwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSksIG1faGlzdG9yeVN0ZXBzKGhpc3RvcnlTdGVwcykgeyB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgZmlyZShGcmFtZSogZnJhbWUpCisgICAgeworICAgICAgICBGcmFt
ZUxvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOworICAgICAgICBpZiAoIW1faGlzdG9y
eVN0ZXBzKSB7CisgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGdvKDApIGZyb20gYSBm
cmFtZSAtPiByZWxvYWQgb25seSB0aGUgZnJhbWUKKyAgICAgICAgICAgIGxvYWRlci0+dXJsU2Vs
ZWN0ZWQobG9hZGVyLT51cmwoKSwgIiIsIDAsIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2Fy
ZExpc3QoKSwgZmFsc2UsIFNlbmRSZWZlcnJlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgLy8gZ28oaSE9MCkgZnJvbSBhIGZyYW1lIG5hdmlnYXRlcyBpbnRvIHRo
ZSBoaXN0b3J5IG9mIHRoZSBmcmFtZSBvbmx5LAorICAgICAgICAvLyBpbiBib3RoIElFIGFuZCBO
UyAoYnV0IG5vdCBpbiBNb3ppbGxhKS4gV2UgY2FuJ3QgZWFzaWx5IGRvIHRoYXQuCisgICAgICAg
IGZyYW1lLT5wYWdlKCktPmdvQmFja09yRm9yd2FyZChtX2hpc3RvcnlTdGVwcyk7CisgICAgfQor
Citwcml2YXRlOgorICAgIGludCBtX2hpc3RvcnlTdGVwczsKK307CisKK2NsYXNzIFNjaGVkdWxl
ZEZvcm1TdWJtaXNzaW9uIDogcHVibGljIFNjaGVkdWxlZE5hdmlnYXRpb24geworcHVibGljOgor
ICAgIFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1l
UmVxdWVzdCwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBQYXNz
UmVmUHRyPEV2ZW50PiBldmVudCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgYm9v
bCBkdXJpbmdMb2FkKQorICAgICAgICA6IFNjaGVkdWxlZE5hdmlnYXRpb24oMCwgbG9ja0hpc3Rv
cnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQpCisgICAgICAgICwgbV9mcmFtZVJl
cXVlc3QoZnJhbWVSZXF1ZXN0KQorICAgICAgICAsIG1fZXZlbnQoZXZlbnQpCisgICAgICAgICwg
bV9mb3JtU3RhdGUoZm9ybVN0YXRlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFmcmFtZVJlcXVl
c3QuaXNFbXB0eSgpKTsKLSAgICAgICAgQVNTRVJUKHRoaXMtPmZvcm1TdGF0ZSk7CisgICAgICAg
IEFTU0VSVChtX2Zvcm1TdGF0ZSk7CiAgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGZpcmUoRnJh
bWUqIGZyYW1lKQorICAgIHsKKyAgICAgICAgLy8gVGhlIHN1Ym1pdEZvcm0gZnVuY3Rpb24gd2ls
bCBmaW5kIGEgdGFyZ2V0IGZyYW1lIGJlZm9yZSB1c2luZyB0aGUgcmVkaXJlY3Rpb24gdGltZXIu
CisgICAgICAgIC8vIE5vdyB0aGF0IHRoZSB0aW1lciBoYXMgZmlyZWQsIHdlIG5lZWQgdG8gcmVw
ZWF0IHRoZSBzZWN1cml0eSBjaGVjayB3aGljaCBub3JtYWxseSBpcyBkb25lIHdoZW4KKyAgICAg
ICAgLy8gc2VsZWN0aW5nIGEgdGFyZ2V0LCBpbiBjYXNlIGNvbmRpdGlvbnMgaGF2ZSBjaGFuZ2Vk
LiBPdGhlciBjb2RlIHBhdGhzIGF2b2lkIHRoaXMgYnkgdGFyZ2V0aW5nCisgICAgICAgIC8vIHdp
dGhvdXQgbGVhdmluZyBhIHRpbWUgd2luZG93LiBJZiB3ZSBmYWlsIHRoZSBjaGVjayBqdXN0IHNp
bGVudGx5IGRyb3AgdGhlIGZvcm0gc3VibWlzc2lvbi4KKyAgICAgICAgaWYgKCFtX2Zvcm1TdGF0
ZS0+c291cmNlRnJhbWUoKS0+bG9hZGVyKCktPnNob3VsZEFsbG93TmF2aWdhdGlvbihmcmFtZSkp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+bG9hZEZyYW1l
UmVxdWVzdChtX2ZyYW1lUmVxdWVzdCwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlz
dCgpLCBtX2V2ZW50LCBtX2Zvcm1TdGF0ZSwgU2VuZFJlZmVycmVyKTsKKyAgICB9CisKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGRpZFN0YXJ0VGltZXI/IEl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8g
cmVwb3J0IGZvcm0KKyAgICAvLyBzdWJtaXNzaW9ucyBhcyBjbGllbnQgcmVkaXJlY3RzIHRvby4g
QnV0IHdlIGRpZG4ndCBkbyB0aGF0IGluIHRoZSBwYXN0CisgICAgLy8gd2hlbiBmb3JtIHN1Ym1p
c3Npb24gdXNlZCBhIHNlcGFyYXRlIGRlbGF5IG1lY2hhbmlzbSwgc28gZG9pbmcgaXQgd2lsbAor
ICAgIC8vIGJlIGEgYmVoYXZpb3IgY2hhbmdlLgorCitwcml2YXRlOgorICAgIGNvbnN0IEZyYW1l
TG9hZFJlcXVlc3QgbV9mcmFtZVJlcXVlc3Q7CisgICAgY29uc3QgUmVmUHRyPEV2ZW50PiBtX2V2
ZW50OworICAgIGNvbnN0IFJlZlB0cjxGb3JtU3RhdGU+IG1fZm9ybVN0YXRlOwogfTsKIAogUmVk
aXJlY3RTY2hlZHVsZXI6OlJlZGlyZWN0U2NoZWR1bGVyKEZyYW1lKiBmcmFtZSkKQEAgLTE0Miwy
OSArMjE0LDI3IEBAIFJlZGlyZWN0U2NoZWR1bGVyOjp+UmVkaXJlY3RTY2hlZHVsZXIoKQogCiBi
b29sIFJlZGlyZWN0U2NoZWR1bGVyOjpyZWRpcmVjdFNjaGVkdWxlZER1cmluZ0xvYWQoKQogewot
ICAgIHJldHVybiBtX3NjaGVkdWxlZFJlZGlyZWN0aW9uICYmIG1fc2NoZWR1bGVkUmVkaXJlY3Rp
b24tPndhc0R1cmluZ0xvYWQ7CisgICAgcmV0dXJuIG1fcmVkaXJlY3QgJiYgbV9yZWRpcmVjdC0+
d2FzRHVyaW5nTG9hZCgpOwogfQogCiB2b2lkIFJlZGlyZWN0U2NoZWR1bGVyOjpjbGVhcigpCiB7
CiAgICAgbV90aW1lci5zdG9wKCk7Ci0gICAgbV9zY2hlZHVsZWRSZWRpcmVjdGlvbi5jbGVhcigp
OworICAgIG1fcmVkaXJlY3QuY2xlYXIoKTsKIH0KIAogdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6
c2NoZWR1bGVSZWRpcmVjdChkb3VibGUgZGVsYXksIGNvbnN0IFN0cmluZyYgdXJsKQogewotICAg
IGlmIChkZWxheSA8IDAgfHwgZGVsYXkgPiBJTlRfTUFYIC8gMTAwMCkKLSAgICAgICAgcmV0dXJu
OwotICAgICAgICAKICAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwot
CisgICAgaWYgKGRlbGF5IDwgMCB8fCBkZWxheSA+IElOVF9NQVggLyAxMDAwKQorICAgICAgICBy
ZXR1cm47CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IFdlIHdhbnQgYSBuZXcgaGlzdG9yeSBpdGVtIGlmIHRoZSByZWZyZXNoIHRpbWVvdXQgaXMgPiAx
IHNlY29uZC4KLSAgICBpZiAoIW1fc2NoZWR1bGVkUmVkaXJlY3Rpb24gfHwgZGVsYXkgPD0gbV9z
Y2hlZHVsZWRSZWRpcmVjdGlvbi0+ZGVsYXkpCi0gICAgICAgIHNjaGVkdWxlKG5ldyBTY2hlZHVs
ZWRSZWRpcmVjdGlvbihkZWxheSwgdXJsLCB0cnVlLCBkZWxheSA8PSAxLCBmYWxzZSwgZmFsc2Up
KTsKKyAgICBpZiAoIW1fcmVkaXJlY3QgfHwgZGVsYXkgPD0gbV9yZWRpcmVjdC0+ZGVsYXkoKSkK
KyAgICAgICAgc2NoZWR1bGUobmV3IFNjaGVkdWxlZFJlZGlyZWN0KGRlbGF5LCB1cmwsIHRydWUs
IGRlbGF5IDw9IDEsIGZhbHNlKSk7CiB9CiAKIGJvb2wgUmVkaXJlY3RTY2hlZHVsZXI6Om11c3RM
b2NrQmFja0ZvcndhcmRMaXN0KEZyYW1lKiB0YXJnZXRGcmFtZSkKQEAgLTE3Miw3ICsyNDIsNyBA
QCBib29sIFJlZGlyZWN0U2NoZWR1bGVyOjptdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChGcmFtZSog
dGFyZ2V0RnJhbWUpCiAgICAgLy8gTmF2aWdhdGlvbiBvZiBhIHN1YmZyYW1lIGR1cmluZyBsb2Fk
aW5nIG9mIGFuIGFuY2VzdG9yIGZyYW1lIGRvZXMgbm90IGNyZWF0ZSBhIG5ldyBiYWNrL2Zvcndh
cmQgaXRlbS4KICAgICAvLyBUaGUgZGVmaW5pdGlvbiBvZiAiZHVyaW5nIGxvYWQiIGlzIGFueSB0
aW1lIGJlZm9yZSBhbGwgaGFuZGxlcnMgZm9yIHRoZSBsb2FkIGV2ZW50IGhhdmUgYmVlbiBydW4u
CiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk1
NyBmb3IgdGhlIG9yaWdpbmFsIG1vdGl2YXRpb24gZm9yIHRoaXMuCi0gICAgCisKICAgICBmb3Ig
KEZyYW1lKiBhbmNlc3RvciA9IHRhcmdldEZyYW1lLT50cmVlKCktPnBhcmVudCgpOyBhbmNlc3Rv
cjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+dHJlZSgpLT5wYXJlbnQoKSkgewogICAgICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBhbmNlc3Rvci0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYgKCFhbmNl
c3Rvci0+bG9hZGVyKCktPmlzQ29tcGxldGUoKSB8fCAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnBy
b2Nlc3NpbmdMb2FkRXZlbnQoKSkpCkBAIC0xODUsNyArMjU1LDYgQEAgdm9pZCBSZWRpcmVjdFNj
aGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJgogewogICAgIGlmICghbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm47Ci0K
ICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMDUsNyArMjc0
LDcgQEAgdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgIC8vIFRoaXMgbWF5IGhhcHBlbiB3aGVu
IGEgZnJhbWUgY2hhbmdlcyB0aGUgbG9jYXRpb24gb2YgYW5vdGhlciBmcmFtZS4KICAgICBib29s
IGR1cmluZ0xvYWQgPSAhbG9hZGVyLT5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKTsK
IAotICAgIHNjaGVkdWxlKG5ldyBTY2hlZHVsZWRSZWRpcmVjdGlvbih1cmwsIHJlZmVycmVyLCBs
b2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgd2FzVXNlckdlc3R1cmUsIGZhbHNlLCBk
dXJpbmdMb2FkKSk7CisgICAgc2NoZWR1bGUobmV3IFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlKHVy
bCwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCB3YXNVc2VyR2Vz
dHVyZSwgZHVyaW5nTG9hZCkpOwogfQogCiB2b2lkIFJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVs
ZUZvcm1TdWJtaXNzaW9uKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lUmVxdWVzdCwKQEAg
LTIyNywzNyArMjk2LDI1IEBAIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1
Ym1pc3Npb24oY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVSZXF1CiAKICAgICBib29sIGxv
Y2tCYWNrRm9yd2FyZExpc3QgPSBtdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChtX2ZyYW1lKSB8fCAo
Zm9ybVN0YXRlLT5mb3JtU3VibWlzc2lvblRyaWdnZXIoKSA9PSBTdWJtaXR0ZWRCeUphdmFTY3Jp
cHQgJiYgbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSk7CiAKLSAgICBzY2hlZHVsZShuZXcgU2No
ZWR1bGVkUmVkaXJlY3Rpb24oZnJhbWVSZXF1ZXN0LCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3
YXJkTGlzdCwgZXZlbnQsIGZvcm1TdGF0ZSwgZHVyaW5nTG9hZCkpOworICAgIHNjaGVkdWxlKG5l
dyBTY2hlZHVsZWRGb3JtU3VibWlzc2lvbihmcmFtZVJlcXVlc3QsIGxvY2tIaXN0b3J5LCBsb2Nr
QmFja0ZvcndhcmRMaXN0LCBldmVudCwgZm9ybVN0YXRlLCBkdXJpbmdMb2FkKSk7CiB9CiAKIHZv
aWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaChib29sIHdhc1VzZXJHZXN0dXJl
KQogewogICAgIGlmICghbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCiAg
ICAgY29uc3QgS1VSTCYgdXJsID0gbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpOwotCiAgICAgaWYg
KHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNjaGVkdWxlKG5ldyBTY2hl
ZHVsZWRSZWRpcmVjdGlvbih1cmwuc3RyaW5nKCksIG1fZnJhbWUtPmxvYWRlcigpLT5vdXRnb2lu
Z1JlZmVycmVyKCksIHRydWUsIHRydWUsIHdhc1VzZXJHZXN0dXJlLCB0cnVlLCBmYWxzZSkpOwor
ICAgIHNjaGVkdWxlKG5ldyBTY2hlZHVsZWRSZWZyZXNoKHVybC5zdHJpbmcoKSwgbV9mcmFtZS0+
bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSwgd2FzVXNlckdlc3R1cmUpKTsKIH0KIAogYm9v
bCBSZWRpcmVjdFNjaGVkdWxlcjo6bG9jYXRpb25DaGFuZ2VQZW5kaW5nKCkKIHsKLSAgICBpZiAo
IW1fc2NoZWR1bGVkUmVkaXJlY3Rpb24pCisgICAgaWYgKCFtX3JlZGlyZWN0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBzd2l0Y2ggKG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPnR5cGUp
IHsKLSAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6cmVkaXJlY3Rpb246Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJlY3Rpb246
Omhpc3RvcnlOYXZpZ2F0aW9uOgotICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjps
b2NhdGlvbkNoYW5nZToKLSAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6Zm9ybVN1
Ym1pc3Npb246Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3JlZGlyZWN0LT5p
c0xvY2F0aW9uQ2hhbmdlKCk7CiB9CiAKIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxl
SGlzdG9yeU5hdmlnYXRpb24oaW50IHN0ZXBzKQpAQCAtMjg0LDExOSArMzQxLDY0IEBAIHZvaWQg
UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24oaW50IHN0ZXBzKQog
I2VuZGlmCiAgICAgCiAgICAgLy8gSW4gYWxsIG90aGVyIGNhc2VzLCBzY2hlZHVsZSB0aGUgaGlz
dG9yeSB0cmF2ZXJzYWwgdG8gb2NjdXIgYXN5bmNocm9ub3VzbHkuCi0gICAgc2NoZWR1bGUobmV3
IFNjaGVkdWxlZFJlZGlyZWN0aW9uKHN0ZXBzKSk7CisgICAgc2NoZWR1bGUobmV3IFNjaGVkdWxl
ZEhpc3RvcnlOYXZpZ2F0aW9uKHN0ZXBzKSk7CiB9CiAKIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6
OnRpbWVyRmlyZWQoVGltZXI8UmVkaXJlY3RTY2hlZHVsZXI+KikKIHsKICAgICBpZiAoIW1fZnJh
bWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKS0+
ZGVmZXJzTG9hZGluZygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBPd25QdHI8U2NoZWR1bGVk
UmVkaXJlY3Rpb24+IHJlZGlyZWN0aW9uKG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24ucmVsZWFzZSgp
KTsKLSAgICBGcmFtZUxvYWRlciogbG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCk7Ci0KLSAgICBz
d2l0Y2ggKHJlZGlyZWN0aW9uLT50eXBlKSB7Ci0gICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJl
Y3Rpb246OnJlZGlyZWN0aW9uOgotICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjps
b2NhdGlvbkNoYW5nZToKLSAgICAgICAgICAgIGxvYWRlci0+Y2hhbmdlTG9jYXRpb24oS1VSTChQ
YXJzZWRVUkxTdHJpbmcsIHJlZGlyZWN0aW9uLT51cmwpLCByZWRpcmVjdGlvbi0+cmVmZXJyZXIs
Ci0gICAgICAgICAgICAgICAgcmVkaXJlY3Rpb24tPmxvY2tIaXN0b3J5LCByZWRpcmVjdGlvbi0+
bG9ja0JhY2tGb3J3YXJkTGlzdCwgcmVkaXJlY3Rpb24tPndhc1VzZXJHZXN0dXJlLCByZWRpcmVj
dGlvbi0+d2FzUmVmcmVzaCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgU2No
ZWR1bGVkUmVkaXJlY3Rpb246Omhpc3RvcnlOYXZpZ2F0aW9uOgotICAgICAgICAgICAgaWYgKHJl
ZGlyZWN0aW9uLT5oaXN0b3J5U3RlcHMgPT0gMCkgewotICAgICAgICAgICAgICAgIC8vIFNwZWNp
YWwgY2FzZSBmb3IgZ28oMCkgZnJvbSBhIGZyYW1lIC0+IHJlbG9hZCBvbmx5IHRoZSBmcmFtZQot
ICAgICAgICAgICAgICAgIGxvYWRlci0+dXJsU2VsZWN0ZWQobG9hZGVyLT51cmwoKSwgIiIsIDAs
IHJlZGlyZWN0aW9uLT5sb2NrSGlzdG9yeSwgcmVkaXJlY3Rpb24tPmxvY2tCYWNrRm9yd2FyZExp
c3QsIHJlZGlyZWN0aW9uLT53YXNVc2VyR2VzdHVyZSwgU2VuZFJlZmVycmVyKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBnbyhpIT0wKSBm
cm9tIGEgZnJhbWUgbmF2aWdhdGVzIGludG8gdGhlIGhpc3Rvcnkgb2YgdGhlIGZyYW1lIG9ubHks
Ci0gICAgICAgICAgICAvLyBpbiBib3RoIElFIGFuZCBOUyAoYnV0IG5vdCBpbiBNb3ppbGxhKS4g
V2UgY2FuJ3QgZWFzaWx5IGRvIHRoYXQuCi0gICAgICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPmdv
QmFja09yRm9yd2FyZChyZWRpcmVjdGlvbi0+aGlzdG9yeVN0ZXBzKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6Zm9ybVN1Ym1pc3Npb246
Ci0gICAgICAgICAgICAvLyBUaGUgc3VibWl0Rm9ybSBmdW5jdGlvbiB3aWxsIGZpbmQgYSB0YXJn
ZXQgZnJhbWUgYmVmb3JlIHVzaW5nIHRoZSByZWRpcmVjdGlvbiB0aW1lci4KLSAgICAgICAgICAg
IC8vIE5vdyB0aGF0IHRoZSB0aW1lciBoYXMgZmlyZWQsIHdlIG5lZWQgdG8gcmVwZWF0IHRoZSBz
ZWN1cml0eSBjaGVjayB3aGljaCBub3JtYWxseSBpcyBkb25lIHdoZW4KLSAgICAgICAgICAgIC8v
IHNlbGVjdGluZyBhIHRhcmdldCwgaW4gY2FzZSBjb25kaXRpb25zIGhhdmUgY2hhbmdlZC4gT3Ro
ZXIgY29kZSBwYXRocyBhdm9pZCB0aGlzIGJ5IHRhcmdldGluZwotICAgICAgICAgICAgLy8gd2l0
aG91dCBsZWF2aW5nIGEgdGltZSB3aW5kb3cuIElmIHdlIGZhaWwgdGhlIGNoZWNrIGp1c3Qgc2ls
ZW50bHkgZHJvcCB0aGUgZm9ybSBzdWJtaXNzaW9uLgotICAgICAgICAgICAgaWYgKCFyZWRpcmVj
dGlvbi0+Zm9ybVN0YXRlLT5zb3VyY2VGcmFtZSgpLT5sb2FkZXIoKS0+c2hvdWxkQWxsb3dOYXZp
Z2F0aW9uKG1fZnJhbWUpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGxv
YWRlci0+bG9hZEZyYW1lUmVxdWVzdChyZWRpcmVjdGlvbi0+ZnJhbWVSZXF1ZXN0LCByZWRpcmVj
dGlvbi0+bG9ja0hpc3RvcnksIHJlZGlyZWN0aW9uLT5sb2NrQmFja0ZvcndhcmRMaXN0LAotICAg
ICAgICAgICAgICAgIHJlZGlyZWN0aW9uLT5ldmVudCwgcmVkaXJlY3Rpb24tPmZvcm1TdGF0ZSwg
U2VuZFJlZmVycmVyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICBPd25QdHI8U2NoZWR1bGVkTmF2aWdhdGlvbj4gcmVkaXJlY3Qo
bV9yZWRpcmVjdC5yZWxlYXNlKCkpOworICAgIHJlZGlyZWN0LT5maXJlKG1fZnJhbWUpOwogfQog
Ci12b2lkIFJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVsZShQYXNzT3duUHRyPFNjaGVkdWxlZFJl
ZGlyZWN0aW9uPiByZWRpcmVjdGlvbikKK3ZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxl
KFBhc3NPd25QdHI8U2NoZWR1bGVkTmF2aWdhdGlvbj4gcmVkaXJlY3QpCiB7CiAgICAgQVNTRVJU
KG1fZnJhbWUtPnBhZ2UoKSk7Ci0gICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9IG1fZnJhbWUtPmxv
YWRlcigpOwogCiAgICAgLy8gSWYgYSByZWRpcmVjdCB3YXMgc2NoZWR1bGVkIGR1cmluZyBhIGxv
YWQsIHRoZW4gc3RvcCB0aGUgY3VycmVudCBsb2FkLgogICAgIC8vIE90aGVyd2lzZSB3aGVuIHRo
ZSBjdXJyZW50IGxvYWQgdHJhbnNpdGlvbnMgZnJvbSBhIHByb3Zpc2lvbmFsIHRvIGEgCiAgICAg
Ly8gY29tbWl0dGVkIHN0YXRlLCBwZW5kaW5nIHJlZGlyZWN0cyBtYXkgYmUgY2FuY2VsbGVkLiAK
LSAgICBpZiAocmVkaXJlY3Rpb24tPndhc0R1cmluZ0xvYWQpIHsKLSAgICAgICAgaWYgKERvY3Vt
ZW50TG9hZGVyKiBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyID0gbG9hZGVyLT5wcm92aXNpb25h
bERvY3VtZW50TG9hZGVyKCkpCisgICAgaWYgKHJlZGlyZWN0LT53YXNEdXJpbmdMb2FkKCkpIHsK
KyAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyID0g
bV9mcmFtZS0+bG9hZGVyKCktPnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAg
ICAgIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0b3BMb2FkaW5nKCk7Ci0gICAgICAgIGxv
YWRlci0+c3RvcExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3lVbmxvYWRBbmRQYWdlSGlkZSk7ICAg
CisgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGlj
eVVubG9hZEFuZFBhZ2VIaWRlKTsgICAKICAgICB9CiAKICAgICBjYW5jZWwoKTsKLSAgICBtX3Nj
aGVkdWxlZFJlZGlyZWN0aW9uID0gcmVkaXJlY3Rpb247Ci0gICAgaWYgKCFsb2FkZXItPmlzQ29t
cGxldGUoKSAmJiBtX3NjaGVkdWxlZFJlZGlyZWN0aW9uLT50eXBlICE9IFNjaGVkdWxlZFJlZGly
ZWN0aW9uOjpyZWRpcmVjdGlvbikKLSAgICAgICAgbG9hZGVyLT5jb21wbGV0ZWQoKTsKKyAgICBt
X3JlZGlyZWN0ID0gcmVkaXJlY3Q7CisKKyAgICBpZiAoIW1fZnJhbWUtPmxvYWRlcigpLT5pc0Nv
bXBsZXRlKCkgJiYgbV9yZWRpcmVjdC0+aXNMb2NhdGlvbkNoYW5nZSgpKQorICAgICAgICBtX2Zy
YW1lLT5sb2FkZXIoKS0+Y29tcGxldGVkKCk7CisKICAgICBzdGFydFRpbWVyKCk7CiB9CiAKIHZv
aWQgUmVkaXJlY3RTY2hlZHVsZXI6OnN0YXJ0VGltZXIoKQogewotICAgIGlmICghbV9zY2hlZHVs
ZWRSZWRpcmVjdGlvbikKKyAgICBpZiAoIW1fcmVkaXJlY3QpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEFTU0VSVChtX2ZyYW1lLT5wYWdlKCkpOwotICAgIAotICAgIEZyYW1lTG9hZGVyKiBsb2Fk
ZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKLQogICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCiAg
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3NjaGVkdWxlZFJlZGlyZWN0aW9uLT50eXBlID09
IFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpyZWRpcmVjdGlvbiAmJiAhbG9hZGVyLT5hbGxBbmNlc3Rv
cnNBcmVDb21wbGV0ZSgpKQorICAgIGlmICghbV9yZWRpcmVjdC0+c2hvdWxkU3RhcnRUaW1lciht
X2ZyYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV90aW1lci5zdGFydE9uZVNob3QobV9z
Y2hlZHVsZWRSZWRpcmVjdGlvbi0+ZGVsYXkpOwotCi0gICAgc3dpdGNoIChtX3NjaGVkdWxlZFJl
ZGlyZWN0aW9uLT50eXBlKSB7Ci0gICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJlY3Rpb246Omxv
Y2F0aW9uQ2hhbmdlOgotICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpyZWRpcmVj
dGlvbjoKLSAgICAgICAgICAgIGlmIChtX3NjaGVkdWxlZFJlZGlyZWN0aW9uLT50b2xkQ2xpZW50
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fc2NoZWR1bGVkUmVkaXJl
Y3Rpb24tPnRvbGRDbGllbnQgPSB0cnVlOwotICAgICAgICAgICAgbG9hZGVyLT5jbGllbnRSZWRp
cmVjdGVkKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3NjaGVkdWxlZFJlZGlyZWN0aW9uLT51cmwp
LAotICAgICAgICAgICAgICAgIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPmRlbGF5LAotICAgICAg
ICAgICAgICAgIGN1cnJlbnRUaW1lKCkgKyBtX3RpbWVyLm5leHRGaXJlSW50ZXJ2YWwoKSwKLSAg
ICAgICAgICAgICAgICBtX3NjaGVkdWxlZFJlZGlyZWN0aW9uLT5sb2NrQmFja0ZvcndhcmRMaXN0
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlv
bjo6Zm9ybVN1Ym1pc3Npb246Ci0gICAgICAgICAgICAvLyBGSVhNRTogSXQgd291bGQgbWFrZSBz
ZW5zZSB0byByZXBvcnQgZm9ybSBzdWJtaXNzaW9ucyBhcyBjbGllbnQgcmVkaXJlY3RzIHRvby4K
LSAgICAgICAgICAgIC8vIEJ1dCB3ZSBkaWRuJ3QgZG8gdGhhdCBpbiB0aGUgcGFzdCB3aGVuIGZv
cm0gc3VibWlzc2lvbiB1c2VkIGEgc2VwYXJhdGUgZGVsYXkKLSAgICAgICAgICAgIC8vIG1lY2hh
bmlzbSwgc28gZG9pbmcgaXQgd2lsbCBiZSBhIGJlaGF2aW9yIGNoYW5nZS4KLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6aGlzdG9yeU5hdmln
YXRpb246Ci0gICAgICAgICAgICAvLyBEb24ndCByZXBvcnQgaGlzdG9yeSBuYXZpZ2F0aW9ucy4K
LSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgbV90aW1lci5zdGFydE9uZVNob3QobV9yZWRpcmVjdC0+ZGVsYXkoKSk7CisgICAgbV9yZWRp
cmVjdC0+ZGlkU3RhcnRUaW1lcihtX2ZyYW1lLCAmbV90aW1lcik7CiB9CiAKIHZvaWQgUmVkaXJl
Y3RTY2hlZHVsZXI6OmNhbmNlbChib29sIG5ld0xvYWRJblByb2dyZXNzKQogewogICAgIG1fdGlt
ZXIuc3RvcCgpOwogCi0gICAgT3duUHRyPFNjaGVkdWxlZFJlZGlyZWN0aW9uPiByZWRpcmVjdGlv
bihtX3NjaGVkdWxlZFJlZGlyZWN0aW9uLnJlbGVhc2UoKSk7Ci0gICAgaWYgKHJlZGlyZWN0aW9u
ICYmIHJlZGlyZWN0aW9uLT50b2xkQ2xpZW50KQotICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+
Y2xpZW50UmVkaXJlY3RDYW5jZWxsZWRPckZpbmlzaGVkKG5ld0xvYWRJblByb2dyZXNzKTsKKyAg
ICBPd25QdHI8U2NoZWR1bGVkTmF2aWdhdGlvbj4gcmVkaXJlY3QobV9yZWRpcmVjdC5yZWxlYXNl
KCkpOworICAgIGlmIChyZWRpcmVjdCkKKyAgICAgICAgcmVkaXJlY3QtPmRpZFN0b3BUaW1lciht
X2ZyYW1lLCBuZXdMb2FkSW5Qcm9ncmVzcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmggYi9XZWJDb3Jl
L2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5oCmluZGV4IDAwNWExNzMuLmFjMzczMWMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmgKKysrIGIvV2ViQ29yZS9s
b2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBGcmFtZTsK
IGNsYXNzIFN0cmluZzsKIAogc3RydWN0IEZyYW1lTG9hZFJlcXVlc3Q7Ci1zdHJ1Y3QgU2NoZWR1
bGVkUmVkaXJlY3Rpb247CitjbGFzcyBTY2hlZHVsZWROYXZpZ2F0aW9uOwogCiBjbGFzcyBSZWRp
cmVjdFNjaGVkdWxlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CkBAIC02NywxMyAr
NjcsMTMgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxS
ZWRpcmVjdFNjaGVkdWxlcj4qKTsKLSAgICB2b2lkIHNjaGVkdWxlKFBhc3NPd25QdHI8U2NoZWR1
bGVkUmVkaXJlY3Rpb24+KTsKKyAgICB2b2lkIHNjaGVkdWxlKFBhc3NPd25QdHI8U2NoZWR1bGVk
TmF2aWdhdGlvbj4pOwogCiAgICAgc3RhdGljIGJvb2wgbXVzdExvY2tCYWNrRm9yd2FyZExpc3Qo
RnJhbWUqIHRhcmdldEZyYW1lKTsKIAogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIFRpbWVyPFJl
ZGlyZWN0U2NoZWR1bGVyPiBtX3RpbWVyOwotICAgIE93blB0cjxTY2hlZHVsZWRSZWRpcmVjdGlv
bj4gbV9zY2hlZHVsZWRSZWRpcmVjdGlvbjsKKyAgICBPd25QdHI8U2NoZWR1bGVkTmF2aWdhdGlv
bj4gbV9yZWRpcmVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52188</attachid>
            <date>2010-03-31 11:08:12 -0700</date>
            <delta_ts>2010-03-31 16:22:29 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-36874-20100331110810.patch</filename>
            <type>text/plain</type>
            <size>23480</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTZmMTIzYS4uZTE3MTk0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMC0wMy0zMSAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4K
KworICAgICAgICBDbGVhbnVwIFJlZGlyZWN0U2NoZWR1bGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjg3NAorCisgICAgICAgIFJlbW92ZWQgdGhl
IG51dHR5IFNjaGVkdWxlZFJlZGlyZWN0aW9uIHN0cnVjdCBpbiBmYXZvciBvZiBhIGhpZXJhcmNo
eQorICAgICAgICBvZiBjbGFzc2VzIHRvIHJlcHJlc2VudCB0aGUgdmFyaW91cyBraW5kcyBvZiBz
Y2hlZHVsZWQgcmVkaXJlY3RzLgorICAgICAgICBEb2luZyB0aGlzIGxldHMgdXMgZ2V0IHJpZCBv
ZiB0aGUgcHNldWRvIFJUVEkgc3dpdGNoIHN0YXRlbWVudHMgb24KKyAgICAgICAgInR5cGUiIGlu
IGZhdm91ciBvZiBjYWxsaW5nIHZpcnR1YWwgZnVuY3Rpb25zLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyBiZWNhdXNlIHRoaXMgY2hhbmdlIHNob3VsZCBiZSBBUEkgaWRlbnRpY2FsIHdpdGggdGhl
CisgICAgICAgIGV4aXN0aW5nIFJlZGlyZWN0U2NoZWR1bGVyLgorCisgICAgICAgICogbG9hZGVy
L1JlZGlyZWN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZE5hdmln
YXRpb246OlNjaGVkdWxlZE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVk
TmF2aWdhdGlvbjo6flNjaGVkdWxlZE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2No
ZWR1bGVkTmF2aWdhdGlvbjo6aXNMb2NhdGlvbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y2hlZHVsZWROYXZpZ2F0aW9uOjpzaG91bGRTdGFydFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjaGVkdWxlZE5hdmlnYXRpb246OmRpZFN0YXJ0VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2NoZWR1bGVkTmF2aWdhdGlvbjo6ZGlkU3RvcFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
aGVkdWxlZE5hdmlnYXRpb246OmRlbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZE5h
dmlnYXRpb246OmxvY2tIaXN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZE5hdmln
YXRpb246OmxvY2tCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVk
TmF2aWdhdGlvbjo6d2FzRHVyaW5nTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRV
UkxOYXZpZ2F0aW9uOjpTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjaGVkdWxlZFVSTE5hdmlnYXRpb246OmZpcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1
bGVkVVJMTmF2aWdhdGlvbjo6ZGlkU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpTY2hl
ZHVsZWRVUkxOYXZpZ2F0aW9uOjpkaWRTdG9wVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2No
ZWR1bGVkVVJMTmF2aWdhdGlvbjo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZFVS
TE5hdmlnYXRpb246OnJlZmVycmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZFVSTE5h
dmlnYXRpb246Ondhc1VzZXJHZXN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZFJl
ZGlyZWN0OjpTY2hlZHVsZWRSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRS
ZWRpcmVjdDo6aXNMb2NhdGlvbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRS
ZWRpcmVjdDo6c2hvdWxkU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRM
b2NhdGlvbkNoYW5nZTo6U2NoZWR1bGVkTG9jYXRpb25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NoZWR1bGVkUmVmcmVzaDo6U2NoZWR1bGVkUmVmcmVzaCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY2hlZHVsZWRSZWZyZXNoOjpmaXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEhp
c3RvcnlOYXZpZ2F0aW9uOjpTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbjo6ZmlyZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlZHVsZWRGb3JtU3VibWlzc2lvbjo6U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb246OmZpcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnJlZGlyZWN0U2NoZWR1bGVkRHVyaW5nTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6Y2xlYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6Om11c3RMb2NrQmFja0ZvcndhcmRMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hh
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVsZUZvcm1T
dWJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVs
ZVJlZnJlc2gpOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OmxvY2F0aW9u
Q2hhbmdlUGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c2No
ZWR1bGVIaXN0b3J5TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdFNjaGVk
dWxlcjo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6
c2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnN0YXJ0VGlt
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OmNhbmNlbCk6CisgICAg
ICAgICogbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmg6CisKIDIwMTAtMDMtMzEgIEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFudHRpIEtvaXZpc3RvLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUmVkaXJl
Y3RTY2hlZHVsZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuY3BwCmlu
ZGV4IDRiNDQ0MjIuLjZlNTg2MDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0
U2NoZWR1bGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAK
QEAgLTQ3LDg3ICs0NywxNTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgU2No
ZWR1bGVkUmVkaXJlY3Rpb24gOiBOb25jb3B5YWJsZSB7Ci0gICAgZW51bSBUeXBlIHsgcmVkaXJl
Y3Rpb24sIGxvY2F0aW9uQ2hhbmdlLCBoaXN0b3J5TmF2aWdhdGlvbiwgZm9ybVN1Ym1pc3Npb24g
fTsKLQotICAgIGNvbnN0IFR5cGUgdHlwZTsKLSAgICBjb25zdCBkb3VibGUgZGVsYXk7Ci0gICAg
Y29uc3QgU3RyaW5nIHVybDsKLSAgICBjb25zdCBTdHJpbmcgcmVmZXJyZXI7Ci0gICAgY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCBmcmFtZVJlcXVlc3Q7Ci0gICAgY29uc3QgUmVmUHRyPEV2ZW50PiBl
dmVudDsKLSAgICBjb25zdCBSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGU7Ci0gICAgY29uc3Qg
aW50IGhpc3RvcnlTdGVwczsKLSAgICBjb25zdCBib29sIGxvY2tIaXN0b3J5OwotICAgIGNvbnN0
IGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdDsKLSAgICBjb25zdCBib29sIHdhc1VzZXJHZXN0dXJl
OwotICAgIGNvbnN0IGJvb2wgd2FzUmVmcmVzaDsKLSAgICBjb25zdCBib29sIHdhc0R1cmluZ0xv
YWQ7Ci0gICAgYm9vbCB0b2xkQ2xpZW50OwotCi0gICAgU2NoZWR1bGVkUmVkaXJlY3Rpb24oZG91
YmxlIGRlbGF5LCBjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2Nr
QmFja0ZvcndhcmRMaXN0LCBib29sIHdhc1VzZXJHZXN0dXJlLCBib29sIHJlZnJlc2gpCi0gICAg
ICAgIDogdHlwZShyZWRpcmVjdGlvbikKLSAgICAgICAgLCBkZWxheShkZWxheSkKLSAgICAgICAg
LCB1cmwodXJsKQotICAgICAgICAsIGhpc3RvcnlTdGVwcygwKQotICAgICAgICAsIGxvY2tIaXN0
b3J5KGxvY2tIaXN0b3J5KQotICAgICAgICAsIGxvY2tCYWNrRm9yd2FyZExpc3QobG9ja0JhY2tG
b3J3YXJkTGlzdCkKLSAgICAgICAgLCB3YXNVc2VyR2VzdHVyZSh3YXNVc2VyR2VzdHVyZSkKLSAg
ICAgICAgLCB3YXNSZWZyZXNoKHJlZnJlc2gpCi0gICAgICAgICwgd2FzRHVyaW5nTG9hZChmYWxz
ZSkKLSAgICAgICAgLCB0b2xkQ2xpZW50KGZhbHNlKQorY2xhc3MgU2NoZWR1bGVkTmF2aWdhdGlv
biA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgU2NoZWR1bGVkTmF2aWdhdGlv
bihkb3VibGUgZGVsYXksIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlz
dCwgYm9vbCB3YXNEdXJpbmdMb2FkKQorICAgICAgICA6IG1fZGVsYXkoZGVsYXkpCisgICAgICAg
ICwgbV9sb2NrSGlzdG9yeShsb2NrSGlzdG9yeSkKKyAgICAgICAgLCBtX2xvY2tCYWNrRm9yd2Fy
ZExpc3QobG9ja0JhY2tGb3J3YXJkTGlzdCkKKyAgICAgICAgLCBtX3dhc0R1cmluZ0xvYWQod2Fz
RHVyaW5nTG9hZCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCghdXJsLmlzRW1wdHkoKSk7CiAgICAg
fQorICAgIHZpcnR1YWwgflNjaGVkdWxlZE5hdmlnYXRpb24oKSB7IH0KIAotICAgIFNjaGVkdWxl
ZFJlZGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBi
b29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzVXNlckdl
c3R1cmUsIGJvb2wgcmVmcmVzaCwgYm9vbCBkdXJpbmdMb2FkKQotICAgICAgICA6IHR5cGUobG9j
YXRpb25DaGFuZ2UpCi0gICAgICAgICwgZGVsYXkoMCkKLSAgICAgICAgLCB1cmwodXJsKQotICAg
ICAgICAsIHJlZmVycmVyKHJlZmVycmVyKQotICAgICAgICAsIGhpc3RvcnlTdGVwcygwKQotICAg
ICAgICAsIGxvY2tIaXN0b3J5KGxvY2tIaXN0b3J5KQotICAgICAgICAsIGxvY2tCYWNrRm9yd2Fy
ZExpc3QobG9ja0JhY2tGb3J3YXJkTGlzdCkKLSAgICAgICAgLCB3YXNVc2VyR2VzdHVyZSh3YXNV
c2VyR2VzdHVyZSkKLSAgICAgICAgLCB3YXNSZWZyZXNoKHJlZnJlc2gpCi0gICAgICAgICwgd2Fz
RHVyaW5nTG9hZChkdXJpbmdMb2FkKQotICAgICAgICAsIHRvbGRDbGllbnQoZmFsc2UpCisgICAg
dmlydHVhbCB2b2lkIGZpcmUoRnJhbWUqKSA9IDA7CisKKyAgICAvLyBUaGlzIG1ldGhvZCBmZWVs
cyBhIGJpdCBsaWtlIFJUVEksIGJ1dCBJIGRvbid0IHNlZSBhIGNsZWFuZXIgd2F5IHRvIGdldCB0
aGUgYmVoYXZpb3Igd2Ugd2FudC4KKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbkNoYW5nZSgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdGFydFRp
bWVyKEZyYW1lKikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFRp
bWVyKEZyYW1lKiwgVGltZXI8UmVkaXJlY3RTY2hlZHVsZXI+KikgeyB9CisgICAgdmlydHVhbCB2
b2lkIGRpZFN0b3BUaW1lcihGcmFtZSosIGJvb2wgLyogbmV3TG9hZEluUHJvZ3Jlc3MgKi8pIHsg
fQorCisgICAgZG91YmxlIGRlbGF5KCkgY29uc3QgeyByZXR1cm4gbV9kZWxheTsgfQorICAgIGJv
b2wgbG9ja0hpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2tIaXN0b3J5OyB9CisgICAgYm9v
bCBsb2NrQmFja0ZvcndhcmRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9sb2NrQmFja0ZvcndhcmRM
aXN0OyB9CisgICAgYm9vbCB3YXNEdXJpbmdMb2FkKCkgY29uc3QgeyByZXR1cm4gbV93YXNEdXJp
bmdMb2FkOyB9CisKK3ByaXZhdGU6CisgICAgZG91YmxlIG1fZGVsYXk7CisgICAgYm9vbCBtX2xv
Y2tIaXN0b3J5OworICAgIGJvb2wgbV9sb2NrQmFja0ZvcndhcmRMaXN0OworICAgIGJvb2wgbV93
YXNEdXJpbmdMb2FkOworfTsKKworY2xhc3MgU2NoZWR1bGVkVVJMTmF2aWdhdGlvbiA6IHB1Ymxp
YyBTY2hlZHVsZWROYXZpZ2F0aW9uIHsKK3B1YmxpYzoKKyAgICBTY2hlZHVsZWRVUkxOYXZpZ2F0
aW9uKGRvdWJsZSBkZWxheSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCB3YXNV
c2VyR2VzdHVyZSwgYm9vbCBkdXJpbmdMb2FkKQorICAgICAgICA6IFNjaGVkdWxlZE5hdmlnYXRp
b24oZGVsYXksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkKQor
ICAgICAgICAsIG1fdXJsKHVybCkKKyAgICAgICAgLCBtX3JlZmVycmVyKHJlZmVycmVyKQorICAg
ICAgICAsIG1fd2FzVXNlckdlc3R1cmUod2FzVXNlckdlc3R1cmUpCisgICAgICAgICwgbV9oYXZl
VG9sZENsaWVudChmYWxzZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVCghdXJsLmlzRW1wdHkoKSk7
CiAgICAgfQogCi0gICAgZXhwbGljaXQgU2NoZWR1bGVkUmVkaXJlY3Rpb24oaW50IGhpc3RvcnlO
YXZpZ2F0aW9uU3RlcHMpCi0gICAgICAgIDogdHlwZShoaXN0b3J5TmF2aWdhdGlvbikKLSAgICAg
ICAgLCBkZWxheSgwKQotICAgICAgICAsIGhpc3RvcnlTdGVwcyhoaXN0b3J5TmF2aWdhdGlvblN0
ZXBzKQotICAgICAgICAsIGxvY2tIaXN0b3J5KGZhbHNlKQotICAgICAgICAsIGxvY2tCYWNrRm9y
d2FyZExpc3QoZmFsc2UpCi0gICAgICAgICwgd2FzVXNlckdlc3R1cmUoZmFsc2UpCi0gICAgICAg
ICwgd2FzUmVmcmVzaChmYWxzZSkKLSAgICAgICAgLCB3YXNEdXJpbmdMb2FkKGZhbHNlKQotICAg
ICAgICAsIHRvbGRDbGllbnQoZmFsc2UpCisgICAgdmlydHVhbCB2b2lkIGZpcmUoRnJhbWUqIGZy
YW1lKQogICAgIHsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5jaGFuZ2VMb2NhdGlvbihLVVJM
KFBhcnNlZFVSTFN0cmluZywgbV91cmwpLCBtX3JlZmVycmVyLCBsb2NrSGlzdG9yeSgpLCBsb2Nr
QmFja0ZvcndhcmRMaXN0KCksIG1fd2FzVXNlckdlc3R1cmUsIGZhbHNlKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRUaW1lcihGcmFtZSogZnJhbWUsIFRpbWVyPFJlZGlyZWN0
U2NoZWR1bGVyPiogdGltZXIpCisgICAgeworICAgICAgICBpZiAobV9oYXZlVG9sZENsaWVudCkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9oYXZlVG9sZENsaWVudCA9IHRydWU7Cisg
ICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50UmVkaXJlY3RlZChLVVJMKFBhcnNlZFVSTFN0
cmluZywgbV91cmwpLCBkZWxheSgpLCBjdXJyZW50VGltZSgpICsgdGltZXItPm5leHRGaXJlSW50
ZXJ2YWwoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpKTsKICAgICB9CiAKLSAgICBTY2hlZHVsZWRS
ZWRpcmVjdGlvbihjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZVJlcXVlc3QsCi0gICAgICAg
ICAgICBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLAotICAgICAg
ICAgICAgYm9vbCBkdXJpbmdMb2FkKQotICAgICAgICA6IHR5cGUoZm9ybVN1Ym1pc3Npb24pCi0g
ICAgICAgICwgZGVsYXkoMCkKLSAgICAgICAgLCBmcmFtZVJlcXVlc3QoZnJhbWVSZXF1ZXN0KQot
ICAgICAgICAsIGV2ZW50KGV2ZW50KQotICAgICAgICAsIGZvcm1TdGF0ZShmb3JtU3RhdGUpCi0g
ICAgICAgICwgaGlzdG9yeVN0ZXBzKDApCi0gICAgICAgICwgbG9ja0hpc3RvcnkobG9ja0hpc3Rv
cnkpCi0gICAgICAgICwgbG9ja0JhY2tGb3J3YXJkTGlzdChsb2NrQmFja0ZvcndhcmRMaXN0KQot
ICAgICAgICAsIHdhc1VzZXJHZXN0dXJlKGZhbHNlKQotICAgICAgICAsIHdhc1JlZnJlc2goZmFs
c2UpCi0gICAgICAgICwgd2FzRHVyaW5nTG9hZChkdXJpbmdMb2FkKQotICAgICAgICAsIHRvbGRD
bGllbnQoZmFsc2UpCisgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BUaW1lcihGcmFtZSogZnJhbWUs
IGJvb2wgbmV3TG9hZEluUHJvZ3Jlc3MpCisgICAgeworICAgICAgICBpZiAoIW1faGF2ZVRvbGRD
bGllbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xp
ZW50UmVkaXJlY3RDYW5jZWxsZWRPckZpbmlzaGVkKG5ld0xvYWRJblByb2dyZXNzKTsKKyAgICB9
CisKKyAgICBTdHJpbmcgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICBTdHJpbmcg
cmVmZXJyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlZmVycmVyOyB9CisgICAgYm9vbCB3YXNVc2Vy
R2VzdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzVXNlckdlc3R1cmU7IH0KKworcHJpdmF0ZToK
KyAgICBTdHJpbmcgbV91cmw7CisgICAgU3RyaW5nIG1fcmVmZXJyZXI7CisgICAgYm9vbCBtX3dh
c1VzZXJHZXN0dXJlOworICAgIGJvb2wgbV9oYXZlVG9sZENsaWVudDsKK307CisKK2NsYXNzIFNj
aGVkdWxlZFJlZGlyZWN0IDogcHVibGljIFNjaGVkdWxlZFVSTE5hdmlnYXRpb24geworcHVibGlj
OgorICAgIFNjaGVkdWxlZFJlZGlyZWN0KGRvdWJsZSBkZWxheSwgY29uc3QgU3RyaW5nJiB1cmws
IGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCB3YXNVc2Vy
R2VzdHVyZSkKKyAgICAgICAgOiBTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uKGRlbGF5LCB1cmwsIFN0
cmluZygpLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgd2FzVXNlckdlc3R1cmUs
IGZhbHNlKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc0xvY2F0aW9uQ2hhbmdlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RhcnRUaW1lcihGcmFt
ZSogZnJhbWUpIHsgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS0+YWxsQW5jZXN0b3JzQXJlQ29tcGxl
dGUoKTsgfQorfTsKKworY2xhc3MgU2NoZWR1bGVkTG9jYXRpb25DaGFuZ2UgOiBwdWJsaWMgU2No
ZWR1bGVkVVJMTmF2aWdhdGlvbiB7CitwdWJsaWM6CisgICAgU2NoZWR1bGVkTG9jYXRpb25DaGFu
Z2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hp
c3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSwgYm9v
bCBkdXJpbmdMb2FkKQorICAgICAgICA6IFNjaGVkdWxlZFVSTE5hdmlnYXRpb24oMC4wLCB1cmws
IHJlZmVycmVyLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgd2FzVXNlckdlc3R1
cmUsIGR1cmluZ0xvYWQpIHsgfQorfTsKKworY2xhc3MgU2NoZWR1bGVkUmVmcmVzaCA6IHB1Ymxp
YyBTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uIHsKK3B1YmxpYzoKKyAgICBTY2hlZHVsZWRSZWZyZXNo
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIHdhc1VzZXJH
ZXN0dXJlKQorICAgICAgICA6IFNjaGVkdWxlZFVSTE5hdmlnYXRpb24oMC4wLCB1cmwsIHJlZmVy
cmVyLCB0cnVlLCB0cnVlLCB3YXNVc2VyR2VzdHVyZSwgZmFsc2UpIHsgfQorCisgICAgdmlydHVh
bCB2b2lkIGZpcmUoRnJhbWUqIGZyYW1lKQorICAgIHsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigp
LT5jaGFuZ2VMb2NhdGlvbihLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKCkpLCByZWZlcnJlcigp
LCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIHdhc1VzZXJHZXN0dXJlKCks
IHRydWUpOworICAgIH0KK307CisKK2NsYXNzIFNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uIDog
cHVibGljIFNjaGVkdWxlZE5hdmlnYXRpb24geworcHVibGljOgorICAgIGV4cGxpY2l0IFNjaGVk
dWxlZEhpc3RvcnlOYXZpZ2F0aW9uKGludCBoaXN0b3J5U3RlcHMpIDogU2NoZWR1bGVkTmF2aWdh
dGlvbigwLCBmYWxzZSwgZmFsc2UsIGZhbHNlKSwgbV9oaXN0b3J5U3RlcHMoaGlzdG9yeVN0ZXBz
KSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBmaXJlKEZyYW1lKiBmcmFtZSkKKyAgICB7CisgICAg
ICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7CisgICAgICAgIGlmICgh
bV9oaXN0b3J5U3RlcHMpIHsKKyAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgZ28oMCkg
ZnJvbSBhIGZyYW1lIC0+IHJlbG9hZCBvbmx5IHRoZSBmcmFtZQorICAgICAgICAgICAgbG9hZGVy
LT51cmxTZWxlY3RlZChsb2FkZXItPnVybCgpLCAiIiwgMCwgbG9ja0hpc3RvcnkoKSwgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCgpLCBmYWxzZSwgU2VuZFJlZmVycmVyKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICAvLyBnbyhpIT0wKSBmcm9tIGEgZnJhbWUgbmF2aWdhdGVz
IGludG8gdGhlIGhpc3Rvcnkgb2YgdGhlIGZyYW1lIG9ubHksCisgICAgICAgIC8vIGluIGJvdGgg
SUUgYW5kIE5TIChidXQgbm90IGluIE1vemlsbGEpLiBXZSBjYW4ndCBlYXNpbHkgZG8gdGhhdC4K
KyAgICAgICAgZnJhbWUtPnBhZ2UoKS0+Z29CYWNrT3JGb3J3YXJkKG1faGlzdG9yeVN0ZXBzKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgaW50IG1faGlzdG9yeVN0ZXBzOworfTsKKworY2xhc3Mg
U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb24gOiBwdWJsaWMgU2NoZWR1bGVkTmF2aWdhdGlvbiB7Citw
dWJsaWM6CisgICAgU2NoZWR1bGVkRm9ybVN1Ym1pc3Npb24oY29uc3QgRnJhbWVMb2FkUmVxdWVz
dCYgZnJhbWVSZXF1ZXN0LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExp
c3QsIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0
YXRlLCBib29sIGR1cmluZ0xvYWQpCisgICAgICAgIDogU2NoZWR1bGVkTmF2aWdhdGlvbigwLCBs
b2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkKKyAgICAgICAgLCBt
X2ZyYW1lUmVxdWVzdChmcmFtZVJlcXVlc3QpCisgICAgICAgICwgbV9ldmVudChldmVudCkKKyAg
ICAgICAgLCBtX2Zvcm1TdGF0ZShmb3JtU3RhdGUpCiAgICAgewogICAgICAgICBBU1NFUlQoIWZy
YW1lUmVxdWVzdC5pc0VtcHR5KCkpOwotICAgICAgICBBU1NFUlQodGhpcy0+Zm9ybVN0YXRlKTsK
KyAgICAgICAgQVNTRVJUKG1fZm9ybVN0YXRlKTsKICAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
ZmlyZShGcmFtZSogZnJhbWUpCisgICAgeworICAgICAgICAvLyBUaGUgc3VibWl0Rm9ybSBmdW5j
dGlvbiB3aWxsIGZpbmQgYSB0YXJnZXQgZnJhbWUgYmVmb3JlIHVzaW5nIHRoZSByZWRpcmVjdGlv
biB0aW1lci4KKyAgICAgICAgLy8gTm93IHRoYXQgdGhlIHRpbWVyIGhhcyBmaXJlZCwgd2UgbmVl
ZCB0byByZXBlYXQgdGhlIHNlY3VyaXR5IGNoZWNrIHdoaWNoIG5vcm1hbGx5IGlzIGRvbmUgd2hl
bgorICAgICAgICAvLyBzZWxlY3RpbmcgYSB0YXJnZXQsIGluIGNhc2UgY29uZGl0aW9ucyBoYXZl
IGNoYW5nZWQuIE90aGVyIGNvZGUgcGF0aHMgYXZvaWQgdGhpcyBieSB0YXJnZXRpbmcKKyAgICAg
ICAgLy8gd2l0aG91dCBsZWF2aW5nIGEgdGltZSB3aW5kb3cuIElmIHdlIGZhaWwgdGhlIGNoZWNr
IGp1c3Qgc2lsZW50bHkgZHJvcCB0aGUgZm9ybSBzdWJtaXNzaW9uLgorICAgICAgICBpZiAoIW1f
Zm9ybVN0YXRlLT5zb3VyY2VGcmFtZSgpLT5sb2FkZXIoKS0+c2hvdWxkQWxsb3dOYXZpZ2F0aW9u
KGZyYW1lKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5s
b2FkRnJhbWVSZXF1ZXN0KG1fZnJhbWVSZXF1ZXN0LCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0Zv
cndhcmRMaXN0KCksIG1fZXZlbnQsIG1fZm9ybVN0YXRlLCBTZW5kUmVmZXJyZXIpOworICAgIH0K
KworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZGlkU3RhcnRUaW1lcj8gSXQgd291bGQgbWFrZSBz
ZW5zZSB0byByZXBvcnQgZm9ybQorICAgIC8vIHN1Ym1pc3Npb25zIGFzIGNsaWVudCByZWRpcmVj
dHMgdG9vLiBCdXQgd2UgZGlkbid0IGRvIHRoYXQgaW4gdGhlIHBhc3QKKyAgICAvLyB3aGVuIGZv
cm0gc3VibWlzc2lvbiB1c2VkIGEgc2VwYXJhdGUgZGVsYXkgbWVjaGFuaXNtLCBzbyBkb2luZyBp
dCB3aWxsCisgICAgLy8gYmUgYSBiZWhhdmlvciBjaGFuZ2UuCisKK3ByaXZhdGU6CisgICAgY29u
c3QgRnJhbWVMb2FkUmVxdWVzdCBtX2ZyYW1lUmVxdWVzdDsKKyAgICBjb25zdCBSZWZQdHI8RXZl
bnQ+IG1fZXZlbnQ7CisgICAgY29uc3QgUmVmUHRyPEZvcm1TdGF0ZT4gbV9mb3JtU3RhdGU7CiB9
OwogCiBSZWRpcmVjdFNjaGVkdWxlcjo6UmVkaXJlY3RTY2hlZHVsZXIoRnJhbWUqIGZyYW1lKQpA
QCAtMTQyLDI5ICsyMTQsMjcgQEAgUmVkaXJlY3RTY2hlZHVsZXI6On5SZWRpcmVjdFNjaGVkdWxl
cigpCiAKIGJvb2wgUmVkaXJlY3RTY2hlZHVsZXI6OnJlZGlyZWN0U2NoZWR1bGVkRHVyaW5nTG9h
ZCgpCiB7Ci0gICAgcmV0dXJuIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24gJiYgbV9zY2hlZHVsZWRS
ZWRpcmVjdGlvbi0+d2FzRHVyaW5nTG9hZDsKKyAgICByZXR1cm4gbV9yZWRpcmVjdCAmJiBtX3Jl
ZGlyZWN0LT53YXNEdXJpbmdMb2FkKCk7CiB9CiAKIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OmNs
ZWFyKCkKIHsKICAgICBtX3RpbWVyLnN0b3AoKTsKLSAgICBtX3NjaGVkdWxlZFJlZGlyZWN0aW9u
LmNsZWFyKCk7CisgICAgbV9yZWRpcmVjdC5jbGVhcigpOwogfQogCiB2b2lkIFJlZGlyZWN0U2No
ZWR1bGVyOjpzY2hlZHVsZVJlZGlyZWN0KGRvdWJsZSBkZWxheSwgY29uc3QgU3RyaW5nJiB1cmwp
CiB7Ci0gICAgaWYgKGRlbGF5IDwgMCB8fCBkZWxheSA+IElOVF9NQVggLyAxMDAwKQotICAgICAg
ICByZXR1cm47Ci0gICAgICAgIAogICAgIGlmICghbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICBy
ZXR1cm47Ci0KKyAgICBpZiAoZGVsYXkgPCAwIHx8IGRlbGF5ID4gSU5UX01BWCAvIDEwMDApCisg
ICAgICAgIHJldHVybjsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gV2Ugd2FudCBhIG5ldyBoaXN0b3J5IGl0ZW0gaWYgdGhlIHJlZnJlc2ggdGltZW91
dCBpcyA+IDEgc2Vjb25kLgotICAgIGlmICghbV9zY2hlZHVsZWRSZWRpcmVjdGlvbiB8fCBkZWxh
eSA8PSBtX3NjaGVkdWxlZFJlZGlyZWN0aW9uLT5kZWxheSkKLSAgICAgICAgc2NoZWR1bGUobmV3
IFNjaGVkdWxlZFJlZGlyZWN0aW9uKGRlbGF5LCB1cmwsIHRydWUsIGRlbGF5IDw9IDEsIGZhbHNl
LCBmYWxzZSkpOworICAgIGlmICghbV9yZWRpcmVjdCB8fCBkZWxheSA8PSBtX3JlZGlyZWN0LT5k
ZWxheSgpKQorICAgICAgICBzY2hlZHVsZShuZXcgU2NoZWR1bGVkUmVkaXJlY3QoZGVsYXksIHVy
bCwgdHJ1ZSwgZGVsYXkgPD0gMSwgZmFsc2UpKTsKIH0KIAogYm9vbCBSZWRpcmVjdFNjaGVkdWxl
cjo6bXVzdExvY2tCYWNrRm9yd2FyZExpc3QoRnJhbWUqIHRhcmdldEZyYW1lKQpAQCAtMTcyLDcg
KzI0Miw3IEBAIGJvb2wgUmVkaXJlY3RTY2hlZHVsZXI6Om11c3RMb2NrQmFja0ZvcndhcmRMaXN0
KEZyYW1lKiB0YXJnZXRGcmFtZSkKICAgICAvLyBOYXZpZ2F0aW9uIG9mIGEgc3ViZnJhbWUgZHVy
aW5nIGxvYWRpbmcgb2YgYW4gYW5jZXN0b3IgZnJhbWUgZG9lcyBub3QgY3JlYXRlIGEgbmV3IGJh
Y2svZm9yd2FyZCBpdGVtLgogICAgIC8vIFRoZSBkZWZpbml0aW9uIG9mICJkdXJpbmcgbG9hZCIg
aXMgYW55IHRpbWUgYmVmb3JlIGFsbCBoYW5kbGVycyBmb3IgdGhlIGxvYWQgZXZlbnQgaGF2ZSBi
ZWVuIHJ1bi4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0OTU3IGZvciB0aGUgb3JpZ2luYWwgbW90aXZhdGlvbiBmb3IgdGhpcy4KLSAgICAKKwog
ICAgIGZvciAoRnJhbWUqIGFuY2VzdG9yID0gdGFyZ2V0RnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7
IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT50cmVlKCktPnBhcmVudCgpKSB7CiAgICAg
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGFuY2VzdG9yLT5kb2N1bWVudCgpOwogICAgICAgICBp
ZiAoIWFuY2VzdG9yLT5sb2FkZXIoKS0+aXNDb21wbGV0ZSgpIHx8IChkb2N1bWVudCAmJiBkb2N1
bWVudC0+cHJvY2Vzc2luZ0xvYWRFdmVudCgpKSkKQEAgLTE4NSw3ICsyNTUsNiBAQCB2b2lkIFJl
ZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmCiB7CiAgICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJl
dHVybjsKLQogICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTIw
NSw3ICsyNzQsNyBAQCB2b2lkIFJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hh
bmdlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgLy8gVGhpcyBtYXkgaGFw
cGVuIHdoZW4gYSBmcmFtZSBjaGFuZ2VzIHRoZSBsb2NhdGlvbiBvZiBhbm90aGVyIGZyYW1lLgog
ICAgIGJvb2wgZHVyaW5nTG9hZCA9ICFsb2FkZXItPmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50
TG9hZCgpOwogCi0gICAgc2NoZWR1bGUobmV3IFNjaGVkdWxlZFJlZGlyZWN0aW9uKHVybCwgcmVm
ZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCB3YXNVc2VyR2VzdHVyZSwg
ZmFsc2UsIGR1cmluZ0xvYWQpKTsKKyAgICBzY2hlZHVsZShuZXcgU2NoZWR1bGVkTG9jYXRpb25D
aGFuZ2UodXJsLCByZWZlcnJlciwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHdh
c1VzZXJHZXN0dXJlLCBkdXJpbmdMb2FkKSk7CiB9CiAKIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6
OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24oY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVSZXF1
ZXN0LApAQCAtMjI3LDM3ICsyOTYsMjUgQEAgdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1
bGVGb3JtU3VibWlzc2lvbihjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZVJlcXUKIAogICAg
IGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KG1fZnJh
bWUpIHx8IChmb3JtU3RhdGUtPmZvcm1TdWJtaXNzaW9uVHJpZ2dlcigpID09IFN1Ym1pdHRlZEJ5
SmF2YVNjcmlwdCAmJiBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpKTsKIAotICAgIHNjaGVkdWxl
KG5ldyBTY2hlZHVsZWRSZWRpcmVjdGlvbihmcmFtZVJlcXVlc3QsIGxvY2tIaXN0b3J5LCBsb2Nr
QmFja0ZvcndhcmRMaXN0LCBldmVudCwgZm9ybVN0YXRlLCBkdXJpbmdMb2FkKSk7CisgICAgc2No
ZWR1bGUobmV3IFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uKGZyYW1lUmVxdWVzdCwgbG9ja0hpc3Rv
cnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGV2ZW50LCBmb3JtU3RhdGUsIGR1cmluZ0xvYWQpKTsK
IH0KIAogdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKGJvb2wgd2FzVXNl
ckdlc3R1cmUpCiB7CiAgICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICAKICAgICBjb25zdCBLVVJMJiB1cmwgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7Ci0K
ICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2NoZWR1bGUo
bmV3IFNjaGVkdWxlZFJlZGlyZWN0aW9uKHVybC5zdHJpbmcoKSwgbV9mcmFtZS0+bG9hZGVyKCkt
Pm91dGdvaW5nUmVmZXJyZXIoKSwgdHJ1ZSwgdHJ1ZSwgd2FzVXNlckdlc3R1cmUsIHRydWUsIGZh
bHNlKSk7CisgICAgc2NoZWR1bGUobmV3IFNjaGVkdWxlZFJlZnJlc2godXJsLnN0cmluZygpLCBt
X2ZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLCB3YXNVc2VyR2VzdHVyZSkpOwog
fQogCiBib29sIFJlZGlyZWN0U2NoZWR1bGVyOjpsb2NhdGlvbkNoYW5nZVBlbmRpbmcoKQogewot
ICAgIGlmICghbV9zY2hlZHVsZWRSZWRpcmVjdGlvbikKKyAgICBpZiAoIW1fcmVkaXJlY3QpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN3aXRjaCAobV9zY2hlZHVsZWRSZWRpcmVjdGlv
bi0+dHlwZSkgewotICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpyZWRpcmVjdGlv
bjoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRp
cmVjdGlvbjo6aGlzdG9yeU5hdmlnYXRpb246Ci0gICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJl
Y3Rpb246OmxvY2F0aW9uQ2hhbmdlOgotICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9u
Ojpmb3JtU3VibWlzc2lvbjoKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fcmVk
aXJlY3QtPmlzTG9jYXRpb25DaGFuZ2UoKTsKIH0KIAogdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6
c2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbihpbnQgc3RlcHMpCkBAIC0yODQsMTE5ICszNDEsNjQg
QEAgdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbihpbnQg
c3RlcHMpCiAjZW5kaWYKICAgICAKICAgICAvLyBJbiBhbGwgb3RoZXIgY2FzZXMsIHNjaGVkdWxl
IHRoZSBoaXN0b3J5IHRyYXZlcnNhbCB0byBvY2N1ciBhc3luY2hyb25vdXNseS4KLSAgICBzY2hl
ZHVsZShuZXcgU2NoZWR1bGVkUmVkaXJlY3Rpb24oc3RlcHMpKTsKKyAgICBzY2hlZHVsZShuZXcg
U2NoZWR1bGVkSGlzdG9yeU5hdmlnYXRpb24oc3RlcHMpKTsKIH0KIAogdm9pZCBSZWRpcmVjdFNj
aGVkdWxlcjo6dGltZXJGaXJlZChUaW1lcjxSZWRpcmVjdFNjaGVkdWxlcj4qKQogewogICAgIGlm
ICghbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm47Ci0KICAgICBpZiAobV9mcmFtZS0+
cGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE93blB0cjxT
Y2hlZHVsZWRSZWRpcmVjdGlvbj4gcmVkaXJlY3Rpb24obV9zY2hlZHVsZWRSZWRpcmVjdGlvbi5y
ZWxlYXNlKCkpOwotICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsK
LQotICAgIHN3aXRjaCAocmVkaXJlY3Rpb24tPnR5cGUpIHsKLSAgICAgICAgY2FzZSBTY2hlZHVs
ZWRSZWRpcmVjdGlvbjo6cmVkaXJlY3Rpb246Ci0gICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJl
Y3Rpb246OmxvY2F0aW9uQ2hhbmdlOgotICAgICAgICAgICAgbG9hZGVyLT5jaGFuZ2VMb2NhdGlv
bihLVVJMKFBhcnNlZFVSTFN0cmluZywgcmVkaXJlY3Rpb24tPnVybCksIHJlZGlyZWN0aW9uLT5y
ZWZlcnJlciwKLSAgICAgICAgICAgICAgICByZWRpcmVjdGlvbi0+bG9ja0hpc3RvcnksIHJlZGly
ZWN0aW9uLT5sb2NrQmFja0ZvcndhcmRMaXN0LCByZWRpcmVjdGlvbi0+d2FzVXNlckdlc3R1cmUs
IHJlZGlyZWN0aW9uLT53YXNSZWZyZXNoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
Y2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6aGlzdG9yeU5hdmlnYXRpb246Ci0gICAgICAgICAg
ICBpZiAocmVkaXJlY3Rpb24tPmhpc3RvcnlTdGVwcyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gU3BlY2lhbCBjYXNlIGZvciBnbygwKSBmcm9tIGEgZnJhbWUgLT4gcmVsb2FkIG9ubHkgdGhl
IGZyYW1lCi0gICAgICAgICAgICAgICAgbG9hZGVyLT51cmxTZWxlY3RlZChsb2FkZXItPnVybCgp
LCAiIiwgMCwgcmVkaXJlY3Rpb24tPmxvY2tIaXN0b3J5LCByZWRpcmVjdGlvbi0+bG9ja0JhY2tG
b3J3YXJkTGlzdCwgcmVkaXJlY3Rpb24tPndhc1VzZXJHZXN0dXJlLCBTZW5kUmVmZXJyZXIpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIGdv
KGkhPTApIGZyb20gYSBmcmFtZSBuYXZpZ2F0ZXMgaW50byB0aGUgaGlzdG9yeSBvZiB0aGUgZnJh
bWUgb25seSwKLSAgICAgICAgICAgIC8vIGluIGJvdGggSUUgYW5kIE5TIChidXQgbm90IGluIE1v
emlsbGEpLiBXZSBjYW4ndCBlYXNpbHkgZG8gdGhhdC4KLSAgICAgICAgICAgIG1fZnJhbWUtPnBh
Z2UoKS0+Z29CYWNrT3JGb3J3YXJkKHJlZGlyZWN0aW9uLT5oaXN0b3J5U3RlcHMpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpmb3JtU3Vi
bWlzc2lvbjoKLSAgICAgICAgICAgIC8vIFRoZSBzdWJtaXRGb3JtIGZ1bmN0aW9uIHdpbGwgZmlu
ZCBhIHRhcmdldCBmcmFtZSBiZWZvcmUgdXNpbmcgdGhlIHJlZGlyZWN0aW9uIHRpbWVyLgotICAg
ICAgICAgICAgLy8gTm93IHRoYXQgdGhlIHRpbWVyIGhhcyBmaXJlZCwgd2UgbmVlZCB0byByZXBl
YXQgdGhlIHNlY3VyaXR5IGNoZWNrIHdoaWNoIG5vcm1hbGx5IGlzIGRvbmUgd2hlbgotICAgICAg
ICAgICAgLy8gc2VsZWN0aW5nIGEgdGFyZ2V0LCBpbiBjYXNlIGNvbmRpdGlvbnMgaGF2ZSBjaGFu
Z2VkLiBPdGhlciBjb2RlIHBhdGhzIGF2b2lkIHRoaXMgYnkgdGFyZ2V0aW5nCi0gICAgICAgICAg
ICAvLyB3aXRob3V0IGxlYXZpbmcgYSB0aW1lIHdpbmRvdy4gSWYgd2UgZmFpbCB0aGUgY2hlY2sg
anVzdCBzaWxlbnRseSBkcm9wIHRoZSBmb3JtIHN1Ym1pc3Npb24uCi0gICAgICAgICAgICBpZiAo
IXJlZGlyZWN0aW9uLT5mb3JtU3RhdGUtPnNvdXJjZUZyYW1lKCktPmxvYWRlcigpLT5zaG91bGRB
bGxvd05hdmlnYXRpb24obV9mcmFtZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgbG9hZGVyLT5sb2FkRnJhbWVSZXF1ZXN0KHJlZGlyZWN0aW9uLT5mcmFtZVJlcXVlc3Qs
IHJlZGlyZWN0aW9uLT5sb2NrSGlzdG9yeSwgcmVkaXJlY3Rpb24tPmxvY2tCYWNrRm9yd2FyZExp
c3QsCi0gICAgICAgICAgICAgICAgcmVkaXJlY3Rpb24tPmV2ZW50LCByZWRpcmVjdGlvbi0+Zm9y
bVN0YXRlLCBTZW5kUmVmZXJyZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIE93blB0cjxTY2hlZHVsZWROYXZpZ2F0aW9uPiBy
ZWRpcmVjdChtX3JlZGlyZWN0LnJlbGVhc2UoKSk7CisgICAgcmVkaXJlY3QtPmZpcmUobV9mcmFt
ZSk7CiB9CiAKLXZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlKFBhc3NPd25QdHI8U2No
ZWR1bGVkUmVkaXJlY3Rpb24+IHJlZGlyZWN0aW9uKQordm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6
c2NoZWR1bGUoUGFzc093blB0cjxTY2hlZHVsZWROYXZpZ2F0aW9uPiByZWRpcmVjdCkKIHsKICAg
ICBBU1NFUlQobV9mcmFtZS0+cGFnZSgpKTsKLSAgICBGcmFtZUxvYWRlciogbG9hZGVyID0gbV9m
cmFtZS0+bG9hZGVyKCk7CiAKICAgICAvLyBJZiBhIHJlZGlyZWN0IHdhcyBzY2hlZHVsZWQgZHVy
aW5nIGEgbG9hZCwgdGhlbiBzdG9wIHRoZSBjdXJyZW50IGxvYWQuCiAgICAgLy8gT3RoZXJ3aXNl
IHdoZW4gdGhlIGN1cnJlbnQgbG9hZCB0cmFuc2l0aW9ucyBmcm9tIGEgcHJvdmlzaW9uYWwgdG8g
YSAKICAgICAvLyBjb21taXR0ZWQgc3RhdGUsIHBlbmRpbmcgcmVkaXJlY3RzIG1heSBiZSBjYW5j
ZWxsZWQuIAotICAgIGlmIChyZWRpcmVjdGlvbi0+d2FzRHVyaW5nTG9hZCkgewotICAgICAgICBp
ZiAoRG9jdW1lbnRMb2FkZXIqIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIgPSBsb2FkZXItPnBy
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSkKKyAgICBpZiAocmVkaXJlY3QtPndhc0R1cmluZ0xv
YWQoKSkgeworICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIHByb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKQog
ICAgICAgICAgICAgcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RvcExvYWRpbmcoKTsKLSAg
ICAgICAgbG9hZGVyLT5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeVVubG9hZEFuZFBhZ2VI
aWRlKTsgICAKKyAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCktPnN0b3BMb2FkaW5nKFVubG9hZEV2
ZW50UG9saWN5VW5sb2FkQW5kUGFnZUhpZGUpOyAgIAogICAgIH0KIAogICAgIGNhbmNlbCgpOwot
ICAgIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24gPSByZWRpcmVjdGlvbjsKLSAgICBpZiAoIWxvYWRl
ci0+aXNDb21wbGV0ZSgpICYmIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPnR5cGUgIT0gU2NoZWR1
bGVkUmVkaXJlY3Rpb246OnJlZGlyZWN0aW9uKQotICAgICAgICBsb2FkZXItPmNvbXBsZXRlZCgp
OworICAgIG1fcmVkaXJlY3QgPSByZWRpcmVjdDsKKworICAgIGlmICghbV9mcmFtZS0+bG9hZGVy
KCktPmlzQ29tcGxldGUoKSAmJiBtX3JlZGlyZWN0LT5pc0xvY2F0aW9uQ2hhbmdlKCkpCisgICAg
ICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jb21wbGV0ZWQoKTsKKwogICAgIHN0YXJ0VGltZXIoKTsK
IH0KIAogdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c3RhcnRUaW1lcigpCiB7Ci0gICAgaWYgKCFt
X3NjaGVkdWxlZFJlZGlyZWN0aW9uKQorICAgIGlmICghbV9yZWRpcmVjdCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPnBhZ2UoKSk7Ci0gICAgCi0gICAgRnJhbWVMb2Fk
ZXIqIGxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpOwotCiAgICAgaWYgKG1fdGltZXIuaXNBY3Rp
dmUoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24t
PnR5cGUgPT0gU2NoZWR1bGVkUmVkaXJlY3Rpb246OnJlZGlyZWN0aW9uICYmICFsb2FkZXItPmFs
bEFuY2VzdG9yc0FyZUNvbXBsZXRlKCkpCisgICAgaWYgKCFtX3JlZGlyZWN0LT5zaG91bGRTdGFy
dFRpbWVyKG1fZnJhbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3RpbWVyLnN0YXJ0T25l
U2hvdChtX3NjaGVkdWxlZFJlZGlyZWN0aW9uLT5kZWxheSk7Ci0KLSAgICBzd2l0Y2ggKG1fc2No
ZWR1bGVkUmVkaXJlY3Rpb24tPnR5cGUpIHsKLSAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVj
dGlvbjo6bG9jYXRpb25DaGFuZ2U6Ci0gICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJlY3Rpb246
OnJlZGlyZWN0aW9uOgotICAgICAgICAgICAgaWYgKG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPnRv
bGRDbGllbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9zY2hlZHVs
ZWRSZWRpcmVjdGlvbi0+dG9sZENsaWVudCA9IHRydWU7Ci0gICAgICAgICAgICBsb2FkZXItPmNs
aWVudFJlZGlyZWN0ZWQoS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1fc2NoZWR1bGVkUmVkaXJlY3Rp
b24tPnVybCksCi0gICAgICAgICAgICAgICAgbV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+ZGVsYXks
Ci0gICAgICAgICAgICAgICAgY3VycmVudFRpbWUoKSArIG1fdGltZXIubmV4dEZpcmVJbnRlcnZh
bCgpLAotICAgICAgICAgICAgICAgIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPmxvY2tCYWNrRm9y
d2FyZExpc3QpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIFNjaGVkdWxlZFJl
ZGlyZWN0aW9uOjpmb3JtU3VibWlzc2lvbjoKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJdCB3b3Vs
ZCBtYWtlIHNlbnNlIHRvIHJlcG9ydCBmb3JtIHN1Ym1pc3Npb25zIGFzIGNsaWVudCByZWRpcmVj
dHMgdG9vLgotICAgICAgICAgICAgLy8gQnV0IHdlIGRpZG4ndCBkbyB0aGF0IGluIHRoZSBwYXN0
IHdoZW4gZm9ybSBzdWJtaXNzaW9uIHVzZWQgYSBzZXBhcmF0ZSBkZWxheQotICAgICAgICAgICAg
Ly8gbWVjaGFuaXNtLCBzbyBkb2luZyBpdCB3aWxsIGJlIGEgYmVoYXZpb3IgY2hhbmdlLgotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpoaXN0
b3J5TmF2aWdhdGlvbjoKLSAgICAgICAgICAgIC8vIERvbid0IHJlcG9ydCBoaXN0b3J5IG5hdmln
YXRpb25zLgotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChtX3JlZGlyZWN0LT5kZWxheSgpKTsKKyAg
ICBtX3JlZGlyZWN0LT5kaWRTdGFydFRpbWVyKG1fZnJhbWUsICZtX3RpbWVyKTsKIH0KIAogdm9p
ZCBSZWRpcmVjdFNjaGVkdWxlcjo6Y2FuY2VsKGJvb2wgbmV3TG9hZEluUHJvZ3Jlc3MpCiB7CiAg
ICAgbV90aW1lci5zdG9wKCk7CiAKLSAgICBPd25QdHI8U2NoZWR1bGVkUmVkaXJlY3Rpb24+IHJl
ZGlyZWN0aW9uKG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24ucmVsZWFzZSgpKTsKLSAgICBpZiAocmVk
aXJlY3Rpb24gJiYgcmVkaXJlY3Rpb24tPnRvbGRDbGllbnQpCi0gICAgICAgIG1fZnJhbWUtPmxv
YWRlcigpLT5jbGllbnRSZWRpcmVjdENhbmNlbGxlZE9yRmluaXNoZWQobmV3TG9hZEluUHJvZ3Jl
c3MpOworICAgIE93blB0cjxTY2hlZHVsZWROYXZpZ2F0aW9uPiByZWRpcmVjdChtX3JlZGlyZWN0
LnJlbGVhc2UoKSk7CisgICAgaWYgKHJlZGlyZWN0KQorICAgICAgICByZWRpcmVjdC0+ZGlkU3Rv
cFRpbWVyKG1fZnJhbWUsIG5ld0xvYWRJblByb2dyZXNzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuaCBi
L1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmgKaW5kZXggMDA1YTE3My4uYWMzNzMx
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuaAorKysgYi9X
ZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNz
IEZyYW1lOwogY2xhc3MgU3RyaW5nOwogCiBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKLXN0cnVj
dCBTY2hlZHVsZWRSZWRpcmVjdGlvbjsKK2NsYXNzIFNjaGVkdWxlZE5hdmlnYXRpb247CiAKIGNs
YXNzIFJlZGlyZWN0U2NoZWR1bGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKQEAg
LTY3LDEzICs2NywxMyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCB0aW1lckZpcmVk
KFRpbWVyPFJlZGlyZWN0U2NoZWR1bGVyPiopOwotICAgIHZvaWQgc2NoZWR1bGUoUGFzc093blB0
cjxTY2hlZHVsZWRSZWRpcmVjdGlvbj4pOworICAgIHZvaWQgc2NoZWR1bGUoUGFzc093blB0cjxT
Y2hlZHVsZWROYXZpZ2F0aW9uPik7CiAKICAgICBzdGF0aWMgYm9vbCBtdXN0TG9ja0JhY2tGb3J3
YXJkTGlzdChGcmFtZSogdGFyZ2V0RnJhbWUpOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAg
VGltZXI8UmVkaXJlY3RTY2hlZHVsZXI+IG1fdGltZXI7Ci0gICAgT3duUHRyPFNjaGVkdWxlZFJl
ZGlyZWN0aW9uPiBtX3NjaGVkdWxlZFJlZGlyZWN0aW9uOworICAgIE93blB0cjxTY2hlZHVsZWRO
YXZpZ2F0aW9uPiBtX3JlZGlyZWN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>