<?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>77885</bug_id>
          
          <creation_ts>2012-02-06 11:07:54 -0800</creation_ts>
          <short_desc>Use CMClock as a timing source for PlatformClock where available.</short_desc>
          <delta_ts>2012-02-07 12:48:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>eric.carlson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>550114</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-02-06 11:07:54 -0800</bug_when>
    <thetext>Use CMClock as a timing source for PlatformClock where available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550121</commentid>
    <comment_count>1</comment_count>
      <attachid>125671</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-02-06 11:17:08 -0800</bug_when>
    <thetext>Created attachment 125671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550122</commentid>
    <comment_count>2</comment_count>
      <attachid>125672</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-02-06 11:18:40 -0800</bug_when>
    <thetext>Created attachment 125672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551012</commentid>
    <comment_count>3</comment_count>
      <attachid>125672</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-02-07 08:29:59 -0800</bug_when>
    <thetext>Comment on attachment 125672
Patch

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

&gt; Source/WebCore/platform/mac/PlatformClockCM.mm:48
&gt; +static const int32_t DefaultTimeScale = 1000;

Please include a comment explaining why 1000 is the best magic timescale.

&gt; Source/WebCore/platform/mac/PlatformClockCM.mm:57
&gt; +    CMAudioDeviceClockCreate(kCFAllocatorDefault, NULL, &amp;rawClockPtr);
&gt; +    RetainPtr&lt;CMClockRef&gt; clock(AdoptCF, rawClockPtr);
&gt; +    initializeWithTimingSource(clock.get());

Is the temporary RetainPtr necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551071</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-02-07 09:53:49 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 125672 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125672&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mac/PlatformClockCM.mm:48
&gt; &gt; +static const int32_t DefaultTimeScale = 1000;
&gt; 
&gt; Please include a comment explaining why 1000 is the best magic timescale.

Sure thing.

&gt; &gt; Source/WebCore/platform/mac/PlatformClockCM.mm:57
&gt; &gt; +    CMAudioDeviceClockCreate(kCFAllocatorDefault, NULL, &amp;rawClockPtr);
&gt; &gt; +    RetainPtr&lt;CMClockRef&gt; clock(AdoptCF, rawClockPtr);
&gt; &gt; +    initializeWithTimingSource(clock.get());
&gt; 
&gt; Is the temporary RetainPtr necessary?

Not strictly, no.  But the RetainPtr takes care of null-checking before calling CFRelease, and does so even if an exception is thrown.  And I&apos;ve been yelled at* for not using RetainPtrs for temporary variables before. ;)

*figuratively</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551257</commentid>
    <comment_count>5</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-02-07 12:48:47 -0800</bug_when>
    <thetext>Committed r106978: &lt;http://trac.webkit.org/changeset/106978&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125671</attachid>
            <date>2012-02-06 11:17:08 -0800</date>
            <delta_ts>2012-02-06 11:18:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77885-20120206111706.patch</filename>
            <type>text/plain</type>
            <size>14392</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NmExMWZkNzZmMzI4YjM3NmQwNTM1ZWRiYWQyNDJiNWI4NWIzMzliLi5hMGQ2NDE5NDcxMjE3NDgx
ODc5ZGFmZjIwMzdjMGRjOWZkMWUyMmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxMi0wMi0wNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBVc2UgQ01DbG9jayBhcyBhIHRpbWluZyBzb3VyY2UgZm9yIFBsYXRmb3JtQ2xv
Y2sgd2hlcmUgYXZhaWxhYmxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Nzc4ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOiBBZGRlZCBXVEZfVVNFX0NPUkVNRURJQS4KKwog
MjAxMi0wMi0wMyAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIEJ1aWxkIGZpeApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZiYWYyZDljMDJlNzkxODhmMjJlZWVkYjAw
YzE2MGMwMzQ0ZjBhZWEuLmFlYzY2Zjk1ZWQxZDQwNWJkZDJjNTkyNjdjY2M3NzAwZGRlMjA4NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wMi0wNiAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ01DbG9jayBhcyBhIHRpbWluZyBzb3Vy
Y2UgZm9yIFBsYXRmb3JtQ2xvY2sgd2hlcmUgYXZhaWxhYmxlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4ODUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHM7IHBlcmZvcm1hbmNlIGlt
cHJvdmVtZW50IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdCBjYXNlcy4KKworICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9DbG9j
ay5jcHA6CisgICAgICAgIChDbG9jazo6Y3JlYXRlKTogVXNlIFBsYXRmb3JtQ2xvY2tDTSBpZiBh
dmFpbGFibGUuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDTS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ2xvY2tDTTo6cGxheVJhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1DbG9ja0NNOjppc1J1bm5pbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00ubW06IEFkZGVkLgorICAgICAgICAoUGxhdGZvcm1DbG9j
a0NNOjpQbGF0Zm9ybUNsb2NrQ00pOgorICAgICAgICAoUGxhdGZvcm1DbG9ja0NNOjppbml0aWFs
aXplV2l0aFRpbWluZ1NvdXJjZSk6CisgICAgICAgIChQbGF0Zm9ybUNsb2NrQ006OnNldEN1cnJl
bnRUaW1lKToKKyAgICAgICAgKFBsYXRmb3JtQ2xvY2tDTTo6Y3VycmVudFRpbWUpOgorICAgICAg
ICAoUGxhdGZvcm1DbG9ja0NNOjpzZXRQbGF5UmF0ZSk6CisgICAgICAgIChQbGF0Zm9ybUNsb2Nr
Q006OnN0YXJ0KToKKyAgICAgICAgKFBsYXRmb3JtQ2xvY2tDTTo6c3RvcCk6CisKIDIwMTItMDIt
MDMgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVt
b3ZlIHVubmVjY2VzYXJ5IGNhbkV4ZWN1dGVTY3JpcHRzIGNoZWNrIGZyb20gdjggYmluZGluZ3Ms
IGFuZCBjb3JyZWN0bHkgaW5kZWljYXRlIHdoZW4gd2UncmUgYWJvdXQgdG8gZXhlY3V0ZSBhIHNj
cmlwdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDFiN2I2OTc3MDVmMjVi
MTk0ZTdlMjMxNGIyMzQxZDdlMWRjZGIwNTIuLmI5ZDFhZjFjNDk1Y2NlNWY0NjRiMDUzYzIzNDlh
MzYwNjE5NzUzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKQEAgLTExNDEs
NiArMTE0MSwxMCBAQAogI2RlZmluZSBXVEZfVVNFX0FWRk9VTkRBVElPTiAxCiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9M
SU9OKQorI2RlZmluZSBXVEZfVVNFX0NPUkVNRURJQSAxCisjZW5kaWYKKwogI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpIHx8IChQTEFURk9STShXSU4p
ICYmICFPUyhXSU5DRSkgJiYgIVBMQVRGT1JNKFdJTl9DQUlSTykpIHx8IFBMQVRGT1JNKFFUKQog
I2RlZmluZSBXVEZfVVNFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSIDEKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM4NmZmMjIzYTkxMjU4ODc2ZDM0YTlhZDIyZGQxNjgzMTFmZjVjYTguLmVjNTY2MWUwYTFi
ZGM2MjQxOGJlNjg4YzVkNWM0MGM4NTMyY2IxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU1ODYsNiArNTU4Niw3IEBACiAJ
CUNEODIwMzBEMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dD
b250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0Q4MjAzMDkxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRv
d0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUNEODIwMzEwMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJX
aW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAq
LzsgfTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBG
MTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi87IH07CisJCUNEQUE4
RDBBMTRENzFCMkUwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFBOEQwODE0RDM4NTYwMDA2MUVBNjAg
LyogUGxhdGZvcm1DbG9ja0NNLm1tICovOyB9OwogCQlDREQ1MjVENzE0NUI2REQwMDA4RDIwNEQg
LyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjY1Q0NDMTQ1QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxN
ZWRpYUVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlDREVBNzYzMDE0NjA4QTUzMDA4QjMxRjEg
LyogUGxhdGZvcm1DbG9ja0NBLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENERUE3NjJFMTQ2MDg0REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0Eu
Y3BwICovOyB9OwogCQlDREVBNzYzNDE0NjBCNTZGMDA4QjMxRjEgLyogQ2xvY2tHZW5lcmljLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjMy
MTQ2MEFFMjkwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwICovOyB9OwpAQCAtMTI1MjUsNiAr
MTI1MjYsOCBAQAogCQlDRDgyMDMwOTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJX
aW5kb3dBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViV2lu
ZG93QW5pbWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzBGMTM5
NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQUE4RDA3MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNs
b2NrQ00uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NN
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUE4RDA4MTREMzg1NjAwMDYxRUE2
MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ00ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEQkQ5M0JBMTMzM0JENEIwMDI1NzBFMyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlblF1aWNrVGltZS5jc3M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQ0U1Q0QwMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudFRh
cmdldEZhY3RvcnkuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXZlbnRUYXJnZXRGYWN0b3J5
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYyQzE0NjA4MjI0MDA4QjMx
RjEgLyogQ2xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xvY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MDAwLDYgKzE1MDAzLDggQEAKIAkJCQk0
QjI3MDk4MTBBRjJFNUUwMDA2NTEyN0YgLyogUGFzdGVib2FyZE1hYy5tbSAqLywKIAkJCQlDREVB
NzYyRTE0NjA4NERFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCAqLywKIAkJCQlDREVB
NzYyRjE0NjA4NEVFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmggKi8sCisJCQkJQ0RBQThE
MDcxNEQzODU2MDAwNjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tDTS5oICovLAorCQkJCUNEQUE4RDA4
MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi8sCiAJCQkJQkNBQTQ4NkUx
NEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLmggKi8sCiAJCQkJQkNB
QTQ4NkQxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tICovLAog
CQkJCUJDOTREMTA3MEMyNzRGODgwMDZCQzYxNyAvKiBQbGF0Zm9ybVNjcmVlbk1hYy5tbSAqLywK
QEAgLTI3MDQyLDYgKzI3MDQ3LDcgQEAKIAkJCQkxQUY2MkYyNTE0REFGRTlFMDA0MTU1NkMgLyog
U2Nyb2xsaW5nVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQUFEREEzMTREQjQwOUYw
MEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQUFEREJF
MTREQzY0MDcwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQ0RBQThEMEExNEQ3MUIyRTAwNjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tDTS5tbSBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2suY3BwCmluZGV4IGNjNTk0ZTdmODQ2ZjBh
YTJjMjc5Y2M0ODk0ZjlkMjUzNmRmOWQ1OWUuLjg4MzAyM2MzYTljZDE2NmNiZTZhYjM1OWVhOTE1
YzlmN2FkOWQ0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9jay5jcHAKQEAgLTI2LDcgKzI2LDkg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDbG9jay5oIgogCi0jaWYgVVNFKENP
UkVBVURJTykKKyNpZiBVU0UoQ09SRU1FRElBKQorICAgICNpbmNsdWRlICJQbGF0Zm9ybUNsb2Nr
Q00uaCIKKyNlbGlmIFVTRShDT1JFQVVESU8pCiAgICAgI2luY2x1ZGUgIlBsYXRmb3JtQ2xvY2tD
QS5oIgogI2Vsc2UKICAgICAjaW5jbHVkZSAiQ2xvY2tHZW5lcmljLmgiCkBAIC0zNiw3ICszOCw5
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBQYXNzUmVmUHRyPENsb2NrPiBDbG9jazo6
Y3JlYXRlKCkKIHsKLSNpZiBVU0UoQ09SRUFVRElPKQorI2lmIFVTRShDT1JFTUVESUEpCisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNsb2NrQ00oKSk7CisjZWxpZiBVU0UoQ09SRUFV
RElPKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DbG9ja0NBKCkpOwogI2Vsc2UK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsb2NrR2VuZXJpYygpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OGFmOGUxODU2
NmY2NWI0MTNkZjAzMGIxY2E0ZjYwZTExZGZhZjJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDTS5oCkBAIC0wLDAgKzEsNjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtQ2xvY2tDTV9oCisjZGVmaW5lIFBsYXRmb3JtQ2xv
Y2tDTV9oCisKKyNpZiBVU0UoQVZGT1VOREFUSU9OKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX0xJT04pCisKKyNpbmNsdWRlICJDbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ01UaW1lYmFzZSogQ01UaW1lYmFz
ZVJlZjsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUNNQ2xvY2sqIENNQ2xvY2tSZWY7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGxhdGZvcm1DbG9ja0NNIDogcHVibGljIENsb2NrIHsK
K3B1YmxpYzoKKyAgICBQbGF0Zm9ybUNsb2NrQ00oKTsKKyAgICBQbGF0Zm9ybUNsb2NrQ00oQ01D
bG9ja1JlZik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbml0aWFsaXplV2l0aFRpbWluZ1NvdXJj
ZShDTUNsb2NrUmVmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCk7
CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0OworCisgICAgdmlydHVhbCB2
b2lkIHNldFBsYXlSYXRlKGZsb2F0KTsKKyAgICB2aXJ0dWFsIGZsb2F0IHBsYXlSYXRlKCkgY29u
c3QgeyByZXR1cm4gbV9yYXRlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCB7
IHJldHVybiBtX3J1bm5pbmc7IH0KKworICAgIFJldGFpblB0cjxDTVRpbWViYXNlUmVmPiBtX3Rp
bWViYXNlOworICAgIGZsb2F0IG1fcmF0ZTsKKyAgICBib29sIG1fcnVubmluZzsKK307CisKK30K
KworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtQ2xvY2tDTS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybUNsb2NrQ00ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmE3MWI0MjZhZjVlYWJhNzNkMjU4ZGMzYzI0NTYw
MmQ2YTE1ZjA4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybUNsb2NrQ00ubW0KQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKworI2lmIFVTRShBVkZPVU5EQVRJT04pICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fTElPTikKKworI2ltcG9ydCAiUGxhdGZvcm1DbG9ja0NNLmgiCisK
KyNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgorI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKKyNp
bXBvcnQgPENvcmVNZWRpYS9DTUF1ZGlvRGV2aWNlQ2xvY2suaD4KKworU09GVF9MSU5LX0ZSQU1F
V09SS19PUFRJT05BTChDb3JlTWVkaWEpCisKK1NPRlRfTElOSyhDb3JlTWVkaWEsIENNQXVkaW9E
ZXZpY2VDbG9ja0NyZWF0ZSwgaW50MzJfdCwgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZT
dHJpbmdSZWYgZGV2aWNlVUlELCBDTUNsb2NrUmVmICpjbG9ja091dCksIChhbGxvY2F0b3IsIGRl
dmljZVVJRCwgY2xvY2tPdXQpKQorU09GVF9MSU5LKENvcmVNZWRpYSwgQ01UaW1lYmFzZUNyZWF0
ZVdpdGhNYXN0ZXJDbG9jaywgaW50MzJfdCwgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ01D
bG9ja1JlZiBtYXN0ZXJDbG9jaywgQ01UaW1lYmFzZVJlZiAqdGltZWJhc2VPdXQpLCAoYWxsb2Nh
dG9yLCBtYXN0ZXJDbG9jaywgdGltZWJhc2VPdXQpKQorU09GVF9MSU5LKENvcmVNZWRpYSwgQ01U
aW1lYmFzZVNldFRpbWUsIGludDMyX3QsIChDTVRpbWViYXNlUmVmIHRpbWViYXNlLCBDTVRpbWUg
dGltZSksICh0aW1lYmFzZSwgdGltZSkpCitTT0ZUX0xJTksoQ29yZU1lZGlhLCBDTVRpbWViYXNl
R2V0VGltZSwgQ01UaW1lLCAoQ01UaW1lYmFzZVJlZiB0aW1lYmFzZSksICh0aW1lYmFzZSkpCitT
T0ZUX0xJTksoQ29yZU1lZGlhLCBDTVRpbWViYXNlU2V0UmF0ZSwgaW50MzJfdCwgKENNVGltZWJh
c2VSZWYgdGltZWJhc2UsIEZsb2F0NjQgcmF0ZSksICh0aW1lYmFzZSwgcmF0ZSkpCitTT0ZUX0xJ
TksoQ29yZU1lZGlhLCBDTVRpbWVNYWtlV2l0aFNlY29uZHMsIENNVGltZSwgKEZsb2F0NjQgc2Vj
b25kcywgaW50MzJfdCBwcmVmZXJyZWRUaW1lU2NhbGUpLCAoc2Vjb25kcywgcHJlZmVycmVkVGlt
ZVNjYWxlKSkKK1NPRlRfTElOSyhDb3JlTWVkaWEsIENNVGltZUdldFNlY29uZHMsIEZsb2F0NjQs
IChDTVRpbWUgdGltZSksICh0aW1lKSkKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0
YXRpYyBjb25zdCBpbnQzMl90IERlZmF1bHRUaW1lU2NhbGUgPSAxMDAwOworCitQbGF0Zm9ybUNs
b2NrQ006OlBsYXRmb3JtQ2xvY2tDTSgpCisgICAgOiBtX3RpbWViYXNlKDApCisgICAgLCBtX3J1
bm5pbmcoZmFsc2UpCit7CisgICAgQ01DbG9ja1JlZiByYXdDbG9ja1B0ciA9IDA7CisgICAgQ01B
dWRpb0RldmljZUNsb2NrQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsICZyYXdDbG9j
a1B0cik7CisgICAgUmV0YWluUHRyPENNQ2xvY2tSZWY+IGNsb2NrKEFkb3B0Q0YsIHJhd0Nsb2Nr
UHRyKTsKKyAgICBpbml0aWFsaXplV2l0aFRpbWluZ1NvdXJjZShjbG9jay5nZXQoKSk7Cit9CisK
K1BsYXRmb3JtQ2xvY2tDTTo6UGxhdGZvcm1DbG9ja0NNKENNQ2xvY2tSZWYgY2xvY2spCisgICAg
OiBtX3RpbWViYXNlKDApCisgICAgLCBtX3J1bm5pbmcoZmFsc2UpCit7CisgICAgaW5pdGlhbGl6
ZVdpdGhUaW1pbmdTb3VyY2UoY2xvY2spOworfQorCit2b2lkIFBsYXRmb3JtQ2xvY2tDTTo6aW5p
dGlhbGl6ZVdpdGhUaW1pbmdTb3VyY2UoQ01DbG9ja1JlZiBjbG9jaykKK3sKKyAgICBDTVRpbWVi
YXNlUmVmIHJhd1RpbWViYXNlUHRyID0gMDsKKyAgICBDTVRpbWViYXNlQ3JlYXRlV2l0aE1hc3Rl
ckNsb2NrKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNsb2NrLCAmcmF3VGltZWJhc2VQdHIpOworICAg
IG1fdGltZWJhc2UuYWRvcHRDRihyYXdUaW1lYmFzZVB0cik7Cit9CisKK3ZvaWQgUGxhdGZvcm1D
bG9ja0NNOjpzZXRDdXJyZW50VGltZShmbG9hdCB0aW1lKQoreworICAgIENNVGltZSBjbVRpbWUg
PSBDTVRpbWVNYWtlV2l0aFNlY29uZHModGltZSwgRGVmYXVsdFRpbWVTY2FsZSk7CisgICAgQ01U
aW1lYmFzZVNldFRpbWUobV90aW1lYmFzZS5nZXQoKSwgY21UaW1lKTsKK30KKworZmxvYXQgUGxh
dGZvcm1DbG9ja0NNOjpjdXJyZW50VGltZSgpIGNvbnN0Cit7CisgICAgQ01UaW1lIGNtVGltZSA9
IENNVGltZWJhc2VHZXRUaW1lKG1fdGltZWJhc2UuZ2V0KCkpOworICAgIHJldHVybiBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KENNVGltZUdldFNlY29uZHMoY21UaW1lKSk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1DbG9ja0NNOjpzZXRQbGF5UmF0ZShmbG9hdCByYXRlKQoreworICAgIGlmIChtX3JhdGUg
PT0gcmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yYXRlID0gcmF0ZTsKKyAgICBpZiAo
bV9ydW5uaW5nKQorICAgICAgICBDTVRpbWViYXNlU2V0UmF0ZShtX3RpbWViYXNlLmdldCgpLCBy
YXRlKTsKK30KKwordm9pZCBQbGF0Zm9ybUNsb2NrQ006OnN0YXJ0KCkKK3sKKyAgICBpZiAobV9y
dW5uaW5nKQorICAgICAgICByZXR1cm47CisgICAgbV9ydW5uaW5nID0gdHJ1ZTsKKyAgICBDTVRp
bWViYXNlU2V0UmF0ZShtX3RpbWViYXNlLmdldCgpLCBtX3JhdGUpOworfQorCit2b2lkIFBsYXRm
b3JtQ2xvY2tDTTo6c3RvcCgpCit7CisgICAgaWYgKCFtX3J1bm5pbmcpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX3J1bm5pbmcgPSBmYWxzZTsKKyAgICBDTVRpbWViYXNlU2V0UmF0ZShtX3RpbWVi
YXNlLmdldCgpLCAwKTsKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125672</attachid>
            <date>2012-02-06 11:18:40 -0800</date>
            <delta_ts>2012-02-07 08:29:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77885-20120206111839.patch</filename>
            <type>text/plain</type>
            <size>14184</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NmExMWZkNzZmMzI4YjM3NmQwNTM1ZWRiYWQyNDJiNWI4NWIzMzliLi5hMGQ2NDE5NDcxMjE3NDgx
ODc5ZGFmZjIwMzdjMGRjOWZkMWUyMmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxMi0wMi0wNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
KworICAgICAgICBVc2UgQ01DbG9jayBhcyBhIHRpbWluZyBzb3VyY2UgZm9yIFBsYXRmb3JtQ2xv
Y2sgd2hlcmUgYXZhaWxhYmxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Nzc4ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOiBBZGRlZCBXVEZfVVNFX0NPUkVNRURJQS4KKwog
MjAxMi0wMi0wMyAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIEJ1aWxkIGZpeApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZiYWYyZDljMDJlNzkxODhmMjJlZWVkYjAw
YzE2MGMwMzQ0ZjBhZWEuLmFlYzY2Zjk1ZWQxZDQwNWJkZDJjNTkyNjdjY2M3NzAwZGRlMjA4NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wMi0wNiAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ01DbG9jayBhcyBhIHRpbWluZyBzb3Vy
Y2UgZm9yIFBsYXRmb3JtQ2xvY2sgd2hlcmUgYXZhaWxhYmxlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4ODUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHM7IHBlcmZvcm1hbmNlIGlt
cHJvdmVtZW50IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdCBjYXNlcy4KKworICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9DbG9j
ay5jcHA6CisgICAgICAgIChDbG9jazo6Y3JlYXRlKTogVXNlIFBsYXRmb3JtQ2xvY2tDTSBpZiBh
dmFpbGFibGUuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDTS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ2xvY2tDTTo6cGxheVJhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1DbG9ja0NNOjppc1J1bm5pbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00ubW06IEFkZGVkLgorICAgICAgICAoUGxhdGZvcm1DbG9j
a0NNOjpQbGF0Zm9ybUNsb2NrQ00pOgorICAgICAgICAoUGxhdGZvcm1DbG9ja0NNOjppbml0aWFs
aXplV2l0aFRpbWluZ1NvdXJjZSk6CisgICAgICAgIChQbGF0Zm9ybUNsb2NrQ006OnNldEN1cnJl
bnRUaW1lKToKKyAgICAgICAgKFBsYXRmb3JtQ2xvY2tDTTo6Y3VycmVudFRpbWUpOgorICAgICAg
ICAoUGxhdGZvcm1DbG9ja0NNOjpzZXRQbGF5UmF0ZSk6CisgICAgICAgIChQbGF0Zm9ybUNsb2Nr
Q006OnN0YXJ0KToKKyAgICAgICAgKFBsYXRmb3JtQ2xvY2tDTTo6c3RvcCk6CisKIDIwMTItMDIt
MDMgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVt
b3ZlIHVubmVjY2VzYXJ5IGNhbkV4ZWN1dGVTY3JpcHRzIGNoZWNrIGZyb20gdjggYmluZGluZ3Ms
IGFuZCBjb3JyZWN0bHkgaW5kZWljYXRlIHdoZW4gd2UncmUgYWJvdXQgdG8gZXhlY3V0ZSBhIHNj
cmlwdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDFiN2I2OTc3MDVmMjVi
MTk0ZTdlMjMxNGIyMzQxZDdlMWRjZGIwNTIuLmI5ZDFhZjFjNDk1Y2NlNWY0NjRiMDUzYzIzNDlh
MzYwNjE5NzUzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKQEAgLTExNDEs
NiArMTE0MSwxMCBAQAogI2RlZmluZSBXVEZfVVNFX0FWRk9VTkRBVElPTiAxCiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9M
SU9OKQorI2RlZmluZSBXVEZfVVNFX0NPUkVNRURJQSAxCisjZW5kaWYKKwogI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpIHx8IChQTEFURk9STShXSU4p
ICYmICFPUyhXSU5DRSkgJiYgIVBMQVRGT1JNKFdJTl9DQUlSTykpIHx8IFBMQVRGT1JNKFFUKQog
I2RlZmluZSBXVEZfVVNFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSIDEKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM4NmZmMjIzYTkxMjU4ODc2ZDM0YTlhZDIyZGQxNjgzMTFmZjVjYTguLmVjNTY2MWUwYTFi
ZGM2MjQxOGJlNjg4YzVkNWM0MGM4NTMyY2IxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU1ODYsNiArNTU4Niw3IEBACiAJ
CUNEODIwMzBEMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dD
b250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0Q4MjAzMDkxMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRv
d0NvbnRyb2xsZXIubW0gKi87IH07CiAJCUNEODIwMzEwMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJX
aW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAq
LzsgfTsKIAkJQ0Q4MjAzMTExMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEODIwMzBG
MTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi87IH07CisJCUNEQUE4
RDBBMTRENzFCMkUwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFBOEQwODE0RDM4NTYwMDA2MUVBNjAg
LyogUGxhdGZvcm1DbG9ja0NNLm1tICovOyB9OwogCQlDREQ1MjVENzE0NUI2REQwMDA4RDIwNEQg
LyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjY1Q0NDMTQ1QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxN
ZWRpYUVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlDREVBNzYzMDE0NjA4QTUzMDA4QjMxRjEg
LyogUGxhdGZvcm1DbG9ja0NBLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENERUE3NjJFMTQ2MDg0REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0Eu
Y3BwICovOyB9OwogCQlDREVBNzYzNDE0NjBCNTZGMDA4QjMxRjEgLyogQ2xvY2tHZW5lcmljLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjMy
MTQ2MEFFMjkwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwICovOyB9OwpAQCAtMTI1MjUsNiAr
MTI1MjYsOCBAQAogCQlDRDgyMDMwOTEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2Ny
ZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYlZpZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJX
aW5kb3dBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViV2lu
ZG93QW5pbWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEODIwMzBGMTM5
NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJXaW5kb3dBbmltYXRpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNEQUE4RDA3MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNs
b2NrQ00uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NN
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQUE4RDA4MTREMzg1NjAwMDYxRUE2
MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ00ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEQkQ5M0JBMTMzM0JENEIwMDI1NzBFMyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlblF1aWNrVGltZS5jc3M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQ0U1Q0QwMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudFRh
cmdldEZhY3RvcnkuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXZlbnRUYXJnZXRGYWN0b3J5
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYyQzE0NjA4MjI0MDA4QjMx
RjEgLyogQ2xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xvY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MDAwLDYgKzE1MDAzLDggQEAKIAkJCQk0
QjI3MDk4MTBBRjJFNUUwMDA2NTEyN0YgLyogUGFzdGVib2FyZE1hYy5tbSAqLywKIAkJCQlDREVB
NzYyRTE0NjA4NERFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCAqLywKIAkJCQlDREVB
NzYyRjE0NjA4NEVFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmggKi8sCisJCQkJQ0RBQThE
MDcxNEQzODU2MDAwNjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tDTS5oICovLAorCQkJCUNEQUE4RDA4
MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi8sCiAJCQkJQkNBQTQ4NkUx
NEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLmggKi8sCiAJCQkJQkNB
QTQ4NkQxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tICovLAog
CQkJCUJDOTREMTA3MEMyNzRGODgwMDZCQzYxNyAvKiBQbGF0Zm9ybVNjcmVlbk1hYy5tbSAqLywK
QEAgLTI3MDQyLDYgKzI3MDQ3LDcgQEAKIAkJCQkxQUY2MkYyNTE0REFGRTlFMDA0MTU1NkMgLyog
U2Nyb2xsaW5nVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQUFEREEzMTREQjQwOUYw
MEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQUFEREJF
MTREQzY0MDcwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQ0RBQThEMEExNEQ3MUIyRTAwNjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tDTS5tbSBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2xvY2suY3BwCmluZGV4IGNjNTk0ZTdmODQ2ZjBh
YTJjMjc5Y2M0ODk0ZjlkMjUzNmRmOWQ1OWUuLjg4MzAyM2MzYTljZDE2NmNiZTZhYjM1OWVhOTE1
YzlmN2FkOWQ0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9jay5jcHAKQEAgLTI2LDcgKzI2LDkg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDbG9jay5oIgogCi0jaWYgVVNFKENP
UkVBVURJTykKKyNpZiBVU0UoQ09SRU1FRElBKQorICAgICNpbmNsdWRlICJQbGF0Zm9ybUNsb2Nr
Q00uaCIKKyNlbGlmIFVTRShDT1JFQVVESU8pCiAgICAgI2luY2x1ZGUgIlBsYXRmb3JtQ2xvY2tD
QS5oIgogI2Vsc2UKICAgICAjaW5jbHVkZSAiQ2xvY2tHZW5lcmljLmgiCkBAIC0zNiw3ICszOCw5
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBQYXNzUmVmUHRyPENsb2NrPiBDbG9jazo6
Y3JlYXRlKCkKIHsKLSNpZiBVU0UoQ09SRUFVRElPKQorI2lmIFVTRShDT1JFTUVESUEpCisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNsb2NrQ00oKSk7CisjZWxpZiBVU0UoQ09SRUFV
RElPKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1DbG9ja0NBKCkpOwogI2Vsc2UK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsb2NrR2VuZXJpYygpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDM0OTE1MzA5
NmI0MzJlYzJjNjAzMDEyZmQ3YWFjZGZmMzlkZTk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDTS5oCkBAIC0wLDAgKzEsNjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtQ2xvY2tDTV9oCisjZGVmaW5lIFBsYXRmb3JtQ2xv
Y2tDTV9oCisKKyNpZiBVU0UoQ09SRU1FRElBKQorCisjaW5jbHVkZSAiQ2xvY2suaCIKKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUNNVGltZWJhc2Uq
IENNVGltZWJhc2VSZWY7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVDTUNsb2NrKiBDTUNsb2NrUmVm
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRmb3JtQ2xvY2tDTSA6IHB1Ymxp
YyBDbG9jayB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1DbG9ja0NNKCk7CisgICAgUGxhdGZvcm1D
bG9ja0NNKENNQ2xvY2tSZWYpOworCitwcml2YXRlOgorICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhU
aW1pbmdTb3VyY2UoQ01DbG9ja1JlZik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRp
bWUoZmxvYXQpOworICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdDsKKworICAg
IHZpcnR1YWwgdm9pZCBzZXRQbGF5UmF0ZShmbG9hdCk7CisgICAgdmlydHVhbCBmbG9hdCBwbGF5
UmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmF0ZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0
KCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSdW5uaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9ydW5uaW5nOyB9CisKKyAgICBSZXRhaW5QdHI8Q01UaW1lYmFz
ZVJlZj4gbV90aW1lYmFzZTsKKyAgICBmbG9hdCBtX3JhdGU7CisgICAgYm9vbCBtX3J1bm5pbmc7
Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1DbG9ja0NNLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExMGViNTBhNmM3YmRhYzIwNTY2
NDVmNDJmZDJmOGE2ZGM1YmMwZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NNLm1tCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBVU0UoQ09SRU1FRElBKQorCisjaW1wb3J0ICJQ
bGF0Zm9ybUNsb2NrQ00uaCIKKworI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCisjaW1wb3J0
ICJTb2Z0TGlua2luZy5oIgorI2ltcG9ydCA8Q29yZU1lZGlhL0NNQXVkaW9EZXZpY2VDbG9jay5o
PgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKENvcmVNZWRpYSkKKworU09GVF9MSU5L
KENvcmVNZWRpYSwgQ01BdWRpb0RldmljZUNsb2NrQ3JlYXRlLCBpbnQzMl90LCAoQ0ZBbGxvY2F0
b3JSZWYgYWxsb2NhdG9yLCBDRlN0cmluZ1JlZiBkZXZpY2VVSUQsIENNQ2xvY2tSZWYgKmNsb2Nr
T3V0KSwgKGFsbG9jYXRvciwgZGV2aWNlVUlELCBjbG9ja091dCkpCitTT0ZUX0xJTksoQ29yZU1l
ZGlhLCBDTVRpbWViYXNlQ3JlYXRlV2l0aE1hc3RlckNsb2NrLCBpbnQzMl90LCAoQ0ZBbGxvY2F0
b3JSZWYgYWxsb2NhdG9yLCBDTUNsb2NrUmVmIG1hc3RlckNsb2NrLCBDTVRpbWViYXNlUmVmICp0
aW1lYmFzZU91dCksIChhbGxvY2F0b3IsIG1hc3RlckNsb2NrLCB0aW1lYmFzZU91dCkpCitTT0ZU
X0xJTksoQ29yZU1lZGlhLCBDTVRpbWViYXNlU2V0VGltZSwgaW50MzJfdCwgKENNVGltZWJhc2VS
ZWYgdGltZWJhc2UsIENNVGltZSB0aW1lKSwgKHRpbWViYXNlLCB0aW1lKSkKK1NPRlRfTElOSyhD
b3JlTWVkaWEsIENNVGltZWJhc2VHZXRUaW1lLCBDTVRpbWUsIChDTVRpbWViYXNlUmVmIHRpbWVi
YXNlKSwgKHRpbWViYXNlKSkKK1NPRlRfTElOSyhDb3JlTWVkaWEsIENNVGltZWJhc2VTZXRSYXRl
LCBpbnQzMl90LCAoQ01UaW1lYmFzZVJlZiB0aW1lYmFzZSwgRmxvYXQ2NCByYXRlKSwgKHRpbWVi
YXNlLCByYXRlKSkKK1NPRlRfTElOSyhDb3JlTWVkaWEsIENNVGltZU1ha2VXaXRoU2Vjb25kcywg
Q01UaW1lLCAoRmxvYXQ2NCBzZWNvbmRzLCBpbnQzMl90IHByZWZlcnJlZFRpbWVTY2FsZSksIChz
ZWNvbmRzLCBwcmVmZXJyZWRUaW1lU2NhbGUpKQorU09GVF9MSU5LKENvcmVNZWRpYSwgQ01UaW1l
R2V0U2Vjb25kcywgRmxvYXQ2NCwgKENNVGltZSB0aW1lKSwgKHRpbWUpKQorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworc3RhdGljIGNvbnN0IGludDMyX3QgRGVmYXVsdFRpbWVTY2FsZSA9
IDEwMDA7CisKK1BsYXRmb3JtQ2xvY2tDTTo6UGxhdGZvcm1DbG9ja0NNKCkKKyAgICA6IG1fdGlt
ZWJhc2UoMCkKKyAgICAsIG1fcnVubmluZyhmYWxzZSkKK3sKKyAgICBDTUNsb2NrUmVmIHJhd0Ns
b2NrUHRyID0gMDsKKyAgICBDTUF1ZGlvRGV2aWNlQ2xvY2tDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgTlVMTCwgJnJhd0Nsb2NrUHRyKTsKKyAgICBSZXRhaW5QdHI8Q01DbG9ja1JlZj4gY2xv
Y2soQWRvcHRDRiwgcmF3Q2xvY2tQdHIpOworICAgIGluaXRpYWxpemVXaXRoVGltaW5nU291cmNl
KGNsb2NrLmdldCgpKTsKK30KKworUGxhdGZvcm1DbG9ja0NNOjpQbGF0Zm9ybUNsb2NrQ00oQ01D
bG9ja1JlZiBjbG9jaykKKyAgICA6IG1fdGltZWJhc2UoMCkKKyAgICAsIG1fcnVubmluZyhmYWxz
ZSkKK3sKKyAgICBpbml0aWFsaXplV2l0aFRpbWluZ1NvdXJjZShjbG9jayk7Cit9CisKK3ZvaWQg
UGxhdGZvcm1DbG9ja0NNOjppbml0aWFsaXplV2l0aFRpbWluZ1NvdXJjZShDTUNsb2NrUmVmIGNs
b2NrKQoreworICAgIENNVGltZWJhc2VSZWYgcmF3VGltZWJhc2VQdHIgPSAwOworICAgIENNVGlt
ZWJhc2VDcmVhdGVXaXRoTWFzdGVyQ2xvY2soa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2xvY2ssICZy
YXdUaW1lYmFzZVB0cik7CisgICAgbV90aW1lYmFzZS5hZG9wdENGKHJhd1RpbWViYXNlUHRyKTsK
K30KKwordm9pZCBQbGF0Zm9ybUNsb2NrQ006OnNldEN1cnJlbnRUaW1lKGZsb2F0IHRpbWUpCit7
CisgICAgQ01UaW1lIGNtVGltZSA9IENNVGltZU1ha2VXaXRoU2Vjb25kcyh0aW1lLCBEZWZhdWx0
VGltZVNjYWxlKTsKKyAgICBDTVRpbWViYXNlU2V0VGltZShtX3RpbWViYXNlLmdldCgpLCBjbVRp
bWUpOworfQorCitmbG9hdCBQbGF0Zm9ybUNsb2NrQ006OmN1cnJlbnRUaW1lKCkgY29uc3QKK3sK
KyAgICBDTVRpbWUgY21UaW1lID0gQ01UaW1lYmFzZUdldFRpbWUobV90aW1lYmFzZS5nZXQoKSk7
CisgICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoQ01UaW1lR2V0U2Vjb25kcyhjbVRp
bWUpKTsKK30KKwordm9pZCBQbGF0Zm9ybUNsb2NrQ006OnNldFBsYXlSYXRlKGZsb2F0IHJhdGUp
Cit7CisgICAgaWYgKG1fcmF0ZSA9PSByYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Jh
dGUgPSByYXRlOworICAgIGlmIChtX3J1bm5pbmcpCisgICAgICAgIENNVGltZWJhc2VTZXRSYXRl
KG1fdGltZWJhc2UuZ2V0KCksIHJhdGUpOworfQorCit2b2lkIFBsYXRmb3JtQ2xvY2tDTTo6c3Rh
cnQoKQoreworICAgIGlmIChtX3J1bm5pbmcpCisgICAgICAgIHJldHVybjsKKyAgICBtX3J1bm5p
bmcgPSB0cnVlOworICAgIENNVGltZWJhc2VTZXRSYXRlKG1fdGltZWJhc2UuZ2V0KCksIG1fcmF0
ZSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DbG9ja0NNOjpzdG9wKCkKK3sKKyAgICBpZiAoIW1fcnVu
bmluZykKKyAgICAgICAgcmV0dXJuOworICAgIG1fcnVubmluZyA9IGZhbHNlOworICAgIENNVGlt
ZWJhc2VTZXRSYXRlKG1fdGltZWJhc2UuZ2V0KCksIDApOworfQorCisjZW5kaWYK
</data>
<flag name="review"
          id="127230"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>