<?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>147252</bug_id>
          
          <creation_ts>2015-07-23 20:14:28 -0700</creation_ts>
          <short_desc>[MSE] Incorrect sample timestamps when using &quot;sequence&quot; mode</short_desc>
          <delta_ts>2015-07-24 19:39:05 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.10</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://googlesamples.github.io/web-fundamentals/samples/updates/mse-gap.html</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="Sajid Anwar">sajidanwar94</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jer.noble</cc>
    
    <cc>sajidanwar94</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1111897</commentid>
    <comment_count>0</comment_count>
    <who name="Sajid Anwar">sajidanwar94</who>
    <bug_when>2015-07-23 20:14:28 -0700</bug_when>
    <thetext>This is my first WebKit bug and (hopefully) future patch so pardon any mistakes in the contribution process!

There are two problems that I&apos;ve seen in the SourceBuffer implementation when it is in sequence mode:

1. In the coded frame processing algorithm, step 1.3, the condition should be checking if the source buffer&apos;s mode is &quot;sequence&quot; and if the group start timestamp is valid. The condition currently looks like this:
    
    if (m_mode == sequenceKeyword())

2. According to the specification, &quot;sequence&quot; mode indicates that &quot;[m]edia segments will be treated as adjacent in time independent of the timestamps in the media segment&quot; [1]. In the current implementation of the coded frame processing algorithm, the timestamp offset (when it is non-zero) is being added to each sample&apos;s presentation timestamp and decode timestamp, regardless of the append mode. For the audio MIME types &quot;audio/mpeg&quot; and &quot;audio/aac&quot;, the specification says that the generate timestamps flag should be set [2], and therefore the mode will be &quot;sequence&quot;. I&apos;ve found that in some cases (such as in the URL provided in this report), the samples of the audio already have the correct presentation timestamps. Consequently, when the generated timestamp offsets are being added to each sample, the effect is that each sample&apos;s presentation timestamp is doubled and the audio plays incorrectly, and sometimes not at all. For &quot;sequence&quot; buffers, it seems that the samples&apos; timestamps should be *set to* the generated timestamps, not offset by them. I believe that falls in line more accurately with the specification.

I have a patch to address these that I will attach shortly.

[1]: https://w3c.github.io/media-source/#idl-def-AppendMode.sequence
[2]: https://w3c.github.io/media-source/byte-stream-format-registry.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111900</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-07-23 20:37:37 -0700</bug_when>
    <thetext>Looking forward to it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111936</commentid>
    <comment_count>2</comment_count>
      <attachid>257441</attachid>
    <who name="Sajid Anwar">sajidanwar94</who>
    <bug_when>2015-07-24 00:27:21 -0700</bug_when>
    <thetext>Created attachment 257441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111939</commentid>
    <comment_count>3</comment_count>
    <who name="Sajid Anwar">sajidanwar94</who>
    <bug_when>2015-07-24 00:31:01 -0700</bug_when>
    <thetext>Patch is attached! Took so long to complete because I quickly learned that changing an IDL file causes a lot of files to be recompiled.

Thanks for looking at this, and of course, please let me know if there are any changes to be made.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1111986</commentid>
    <comment_count>4</comment_count>
      <attachid>257441</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-07-24 09:05:36 -0700</bug_when>
    <thetext>Comment on attachment 257441
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=257441&amp;action=review

This patch looks really good! One quibble:

&gt; LayoutTests/media/audio-test.js:1
&gt; +

There&apos;s no need to copy video-test.js -&gt; audio-test.js; it&apos;s used to test &lt;audio&gt; elements (and &lt;video&gt; elements with audio-only media) as well. If there&apos;s any functionality you need which is missing from video-test.js, I&apos;d rather have you add it to video-test.js.

So I&apos;m r-&apos;ing this for now, but this patch can definitely be r+&apos;d with that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112001</commentid>
    <comment_count>5</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-07-24 10:36:34 -0700</bug_when>
    <thetext>BTW, I&apos;m really happy to see the changes to MediaSample / MediaSampleAVFObjC.  We&apos;re going to need to expand on those to fix some other outstanding bugs in the way our MSE implementation treats audio samples.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112014</commentid>
    <comment_count>6</comment_count>
    <who name="Sajid Anwar">sajidanwar94</who>
    <bug_when>2015-07-24 11:05:26 -0700</bug_when>
    <thetext>Good call re: the audio-test.js, I&apos;ll have to make the change and the new patch later tonight.

My motive with these changes is actually to get Google Play Music working with MSE under WebKit/Safari, especially considering the recent Flash Player vulnerabilities. With this patch (and a little user-agent trickery), GPM seems like it may actually mostly work with WebKit, so I&apos;m optimistic! 

(I say &quot;mostly&quot; because songs do stream, but there occasionally seem to be issues with seeking or endOfStream(), though in any case I&apos;ll have to look into that further)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112156</commentid>
    <comment_count>7</comment_count>
      <attachid>257498</attachid>
    <who name="Sajid Anwar">sajidanwar94</who>
    <bug_when>2015-07-24 18:00:43 -0700</bug_when>
    <thetext>Created attachment 257498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112166</commentid>
    <comment_count>8</comment_count>
      <attachid>257501</attachid>
    <who name="Sajid Anwar">sajidanwar94</who>
    <bug_when>2015-07-24 18:24:32 -0700</bug_when>
    <thetext>Created attachment 257501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112167</commentid>
    <comment_count>9</comment_count>
    <who name="Sajid Anwar">sajidanwar94</who>
    <bug_when>2015-07-24 18:26:03 -0700</bug_when>
    <thetext>My mistake, previous patch before the current one had merge conflicts with the ChangeLog files since I had forgotten to run update-webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112170</commentid>
    <comment_count>10</comment_count>
      <attachid>257501</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-07-24 18:31:29 -0700</bug_when>
    <thetext>Comment on attachment 257501
Patch

r=me.  Set cq? if you need to me to mark it for committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112171</commentid>
    <comment_count>11</comment_count>
    <who name="Sajid Anwar">sajidanwar94</who>
    <bug_when>2015-07-24 18:38:26 -0700</bug_when>
    <thetext>Thanks! Appreciate the quick turnaround.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112177</commentid>
    <comment_count>12</comment_count>
      <attachid>257501</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-24 19:39:02 -0700</bug_when>
    <thetext>Comment on attachment 257501
Patch

Clearing flags on attachment: 257501

Committed r187377: &lt;http://trac.webkit.org/changeset/187377&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112178</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-24 19:39:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257441</attachid>
            <date>2015-07-24 00:27:21 -0700</date>
            <delta_ts>2015-07-24 18:00:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147252-20150724002604.patch</filename>
            <type>text/plain</type>
            <size>23759</size>
            <attacher name="Sajid Anwar">sajidanwar94</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODgwYmExODI2ODQ5YzE2
OGM4NzM1NGFlNTRlZmViZmU3NmVlYmE4NC4uNDBlOGRjMjZlNTQ5NWM3M2MzNzAzNzdkYjRkNjIw
NmQ3NTFlYTQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA3LTIzICBTYWpp
ZCBBbndhciAgPHNhamlkYW53YXI5NEBnbWFpbC5jb20+CisKKyAgICAgICAgW01TRV0gSW5jb3Jy
ZWN0IHNhbXBsZSB0aW1lc3RhbXBzIHdoZW4gdXNpbmcgInNlcXVlbmNlIiBtb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyNTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBtZWRpYS9tZWRp
YS1zb3VyY2UvbWVkaWEtc291cmNlLXNlcXVlbmNlLXRpbWVzdGFtcHMuaHRtbAorCisgICAgICAg
IEFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiwgdGhlICJzZXF1ZW5jZSIgbW9kZSBpbmRp
Y2F0ZXMgdGhhdCB0aGUgc2FtcGxlcyBpbiB0aGUgYnVmZmVyIHdpbGwgdXNlIGdlbmVyYXRlZCB0
aW1lc3RhbXBzCisgICAgICAgIGluc3RlYWQgb2YgdGhlIHByZXNlbnRhdGlvbi9kZWNvZGUgdGlt
ZXN0YW1wcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIHNhbXBsZS4gVGhlIGN1cnJlbnQgaW1wbGVt
ZW50YXRpb24gYWx3YXlzIGFkZHMKKyAgICAgICAgdGhlIGN1cnJlbnQgdGltZXN0YW1wIG9mZnNl
dCB0byB0aGUgc2FtcGxlcycgdGltZXN0YW1wcywgYXMgZXhwZWN0ZWQgZm9yICJzZWdtZW50cyIg
bW9kZS4KKworICAgICAgICBBZGQgYSBtZXRob2QgdG8gbWVkaWEgc2FtcGxlcyB0byBhbGxvdyB0
aGVpciBwcmVzZW50YXRpb24gYW5kIGRlY29kZSB0aW1lc3RhbXBzIHRvIGJlIHNldCB0byBzcGVj
aWZpYyB2YWx1ZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlU2FtcGxlKTogRml4IGFuIGFsZ29yaXRobSBjb25kaXRpb24gdG8gYWxpZ24g
d2l0aCB0aGUgc3BlY2lmaWNhdGlvbiwgYW5kCisgICAgICAgICAgICBjb3JyZWN0bHkgc2V0IHRo
ZSBwcmVzZW50YXRpb24gYW5kIGRlY29kZSB0aW1lc3RhbXBzIG9mIHNhbXBsZXMgd2hlbiBpbiAi
c2VxdWVuY2UiIG1vZGUuCisgICAgICAgICogcGxhdGZvcm0vTWVkaWFTYW1wbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0
VGltZXN0YW1wcyk6IEFkZCBhIG5ldyBtZXRob2QgdG8gc2V0IHRoZSB2YWx1ZXMgb2YgYSBzYW1w
bGUncyBwcmVzZW50YXRpb24gYW5kIGRlY29kZSB0aW1lc3RhbXBzLgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0Jv
eDo6c2V0VGltZXN0YW1wcyk6IFNldCBtX3ByZXNlbnRhdGlvblRpbWVzdGFtcCBhbmQgbV9kZWNv
ZGVUaW1lc3RhbXAuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291
cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTYW1wbGU6
Om9mZnNldFRpbWVzdGFtcHNCeSk6IFBhc3MgdG8gTW9ja0JveC4KKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFNob3VsZEdl
bmVyYXRlVGltZXN0YW1wcyk6IEV4cG9zZSB0aGUgaW50ZXJuYWwgYHNldFNob3VsZEdlbmVyYXRl
VGltZXN0YW1wc2AgbWV0aG9kIG9mIFNvdXJjZUJ1ZmZlci4KKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxNS0wNy0y
MyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFtXaW5dIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIxODcyNDUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggZDc1
NTE4YTdkNjZkYWFjYmYxOGNiMTEwMWI4MDhlZTZkOTI4M2Y3YS4uZWE2ZDk2NjBlM2Q0NWUzN2Ez
ZTUyYTA1YjAwMDVkMTg1MWY1N2JjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtMTM4Miw3ICsxMzgyLDcgQEAgdm9p
ZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKFNvdXJj
ZUJ1ZmZlclByaXZhdGUqLCBQYXMKICAgICAgICAgTWVkaWFUaW1lIGZyYW1lRHVyYXRpb24gPSBz
YW1wbGUtPmR1cmF0aW9uKCk7CiAKICAgICAgICAgLy8gMS4zIElmIG1vZGUgZXF1YWxzICJzZXF1
ZW5jZSIgYW5kIGdyb3VwIHN0YXJ0IHRpbWVzdGFtcCBpcyBzZXQsIHRoZW4gcnVuIHRoZSBmb2xs
b3dpbmcgc3RlcHM6Ci0gICAgICAgIGlmIChtX21vZGUgPT0gc2VxdWVuY2VLZXl3b3JkKCkpIHsK
KyAgICAgICAgaWYgKG1fbW9kZSA9PSBzZXF1ZW5jZUtleXdvcmQoKSAmJiBtX2dyb3VwU3RhcnRU
aW1lc3RhbXAuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICAvLyAxLjMuMSBTZXQgdGltZXN0YW1w
T2Zmc2V0IGVxdWFsIHRvIGdyb3VwIHN0YXJ0IHRpbWVzdGFtcCAtIHByZXNlbnRhdGlvbiB0aW1l
c3RhbXAuCiAgICAgICAgICAgICBtX3RpbWVzdGFtcE9mZnNldCA9IG1fZ3JvdXBTdGFydFRpbWVz
dGFtcDsKIApAQCAtMTQ0Nyw4ICsxNDQ3LDExIEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VC
dWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZShTb3VyY2VCdWZmZXJQcml2YXRlKiwgUGFzCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChtX3RpbWVzdGFt
cE9mZnNldCkgewotICAgICAgICAgICAgLy8gUmVmbGVjdCB0aGUgbmV3IHRpbWVzdGFtcHMgYmFj
ayBpbnRvIHRoZSBzYW1wbGUuCisgICAgICAgIGlmIChtX21vZGUgPT0gc2VxdWVuY2VLZXl3b3Jk
KCkpIHsKKyAgICAgICAgICAgIC8vIFVzZSB0aGUgZ2VuZXJhdGVkIHRpbWVzdGFtcHMgaW5zdGVh
ZCBvZiB0aGUgc2FtcGxlJ3MgdGltZXN0YW1wcy4KKyAgICAgICAgICAgIHNhbXBsZS0+c2V0VGlt
ZXN0YW1wcyhwcmVzZW50YXRpb25UaW1lc3RhbXAsIGRlY29kZVRpbWVzdGFtcCk7CisgICAgICAg
IH0gZWxzZSBpZiAobV90aW1lc3RhbXBPZmZzZXQpIHsKKyAgICAgICAgICAgIC8vIFJlZmxlY3Qg
dGhlIHRpbWVzdGFtcCBvZmZzZXQgaW50byB0aGUgc2FtcGxlLgogICAgICAgICAgICAgc2FtcGxl
LT5vZmZzZXRUaW1lc3RhbXBzQnkobV90aW1lc3RhbXBPZmZzZXQpOwogICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDE1NDVjNzdmOThlMzBmZGM3OTYx
M2U0NTY3MTExMmIzOGRkMzZhYmEuLjlmMGNkODE0MGVkYzFlYzJkOWQ2N2EwOGFmOTZhMmEzYjNj
YzY1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtNTksNiArNTks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VGltZXN0YW1wcyhjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBN
ZWRpYVRpbWUmKSA9IDA7CiAKICAgICBlbnVtIFNhbXBsZUZsYWdzIHsKICAgICAgICAgTm9uZSA9
IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tCmluZGV4IDNhNTQxMjJhYWJkMzU3NDBjZjFkODM3MzI4NDc0ZDA3YzBmMDBmYTYu
LjhkODYwOWRlN2UzOTMxYTNkNGUxODE4YjVkMzY2MDgxYzJiZWQxMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC00
NTksNiArNDU5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRm
b3JtU2FtcGxlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNv
bnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRUaW1lc3RhbXBz
KGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOwogCiAgICAgUmV0
YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBtX3NhbXBsZTsKICAgICBBdG9taWNTdHJpbmcgbV9p
ZDsKQEAgLTUzMSw2ICs1MzIsMjkgQEAgdm9pZCBNZWRpYVNhbXBsZUFWRk9iakM6Om9mZnNldFRp
bWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmIG9mZnNldCkKICAgICBtX3NhbXBsZSA9IGFkb3B0
Q0YobmV3U2FtcGxlKTsKIH0KIAordm9pZCBNZWRpYVNhbXBsZUFWRk9iakM6OnNldFRpbWVzdGFt
cHMoY29uc3QgV1RGOjpNZWRpYVRpbWUgJnByZXNlbnRhdGlvblRpbWVzdGFtcCwgY29uc3QgV1RG
OjpNZWRpYVRpbWUgJmRlY29kZVRpbWVzdGFtcCkKK3sKKyAgICBDTUl0ZW1Db3VudCBpdGVtQ291
bnQgPSAwOworICAgIGlmIChub0VyciAhPSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0lu
Zm9BcnJheShtX3NhbXBsZS5nZXQoKSwgMCwgbnVsbHB0ciwgJml0ZW1Db3VudCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFZlY3RvcjxDTVNhbXBsZVRpbWluZ0luZm8+IHRpbWluZ0luZm9BcnJh
eTsKKyAgICB0aW1pbmdJbmZvQXJyYXkuZ3JvdyhpdGVtQ291bnQpOworICAgIGlmIChub0VyciAh
PSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShtX3NhbXBsZS5nZXQoKSwg
aXRlbUNvdW50LCB0aW1pbmdJbmZvQXJyYXkuZGF0YSgpLCBudWxscHRyKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgZm9yIChhdXRvJiB0aW1pbmcgOiB0aW1pbmdJbmZvQXJyYXkpIHsKKyAgICAg
ICAgdGltaW5nLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9IHRvQ01UaW1lKHByZXNlbnRhdGlvblRp
bWVzdGFtcCk7CisgICAgICAgIHRpbWluZy5kZWNvZGVUaW1lU3RhbXAgPSB0b0NNVGltZShkZWNv
ZGVUaW1lc3RhbXApOworICAgIH0KKworICAgIENNU2FtcGxlQnVmZmVyUmVmIG5ld1NhbXBsZTsK
KyAgICBpZiAobm9FcnIgIT0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3NhbXBsZS5nZXQoKSwgaXRlbUNvdW50LCB0aW1pbmdJbmZv
QXJyYXkuZGF0YSgpLCAmbmV3U2FtcGxlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zYW1w
bGUgPSBhZG9wdENGKG5ld1NhbXBsZSk7Cit9CisKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1h
cmsgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guaAppbmRleCBmNWY5NmZjYTdhYjAyNWVlNzQz
NTA4MGVjZWM1YzM2NmU2YTY5NjhkLi4wZTU0MjQ5ZWM1ZjY0OThlNGRiODRjMzZlMTU4NzQ4MGM2
YTRlMDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tCb3guaApAQCAtMTM1LDYgKzEzNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fcHJl
c2VudGF0aW9uVGltZXN0YW1wICs9IG9mZnNldDsKICAgICAgICAgbV9kZWNvZGVUaW1lc3RhbXAg
Kz0gb2Zmc2V0OwogICAgIH0KKyAgICB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1l
JiBwcmVzZW50YXRpb25UaW1lc3RhbXAsIGNvbnN0IE1lZGlhVGltZSYgZGVjb2RlVGltZXN0YW1w
KQorICAgIHsKKyAgICAgICAgbV9wcmVzZW50YXRpb25UaW1lc3RhbXAgPSBwcmVzZW50YXRpb25U
aW1lc3RhbXA7CisgICAgICAgIG1fZGVjb2RlVGltZXN0YW1wID0gZGVjb2RlVGltZXN0YW1wOwor
ICAgIH0KIAogICAgIGVudW0gewogICAgICAgICBJc1N5bmMgPSAxIDw8IDAsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCmluZGV4IDM2OWZmMzQ4NDAyZDlkYmNhNDI3YWYw
ZWZhZWUyNDVmZGU3ZWU1MGMuLjQ4ZWJkYmQwOGQ4MTQ5NGVjOGY2NmFlNjc5NWFmMzE3MGMyNDNi
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC02NCw2ICs2
NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0U2l6ZSgpOyB9CiAgICAgdmlydHVhbCB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgb2Zm
c2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYgb2Zmc2V0KSBvdmVycmlkZSB7IG1fYm94
Lm9mZnNldFRpbWVzdGFtcHNCeShvZmZzZXQpOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFRpbWVz
dGFtcHMoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lc3RhbXAsIGNvbnN0IE1lZGlh
VGltZSYgZGVjb2RlVGltZXN0YW1wKSBvdmVycmlkZSB7IG1fYm94LnNldFRpbWVzdGFtcHMocHJl
c2VudGF0aW9uVGltZXN0YW1wLCBkZWNvZGVUaW1lc3RhbXApOyB9CiAKICAgICB1bnNpZ25lZCBn
ZW5lcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ib3guZ2VuZXJhdGlvbigpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAzOWE5NWI2ZjM5NjgzYjFjNTFlMDVlNTVl
Y2E1NDY1MGJlMDA4NWIxLi5hYTc0MzQ2NjUwMWJlMDc5YmNhOWY5YjVlYzU5OWZjNGYzOGY4NTNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yNjMzLDYgKzI2MzMsMTIg
QEAgVmVjdG9yPFN0cmluZz4gSW50ZXJuYWxzOjpidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKFNv
dXJjZUJ1ZmZlciogYnVmZmVyLCBjb25zdAogCiAgICAgcmV0dXJuIGJ1ZmZlci0+YnVmZmVyZWRT
YW1wbGVzRm9yVHJhY2tJRCh0cmFja0lEKTsKIH0KKyAgICAKK3ZvaWQgSW50ZXJuYWxzOjpzZXRT
aG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMoU291cmNlQnVmZmVyKiBidWZmZXIsIGJvb2wgZmxhZykK
K3sKKyAgICBpZiAoYnVmZmVyKQorICAgICAgICBidWZmZXItPnNldFNob3VsZEdlbmVyYXRlVGlt
ZXN0YW1wcyhmbGFnKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNmQyOTY0YWQ0MTEzNDVmZjNlZTA4M2JhZTNjMWRmNTFh
MDQxNjFmMC4uMTFlYjkyMGNmNmY1MzQ1OTc4MmZkOTUxYzg2MjY2MjZhNjNhZTNlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0zODEsNiArMzgxLDcgQEAgcHVibGljOgogI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9p
ZCBpbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CiAgICAgVmVjdG9yPFN0cmluZz4gYnVmZmVy
ZWRTYW1wbGVzRm9yVHJhY2tJRChTb3VyY2VCdWZmZXIqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsK
KyAgICB2b2lkIHNldFNob3VsZEdlbmVyYXRlVGltZXN0YW1wcyhTb3VyY2VCdWZmZXIqLCBib29s
KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCmluZGV4IGVhMWRmMmMyZDJkZTQ2MGVmZDIzOTI4ZDBjZDUwZGIwNWZhODE5MjUuLmU2
YzhjYjRmZjJjYmMwY2I5YjQ3NzBmYWZkZDgzMWRhODY5MzViMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKQEAgLTM1NSw2ICszNTUsNyBAQCBlbnVtIE1lZGlhU2Vzc2lvbklu
dGVycnVwdGluZ0NhdGVnb3J5IHsKIAogICAgIFtDb25kaXRpb25hbD1NRURJQV9TT1VSQ0VdIHZv
aWQgaW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgpOwogICAgIFtDb25kaXRpb25hbD1NRURJQV9T
T1VSQ0VdIERPTVN0cmluZ1tdIGJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNrSUQoU291cmNlQnVmZmVy
IGJ1ZmZlciwgRE9NU3RyaW5nIHRyYWNrSUQpOworICAgIFtDb25kaXRpb25hbD1NRURJQV9TT1VS
Q0VdIHZvaWQgc2V0U2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBzKFNvdXJjZUJ1ZmZlciBidWZmZXIs
IGJvb2xlYW4gZmxhZyk7CiAKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHZvaWQgYmVnaW5NZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb24oKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHZvaWQgZW5k
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKERPTVN0cmluZyBmbGFncyk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTQxYjUw
MjE5N2JhOWFjYTZjMzA1ZDI5YWI0MmE1ZDY2ZjM2ZjA5OC4uZjYwMzc0NWU3MDg5ZmM5YmM3NGRk
MzJhYjdiMTgwZTc0ZjM1NzFiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTA3LTIzICBT
YWppZCBBbndhciAgPHNhamlkYW53YXI5NEBnbWFpbC5jb20+CisKKyAgICAgICAgW01TRV0gSW5j
b3JyZWN0IHNhbXBsZSB0aW1lc3RhbXBzIHdoZW4gdXNpbmcgInNlcXVlbmNlIiBtb2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyNTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL2F1ZGlv
LXRlc3QuanM6IEFkZGVkLiBMYXJnZWx5IGEgY29weSBvZiB2aWRlby10ZXN0LmpzLCBidXQgbW9k
aWZpZWQgZm9yIDxhdWRpbz4gZWxlbWVudHMuCisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNl
L21lZGlhLXNvdXJjZS1zZXF1ZW5jZS10aW1lc3RhbXBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1zZXF1ZW5jZS10aW1lc3Rh
bXBzLmh0bWw6IEFkZGVkLgorCiAyMDE1LTA3LTIzICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgQVg6IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjaGlsZHJlbkNoYW5n
ZWQoKSBnZW5lcmF0ZXMgdG9vIG1hbnkgQVhMaXZlUmVnaW9uQ2hhbmdlZCBub3RpZmljYXRpb25z
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9hdWRpby10ZXN0LmpzIGIvTGF5b3V0VGVz
dHMvbWVkaWEvYXVkaW8tdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDc1YjZhYjA5MGUxYWUxNzU2MzQz
NDZlZDUxMjJkZWZlOWFmY2E0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
YXVkaW8tdGVzdC5qcwpAQCAtMCwwICsxLDM2MiBAQAorCit2YXIgYXVkaW8gPSBudWxsOwordmFy
IG1lZGlhRWxlbWVudCA9IGRvY3VtZW50OyAvLyBJZiBub3Qgc2V0LCBhbiBldmVudCBmcm9tIGFu
eSBlbGVtZW50IHdpbGwgdHJpZ2dlciBhIHdhaXRGb3JFdmVudCgpIGNhbGxiYWNrLgordmFyIGNv
bnNvbGVFbGVtZW50ID0gbnVsbDsKK3ZhciBwcmludEZ1bGxUZXN0RGV0YWlscyA9IHRydWU7IC8v
IFRoaXMgaXMgb3B0aW9uYWx5IHN3aXRjaGVkIG9mIGJ5IHRlc3Qgd2hvc2UgdGVzdGVkIHZhbHVl
cyBjYW4gZGlmZmVyLiAoc2VlIGRpc2FibGVGdWxsVGVzdERldGFpbHNQcmludGluZygpKQordmFy
IEZhaWxlZCA9IGZhbHNlOworCit2YXIgdHJhY2sgPSBudWxsOyAvLyBDdXJyZW50IFRleHRUcmFj
ayBiZWluZyB0ZXN0ZWQuCit2YXIgY3VlcyA9IG51bGw7IC8vIEN1cnJlbnQgVGV4dFRyYWNrQ3Vl
TGlzdCBiZWluZyB0ZXN0ZWQuCit2YXIgbnVtYmVyT2ZUcmFja1Rlc3RzID0gMDsKK3ZhciBudW1i
ZXJPZlRyYWNrc0xvYWRlZCA9IDA7CisKK2ZpbmRNZWRpYUVsZW1lbnQoKTsKK2xvZ0NvbnNvbGUo
KTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgLy8gU29tZSB0cmFjayBlbGVtZW50
IHJlbmRlcmluZyB0ZXN0cyByZXF1aXJlIHRleHQgcGl4ZWwgZHVtcC4KKyAgICBpZiAodHlwZW9m
IHJlcXVpcmVQaXhlbER1bXAgPT0gInVuZGVmaW5lZCIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgICAgICAKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30K
KworZnVuY3Rpb24gZGlzYWJsZUZ1bGxUZXN0RGV0YWlsc1ByaW50aW5nKCkKK3sKKyAgICBwcmlu
dEZ1bGxUZXN0RGV0YWlscyA9IGZhbHNlOworfQorCitmdW5jdGlvbiBlbmFibGVGdWxsVGVzdERl
dGFpbHNQcmludGluZygpCit7CisgICAgcHJpbnRGdWxsVGVzdERldGFpbHMgPSB0cnVlOworfQor
CitmdW5jdGlvbiBsb2dDb25zb2xlKCkKK3sKKyAgICBpZiAoIWNvbnNvbGVFbGVtZW50ICYmIGRv
Y3VtZW50LmJvZHkpIHsKKyAgICAgICAgY29uc29sZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xl
RWxlbWVudCk7CisgICAgfQorICAgIHJldHVybiBjb25zb2xlRWxlbWVudDsKK30KKworZnVuY3Rp
b24gZmluZE1lZGlhRWxlbWVudCgpCit7CisgICAgdHJ5IHsKKyAgICAgICAgYXVkaW8gPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYXVkaW8nKVswXTsKKyAgICAgICAgaWYgKGF1ZGlv
KQorICAgICAgICAgICAgbWVkaWFFbGVtZW50ID0gYXVkaW87CisgICAgfSBjYXRjaCAoZXgpIHsg
fQorfQorCitmdW5jdGlvbiB0ZXN0QW5kRW5kKHRlc3RGdW5jU3RyaW5nKQoreworICAgIHRlc3Qo
dGVzdEZ1bmNTdHJpbmcsIHRydWUpOworfQorCitmdW5jdGlvbiB0ZXN0KHRlc3RGdW5jU3RyaW5n
LCBlbmRpdCkKK3sKKyAgICBsb2dSZXN1bHQoZXZhbCh0ZXN0RnVuY1N0cmluZyksICJURVNUKCIg
KyB0ZXN0RnVuY1N0cmluZyArICIpIik7CisgICAgaWYgKGVuZGl0KQorICAgICAgICBlbmRUZXN0
KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RFeHBlY3RlZCh0ZXN0RnVuY1N0cmluZywgZXhwZWN0ZWQs
IGNvbXBhcmlzb24pCit7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIG9ic2VydmVkID0gZXZhbCh0
ZXN0RnVuY1N0cmluZyk7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgY29uc29sZVdyaXRl
KGV4KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChjb21wYXJpc29uID09PSB1
bmRlZmluZWQpCisgICAgICAgIGNvbXBhcmlzb24gPSAnPT0nOworCisgICAgdmFyIHN1Y2Nlc3Mg
PSBmYWxzZTsKKyAgICBzd2l0Y2ggKGNvbXBhcmlzb24pCisgICAgeworICAgICAgICBjYXNlICc8
JzogICBzdWNjZXNzID0gb2JzZXJ2ZWQgPCAgZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNl
ICc8PSc6IHN1Y2Nlc3MgPSBvYnNlcnZlZCA8PSBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNh
c2UgJz4nOiAgIHN1Y2Nlc3MgPSBvYnNlcnZlZCA+ICBleHBlY3RlZDsgYnJlYWs7CisgICAgICAg
IGNhc2UgJz49Jzogc3VjY2VzcyA9IG9ic2VydmVkID49IGV4cGVjdGVkOyBicmVhazsKKyAgICAg
ICAgY2FzZSAnIT0nOiAgc3VjY2VzcyA9IG9ic2VydmVkICE9IGV4cGVjdGVkOyBicmVhazsKKyAg
ICAgICAgY2FzZSAnPT0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgPT0gZXhwZWN0ZWQ7IGJyZWFrOwor
ICAgICAgICBjYXNlICc9PT0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgPT09IGV4cGVjdGVkOyBicmVh
azsKKyAgICAgICAgY2FzZSAnaW5zdGFuY2VvZic6IHN1Y2Nlc3MgPSBvYnNlcnZlZCBpbnN0YW5j
ZW9mIGV4cGVjdGVkOyBicmVhazsKKyAgICB9CisKKyAgICByZXBvcnRFeHBlY3RlZChzdWNjZXNz
LCB0ZXN0RnVuY1N0cmluZywgY29tcGFyaXNvbiwgZXhwZWN0ZWQsIG9ic2VydmVkKQorfQorCitm
dW5jdGlvbiB0ZXN0QXJyYXlzRXF1YWwodGVzdEZ1bmNTdHJpbmcsIGV4cGVjdGVkKQoreworICAg
IHZhciBvYnNlcnZlZDsKKyAgICB0cnkgeworICAgICAgICBvYnNlcnZlZCA9IGV2YWwodGVzdEZ1
bmNTdHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGNvbnNvbGVXcml0ZShleCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0ZXN0RXhwZWN0ZWQodGVzdEZ1bmNTdHJp
bmcgKyAiLmxlbmd0aCIsIGV4cGVjdGVkLmxlbmd0aCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IG9ic2VydmVkLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHRlc3RFeHBlY3RlZCh0ZXN0RnVu
Y1N0cmluZyArICJbIiArIGkgKyAiXSIsIGV4cGVjdGVkW2ldKTsKKyAgICB9Cit9CisKK3ZhciB0
ZXN0TnVtYmVyID0gMDsKKworZnVuY3Rpb24gcmVwb3J0RXhwZWN0ZWQoc3VjY2VzcywgdGVzdEZ1
bmNTdHJpbmcsIGNvbXBhcmlzb24sIGV4cGVjdGVkLCBvYnNlcnZlZCkKK3sKKyAgICB0ZXN0TnVt
YmVyKys7CisKKyAgICB2YXIgbXNnID0gIlRlc3QgIiArIHRlc3ROdW1iZXI7CisKKyAgICBpZiAo
cHJpbnRGdWxsVGVzdERldGFpbHMgfHwgIXN1Y2Nlc3MpCisgICAgICAgIG1zZyA9ICJFWFBFQ1RF
RCAoPGVtPiIgKyB0ZXN0RnVuY1N0cmluZyArICIgPC9lbT4iICsgY29tcGFyaXNvbiArICIgJzxl
bT4iICsgZXhwZWN0ZWQgKyAiPC9lbT4nKSI7CisKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAg
IG1zZyArPSAgIiwgT0JTRVJWRUQgJzxlbT4iICsgb2JzZXJ2ZWQgKyAiPC9lbT4nIjsKKworICAg
IGxvZ1Jlc3VsdChzdWNjZXNzLCBtc2cpOworfQorCitmdW5jdGlvbiBydW5TaWxlbnRseSh0ZXN0
RnVuY1N0cmluZykKK3sKKyAgICBpZiAocHJpbnRGdWxsVGVzdERldGFpbHMpCisgICAgICAgIGNv
bnNvbGVXcml0ZSgiUlVOKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIik7CisgICAgdHJ5IHsKKyAg
ICAgICAgZXZhbCh0ZXN0RnVuY1N0cmluZyk7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAg
aWYgKCFwcmludEZ1bGxUZXN0RGV0YWlscykgeworICAgICAgICAgICAgLy8gTm8gZGV0YWlscyB3
ZXJlIHByaW50ZWQgcHJldmlvdXMsIGdpdmUgc29tZSBub3cuCisgICAgICAgICAgICAvLyBUaGlz
IHdpbGwgYmUgaGVscGZ1bCBpbiBjYXNlIG9mIGVycm9yLgorICAgICAgICAgICAgbG9nUmVzdWx0
KEZhaWxlZCwgIkVycm9yIGluIFJVTigiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKToiKTsKKyAgICAg
ICAgfQorICAgICAgICBsb2dSZXN1bHQoRmFpbGVkLCAiPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+
IitleCsiPC9zcGFuPiIpOworICAgIH0KK30KKworZnVuY3Rpb24gcnVuKHRlc3RGdW5jU3RyaW5n
KQoreworICAgIGNvbnNvbGVXcml0ZSgiUlVOKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIik7Cisg
ICAgdHJ5IHsKKyAgICAgICAgZXZhbCh0ZXN0RnVuY1N0cmluZyk7CisgICAgfSBjYXRjaCAoZXgp
IHsKKyAgICAgICAgY29uc29sZVdyaXRlKGV4KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHdhaXRG
b3JFdmVudE9uY2UoZXZlbnROYW1lLCBmdW5jLCBlbmRpdCkKK3sKKyAgICB3YWl0Rm9yRXZlbnQo
ZXZlbnROYW1lLCBmdW5jLCBlbmRpdCwgdHJ1ZSkKK30KKworZnVuY3Rpb24gd2FpdEZvckV2ZW50
QW5kRW5kKGV2ZW50TmFtZSwgZnVuY1N0cmluZykKK3sKKyAgICB3YWl0Rm9yRXZlbnQoZXZlbnRO
YW1lLCBmdW5jU3RyaW5nLCB0cnVlKQorfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnQoZXZlbnRO
YW1lLCBmdW5jLCBlbmRpdCwgb25lVGltZU9ubHksIGVsZW1lbnQpCit7CisgICAgaWYgKCFlbGVt
ZW50KQorICAgICAgICBlbGVtZW50ID0gbWVkaWFFbGVtZW50OworCisgICAgZnVuY3Rpb24gX2V2
ZW50Q2FsbGJhY2soZXZlbnQpCisgICAgeworICAgICAgICBpZiAob25lVGltZU9ubHkpCisgICAg
ICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxs
YmFjaywgdHJ1ZSk7CisKKyAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVCgiICsgZXZlbnROYW1l
ICsgIikiKTsKKworICAgICAgICBpZiAoZnVuYykKKyAgICAgICAgICAgIGZ1bmMoZXZlbnQpOwor
CisgICAgICAgIGlmIChlbmRpdCkKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAg
ICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxsYmFjaywgdHJ1
ZSk7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudFRlc3RBbmRFbmQoZXZlbnROYW1lLCB0ZXN0
RnVuY1N0cmluZykKK3sKKyAgICB3YWl0Rm9yRXZlbnRBbmRUZXN0KGV2ZW50TmFtZSwgdGVzdEZ1
bmNTdHJpbmcsIHRydWUpOworfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRGYWlsKGV2ZW50
TmFtZSkKK3sKKyAgICB3YWl0Rm9yRXZlbnRBbmRUZXN0KGV2ZW50TmFtZSwgImZhbHNlIiwgdHJ1
ZSk7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudEFuZFRlc3QoZXZlbnROYW1lLCB0ZXN0RnVu
Y1N0cmluZywgZW5kaXQpCit7CisgICAgZnVuY3Rpb24gX2V2ZW50Q2FsbGJhY2soZXZlbnQpCisg
ICAgeworICAgICAgICBsb2dSZXN1bHQoZXZhbCh0ZXN0RnVuY1N0cmluZyksICJFVkVOVCgiICsg
ZXZlbnROYW1lICsgIikgVEVTVCgiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSIpOworICAgICAgICBp
ZiAoZW5kaXQpCisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorCisgICAgbWVkaWFFbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxsYmFjaywgdHJ1ZSk7Cit9
CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudE9uY2VPbihlbGVtZW50LCBldmVudE5hbWUsIGZ1bmMs
IGVuZGl0KQoreworICAgIHdhaXRGb3JFdmVudE9uKGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuYywg
ZW5kaXQsIHRydWUpOworfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRPbihlbGVtZW50LCBldmVu
dE5hbWUsIGZ1bmMsIGVuZGl0LCBvbmVUaW1lT25seSkKK3sKKyAgICB3YWl0Rm9yRXZlbnQoZXZl
bnROYW1lLCBmdW5jLCBlbmRpdCwgb25lVGltZU9ubHksIGVsZW1lbnQpOworfQorCitmdW5jdGlv
biB0ZXN0RE9NRXhjZXB0aW9uKHRlc3RTdHJpbmcsIGV4Y2VwdGlvblN0cmluZykKK3sKKyAgICB0
cnkgeworICAgICAgICBldmFsKHRlc3RTdHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAg
ICAgIHZhciBleGNlcHRpb24gPSBleDsKKyAgICB9CisgICAgbG9nUmVzdWx0KGV4Y2VwdGlvbiBp
bnN0YW5jZW9mIERPTUV4Y2VwdGlvbiAmJiBleGNlcHRpb24uY29kZSA9PT0gZXZhbChleGNlcHRp
b25TdHJpbmcpLAorICAgICAgICAiVEVTVCgiICsgdGVzdFN0cmluZyArICIpIFRIUk9XUygiICsg
ZXhjZXB0aW9uU3RyaW5nICsgIikiKTsKK30KKworZnVuY3Rpb24gdGVzdEV4Y2VwdGlvbih0ZXN0
U3RyaW5nLCBleGNlcHRpb25TdHJpbmcpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKHRlc3RT
dHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIHZhciBleGNlcHRpb24gPSBleDsK
KyAgICB9CisgICAgbG9nUmVzdWx0KGV4Y2VwdGlvbiAhPT0gdW5kZWZpbmVkICYmIGV4Y2VwdGlv
biA9PSBldmFsKGV4Y2VwdGlvblN0cmluZyksCisgICAgICAgICJURVNUKCIgKyB0ZXN0U3RyaW5n
ICsgIikgVEhST1dTKCIgKyBleGNlcHRpb25TdHJpbmcgKyAiKSIpOworfQorCit2YXIgdGVzdEVu
ZGVkID0gZmFsc2U7CisKK2Z1bmN0aW9uIGVuZFRlc3QoKQoreworICAgIGNvbnNvbGVXcml0ZSgi
RU5EIE9GIFRFU1QiKTsKKyAgICB0ZXN0RW5kZWQgPSB0cnVlOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICAvLyBGSVhNRSAoMTIxMTcwKTogV2Ugc2hvdWxkbid0IG5lZWQg
dGhlIHplcm8tZGVsYXkgdGltZXIuIEJ1dCB0ZXh0IHRyYWNrIGxheW91dAorICAgICAgICAvLyBo
YXBwZW5zIGFzeW5jaHJvbm91c2x5LCBzbyB3ZSBuZWVkIGl0IHRvIHJ1biBmaXJzdCB0byBoYXZl
IHN0YWJsZSB0ZXN0IHJlc3VsdHMuCisgICAgICAgIHNldFRpbWVvdXQoInRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpIiwgMCk7CisgICAgfQorfQorCitmdW5jdGlvbiBlbmRUZXN0TGF0ZXIoKQorewor
ICAgIHNldFRpbWVvdXQoZW5kVGVzdCwgMjUwKTsKK30KKworZnVuY3Rpb24gZmFpbFRlc3RJbiht
cykKK3sKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY29uc29sZVdyaXRl
KCJGQUlMOiBkaWQgbm90IGVuZCBmYXN0IGVub3VnaCIpOworICAgICAgICBlbmRUZXN0KCk7Cisg
ICAgfSwgbXMpOworfQorCitmdW5jdGlvbiBmYWlsVGVzdCh0ZXh0KQoreworICAgIGxvZ1Jlc3Vs
dChGYWlsZWQsIHRleHQpOworICAgIGVuZFRlc3QoKTsKK30KKworCitmdW5jdGlvbiBsb2dSZXN1
bHQoc3VjY2VzcywgdGV4dCkKK3sKKyAgICBpZiAoc3VjY2VzcykKKyAgICAgICAgY29uc29sZVdy
aXRlKHRleHQgKyAiIDxzcGFuIHN0eWxlPSdjb2xvcjpncmVlbic+T0s8L3NwYW4+Iik7CisgICAg
ZWxzZQorICAgICAgICBjb25zb2xlV3JpdGUodGV4dCArICIgPHNwYW4gc3R5bGU9J2NvbG9yOnJl
ZCc+RkFJTDwvc3Bhbj4iKTsKK30KKworZnVuY3Rpb24gY29uc29sZVdyaXRlKHRleHQpCit7Cisg
ICAgaWYgKHRlc3RFbmRlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGxvZ0NvbnNvbGUoKS5pbm5l
ckhUTUwgKz0gdGV4dCArICI8YnI+IjsKK30KKworZnVuY3Rpb24gcmVsYXRpdmVVUkwodXJsKQor
eworICAgIHJldHVybiB1cmwuc3Vic3RyKHVybC5sYXN0SW5kZXhPZignL21lZGlhLycpKzcpOwor
fQorCisKK2Z1bmN0aW9uIGlzSW5UaW1lUmFuZ2VzKHJhbmdlcywgdGltZSkKK3sKKyAgICB2YXIg
aSA9IDA7CisgICAgZm9yIChpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7ICsraSkgeworICAgICAg
ICBpZiAodGltZSA+PSByYW5nZXMuc3RhcnQoaSkgJiYgdGltZSA8PSByYW5nZXMuZW5kKGkpKSB7
CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitmdW5jdGlvbiBhbGxUZXN0c0VuZGVkKCkKK3sKKyAgICBudW1iZXJPZlRyYWNr
VGVzdHMtLTsKKyAgICBpZiAobnVtYmVyT2ZUcmFja1Rlc3RzID09IDApCisgICAgICAgIGVuZFRl
c3QoKTsKK30KKwordmFyIHJlcXVpcmVkRXZlbnRzID0gW107CisKK2Z1bmN0aW9uIHdhaXRGb3JF
dmVudHNBbmRDYWxsKGV2ZW50TGlzdCwgZnVuYykKK3sKKyAgICBmdW5jdGlvbiBfZXZlbnRDYWxs
YmFjayhldmVudCkKKyAgICB7CisgICAgICAgIGlmICghcmVxdWlyZWRFdmVudHMubGVuZ3RoKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBpbmRleCA9IHJlcXVpcmVkRXZlbnRz
LmluZGV4T2YoZXZlbnQudHlwZSk7CisgICAgICAgIGlmIChpbmRleCA8IDApCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgcmVxdWlyZWRFdmVudHMuc3BsaWNlKGluZGV4LCAxKTsKKyAg
ICAgICAgaWYgKHJlcXVpcmVkRXZlbnRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBmdW5jKCk7CisgICAgfQorCisgICAgcmVxdWlyZWRFdmVudHMgPSBbXTsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGV2ZW50TGlzdC5sZW5ndGg7IGkrKykgeworICAgICAgICByZXF1
aXJlZEV2ZW50c1tpXSA9IGV2ZW50TGlzdFtpXVsxXTsKKyAgICAgICAgZXZlbnRMaXN0W2ldWzBd
LmFkZEV2ZW50TGlzdGVuZXIocmVxdWlyZWRFdmVudHNbaV0sIF9ldmVudENhbGxiYWNrLCB0cnVl
KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNldENhcHRpb25EaXNwbGF5TW9kZShtb2RlKQorewor
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0Q2FwdGlvbkRp
c3BsYXlNb2RlKG1vZGUpOworICAgIGVsc2UKKyAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+PGI+
KiogVGhpcyB0ZXN0IG9ubHkgd29ya3MgaW4gRFJUISAqKjwiICsgIi9iPjxicj4iKTsKK30KKwor
ZnVuY3Rpb24gcnVuV2l0aEtleURvd24oZm4pIAoreworICAgIC8vIEZJWE1FOiBXS1RSIGRvZXMg
bm90IHlldCBzdXBwb3J0IHRoZSBrZXlEb3duKCkgbWVzc2FnZS4gIERvIGEgbW91c2VEb3duIGhl
cmUKKyAgICAvLyBpbnN0ZWFkIHVudGlsIGtleURvd24gc3VwcG9ydCBpcyBhZGRlZC4KKyAgICB2
YXIgZXZlbnROYW1lID0gIXdpbmRvdy50ZXN0UnVubmVyIHx8IGV2ZW50U2VuZGVyLmtleURvd24g
PyAna2V5cHJlc3MnIDogJ21vdXNlZG93bicKKworICAgIGZ1bmN0aW9uIHRodW5rKCkgeworICAg
ICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdGh1bmssIGZhbHNl
KTsKKyAgICAgICAgZm4oKTsKKyAgICB9CisgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWUsIHRodW5rLCBmYWxzZSk7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgaWYgKGV2ZW50U2VuZGVyLmtleURvd24pCisgICAgICAgICAgICBldmVudFNlbmRl
ci5rZXlEb3duKCIgIiwgW10pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZURvd24oKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXNlcXVlbmNlLXRpbWVzdGFtcHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1zZXF1ZW5jZS10
aW1lc3RhbXBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzgwMzQ5ZjIwOGZhYzAwZjg0ZmM4
YWM1ZWQzMmI2MWZjMDU4N2ZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
bWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1zZXF1ZW5jZS10aW1lc3RhbXBzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE3IEBACitSVU4oYXVkaW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChz
b3VyY2UpKQorRVZFTlQoc291cmNlb3BlbikKK1JVTihzb3VyY2VCdWZmZXIgPSBzb3VyY2UuYWRk
U291cmNlQnVmZmVyKCJhdWRpby9tb2NrOyBjb2RlY3M9bW9jayIpKQorUlVOKHNvdXJjZUJ1ZmZl
ci5tb2RlID0gInNlcXVlbmNlIikKK1JVTihzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGluaXRT
ZWdtZW50KSkKK0VWRU5UKHVwZGF0ZWVuZCkKK1JVTihzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVy
KHNhbXBsZXMpKQorRVZFTlQodXBkYXRlZW5kKQorRVhQRUNURUQgKGJ1ZmZlcmVkU2FtcGxlcy5s
ZW5ndGggPT0gJzYnKSBPSwore1BUUyh7MC8xLCAwLjAwMDAwMH0pLCBEVFMoezAvMSwgMC4wMDAw
MDB9KSwgZHVyYXRpb24oezEwMDAvMTAwMCwgMS4wMDAwMDB9KSwgZmxhZ3MoMSksIGdlbmVyYXRp
b24oMCl9Cit7UFRTKHsxMDAwLzEwMDAsIDEuMDAwMDAwfSksIERUUyh7MTAwMC8xMDAwLCAxLjAw
MDAwMH0pLCBkdXJhdGlvbih7MTAwMC8xMDAwLCAxLjAwMDAwMH0pLCBmbGFncygwKSwgZ2VuZXJh
dGlvbigwKX0KK3tQVFMoezIwMDAvMTAwMCwgMi4wMDAwMDB9KSwgRFRTKHsyMDAwLzEwMDAsIDIu
MDAwMDAwfSksIGR1cmF0aW9uKHsxMDAwLzEwMDAsIDEuMDAwMDAwfSksIGZsYWdzKDApLCBnZW5l
cmF0aW9uKDApfQore1BUUyh7MzAwMC8xMDAwLCAzLjAwMDAwMH0pLCBEVFMoezMwMDAvMTAwMCwg
My4wMDAwMDB9KSwgZHVyYXRpb24oezEwMDAvMTAwMCwgMS4wMDAwMDB9KSwgZmxhZ3MoMSksIGdl
bmVyYXRpb24oMCl9Cit7UFRTKHs0MDAwLzEwMDAsIDQuMDAwMDAwfSksIERUUyh7NDAwMC8xMDAw
LCA0LjAwMDAwMH0pLCBkdXJhdGlvbih7MTAwMC8xMDAwLCAxLjAwMDAwMH0pLCBmbGFncygwKSwg
Z2VuZXJhdGlvbigwKX0KK3tQVFMoezUwMDAvMTAwMCwgNS4wMDAwMDB9KSwgRFRTKHs1MDAwLzEw
MDAsIDUuMDAwMDAwfSksIGR1cmF0aW9uKHsxMDAwLzEwMDAsIDEuMDAwMDAwfSksIGZsYWdzKDAp
LCBnZW5lcmF0aW9uKDApfQorRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
bWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1zZXF1ZW5jZS10aW1lc3RhbXBzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXNlcXVlbmNlLXRp
bWVzdGFtcHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTg5ZTJlNWQyNjM5ZTc5NzY4ZTQ2MDdmMDk5N2Vh
NmFjNmY5ODlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291
cmNlL21lZGlhLXNvdXJjZS1zZXF1ZW5jZS10aW1lc3RhbXBzLmh0bWwKQEAgLTAsMCArMSw2MyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5tZWRpYS1zb3Vy
Y2Utc2VxdWVuY2UtdGltZXN0YW1wczwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Im1vY2stbWVk
aWEtc291cmNlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vYXVkaW8tdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB2YXIgc291cmNlOworICAgIHZhciBzb3Vy
Y2VCdWZmZXI7CisgICAgdmFyIGluaXRTZWdtZW50OworICAgIHZhciBzYW1wbGVzOworICAgIHZh
ciBidWZmZXJlZFNhbXBsZXM7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
aW50ZXJuYWxzLmluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UoKTsKKworICAgIGZ1bmN0aW9uIHJ1
blRlc3QoKQorICAgIHsKKyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIHNv
dXJjZSA9IG5ldyBNZWRpYVNvdXJjZSgpOworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2Us
ICdzb3VyY2VvcGVuJywgc291cmNlT3Blbik7CisgICAgICAgIHJ1bignYXVkaW8uc3JjID0gVVJM
LmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpJyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc291cmNl
T3BlbigpCisgICAgeworICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlciA9IHNvdXJjZS5hZGRTb3Vy
Y2VCdWZmZXIoImF1ZGlvL21vY2s7IGNvZGVjcz1tb2NrIiknKTsKKyAgICAgICAgcnVuKCdzb3Vy
Y2VCdWZmZXIubW9kZSA9ICJzZXF1ZW5jZSInKTsKKyAgICAgICAgaW50ZXJuYWxzLnNldFNob3Vs
ZEdlbmVyYXRlVGltZXN0YW1wcyhzb3VyY2VCdWZmZXIsIHRydWUpOworICAgICAgICB3YWl0Rm9y
RXZlbnRPbihzb3VyY2VCdWZmZXIsICd1cGRhdGVlbmQnLCBsb2FkU2FtcGxlcywgZmFsc2UsIHRy
dWUpOworICAgICAgICBpbml0U2VnbWVudCA9IG1ha2VBSW5pdCg4LCBbbWFrZUFUcmFjaygxLCAn
bW9jaycsIFRSQUNLX0tJTkQuQVVESU8pXSk7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVyLmFw
cGVuZEJ1ZmZlcihpbml0U2VnbWVudCknKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBsb2FkU2Ft
cGxlcygpCisgICAgeworICAgICAgICAvLyBJbiAic2VxdWVuY2UiIG1vZGUsIHRoZSBzYW1wbGVz
JyB0aW1lc3RhbXBzIGFyZSBub3QgdXNlZAorICAgICAgICBzYW1wbGVzID0gY29uY2F0ZW5hdGVT
YW1wbGVzKFsKKyAgICAgICAgICAgIG1ha2VBU2FtcGxlKDAsIDAsIDEsIDEsIFNBTVBMRV9GTEFH
LlNZTkMsIDApLAorICAgICAgICAgICAgbWFrZUFTYW1wbGUoMiwgMiwgMSwgMSwgU0FNUExFX0ZM
QUcuTk9ORSwgMCksCisgICAgICAgICAgICBtYWtlQVNhbXBsZSg0LCA0LCAxLCAxLCBTQU1QTEVf
RkxBRy5OT05FLCAwKSwKKyAgICAgICAgICAgIG1ha2VBU2FtcGxlKDYsIDYsIDEsIDEsIFNBTVBM
RV9GTEFHLlNZTkMsIDApLAorICAgICAgICAgICAgbWFrZUFTYW1wbGUoOCwgOCwgMSwgMSwgU0FN
UExFX0ZMQUcuTk9ORSwgMCksCisgICAgICAgICAgICBtYWtlQVNhbXBsZSgxMCwgMTAsIDEsIDEs
IFNBTVBMRV9GTEFHLk5PTkUsIDApLAorICAgICAgICBdKTsKKyAgICAgICAgd2FpdEZvckV2ZW50
T24oc291cmNlQnVmZmVyLCAndXBkYXRlZW5kJywgc2FtcGxlc0FkZGVkLCBmYWxzZSwgdHJ1ZSk7
CisgICAgICAgIHJ1bignc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihzYW1wbGVzKScpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHNhbXBsZXNBZGRlZCgpCisgICAgeworICAgICAgICBidWZmZXJl
ZFNhbXBsZXMgPSBpbnRlcm5hbHMuYnVmZmVyZWRTYW1wbGVzRm9yVHJhY2tJRChzb3VyY2VCdWZm
ZXIsIDEpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoImJ1ZmZlcmVkU2FtcGxlcy5sZW5ndGgiLCA2
KTsKKyAgICAgICAgYnVmZmVyZWRTYW1wbGVzLmZvckVhY2goY29uc29sZVdyaXRlKTsKKworICAg
ICAgICBlbmRUZXN0KCk7CisgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgorICAgIDxhdWRpbz48L2F1ZGlvPgorPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257498</attachid>
            <date>2015-07-24 18:00:43 -0700</date>
            <delta_ts>2015-07-24 18:24:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147252-20150724175925.patch</filename>
            <type>text/plain</type>
            <size>14390</size>
            <attacher name="Sajid Anwar">sajidanwar94</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODgwYmExODI2ODQ5YzE2
OGM4NzM1NGFlNTRlZmViZmU3NmVlYmE4NC4uNDBlOGRjMjZlNTQ5NWM3M2MzNzAzNzdkYjRkNjIw
NmQ3NTFlYTQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA3LTIzICBTYWpp
ZCBBbndhciAgPHNhamlkYW53YXI5NEBnbWFpbC5jb20+CisKKyAgICAgICAgW01TRV0gSW5jb3Jy
ZWN0IHNhbXBsZSB0aW1lc3RhbXBzIHdoZW4gdXNpbmcgInNlcXVlbmNlIiBtb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyNTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBtZWRpYS9tZWRp
YS1zb3VyY2UvbWVkaWEtc291cmNlLXNlcXVlbmNlLXRpbWVzdGFtcHMuaHRtbAorCisgICAgICAg
IEFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiwgdGhlICJzZXF1ZW5jZSIgbW9kZSBpbmRp
Y2F0ZXMgdGhhdCB0aGUgc2FtcGxlcyBpbiB0aGUgYnVmZmVyIHdpbGwgdXNlIGdlbmVyYXRlZCB0
aW1lc3RhbXBzCisgICAgICAgIGluc3RlYWQgb2YgdGhlIHByZXNlbnRhdGlvbi9kZWNvZGUgdGlt
ZXN0YW1wcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIHNhbXBsZS4gVGhlIGN1cnJlbnQgaW1wbGVt
ZW50YXRpb24gYWx3YXlzIGFkZHMKKyAgICAgICAgdGhlIGN1cnJlbnQgdGltZXN0YW1wIG9mZnNl
dCB0byB0aGUgc2FtcGxlcycgdGltZXN0YW1wcywgYXMgZXhwZWN0ZWQgZm9yICJzZWdtZW50cyIg
bW9kZS4KKworICAgICAgICBBZGQgYSBtZXRob2QgdG8gbWVkaWEgc2FtcGxlcyB0byBhbGxvdyB0
aGVpciBwcmVzZW50YXRpb24gYW5kIGRlY29kZSB0aW1lc3RhbXBzIHRvIGJlIHNldCB0byBzcGVj
aWZpYyB2YWx1ZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlU2FtcGxlKTogRml4IGFuIGFsZ29yaXRobSBjb25kaXRpb24gdG8gYWxpZ24g
d2l0aCB0aGUgc3BlY2lmaWNhdGlvbiwgYW5kCisgICAgICAgICAgICBjb3JyZWN0bHkgc2V0IHRo
ZSBwcmVzZW50YXRpb24gYW5kIGRlY29kZSB0aW1lc3RhbXBzIG9mIHNhbXBsZXMgd2hlbiBpbiAi
c2VxdWVuY2UiIG1vZGUuCisgICAgICAgICogcGxhdGZvcm0vTWVkaWFTYW1wbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0
VGltZXN0YW1wcyk6IEFkZCBhIG5ldyBtZXRob2QgdG8gc2V0IHRoZSB2YWx1ZXMgb2YgYSBzYW1w
bGUncyBwcmVzZW50YXRpb24gYW5kIGRlY29kZSB0aW1lc3RhbXBzLgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0Jv
eDo6c2V0VGltZXN0YW1wcyk6IFNldCBtX3ByZXNlbnRhdGlvblRpbWVzdGFtcCBhbmQgbV9kZWNv
ZGVUaW1lc3RhbXAuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291
cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTYW1wbGU6
Om9mZnNldFRpbWVzdGFtcHNCeSk6IFBhc3MgdG8gTW9ja0JveC4KKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFNob3VsZEdl
bmVyYXRlVGltZXN0YW1wcyk6IEV4cG9zZSB0aGUgaW50ZXJuYWwgYHNldFNob3VsZEdlbmVyYXRl
VGltZXN0YW1wc2AgbWV0aG9kIG9mIFNvdXJjZUJ1ZmZlci4KKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxNS0wNy0y
MyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFtXaW5dIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIxODcyNDUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggZDc1
NTE4YTdkNjZkYWFjYmYxOGNiMTEwMWI4MDhlZTZkOTI4M2Y3YS4uZWE2ZDk2NjBlM2Q0NWUzN2Ez
ZTUyYTA1YjAwMDVkMTg1MWY1N2JjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtMTM4Miw3ICsxMzgyLDcgQEAgdm9p
ZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKFNvdXJj
ZUJ1ZmZlclByaXZhdGUqLCBQYXMKICAgICAgICAgTWVkaWFUaW1lIGZyYW1lRHVyYXRpb24gPSBz
YW1wbGUtPmR1cmF0aW9uKCk7CiAKICAgICAgICAgLy8gMS4zIElmIG1vZGUgZXF1YWxzICJzZXF1
ZW5jZSIgYW5kIGdyb3VwIHN0YXJ0IHRpbWVzdGFtcCBpcyBzZXQsIHRoZW4gcnVuIHRoZSBmb2xs
b3dpbmcgc3RlcHM6Ci0gICAgICAgIGlmIChtX21vZGUgPT0gc2VxdWVuY2VLZXl3b3JkKCkpIHsK
KyAgICAgICAgaWYgKG1fbW9kZSA9PSBzZXF1ZW5jZUtleXdvcmQoKSAmJiBtX2dyb3VwU3RhcnRU
aW1lc3RhbXAuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICAvLyAxLjMuMSBTZXQgdGltZXN0YW1w
T2Zmc2V0IGVxdWFsIHRvIGdyb3VwIHN0YXJ0IHRpbWVzdGFtcCAtIHByZXNlbnRhdGlvbiB0aW1l
c3RhbXAuCiAgICAgICAgICAgICBtX3RpbWVzdGFtcE9mZnNldCA9IG1fZ3JvdXBTdGFydFRpbWVz
dGFtcDsKIApAQCAtMTQ0Nyw4ICsxNDQ3LDExIEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VC
dWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZShTb3VyY2VCdWZmZXJQcml2YXRlKiwgUGFzCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChtX3RpbWVzdGFt
cE9mZnNldCkgewotICAgICAgICAgICAgLy8gUmVmbGVjdCB0aGUgbmV3IHRpbWVzdGFtcHMgYmFj
ayBpbnRvIHRoZSBzYW1wbGUuCisgICAgICAgIGlmIChtX21vZGUgPT0gc2VxdWVuY2VLZXl3b3Jk
KCkpIHsKKyAgICAgICAgICAgIC8vIFVzZSB0aGUgZ2VuZXJhdGVkIHRpbWVzdGFtcHMgaW5zdGVh
ZCBvZiB0aGUgc2FtcGxlJ3MgdGltZXN0YW1wcy4KKyAgICAgICAgICAgIHNhbXBsZS0+c2V0VGlt
ZXN0YW1wcyhwcmVzZW50YXRpb25UaW1lc3RhbXAsIGRlY29kZVRpbWVzdGFtcCk7CisgICAgICAg
IH0gZWxzZSBpZiAobV90aW1lc3RhbXBPZmZzZXQpIHsKKyAgICAgICAgICAgIC8vIFJlZmxlY3Qg
dGhlIHRpbWVzdGFtcCBvZmZzZXQgaW50byB0aGUgc2FtcGxlLgogICAgICAgICAgICAgc2FtcGxl
LT5vZmZzZXRUaW1lc3RhbXBzQnkobV90aW1lc3RhbXBPZmZzZXQpOwogICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IDE1NDVjNzdmOThlMzBmZGM3OTYx
M2U0NTY3MTExMmIzOGRkMzZhYmEuLjlmMGNkODE0MGVkYzFlYzJkOWQ2N2EwOGFmOTZhMmEzYjNj
YzY1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtNTksNiArNTks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VGltZXN0YW1wcyhjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBN
ZWRpYVRpbWUmKSA9IDA7CiAKICAgICBlbnVtIFNhbXBsZUZsYWdzIHsKICAgICAgICAgTm9uZSA9
IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tCmluZGV4IDNhNTQxMjJhYWJkMzU3NDBjZjFkODM3MzI4NDc0ZDA3YzBmMDBmYTYu
LjhkODYwOWRlN2UzOTMxYTNkNGUxODE4YjVkMzY2MDgxYzJiZWQxMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC00
NTksNiArNDU5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRm
b3JtU2FtcGxlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNv
bnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRUaW1lc3RhbXBz
KGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOwogCiAgICAgUmV0
YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBtX3NhbXBsZTsKICAgICBBdG9taWNTdHJpbmcgbV9p
ZDsKQEAgLTUzMSw2ICs1MzIsMjkgQEAgdm9pZCBNZWRpYVNhbXBsZUFWRk9iakM6Om9mZnNldFRp
bWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmIG9mZnNldCkKICAgICBtX3NhbXBsZSA9IGFkb3B0
Q0YobmV3U2FtcGxlKTsKIH0KIAordm9pZCBNZWRpYVNhbXBsZUFWRk9iakM6OnNldFRpbWVzdGFt
cHMoY29uc3QgV1RGOjpNZWRpYVRpbWUgJnByZXNlbnRhdGlvblRpbWVzdGFtcCwgY29uc3QgV1RG
OjpNZWRpYVRpbWUgJmRlY29kZVRpbWVzdGFtcCkKK3sKKyAgICBDTUl0ZW1Db3VudCBpdGVtQ291
bnQgPSAwOworICAgIGlmIChub0VyciAhPSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0lu
Zm9BcnJheShtX3NhbXBsZS5nZXQoKSwgMCwgbnVsbHB0ciwgJml0ZW1Db3VudCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFZlY3RvcjxDTVNhbXBsZVRpbWluZ0luZm8+IHRpbWluZ0luZm9BcnJh
eTsKKyAgICB0aW1pbmdJbmZvQXJyYXkuZ3JvdyhpdGVtQ291bnQpOworICAgIGlmIChub0VyciAh
PSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShtX3NhbXBsZS5nZXQoKSwg
aXRlbUNvdW50LCB0aW1pbmdJbmZvQXJyYXkuZGF0YSgpLCBudWxscHRyKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgZm9yIChhdXRvJiB0aW1pbmcgOiB0aW1pbmdJbmZvQXJyYXkpIHsKKyAgICAg
ICAgdGltaW5nLnByZXNlbnRhdGlvblRpbWVTdGFtcCA9IHRvQ01UaW1lKHByZXNlbnRhdGlvblRp
bWVzdGFtcCk7CisgICAgICAgIHRpbWluZy5kZWNvZGVUaW1lU3RhbXAgPSB0b0NNVGltZShkZWNv
ZGVUaW1lc3RhbXApOworICAgIH0KKworICAgIENNU2FtcGxlQnVmZmVyUmVmIG5ld1NhbXBsZTsK
KyAgICBpZiAobm9FcnIgIT0gQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3NhbXBsZS5nZXQoKSwgaXRlbUNvdW50LCB0aW1pbmdJbmZv
QXJyYXkuZGF0YSgpLCAmbmV3U2FtcGxlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zYW1w
bGUgPSBhZG9wdENGKG5ld1NhbXBsZSk7Cit9CisKICNwcmFnbWEgbWFyayAtCiAjcHJhZ21hIG1h
cmsgTWVkaWFEZXNjcmlwdGlvbkFWRk9iakMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guaAppbmRleCBmNWY5NmZjYTdhYjAyNWVlNzQz
NTA4MGVjZWM1YzM2NmU2YTY5NjhkLi4wZTU0MjQ5ZWM1ZjY0OThlNGRiODRjMzZlMTU4NzQ4MGM2
YTRlMDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tCb3guaApAQCAtMTM1LDYgKzEzNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fcHJl
c2VudGF0aW9uVGltZXN0YW1wICs9IG9mZnNldDsKICAgICAgICAgbV9kZWNvZGVUaW1lc3RhbXAg
Kz0gb2Zmc2V0OwogICAgIH0KKyAgICB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1l
JiBwcmVzZW50YXRpb25UaW1lc3RhbXAsIGNvbnN0IE1lZGlhVGltZSYgZGVjb2RlVGltZXN0YW1w
KQorICAgIHsKKyAgICAgICAgbV9wcmVzZW50YXRpb25UaW1lc3RhbXAgPSBwcmVzZW50YXRpb25U
aW1lc3RhbXA7CisgICAgICAgIG1fZGVjb2RlVGltZXN0YW1wID0gZGVjb2RlVGltZXN0YW1wOwor
ICAgIH0KIAogICAgIGVudW0gewogICAgICAgICBJc1N5bmMgPSAxIDw8IDAsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCmluZGV4IDM2OWZmMzQ4NDAyZDlkYmNhNDI3YWYw
ZWZhZWUyNDVmZGU3ZWU1MGMuLjQ4ZWJkYmQwOGQ4MTQ5NGVjOGY2NmFlNjc5NWFmMzE3MGMyNDNi
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC02NCw2ICs2
NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0U2l6ZSgpOyB9CiAgICAgdmlydHVhbCB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgb2Zm
c2V0VGltZXN0YW1wc0J5KGNvbnN0IE1lZGlhVGltZSYgb2Zmc2V0KSBvdmVycmlkZSB7IG1fYm94
Lm9mZnNldFRpbWVzdGFtcHNCeShvZmZzZXQpOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFRpbWVz
dGFtcHMoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lc3RhbXAsIGNvbnN0IE1lZGlh
VGltZSYgZGVjb2RlVGltZXN0YW1wKSBvdmVycmlkZSB7IG1fYm94LnNldFRpbWVzdGFtcHMocHJl
c2VudGF0aW9uVGltZXN0YW1wLCBkZWNvZGVUaW1lc3RhbXApOyB9CiAKICAgICB1bnNpZ25lZCBn
ZW5lcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ib3guZ2VuZXJhdGlvbigpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAzOWE5NWI2ZjM5NjgzYjFjNTFlMDVlNTVl
Y2E1NDY1MGJlMDA4NWIxLi5hYTc0MzQ2NjUwMWJlMDc5YmNhOWY5YjVlYzU5OWZjNGYzOGY4NTNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yNjMzLDYgKzI2MzMsMTIg
QEAgVmVjdG9yPFN0cmluZz4gSW50ZXJuYWxzOjpidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKFNv
dXJjZUJ1ZmZlciogYnVmZmVyLCBjb25zdAogCiAgICAgcmV0dXJuIGJ1ZmZlci0+YnVmZmVyZWRT
YW1wbGVzRm9yVHJhY2tJRCh0cmFja0lEKTsKIH0KKyAgICAKK3ZvaWQgSW50ZXJuYWxzOjpzZXRT
aG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMoU291cmNlQnVmZmVyKiBidWZmZXIsIGJvb2wgZmxhZykK
K3sKKyAgICBpZiAoYnVmZmVyKQorICAgICAgICBidWZmZXItPnNldFNob3VsZEdlbmVyYXRlVGlt
ZXN0YW1wcyhmbGFnKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNmQyOTY0YWQ0MTEzNDVmZjNlZTA4M2JhZTNjMWRmNTFh
MDQxNjFmMC4uMTFlYjkyMGNmNmY1MzQ1OTc4MmZkOTUxYzg2MjY2MjZhNjNhZTNlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0zODEsNiArMzgxLDcgQEAgcHVibGljOgogI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9p
ZCBpbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CiAgICAgVmVjdG9yPFN0cmluZz4gYnVmZmVy
ZWRTYW1wbGVzRm9yVHJhY2tJRChTb3VyY2VCdWZmZXIqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsK
KyAgICB2b2lkIHNldFNob3VsZEdlbmVyYXRlVGltZXN0YW1wcyhTb3VyY2VCdWZmZXIqLCBib29s
KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCmluZGV4IGVhMWRmMmMyZDJkZTQ2MGVmZDIzOTI4ZDBjZDUwZGIwNWZhODE5MjUuLmU2
YzhjYjRmZjJjYmMwY2I5YjQ3NzBmYWZkZDgzMWRhODY5MzViMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKQEAgLTM1NSw2ICszNTUsNyBAQCBlbnVtIE1lZGlhU2Vzc2lvbklu
dGVycnVwdGluZ0NhdGVnb3J5IHsKIAogICAgIFtDb25kaXRpb25hbD1NRURJQV9TT1VSQ0VdIHZv
aWQgaW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgpOwogICAgIFtDb25kaXRpb25hbD1NRURJQV9T
T1VSQ0VdIERPTVN0cmluZ1tdIGJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNrSUQoU291cmNlQnVmZmVy
IGJ1ZmZlciwgRE9NU3RyaW5nIHRyYWNrSUQpOworICAgIFtDb25kaXRpb25hbD1NRURJQV9TT1VS
Q0VdIHZvaWQgc2V0U2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBzKFNvdXJjZUJ1ZmZlciBidWZmZXIs
IGJvb2xlYW4gZmxhZyk7CiAKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHZvaWQgYmVnaW5NZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb24oKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHZvaWQgZW5k
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKERPTVN0cmluZyBmbGFncyk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTQxYjUw
MjE5N2JhOWFjYTZjMzA1ZDI5YWI0MmE1ZDY2ZjM2ZjA5OC4uYTEyNjdmNTRmY2MyYTljZTM5ZGFi
ZTczZDBiMmI1MjAwYmExYWVmNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA3LTIzICBT
YWppZCBBbndhciAgPHNhamlkYW53YXI5NEBnbWFpbC5jb20+CisKKyAgICAgICAgW01TRV0gSW5j
b3JyZWN0IHNhbXBsZSB0aW1lc3RhbXBzIHdoZW4gdXNpbmcgInNlcXVlbmNlIiBtb2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyNTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL21lZGlh
LXNvdXJjZS9tZWRpYS1zb3VyY2Utc2VxdWVuY2UtdGltZXN0YW1wcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utc2VxdWVuY2Ut
dGltZXN0YW1wcy5odG1sOiBBZGRlZC4KKwogMjAxNS0wNy0yMyAgTmFuIFdhbmcgIDxuX3dhbmdA
YXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hpbGRy
ZW5DaGFuZ2VkKCkgZ2VuZXJhdGVzIHRvbyBtYW55IEFYTGl2ZVJlZ2lvbkNoYW5nZWQgbm90aWZp
Y2F0aW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlh
LXNvdXJjZS1zZXF1ZW5jZS10aW1lc3RhbXBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21l
ZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utc2VxdWVuY2UtdGltZXN0YW1wcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjM4MDM0OWYyMDhmYWMwMGY4NGZjOGFjNWVkMzJiNjFmYzA1ODdm
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YS1zb3VyY2Utc2VxdWVuY2UtdGltZXN0YW1wcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBA
QAorUlVOKGF1ZGlvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKSkKK0VWRU5UKHNv
dXJjZW9wZW4pCitSVU4oc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcigiYXVk
aW8vbW9jazsgY29kZWNzPW1vY2siKSkKK1JVTihzb3VyY2VCdWZmZXIubW9kZSA9ICJzZXF1ZW5j
ZSIpCitSVU4oc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihpbml0U2VnbWVudCkpCitFVkVOVCh1
cGRhdGVlbmQpCitSVU4oc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihzYW1wbGVzKSkKK0VWRU5U
KHVwZGF0ZWVuZCkKK0VYUEVDVEVEIChidWZmZXJlZFNhbXBsZXMubGVuZ3RoID09ICc2JykgT0sK
K3tQVFMoezAvMSwgMC4wMDAwMDB9KSwgRFRTKHswLzEsIDAuMDAwMDAwfSksIGR1cmF0aW9uKHsx
MDAwLzEwMDAsIDEuMDAwMDAwfSksIGZsYWdzKDEpLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MTAw
MC8xMDAwLCAxLjAwMDAwMH0pLCBEVFMoezEwMDAvMTAwMCwgMS4wMDAwMDB9KSwgZHVyYXRpb24o
ezEwMDAvMTAwMCwgMS4wMDAwMDB9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsy
MDAwLzEwMDAsIDIuMDAwMDAwfSksIERUUyh7MjAwMC8xMDAwLCAyLjAwMDAwMH0pLCBkdXJhdGlv
bih7MTAwMC8xMDAwLCAxLjAwMDAwMH0pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMo
ezMwMDAvMTAwMCwgMy4wMDAwMDB9KSwgRFRTKHszMDAwLzEwMDAsIDMuMDAwMDAwfSksIGR1cmF0
aW9uKHsxMDAwLzEwMDAsIDEuMDAwMDAwfSksIGZsYWdzKDEpLCBnZW5lcmF0aW9uKDApfQore1BU
Uyh7NDAwMC8xMDAwLCA0LjAwMDAwMH0pLCBEVFMoezQwMDAvMTAwMCwgNC4wMDAwMDB9KSwgZHVy
YXRpb24oezEwMDAvMTAwMCwgMS4wMDAwMDB9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7
UFRTKHs1MDAwLzEwMDAsIDUuMDAwMDAwfSksIERUUyh7NTAwMC8xMDAwLCA1LjAwMDAwMH0pLCBk
dXJhdGlvbih7MTAwMC8xMDAwLCAxLjAwMDAwMH0pLCBmbGFncygwKSwgZ2VuZXJhdGlvbigwKX0K
K0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJj
ZS9tZWRpYS1zb3VyY2Utc2VxdWVuY2UtdGltZXN0YW1wcy5odG1sIGIvTGF5b3V0VGVzdHMvbWVk
aWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1zZXF1ZW5jZS10aW1lc3RhbXBzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uY2RlMGM5YjM1MjFhNzI4OWJmODA1ZDJhZDQwNmIxYjQ3NTQzODRhMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Ut
c2VxdWVuY2UtdGltZXN0YW1wcy5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+bWVkaWEtc291cmNlLXNlcXVlbmNlLXRpbWVz
dGFtcHM8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSJtb2NrLW1lZGlhLXNvdXJjZS5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQ+CisgICAgdmFyIHNvdXJjZTsKKyAgICB2YXIgc291cmNlQnVmZmVyOworICAgIHZh
ciBpbml0U2VnbWVudDsKKyAgICB2YXIgc2FtcGxlczsKKyAgICB2YXIgYnVmZmVyZWRTYW1wbGVz
OworICAgIAorICAgIHZhciBhdWRpbzsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICBpbnRlcm5hbHMuaW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgpOworCisgICAgZnVuY3Rp
b24gcnVuVGVzdCgpCisgICAgeworICAgICAgICBhdWRpbyA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCdhdWRpbycpWzBdOworCisgICAgICAgIHNvdXJjZSA9IG5ldyBNZWRpYVNvdXJj
ZSgpOworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2UsICdzb3VyY2VvcGVuJywgc291cmNl
T3Blbik7CisgICAgICAgIHJ1bignYXVkaW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3Vy
Y2UpJyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc291cmNlT3BlbigpCisgICAgeworICAgICAg
ICBydW4oJ3NvdXJjZUJ1ZmZlciA9IHNvdXJjZS5hZGRTb3VyY2VCdWZmZXIoImF1ZGlvL21vY2s7
IGNvZGVjcz1tb2NrIiknKTsKKyAgICAgICAgcnVuKCdzb3VyY2VCdWZmZXIubW9kZSA9ICJzZXF1
ZW5jZSInKTsKKyAgICAgICAgaW50ZXJuYWxzLnNldFNob3VsZEdlbmVyYXRlVGltZXN0YW1wcyhz
b3VyY2VCdWZmZXIsIHRydWUpOworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2VCdWZmZXIs
ICd1cGRhdGVlbmQnLCBsb2FkU2FtcGxlcywgZmFsc2UsIHRydWUpOworICAgICAgICBpbml0U2Vn
bWVudCA9IG1ha2VBSW5pdCg4LCBbbWFrZUFUcmFjaygxLCAnbW9jaycsIFRSQUNLX0tJTkQuQVVE
SU8pXSk7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihpbml0U2VnbWVu
dCknKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBsb2FkU2FtcGxlcygpCisgICAgeworICAgICAg
ICAvLyBJbiAic2VxdWVuY2UiIG1vZGUsIHRoZSBzYW1wbGVzJyB0aW1lc3RhbXBzIGFyZSBub3Qg
dXNlZAorICAgICAgICBzYW1wbGVzID0gY29uY2F0ZW5hdGVTYW1wbGVzKFsKKyAgICAgICAgICAg
IG1ha2VBU2FtcGxlKDAsIDAsIDEsIDEsIFNBTVBMRV9GTEFHLlNZTkMsIDApLAorICAgICAgICAg
ICAgbWFrZUFTYW1wbGUoMiwgMiwgMSwgMSwgU0FNUExFX0ZMQUcuTk9ORSwgMCksCisgICAgICAg
ICAgICBtYWtlQVNhbXBsZSg0LCA0LCAxLCAxLCBTQU1QTEVfRkxBRy5OT05FLCAwKSwKKyAgICAg
ICAgICAgIG1ha2VBU2FtcGxlKDYsIDYsIDEsIDEsIFNBTVBMRV9GTEFHLlNZTkMsIDApLAorICAg
ICAgICAgICAgbWFrZUFTYW1wbGUoOCwgOCwgMSwgMSwgU0FNUExFX0ZMQUcuTk9ORSwgMCksCisg
ICAgICAgICAgICBtYWtlQVNhbXBsZSgxMCwgMTAsIDEsIDEsIFNBTVBMRV9GTEFHLk5PTkUsIDAp
LAorICAgICAgICBdKTsKKyAgICAgICAgd2FpdEZvckV2ZW50T24oc291cmNlQnVmZmVyLCAndXBk
YXRlZW5kJywgc2FtcGxlc0FkZGVkLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHJ1bignc291cmNl
QnVmZmVyLmFwcGVuZEJ1ZmZlcihzYW1wbGVzKScpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNh
bXBsZXNBZGRlZCgpCisgICAgeworICAgICAgICBidWZmZXJlZFNhbXBsZXMgPSBpbnRlcm5hbHMu
YnVmZmVyZWRTYW1wbGVzRm9yVHJhY2tJRChzb3VyY2VCdWZmZXIsIDEpOworICAgICAgICB0ZXN0
RXhwZWN0ZWQoImJ1ZmZlcmVkU2FtcGxlcy5sZW5ndGgiLCA2KTsKKyAgICAgICAgYnVmZmVyZWRT
YW1wbGVzLmZvckVhY2goY29uc29sZVdyaXRlKTsKKworICAgICAgICBlbmRUZXN0KCk7CisgICAg
fQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAg
IDxhdWRpbz48L2F1ZGlvPgorPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257501</attachid>
            <date>2015-07-24 18:24:32 -0700</date>
            <delta_ts>2015-07-24 19:39:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147252-20150724182314.patch</filename>
            <type>text/plain</type>
            <size>14367</size>
            <attacher name="Sajid Anwar">sajidanwar94</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3Mzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDBlZjhkMjg1ZDJiOGU1
YzY5YWZkMTVjZjRkYzM4YzY4M2RlNWVkNy4uNjMxNjdlZDk2MGQ0NzE2YTRkMWZhODJiYzA5ZThk
ODRmYTRiY2JjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTA3LTI0ICBTYWpp
ZCBBbndhciAgPHNhamlkYW53YXI5NEBnbWFpbC5jb20+CisKKyAgICAgICAgW01TRV0gSW5jb3Jy
ZWN0IHNhbXBsZSB0aW1lc3RhbXBzIHdoZW4gdXNpbmcgInNlcXVlbmNlIiBtb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyNTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBtZWRpYS9tZWRp
YS1zb3VyY2UvbWVkaWEtc291cmNlLXNlcXVlbmNlLXRpbWVzdGFtcHMuaHRtbAorCisgICAgICAg
IEFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiwgdGhlICJzZXF1ZW5jZSIgbW9kZSBpbmRp
Y2F0ZXMgdGhhdCB0aGUgc2FtcGxlcyBpbiB0aGUgYnVmZmVyIHdpbGwgdXNlIGdlbmVyYXRlZCB0
aW1lc3RhbXBzCisgICAgICAgIGluc3RlYWQgb2YgdGhlIHByZXNlbnRhdGlvbi9kZWNvZGUgdGlt
ZXN0YW1wcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIHNhbXBsZS4gVGhlIGN1cnJlbnQgaW1wbGVt
ZW50YXRpb24gYWx3YXlzIGFkZHMKKyAgICAgICAgdGhlIGN1cnJlbnQgdGltZXN0YW1wIG9mZnNl
dCB0byB0aGUgc2FtcGxlcycgdGltZXN0YW1wcywgYXMgZXhwZWN0ZWQgZm9yICJzZWdtZW50cyIg
bW9kZS4KKworICAgICAgICBBZGQgYSBtZXRob2QgdG8gbWVkaWEgc2FtcGxlcyB0byBhbGxvdyB0
aGVpciBwcmVzZW50YXRpb24gYW5kIGRlY29kZSB0aW1lc3RhbXBzIHRvIGJlIHNldCB0byBzcGVj
aWZpYyB2YWx1ZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlU2FtcGxlKTogRml4IGFuIGFsZ29yaXRobSBjb25kaXRpb24gdG8gYWxpZ24g
d2l0aCB0aGUgc3BlY2lmaWNhdGlvbiwgYW5kCisgICAgICAgICAgICBjb3JyZWN0bHkgc2V0IHRo
ZSBwcmVzZW50YXRpb24gYW5kIGRlY29kZSB0aW1lc3RhbXBzIG9mIHNhbXBsZXMgd2hlbiBpbiAi
c2VxdWVuY2UiIG1vZGUuCisgICAgICAgICogcGxhdGZvcm0vTWVkaWFTYW1wbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6c2V0
VGltZXN0YW1wcyk6IEFkZCBhIG5ldyBtZXRob2QgdG8gc2V0IHRoZSB2YWx1ZXMgb2YgYSBzYW1w
bGUncyBwcmVzZW50YXRpb24gYW5kIGRlY29kZSB0aW1lc3RhbXBzLgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0Jv
eDo6c2V0VGltZXN0YW1wcyk6IFNldCBtX3ByZXNlbnRhdGlvblRpbWVzdGFtcCBhbmQgbV9kZWNv
ZGVUaW1lc3RhbXAuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291
cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTYW1wbGU6
Om9mZnNldFRpbWVzdGFtcHNCeSk6IFBhc3MgdG8gTW9ja0JveC4KKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFNob3VsZEdl
bmVyYXRlVGltZXN0YW1wcyk6IEV4cG9zZSB0aGUgaW50ZXJuYWwgYHNldFNob3VsZEdlbmVyYXRl
VGltZXN0YW1wc2AgbWV0aG9kIG9mIFNvdXJjZUJ1ZmZlci4KKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxNS0wNy0y
NCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFdLV2Vi
c2l0ZURhdGFTdG9yZSByZW1vdmUgbWV0aG9kcyBkb24ndCBwcm9wZXJseSBkZWxldGUgY29va2ll
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXIuY3BwCmluZGV4IGQ3NTUxOGE3ZDY2ZGFhY2JmMThjYjExMDFiODA4ZWU2ZDkyODNmN2EuLmVh
NmQ5NjYwZTNkNDVlMzdhM2U1MmEwNWIwMDA1ZDE4NTFmNTdiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTEzODIs
NyArMTM4Miw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVj
ZWl2ZVNhbXBsZShTb3VyY2VCdWZmZXJQcml2YXRlKiwgUGFzCiAgICAgICAgIE1lZGlhVGltZSBm
cmFtZUR1cmF0aW9uID0gc2FtcGxlLT5kdXJhdGlvbigpOwogCiAgICAgICAgIC8vIDEuMyBJZiBt
b2RlIGVxdWFscyAic2VxdWVuY2UiIGFuZCBncm91cCBzdGFydCB0aW1lc3RhbXAgaXMgc2V0LCB0
aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBpZiAobV9tb2RlID09IHNlcXVl
bmNlS2V5d29yZCgpKSB7CisgICAgICAgIGlmIChtX21vZGUgPT0gc2VxdWVuY2VLZXl3b3JkKCkg
JiYgbV9ncm91cFN0YXJ0VGltZXN0YW1wLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgLy8gMS4z
LjEgU2V0IHRpbWVzdGFtcE9mZnNldCBlcXVhbCB0byBncm91cCBzdGFydCB0aW1lc3RhbXAgLSBw
cmVzZW50YXRpb24gdGltZXN0YW1wLgogICAgICAgICAgICAgbV90aW1lc3RhbXBPZmZzZXQgPSBt
X2dyb3VwU3RhcnRUaW1lc3RhbXA7CiAKQEAgLTE0NDcsOCArMTQ0NywxMSBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUoU291cmNlQnVmZmVy
UHJpdmF0ZSosIFBhcwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAobV90aW1lc3RhbXBPZmZzZXQpIHsKLSAgICAgICAgICAgIC8vIFJlZmxlY3QgdGhlIG5l
dyB0aW1lc3RhbXBzIGJhY2sgaW50byB0aGUgc2FtcGxlLgorICAgICAgICBpZiAobV9tb2RlID09
IHNlcXVlbmNlS2V5d29yZCgpKSB7CisgICAgICAgICAgICAvLyBVc2UgdGhlIGdlbmVyYXRlZCB0
aW1lc3RhbXBzIGluc3RlYWQgb2YgdGhlIHNhbXBsZSdzIHRpbWVzdGFtcHMuCisgICAgICAgICAg
ICBzYW1wbGUtPnNldFRpbWVzdGFtcHMocHJlc2VudGF0aW9uVGltZXN0YW1wLCBkZWNvZGVUaW1l
c3RhbXApOworICAgICAgICB9IGVsc2UgaWYgKG1fdGltZXN0YW1wT2Zmc2V0KSB7CisgICAgICAg
ICAgICAvLyBSZWZsZWN0IHRoZSB0aW1lc3RhbXAgb2Zmc2V0IGludG8gdGhlIHNhbXBsZS4KICAg
ICAgICAgICAgIHNhbXBsZS0+b2Zmc2V0VGltZXN0YW1wc0J5KG1fdGltZXN0YW1wT2Zmc2V0KTsK
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNh
bXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAppbmRleCAxNTQ1
Yzc3Zjk4ZTMwZmRjNzk2MTNlNDU2NzExMTJiMzhkZDM2YWJhLi45ZjBjZDgxNDBlZGMxZWMyZDlk
NjdhMDhhZjk2YTJhM2IzY2M2NTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NZWRpYVNhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxl
LmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc2l6ZV90IHNpemVJbkJ5
dGVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBN
ZWRpYVRpbWUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVk
aWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgPSAwOwogCiAgICAgZW51bSBTYW1wbGVGbGFncyB7
CiAgICAgICAgIE5vbmUgPSAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCAzYTU0MTIyYWFiZDM1NzQwY2YxZDgzNzMy
ODQ3NGQwN2MwZjAwZmE2Li44ZDg2MDlkZTdlMzkzMWEzZDRlMTgxOGI1ZDM2NjA4MWMyYmVkMTA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbQpAQCAtNDU5LDYgKzQ1OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQbGF0
Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
dW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIG9mZnNl
dFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0VGltZXN0YW1wcyhjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSBvdmVy
cmlkZTsKIAogICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gbV9zYW1wbGU7CiAgICAg
QXRvbWljU3RyaW5nIG1faWQ7CkBAIC01MzEsNiArNTMyLDI5IEBAIHZvaWQgTWVkaWFTYW1wbGVB
VkZPYmpDOjpvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJiBvZmZzZXQpCiAgICAg
bV9zYW1wbGUgPSBhZG9wdENGKG5ld1NhbXBsZSk7CiB9CiAKK3ZvaWQgTWVkaWFTYW1wbGVBVkZP
YmpDOjpzZXRUaW1lc3RhbXBzKGNvbnN0IFdURjo6TWVkaWFUaW1lICZwcmVzZW50YXRpb25UaW1l
c3RhbXAsIGNvbnN0IFdURjo6TWVkaWFUaW1lICZkZWNvZGVUaW1lc3RhbXApCit7CisgICAgQ01J
dGVtQ291bnQgaXRlbUNvdW50ID0gMDsKKyAgICBpZiAobm9FcnIgIT0gQ01TYW1wbGVCdWZmZXJH
ZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkobV9zYW1wbGUuZ2V0KCksIDAsIG51bGxwdHIsICZpdGVt
Q291bnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8Q01TYW1wbGVUaW1pbmdJbmZv
PiB0aW1pbmdJbmZvQXJyYXk7CisgICAgdGltaW5nSW5mb0FycmF5Lmdyb3coaXRlbUNvdW50KTsK
KyAgICBpZiAobm9FcnIgIT0gQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXko
bV9zYW1wbGUuZ2V0KCksIGl0ZW1Db3VudCwgdGltaW5nSW5mb0FycmF5LmRhdGEoKSwgbnVsbHB0
cikpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgdGltaW5nIDogdGltaW5nSW5m
b0FycmF5KSB7CisgICAgICAgIHRpbWluZy5wcmVzZW50YXRpb25UaW1lU3RhbXAgPSB0b0NNVGlt
ZShwcmVzZW50YXRpb25UaW1lc3RhbXApOworICAgICAgICB0aW1pbmcuZGVjb2RlVGltZVN0YW1w
ID0gdG9DTVRpbWUoZGVjb2RlVGltZXN0YW1wKTsKKyAgICB9CisKKyAgICBDTVNhbXBsZUJ1ZmZl
clJlZiBuZXdTYW1wbGU7CisgICAgaWYgKG5vRXJyICE9IENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29w
eVdpdGhOZXdUaW1pbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9zYW1wbGUuZ2V0KCksIGl0ZW1D
b3VudCwgdGltaW5nSW5mb0FycmF5LmRhdGEoKSwgJm5ld1NhbXBsZSkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc2FtcGxlID0gYWRvcHRDRihuZXdTYW1wbGUpOworfQorCiAjcHJhZ21hIG1h
cmsgLQogI3ByYWdtYSBtYXJrIE1lZGlhRGVzY3JpcHRpb25BVkZPYmpDCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmgKaW5kZXggZjVm
OTZmY2E3YWIwMjVlZTc0MzUwODBlY2VjNWMzNjZlNmE2OTY4ZC4uMGU1NDI0OWVjNWY2NDk4ZTRk
Yjg0YzM2ZTE1ODc0ODBjNmE0ZTA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmgKQEAgLTEzNSw2ICsxMzUsMTEgQEAgcHVibGlj
OgogICAgICAgICBtX3ByZXNlbnRhdGlvblRpbWVzdGFtcCArPSBvZmZzZXQ7CiAgICAgICAgIG1f
ZGVjb2RlVGltZXN0YW1wICs9IG9mZnNldDsKICAgICB9CisgICAgdm9pZCBzZXRUaW1lc3RhbXBz
KGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZXN0YW1wLCBjb25zdCBNZWRpYVRpbWUm
IGRlY29kZVRpbWVzdGFtcCkKKyAgICB7CisgICAgICAgIG1fcHJlc2VudGF0aW9uVGltZXN0YW1w
ID0gcHJlc2VudGF0aW9uVGltZXN0YW1wOworICAgICAgICBtX2RlY29kZVRpbWVzdGFtcCA9IGRl
Y29kZVRpbWVzdGFtcDsKKyAgICB9CiAKICAgICBlbnVtIHsKICAgICAgICAgSXNTeW5jID0gMSA8
PCAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCAzNjlmZjM0
ODQwMmQ5ZGJjYTQyN2FmMGVmYWVlMjQ1ZmRlN2VlNTBjLi40OGViZGJkMDhkODE0OTRlYzhmNjZh
ZTY3OTVhZjMxNzBjMjQzYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRl
LmNwcApAQCAtNjQsNiArNjQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRmxvYXRTaXplIHBy
ZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGbG9hdFNpemUoKTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmIG9mZnNldCkg
b3ZlcnJpZGUgeyBtX2JveC5vZmZzZXRUaW1lc3RhbXBzQnkob2Zmc2V0KTsgfQorICAgIHZpcnR1
YWwgdm9pZCBzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZXN0
YW1wLCBjb25zdCBNZWRpYVRpbWUmIGRlY29kZVRpbWVzdGFtcCkgb3ZlcnJpZGUgeyBtX2JveC5z
ZXRUaW1lc3RhbXBzKHByZXNlbnRhdGlvblRpbWVzdGFtcCwgZGVjb2RlVGltZXN0YW1wKTsgfQog
CiAgICAgdW5zaWduZWQgZ2VuZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYm94LmdlbmVyYXRp
b24oKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMzlhOTViNmYz
OTY4M2IxYzUxZTA1ZTU1ZWNhNTQ2NTBiZTAwODViMS4uYWE3NDM0NjY1MDFiZTA3OWJjYTlmOWI1
ZWM1OTlmYzRmMzhmODUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAt
MjYzMyw2ICsyNjMzLDEyIEBAIFZlY3RvcjxTdHJpbmc+IEludGVybmFsczo6YnVmZmVyZWRTYW1w
bGVzRm9yVHJhY2tJRChTb3VyY2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QKIAogICAgIHJldHVybiBi
dWZmZXItPmJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNrSUQodHJhY2tJRCk7CiB9CisgICAgCit2b2lk
IEludGVybmFsczo6c2V0U2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBzKFNvdXJjZUJ1ZmZlciogYnVm
ZmVyLCBib29sIGZsYWcpCit7CisgICAgaWYgKGJ1ZmZlcikKKyAgICAgICAgYnVmZmVyLT5zZXRT
aG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMoZmxhZyk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShW
SURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDZkMjk2NGFkNDExMzQ1ZmYz
ZWUwODNiYWUzYzFkZjUxYTA0MTYxZjAuLjExZWI5MjBjZjZmNTM0NTk3ODJmZDk1MWM4NjI2NjI2
YTYzYWUzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMzgxLDYgKzM4MSw3
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIFdFQkNPUkVfVEVTVFNV
UFBPUlRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgpOwogICAgIFZlY3Rv
cjxTdHJpbmc+IGJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNrSUQoU291cmNlQnVmZmVyKiwgY29uc3Qg
QXRvbWljU3RyaW5nJik7CisgICAgdm9pZCBzZXRTaG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMoU291
cmNlQnVmZmVyKiwgYm9vbCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFTykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBlYTFkZjJjMmQyZGU0NjBlZmQyMzkyOGQwY2Q1
MGRiMDVmYTgxOTI1Li5lNmM4Y2I0ZmYyY2JjMGNiOWI0NzcwZmFmZGQ4MzFkYTg2OTM1YjE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zNTUsNiArMzU1LDcgQEAgZW51
bSBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSB7CiAKICAgICBbQ29uZGl0aW9uYWw9
TUVESUFfU09VUkNFXSB2b2lkIGluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UoKTsKICAgICBbQ29u
ZGl0aW9uYWw9TUVESUFfU09VUkNFXSBET01TdHJpbmdbXSBidWZmZXJlZFNhbXBsZXNGb3JUcmFj
a0lEKFNvdXJjZUJ1ZmZlciBidWZmZXIsIERPTVN0cmluZyB0cmFja0lEKTsKKyAgICBbQ29uZGl0
aW9uYWw9TUVESUFfU09VUkNFXSB2b2lkIHNldFNob3VsZEdlbmVyYXRlVGltZXN0YW1wcyhTb3Vy
Y2VCdWZmZXIgYnVmZmVyLCBib29sZWFuIGZsYWcpOwogCiAgICAgW0NvbmRpdGlvbmFsPVZJREVP
XSB2b2lkIGJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCk7CiAgICAgW0NvbmRpdGlvbmFs
PVZJREVPXSB2b2lkIGVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbihET01TdHJpbmcgZmxhZ3Mp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGM2YjVhMzYzMTgwMGJlMTYyNjVmOWIzMGYyYTZkYmE2MmQ2YTM2MzguLjFiYjNl
ZDA4ODFlZTlkNWU3NzVlMDZmNTRlMTJiNmRiMTlhNTFkNTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNS0wNy0yNCAgU2FqaWQgQW53YXIgIDxzYWppZGFud2FyOTRAZ21haWwuY29tPgorCisg
ICAgICAgIFtNU0VdIEluY29ycmVjdCBzYW1wbGUgdGltZXN0YW1wcyB3aGVuIHVzaW5nICJzZXF1
ZW5jZSIgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3MjUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXNlcXVlbmNlLXRpbWVzdGFtcHMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEt
c291cmNlLXNlcXVlbmNlLXRpbWVzdGFtcHMuaHRtbDogQWRkZWQuCisKIDIwMTUtMDctMjQgIENo
cmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogc2Nyb2xs
YWJsZSBlbGVtZW50cyBkbyBub3QgYWxsb3cgMy1maW5nZXIgc3dpcGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utc2VxdWVuY2UtdGltZXN0
YW1wcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEt
c291cmNlLXNlcXVlbmNlLXRpbWVzdGFtcHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzODAz
NDlmMjA4ZmFjMDBmODRmYzhhYzVlZDMyYjYxZmMwNTg3ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXNlcXVlbmNlLXRpbWVz
dGFtcHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1JVTihhdWRpby5zcmMgPSBVUkwu
Y3JlYXRlT2JqZWN0VVJMKHNvdXJjZSkpCitFVkVOVChzb3VyY2VvcGVuKQorUlVOKHNvdXJjZUJ1
ZmZlciA9IHNvdXJjZS5hZGRTb3VyY2VCdWZmZXIoImF1ZGlvL21vY2s7IGNvZGVjcz1tb2NrIikp
CitSVU4oc291cmNlQnVmZmVyLm1vZGUgPSAic2VxdWVuY2UiKQorUlVOKHNvdXJjZUJ1ZmZlci5h
cHBlbmRCdWZmZXIoaW5pdFNlZ21lbnQpKQorRVZFTlQodXBkYXRlZW5kKQorUlVOKHNvdXJjZUJ1
ZmZlci5hcHBlbmRCdWZmZXIoc2FtcGxlcykpCitFVkVOVCh1cGRhdGVlbmQpCitFWFBFQ1RFRCAo
YnVmZmVyZWRTYW1wbGVzLmxlbmd0aCA9PSAnNicpIE9LCit7UFRTKHswLzEsIDAuMDAwMDAwfSks
IERUUyh7MC8xLCAwLjAwMDAwMH0pLCBkdXJhdGlvbih7MTAwMC8xMDAwLCAxLjAwMDAwMH0pLCBm
bGFncygxKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezEwMDAvMTAwMCwgMS4wMDAwMDB9KSwgRFRT
KHsxMDAwLzEwMDAsIDEuMDAwMDAwfSksIGR1cmF0aW9uKHsxMDAwLzEwMDAsIDEuMDAwMDAwfSks
IGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7MjAwMC8xMDAwLCAyLjAwMDAwMH0pLCBE
VFMoezIwMDAvMTAwMCwgMi4wMDAwMDB9KSwgZHVyYXRpb24oezEwMDAvMTAwMCwgMS4wMDAwMDB9
KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHszMDAwLzEwMDAsIDMuMDAwMDAwfSks
IERUUyh7MzAwMC8xMDAwLCAzLjAwMDAwMH0pLCBkdXJhdGlvbih7MTAwMC8xMDAwLCAxLjAwMDAw
MH0pLCBmbGFncygxKSwgZ2VuZXJhdGlvbigwKX0KK3tQVFMoezQwMDAvMTAwMCwgNC4wMDAwMDB9
KSwgRFRTKHs0MDAwLzEwMDAsIDQuMDAwMDAwfSksIGR1cmF0aW9uKHsxMDAwLzEwMDAsIDEuMDAw
MDAwfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQore1BUUyh7NTAwMC8xMDAwLCA1LjAwMDAw
MH0pLCBEVFMoezUwMDAvMTAwMCwgNS4wMDAwMDB9KSwgZHVyYXRpb24oezEwMDAvMTAwMCwgMS4w
MDAwMDB9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9CitFTkQgT0YgVEVTVAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXNlcXVlbmNl
LXRpbWVzdGFtcHMuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1z
b3VyY2Utc2VxdWVuY2UtdGltZXN0YW1wcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkZTBjOWIzNTIxYTcy
ODliZjgwNWQyYWQ0MDZiMWI0NzU0Mzg0YTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXNlcXVlbmNlLXRpbWVzdGFtcHMuaHRt
bApAQCAtMCwwICsxLDY1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAg
PHRpdGxlPm1lZGlhLXNvdXJjZS1zZXF1ZW5jZS10aW1lc3RhbXBzPC90aXRsZT4KKyAgICA8c2Ny
aXB0IHNyYz0ibW9jay1tZWRpYS1zb3VyY2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHZhciBzb3Vy
Y2U7CisgICAgdmFyIHNvdXJjZUJ1ZmZlcjsKKyAgICB2YXIgaW5pdFNlZ21lbnQ7CisgICAgdmFy
IHNhbXBsZXM7CisgICAgdmFyIGJ1ZmZlcmVkU2FtcGxlczsKKyAgICAKKyAgICB2YXIgYXVkaW87
CisKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLmluaXRpYWxp
emVNb2NrTWVkaWFTb3VyY2UoKTsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAg
ICAgICAgYXVkaW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYXVkaW8nKVswXTsK
KworICAgICAgICBzb3VyY2UgPSBuZXcgTWVkaWFTb3VyY2UoKTsKKyAgICAgICAgd2FpdEZvckV2
ZW50T24oc291cmNlLCAnc291cmNlb3BlbicsIHNvdXJjZU9wZW4pOworICAgICAgICBydW4oJ2F1
ZGlvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKScpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHNvdXJjZU9wZW4oKQorICAgIHsKKyAgICAgICAgcnVuKCdzb3VyY2VCdWZmZXIgPSBz
b3VyY2UuYWRkU291cmNlQnVmZmVyKCJhdWRpby9tb2NrOyBjb2RlY3M9bW9jayIpJyk7CisgICAg
ICAgIHJ1bignc291cmNlQnVmZmVyLm1vZGUgPSAic2VxdWVuY2UiJyk7CisgICAgICAgIGludGVy
bmFscy5zZXRTaG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMoc291cmNlQnVmZmVyLCB0cnVlKTsKKyAg
ICAgICAgd2FpdEZvckV2ZW50T24oc291cmNlQnVmZmVyLCAndXBkYXRlZW5kJywgbG9hZFNhbXBs
ZXMsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgaW5pdFNlZ21lbnQgPSBtYWtlQUluaXQoOCwgW21h
a2VBVHJhY2soMSwgJ21vY2snLCBUUkFDS19LSU5ELkFVRElPKV0pOworICAgICAgICBydW4oJ3Nv
dXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIoaW5pdFNlZ21lbnQpJyk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gbG9hZFNhbXBsZXMoKQorICAgIHsKKyAgICAgICAgLy8gSW4gInNlcXVlbmNlIiBtb2Rl
LCB0aGUgc2FtcGxlcycgdGltZXN0YW1wcyBhcmUgbm90IHVzZWQKKyAgICAgICAgc2FtcGxlcyA9
IGNvbmNhdGVuYXRlU2FtcGxlcyhbCisgICAgICAgICAgICBtYWtlQVNhbXBsZSgwLCAwLCAxLCAx
LCBTQU1QTEVfRkxBRy5TWU5DLCAwKSwKKyAgICAgICAgICAgIG1ha2VBU2FtcGxlKDIsIDIsIDEs
IDEsIFNBTVBMRV9GTEFHLk5PTkUsIDApLAorICAgICAgICAgICAgbWFrZUFTYW1wbGUoNCwgNCwg
MSwgMSwgU0FNUExFX0ZMQUcuTk9ORSwgMCksCisgICAgICAgICAgICBtYWtlQVNhbXBsZSg2LCA2
LCAxLCAxLCBTQU1QTEVfRkxBRy5TWU5DLCAwKSwKKyAgICAgICAgICAgIG1ha2VBU2FtcGxlKDgs
IDgsIDEsIDEsIFNBTVBMRV9GTEFHLk5PTkUsIDApLAorICAgICAgICAgICAgbWFrZUFTYW1wbGUo
MTAsIDEwLCAxLCAxLCBTQU1QTEVfRkxBRy5OT05FLCAwKSwKKyAgICAgICAgXSk7CisgICAgICAg
IHdhaXRGb3JFdmVudE9uKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZWVuZCcsIHNhbXBsZXNBZGRlZCwg
ZmFsc2UsIHRydWUpOworICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIoc2Ft
cGxlcyknKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzYW1wbGVzQWRkZWQoKQorICAgIHsKKyAg
ICAgICAgYnVmZmVyZWRTYW1wbGVzID0gaW50ZXJuYWxzLmJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNr
SUQoc291cmNlQnVmZmVyLCAxKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJidWZmZXJlZFNhbXBs
ZXMubGVuZ3RoIiwgNik7CisgICAgICAgIGJ1ZmZlcmVkU2FtcGxlcy5mb3JFYWNoKGNvbnNvbGVX
cml0ZSk7CisKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8YXVkaW8+PC9hdWRpbz4KKzwvYm9k
eT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>