<?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>92282</bug_id>
          
          <creation_ts>2012-07-25 12:56:16 -0700</creation_ts>
          <short_desc>Unify JSC date and time formating functions</short_desc>
          <delta_ts>2012-08-06 16:46:30 -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>JavaScriptCore</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>
          
          <blocked>91936</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>ggaren</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>678358</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-07-25 12:56:16 -0700</bug_when>
    <thetext>Unify JSC date and time formating functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678364</commentid>
    <comment_count>1</comment_count>
      <attachid>154421</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-07-25 13:02:19 -0700</bug_when>
    <thetext>Created attachment 154421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678931</commentid>
    <comment_count>2</comment_count>
      <attachid>154421</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-25 23:57:08 -0700</bug_when>
    <thetext>Comment on attachment 154421
Patch

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

&gt; Source/JavaScriptCore/runtime/DateConversion.cpp:-2
&gt;  /*
&gt; - * Copyright (C) 1999-2000 Harri Porten (porten@kde.org)

This entire file&apos;s diff is messed up because of the way git figures out the move. Please use svn or manually edit the patch so that the diff is readable.

&gt; Source/JavaScriptCore/runtime/DateConversion.h:-2
&gt;  /*
&gt; - * Copyright (C) 1999-2000 Harri Porten (porten@kde.org)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679039</commentid>
    <comment_count>3</comment_count>
      <attachid>154578</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-07-26 01:47:16 -0700</bug_when>
    <thetext>Created attachment 154578
Patch (manually edited)

(In reply to comment #2)
&gt; (From update of attachment 154421 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154421&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/DateConversion.cpp:-2
&gt; &gt;  /*
&gt; &gt; - * Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
&gt; 
&gt; This entire file&apos;s diff is messed up because of the way git figures out the move. Please use svn or manually edit the patch so that the diff is readable.

I don&apos;t think that I&apos;ll ever use svn again, since i switched to git.

&gt; &gt; Source/JavaScriptCore/runtime/DateConversion.h:-2
&gt; &gt;  /*
&gt; &gt; - * Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
&gt; 
&gt; Ditto.

IMHO the header changes should be easy enough to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679499</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-26 10:43:04 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=154578) [details]
&gt; Patch (manually edited)
&gt; 
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 154421 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154421&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/runtime/DateConversion.cpp:-2
&gt; &gt; &gt;  /*
&gt; &gt; &gt; - * Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
&gt; &gt; 
&gt; &gt; This entire file&apos;s diff is messed up because of the way git figures out the move. Please use svn or manually edit the patch so that the diff is readable.

Okay. No problem. Please ask someone else to review it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679502</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-26 10:44:22 -0700</bug_when>
    <thetext>By the way, regardless of whether it&apos;s hard to review or not, someone needs to fix the patch before landing it since we&apos;re adding new files, not moving the file &amp; modifying it. That&apos;s a misrepresentation of what&apos;s happening here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684447</commentid>
    <comment_count>6</comment_count>
      <attachid>154578</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-01 12:12:21 -0700</bug_when>
    <thetext>Comment on attachment 154578
Patch (manually edited)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687406</commentid>
    <comment_count>7</comment_count>
      <attachid>156521</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-08-04 00:09:06 -0700</bug_when>
    <thetext>Created attachment 156521
Patch (manually edited)

There was a problem with years out of the range 0-9999.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687410</commentid>
    <comment_count>8</comment_count>
      <attachid>156522</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-08-04 00:22:34 -0700</bug_when>
    <thetext>Created attachment 156522
Interdiff

Difference between the last patch, since https://bugs.webkit.org/attachment.cgi?oldid=154578&amp;action=interdiff&amp;newid=156521 does not seam to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688544</commentid>
    <comment_count>9</comment_count>
      <attachid>156521</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-06 16:31:30 -0700</bug_when>
    <thetext>Comment on attachment 156521
Patch (manually edited)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688563</commentid>
    <comment_count>10</comment_count>
      <attachid>156521</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 16:46:26 -0700</bug_when>
    <thetext>Comment on attachment 156521
Patch (manually edited)

Clearing flags on attachment: 156521

Committed r124817: &lt;http://trac.webkit.org/changeset/124817&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688564</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 16:46:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154421</attachid>
            <date>2012-07-25 13:02:19 -0700</date>
            <delta_ts>2012-07-26 01:47:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92282-20120725220207.patch</filename>
            <type>text/plain</type>
            <size>20317</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NDYzYmQyNGY5NzQ5ZTk5YjU3YWRiZWZmZjdiNzg4MTliMGNhZjc5Li40NzBkMDJkMjliNWVhNjRk
NmE0MWE0NmQ2MGM4NmYyN2QxZDNiNTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxMi0wNy0yNSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBVbmlmeSBKU0MgZGF0ZSBhbmQgdGltZSBmb3JtYXRpbmcgZnVuY3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjI4
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxh
Y2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyBmb3IgZm9ybWF0aW5nIEdyZWdvcmlhbkRhdGVUaW1l
CisgICAgICAgIHdpdGggb25lIHNpbmdsZSBmdW5jdGlvbi4gVGhpcyByZW1vdmVzIHNvbWUgY29k
ZSBkdXBsaWNhdGlvbnMKKyAgICAgICAgaW4gRGF0ZVByb3RvdHlwZSBhbmQgaXMgYSBwcmVwZXJh
dGlvbiB0byBmaXggZW5jb2RpbmcgaXNzdWVzLAorICAgICAgICBzaW5jZSB3ZSBjYW4gYWRkIFVD
aGFyKiB2YWx1ZXMgdG8gdGhlIHJlc3VsdGluZyBzdHJpbmcgbm93LgorCisgICAgICAgICogcnVu
dGltZS9EYXRlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsRGF0ZSk6CisgICAg
ICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6OmZvcm1hdERh
dGVUaW1lKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb252ZXJzaW9uLmg6CisgICAgICAgIChK
U0MpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OmZvcm1hdGVEYXRlSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9TdHJp
bmcpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9VVENTdHJpbmcpOgorICAgICAgICAo
SlNDOjpkYXRlUHJvdG9GdW5jVG9EYXRlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3Rv
RnVuY1RvVGltZVN0cmluZyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0dNVFN0cmlu
Zyk6CisKIDIwMTItMDctMjQgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgU3RvcmUgdGhlIGZ1bGwgeWVhciBpbiBHcmVnb3JpYW5EYXRlVGltZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggNTk4NGJiZjk3NGI5Yjc2MzlkNmM2NmRiOGQ5OTkzODFlODUxNmFjYi4uZTRmODlkZDM3MjFl
YjBiMDQxZGY1NzJkMTg5NTJkZGRlNzJjOTBiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCkBAIC0xNjgsMTEgKzE2OCw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxEYXRlKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBHcmVnb3JpYW5EYXRlVGltZSB0czsKICAgICBtc1RvR3JlZ29yaWFuRGF0ZVRp
bWUoZXhlYywgY3VycmVudFRpbWVNUygpLCBmYWxzZSwgdHMpOwotICAgIERhdGVDb252ZXJzaW9u
QnVmZmVyIGRhdGU7Ci0gICAgRGF0ZUNvbnZlcnNpb25CdWZmZXIgdGltZTsKLSAgICBmb3JtYXRE
YXRlKHRzLCBkYXRlKTsKLSAgICBmb3JtYXRUaW1lKHRzLCB0aW1lKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgZGF0ZSwgIiAiLCB0aW1l
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywg
Zm9ybWF0RGF0ZVRpbWUodHMsIERhdGVUaW1lRm9ybWF0RGF0ZUFuZFRpbWUsIGZhbHNlKSkpOwog
fQogCiBDYWxsVHlwZSBEYXRlQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJiBjYWxsRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b252ZXJzaW9uLmNwcAppbmRleCA3MDZmZmU5YTI5NDk0YjUwYmIxZTdiMDJiMmU3YmMxMGY0YzY4
MjBmLi44ZDI1Yzk0ZTU5ZTQzNjEzZjhlYTRhNjhlZGYyYWNhN2QzYWQyMTNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0xLDk1
ICsxLDExMSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUGF0cmljayBHYW5zdGVy
ZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogICoKLSAqIFRoZSBPcmlnaW5hbCBDb2RlIGlzIE1vemls
bGEgQ29tbXVuaWNhdG9yIGNsaWVudCBjb2RlLCByZWxlYXNlZAotICogTWFyY2ggMzEsIDE5OTgu
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KICAqCi0gKiBUaGUgSW5pdGlhbCBEZXZlbG9wZXIgb2YgdGhlIE9yaWdpbmFsIENvZGUg
aXMKLSAqIE5ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBvcmF0aW9uLgotICogUG9ydGlvbnMg
Y3JlYXRlZCBieSB0aGUgSW5pdGlhbCBEZXZlbG9wZXIgYXJlIENvcHlyaWdodCAoQykgMTk5OAot
ICogdGhlIEluaXRpYWwgRGV2ZWxvcGVyLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCi0gKgotICogQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBt
YXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMKLSAqIG9mIGVpdGhlciB0aGUgTW96aWxsYSBQdWJs
aWMgTGljZW5zZSBWZXJzaW9uIDEuMSwgZm91bmQgYXQKLSAqIGh0dHA6Ly93d3cubW96aWxsYS5v
cmcvTVBMLyAodGhlICJNUEwiKSBvciB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNl
IFZlcnNpb24gMi4wLCBmb3VuZCBhdCBodHRwOi8vd3d3LmZzZi5vcmcvY29weWxlZnQvZ3BsLmh0
bWwKLSAqICh0aGUgIkdQTCIpLCBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBN
UEwgb3IgdGhlIEdQTCBhcmUKLSAqIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aG9zZSBhYm92ZS4g
IElmIHlvdSB3aXNoIHRvIGFsbG93IHVzZSBvZiB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmls
ZSBvbmx5IHVuZGVyIHRoZSB0ZXJtcyBvZiBvbmUgb2YgdGhvc2UgdHdvCi0gKiBsaWNlbnNlcyAo
dGhlIE1QTCBvciB0aGUgR1BMKSBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UgeW91cgot
ICogdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIExHUEwsIGluZGljYXRlIHlvdXIgZGVj
aXNpb24gYnkKLSAqIGRlbGV0aW5ndGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhl
bSB3aXRoIHRoZSBub3RpY2UgYW5kCi0gKiBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRo
ZSBNUEwgb3IgdGhlIEdQTCwgYXMgdGhlIGNhc2UgbWF5IGJlLgotICogSWYgeW91IGRvIG5vdCBk
ZWxldGUgdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91cgotICog
dmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgYW55IG9mIHRoZSBMR1BMLCB0aGUgTVBMIG9yIHRo
ZSBHUEwuCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiRGF0ZUNvbnZlcnNpb24uaCIKIAotI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgotI2luY2x1ZGUgIkpTRGF0ZU1hdGguaCIKLSNpbmNsdWRlICJKU09iamVjdC5oIgot
I2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCi0jaW5jbHVkZSA8
d3RmL1N0cmluZ0V4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLXZvaWQgZm9ybWF0RGF0ZShjb25zdCBHcmVnb3JpYW5EYXRlVGlt
ZSAmdCwgRGF0ZUNvbnZlcnNpb25CdWZmZXImIGJ1ZmZlcikKK3RlbXBsYXRlPHVuc2lnbmVkIHdp
ZHRoPgorc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZE51bWJlcihTdHJpbmdCdWlsZGVyJiwgdW5z
aWduZWQgdmFsdWUpOworCit0ZW1wbGF0ZTw+Cit2b2lkIGFwcGVuZE51bWJlcjwyPihTdHJpbmdC
dWlsZGVyJiBidWlsZGVyLCB1bnNpZ25lZCB2YWx1ZSkKIHsKLSAgICBzbnByaW50ZihidWZmZXIs
IERhdGVDb252ZXJzaW9uQnVmZmVyU2l6ZSwgIiVzICVzICUwMmQgJTA0ZCIsCi0gICAgICAgIHdl
ZWtkYXlOYW1lWyh0LndlZWtEYXkoKSArIDYpICUgN10sCi0gICAgICAgIG1vbnRoTmFtZVt0Lm1v
bnRoKCldLCB0Lm1vbnRoRGF5KCksIHQueWVhcigpKTsKKyAgICBBU1NFUlQoMCA8PSB2YWx1ZSAm
JiB2YWx1ZSA8PSA5OSk7CisgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8Y2hhcj4oJzAn
ICsgdmFsdWUgLyAxMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KCcw
JyArIHZhbHVlICUgMTApKTsKIH0KIAotdm9pZCBmb3JtYXREYXRlVVRDVmFyaWFudChjb25zdCBH
cmVnb3JpYW5EYXRlVGltZSAmdCwgRGF0ZUNvbnZlcnNpb25CdWZmZXImIGJ1ZmZlcikKK3RlbXBs
YXRlPD4KK3ZvaWQgYXBwZW5kTnVtYmVyPDQ+KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIHVuc2ln
bmVkIHZhbHVlKQogewotICAgIHNucHJpbnRmKGJ1ZmZlciwgRGF0ZUNvbnZlcnNpb25CdWZmZXJT
aXplLCAiJXMsICUwMmQgJXMgJTA0ZCIsCi0gICAgICAgIHdlZWtkYXlOYW1lWyh0LndlZWtEYXko
KSArIDYpICUgN10sCi0gICAgICAgIHQubW9udGhEYXkoKSwgbW9udGhOYW1lW3QubW9udGgoKV0s
IHQueWVhcigpKTsKKyAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgdmFsdWUgLyAxMDApOwor
ICAgIGFwcGVuZE51bWJlcjwyPihidWlsZGVyLCB2YWx1ZSAlIDEwMCk7CiB9CiAKLXZvaWQgZm9y
bWF0VGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSAmdCwgRGF0ZUNvbnZlcnNpb25CdWZmZXIm
IGJ1ZmZlcikKK1VTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUm
IHQsIERhdGVUaW1lRm9ybWF0IGZvcm1hdCwgYm9vbCBhc1VUQ1ZhcmlhbnQpCiB7Ci0gICAgaW50
IG9mZnNldCA9IGFicyh0LnV0Y09mZnNldCgpKTsKLSAgICBjaGFyIHRpbWVab25lTmFtZVs3MF07
Ci0gICAgc3RydWN0IHRtIGd0bSA9IHQ7Ci0gICAgc3RyZnRpbWUodGltZVpvbmVOYW1lLCBzaXpl
b2YodGltZVpvbmVOYW1lKSwgIiVaIiwgJmd0bSk7Ci0KLSAgICBpZiAodGltZVpvbmVOYW1lWzBd
KSB7Ci0gICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgRGF0ZUNvbnZlcnNpb25CdWZmZXJTaXplLCAi
JTAyZDolMDJkOiUwMmQgR01UJWMlMDJkJTAyZCAoJXMpIiwKLSAgICAgICAgICAgIHQuaG91cigp
LCB0Lm1pbnV0ZSgpLCB0LnNlY29uZCgpLAotICAgICAgICAgICAgdC51dGNPZmZzZXQoKSA8IDAg
PyAnLScgOiAnKycsIG9mZnNldCAvICg2MCo2MCksIChvZmZzZXQgLyA2MCkgJSA2MCwgdGltZVpv
bmVOYW1lKTsKLSAgICB9IGVsc2UgewotICAgICAgICBzbnByaW50ZihidWZmZXIsIERhdGVDb252
ZXJzaW9uQnVmZmVyU2l6ZSwgIiUwMmQ6JTAyZDolMDJkIEdNVCVjJTAyZCUwMmQiLAotICAgICAg
ICAgICAgdC5ob3VyKCksIHQubWludXRlKCksIHQuc2Vjb25kKCksCi0gICAgICAgICAgICB0LnV0
Y09mZnNldCgpIDwgMCA/ICctJyA6ICcrJywgb2Zmc2V0IC8gKDYwKjYwKSwgKG9mZnNldCAvIDYw
KSAlIDYwKTsKKyAgICBib29sIGFwcGVuZERhdGUgPSBmb3JtYXQgJiBEYXRlVGltZUZvcm1hdERh
dGU7CisgICAgYm9vbCBhcHBlbmRUaW1lID0gZm9ybWF0ICYgRGF0ZVRpbWVGb3JtYXRUaW1lOwor
CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCisgICAgaWYgKGFwcGVuZERhdGUpIHsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQod2Vla2RheU5hbWVbKHQud2Vla0RheSgpICsgNikgJSA3XSk7
CisKKyAgICAgICAgaWYgKGFzVVRDVmFyaWFudCkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIiwgIik7CisgICAgICAgICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgdC5tb250aERh
eSgpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZChtb250aE5hbWVbdC5tb250aCgpXSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
bW9udGhOYW1lW3QubW9udGgoKV0pOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsK
KyAgICAgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWlsZGVyLCB0Lm1vbnRoRGF5KCkpOworICAg
ICAgICB9CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGFwcGVuZE51bWJl
cjw0PihidWlsZGVyLCB0LnllYXIoKSk7CiAgICAgfQotfQogCi12b2lkIGZvcm1hdFRpbWVVVEMo
Y29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUgJnQsIERhdGVDb252ZXJzaW9uQnVmZmVyJiBidWZmZXIp
Ci17Ci0gICAgc25wcmludGYoYnVmZmVyLCBEYXRlQ29udmVyc2lvbkJ1ZmZlclNpemUsICIlMDJk
OiUwMmQ6JTAyZCBHTVQiLCB0LmhvdXIoKSwgdC5taW51dGUoKSwgdC5zZWNvbmQoKSk7CisgICAg
aWYgKGFwcGVuZERhdGUgJiYgYXBwZW5kVGltZSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAn
KTsKKworICAgIGlmIChhcHBlbmRUaW1lKSB7CisgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWls
ZGVyLCB0LmhvdXIoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CisgICAgICAgIGFw
cGVuZE51bWJlcjwyPihidWlsZGVyLCB0Lm1pbnV0ZSgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoJzonKTsKKyAgICAgICAgYXBwZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIHQuc2Vjb25kKCkpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiIEdNVCIpOworCisgICAgICAgIGlmICghYXNVVENWYXJp
YW50KSB7CisgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gYWJzKHQudXRjT2Zmc2V0KCkpIC8gNjA7
CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh0LnV0Y09mZnNldCgpIDwgMCA/ICctJyA6ICcr
Jyk7CisgICAgICAgICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgb2Zmc2V0IC8gNjApOwor
ICAgICAgICAgICAgYXBwZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIG9mZnNldCAlIDYwKTsKKworICAg
ICAgICAgICAgc3RydWN0IHRtIGd0bSA9IHQ7CisgICAgICAgICAgICBjaGFyIHRpbWVab25lTmFt
ZVs3MF07CisgICAgICAgICAgICBzdHJmdGltZSh0aW1lWm9uZU5hbWUsIHNpemVvZih0aW1lWm9u
ZU5hbWUpLCAiJVoiLCAmZ3RtKTsKKyAgICAgICAgICAgIGlmICh0aW1lWm9uZU5hbWVbMF0pIHsK
KyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiICgiKTsKKyAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCh0aW1lWm9uZU5hbWUpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcpJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
YnVpbGRlci50b1N0cmluZygpLmltcGwoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uaAppbmRleCAwYjA3
OGNkMzRhOGU4YmEyZTNkNjM5YjAzMWQyZWNmNDM4ZDAwNWYxLi5mZDFhN2ViMzU4OWJlM2I0MzZm
YjMxNjM1NzVkNzlkNDVmMmI4YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlQ29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb252ZXJzaW9uLmgKQEAgLTEsNDIgKzEsMjUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFZl
cnNpb246IE1QTCAxLjEvR1BMIDIuMC9MR1BMIDIuMQotICoKLSAqIFRoZSBjb250ZW50cyBvZiB0
aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIE1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lv
bgotICogMS4xICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoCi0gKiB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKiBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC8KLSAq
Ci0gKiBTb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIGJhc2lzLAotICogV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlCi0gKiBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyByaWdodHMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZQotICogTGljZW5zZS4KLSAqCi0gKiBUaGUgT3JpZ2luYWwgQ29kZSBpcyBNb3ppbGxhIENvbW11
bmljYXRvciBjbGllbnQgY29kZSwgcmVsZWFzZWQKLSAqIE1hcmNoIDMxLCAxOTk4LgotICoKLSAq
IFRoZSBJbml0aWFsIERldmVsb3BlciBvZiB0aGUgT3JpZ2luYWwgQ29kZSBpcwotICogTmV0c2Nh
cGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24uCi0gKiBQb3J0aW9ucyBjcmVhdGVkIGJ5IHRo
ZSBJbml0aWFsIERldmVsb3BlciBhcmUgQ29weXJpZ2h0IChDKSAxOTk4Ci0gKiB0aGUgSW5pdGlh
bCBEZXZlbG9wZXIuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogQ29udHJpYnV0b3Iocyk6
Ci0gKgotICogQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUg
dXNlZCB1bmRlciB0aGUgdGVybXMgb2YKLSAqIGVpdGhlciBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgVmVyc2lvbiAyIG9yIGxhdGVyICh0aGUgIkdQTCIpLAotICogb3IgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMSBvciBsYXRlciAodGhl
ICJMR1BMIiksCi0gKiBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgb3Ig
dGhlIExHUEwgYXJlIGFwcGxpY2FibGUgaW5zdGVhZAotICogb2YgdGhvc2UgYWJvdmUuIElmIHlv
dSB3aXNoIHRvIGFsbG93IHVzZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIG9ubHkKLSAq
IHVuZGVyIHRoZSB0ZXJtcyBvZiBlaXRoZXIgdGhlIEdQTCBvciB0aGUgTEdQTCwgYW5kIG5vdCB0
byBhbGxvdyBvdGhlcnMgdG8KLSAqIHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgTVBMLCBpbmRpY2F0ZSB5b3VyCi0gKiBkZWNpc2lvbiBieSBkZWxl
dGluZyB0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGlj
ZQotICogYW5kIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIEdQTCBvciB0aGUgTEdQ
TC4gSWYgeW91IGRvIG5vdCBkZWxldGUKLSAqIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lw
aWVudCBtYXkgdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIKLSAqIHRoZSB0ZXJt
cyBvZiBhbnkgb25lIG9mIHRoZSBNUEwsIHRoZSBHUEwgb3IgdGhlIExHUEwuCi0gKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaWZuZGVm
IERhdGVDb252ZXJzaW9uX2gKQEAgLTQ2LDE1ICsyOSwxNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgVVN0cmluZzsKIAotc3RhdGljIGNvbnN0IHVuc2ln
bmVkIERhdGVDb252ZXJzaW9uQnVmZmVyU2l6ZSA9IDEwMDsKLXR5cGVkZWYgY2hhciBEYXRlQ29u
dmVyc2lvbkJ1ZmZlcltEYXRlQ29udmVyc2lvbkJ1ZmZlclNpemVdOworZW51bSBEYXRlVGltZUZv
cm1hdCB7CisgICAgRGF0ZVRpbWVGb3JtYXREYXRlID0gMSwKKyAgICBEYXRlVGltZUZvcm1hdFRp
bWUgPSAyLAorICAgIERhdGVUaW1lRm9ybWF0RGF0ZUFuZFRpbWUgPSBEYXRlVGltZUZvcm1hdERh
dGUgfCBEYXRlVGltZUZvcm1hdFRpbWUKK307CiAKLXZvaWQgZm9ybWF0RGF0ZShjb25zdCBHcmVn
b3JpYW5EYXRlVGltZSYsIERhdGVDb252ZXJzaW9uQnVmZmVyJik7Ci12b2lkIGZvcm1hdERhdGVV
VENWYXJpYW50KGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiwgRGF0ZUNvbnZlcnNpb25CdWZmZXIm
KTsKLXZvaWQgZm9ybWF0VGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYsIERhdGVDb252ZXJz
aW9uQnVmZmVyJik7Ci12b2lkIGZvcm1hdFRpbWVVVEMoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUm
LCBEYXRlQ29udmVyc2lvbkJ1ZmZlciYpOworVVN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBH
cmVnb3JpYW5EYXRlVGltZSYsIERhdGVUaW1lRm9ybWF0LCBib29sIGFzVVRDVmFyaWFudCk7CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVQcm90b3R5cGUuY3BwCmluZGV4IDZhODVjMTI4MGIxOGY3OGMzNTQ2ZDA2ODgxYmQ3Y2Ew
ODYyMjNlNjUuLjJlYzUzYWY0MzFkNjgwNjFiZWJiOWU4N2U5MzVjYjgwNWY3YmUwY2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCkBAIC0z
NDAsNiArMzQwLDIzIEBAIHN0YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoRXhlY1N0YXRl
KiBleGVjLCBEYXRlSW5zdGFuY2UqIGRhdGVPYmplY3QsIGRvdWJsCiAKICNlbmRpZiAvLyAhUExB
VEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZm9y
bWF0ZURhdGVJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIERhdGVUaW1lRm9ybWF0IGZvcm1hdCwg
Ym9vbCBhc1VUQ1ZhcmlhbnQpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0
VGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkRhdGVJbnN0YW5jZTo6
c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisKKyAgICBE
YXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsKKwor
ICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IGFzVVRDVmFy
aWFudAorICAgICAgICA/IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKQor
ICAgICAgICA6IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKKyAgICBpZiAo
IWdyZWdvcmlhbkRhdGVUaW1lKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9u
dHJpdmlhbFN0cmluZyhleGVjLCAiSW52YWxpZCBEYXRlIikpOworCisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgZm9ybWF0RGF0ZVRpbWUoKmdyZWdv
cmlhbkRhdGVUaW1lLCBmb3JtYXQsIGFzVVRDVmFyaWFudCkpKTsKK30KKwogLy8gQ29udmVydHMg
YSBsaXN0IG9mIGFyZ3VtZW50cyBzZW50IHRvIGEgRGF0ZSBtZW1iZXIgZnVuY3Rpb24gaW50byBt
aWxsaXNlY29uZHMsIHVwZGF0aW5nCiAvLyBtcyAocmVwcmVzZW50aW5nIG1pbGxpc2Vjb25kcykg
YW5kIHQgKHJlcHJlc2VudGluZyB0aGUgcmVzdCBvZiB0aGUgZGF0ZSBzdHJ1Y3R1cmUpIGFwcHJv
cHJpYXRlbHkuCiAvLwpAQCAtNTEzLDM4ICs1MzAsMTQgQEAgYm9vbCBEYXRlUHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1N0cmluZyhF
eGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhp
c1ZhbHVlKCk7Ci0gICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkRhdGVJbnN0YW5jZTo6c19p
bmZvKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0KLSAgICBEYXRl
SW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCi0KLSAg
ICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9i
ai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7Ci0gICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywg
IkludmFsaWQgRGF0ZSIpKTsKLSAgICBEYXRlQ29udmVyc2lvbkJ1ZmZlciBkYXRlOwotICAgIERh
dGVDb252ZXJzaW9uQnVmZmVyIHRpbWU7Ci0gICAgZm9ybWF0RGF0ZSgqZ3JlZ29yaWFuRGF0ZVRp
bWUsIGRhdGUpOwotICAgIGZvcm1hdFRpbWUoKmdyZWdvcmlhbkRhdGVUaW1lLCB0aW1lKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgZGF0
ZSwgIiAiLCB0aW1lKSk7CisgICAgY29uc3QgYm9vbCBhc1VUQ1ZhcmlhbnQgPSBmYWxzZTsKKyAg
ICByZXR1cm4gZm9ybWF0ZURhdGVJbnN0YW5jZShleGVjLCBEYXRlVGltZUZvcm1hdERhdGVBbmRU
aW1lLCBhc1VUQ1ZhcmlhbnQpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNUb1VUQ1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCF0aGlzVmFsdWUuaW5o
ZXJpdHMoJkRhdGVJbnN0YW5jZTo6c19pbmZvKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYyk7Ci0KLSAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5z
dGFuY2UodGhpc1ZhbHVlKTsgCi0KLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29y
aWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7Ci0g
ICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgIkludmFsaWQgRGF0ZSIpKTsKLSAgICBEYXRlQ29u
dmVyc2lvbkJ1ZmZlciBkYXRlOwotICAgIERhdGVDb252ZXJzaW9uQnVmZmVyIHRpbWU7Ci0gICAg
Zm9ybWF0RGF0ZVVUQ1ZhcmlhbnQoKmdyZWdvcmlhbkRhdGVUaW1lLCBkYXRlKTsKLSAgICBmb3Jt
YXRUaW1lVVRDKCpncmVnb3JpYW5EYXRlVGltZSwgdGltZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsIGRhdGUsICIgIiwgdGltZSkpOwor
ICAgIGNvbnN0IGJvb2wgYXNVVENWYXJpYW50ID0gdHJ1ZTsKKyAgICByZXR1cm4gZm9ybWF0ZURh
dGVJbnN0YW5jZShleGVjLCBEYXRlVGltZUZvcm1hdERhdGVBbmRUaW1lLCBhc1VUQ1ZhcmlhbnQp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0lTT1N0
cmluZyhFeGVjU3RhdGUqIGV4ZWMpCkBAIC01NzcsMzQgKzU3MCwxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvRGF0ZVN0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0
VGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkRhdGVJbnN0YW5jZTo6
c19pbmZvKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0KLSAgICBE
YXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCi0K
LSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0
ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7Ci0gICAgaWYgKCFncmVnb3JpYW5EYXRlVGlt
ZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhl
YywgIkludmFsaWQgRGF0ZSIpKTsKLSAgICBEYXRlQ29udmVyc2lvbkJ1ZmZlciBkYXRlOwotICAg
IGZvcm1hdERhdGUoKmdyZWdvcmlhbkRhdGVUaW1lLCBkYXRlKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBkYXRlKSk7CisgICAgY29uc3QgYm9v
bCBhc1VUQ1ZhcmlhbnQgPSBmYWxzZTsKKyAgICByZXR1cm4gZm9ybWF0ZURhdGVJbnN0YW5jZShl
eGVjLCBEYXRlVGltZUZvcm1hdERhdGUsIGFzVVRDVmFyaWFudCk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvVGltZVN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7Ci0g
ICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkRhdGVJbnN0YW5jZTo6c19pbmZvKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0KLSAgICBEYXRlSW5zdGFuY2UqIHRo
aXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCi0KLSAgICBjb25zdCBHcmVn
b3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFu
RGF0ZVRpbWUoZXhlYyk7Ci0gICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgIkludmFsaWQgRGF0
ZSIpKTsKLSAgICBEYXRlQ29udmVyc2lvbkJ1ZmZlciB0aW1lOwotICAgIGZvcm1hdFRpbWUoKmdy
ZWdvcmlhbkRhdGVUaW1lLCB0aW1lKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9u
dHJpdmlhbFN0cmluZyhleGVjLCB0aW1lKSk7CisgICAgY29uc3QgYm9vbCBhc1VUQ1ZhcmlhbnQg
PSBmYWxzZTsKKyAgICByZXR1cm4gZm9ybWF0ZURhdGVJbnN0YW5jZShleGVjLCBEYXRlVGltZUZv
cm1hdFRpbWUsIGFzVVRDVmFyaWFudCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTY3Niwy
MCArNjQ5LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0
VVRDRnVsbFllYXIoRXhlY1N0YXRlKiBleGVjKQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNUb0dNVFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCF0aGlzVmFs
dWUuaW5oZXJpdHMoJkRhdGVJbnN0YW5jZTo6c19pbmZvKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7Ci0KLSAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNE
YXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCi0KLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSog
Z3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhl
Yyk7Ci0gICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgIkludmFsaWQgRGF0ZSIpKTsKLSAgICBE
YXRlQ29udmVyc2lvbkJ1ZmZlciBkYXRlOwotICAgIERhdGVDb252ZXJzaW9uQnVmZmVyIHRpbWU7
Ci0gICAgZm9ybWF0RGF0ZVVUQ1ZhcmlhbnQoKmdyZWdvcmlhbkRhdGVUaW1lLCBkYXRlKTsKLSAg
ICBmb3JtYXRUaW1lVVRDKCpncmVnb3JpYW5EYXRlVGltZSwgdGltZSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsIGRhdGUsICIgIiwgdGlt
ZSkpOworICAgIGNvbnN0IGJvb2wgYXNVVENWYXJpYW50ID0gdHJ1ZTsKKyAgICByZXR1cm4gZm9y
bWF0ZURhdGVJbnN0YW5jZShleGVjLCBEYXRlVGltZUZvcm1hdERhdGVBbmRUaW1lLCBhc1VUQ1Zh
cmlhbnQpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXRNb250aChFeGVjU3RhdGUqIGV4ZWMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154578</attachid>
            <date>2012-07-26 01:47:16 -0700</date>
            <delta_ts>2012-08-04 00:09:06 -0700</delta_ts>
            <desc>Patch (manually edited)</desc>
            <filename>bug-92282-20120725220207.patch</filename>
            <type>text/plain</type>
            <size>20299</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NDYzYmQyNGY5NzQ5ZTk5YjU3YWRiZWZmZjdiNzg4MTliMGNhZjc5Li40NzBkMDJkMjliNWVhNjRk
NmE0MWE0NmQ2MGM4NmYyN2QxZDNiNTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxMi0wNy0yNSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBVbmlmeSBKU0MgZGF0ZSBhbmQgdGltZSBmb3JtYXRpbmcgZnVuY3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjI4
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxh
Y2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyBmb3IgZm9ybWF0aW5nIEdyZWdvcmlhbkRhdGVUaW1l
CisgICAgICAgIHdpdGggb25lIHNpbmdsZSBmdW5jdGlvbi4gVGhpcyByZW1vdmVzIHNvbWUgY29k
ZSBkdXBsaWNhdGlvbnMKKyAgICAgICAgaW4gRGF0ZVByb3RvdHlwZSBhbmQgaXMgYSBwcmVwZXJh
dGlvbiB0byBmaXggZW5jb2RpbmcgaXNzdWVzLAorICAgICAgICBzaW5jZSB3ZSBjYW4gYWRkIFVD
aGFyKiB2YWx1ZXMgdG8gdGhlIHJlc3VsdGluZyBzdHJpbmcgbm93LgorCisgICAgICAgICogcnVu
dGltZS9EYXRlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsRGF0ZSk6CisgICAg
ICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6OmZvcm1hdERh
dGVUaW1lKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb252ZXJzaW9uLmg6CisgICAgICAgIChK
U0MpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OmZvcm1hdGVEYXRlSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9TdHJp
bmcpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9VVENTdHJpbmcpOgorICAgICAgICAo
SlNDOjpkYXRlUHJvdG9GdW5jVG9EYXRlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3Rv
RnVuY1RvVGltZVN0cmluZyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0dNVFN0cmlu
Zyk6CisKIDIwMTItMDctMjQgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgU3RvcmUgdGhlIGZ1bGwgeWVhciBpbiBHcmVnb3JpYW5EYXRlVGltZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggNTk4NGJiZjk3NGI5Yjc2MzlkNmM2NmRiOGQ5OTkzODFlODUxNmFjYi4uZTRmODlkZDM3MjFl
YjBiMDQxZGY1NzJkMTg5NTJkZGRlNzJjOTBiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCkBAIC0xNjgsMTEgKzE2OCw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxEYXRlKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBHcmVnb3JpYW5EYXRlVGltZSB0czsKICAgICBtc1RvR3JlZ29yaWFuRGF0ZVRp
bWUoZXhlYywgY3VycmVudFRpbWVNUygpLCBmYWxzZSwgdHMpOwotICAgIERhdGVDb252ZXJzaW9u
QnVmZmVyIGRhdGU7Ci0gICAgRGF0ZUNvbnZlcnNpb25CdWZmZXIgdGltZTsKLSAgICBmb3JtYXRE
YXRlKHRzLCBkYXRlKTsKLSAgICBmb3JtYXRUaW1lKHRzLCB0aW1lKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgZGF0ZSwgIiAiLCB0aW1l
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywg
Zm9ybWF0RGF0ZVRpbWUodHMsIERhdGVUaW1lRm9ybWF0RGF0ZUFuZFRpbWUsIGZhbHNlKSkpOwog
fQogCiBDYWxsVHlwZSBEYXRlQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJiBjYWxsRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b252ZXJzaW9uLmNwcAppbmRleCA3MDZmZmU5Li5hN2VkMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0xLDk1ICsxLDExMSBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtk
ZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogVGhlIE9yaWdpbmFsIENvZGUgaXMgTW96aWxsYSBDb21tdW5pY2F0
b3IgY2xpZW50IGNvZGUsIHJlbGVhc2VkCi0gKiBNYXJjaCAzMSwgMTk5OC4KLSAqCi0gKiBUaGUg
SW5pdGlhbCBEZXZlbG9wZXIgb2YgdGhlIE9yaWdpbmFsIENvZGUgaXMKLSAqIE5ldHNjYXBlIENv
bW11bmljYXRpb25zIENvcnBvcmF0aW9uLgotICogUG9ydGlvbnMgY3JlYXRlZCBieSB0aGUgSW5p
dGlhbCBEZXZlbG9wZXIgYXJlIENvcHlyaWdodCAoQykgMTk5OAotICogdGhlIEluaXRpYWwgRGV2
ZWxvcGVyLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKgotICogQWx0
ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0
aGUgdGVybXMKLSAqIG9mIGVpdGhlciB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9u
IDEuMSwgZm91bmQgYXQKLSAqIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLyAodGhlICJNUEwi
KSBvciB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIFZlcnNpb24gMi4wLCBmb3Vu
ZCBhdCBodHRwOi8vd3d3LmZzZi5vcmcvY29weWxlZnQvZ3BsLmh0bWwKLSAqICh0aGUgIkdQTCIp
LCBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBNUEwgb3IgdGhlIEdQTCBhcmUK
LSAqIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aG9zZSBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFs
bG93IHVzZSBvZiB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5IHVuZGVyIHRoZSB0
ZXJtcyBvZiBvbmUgb2YgdGhvc2UgdHdvCi0gKiBsaWNlbnNlcyAodGhlIE1QTCBvciB0aGUgR1BM
KSBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UgeW91cgotICogdmVyc2lvbiBvZiB0aGlz
IGZpbGUgdW5kZXIgdGhlIExHUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24gYnkKLSAqIGRlbGV0
aW5ndGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2Ug
YW5kCi0gKiBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBNUEwgb3IgdGhlIEdQTCwg
YXMgdGhlIGNhc2UgbWF5IGJlLgotICogSWYgeW91IGRvIG5vdCBkZWxldGUgdGhlIHByb3Zpc2lv
bnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91cgotICogdmVyc2lvbiBvZiB0aGlzIGZp
bGUgdW5kZXIgYW55IG9mIHRoZSBMR1BMLCB0aGUgTVBMIG9yIHRoZSBHUEwuCi0gKi8KKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29t
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEYXRlQ29udmVyc2lvbi5oIgogCi0jaW5jbHVk
ZSAiQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiSlNEYXRlTWF0aC5oIgotI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKLSNp
bmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V1RGOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBmb3JtYXREYXRlKGNvbnN0IEdyZWdvcmlh
bkRhdGVUaW1lICZ0LCBEYXRlQ29udmVyc2lvbkJ1ZmZlciYgYnVmZmVyKQotewotICAgIHNucHJp
bnRmKGJ1ZmZlciwgRGF0ZUNvbnZlcnNpb25CdWZmZXJTaXplLCAiJXMgJXMgJTAyZCAlMDRkIiwK
LSAgICAgICAgd2Vla2RheU5hbWVbKHQud2Vla0RheSgpICsgNikgJSA3XSwKLSAgICAgICAgbW9u
dGhOYW1lW3QubW9udGgoKV0sIHQubW9udGhEYXkoKSwgdC55ZWFyKCkpOwotfQotCi12b2lkIGZv
cm1hdERhdGVVVENWYXJpYW50KGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lICZ0LCBEYXRlQ29udmVy
c2lvbkJ1ZmZlciYgYnVmZmVyKQotewotICAgIHNucHJpbnRmKGJ1ZmZlciwgRGF0ZUNvbnZlcnNp
b25CdWZmZXJTaXplLCAiJXMsICUwMmQgJXMgJTA0ZCIsCi0gICAgICAgIHdlZWtkYXlOYW1lWyh0
LndlZWtEYXkoKSArIDYpICUgN10sCi0gICAgICAgIHQubW9udGhEYXkoKSwgbW9udGhOYW1lW3Qu
bW9udGgoKV0sIHQueWVhcigpKTsKLX0KLQotdm9pZCBmb3JtYXRUaW1lKGNvbnN0IEdyZWdvcmlh
bkRhdGVUaW1lICZ0LCBEYXRlQ29udmVyc2lvbkJ1ZmZlciYgYnVmZmVyKQotewotICAgIGludCBv
ZmZzZXQgPSBhYnModC51dGNPZmZzZXQoKSk7Ci0gICAgY2hhciB0aW1lWm9uZU5hbWVbNzBdOwot
ICAgIHN0cnVjdCB0bSBndG0gPSB0OwotICAgIHN0cmZ0aW1lKHRpbWVab25lTmFtZSwgc2l6ZW9m
KHRpbWVab25lTmFtZSksICIlWiIsICZndG0pOwotCi0gICAgaWYgKHRpbWVab25lTmFtZVswXSkg
ewotICAgICAgICBzbnByaW50ZihidWZmZXIsIERhdGVDb252ZXJzaW9uQnVmZmVyU2l6ZSwgIiUw
MmQ6JTAyZDolMDJkIEdNVCVjJTAyZCUwMmQgKCVzKSIsCi0gICAgICAgICAgICB0LmhvdXIoKSwg
dC5taW51dGUoKSwgdC5zZWNvbmQoKSwKLSAgICAgICAgICAgIHQudXRjT2Zmc2V0KCkgPCAwID8g
Jy0nIDogJysnLCBvZmZzZXQgLyAoNjAqNjApLCAob2Zmc2V0IC8gNjApICUgNjAsIHRpbWVab25l
TmFtZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc25wcmludGYoYnVmZmVyLCBEYXRlQ29udmVy
c2lvbkJ1ZmZlclNpemUsICIlMDJkOiUwMmQ6JTAyZCBHTVQlYyUwMmQlMDJkIiwKLSAgICAgICAg
ICAgIHQuaG91cigpLCB0Lm1pbnV0ZSgpLCB0LnNlY29uZCgpLAotICAgICAgICAgICAgdC51dGNP
ZmZzZXQoKSA8IDAgPyAnLScgOiAnKycsIG9mZnNldCAvICg2MCo2MCksIChvZmZzZXQgLyA2MCkg
JSA2MCk7Ci0gICAgfQotfQotCi12b2lkIGZvcm1hdFRpbWVVVEMoY29uc3QgR3JlZ29yaWFuRGF0
ZVRpbWUgJnQsIERhdGVDb252ZXJzaW9uQnVmZmVyJiBidWZmZXIpCi17Ci0gICAgc25wcmludGYo
YnVmZmVyLCBEYXRlQ29udmVyc2lvbkJ1ZmZlclNpemUsICIlMDJkOiUwMmQ6JTAyZCBHTVQiLCB0
LmhvdXIoKSwgdC5taW51dGUoKSwgdC5zZWNvbmQoKSk7Ci19Cit0ZW1wbGF0ZTx1bnNpZ25lZCB3
aWR0aD4KK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmROdW1iZXIoU3RyaW5nQnVpbGRlciYsIHVu
c2lnbmVkIHZhbHVlKTsKKwordGVtcGxhdGU8Pgordm9pZCBhcHBlbmROdW1iZXI8Mj4oU3RyaW5n
QnVpbGRlciYgYnVpbGRlciwgdW5zaWduZWQgdmFsdWUpCit7CisgICAgQVNTRVJUKDAgPD0gdmFs
dWUgJiYgdmFsdWUgPD0gOTkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+
KCcwJyArIHZhbHVlIC8gMTApKTsKKyAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxjaGFy
PignMCcgKyB2YWx1ZSAlIDEwKSk7Cit9CisKK3RlbXBsYXRlPD4KK3ZvaWQgYXBwZW5kTnVtYmVy
PDQ+KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIHVuc2lnbmVkIHZhbHVlKQoreworICAgIGFwcGVu
ZE51bWJlcjwyPihidWlsZGVyLCB2YWx1ZSAvIDEwMCk7CisgICAgYXBwZW5kTnVtYmVyPDI+KGJ1
aWxkZXIsIHZhbHVlICUgMTAwKTsKK30KKworVVN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBH
cmVnb3JpYW5EYXRlVGltZSYgdCwgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBib29sIGFzVVRDVmFy
aWFudCkKK3sKKyAgICBib29sIGFwcGVuZERhdGUgPSBmb3JtYXQgJiBEYXRlVGltZUZvcm1hdERh
dGU7CisgICAgYm9vbCBhcHBlbmRUaW1lID0gZm9ybWF0ICYgRGF0ZVRpbWVGb3JtYXRUaW1lOwor
CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCisgICAgaWYgKGFwcGVuZERhdGUpIHsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQod2Vla2RheU5hbWVbKHQud2Vla0RheSgpICsgNikgJSA3XSk7
CisKKyAgICAgICAgaWYgKGFzVVRDVmFyaWFudCkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIiwgIik7CisgICAgICAgICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgdC5tb250aERh
eSgpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZChtb250aE5hbWVbdC5tb250aCgpXSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
bW9udGhOYW1lW3QubW9udGgoKV0pOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsK
KyAgICAgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWlsZGVyLCB0Lm1vbnRoRGF5KCkpOworICAg
ICAgICB9CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGFwcGVuZE51bWJl
cjw0PihidWlsZGVyLCB0LnllYXIoKSk7CisgICAgfQorCisgICAgaWYgKGFwcGVuZERhdGUgJiYg
YXBwZW5kVGltZSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKworICAgIGlmIChhcHBl
bmRUaW1lKSB7CisgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWlsZGVyLCB0LmhvdXIoKSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCc6Jyk7CisgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWls
ZGVyLCB0Lm1pbnV0ZSgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKKyAgICAgICAg
YXBwZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIHQuc2Vjb25kKCkpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgiIEdNVCIpOworCisgICAgICAgIGlmICghYXNVVENWYXJpYW50KSB7CisgICAgICAgICAg
ICBpbnQgb2Zmc2V0ID0gYWJzKHQudXRjT2Zmc2V0KCkpIC8gNjA7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCh0LnV0Y09mZnNldCgpIDwgMCA/ICctJyA6ICcrJyk7CisgICAgICAgICAgICBh
cHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgb2Zmc2V0IC8gNjApOworICAgICAgICAgICAgYXBwZW5k
TnVtYmVyPDI+KGJ1aWxkZXIsIG9mZnNldCAlIDYwKTsKKworICAgICAgICAgICAgc3RydWN0IHRt
IGd0bSA9IHQ7CisgICAgICAgICAgICBjaGFyIHRpbWVab25lTmFtZVs3MF07CisgICAgICAgICAg
ICBzdHJmdGltZSh0aW1lWm9uZU5hbWUsIHNpemVvZih0aW1lWm9uZU5hbWUpLCAiJVoiLCAmZ3Rt
KTsKKyAgICAgICAgICAgIGlmICh0aW1lWm9uZU5hbWVbMF0pIHsKKyAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiICgiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh0aW1l
Wm9uZU5hbWUpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygp
LmltcGwoKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uaAppbmRleCAwYjA3OGNkMzRhOGU4YmEyZTNkNjM5
YjAzMWQyZWNmNDM4ZDAwNWYxLi5mZDFhN2ViMzU4OWJlM2I0MzZmYjMxNjM1NzVkNzlkNDVmMmI4
YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVy
c2lvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9u
LmgKQEAgLTEsNDIgKzEsMjUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJy
aSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFZlcnNpb246IE1QTCAxLjEvR1BM
IDIuMC9MR1BMIDIuMQotICoKLSAqIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIHN1Ympl
Y3QgdG8gdGhlIE1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbgotICogMS4xICh0aGUgIkxp
Y2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoCi0gKiB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0Ci0gKiBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC8KLSAqCi0gKiBTb2Z0d2FyZSBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJh
c2lzLAotICogV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlCi0gKiBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyByaWdodHMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZQotICogTGljZW5zZS4KLSAq
Ci0gKiBUaGUgT3JpZ2luYWwgQ29kZSBpcyBNb3ppbGxhIENvbW11bmljYXRvciBjbGllbnQgY29k
ZSwgcmVsZWFzZWQKLSAqIE1hcmNoIDMxLCAxOTk4LgotICoKLSAqIFRoZSBJbml0aWFsIERldmVs
b3BlciBvZiB0aGUgT3JpZ2luYWwgQ29kZSBpcwotICogTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMg
Q29ycG9yYXRpb24uCi0gKiBQb3J0aW9ucyBjcmVhdGVkIGJ5IHRoZSBJbml0aWFsIERldmVsb3Bl
ciBhcmUgQ29weXJpZ2h0IChDKSAxOTk4Ci0gKiB0aGUgSW5pdGlhbCBEZXZlbG9wZXIuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogQ29udHJpYnV0b3Iocyk6Ci0gKgotICogQWx0ZXJuYXRp
dmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVy
bXMgb2YKLSAqIGVpdGhlciBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lv
biAyIG9yIGxhdGVyICh0aGUgIkdQTCIpLAotICogb3IgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMSBvciBsYXRlciAodGhlICJMR1BMIiksCi0gKiBpbiB3
aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgb3IgdGhlIExHUEwgYXJlIGFwcGxp
Y2FibGUgaW5zdGVhZAotICogb2YgdGhvc2UgYWJvdmUuIElmIHlvdSB3aXNoIHRvIGFsbG93IHVz
ZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIG9ubHkKLSAqIHVuZGVyIHRoZSB0ZXJtcyBv
ZiBlaXRoZXIgdGhlIEdQTCBvciB0aGUgTEdQTCwgYW5kIG5vdCB0byBhbGxvdyBvdGhlcnMgdG8K
LSAqIHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
TVBMLCBpbmRpY2F0ZSB5b3VyCi0gKiBkZWNpc2lvbiBieSBkZWxldGluZyB0aGUgcHJvdmlzaW9u
cyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZQotICogYW5kIG90aGVyIHBy
b3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIEdQTCBvciB0aGUgTEdQTC4gSWYgeW91IGRvIG5vdCBk
ZWxldGUKLSAqIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIg
dmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIKLSAqIHRoZSB0ZXJtcyBvZiBhbnkgb25lIG9mIHRo
ZSBNUEwsIHRoZSBHUEwgb3IgdGhlIExHUEwuCi0gKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFBh
dHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaWZuZGVmIERhdGVDb252ZXJzaW9uX2gK
QEAgLTQ2LDE1ICsyOSwxNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgRXhlY1N0YXRl
OworY2xhc3MgVVN0cmluZzsKIAotc3RhdGljIGNvbnN0IHVuc2lnbmVkIERhdGVDb252ZXJzaW9u
QnVmZmVyU2l6ZSA9IDEwMDsKLXR5cGVkZWYgY2hhciBEYXRlQ29udmVyc2lvbkJ1ZmZlcltEYXRl
Q29udmVyc2lvbkJ1ZmZlclNpemVdOworZW51bSBEYXRlVGltZUZvcm1hdCB7CisgICAgRGF0ZVRp
bWVGb3JtYXREYXRlID0gMSwKKyAgICBEYXRlVGltZUZvcm1hdFRpbWUgPSAyLAorICAgIERhdGVU
aW1lRm9ybWF0RGF0ZUFuZFRpbWUgPSBEYXRlVGltZUZvcm1hdERhdGUgfCBEYXRlVGltZUZvcm1h
dFRpbWUKK307CiAKLXZvaWQgZm9ybWF0RGF0ZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYsIERh
dGVDb252ZXJzaW9uQnVmZmVyJik7Ci12b2lkIGZvcm1hdERhdGVVVENWYXJpYW50KGNvbnN0IEdy
ZWdvcmlhbkRhdGVUaW1lJiwgRGF0ZUNvbnZlcnNpb25CdWZmZXImKTsKLXZvaWQgZm9ybWF0VGlt
ZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYsIERhdGVDb252ZXJzaW9uQnVmZmVyJik7Ci12b2lk
IGZvcm1hdFRpbWVVVEMoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmLCBEYXRlQ29udmVyc2lvbkJ1
ZmZlciYpOworVVN0cmluZyBmb3JtYXREYXRlVGltZShjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYs
IERhdGVUaW1lRm9ybWF0LCBib29sIGFzVVRDVmFyaWFudCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3Bw
CmluZGV4IDZhODVjMTI4MGIxOGY3OGMzNTQ2ZDA2ODgxYmQ3Y2EwODYyMjNlNjUuLjJlYzUzYWY0
MzFkNjgwNjFiZWJiOWU4N2U5MzVjYjgwNWY3YmUwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCkBAIC0zNDAsNiArMzQwLDIzIEBAIHN0
YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoRXhlY1N0YXRlKiBleGVjLCBEYXRlSW5zdGFu
Y2UqIGRhdGVPYmplY3QsIGRvdWJsCiAKICNlbmRpZiAvLyAhUExBVEZPUk0oTUFDKSAmJiAhUExB
VEZPUk0oSU9TKQogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZm9ybWF0ZURhdGVJbnN0YW5jZShF
eGVjU3RhdGUqIGV4ZWMsIERhdGVUaW1lRm9ybWF0IGZvcm1hdCwgYm9vbCBhc1VUQ1ZhcmlhbnQp
Cit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CisgICAg
aWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkRhdGVJbnN0YW5jZTo6c19pbmZvKSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisKKyAgICBEYXRlSW5zdGFuY2UqIHRoaXNE
YXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsKKworICAgIGNvbnN0IEdyZWdvcmlh
bkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IGFzVVRDVmFyaWFudAorICAgICAgICA/IHRo
aXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKQorICAgICAgICA6IHRoaXNEYXRl
T2JqLT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKKyAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1l
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVj
LCAiSW52YWxpZCBEYXRlIikpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRy
aXZpYWxTdHJpbmcoZXhlYywgZm9ybWF0RGF0ZVRpbWUoKmdyZWdvcmlhbkRhdGVUaW1lLCBmb3Jt
YXQsIGFzVVRDVmFyaWFudCkpKTsKK30KKwogLy8gQ29udmVydHMgYSBsaXN0IG9mIGFyZ3VtZW50
cyBzZW50IHRvIGEgRGF0ZSBtZW1iZXIgZnVuY3Rpb24gaW50byBtaWxsaXNlY29uZHMsIHVwZGF0
aW5nCiAvLyBtcyAocmVwcmVzZW50aW5nIG1pbGxpc2Vjb25kcykgYW5kIHQgKHJlcHJlc2VudGlu
ZyB0aGUgcmVzdCBvZiB0aGUgZGF0ZSBzdHJ1Y3R1cmUpIGFwcHJvcHJpYXRlbHkuCiAvLwpAQCAt
NTEzLDM4ICs1MzAsMTQgQEAgYm9vbCBEYXRlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLAogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7Ci0gICAgaWYg
KCF0aGlzVmFsdWUuaW5oZXJpdHMoJkRhdGVJbnN0YW5jZTo6c19pbmZvKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0KLSAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRl
T2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCi0KLSAgICBjb25zdCBHcmVnb3JpYW5E
YXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRp
bWUoZXhlYyk7Ci0gICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgIkludmFsaWQgRGF0ZSIpKTsK
LSAgICBEYXRlQ29udmVyc2lvbkJ1ZmZlciBkYXRlOwotICAgIERhdGVDb252ZXJzaW9uQnVmZmVy
IHRpbWU7Ci0gICAgZm9ybWF0RGF0ZSgqZ3JlZ29yaWFuRGF0ZVRpbWUsIGRhdGUpOwotICAgIGZv
cm1hdFRpbWUoKmdyZWdvcmlhbkRhdGVUaW1lLCB0aW1lKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgZGF0ZSwgIiAiLCB0aW1lKSk7Cisg
ICAgY29uc3QgYm9vbCBhc1VUQ1ZhcmlhbnQgPSBmYWxzZTsKKyAgICByZXR1cm4gZm9ybWF0ZURh
dGVJbnN0YW5jZShleGVjLCBEYXRlVGltZUZvcm1hdERhdGVBbmRUaW1lLCBhc1VUQ1ZhcmlhbnQp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1VUQ1N0
cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5o
b3N0VGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkRhdGVJbnN0YW5j
ZTo6c19pbmZvKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0KLSAg
ICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsg
Ci0KLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlz
RGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7Ci0gICAgaWYgKCFncmVnb3JpYW5E
YXRlVGltZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgIkludmFsaWQgRGF0ZSIpKTsKLSAgICBEYXRlQ29udmVyc2lvbkJ1ZmZlciBkYXRl
OwotICAgIERhdGVDb252ZXJzaW9uQnVmZmVyIHRpbWU7Ci0gICAgZm9ybWF0RGF0ZVVUQ1Zhcmlh
bnQoKmdyZWdvcmlhbkRhdGVUaW1lLCBkYXRlKTsKLSAgICBmb3JtYXRUaW1lVVRDKCpncmVnb3Jp
YW5EYXRlVGltZSwgdGltZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250
cml2aWFsU3RyaW5nKGV4ZWMsIGRhdGUsICIgIiwgdGltZSkpOworICAgIGNvbnN0IGJvb2wgYXNV
VENWYXJpYW50ID0gdHJ1ZTsKKyAgICByZXR1cm4gZm9ybWF0ZURhdGVJbnN0YW5jZShleGVjLCBE
YXRlVGltZUZvcm1hdERhdGVBbmRUaW1lLCBhc1VUQ1ZhcmlhbnQpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCkBAIC01NzcsMzQgKzU3MCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNUb0lTT1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvRGF0ZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
CiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7Ci0gICAg
aWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkRhdGVJbnN0YW5jZTo6c19pbmZvKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0KLSAgICBEYXRlSW5zdGFuY2UqIHRoaXNE
YXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCi0KLSAgICBjb25zdCBHcmVnb3Jp
YW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0
ZVRpbWUoZXhlYyk7Ci0gICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgIkludmFsaWQgRGF0ZSIp
KTsKLSAgICBEYXRlQ29udmVyc2lvbkJ1ZmZlciBkYXRlOwotICAgIGZvcm1hdERhdGUoKmdyZWdv
cmlhbkRhdGVUaW1lLCBkYXRlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJp
dmlhbFN0cmluZyhleGVjLCBkYXRlKSk7CisgICAgY29uc3QgYm9vbCBhc1VUQ1ZhcmlhbnQgPSBm
YWxzZTsKKyAgICByZXR1cm4gZm9ybWF0ZURhdGVJbnN0YW5jZShleGVjLCBEYXRlVGltZUZvcm1h
dERhdGUsIGFzVVRDVmFyaWFudCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY1RvVGltZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCF0aGlzVmFsdWUu
aW5oZXJpdHMoJkRhdGVJbnN0YW5jZTo6c19pbmZvKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYyk7Ci0KLSAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRl
SW5zdGFuY2UodGhpc1ZhbHVlKTsgCi0KLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3Jl
Z29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7Ci0g
ICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgIkludmFsaWQgRGF0ZSIpKTsKLSAgICBEYXRlQ29u
dmVyc2lvbkJ1ZmZlciB0aW1lOwotICAgIGZvcm1hdFRpbWUoKmdyZWdvcmlhbkRhdGVUaW1lLCB0
aW1lKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVj
LCB0aW1lKSk7CisgICAgY29uc3QgYm9vbCBhc1VUQ1ZhcmlhbnQgPSBmYWxzZTsKKyAgICByZXR1
cm4gZm9ybWF0ZURhdGVJbnN0YW5jZShleGVjLCBEYXRlVGltZUZvcm1hdFRpbWUsIGFzVVRDVmFy
aWFudCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1Rv
TG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTY3NiwyMCArNjQ5LDggQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRnVsbFllYXIoRXhlY1N0
YXRlKiBleGVjKQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNU
b0dNVFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT5ob3N0VGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkRhdGVJ
bnN0YW5jZTo6c19pbmZvKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7
Ci0KLSAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1Zh
bHVlKTsgCi0KLSAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUg
PSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7Ci0gICAgaWYgKCFncmVn
b3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZp
YWxTdHJpbmcoZXhlYywgIkludmFsaWQgRGF0ZSIpKTsKLSAgICBEYXRlQ29udmVyc2lvbkJ1ZmZl
ciBkYXRlOwotICAgIERhdGVDb252ZXJzaW9uQnVmZmVyIHRpbWU7Ci0gICAgZm9ybWF0RGF0ZVVU
Q1ZhcmlhbnQoKmdyZWdvcmlhbkRhdGVUaW1lLCBkYXRlKTsKLSAgICBmb3JtYXRUaW1lVVRDKCpn
cmVnb3JpYW5EYXRlVGltZSwgdGltZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01h
a2VOb250cml2aWFsU3RyaW5nKGV4ZWMsIGRhdGUsICIgIiwgdGltZSkpOworICAgIGNvbnN0IGJv
b2wgYXNVVENWYXJpYW50ID0gdHJ1ZTsKKyAgICByZXR1cm4gZm9ybWF0ZURhdGVJbnN0YW5jZShl
eGVjLCBEYXRlVGltZUZvcm1hdERhdGVBbmRUaW1lLCBhc1VUQ1ZhcmlhbnQpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNb250aChFeGVjU3RhdGUq
IGV4ZWMpCg==
</data>
<flag name="review"
          id="163830"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156521</attachid>
            <date>2012-08-04 00:09:06 -0700</date>
            <delta_ts>2012-08-06 16:46:26 -0700</delta_ts>
            <desc>Patch (manually edited)</desc>
            <filename>bug-92282.patch</filename>
            <type>text/plain</type>
            <size>20487</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NDYzYmQyNGY5NzQ5ZTk5YjU3YWRiZWZmZjdiNzg4MTliMGNhZjc5Li40NzBkMDJkMjliNWVhNjRk
NmE0MWE0NmQ2MGM4NmYyN2QxZDNiNTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxMi0wNy0yNSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBVbmlmeSBKU0MgZGF0ZSBhbmQgdGltZSBmb3JtYXRpbmcgZnVuY3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjI4
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxh
Y2UgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucyBmb3IgZm9ybWF0aW5nIEdyZWdvcmlhbkRhdGVUaW1l
CisgICAgICAgIHdpdGggb25lIHNpbmdsZSBmdW5jdGlvbi4gVGhpcyByZW1vdmVzIHNvbWUgY29k
ZSBkdXBsaWNhdGlvbnMKKyAgICAgICAgaW4gRGF0ZVByb3RvdHlwZSBhbmQgaXMgYSBwcmVwZXJh
dGlvbiB0byBmaXggZW5jb2RpbmcgaXNzdWVzLAorICAgICAgICBzaW5jZSB3ZSBjYW4gYWRkIFVD
aGFyKiB2YWx1ZXMgdG8gdGhlIHJlc3VsdGluZyBzdHJpbmcgbm93LgorCisgICAgICAgICogcnVu
dGltZS9EYXRlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsRGF0ZSk6CisgICAg
ICAgICogcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChKU0M6OmZvcm1hdERh
dGVUaW1lKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVDb252ZXJzaW9uLmg6CisgICAgICAgIChK
U0MpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OmZvcm1hdGVEYXRlSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9TdHJp
bmcpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9VVENTdHJpbmcpOgorICAgICAgICAo
SlNDOjpkYXRlUHJvdG9GdW5jVG9EYXRlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3Rv
RnVuY1RvVGltZVN0cmluZyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0dNVFN0cmlu
Zyk6CisKIDIwMTItMDctMjQgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgU3RvcmUgdGhlIGZ1bGwgeWVhciBpbiBHcmVnb3JpYW5EYXRlVGltZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggNTk4NGJiZjk3NGI5Yjc2MzlkNmM2NmRiOGQ5OTkzODFlODUxNmFjYi4uZTRmODlkZDM3MjFl
YjBiMDQxZGY1NzJkMTg5NTJkZGRlNzJjOTBiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCkBAIC0xNjgsMTEgKzE2OCw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxEYXRlKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBHcmVnb3JpYW5EYXRlVGltZSB0czsKICAgICBtc1RvR3JlZ29yaWFuRGF0ZVRp
bWUoZXhlYywgY3VycmVudFRpbWVNUygpLCBmYWxzZSwgdHMpOwotICAgIERhdGVDb252ZXJzaW9u
QnVmZmVyIGRhdGU7Ci0gICAgRGF0ZUNvbnZlcnNpb25CdWZmZXIgdGltZTsKLSAgICBmb3JtYXRE
YXRlKHRzLCBkYXRlKTsKLSAgICBmb3JtYXRUaW1lKHRzLCB0aW1lKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgZGF0ZSwgIiAiLCB0aW1l
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywg
Zm9ybWF0RGF0ZVRpbWUodHMsIERhdGVUaW1lRm9ybWF0RGF0ZUFuZFRpbWUsIGZhbHNlKSkpOwog
fQogCiBDYWxsVHlwZSBEYXRlQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJiBjYWxsRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVD
b252ZXJzaW9uLmNwcAppbmRleCA3MDZmZmU5Li40ZjcxMThmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0xLDk1ICsxLDExNyBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtk
ZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogVGhlIE9yaWdpbmFsIENvZGUgaXMgTW96aWxsYSBDb21tdW5pY2F0
b3IgY2xpZW50IGNvZGUsIHJlbGVhc2VkCi0gKiBNYXJjaCAzMSwgMTk5OC4KLSAqCi0gKiBUaGUg
SW5pdGlhbCBEZXZlbG9wZXIgb2YgdGhlIE9yaWdpbmFsIENvZGUgaXMKLSAqIE5ldHNjYXBlIENv
bW11bmljYXRpb25zIENvcnBvcmF0aW9uLgotICogUG9ydGlvbnMgY3JlYXRlZCBieSB0aGUgSW5p
dGlhbCBEZXZlbG9wZXIgYXJlIENvcHlyaWdodCAoQykgMTk5OAotICogdGhlIEluaXRpYWwgRGV2
ZWxvcGVyLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKgotICogQWx0
ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0
aGUgdGVybXMKLSAqIG9mIGVpdGhlciB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9u
IDEuMSwgZm91bmQgYXQKLSAqIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLyAodGhlICJNUEwi
KSBvciB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIFZlcnNpb24gMi4wLCBmb3Vu
ZCBhdCBodHRwOi8vd3d3LmZzZi5vcmcvY29weWxlZnQvZ3BsLmh0bWwKLSAqICh0aGUgIkdQTCIp
LCBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBNUEwgb3IgdGhlIEdQTCBhcmUK
LSAqIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aG9zZSBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFs
bG93IHVzZSBvZiB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5IHVuZGVyIHRoZSB0
ZXJtcyBvZiBvbmUgb2YgdGhvc2UgdHdvCi0gKiBsaWNlbnNlcyAodGhlIE1QTCBvciB0aGUgR1BM
KSBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UgeW91cgotICogdmVyc2lvbiBvZiB0aGlz
IGZpbGUgdW5kZXIgdGhlIExHUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24gYnkKLSAqIGRlbGV0
aW5ndGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2Ug
YW5kCi0gKiBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBNUEwgb3IgdGhlIEdQTCwg
YXMgdGhlIGNhc2UgbWF5IGJlLgotICogSWYgeW91IGRvIG5vdCBkZWxldGUgdGhlIHByb3Zpc2lv
bnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91cgotICogdmVyc2lvbiBvZiB0aGlzIGZp
bGUgdW5kZXIgYW55IG9mIHRoZSBMR1BMLCB0aGUgTVBMIG9yIHRoZSBHUEwuCi0gKi8KKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29t
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEYXRlQ29udmVyc2lvbi5oIgogCi0jaW5jbHVk
ZSAiQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiSlNEYXRlTWF0aC5oIgotI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKLSNp
bmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V1RGOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBmb3JtYXREYXRlKGNvbnN0IEdyZWdvcmlh
bkRhdGVUaW1lICZ0LCBEYXRlQ29udmVyc2lvbkJ1ZmZlciYgYnVmZmVyKQotewotICAgIHNucHJp
bnRmKGJ1ZmZlciwgRGF0ZUNvbnZlcnNpb25CdWZmZXJTaXplLCAiJXMgJXMgJTAyZCAlMDRkIiwK
LSAgICAgICAgd2Vla2RheU5hbWVbKHQud2Vla0RheSgpICsgNikgJSA3XSwKLSAgICAgICAgbW9u
dGhOYW1lW3QubW9udGgoKV0sIHQubW9udGhEYXkoKSwgdC55ZWFyKCkpOwotfQotCi12b2lkIGZv
cm1hdERhdGVVVENWYXJpYW50KGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lICZ0LCBEYXRlQ29udmVy
c2lvbkJ1ZmZlciYgYnVmZmVyKQotewotICAgIHNucHJpbnRmKGJ1ZmZlciwgRGF0ZUNvbnZlcnNp
b25CdWZmZXJTaXplLCAiJXMsICUwMmQgJXMgJTA0ZCIsCi0gICAgICAgIHdlZWtkYXlOYW1lWyh0
LndlZWtEYXkoKSArIDYpICUgN10sCi0gICAgICAgIHQubW9udGhEYXkoKSwgbW9udGhOYW1lW3Qu
bW9udGgoKV0sIHQueWVhcigpKTsKLX0KLQotdm9pZCBmb3JtYXRUaW1lKGNvbnN0IEdyZWdvcmlh
bkRhdGVUaW1lICZ0LCBEYXRlQ29udmVyc2lvbkJ1ZmZlciYgYnVmZmVyKQotewotICAgIGludCBv
ZmZzZXQgPSBhYnModC51dGNPZmZzZXQoKSk7Ci0gICAgY2hhciB0aW1lWm9uZU5hbWVbNzBdOwot
ICAgIHN0cnVjdCB0bSBndG0gPSB0OwotICAgIHN0cmZ0aW1lKHRpbWVab25lTmFtZSwgc2l6ZW9m
KHRpbWVab25lTmFtZSksICIlWiIsICZndG0pOwotCi0gICAgaWYgKHRpbWVab25lTmFtZVswXSkg
ewotICAgICAgICBzbnByaW50ZihidWZmZXIsIERhdGVDb252ZXJzaW9uQnVmZmVyU2l6ZSwgIiUw
MmQ6JTAyZDolMDJkIEdNVCVjJTAyZCUwMmQgKCVzKSIsCi0gICAgICAgICAgICB0LmhvdXIoKSwg
dC5taW51dGUoKSwgdC5zZWNvbmQoKSwKLSAgICAgICAgICAgIHQudXRjT2Zmc2V0KCkgPCAwID8g
Jy0nIDogJysnLCBvZmZzZXQgLyAoNjAqNjApLCAob2Zmc2V0IC8gNjApICUgNjAsIHRpbWVab25l
TmFtZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc25wcmludGYoYnVmZmVyLCBEYXRlQ29udmVy
c2lvbkJ1ZmZlclNpemUsICIlMDJkOiUwMmQ6JTAyZCBHTVQlYyUwMmQlMDJkIiwKLSAgICAgICAg
ICAgIHQuaG91cigpLCB0Lm1pbnV0ZSgpLCB0LnNlY29uZCgpLAotICAgICAgICAgICAgdC51dGNP
ZmZzZXQoKSA8IDAgPyAnLScgOiAnKycsIG9mZnNldCAvICg2MCo2MCksIChvZmZzZXQgLyA2MCkg
JSA2MCk7Ci0gICAgfQotfQotCi12b2lkIGZvcm1hdFRpbWVVVEMoY29uc3QgR3JlZ29yaWFuRGF0
ZVRpbWUgJnQsIERhdGVDb252ZXJzaW9uQnVmZmVyJiBidWZmZXIpCi17Ci0gICAgc25wcmludGYo
YnVmZmVyLCBEYXRlQ29udmVyc2lvbkJ1ZmZlclNpemUsICIlMDJkOiUwMmQ6JTAyZCBHTVQiLCB0
LmhvdXIoKSwgdC5taW51dGUoKSwgdC5zZWNvbmQoKSk7Ci19Cit0ZW1wbGF0ZTxpbnQgd2lkdGg+
CitzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kTnVtYmVyKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIs
IGludCB2YWx1ZSkKK3sKKyAgICBpbnQgZmlsbGluZ1plcm9zQ291bnQgPSB3aWR0aDsKKyAgICBp
ZiAodmFsdWUgPCAwKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7CisgICAgICAgIHZh
bHVlID0gLXZhbHVlOworICAgICAgICAtLWZpbGxpbmdaZXJvc0NvdW50OworICAgIH0KKyAgICBT
dHJpbmcgdmFsdWVTdHJpbmcgPSBTdHJpbmc6Om51bWJlcih2YWx1ZSk7CisgICAgZmlsbGluZ1pl
cm9zQ291bnQgLT0gdmFsdWVTdHJpbmcubGVuZ3RoKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBmaWxsaW5nWmVyb3NDb3VudDsgKytpKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgnMCcpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlU3RyaW5nKTsKK30KKwordGVtcGxhdGU8Pgordm9pZCBh
cHBlbmROdW1iZXI8Mj4oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50IHZhbHVlKQoreworICAg
IEFTU0VSVCgwIDw9IHZhbHVlICYmIHZhbHVlIDw9IDk5KTsKKyAgICBidWlsZGVyLmFwcGVuZChz
dGF0aWNfY2FzdDxjaGFyPignMCcgKyB2YWx1ZSAvIDEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
c3RhdGljX2Nhc3Q8Y2hhcj4oJzAnICsgdmFsdWUgJSAxMCkpOworfQorCitVU3RyaW5nIGZvcm1h
dERhdGVUaW1lKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0LCBEYXRlVGltZUZvcm1hdCBmb3Jt
YXQsIGJvb2wgYXNVVENWYXJpYW50KQoreworICAgIGJvb2wgYXBwZW5kRGF0ZSA9IGZvcm1hdCAm
IERhdGVUaW1lRm9ybWF0RGF0ZTsKKyAgICBib29sIGFwcGVuZFRpbWUgPSBmb3JtYXQgJiBEYXRl
VGltZUZvcm1hdFRpbWU7CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAgICBpZiAo
YXBwZW5kRGF0ZSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZCh3ZWVrZGF5TmFtZVsodC53ZWVr
RGF5KCkgKyA2KSAlIDddKTsKKworICAgICAgICBpZiAoYXNVVENWYXJpYW50KSB7CisgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKKyAgICAgICAgICAgIGFwcGVuZE51bWJlcjwyPihi
dWlsZGVyLCB0Lm1vbnRoRGF5KCkpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1vbnRoTmFtZVt0Lm1vbnRoKCldKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZChtb250aE5hbWVbdC5tb250aCgpXSk7CisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnICcpOworICAgICAgICAgICAgYXBwZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIHQu
bW9udGhEYXkoKSk7CisgICAgICAgIH0KKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAg
ICAgICAgYXBwZW5kTnVtYmVyPDQ+KGJ1aWxkZXIsIHQueWVhcigpKTsKKyAgICB9CisKKyAgICBp
ZiAoYXBwZW5kRGF0ZSAmJiBhcHBlbmRUaW1lKQorICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcp
OworCisgICAgaWYgKGFwcGVuZFRpbWUpIHsKKyAgICAgICAgYXBwZW5kTnVtYmVyPDI+KGJ1aWxk
ZXIsIHQuaG91cigpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKKyAgICAgICAgYXBw
ZW5kTnVtYmVyPDI+KGJ1aWxkZXIsIHQubWludXRlKCkpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnOicpOworICAgICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgdC5zZWNvbmQoKSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgR01UIik7CisKKyAgICAgICAgaWYgKCFhc1VUQ1Zhcmlh
bnQpIHsKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSBhYnModC51dGNPZmZzZXQoKSkgLyA2MDsK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHQudXRjT2Zmc2V0KCkgPCAwID8gJy0nIDogJysn
KTsKKyAgICAgICAgICAgIGFwcGVuZE51bWJlcjwyPihidWlsZGVyLCBvZmZzZXQgLyA2MCk7Cisg
ICAgICAgICAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgb2Zmc2V0ICUgNjApOworCisgICAg
ICAgICAgICBzdHJ1Y3QgdG0gZ3RtID0gdDsKKyAgICAgICAgICAgIGNoYXIgdGltZVpvbmVOYW1l
WzcwXTsKKyAgICAgICAgICAgIHN0cmZ0aW1lKHRpbWVab25lTmFtZSwgc2l6ZW9mKHRpbWVab25l
TmFtZSksICIlWiIsICZndG0pOworICAgICAgICAgICAgaWYgKHRpbWVab25lTmFtZVswXSkgewor
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgKCIpOworICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHRpbWVab25lTmFtZSk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJyknKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCkuaW1wbCgpOworfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb252ZXJzaW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29udmVyc2lvbi5oCmluZGV4IDBiMDc4
Y2QzNGE4ZThiYTJlM2Q2MzliMDMxZDJlY2Y0MzhkMDA1ZjEuLmZkMWE3ZWIzNTg5YmUzYjQzNmZi
MzE2MzU3NWQ3OWQ0NWYyYjhiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVDb252ZXJzaW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZUNvbnZlcnNpb24uaApAQCAtMSw0MiArMSwyNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVmVy
c2lvbjogTVBMIDEuMS9HUEwgMi4wL0xHUEwgMi4xCi0gKgotICogVGhlIGNvbnRlbnRzIG9mIHRo
aXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9u
Ci0gKiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGgKLSAqIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLwotICoK
LSAqIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgYmFzaXMsCi0gKiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBl
aXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UKLSAqIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHJpZ2h0cyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhl
Ci0gKiBMaWNlbnNlLgotICoKLSAqIFRoZSBPcmlnaW5hbCBDb2RlIGlzIE1vemlsbGEgQ29tbXVu
aWNhdG9yIGNsaWVudCBjb2RlLCByZWxlYXNlZAotICogTWFyY2ggMzEsIDE5OTguCi0gKgotICog
VGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9mIHRoZSBPcmlnaW5hbCBDb2RlIGlzCi0gKiBOZXRzY2Fw
ZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KLSAqIFBvcnRpb25zIGNyZWF0ZWQgYnkgdGhl
IEluaXRpYWwgRGV2ZWxvcGVyIGFyZSBDb3B5cmlnaHQgKEMpIDE5OTgKLSAqIHRoZSBJbml0aWFs
IERldmVsb3Blci4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBDb250cmlidXRvcihzKToK
LSAqCi0gKiBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1
c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZgotICogZWl0aGVyIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBWZXJzaW9uIDIgb3IgbGF0ZXIgKHRoZSAiR1BMIiksCi0gKiBvciB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4xIG9yIGxhdGVyICh0aGUg
IkxHUEwiKSwKLSAqIGluIHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIEdQTCBvciB0
aGUgTEdQTCBhcmUgYXBwbGljYWJsZSBpbnN0ZWFkCi0gKiBvZiB0aG9zZSBhYm92ZS4gSWYgeW91
IHdpc2ggdG8gYWxsb3cgdXNlIG9mIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgb25seQotICog
dW5kZXIgdGhlIHRlcm1zIG9mIGVpdGhlciB0aGUgR1BMIG9yIHRoZSBMR1BMLCBhbmQgbm90IHRv
IGFsbG93IG90aGVycyB0bwotICogdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBNUEwsIGluZGljYXRlIHlvdXIKLSAqIGRlY2lzaW9uIGJ5IGRlbGV0
aW5nIHRoZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgbm90aWNl
Ci0gKiBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMIG9yIHRoZSBMR1BM
LiBJZiB5b3UgZG8gbm90IGRlbGV0ZQotICogdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBp
ZW50IG1heSB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlcgotICogdGhlIHRlcm1z
IG9mIGFueSBvbmUgb2YgdGhlIE1QTCwgdGhlIEdQTCBvciB0aGUgTEdQTC4KLSAqCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpZm5kZWYg
RGF0ZUNvbnZlcnNpb25faApAQCAtNDYsMTUgKzI5LDE1IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1jbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBVU3RyaW5nOwogCi1zdGF0aWMgY29uc3QgdW5zaWdu
ZWQgRGF0ZUNvbnZlcnNpb25CdWZmZXJTaXplID0gMTAwOwotdHlwZWRlZiBjaGFyIERhdGVDb252
ZXJzaW9uQnVmZmVyW0RhdGVDb252ZXJzaW9uQnVmZmVyU2l6ZV07CitlbnVtIERhdGVUaW1lRm9y
bWF0IHsKKyAgICBEYXRlVGltZUZvcm1hdERhdGUgPSAxLAorICAgIERhdGVUaW1lRm9ybWF0VGlt
ZSA9IDIsCisgICAgRGF0ZVRpbWVGb3JtYXREYXRlQW5kVGltZSA9IERhdGVUaW1lRm9ybWF0RGF0
ZSB8IERhdGVUaW1lRm9ybWF0VGltZQorfTsKIAotdm9pZCBmb3JtYXREYXRlKGNvbnN0IEdyZWdv
cmlhbkRhdGVUaW1lJiwgRGF0ZUNvbnZlcnNpb25CdWZmZXImKTsKLXZvaWQgZm9ybWF0RGF0ZVVU
Q1ZhcmlhbnQoY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUmLCBEYXRlQ29udmVyc2lvbkJ1ZmZlciYp
Owotdm9pZCBmb3JtYXRUaW1lKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiwgRGF0ZUNvbnZlcnNp
b25CdWZmZXImKTsKLXZvaWQgZm9ybWF0VGltZVVUQyhjb25zdCBHcmVnb3JpYW5EYXRlVGltZSYs
IERhdGVDb252ZXJzaW9uQnVmZmVyJik7CitVU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNvbnN0IEdy
ZWdvcmlhbkRhdGVUaW1lJiwgRGF0ZVRpbWVGb3JtYXQsIGJvb2wgYXNVVENWYXJpYW50KTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZVByb3RvdHlwZS5jcHAKaW5kZXggNmE4NWMxMjgwYjE4Zjc4YzM1NDZkMDY4ODFiZDdjYTA4
NjIyM2U2NS4uMmVjNTNhZjQzMWQ2ODA2MWJlYmI5ZTg3ZTkzNWNiODA1ZjdiZTBjZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKQEAgLTM0
MCw2ICszNDAsMjMgQEAgc3RhdGljIEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShFeGVjU3RhdGUq
IGV4ZWMsIERhdGVJbnN0YW5jZSogZGF0ZU9iamVjdCwgZG91YmwKIAogI2VuZGlmIC8vICFQTEFU
Rk9STShNQUMpICYmICFQTEFURk9STShJT1MpCiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBmb3Jt
YXRlRGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBi
b29sIGFzVVRDVmFyaWFudCkKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RU
aGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmRGF0ZUluc3RhbmNlOjpz
X2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKworICAgIERh
dGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOworCisg
ICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gYXNVVENWYXJp
YW50CisgICAgICAgID8gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpCisg
ICAgICAgIDogdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMpOworICAgIGlmICgh
Z3JlZ29yaWFuRGF0ZVRpbWUpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250
cml2aWFsU3RyaW5nKGV4ZWMsICJJbnZhbGlkIERhdGUiKSk7CisKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBmb3JtYXREYXRlVGltZSgqZ3JlZ29y
aWFuRGF0ZVRpbWUsIGZvcm1hdCwgYXNVVENWYXJpYW50KSkpOworfQorCiAvLyBDb252ZXJ0cyBh
IGxpc3Qgb2YgYXJndW1lbnRzIHNlbnQgdG8gYSBEYXRlIG1lbWJlciBmdW5jdGlvbiBpbnRvIG1p
bGxpc2Vjb25kcywgdXBkYXRpbmcKIC8vIG1zIChyZXByZXNlbnRpbmcgbWlsbGlzZWNvbmRzKSBh
bmQgdCAocmVwcmVzZW50aW5nIHRoZSByZXN0IG9mIHRoZSBkYXRlIHN0cnVjdHVyZSkgYXBwcm9w
cmlhdGVseS4KIC8vCkBAIC01MTMsMzggKzUzMCwxNCBAQCBib29sIERhdGVQcm90b3R5cGU6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlz
VmFsdWUoKTsKLSAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmRGF0ZUluc3RhbmNlOjpzX2lu
Zm8pKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLQotICAgIERhdGVJ
bnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKLQotICAg
IGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2Jq
LT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKLSAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAi
SW52YWxpZCBEYXRlIikpOwotICAgIERhdGVDb252ZXJzaW9uQnVmZmVyIGRhdGU7Ci0gICAgRGF0
ZUNvbnZlcnNpb25CdWZmZXIgdGltZTsKLSAgICBmb3JtYXREYXRlKCpncmVnb3JpYW5EYXRlVGlt
ZSwgZGF0ZSk7Ci0gICAgZm9ybWF0VGltZSgqZ3JlZ29yaWFuRGF0ZVRpbWUsIHRpbWUpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCBkYXRl
LCAiICIsIHRpbWUpKTsKKyAgICBjb25zdCBib29sIGFzVVRDVmFyaWFudCA9IGZhbHNlOworICAg
IHJldHVybiBmb3JtYXRlRGF0ZUluc3RhbmNlKGV4ZWMsIERhdGVUaW1lRm9ybWF0RGF0ZUFuZFRp
bWUsIGFzVVRDVmFyaWFudCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1RvVVRDU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKLSAgICBpZiAoIXRoaXNWYWx1ZS5pbmhl
cml0cygmRGF0ZUluc3RhbmNlOjpzX2luZm8pKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKLQotICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0
YW5jZSh0aGlzVmFsdWUpOyAKLQotICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3Jp
YW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKTsKLSAg
ICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiSW52YWxpZCBEYXRlIikpOwotICAgIERhdGVDb252
ZXJzaW9uQnVmZmVyIGRhdGU7Ci0gICAgRGF0ZUNvbnZlcnNpb25CdWZmZXIgdGltZTsKLSAgICBm
b3JtYXREYXRlVVRDVmFyaWFudCgqZ3JlZ29yaWFuRGF0ZVRpbWUsIGRhdGUpOwotICAgIGZvcm1h
dFRpbWVVVEMoKmdyZWdvcmlhbkRhdGVUaW1lLCB0aW1lKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgZGF0ZSwgIiAiLCB0aW1lKSk7Cisg
ICAgY29uc3QgYm9vbCBhc1VUQ1ZhcmlhbnQgPSB0cnVlOworICAgIHJldHVybiBmb3JtYXRlRGF0
ZUluc3RhbmNlKGV4ZWMsIERhdGVUaW1lRm9ybWF0RGF0ZUFuZFRpbWUsIGFzVVRDVmFyaWFudCk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvSVNPU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTU3NywzNCArNTcwLDE0IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvSVNPU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9EYXRlU3RyaW5n
KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RU
aGlzVmFsdWUoKTsKLSAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmRGF0ZUluc3RhbmNlOjpz
X2luZm8pKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLQotICAgIERh
dGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKLQot
ICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRl
T2JqLT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKLSAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1l
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVj
LCAiSW52YWxpZCBEYXRlIikpOwotICAgIERhdGVDb252ZXJzaW9uQnVmZmVyIGRhdGU7Ci0gICAg
Zm9ybWF0RGF0ZSgqZ3JlZ29yaWFuRGF0ZVRpbWUsIGRhdGUpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIGRhdGUpKTsKKyAgICBjb25zdCBib29s
IGFzVVRDVmFyaWFudCA9IGZhbHNlOworICAgIHJldHVybiBmb3JtYXRlRGF0ZUluc3RhbmNlKGV4
ZWMsIERhdGVUaW1lRm9ybWF0RGF0ZSwgYXNVVENWYXJpYW50KTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9UaW1lU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKLSAg
ICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmRGF0ZUluc3RhbmNlOjpzX2luZm8pKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLQotICAgIERhdGVJbnN0YW5jZSogdGhp
c0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKLQotICAgIGNvbnN0IEdyZWdv
cmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5E
YXRlVGltZShleGVjKTsKLSAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiSW52YWxpZCBEYXRl
IikpOwotICAgIERhdGVDb252ZXJzaW9uQnVmZmVyIHRpbWU7Ci0gICAgZm9ybWF0VGltZSgqZ3Jl
Z29yaWFuRGF0ZVRpbWUsIHRpbWUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250
cml2aWFsU3RyaW5nKGV4ZWMsIHRpbWUpKTsKKyAgICBjb25zdCBib29sIGFzVVRDVmFyaWFudCA9
IGZhbHNlOworICAgIHJldHVybiBmb3JtYXRlRGF0ZUluc3RhbmNlKGV4ZWMsIERhdGVUaW1lRm9y
bWF0VGltZSwgYXNVVENWYXJpYW50KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQpAQCAtNjc2LDIw
ICs2NDksOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRV
VENGdWxsWWVhcihFeGVjU3RhdGUqIGV4ZWMpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY1RvR01UU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKLSAgICBpZiAoIXRoaXNWYWx1
ZS5pbmhlcml0cygmRGF0ZUluc3RhbmNlOjpzX2luZm8pKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKLQotICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0Rh
dGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKLQotICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBn
cmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVj
KTsKLSAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiSW52YWxpZCBEYXRlIikpOwotICAgIERh
dGVDb252ZXJzaW9uQnVmZmVyIGRhdGU7Ci0gICAgRGF0ZUNvbnZlcnNpb25CdWZmZXIgdGltZTsK
LSAgICBmb3JtYXREYXRlVVRDVmFyaWFudCgqZ3JlZ29yaWFuRGF0ZVRpbWUsIGRhdGUpOwotICAg
IGZvcm1hdFRpbWVVVEMoKmdyZWdvcmlhbkRhdGVUaW1lLCB0aW1lKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgZGF0ZSwgIiAiLCB0aW1l
KSk7CisgICAgY29uc3QgYm9vbCBhc1VUQ1ZhcmlhbnQgPSB0cnVlOworICAgIHJldHVybiBmb3Jt
YXRlRGF0ZUluc3RhbmNlKGV4ZWMsIERhdGVUaW1lRm9ybWF0RGF0ZUFuZFRpbWUsIGFzVVRDVmFy
aWFudCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dl
dE1vbnRoKEV4ZWNTdGF0ZSogZXhlYykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156522</attachid>
            <date>2012-08-04 00:22:34 -0700</date>
            <delta_ts>2012-08-04 00:22:34 -0700</delta_ts>
            <desc>Interdiff</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>1982</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">LS0tIG9sZC5wYXRjaAkyMDEyLTA4LTA0IDA5OjAyOjUzLjAwMDAwMDAwMCArMDIwMAorKysgbmV3
LnBhdGNoCTIwMTItMDgtMDQgMDk6MDQ6MDUuMDAwMDAwMDAwICswMjAwCkBAIC01MSwxMCArNTEs
MTAgQEAKICAKICBDYWxsVHlwZSBEYXRlQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCos
IENhbGxEYXRhJiBjYWxsRGF0YSkKIGRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlQ29udmVyc2lvbi5jcHAKLWluZGV4IDcwNmZmZTkuLmE3ZWQwNTQgMTAwNjQ0CitpbmRl
eCA3MDZmZmU5Li40ZjcxMThmIDEwMDY0NAogLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZUNvbnZlcnNpb24uY3BwCiArKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EYXRlQ29udmVyc2lvbi5jcHAKLUBAIC0xLDk1ICsxLDExMSBAQAorQEAgLTEsOTUgKzEs
MTE3IEBACiAtLyoKIC0gKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQogLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xNzQsMjQgKzE3NCwzMCBAQAogLXsKIC0gICAgc25wcmlu
dGYoYnVmZmVyLCBEYXRlQ29udmVyc2lvbkJ1ZmZlclNpemUsICIlMDJkOiUwMmQ6JTAyZCBHTVQi
LCB0LmhvdXIoKSwgdC5taW51dGUoKSwgdC5zZWNvbmQoKSk7CiAtfQotK3RlbXBsYXRlPHVuc2ln
bmVkIHdpZHRoPgotK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmROdW1iZXIoU3RyaW5nQnVpbGRl
ciYsIHVuc2lnbmVkIHZhbHVlKTsKKyt0ZW1wbGF0ZTxpbnQgd2lkdGg+Cisrc3RhdGljIGlubGlu
ZSB2b2lkIGFwcGVuZE51bWJlcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgdmFsdWUpCisr
eworKyAgICBpbnQgZmlsbGluZ1plcm9zQ291bnQgPSB3aWR0aDsKKysgICAgaWYgKHZhbHVlIDwg
MCkgeworKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJy0nKTsKKysgICAgICAgIHZhbHVlID0gLXZh
bHVlOworKyAgICAgICAgLS1maWxsaW5nWmVyb3NDb3VudDsKKysgICAgfQorKyAgICBTdHJpbmcg
dmFsdWVTdHJpbmcgPSBTdHJpbmc6Om51bWJlcih2YWx1ZSk7CisrICAgIGZpbGxpbmdaZXJvc0Nv
dW50IC09IHZhbHVlU3RyaW5nLmxlbmd0aCgpOworKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGZp
bGxpbmdaZXJvc0NvdW50OyArK2kpCisrICAgICAgICBidWlsZGVyLmFwcGVuZCgnMCcpOworKyAg
ICBidWlsZGVyLmFwcGVuZCh2YWx1ZVN0cmluZyk7CisrfQogKwogK3RlbXBsYXRlPD4KLSt2b2lk
IGFwcGVuZE51bWJlcjwyPihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCB1bnNpZ25lZCB2YWx1ZSkK
Kyt2b2lkIGFwcGVuZE51bWJlcjwyPihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgdmFsdWUp
CiArewogKyAgICBBU1NFUlQoMCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSA5OSk7CiArICAgIGJ1aWxk
ZXIuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIHZhbHVlIC8gMTApKTsKICsgICAgYnVp
bGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8Y2hhcj4oJzAnICsgdmFsdWUgJSAxMCkpOwogK30KICsK
LSt0ZW1wbGF0ZTw+Ci0rdm9pZCBhcHBlbmROdW1iZXI8ND4oU3RyaW5nQnVpbGRlciYgYnVpbGRl
ciwgdW5zaWduZWQgdmFsdWUpCi0rewotKyAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgdmFs
dWUgLyAxMDApOwotKyAgICBhcHBlbmROdW1iZXI8Mj4oYnVpbGRlciwgdmFsdWUgJSAxMDApOwot
K30KLSsKICtVU3RyaW5nIGZvcm1hdERhdGVUaW1lKGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiB0
LCBEYXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXNVVENWYXJpYW50KQogK3sKICsgICAgYm9v
bCBhcHBlbmREYXRlID0gZm9ybWF0ICYgRGF0ZVRpbWVGb3JtYXREYXRlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>