<?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>18626</bug_id>
          
          <creation_ts>2008-04-19 14:37:09 -0700</creation_ts>
          <short_desc>SQUIRRELFISH: support the &quot;slow script&quot; dialog</short_desc>
          <delta_ts>2008-06-27 21:11:02 -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>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>andersca</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>78268</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-04-19 14:37:09 -0700</bug_when>
    <thetext>SquirrelFish does not support the timeouts and callbacks that trunk uses to implement the &quot;slow script&quot; dialog. We&apos;ll need this to work to merge to trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80474</commentid>
    <comment_count>1</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-05-15 02:32:38 -0700</bug_when>
    <thetext>Added for for, while, and do..while loops with
	M	JavaScriptCore/ChangeLog
	M	JavaScriptCore/VM/CodeBlock.cpp
	M	JavaScriptCore/VM/CodeGenerator.cpp
	M	JavaScriptCore/VM/CodeGenerator.h
	M	JavaScriptCore/VM/ExceptionHelpers.cpp
	M	JavaScriptCore/VM/ExceptionHelpers.h
	M	JavaScriptCore/VM/Machine.cpp
	M	JavaScriptCore/VM/Opcode.h
	M	JavaScriptCore/kjs/interpreter.cpp
	M	JavaScriptCore/kjs/nodes.cpp
	M	JavaScriptCore/kjs/object.h
Committed r33483

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80491</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-05-15 05:56:46 -0700</bug_when>
    <thetext>That patch caused an epic regression on cameron&apos;s system so i rolled it out in r33484</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80618</commentid>
    <comment_count>3</comment_count>
      <attachid>21200</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-05-16 02:59:52 -0700</bug_when>
    <thetext>Created attachment 21200
Patch, regresses perf on some systems</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80829</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-05-17 12:05:05 -0700</bug_when>
    <thetext>Olliej also mentioned that the existing patch doesn&apos;t fix for...in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80830</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-05-17 12:06:12 -0700</bug_when>
    <thetext>I&apos;m working on this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80907</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-05-19 12:02:00 -0700</bug_when>
    <thetext>Oliver&apos;s patch measured as a 1.0% regression on my system.

I changed it to use a local variable, like so:

        ++count;
        if (UNLIKELY(count == THRESHOLD)) {
            exceptionValue = createInterruptedExecutionException(exec);
            goto vm_throw;
        }

(This isn&apos;t completely correct -- it&apos;s just a prototype.)

That got the regression down to 0.2%.

So, I think we could improve things by using a local variable in the common case, and only consulting the global object when the local variable reached some threshold.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80946</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-05-19 21:25:43 -0700</bug_when>
    <thetext>Back to Oliver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80963</commentid>
    <comment_count>8</comment_count>
      <attachid>21250</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-05-20 01:45:32 -0700</bug_when>
    <thetext>Created attachment 21250
More complete version patch

This still regresses perf on some systems, but it doesn&apos;t on my system, so i can&apos;t do an further work on this :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84616</commentid>
    <comment_count>9</comment_count>
      <attachid>21979</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-06-27 20:31:44 -0700</bug_when>
    <thetext>Created attachment 21979
Final (hopefully) patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84617</commentid>
    <comment_count>10</comment_count>
      <attachid>21979</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-06-27 21:03:09 -0700</bug_when>
    <thetext>Comment on attachment 21979
Final (hopefully) patch

Reviewed by Sam</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84618</commentid>
    <comment_count>11</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-06-27 21:03:21 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	JavaScriptCore/ChangeLog
	M	JavaScriptCore/JavaScriptCore.exp
	M	JavaScriptCore/VM/CodeBlock.cpp
	M	JavaScriptCore/VM/CodeGenerator.cpp
	M	JavaScriptCore/VM/ExceptionHelpers.cpp
	M	JavaScriptCore/VM/ExceptionHelpers.h
	M	JavaScriptCore/VM/LabelID.h
	M	JavaScriptCore/VM/Machine.cpp
	M	JavaScriptCore/VM/Machine.h
	M	JavaScriptCore/VM/Opcode.cpp
	M	JavaScriptCore/VM/Opcode.h
	M	JavaScriptCore/kjs/JSGlobalObject.cpp
	M	JavaScriptCore/kjs/JSGlobalObject.h
	M	JavaScriptCore/kjs/JSObject.h
	M	JavaScriptCore/kjs/interpreter.cpp
Committed r34842

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84620</commentid>
    <comment_count>12</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-06-27 21:11:02 -0700</bug_when>
    <thetext>Woohoo!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21200</attachid>
            <date>2008-05-16 02:59:52 -0700</date>
            <delta_ts>2008-05-20 01:45:32 -0700</delta_ts>
            <desc>Patch, regresses perf on some systems</desc>
            <filename>slow-js-timer.patch</filename>
            <type>text/plain</type>
            <size>9654</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlZmEyYjJjLi43NDZlNWNmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMDgtMDUtMTUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkoT09QUykuCisKKyAgICAgICAgQnVnIDE4NjI2OiBTUVVJUlJF
TEZJU0g6IHN1cHBvcnQgdGhlICJzbG93IHNjcmlwdCIgZGlhbG9nCisgICAgICAgIDxodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2MjY+CisKKyAgICAgICAgU3VwcG9y
dCB0aGUgc2xvdyBzY3JpcHQgZGlhbG9nIGZvciBmb3IoOzspLCB3aGlsZSwgYW5kIGRvLi53aGls
ZQorICAgICAgICBsb29wcy4KKworICAgICAgICAqIFZNL0NvZGVCbG9jay5jcHA6CisgICAgICAg
IChLSlM6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgICogVk0vQ29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChLSlM6OkNvZGVHZW5lcmF0b3I6OmVtaXRMb29wSWZUcnVlKToKKyAgICAgICAg
KiBWTS9Db2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogVk0vRXhjZXB0aW9uSGVscGVycy5jcHA6
CisgICAgICAgIChLSlM6OkludGVycnVwdGVkRXhlY3V0aW9uRXJyb3I6OmlzV2F0Y2hkb2dFeGNl
cHRpb24pOgorICAgICAgICAoS0pTOjpjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlv
bik6CisgICAgICAgICogVk0vRXhjZXB0aW9uSGVscGVycy5oOgorICAgICAgICAqIFZNL01hY2hp
bmUuY3BwOgorICAgICAgICAoS0pTOjpNYWNoaW5lOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAg
IChLSlM6Ok1hY2hpbmU6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgKiBWTS9PcGNvZGUuaDoK
KyAgICAgICAgKiBranMvaW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoS0pTOjpJbnRlcnByZXRl
cjo6ZXZhbHVhdGUpOgorICAgICAgICAqIGtqcy9ub2Rlcy5jcHA6CisgICAgICAgIChLSlM6OkRv
V2hpbGVOb2RlOjplbWl0Q29kZSk6CisgICAgICAgIChLSlM6OldoaWxlTm9kZTo6ZW1pdENvZGUp
OgorICAgICAgICAoS0pTOjpGb3JOb2RlOjplbWl0Q29kZSk6CisgICAgICAgICoga2pzL29iamVj
dC5oOgorCiAyMDA4LTA1LTE1ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgTm90IHJldmlld2VkLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvVk0vQ29k
ZUJsb2NrLmNwcCBiL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVCbG9jay5jcHAKaW5kZXggZWQxODg5
Yy4uYTk5ZjYzNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUJsb2NrLmNwcAor
KysgYi9KYXZhU2NyaXB0Q29yZS9WTS9Db2RlQmxvY2suY3BwCkBAIC00MjYsNiArNDI2LDEwIEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVmVjdG9yPEluc3Ry
dWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImCiAgICAgICAgICAgICBwcmludENvbmRpdGlvbmFsSnVt
cChiZWdpbiwgaXQsIGxvY2F0aW9uLCAianRydWUiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisgICAgICAgIGNhc2Ugb3BfbG9vcF9pZl90cnVlOiB7CisgICAgICAgICAgICBwcmlu
dENvbmRpdGlvbmFsSnVtcChiZWdpbiwgaXQsIGxvY2F0aW9uLCAibG9vcF9pZl90cnVlIik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2pmYWxzZTogewog
ICAgICAgICAgICAgcHJpbnRDb25kaXRpb25hbEp1bXAoYmVnaW4sIGl0LCBsb2NhdGlvbiwgImpm
YWxzZSIpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9W
TS9Db2RlR2VuZXJhdG9yLmNwcCBiL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IDIwOWMwZjguLjYxYjM0NzYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL1ZNL0Nv
ZGVHZW5lcmF0b3IuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuY3Bw
CkBAIC0zNzcsNiArMzc3LDE0IEBAIFBhc3NSZWZQdHI8TGFiZWxJRD4gQ29kZUdlbmVyYXRvcjo6
ZW1pdEp1bXAoTGFiZWxJRCogdGFyZ2V0KQogICAgIHJldHVybiB0YXJnZXQ7CiB9CiAKK1Bhc3NS
ZWZQdHI8TGFiZWxJRD4gQ29kZUdlbmVyYXRvcjo6ZW1pdExvb3BJZlRydWUoUmVnaXN0ZXJJRCog
Y29uZCwgTGFiZWxJRCogdGFyZ2V0KQoreworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtYWNo
aW5lKCkuZ2V0T3Bjb2RlKG9wX2xvb3BfaWZfdHJ1ZSkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChjb25kLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGFyZ2V0LT5v
ZmZzZXRGcm9tKGluc3RydWN0aW9ucygpLnNpemUoKSkpOworICAgIHJldHVybiB0YXJnZXQ7Cit9
CisKIFBhc3NSZWZQdHI8TGFiZWxJRD4gQ29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZlRydWUoUmVn
aXN0ZXJJRCogY29uZCwgTGFiZWxJRCogdGFyZ2V0KQogewogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChtYWNoaW5lKCkuZ2V0T3Bjb2RlKG9wX2p0cnVlKSk7CmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9WTS9Db2RlR2VuZXJhdG9yLmggYi9KYXZhU2NyaXB0Q29yZS9WTS9Db2RlR2VuZXJh
dG9yLmgKaW5kZXggM2MwOTM2Yy4uNDA2MTJhOCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
Vk0vQ29kZUdlbmVyYXRvci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3Iu
aApAQCAtMjIwLDYgKzIyMCw3IEBAIG5hbWVzcGFjZSBLSlMgewogCiAgICAgICAgIFBhc3NSZWZQ
dHI8TGFiZWxJRD4gZW1pdExhYmVsKExhYmVsSUQqKTsKICAgICAgICAgUGFzc1JlZlB0cjxMYWJl
bElEPiBlbWl0SnVtcChMYWJlbElEKiB0YXJnZXQpOworICAgICAgICBQYXNzUmVmUHRyPExhYmVs
SUQ+IGVtaXRMb29wSWZUcnVlKFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsSUQqIHRhcmdldCk7CiAg
ICAgICAgIFBhc3NSZWZQdHI8TGFiZWxJRD4gZW1pdEp1bXBJZlRydWUoUmVnaXN0ZXJJRCogY29u
ZCwgTGFiZWxJRCogdGFyZ2V0KTsKICAgICAgICAgUGFzc1JlZlB0cjxMYWJlbElEPiBlbWl0SnVt
cElmRmFsc2UoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWxJRCogdGFyZ2V0KTsKICAgICAgICAgUGFz
c1JlZlB0cjxMYWJlbElEPiBlbWl0SnVtcFNjb3BlcyhMYWJlbElEKiB0YXJnZXQsIGludCB0YXJn
ZXRTY29wZURlcHRoKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL1ZNL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwIGIvSmF2YVNjcmlwdENvcmUvVk0vRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXgg
MjYyZmNjMC4uZmE4YzkwZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvVk0vRXhjZXB0aW9u
SGVscGVycy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvVk0vRXhjZXB0aW9uSGVscGVycy5jcHAK
QEAgLTczLDYgKzczLDE2IEBAIEpTVmFsdWUqIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGNyZWF0ZUVycm9yKGV4ZWMsIFJhbmdlRXJyb3IsICJN
YXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4iKTsKIH0KIAorY2xhc3MgSW50ZXJydXB0
ZWRFeGVjdXRpb25FcnJvciA6IHB1YmxpYyBKU09iamVjdCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCBib29sIGlzV2F0Y2hkb2dFeGNlcHRpb24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cit9Owor
CitKU1ZhbHVlKiBjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihFeGVjU3RhdGUq
KQoreworICAgIHJldHVybiBuZXcgSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcjsKK30KKwogSlNW
YWx1ZSogY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50KQogewogICAgIHJldHVybiBjcmVhdGVFcnJvcihleGVjLCBSZWZl
cmVuY2VFcnJvciwgIkNhbid0IGZpbmQgdmFyaWFibGU6ICVzIiwgaWRlbnQpOwpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvVk0vRXhjZXB0aW9uSGVscGVycy5oIGIvSmF2YVNjcmlwdENvcmUv
Vk0vRXhjZXB0aW9uSGVscGVycy5oCmluZGV4IDI1OWVkNDYuLmViNzY1ZmQgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL1ZNL0V4Y2VwdGlvbkhlbHBlcnMuaAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9WTS9FeGNlcHRpb25IZWxwZXJzLmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEtKUyB7
CiAgICAgSlNWYWx1ZSogY3JlYXRlTm90QW5PYmplY3RFcnJvcihFeGVjU3RhdGUqLCBKU1ZhbHVl
KiwgTm9kZSopOwogICAgIEpTVmFsdWUqIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSogdmFsdWUsIE5vZGUqIGV4cHIpOwogICAgIEpTVmFsdWUqIGNy
ZWF0ZU5vdEFGdW5jdGlvbkVycm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSogdmFsdWUsIE5v
ZGUqIGV4cHIpOworICAgIEpTVmFsdWUqIGNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKEV4ZWNTdGF0ZSogZXhlYyk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvVk0vTWFjaGluZS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmNwcAppbmRl
eCAwMjdkZjQxLi5jNGJjNzJkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5l
LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmNwcApAQCAtNTU5LDYgKzU1OSw4
IEBAIE5FVkVSX0lOTElORSBJbnN0cnVjdGlvbiogTWFjaGluZTo6dGhyb3dFeGNlcHRpb24oRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlKiBleGNlCiAgICAgICAgICAgICBleGNlcHRpb24tPnB1dChl
eGVjLCAibGluZSIsIGpzTnVtYmVyKGNvZGVCbG9jay0+bGluZU51bWJlckZvclZQQyh2UEMpKSk7
CiAgICAgICAgICAgICBleGNlcHRpb24tPnB1dChleGVjLCAic291cmNlVVJMIiwganNPd25lZFN0
cmluZyhjb2RlQmxvY2stPm93bmVyTm9kZS0+c291cmNlVVJMKCkpKTsKICAgICAgICAgfQorICAg
ICAgICBpZiAoZXhjZXB0aW9uLT5pc1dhdGNoZG9nRXhjZXB0aW9uKCkpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKICAgICBpZiAoRGVidWdnZXIqIGRlYnVnZ2VyID0gZXhlYy0+ZHlu
YW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKQpAQCAtNzkyLDcgKzc5NCw3IEBAIEpTVmFs
dWUqIE1hY2hpbmU6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgRXhlY1N0YXRl
KiBleGVjLCBSZWdpc3RlckZpCiAgICAgUmVnaXN0ZXIqKiByZWdpc3RlckJhc2UgPSByZWdpc3Rl
ckZpbGUtPmJhc2VQb2ludGVyKCk7CiAgICAgSW5zdHJ1Y3Rpb24qIHZQQyA9IGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zLmJlZ2luKCk7CiAgICAgSlNWYWx1ZSoqIGsgPSBjb2RlQmxvY2stPmpzVmFs
dWVzLmRhdGEoKTsKLSAgICAKKwogICAgIHJlZ2lzdGVyRmlsZS0+c2V0U2FmZUZvclJlZW50cnko
ZmFsc2UpOwogI2RlZmluZSBWTV9DSEVDS19FWENFUFRJT04oKSBcCiAgICAgIGRvIHsgXApAQCAt
MTY1MSw2ICsxNjUzLDMyIEBAIEpTVmFsdWUqIE1hY2hpbmU6OnByaXZhdGVFeGVjdXRlKEV4ZWN1
dGlvbkZsYWcgZmxhZywgRXhlY1N0YXRlKiBleGVjLCBSZWdpc3RlckZpCiAgICAgICAgICsrdlBD
OwogICAgICAgICBORVhUX09QQ09ERTsKICAgICB9CisgICAgQkVHSU5fT1BDT0RFKG9wX2xvb3Bf
aWZfdHJ1ZSkgeworICAgICAgICAvKiBsb29wX2lmX3RydWUgY29uZChyKSB0YXJnZXQob2Zmc2V0
KQorCisgICAgICAgICAgRG9lcyBhIEpTIHRpbWVvdXQgY2hlY2ssIGFuZCBpbW1lZGlhdGVseSB0
ZXJtaW5hdGVzIGV4ZWN1dGlvbiBhbmQgc2V0cworICAgICAgICAgIGFuIHVuY2F0Y2hhYmxlIGV4
Y2VwdGlvbiBvbiB0aGUgRXhlY1N0YXRlLgorCisgICAgICAgICAgQXNzdW1pbmcgdGhlIHdhdGNo
ZG9nIHRlc3QgaW5kaWNhdGVzIGl0IGlzIHNhZmUsIHRoaXMganVtcHMgdG8gb2Zmc2V0CisgICAg
ICAgICAgdGFyZ2V0IGZyb20gdGhlIGN1cnJlbnQgaW5zdHJ1Y3Rpb24sIGlmIGFuZCBvbmx5IGlm
IHJlZ2lzdGVyIGNvbmQgCisgICAgICAgICAgY29udmVydHMgdG8gYm9vbGVhbiBhcyB0cnVlLgor
ICAgICAgICAgKi8KKworICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+ZHluYW1pY0dsb2JhbE9i
amVjdCgpLT50aW1lZE91dCgpKSkgeworICAgICAgICAgICAgZXhjZXB0aW9uVmFsdWUgPSBjcmVh
dGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihleGVjKTsKKyAgICAgICAgICAgIGdvdG8g
dm1fdGhyb3c7CisgICAgICAgIH0KKworICAgICAgICBpbnQgY29uZCA9ICgrK3ZQQyktPnUub3Bl
cmFuZDsKKyAgICAgICAgaW50IHRhcmdldCA9ICgrK3ZQQyktPnUub3BlcmFuZDsKKyAgICAgICAg
aWYgKHJbY29uZF0udS5qc1ZhbHVlLT50b0Jvb2xlYW4oZXhlYykpIHsKKyAgICAgICAgICAgIHZQ
QyArPSB0YXJnZXQ7CisgICAgICAgICAgICBORVhUX09QQ09ERTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgKyt2UEM7CisgICAgICAgIE5FWFRfT1BDT0RFOworICAgIH0KICAgICBCRUdJ
Tl9PUENPREUob3BfamZhbHNlKSB7CiAgICAgICAgIC8qIGpmYWxzZSBjb25kKHIpIHRhcmdldChv
ZmZzZXQpCiAgICAgICAgICAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL1ZNL09wY29kZS5o
IGIvSmF2YVNjcmlwdENvcmUvVk0vT3Bjb2RlLmgKaW5kZXggYTc1MDk0NC4uYTkzOTQ2YyAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvVk0vT3Bjb2RlLmgKKysrIGIvSmF2YVNjcmlwdENvcmUv
Vk0vT3Bjb2RlLmgKQEAgLTkwLDYgKzkwLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIG1h
Y3JvKG9wX3B1dF9zZXR0ZXIpIFwKICAgICAgICAgXAogICAgICAgICBtYWNybyhvcF9qbXApIFwK
KyAgICAgICAgbWFjcm8ob3BfbG9vcF9pZl90cnVlKSBcCiAgICAgICAgIG1hY3JvKG9wX2p0cnVl
KSBcCiAgICAgICAgIG1hY3JvKG9wX2pmYWxzZSkgXAogICAgICAgICBtYWNybyhvcF9qbXBfc2Nv
cGVzKSBcCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuY3BwIGIv
SmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcAppbmRleCBlYmY2MTRlLi5mZmQ4M2U4
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuY3BwCisrKyBiL0ph
dmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5jcHAKQEAgLTg4LDcgKzg4LDEyIEBAIENvbXBs
ZXRpb24gSW50ZXJwcmV0ZXI6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbiYg
c2NvcGVDaGFpbiwgY29uc3QKICAgICBQcm9maWxlcjo6cHJvZmlsZXIoKS0+ZGlkRXhlY3V0ZShl
eGVjLCBzb3VyY2VVUkwsIHN0YXJ0aW5nTGluZU51bWJlcik7CiAjZW5kaWYKIAotICAgIHJldHVy
biBleGNlcHRpb24gPyBDb21wbGV0aW9uKFRocm93LCBleGNlcHRpb24pIDogQ29tcGxldGlvbihO
b3JtYWwsIHJlc3VsdCk7CisgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICBpZiAoZXhjZXB0
aW9uLT5pc09iamVjdCgpICYmIHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4oZXhjZXB0aW9uKS0+aXNX
YXRjaGRvZ0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIENvbXBsZXRpb24oSW50ZXJy
dXB0ZWQsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBDb21wbGV0aW9uKFRocm93LCBleGNlcHRp
b24pOworICAgIH0KKyAgICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwsIHJlc3VsdCk7CiB9CiAK
IHN0YXRpYyBib29sIHByaW50RXhjZXB0aW9ucyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUva2pzL25vZGVzLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAKaW5k
ZXggN2I0MjdkNC4uYmI0MTZiYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUva2pzL25vZGVz
LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3BwCkBAIC00ODk1LDcgKzQ4OTUs
NyBAQCBSZWdpc3RlcklEKiBEb1doaWxlTm9kZTo6ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChj
b250aW51ZVRhcmdldC5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCogY29uZCA9IGdlbmVyYXRvci5l
bWl0Tm9kZShtX2V4cHIuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShjb25k
LCB0b3BPZkxvb3AuZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0TG9vcElmVHJ1ZShjb25kLCB0
b3BPZkxvb3AuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoYnJlYWtUYXJnZXQuZ2V0
KCkpOwogICAgIHJldHVybiByZXN1bHQuZ2V0KCk7CiB9CkBAIC00OTU3LDcgKzQ5NTcsNyBAQCBS
ZWdpc3RlcklEKiBXaGlsZU5vZGU6OmVtaXRDb2RlKENvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChjb250aW51ZVRhcmdl
dC5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCogY29uZCA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4
cHIuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShjb25kLCB0b3BPZkxvb3Au
Z2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0TG9vcElmVHJ1ZShjb25kLCB0b3BPZkxvb3AuZ2V0
KCkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChicmVha1RhcmdldC5nZXQoKSk7CiAgICAg
CkBAIC01MDI1LDcgKzUwMjUsNyBAQCBSZWdpc3RlcklEKiBGb3JOb2RlOjplbWl0Q29kZShDb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoYmVmb3JlQ29uZGl0aW9uLmdldCgpKTsKICAgICBSZWdpc3RlcklEKiBjb25kID0g
Z2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjIuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVt
cElmVHJ1ZShjb25kLCB0b3BPZkxvb3AuZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0TG9vcElm
VHJ1ZShjb25kLCB0b3BPZkxvb3AuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoYnJl
YWtUYXJnZXQuZ2V0KCkpOwogICAgIHJldHVybiByZXN1bHQuZ2V0KCk7CiB9CmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9ranMvb2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ranMvb2JqZWN0
LmgKaW5kZXggZDNkNThlMC4uMjZlZmJmMSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUva2pz
L29iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9vYmplY3QuaApAQCAtNDMxLDYgKzQz
MSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZpcnR1YWwgYm9vbCBpc0dsb2JhbE9iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGVPYmpl
Y3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCBib29sIGlzV2F0Y2hk
b2dFeGNlcHRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICBwcm90ZWN0ZWQ6CiAgICAg
UHJvcGVydHlNYXAgX3Byb3A7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21250</attachid>
            <date>2008-05-20 01:45:32 -0700</date>
            <delta_ts>2008-06-27 20:31:44 -0700</delta_ts>
            <desc>More complete version patch</desc>
            <filename>slowScriptmk2.patch</filename>
            <type>text/plain</type>
            <size>11670</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVCbG9jay5jcHAgYi9KYXZhU2NyaXB0
Q29yZS9WTS9Db2RlQmxvY2suY3BwCmluZGV4IDJjMTJjZWIuLjljYjMzZTggMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVCbG9jay5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvVk0v
Q29kZUJsb2NrLmNwcApAQCAtNDQwLDYgKzQ0MCwxMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9y
JgogICAgICAgICAgICAgcHJpbnRDb25kaXRpb25hbEp1bXAoYmVnaW4sIGl0LCBsb2NhdGlvbiwg
Imp0cnVlIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9w
X2xvb3BfaWZfdHJ1ZTogeworICAgICAgICAgICAgcHJpbnRDb25kaXRpb25hbEp1bXAoYmVnaW4s
IGl0LCBsb2NhdGlvbiwgImxvb3BfaWZfdHJ1ZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9qZmFsc2U6IHsKICAgICAgICAgICAgIHByaW50Q29uZGl0
aW9uYWxKdW1wKGJlZ2luLCBpdCwgbG9jYXRpb24sICJqZmFsc2UiKTsKICAgICAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUdlbmVyYXRvci5jcHAgYi9K
YXZhU2NyaXB0Q29yZS9WTS9Db2RlR2VuZXJhdG9yLmNwcAppbmRleCBkZGU4MTc3Li5jYjBiMDQx
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9WTS9Db2RlR2VuZXJhdG9yLmNwcAorKysgYi9K
YXZhU2NyaXB0Q29yZS9WTS9Db2RlR2VuZXJhdG9yLmNwcApAQCAtMzg1LDYgKzM4NSwxNCBAQCBQ
YXNzUmVmUHRyPExhYmVsSUQ+IENvZGVHZW5lcmF0b3I6OmVtaXRKdW1wKExhYmVsSUQqIHRhcmdl
dCkKICAgICByZXR1cm4gdGFyZ2V0OwogfQogCitQYXNzUmVmUHRyPExhYmVsSUQ+IENvZGVHZW5l
cmF0b3I6OmVtaXRMb29wSWZUcnVlKFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsSUQqIHRhcmdldCkK
K3sKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWFjaGluZSgpLmdldE9wY29kZShvcF9sb29w
X2lmX3RydWUpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY29uZC0+aW5kZXgoKSk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRhcmdldC0+b2Zmc2V0RnJvbShpbnN0cnVjdGlvbnMo
KS5zaXplKCkpKTsKKyAgICByZXR1cm4gdGFyZ2V0OworfQorCiBQYXNzUmVmUHRyPExhYmVsSUQ+
IENvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZUcnVlKFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsSUQq
IHRhcmdldCkKIHsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWFjaGluZSgpLmdldE9wY29k
ZShvcF9qdHJ1ZSkpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUdlbmVyYXRv
ci5oIGIvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUdlbmVyYXRvci5oCmluZGV4IDg3ZWJjZTAuLjIw
MDAyYTIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVHZW5lcmF0b3IuaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9WTS9Db2RlR2VuZXJhdG9yLmgKQEAgLTI0Niw2ICsyNDYsNyBAQCBu
YW1lc3BhY2UgS0pTIHsKIAogICAgICAgICBQYXNzUmVmUHRyPExhYmVsSUQ+IGVtaXRMYWJlbChM
YWJlbElEKik7CiAgICAgICAgIFBhc3NSZWZQdHI8TGFiZWxJRD4gZW1pdEp1bXAoTGFiZWxJRCog
dGFyZ2V0KTsKKyAgICAgICAgUGFzc1JlZlB0cjxMYWJlbElEPiBlbWl0TG9vcElmVHJ1ZShSZWdp
c3RlcklEKiBjb25kLCBMYWJlbElEKiB0YXJnZXQpOwogICAgICAgICBQYXNzUmVmUHRyPExhYmVs
SUQ+IGVtaXRKdW1wSWZUcnVlKFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsSUQqIHRhcmdldCk7CiAg
ICAgICAgIFBhc3NSZWZQdHI8TGFiZWxJRD4gZW1pdEp1bXBJZkZhbHNlKFJlZ2lzdGVySUQqIGNv
bmQsIExhYmVsSUQqIHRhcmdldCk7CiAgICAgICAgIFBhc3NSZWZQdHI8TGFiZWxJRD4gZW1pdEp1
bXBTY29wZXMoTGFiZWxJRCogdGFyZ2V0LCBpbnQgdGFyZ2V0U2NvcGVEZXB0aCk7CmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9WTS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL0phdmFTY3JpcHRD
b3JlL1ZNL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDI2MmZjYzAuLmZhOGM5MGYgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL1ZNL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL0phdmFT
Y3JpcHRDb3JlL1ZNL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC03Myw2ICs3MywxNiBAQCBKU1Zh
bHVlKiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVy
biBjcmVhdGVFcnJvcihleGVjLCBSYW5nZUVycm9yLCAiTWF4aW11bSBjYWxsIHN0YWNrIHNpemUg
ZXhjZWVkZWQuIik7CiB9CiAKK2NsYXNzIEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3IgOiBwdWJs
aWMgSlNPYmplY3QgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1dhdGNoZG9nRXhjZXB0
aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorfTsKKworSlNWYWx1ZSogY3JlYXRlSW50ZXJy
dXB0ZWRFeGVjdXRpb25FeGNlcHRpb24oRXhlY1N0YXRlKikKK3sKKyAgICByZXR1cm4gbmV3IElu
dGVycnVwdGVkRXhlY3V0aW9uRXJyb3I7Cit9CisKIEpTVmFsdWUqIGNyZWF0ZVVuZGVmaW5lZFZh
cmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIHsK
ICAgICByZXR1cm4gY3JlYXRlRXJyb3IoZXhlYywgUmVmZXJlbmNlRXJyb3IsICJDYW4ndCBmaW5k
IHZhcmlhYmxlOiAlcyIsIGlkZW50KTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL1ZNL0V4
Y2VwdGlvbkhlbHBlcnMuaCBiL0phdmFTY3JpcHRDb3JlL1ZNL0V4Y2VwdGlvbkhlbHBlcnMuaApp
bmRleCAyNTllZDQ2Li5lYjc2NWZkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9WTS9FeGNl
cHRpb25IZWxwZXJzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvVk0vRXhjZXB0aW9uSGVscGVycy5o
CkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEpTVmFsdWUqIGNyZWF0ZU5v
dEFuT2JqZWN0RXJyb3IoRXhlY1N0YXRlKiwgSlNWYWx1ZSosIE5vZGUqKTsKICAgICBKU1ZhbHVl
KiBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZh
bHVlLCBOb2RlKiBleHByKTsKICAgICBKU1ZhbHVlKiBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZhbHVlLCBOb2RlKiBleHByKTsKKyAgICBKU1ZhbHVl
KiBjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMpOwog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwIGIv
SmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5jcHAKaW5kZXggYjE5ODY1My4uZGE2MTcwZiAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5jcHAKKysrIGIvSmF2YVNjcmlwdENv
cmUvVk0vTWFjaGluZS5jcHAKQEAgLTU4LDggKzU4LDEyIEBACiBuYW1lc3BhY2UgS0pTIHsKIAog
I2lmIEhBVkUoQ09NUFVURURfR09UTykKLXN0YXRpYyB2b2lkKiBvcF90aHJvd19lbmRfaW5kaXJl
Y3Q7Ci1zdGF0aWMgdm9pZCogb3BfY2FsbF9pbmRpcmVjdDsKKyNkZWZpbmUgV1RGX1VTRV9HQ0Nf
R09UT19QRVJGX0hBQ0tTIDEKKyNlbmRpZgorICAgIAorI2lmIFVTRShHQ0NfR09UT19QRVJGX0hB
Q0tTKQorICAgIHN0YXRpYyB2b2lkKiBvcF90aHJvd19lbmRfaW5kaXJlY3Q7CisgICAgc3RhdGlj
IHZvaWQqIG9wX2NhbGxfaW5kaXJlY3Q7CiAjZW5kaWYKIAogLy8gUmV0cmlldmVzIHRoZSBvZmZz
ZXQgb2YgYSBjYWxsaW5nIGZ1bmN0aW9uIHdpdGhpbiB0aGUgY3VycmVudCByZWdpc3RlciBmaWxl
LgpAQCAtNTY3LDYgKzU3MSwxMSBAQCBORVZFUl9JTkxJTkUgSW5zdHJ1Y3Rpb24qIE1hY2hpbmU6
OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSogZXhjZQogICAgICAgICAg
ICAgZXhjZXB0aW9uLT5wdXQoZXhlYywgImxpbmUiLCBqc051bWJlcihjb2RlQmxvY2stPmxpbmVO
dW1iZXJGb3JWUEModlBDKSkpOwogICAgICAgICAgICAgZXhjZXB0aW9uLT5wdXQoZXhlYywgInNv
dXJjZVVSTCIsIGpzT3duZWRTdHJpbmcoY29kZUJsb2NrLT5vd25lck5vZGUtPnNvdXJjZVVSTCgp
KSk7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKGV4Y2VwdGlvbi0+aXNXYXRjaGRvZ0V4Y2VwdGlv
bigpKSB7CisgICAgICAgICAgICB3aGlsZSh1bndpbmRDYWxsRnJhbWUoZXhlYywgZXhjZXB0aW9u
VmFsdWUsIHJlZ2lzdGVyQmFzZSwgdlBDLCBjb2RlQmxvY2ssIGssIHNjb3BlQ2hhaW4sIHIpKQor
ICAgICAgICAgICAgICAgIDsgLy8gRG9uJ3QgbmVlZCBoYW5kbGVyIGNoZWNrcyBvciBhbnl0aGlu
Zywgd2UganVzdCB3YW50IHRvIHVucm9sbCBhbGwgdGhlIEpTIGNhbGxmcmFtZXMgcG9zc2libGUu
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChEZWJ1
Z2dlciogZGVidWdnZXIgPSBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkp
IHsKQEAgLTc5NCw4ICs4MDMsMTAgQEAgSlNWYWx1ZSogTWFjaGluZTo6cHJpdmF0ZUV4ZWN1dGUo
RXhlY3V0aW9uRmxhZyBmbGFnLCBFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmkKICAgICAgICAg
ICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoQUREX09QQ09ERV9JRCk7CiAgICAgICAgICAgICAj
dW5kZWYgQUREX09QQ09ERQogICAgICAgICAgICAgQVNTRVJUKG1fb3Bjb2RlSURUYWJsZS5zaXpl
KCkgPT0gbnVtT3Bjb2RlSURzKTsKKyNpZiBVU0UoR0NDX0dPVE9fUEVSRl9IQUNLUykKICAgICAg
ICAgICAgIG9wX3Rocm93X2VuZF9pbmRpcmVjdCA9ICYmb3BfdGhyb3dfZW5kOwogICAgICAgICAg
ICAgb3BfY2FsbF9pbmRpcmVjdCA9ICYmb3BfY2FsbDsKKyNlbmRpZgogICAgICAgICAjZW5kaWYg
Ly8gSEFWRShDT01QVVRFRF9HT1RPKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC04MDYs
NyArODE3LDYgQEAgSlNWYWx1ZSogTWFjaGluZTo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxh
ZyBmbGFnLCBFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmkKICAgICBSZWdpc3RlcioqIHJlZ2lz
dGVyQmFzZSA9IHJlZ2lzdGVyRmlsZS0+YmFzZVBvaW50ZXIoKTsKICAgICBJbnN0cnVjdGlvbiog
dlBDID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMuYmVnaW4oKTsKICAgICBKU1ZhbHVlKiogayA9
IGNvZGVCbG9jay0+anNWYWx1ZXMuZGF0YSgpOwotICAgIAogICAgIHJlZ2lzdGVyRmlsZS0+c2V0
U2FmZUZvclJlZW50cnkoZmFsc2UpOwogI2RlZmluZSBWTV9DSEVDS19FWENFUFRJT04oKSBcCiAg
ICAgIGRvIHsgXApAQCAtMTY2OCw2ICsxNjc4LDExIEBAIEpTVmFsdWUqIE1hY2hpbmU6OnByaXZh
dGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgRXhlY1N0YXRlKiBleGVjLCBSZWdpc3RlckZp
CiAgICAgICAgIHZQQyArPSB0YXJnZXQ7CiAgICAgICAgIE5FWFRfT1BDT0RFOwogICAgIH0KKyNp
ZiBVU0UoR0NDX0dPVE9fUEVSRl9IQUNLUykKKyAgICAvLyBUaGUgZm9sbG93aW5nICJibG9ja2lu
ZyIgbGFiZWxzIGFyZSB1c2VkIHRvIGZvcmNpYmx5IHByZXZlbnQgZ2NjCisgICAgLy8gZnJvbSBw
cm9kdWNpbmcgc3R1cGlkIGNvZGUuCisgICAgZ290byAqKCYmYmxvY2tpbmdMYWJlbDApOworI2Vu
ZGlmCiAgICAgQkVHSU5fT1BDT0RFKG9wX2p0cnVlKSB7CiAgICAgICAgIC8qIGp0cnVlIGNvbmQo
cikgdGFyZ2V0KG9mZnNldCkKICAgICAgICAgIApAQCAtMTY4NCw2ICsxNjk5LDEwIEBAIEpTVmFs
dWUqIE1hY2hpbmU6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgRXhlY1N0YXRl
KiBleGVjLCBSZWdpc3RlckZpCiAgICAgICAgICsrdlBDOwogICAgICAgICBORVhUX09QQ09ERTsK
ICAgICB9CisjaWYgVVNFKEdDQ19HT1RPX1BFUkZfSEFDS1MpCisgICAgYmxvY2tpbmdMYWJlbDA6
CisgICAgZ290byAqKCYmYmxvY2tpbmdMYWJlbDEpOworI2VuZGlmCiAgICAgQkVHSU5fT1BDT0RF
KG9wX2pmYWxzZSkgewogICAgICAgICAvKiBqZmFsc2UgY29uZChyKSB0YXJnZXQob2Zmc2V0KQog
ICAgICAgICAgCkBAIC0xNzAwLDYgKzE3MTksMzkgQEAgSlNWYWx1ZSogTWFjaGluZTo6cHJpdmF0
ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmkK
ICAgICAgICAgKyt2UEM7CiAgICAgICAgIE5FWFRfT1BDT0RFOwogICAgIH0KKyNpZiBVU0UoR0ND
X0dPVE9fUEVSRl9IQUNLUykKKyAgICBibG9ja2luZ0xhYmVsMToKKyAgICBnb3RvICooJiZibG9j
a2luZ0xhYmVsMik7CisjZW5kaWYKKyAgICBCRUdJTl9PUENPREUob3BfbG9vcF9pZl90cnVlKSB7
CisgICAgICAgIC8qIGxvb3BfaWZfdHJ1ZSBjb25kKHIpIHRhcmdldChvZmZzZXQpCisgICAgICAg
ICAKKyAgICAgICAgICBEb2VzIGEgSlMgdGltZW91dCBjaGVjaywgYW5kIGltbWVkaWF0ZWx5IHRl
cm1pbmF0ZXMgZXhlY3V0aW9uIGFuZCBzZXRzCisgICAgICAgICAgYW4gdW5jYXRjaGFibGUgZXhj
ZXB0aW9uIG9uIHRoZSBFeGVjU3RhdGUuCisKKyAgICAgICAgICBBc3N1bWluZyB0aGUgd2F0Y2hk
b2cgdGVzdCBpbmRpY2F0ZXMgaXQgaXMgc2FmZSwgdGhpcyBqdW1wcyB0byBvZmZzZXQKKyAgICAg
ICAgICB0YXJnZXQgZnJvbSB0aGUgY3VycmVudCBpbnN0cnVjdGlvbiwgaWYgYW5kIG9ubHkgaWYg
cmVnaXN0ZXIgY29uZCAKKyAgICAgICAgICBjb252ZXJ0cyB0byBib29sZWFuIGFzIHRydWUuCisg
ICAgICAgICAqLworICAgICAgICAKKyAgICAgICAgaWYgKGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmpl
Y3QoKS0+dGltZWRPdXQoKSkgeworICAgICAgICAgICAgZXhjZXB0aW9uVmFsdWUgPSBjcmVhdGVJ
bnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihleGVjKTsKKyAgICAgICAgICAgIGdvdG8gdm1f
dGhyb3c7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludCBjb25kID0gKCsrdlBDKS0+
dS5vcGVyYW5kOworICAgICAgICBpbnQgdGFyZ2V0ID0gKCsrdlBDKS0+dS5vcGVyYW5kOworICAg
ICAgICBpZiAocltjb25kXS51LmpzVmFsdWUtPnRvQm9vbGVhbihleGVjKSkgeworICAgICAgICAg
ICAgdlBDICs9IHRhcmdldDsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICArK3ZQQzsKKyAgICAgICAgTkVYVF9PUENPREU7CisgICAgfQorI2lm
IFVTRShHQ0NfR09UT19QRVJGX0hBQ0tTKQorICAgIGJsb2NraW5nTGFiZWwyOgorI2VuZGlmCiAg
ICAgQkVHSU5fT1BDT0RFKG9wX25ld19mdW5jKSB7CiAgICAgICAgIC8qIG5ld19mdW5jIGRzdChy
KSBmdW5jKGYpCiAKQEAgLTE3NjcsNyArMTgxOSw3IEBAIEpTVmFsdWUqIE1hY2hpbmU6OnByaXZh
dGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgRXhlY1N0YXRlKiBleGVjLCBSZWdpc3RlckZp
CiAgICAgICAgIHZQQyAtPSA1OwogICAgICAgICByW3IyXS51LmpzVmFsdWUgPSBiYXNlLT50b09i
amVjdChleGVjKS0+dG9UaGlzT2JqZWN0KGV4ZWMpOwogCi0jaWYgSEFWRShDT01QVVRFRF9HT1RP
KQorI2lmIFVTRShHQ0NfR09UT19QRVJGX0hBQ0tTKQogICAgICAgICAvLyBIYWNrIGFyb3VuZCBn
Y2MgcGVyZm9ybWFuY2UgcXVpcmsgYnkgcGVyZm9ybWluZyBhbiBpbmRpcmVjdCBnb3RvCiAgICAg
ICAgIC8vIGluIG9yZGVyIHRvIHNldCB0aGUgdlBDIC0tIGF0dGVtcHRpbmcgdG8gZG8gc28gZGly
ZWN0bHkgcmVzdWx0cyBpbiBhCiAgICAgICAgIC8vIHNpZ25pZmljYW50IHJlZ3Jlc3Npb24uCkBA
IC0xOTk5LDYgKzIwNTEsMTAgQEAgSlNWYWx1ZSogTWFjaGluZTo6cHJpdmF0ZUV4ZWN1dGUoRXhl
Y3V0aW9uRmxhZyBmbGFnLCBFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmkKIAogICAgICAgICBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBpdCA9IHJbaXRlcl0udS5qc1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOwogICAgICAgICBpZiAoSlNWYWx1ZSogdGVtcCA9IGl0LT5uZXh0KGV4ZWMpKSB7CisgICAg
ICAgICAgICBpZiAoZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT50aW1lZE91dCgpKSB7Cisg
ICAgICAgICAgICAgICAgZXhjZXB0aW9uVmFsdWUgPSBjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbihleGVjKTsKKyAgICAgICAgICAgICAgICBnb3RvIHZtX3Rocm93OworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcltkc3RdLnUuanNWYWx1ZSA9IHRlbXA7CiAgICAgICAgICAg
ICB2UEMgKz0gdGFyZ2V0OwogICAgICAgICAgICAgTkVYVF9PUENPREU7CkBAIC0yMDQ0LDcgKzIx
MDAsNyBAQCBKU1ZhbHVlKiBNYWNoaW5lOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZs
YWcsIEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaQogICAgICAgICAgICAgcmV0dXJuIGpzTnVs
bCgpOwogICAgICAgICB9CiAKLSNpZiBIQVZFKENPTVBVVEVEX0dPVE8pCisjaWYgVVNFKEdDQ19H
T1RPX1BFUkZfSEFDS1MpCiAgICAgICAgIC8vIEhhY2sgYXJvdW5kIGdjYyBwZXJmb3JtYW5jZSBx
dWlyayBieSBwZXJmb3JtaW5nIGFuIGluZGlyZWN0IGdvdG8KICAgICAgICAgLy8gaW4gb3JkZXIg
dG8gc2V0IHRoZSB2UEMgLS0gYXR0ZW1wdGluZyB0byBkbyBzbyBkaXJlY3RseSByZXN1bHRzIGlu
IGEKICAgICAgICAgLy8gc2lnbmlmaWNhbnQgcmVncmVzc2lvbi4KZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL1ZNL09wY29kZS5oIGIvSmF2YVNjcmlwdENvcmUvVk0vT3Bjb2RlLmgKaW5kZXgg
YTc1MDk0NC4uYTkzOTQ2YyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvVk0vT3Bjb2RlLmgK
KysrIGIvSmF2YVNjcmlwdENvcmUvVk0vT3Bjb2RlLmgKQEAgLTkwLDYgKzkwLDcgQEAgbmFtZXNw
YWNlIEtKUyB7CiAgICAgICAgIG1hY3JvKG9wX3B1dF9zZXR0ZXIpIFwKICAgICAgICAgXAogICAg
ICAgICBtYWNybyhvcF9qbXApIFwKKyAgICAgICAgbWFjcm8ob3BfbG9vcF9pZl90cnVlKSBcCiAg
ICAgICAgIG1hY3JvKG9wX2p0cnVlKSBcCiAgICAgICAgIG1hY3JvKG9wX2pmYWxzZSkgXAogICAg
ICAgICBtYWNybyhvcF9qbXBfc2NvcGVzKSBcCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9r
anMvaW50ZXJwcmV0ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcApp
bmRleCBlYmY2MTRlLi5mZmQ4M2U4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvaW50
ZXJwcmV0ZXIuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5jcHAKQEAg
LTg4LDcgKzg4LDEyIEBAIENvbXBsZXRpb24gSW50ZXJwcmV0ZXI6OmV2YWx1YXRlKEV4ZWNTdGF0
ZSogZXhlYywgU2NvcGVDaGFpbiYgc2NvcGVDaGFpbiwgY29uc3QKICAgICBQcm9maWxlcjo6cHJv
ZmlsZXIoKS0+ZGlkRXhlY3V0ZShleGVjLCBzb3VyY2VVUkwsIHN0YXJ0aW5nTGluZU51bWJlcik7
CiAjZW5kaWYKIAotICAgIHJldHVybiBleGNlcHRpb24gPyBDb21wbGV0aW9uKFRocm93LCBleGNl
cHRpb24pIDogQ29tcGxldGlvbihOb3JtYWwsIHJlc3VsdCk7CisgICAgaWYgKGV4Y2VwdGlvbikg
eworICAgICAgICBpZiAoZXhjZXB0aW9uLT5pc09iamVjdCgpICYmIHN0YXRpY19jYXN0PEpTT2Jq
ZWN0Kj4oZXhjZXB0aW9uKS0+aXNXYXRjaGRvZ0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0
dXJuIENvbXBsZXRpb24oSW50ZXJydXB0ZWQsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBDb21w
bGV0aW9uKFRocm93LCBleGNlcHRpb24pOworICAgIH0KKyAgICByZXR1cm4gQ29tcGxldGlvbihO
b3JtYWwsIHJlc3VsdCk7CiB9CiAKIHN0YXRpYyBib29sIHByaW50RXhjZXB0aW9ucyA9IGZhbHNl
OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcCBiL0phdmFTY3JpcHRD
b3JlL2tqcy9ub2Rlcy5jcHAKaW5kZXggMmE5YjVjZi4uN2EwMWYyNyAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMu
Y3BwCkBAIC00OTAzLDcgKzQ5MDMsNyBAQCBSZWdpc3RlcklEKiBEb1doaWxlTm9kZTo6ZW1pdENv
ZGUoQ29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgCiAgICAg
Z2VuZXJhdG9yLmVtaXRMYWJlbChjb250aW51ZVRhcmdldC5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJ
RCogY29uZCA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIuZ2V0KCkpOwotICAgIGdlbmVyYXRv
ci5lbWl0SnVtcElmVHJ1ZShjb25kLCB0b3BPZkxvb3AuZ2V0KCkpOworICAgIGdlbmVyYXRvci5l
bWl0TG9vcElmVHJ1ZShjb25kLCB0b3BPZkxvb3AuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwoYnJlYWtUYXJnZXQuZ2V0KCkpOwogICAgIHJldHVybiByZXN1bHQuZ2V0KCk7CiB9CkBA
IC00OTY1LDcgKzQ5NjUsNyBAQCBSZWdpc3RlcklEKiBXaGlsZU5vZGU6OmVtaXRDb2RlKENvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbChjb250aW51ZVRhcmdldC5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCogY29uZCA9IGdl
bmVyYXRvci5lbWl0Tm9kZShtX2V4cHIuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0SnVtcElm
VHJ1ZShjb25kLCB0b3BPZkxvb3AuZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0TG9vcElmVHJ1
ZShjb25kLCB0b3BPZkxvb3AuZ2V0KCkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChicmVh
a1RhcmdldC5nZXQoKSk7CiAgICAgCkBAIC01MDMzLDcgKzUwMzMsNyBAQCBSZWdpc3RlcklEKiBG
b3JOb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoYmVmb3JlQ29uZGl0aW9uLmdldCgpKTsKICAg
ICBSZWdpc3RlcklEKiBjb25kID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjIuZ2V0KCkpOwot
ICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShjb25kLCB0b3BPZkxvb3AuZ2V0KCkpOworICAg
IGdlbmVyYXRvci5lbWl0TG9vcElmVHJ1ZShjb25kLCB0b3BPZkxvb3AuZ2V0KCkpOwogICAgIGdl
bmVyYXRvci5lbWl0TGFiZWwoYnJlYWtUYXJnZXQuZ2V0KCkpOwogICAgIHJldHVybiByZXN1bHQu
Z2V0KCk7CiB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvb2JqZWN0LmggYi9KYXZh
U2NyaXB0Q29yZS9ranMvb2JqZWN0LmgKaW5kZXggZDNkNThlMC4uMjZlZmJmMSAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9v
YmplY3QuaApAQCAtNDMxLDYgKzQzMSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZpcnR1YWwg
Ym9vbCBpc0dsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzVmFyaWFibGVPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgICAg
dmlydHVhbCBib29sIGlzV2F0Y2hkb2dFeGNlcHRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICBwcm90ZWN0ZWQ6CiAgICAgUHJvcGVydHlNYXAgX3Byb3A7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21979</attachid>
            <date>2008-06-27 20:31:44 -0700</date>
            <delta_ts>2008-06-27 21:03:09 -0700</delta_ts>
            <desc>Final (hopefully) patch</desc>
            <filename>slow-script.diff</filename>
            <type>text/plain</type>
            <size>28184</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA1ODM3N2M3Li41ZDZjMmE2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTgg
QEAKKzIwMDgtMDYtMjcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMTg2MjY6IFNRVUlS
UkVMRklTSDogc3VwcG9ydCB0aGUgInNsb3cgc2NyaXB0IiBkaWFsb2cgPGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODYyNj4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU5NzM5MzE+IFNsb3cgc2NyaXB0IGRpYWxvZyBuZWVkcyB0byBiZSByZWltcGxlbWVudGVkIGZv
ciBzcXVpcnJlbGZpc2gKKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIHRoZSBzbG93IHNjcmlw
dCBkaWFsb2cgaW4gc3F1aXJyZWxmaXNoLiAgVGhpcyByZXF1aXJlcyB0aGUgYWRkaXRpb24KKyAg
ICAgICAgb2YgdGhyZWUgbmV3IG9wIGNvZGVzLCBvcF9sb29wLCBvcF9sb29wX2lmX3RydWUsIGFu
ZCBvcF9sb29wX2lmX2xlc3Mgd2hpY2ggaGF2ZSB0aGUKKyAgICAgICAgc2FtZSBiZWhhdmlvdXIg
YXMgdGhlaXIgc2ltcGxlIGp1bXAgZXF1aXZhbGVudHMgYnV0IGhhdmUgYW4gYWRkaXRpb25hbCB0
aW1lIG91dCBjaGVjay4KKworICAgICAgICBBZGRpdGlvbmFsIGFzc2VydGlvbnMgd2VyZSBhZGRl
ZCB0byBvdGhlciBqdW1wIGluc3RydWN0aW9ucyB0byBwcmV2ZW50IGFjY2lkZW50YWxseQorICAg
ICAgICBjcmVhdGluZyBsb29wcyB3aXRoIGp1bXAgdHlwZXMgdGhhdCBkbyBub3Qgc3VwcG9ydCB0
aW1lIG91dCBjaGVja3MuCisKKyAgICAgICAgU3Vuc3BpZGVyIGRvZXMgbm90IHJlcG9ydCBhIHJl
Z3Jlc3Npb24sIGhvd2V2ZXIgdGhpcyBhcHBlYXJzIHZlcnkgc2Vuc2l0aXZlIHRvIGNvZGUKKyAg
ICAgICAgbGF5b3V0IGFuZCBoYXJkd2FyZSwgc28gaSB3b3VsZCBleHBlY3QgdXAgdG8gYSAxJSBy
ZWdyZXNzaW9uIG9uIG90aGVyIHN5c3RlbXMuCisKKyAgICAgICAgUGFydCBvZiB0aGlzIHJlcXVp
cmVkIG1vdmluZyB0aGUgb2xkIHRpbWVvdXQgbG9naWMgZnJvbSBKU0dsb2JhbE9iamVjdCBhbmQg
aW50byBNYWNoaW5lCisgICAgICAgIHdoaWNoIGlzIHRoZSBjYXVzZSBvZiBhIG51bWJlciBvZiB0
aGUgbGFyZ2VyIGRpZmYgYmxvY2tzLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgor
ICAgICAgICAqIFZNL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChLSlM6OkNvZGVCbG9jazo6ZHVt
cCk6CisgICAgICAgICogVk0vQ29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChLSlM6OkNvZGVH
ZW5lcmF0b3I6OmVtaXRKdW1wSWZUcnVlKToKKyAgICAgICAgKEtKUzo6Q29kZUdlbmVyYXRvcjo6
ZW1pdEp1bXBTY29wZXMpOgorICAgICAgICAqIFZNL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAg
ICAgICAoS0pTOjpJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yOjppc1dhdGNoZG9nRXhjZXB0aW9u
KToKKyAgICAgICAgKEtKUzo6Y3JlYXRlSW50ZXJydXB0ZWRFeGVjdXRpb25FeGNlcHRpb24pOgor
ICAgICAgICAqIFZNL0V4Y2VwdGlvbkhlbHBlcnMuaDoKKyAgICAgICAgKiBWTS9MYWJlbElELmg6
CisgICAgICAgICogVk0vTWFjaGluZS5jcHA6CisgICAgICAgIChLSlM6Ok1hY2hpbmU6Ok1hY2hp
bmUpOgorICAgICAgICAoS0pTOjpNYWNoaW5lOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIChL
SlM6Ok1hY2hpbmU6OnJlc2V0VGltZW91dENoZWNrKToKKyAgICAgICAgKEtKUzo6Z2V0Q3VycmVu
dFRpbWUpOgorICAgICAgICAoS0pTOjpNYWNoaW5lOjpjaGVja1RpbWVvdXQpOgorICAgICAgICAo
S0pTOjpNYWNoaW5lOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogVk0vTWFjaGluZS5oOgor
ICAgICAgICAoS0pTOjpNYWNoaW5lOjpzZXRUaW1lb3V0VGltZSk6CisgICAgICAgIChLSlM6Ok1h
Y2hpbmU6OnN0YXJ0VGltZW91dENoZWNrKToKKyAgICAgICAgKEtKUzo6TWFjaGluZTo6c3RvcFRp
bWVvdXRDaGVjayk6CisgICAgICAgIChLSlM6Ok1hY2hpbmU6OmluaXRUaW1lb3V0KToKKyAgICAg
ICAgKiBWTS9PcGNvZGUuY3BwOgorICAgICAgICAoS0pTOjopOgorICAgICAgICAqIFZNL09wY29k
ZS5oOgorICAgICAgICAqIGtqcy9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChLSlM6OkpT
R2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEtKUzo6SlNHbG9iYWxPYmplY3Q6OnNldFRp
bWVvdXRUaW1lKToKKyAgICAgICAgKEtKUzo6SlNHbG9iYWxPYmplY3Q6OnN0YXJ0VGltZW91dENo
ZWNrKToKKyAgICAgICAgKiBranMvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBranMvSlNP
YmplY3QuaDoKKyAgICAgICAgKiBranMvaW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoS0pTOjpJ
bnRlcnByZXRlcjo6ZXZhbHVhdGUpOgorCiAyMDA4LTA2LTI3ICBKYW4gTWljaGFlbCBBbG9uem8g
IDxqbWFsb256b0B3ZWJraXQub3JnPgogCiAgICAgICAgIEd0ayBhbmQgUXQgYnVpbGQgZml4OiBS
ZW1vdmUgUmVnaXN0ZXJGaWxlU3RhY2sgZnJvbSB0aGUgYnVpbGQKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmV4cAppbmRleCBmYjBkZWE3Li42YTBmY2M3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZXhwCkBAIC0xMTUsNiArMTE1LDcgQEAgX19aTjNLSlMxM2pzT3duZWRTdHJpbmdFUE5TXzlFeGVj
U3RhdGVFUktOU183VVN0cmluZ0UKIF9fWk4zS0pTMTRKU0dsb2JhbE9iamVjdDEwZ2xvYmFsRXhl
Y0V2CiBfX1pOM0tKUzE0SlNHbG9iYWxPYmplY3QxMmRlZmluZUdldHRlckVQTlNfOUV4ZWNTdGF0
ZUVSS05TXzEwSWRlbnRpZmllckVQTlNfOEpTT2JqZWN0RQogX19aTjNLSlMxNEpTR2xvYmFsT2Jq
ZWN0MTJkZWZpbmVTZXR0ZXJFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFUE5TXzhK
U09iamVjdEUKK19fWk4zS0pTMTRKU0dsb2JhbE9iamVjdDE0c2V0VGltZW91dFRpbWVFagogX19a
TjNLSlMxNEpTR2xvYmFsT2JqZWN0MTZzdG9wVGltZW91dENoZWNrRXYKIF9fWk4zS0pTMTRKU0ds
b2JhbE9iamVjdDE3cHV0V2l0aEF0dHJpYnV0ZXNFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50
aWZpZXJFUE5TXzdKU1ZhbHVlRWoKIF9fWk4zS0pTMTRKU0dsb2JhbE9iamVjdDE3c3RhcnRUaW1l
b3V0Q2hlY2tFdgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUJsb2NrLmNwcCBi
L0phdmFTY3JpcHRDb3JlL1ZNL0NvZGVCbG9jay5jcHAKaW5kZXggZTYxZWU5YS4uYjlkZTE5NSAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUJsb2NrLmNwcAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9WTS9Db2RlQmxvY2suY3BwCkBAIC00NjIsMTAgKzQ2MiwxOSBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNv
bnN0X2l0ZXJhdG9yJgogICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBqbXBcdFx0ICVkKC0+JWQp
XG4iLCBsb2NhdGlvbiwgb2Zmc2V0LCBqdW1wVGFyZ2V0KGJlZ2luLCBpdCwgb2Zmc2V0KSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2xvb3A6IHsKKyAg
ICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50ZigiWyU0ZF0gbG9vcFx0XHQgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCBvZmZzZXQsIGp1bXBU
YXJnZXQoYmVnaW4sIGl0LCBvZmZzZXQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfanRydWU6IHsKICAgICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxK
dW1wKGJlZ2luLCBpdCwgbG9jYXRpb24sICJqdHJ1ZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9sb29wX2lmX3RydWU6IHsKKyAgICAgICAgICAgIHBy
aW50Q29uZGl0aW9uYWxKdW1wKGJlZ2luLCBpdCwgbG9jYXRpb24sICJsb29wX2lmX3RydWUiKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfamZhbHNlOiB7
CiAgICAgICAgICAgICBwcmludENvbmRpdGlvbmFsSnVtcChiZWdpbiwgaXQsIGxvY2F0aW9uLCAi
amZhbHNlIik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ3Nyw2ICs0ODYsMTMgQEAgdm9pZCBD
b2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb24+
Ojpjb25zdF9pdGVyYXRvciYKICAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gamxlc3NcdFx0ICVz
LCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUocjApLmNfc3RyKCksIHJl
Z2lzdGVyTmFtZShyMSkuY19zdHIoKSwgb2Zmc2V0LCBqdW1wVGFyZ2V0KGJlZ2luLCBpdCwgb2Zm
c2V0KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2xv
b3BfaWZfbGVzczogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBv
ZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gbG9v
cF9pZl9sZXNzICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUocjAp
LmNfc3RyKCksIHJlZ2lzdGVyTmFtZShyMSkuY19zdHIoKSwgb2Zmc2V0LCBqdW1wVGFyZ2V0KGJl
Z2luLCBpdCwgb2Zmc2V0KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX25ld19mdW5jOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvVk0vQ29kZUdlbmVyYXRvci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9W
TS9Db2RlR2VuZXJhdG9yLmNwcAppbmRleCA2NWMzZDU5Li5iOGY0NTI3IDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9WTS9Db2RlR2VuZXJhdG9yLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9W
TS9Db2RlR2VuZXJhdG9yLmNwcApAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgQ29kZUdlbmVyYXRv
cjo6cmV3aW5kQmluYXJ5T3AoKQogCiBQYXNzUmVmUHRyPExhYmVsSUQ+IENvZGVHZW5lcmF0b3I6
OmVtaXRKdW1wKExhYmVsSUQqIHRhcmdldCkKIHsKLSAgICBlbWl0T3Bjb2RlKG9wX2ptcCk7Cisg
ICAgZW1pdE9wY29kZSh0YXJnZXQtPmlzRm9yd2FyZExhYmVsKCkgPyBvcF9qbXAgOiBvcF9sb29w
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGFyZ2V0LT5vZmZzZXRGcm9tKGluc3RydWN0
aW9ucygpLnNpemUoKSkpOwogICAgIHJldHVybiB0YXJnZXQ7CiB9CkBAIC00NTMsNyArNDUzLDcg
QEAgUGFzc1JlZlB0cjxMYWJlbElEPiBDb2RlR2VuZXJhdG9yOjplbWl0SnVtcElmVHJ1ZShSZWdp
c3RlcklEKiBjb25kLCBMYWJlbElEKiB0YXIKICAgICAgICAgCiAgICAgICAgIGlmIChjb25kLT5p
bmRleCgpID09IGRzdEluZGV4ICYmICFjb25kLT5yZWZDb3VudCgpKSB7CiAgICAgICAgICAgICBy
ZXdpbmRCaW5hcnlPcCgpOwotICAgICAgICAgICAgZW1pdE9wY29kZShvcF9qbGVzcyk7CisgICAg
ICAgICAgICBlbWl0T3Bjb2RlKHRhcmdldC0+aXNGb3J3YXJkTGFiZWwoKSA/IG9wX2psZXNzIDog
b3BfbG9vcF9pZl9sZXNzKTsKICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzcmMx
SW5kZXgpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNyYzJJbmRleCk7CiAg
ICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGFyZ2V0LT5vZmZzZXRGcm9tKGluc3Ry
dWN0aW9ucygpLnNpemUoKSkpOwpAQCAtNDYxLDcgKzQ2MSw3IEBAIFBhc3NSZWZQdHI8TGFiZWxJ
RD4gQ29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBJZlRydWUoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWxJ
RCogdGFyCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgZW1pdE9wY29kZShvcF9qdHJ1ZSk7
CisgICAgZW1pdE9wY29kZSh0YXJnZXQtPmlzRm9yd2FyZExhYmVsKCkgPyBvcF9qdHJ1ZSA6IG9w
X2xvb3BfaWZfdHJ1ZSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNvbmQtPmluZGV4KCkp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0YXJnZXQtPm9mZnNldEZyb20oaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpKSk7CiAgICAgcmV0dXJuIHRhcmdldDsKQEAgLTQ2OSw2ICs0NjksNyBAQCBQ
YXNzUmVmUHRyPExhYmVsSUQ+IENvZGVHZW5lcmF0b3I6OmVtaXRKdW1wSWZUcnVlKFJlZ2lzdGVy
SUQqIGNvbmQsIExhYmVsSUQqIHRhcgogCiBQYXNzUmVmUHRyPExhYmVsSUQ+IENvZGVHZW5lcmF0
b3I6OmVtaXRKdW1wSWZGYWxzZShSZWdpc3RlcklEKiBjb25kLCBMYWJlbElEKiB0YXJnZXQpCiB7
CisgICAgQVNTRVJUKHRhcmdldC0+aXNGb3J3YXJkTGFiZWwoKSk7CiAgICAgZW1pdE9wY29kZShv
cF9qZmFsc2UpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjb25kLT5pbmRleCgpKTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGFyZ2V0LT5vZmZzZXRGcm9tKGluc3RydWN0aW9ucygp
LnNpemUoKSkpOwpAQCAtMTA0Myw2ICsxMDQ0LDcgQEAgUGFzc1JlZlB0cjxMYWJlbElEPiBDb2Rl
R2VuZXJhdG9yOjplbWl0Q29tcGxleEp1bXBTY29wZXMoTGFiZWxJRCogdGFyZ2V0LCBDb250cm8K
IFBhc3NSZWZQdHI8TGFiZWxJRD4gQ29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBTY29wZXMoTGFiZWxJ
RCogdGFyZ2V0LCBpbnQgdGFyZ2V0U2NvcGVEZXB0aCkKIHsKICAgICBBU1NFUlQoc2NvcGVEZXB0
aCgpIC0gdGFyZ2V0U2NvcGVEZXB0aCA+PSAwKTsKKyAgICBBU1NFUlQodGFyZ2V0LT5pc0Zvcndh
cmRMYWJlbCgpKTsKIAogICAgIHNpemVfdCBzY29wZURlbHRhID0gc2NvcGVEZXB0aCgpIC0gdGFy
Z2V0U2NvcGVEZXB0aDsKICAgICBBU1NFUlQoc2NvcGVEZWx0YSA8PSBtX3Njb3BlQ29udGV4dFN0
YWNrLnNpemUoKSk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9WTS9FeGNlcHRpb25IZWxw
ZXJzLmNwcCBiL0phdmFTY3JpcHRDb3JlL1ZNL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IGY2
NGZiOWUuLjgxZDk3ZDkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL1ZNL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL1ZNL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBA
IC00NSw2ICs0NSwxNiBAQCBzdGF0aWMgdm9pZCBzdWJzdGl0dXRlKFVTdHJpbmcmIHN0cmluZywg
Y29uc3QgVVN0cmluZyYgc3Vic3RyaW5nKQogICAgIHN0cmluZyA9IG5ld1N0cmluZzsKIH0KIAor
Y2xhc3MgSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvciA6IHB1YmxpYyBKU09iamVjdCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCBib29sIGlzV2F0Y2hkb2dFeGNlcHRpb24oKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9Cit9OworCitKU1ZhbHVlKiBjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2Vw
dGlvbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIG5ldyAoZXhlYykgSW50ZXJydXB0
ZWRFeGVjdXRpb25FcnJvcjsKK30KKwogSlNWYWx1ZSogY3JlYXRlRXJyb3IoRXhlY1N0YXRlKiBl
eGVjLCBFcnJvclR5cGUgZSwgY29uc3QgY2hhciogbXNnKQogewogICAgIHJldHVybiBFcnJvcjo6
Y3JlYXRlKGV4ZWMsIGUsIG1zZywgLTEsIC0xLCAwKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL1ZNL0V4Y2VwdGlvbkhlbHBlcnMuaCBiL0phdmFTY3JpcHRDb3JlL1ZNL0V4Y2VwdGlvbkhl
bHBlcnMuaAppbmRleCA1ZGNiYzkyLi45OTg0NmEzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9WTS9FeGNlcHRpb25IZWxwZXJzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvVk0vRXhjZXB0aW9u
SGVscGVycy5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBLSlMgewogCiAgICAgY2xhc3Mg
Tm9kZTsKIAorICAgIEpTVmFsdWUqIGNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgSlNWYWx1ZSogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9y
KEV4ZWNTdGF0ZSopOwogICAgIEpTVmFsdWUqIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3Io
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgIEpTVmFsdWUqIGNyZWF0ZUludmFs
aWRQYXJhbUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIG9wLCBKU1ZhbHVlKik7CmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9WTS9MYWJlbElELmggYi9KYXZhU2NyaXB0Q29yZS9WTS9M
YWJlbElELmgKaW5kZXggNmVkYjVlMi4uNTc1ZDQ4YyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvVk0vTGFiZWxJRC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL1ZNL0xhYmVsSUQuaApAQCAtOTgs
NiArOTgsOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgICAgIHJldHVybiBtX3JlZkNvdW50
OwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBpc0ZvcndhcmRMYWJlbCgpIGNvbnN0IHsgcmV0
dXJuIG1fbG9jYXRpb24gPT0gaW52YWxpZExvY2F0aW9uOyB9CisKICAgICBwcml2YXRlOgogICAg
ICAgICB0eXBlZGVmIFZlY3RvcjxpbnQsIDg+IEp1bXBWZWN0b3I7CiAKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwIGIvSmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5j
cHAKaW5kZXggMjMwMWU4Zi4uM2E0MjBlMyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvVk0v
TWFjaGluZS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5jcHAKQEAgLTQ5LDEw
ICs0OSwyOCBAQAogI2luY2x1ZGUgIm9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJSZWdFeHBPYmpl
Y3QuaCIKIAorI2lmIEhBVkUoU1lTX1RJTUVfSCkKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShXSU5fT1MpCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2VuZGlm
CisKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxRRGF0ZVRpbWU+CisjZW5kaWYKKwogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIEtKUyB7CiAKKy8vIERlZmF1bHQgbnVtYmVy
IG9mIHRpY2tzIGJlZm9yZSBhIHRpbWVvdXQgY2hlY2sgc2hvdWxkIGJlIGRvbmUuCitzdGF0aWMg
Y29uc3QgaW50IGluaXRpYWxUaWNrQ291bnRUaHJlc2hvbGQgPSAyNTU7CisKKy8vIFByZWZlcnJl
ZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gZWFjaCB0aW1lb3V0IGNoZWNrCitzdGF0
aWMgY29uc3QgaW50IHByZWZlcnJlZFNjcmlwdENoZWNrVGltZUludGVydmFsID0gMTAwMDsKKwog
I2lmIEhBVkUoQ09NUFVURURfR09UTykKIHN0YXRpYyB2b2lkKiBvcF90aHJvd19lbmRfaW5kaXJl
Y3Q7CiBzdGF0aWMgdm9pZCogb3BfY2FsbF9pbmRpcmVjdDsKQEAgLTQ1Miw2ICs0NzAsMTEgQEAg
TkVWRVJfSU5MSU5FIEpTVmFsdWUqIGNhbGxFdmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHRoaXNPYmosIFNjb3BlQ2hhaW5Ob2QKIAogTWFjaGluZTo6TWFjaGluZSgpCiAgICAgOiBtX3Jl
ZW50cnlEZXB0aCgwKQorICAgICwgbV90aW1lb3V0VGltZSgwKQorICAgICwgbV90aW1lQXRMYXN0
Q2hlY2tUaW1lb3V0KDApCisgICAgLCBtX3RpbWVFeGVjdXRpbmcoMCkKKyAgICAsIG1fdGltZW91
dENoZWNrQ291bnQoMCkKKyAgICAsIG1fdGlja3NVbnRpbE5leHRUaW1lb3V0Q2hlY2soaW5pdGlh
bFRpY2tDb3VudFRocmVzaG9sZCkKIHsKICAgICBwcml2YXRlRXhlY3V0ZShJbml0aWFsaXplQW5k
UmV0dXJuKTsKIH0KQEAgLTU5MSw2ICs2MTQsMTMgQEAgTkVWRVJfSU5MSU5FIEluc3RydWN0aW9u
KiBNYWNoaW5lOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIGV4Y2UK
ICAgICAgICAgICAgIGV4Y2VwdGlvbi0+cHV0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImxpbmUi
KSwganNOdW1iZXIoZXhlYywgY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yVlBDKHZQQykpKTsKICAg
ICAgICAgICAgIGV4Y2VwdGlvbi0+cHV0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgInNvdXJjZVVS
TCIpLCBqc093bmVkU3RyaW5nKGV4ZWMsIGNvZGVCbG9jay0+b3duZXJOb2RlLT5zb3VyY2VVUkwo
KSkpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKGV4Y2VwdGlvbi0+aXNXYXRjaGRvZ0V4Y2Vw
dGlvbigpKSB7CisgICAgICAgICAgICB3aGlsZSAodW53aW5kQ2FsbEZyYW1lKGV4ZWMsIGV4Y2Vw
dGlvblZhbHVlLCByZWdpc3RlckJhc2UsIHZQQywgY29kZUJsb2NrLCBrLCBzY29wZUNoYWluLCBy
KSkgeworICAgICAgICAgICAgICAgICAvLyBEb24ndCBuZWVkIGhhbmRsZXIgY2hlY2tzIG9yIGFu
eXRoaW5nLCB3ZSBqdXN0IHdhbnQgdG8gdW5yb2xsIGFsbCB0aGUgSlMgY2FsbGZyYW1lcyBwb3Nz
aWJsZS4KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgaWYgKERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGV4ZWMtPmR5bmFtaWNHbG9iYWxP
YmplY3QoKS0+ZGVidWdnZXIoKSkgewpAQCAtODQ3LDYgKzg3Nyw3MiBAQCBORVZFUl9JTkxJTkUg
dm9pZCBNYWNoaW5lOjpkZWJ1ZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RydWN0aW9uKiB2
UEMsIGNvbnN0CiAgICAgfQogfQogCit2b2lkIE1hY2hpbmU6OnJlc2V0VGltZW91dENoZWNrKCkK
K3sKKyAgICBtX3RpY2tzVW50aWxOZXh0VGltZW91dENoZWNrID0gaW5pdGlhbFRpY2tDb3VudFRo
cmVzaG9sZDsKKyAgICBtX3RpbWVBdExhc3RDaGVja1RpbWVvdXQgPSAwOworICAgIG1fdGltZUV4
ZWN1dGluZyA9IDA7Cit9CisKKy8vIFJldHVybnMgdGhlIGN1cnJlbnQgdGltZSBpbiBtaWxsaXNl
Y29uZHMKKy8vIEl0IGRvZXNuJ3QgbWF0dGVyIHdoYXQgImN1cnJlbnQgdGltZSIgaXMgaGVyZSwg
anVzdCBhcyBsb25nIGFzCisvLyBpdCdzIHBvc3NpYmxlIHRvIG1lYXN1cmUgdGhlIHRpbWUgZGlm
ZmVyZW5jZSBjb3JyZWN0bHkuCisvLyBJbiBhbiBpZGVhbCB3b3JsZCB0aGlzIHdvdWxkIGJlIGlu
IERhdGVNYXRoIG9yIHNvbWUgc3VjaCwgYnV0IHVuZm9ydHVuYXRlbHkKKy8vIHRoYXQncyBhIHJl
Z3Jlc3Npb24uCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGdldEN1cnJlbnRUaW1lKCkKK3sKKyNp
ZiBIQVZFKFNZU19USU1FX0gpCisgICAgc3RydWN0IHRpbWV2YWwgdHY7CisgICAgZ2V0dGltZW9m
ZGF5KCZ0diwgMCk7CisgICAgcmV0dXJuIHR2LnR2X3NlYyAqIDEwMDAgKyB0di50dl91c2VjIC8g
MTAwMDsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIFFEYXRlVGltZSB0ID0gUURhdGVUaW1lOjpj
dXJyZW50RGF0ZVRpbWUoKTsKKyAgICByZXR1cm4gdC50b1RpbWVfdCgpICogMTAwMCArIHQudGlt
ZSgpLm1zZWMoKTsKKyNlbGlmIFBMQVRGT1JNKFdJTl9PUykKKyAgICByZXR1cm4gdGltZUdldFRp
bWUoKTsKKyNlbHNlCisjZXJyb3IgUGxhdGZvcm0gZG9lcyBub3QgaGF2ZSBnZXRDdXJyZW50VGlt
ZSBmdW5jdGlvbgorI2VuZGlmCit9CisKKy8vIFdlIGhhdmUgdG8gcmV0dXJuIGEgSlNWYWx1ZSBo
ZXJlLCBnY2Mgc2VlbXMgdG8gcHJvZHVjZSB3b3JzZSBjb2RlIGlmIAorLy8gd2UgYXR0ZW1wdCB0
byByZXR1cm4gYSBib29sCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIE1hY2hpbmU6OmNoZWNrVGlt
ZW91dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHVuc2lnbmVkIGN1cnJl
bnRUaW1lID0gZ2V0Q3VycmVudFRpbWUoKTsKKyAgICAKKyAgICBpZiAoIW1fdGltZUF0TGFzdENo
ZWNrVGltZW91dCkgeworICAgICAgICAvLyBTdXNwaWNpb3VzIGFtb3VudCBvZiBsb29waW5nIGlu
IGEgc2NyaXB0IC0tIHN0YXJ0IHRpbWluZyBpdAorICAgICAgICBtX3RpbWVBdExhc3RDaGVja1Rp
bWVvdXQgPSBjdXJyZW50VGltZTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAorICAg
IHVuc2lnbmVkIHRpbWVEaWZmID0gY3VycmVudFRpbWUgLSBtX3RpbWVBdExhc3RDaGVja1RpbWVv
dXQ7CisgICAgCisgICAgaWYgKHRpbWVEaWZmID09IDApCisgICAgICAgIHRpbWVEaWZmID0gMTsK
KyAgICAKKyAgICBtX3RpbWVFeGVjdXRpbmcgKz0gdGltZURpZmY7CisgICAgbV90aW1lQXRMYXN0
Q2hlY2tUaW1lb3V0ID0gY3VycmVudFRpbWU7CisgICAgCisgICAgLy8gQWRqdXN0IHRoZSB0aWNr
IHRocmVzaG9sZCBzbyB3ZSBnZXQgdGhlIG5leHQgY2hlY2tUaW1lb3V0IGNhbGwgaW4gdGhlIGlu
dGVydmFsIHNwZWNpZmllZCBpbiAKKyAgICAvLyBwcmVmZXJyZWRTY3JpcHRDaGVja1RpbWVJbnRl
cnZhbAorICAgIG1fdGlja3NVbnRpbE5leHRUaW1lb3V0Q2hlY2sgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oKHN0YXRpY19jYXN0PGZsb2F0PihwcmVmZXJyZWRTY3JpcHRDaGVja1RpbWVJbnRlcnZh
bCkgLyB0aW1lRGlmZikgKiBtX3RpY2tzVW50aWxOZXh0VGltZW91dENoZWNrKTsKKyAgICAvLyBJ
ZiB0aGUgbmV3IHRocmVzaG9sZCBpcyAwIHJlc2V0IGl0IHRvIHRoZSBkZWZhdWx0IHRocmVzaG9s
ZC4gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSB0aW1lRGlmZiBpcyBoaWdoZXIgdGhhbiB0aGUKKyAg
ICAvLyBwcmVmZXJyZWQgc2NyaXB0IGNoZWNrIHRpbWUgaW50ZXJ2YWwuCisgICAgaWYgKG1fdGlj
a3NVbnRpbE5leHRUaW1lb3V0Q2hlY2sgPT0gMCkKKyAgICAgICAgbV90aWNrc1VudGlsTmV4dFRp
bWVvdXRDaGVjayA9IGluaXRpYWxUaWNrQ291bnRUaHJlc2hvbGQ7CisgICAgCisgICAgaWYgKG1f
dGltZW91dFRpbWUgJiYgbV90aW1lRXhlY3V0aW5nID4gbV90aW1lb3V0VGltZSkgeworICAgICAg
ICBpZiAoZ2xvYmFsT2JqZWN0LT5zaG91bGRJbnRlcnJ1cHRTY3JpcHQoKSkKKyAgICAgICAgICAg
IHJldHVybiBqc051bGwoKTsgLy8gQXBwZWFzaW5nIEdDQywgYWxsIHdlIG5lZWQgaXMgYSBub24t
bnVsbCBqcyB2YWx1ZS4KKyAgICAgICAgCisgICAgICAgIHJlc2V0VGltZW91dENoZWNrKCk7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiAwOworfQorICAgIAogSlNWYWx1ZSogTWFjaGluZTo6cHJp
dmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVy
RmlsZSogcmVnaXN0ZXJGaWxlLCBSZWdpc3RlciogciwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hh
aW4sIENvZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlKiogZXhjZXB0aW9uKQogewogICAgIC8v
IE9uZS10aW1lIGluaXRpYWxpemF0aW9uIG9mIG91ciBhZGRyZXNzIHRhYmxlcy4gV2UgaGF2ZSB0
byBwdXQgdGhpcyBjb2RlCkBAIC04NzQsNyArOTcwLDggQEAgSlNWYWx1ZSogTWFjaGluZTo6cHJp
dmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVy
RmkKICAgICBJbnN0cnVjdGlvbiogdlBDID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMuYmVnaW4o
KTsKICAgICBKU1ZhbHVlKiogayA9IGNvZGVCbG9jay0+anNWYWx1ZXMuZGF0YSgpOwogICAgIFBy
b2ZpbGVyKiogZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlID0gUHJvZmlsZXI6OmVuYWJsZWRQcm9m
aWxlclJlZmVyZW5jZSgpOwotICAgIAorICAgIHVuc2lnbmVkIHRpY2tDb3VudCA9IG1fdGlja3NV
bnRpbE5leHRUaW1lb3V0Q2hlY2sgKyAxOworCiAjZGVmaW5lIFZNX0NIRUNLX0VYQ0VQVElPTigp
IFwKICAgICAgZG8geyBcCiAgICAgICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24o
KSkpIHsgXApAQCAtODg3LDYgKzk4NCwxMyBAQCBKU1ZhbHVlKiBNYWNoaW5lOjpwcml2YXRlRXhl
Y3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaQogICAg
IE9wY29kZVN0YXRzOjpyZXNldExhc3RJbnN0cnVjdGlvbigpOwogI2VuZGlmCiAKKyNkZWZpbmUg
Q0hFQ0tfRk9SX1RJTUVPVVQoKSBcCisgICAgaWYgKCEtLXRpY2tDb3VudCkgeyBcCisgICAgICAg
IGlmICgoZXhjZXB0aW9uVmFsdWUgPSBjaGVja1RpbWVvdXQoZXhlYy0+ZHluYW1pY0dsb2JhbE9i
amVjdCgpKSkpIFwKKyAgICAgICAgICAgIGdvdG8gdm1fdGhyb3c7IFwKKyAgICAgICAgdGlja0Nv
dW50ID0gbV90aWNrc1VudGlsTmV4dFRpbWVvdXRDaGVjazsgXAorICAgIH0KKyAgICAKICNpZiBI
QVZFKENPTVBVVEVEX0dPVE8pCiAgICAgI2RlZmluZSBORVhUX09QQ09ERSBnb3RvICp2UEMtPnUu
b3Bjb2RlCiAjaWYgRFVNUF9PUENPREVfU1RBVFMKQEAgLTE4NDMsNiArMTk0NywyMyBAQCBKU1Zh
bHVlKiBNYWNoaW5lOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIEV4ZWNTdGF0
ZSogZXhlYywgUmVnaXN0ZXJGaQogICAgICAgICArK3ZQQzsKICAgICAgICAgTkVYVF9PUENPREU7
CiAgICAgfQorICAgIEJFR0lOX09QQ09ERShvcF9sb29wKSB7CisgICAgICAgIC8qIGxvb3AgdGFy
Z2V0KG9mZnNldCkKKyAgICAgICAgIAorICAgICAgICAgICBKdW1wcyB1bmNvbmRpdGlvbmFsbHkg
dG8gb2Zmc2V0IHRhcmdldCBmcm9tIHRoZSBjdXJyZW50CisgICAgICAgICAgIGluc3RydWN0aW9u
LgorCisgICAgICAgICAgIEFkZGl0aW9uYWxseSB0aGlzIGxvb3AgaW5zdHJ1Y3Rpb24gbWF5IHRl
cm1pbmF0ZSBKUyBleGVjdXRpb24gaXMKKyAgICAgICAgICAgdGhlIEpTIHRpbWVvdXQgaXMgcmVh
Y2hlZC4KKyAgICAgICAgICovCisjaWYgRFVNUF9PUENPREVfU1RBVFMKKyAgICAgICAgT3Bjb2Rl
U3RhdHM6OnJlc2V0TGFzdEluc3RydWN0aW9uKCk7CisjZW5kaWYKKyAgICAgICAgaW50IHRhcmdl
dCA9ICgrK3ZQQyktPnUub3BlcmFuZDsKKyAgICAgICAgQ0hFQ0tfRk9SX1RJTUVPVVQoKTsKKyAg
ICAgICAgdlBDICs9IHRhcmdldDsKKyAgICAgICAgTkVYVF9PUENPREU7CisgICAgfQogICAgIEJF
R0lOX09QQ09ERShvcF9qbXApIHsKICAgICAgICAgLyogam1wIHRhcmdldChvZmZzZXQpCiAKQEAg
LTE4NTcsNiArMTk3OCwyNiBAQCBKU1ZhbHVlKiBNYWNoaW5lOjpwcml2YXRlRXhlY3V0ZShFeGVj
dXRpb25GbGFnIGZsYWcsIEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaQogICAgICAgICB2UEMg
Kz0gdGFyZ2V0OwogICAgICAgICBORVhUX09QQ09ERTsKICAgICB9CisgICAgQkVHSU5fT1BDT0RF
KG9wX2xvb3BfaWZfdHJ1ZSkgeworICAgICAgICAvKiBsb29wX2lmX3RydWUgY29uZChyKSB0YXJn
ZXQob2Zmc2V0KQorICAgICAgICAgCisgICAgICAgICAgIEp1bXBzIHRvIG9mZnNldCB0YXJnZXQg
ZnJvbSB0aGUgY3VycmVudCBpbnN0cnVjdGlvbiwgaWYgYW5kCisgICAgICAgICAgIG9ubHkgaWYg
cmVnaXN0ZXIgY29uZCBjb252ZXJ0cyB0byBib29sZWFuIGFzIHRydWUuCisKKyAgICAgICAgICAg
QWRkaXRpb25hbGx5IHRoaXMgbG9vcCBpbnN0cnVjdGlvbiBtYXkgdGVybWluYXRlIEpTIGV4ZWN1
dGlvbiBpcworICAgICAgICAgICB0aGUgSlMgdGltZW91dCBpcyByZWFjaGVkLgorICAgICAgICAg
Ki8KKyAgICAgICAgaW50IGNvbmQgPSAoKyt2UEMpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCB0
YXJnZXQgPSAoKyt2UEMpLT51Lm9wZXJhbmQ7CisgICAgICAgIGlmIChyW2NvbmRdLnUuanNWYWx1
ZS0+dG9Cb29sZWFuKGV4ZWMpKSB7CisgICAgICAgICAgICB2UEMgKz0gdGFyZ2V0OworICAgICAg
ICAgICAgQ0hFQ0tfRk9SX1RJTUVPVVQoKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICArK3ZQQzsKKyAgICAgICAgTkVYVF9PUENPREU7Cisg
ICAgfQogICAgIEJFR0lOX09QQ09ERShvcF9qdHJ1ZSkgewogICAgICAgICAvKiBqdHJ1ZSBjb25k
KHIpIHRhcmdldChvZmZzZXQpCiAKQEAgLTE4ODksNiArMjAzMCwzMyBAQCBKU1ZhbHVlKiBNYWNo
aW5lOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcsIEV4ZWNTdGF0ZSogZXhlYywg
UmVnaXN0ZXJGaQogICAgICAgICArK3ZQQzsKICAgICAgICAgTkVYVF9PUENPREU7CiAgICAgfQor
ICAgIEJFR0lOX09QQ09ERShvcF9sb29wX2lmX2xlc3MpIHsKKyAgICAgICAgLyogbG9vcF9pZl9s
ZXNzIHNyYzEocikgc3JjMihyKSB0YXJnZXQob2Zmc2V0KQorCisgICAgICAgICAgIENoZWNrcyB3
aGV0aGVyIHJlZ2lzdGVyIHNyYzEgaXMgbGVzcyB0aGFuIHJlZ2lzdGVyIHNyYzIsIGFzCisgICAg
ICAgICAgIHdpdGggdGhlIEVDTUFTY3JpcHQgJzwnIG9wZXJhdG9yLCBhbmQgdGhlbiBqdW1wcyB0
byBvZmZzZXQKKyAgICAgICAgICAgdGFyZ2V0IGZyb20gdGhlIGN1cnJlbnQgaW5zdHJ1Y3Rpb24s
IGlmIGFuZCBvbmx5IGlmIHRoZSAKKyAgICAgICAgICAgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29u
IGlzIHRydWUuCisKKyAgICAgICAgICAgQWRkaXRpb25hbGx5IHRoaXMgbG9vcCBpbnN0cnVjdGlv
biBtYXkgdGVybWluYXRlIEpTIGV4ZWN1dGlvbiBpcworICAgICAgICAgICB0aGUgSlMgdGltZW91
dCBpcyByZWFjaGVkLgorICAgICAgICAgKi8KKyAgICAgICAgSlNWYWx1ZSogc3JjMSA9IHJbKCsr
dlBDKS0+dS5vcGVyYW5kXS51LmpzVmFsdWU7CisgICAgICAgIEpTVmFsdWUqIHNyYzIgPSByWygr
K3ZQQyktPnUub3BlcmFuZF0udS5qc1ZhbHVlOworICAgICAgICBpbnQgdGFyZ2V0ID0gKCsrdlBD
KS0+dS5vcGVyYW5kOworICAgICAgICAKKyAgICAgICAgYm9vbCByZXN1bHQgPSBqc0xlc3MoZXhl
Yywgc3JjMSwgc3JjMik7CisgICAgICAgIFZNX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICAK
KyAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgdlBDICs9IHRhcmdldDsKKyAgICAg
ICAgICAgIENIRUNLX0ZPUl9USU1FT1VUKCk7CisgICAgICAgICAgICBORVhUX09QQ09ERTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgKyt2UEM7CisgICAgICAgIE5FWFRfT1BDT0RFOwor
ICAgIH0KICAgICBCRUdJTl9PUENPREUob3Bfamxlc3MpIHsKICAgICAgICAgLyogamxlc3Mgc3Jj
MShyKSBzcmMyKHIpIHRhcmdldChvZmZzZXQpCiAKQEAgLTIyODQsNiArMjQ1Miw3IEBAIEpTVmFs
dWUqIE1hY2hpbmU6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgRXhlY1N0YXRl
KiBleGVjLCBSZWdpc3RlckZpCiAKICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogaXQg
PSByW2l0ZXJdLnUuanNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKICAgICAgICAgaWYgKEpTVmFsdWUq
IHRlbXAgPSBpdC0+bmV4dChleGVjKSkgeworICAgICAgICAgICAgQ0hFQ0tfRk9SX1RJTUVPVVQo
KTsKICAgICAgICAgICAgIHJbZHN0XS51LmpzVmFsdWUgPSB0ZW1wOwogICAgICAgICAgICAgdlBD
ICs9IHRhcmdldDsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFOwpAQCAtMjQ3NSw2ICsyNjQ0LDEx
IEBAIEpTVmFsdWUqIE1hY2hpbmU6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywg
RXhlY1N0YXRlKiBleGVjLCBSZWdpc3RlckZpCiAgICAgfQogICAgIHZtX3Rocm93OiB7CiAgICAg
ICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIGlmICghdGlja0NvdW50KSB7Cisg
ICAgICAgICAgICAvLyBUaGUgZXhjZXB0aW9uVmFsdWUgaXMgYSBsaWUhIChHQ0MgcHJvZHVjZXMg
YmFkIGNvZGUgZm9yIHJlYXNvbnMgSSAKKyAgICAgICAgICAgIC8vIGNhbm5vdCBmYXRob20gaWYg
d2UgZG9uJ3QgYXNzaWduIHRvIHRoZSBleGNlcHRpb25WYWx1ZSBiZWZvcmUgYnJhbmNoaW5nKQor
ICAgICAgICAgICAgZXhjZXB0aW9uVmFsdWUgPSBjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4
Y2VwdGlvbihleGVjKTsKKyAgICAgICAgfQogICAgICAgICBoYW5kbGVyVlBDID0gdGhyb3dFeGNl
cHRpb24oZXhlYywgZXhjZXB0aW9uVmFsdWUsICZyZWdpc3RlckJhc2UsIHZQQywgY29kZUJsb2Nr
LCBrLCBzY29wZUNoYWluLCByKTsKICAgICAgICAgaWYgKCFoYW5kbGVyVlBDKSB7CiAgICAgICAg
ICAgICAqZXhjZXB0aW9uID0gZXhjZXB0aW9uVmFsdWU7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9WTS9NYWNoaW5lLmggYi9KYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmgKaW5kZXggYmEx
OTViOC4uNjRmZjI4YiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuaApAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICBjbGFzcyBGdW5jdGlvbkJvZHlOb2RlOwogICAgIGNsYXNzIEluc3RydWN0
aW9uOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CisgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAg
ICAgY2xhc3MgUHJvZ3JhbU5vZGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgY2xhc3MgUmVn
aXN0ZXJGaWxlOwpAQCAtOTYsNyArOTcsMjcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIEpT
VmFsdWUqIHJldHJpZXZlQ2FsbGVyKEV4ZWNTdGF0ZSosIEpTRnVuY3Rpb24qKSBjb25zdDsKIAog
ICAgICAgICB2b2lkIGdldEZ1bmN0aW9uQW5kQXJndW1lbnRzKFJlZ2lzdGVyKiogcmVnaXN0ZXJC
YXNlLCBSZWdpc3RlciogY2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiYsIFJlZ2lzdGVyKiYgYXJndiwg
aW50JiBhcmdjKTsKKyAgICAgICAgdm9pZCBzZXRUaW1lb3V0VGltZSh1bnNpZ25lZCB0aW1lb3V0
VGltZSkgeyBtX3RpbWVvdXRUaW1lID0gdGltZW91dFRpbWU7IH0KKyAgICAgICAgCisgICAgICAg
IHZvaWQgc3RhcnRUaW1lb3V0Q2hlY2soKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1f
dGltZW91dENoZWNrQ291bnQpCisgICAgICAgICAgICAgICAgcmVzZXRUaW1lb3V0Q2hlY2soKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgKyttX3RpbWVvdXRDaGVja0NvdW50OworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICB2b2lkIHN0b3BUaW1lb3V0Q2hlY2soKQorICAgICAgICB7
CisgICAgICAgICAgICAtLW1fdGltZW91dENoZWNrQ291bnQ7CisgICAgICAgIH0KIAorICAgICAg
ICBpbmxpbmUgdm9pZCBpbml0VGltZW91dCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc2V0
VGltZW91dENoZWNrKCk7CisgICAgICAgICAgICBtX3RpbWVvdXRUaW1lID0gMDsKKyAgICAgICAg
ICAgIG1fdGltZW91dENoZWNrQ291bnQgPSAwOworICAgICAgICB9CiAgICAgICAgIHZvaWQgbWFy
ayhIZWFwKiBoZWFwKSB7IG1fcmVnaXN0ZXJGaWxlLm1hcmsoaGVhcCk7IH0KIAogICAgIHByaXZh
dGU6CkBAIC0xMTgsNyArMTM5LDE2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICB2b2lkIGR1
bXBDYWxsRnJhbWUoY29uc3QgQ29kZUJsb2NrKiwgU2NvcGVDaGFpbk5vZGUqLCBSZWdpc3RlckZp
bGUqLCBjb25zdCBSZWdpc3RlciopOwogICAgICAgICB2b2lkIGR1bXBSZWdpc3RlcnMoY29uc3Qg
Q29kZUJsb2NrKiwgUmVnaXN0ZXJGaWxlKiwgY29uc3QgUmVnaXN0ZXIqKTsKIAorICAgICAgICBK
U1ZhbHVlKiBjaGVja1RpbWVvdXQoSlNHbG9iYWxPYmplY3QqKTsKKyAgICAgICAgdm9pZCByZXNl
dFRpbWVvdXRDaGVjaygpOworCiAgICAgICAgIGludCBtX3JlZW50cnlEZXB0aDsKKyAgICAgICAg
dW5zaWduZWQgbV90aW1lb3V0VGltZTsKKyAgICAgICAgdW5zaWduZWQgbV90aW1lQXRMYXN0Q2hl
Y2tUaW1lb3V0OworICAgICAgICB1bnNpZ25lZCBtX3RpbWVFeGVjdXRpbmc7CisgICAgICAgIHVu
c2lnbmVkIG1fdGltZW91dENoZWNrQ291bnQ7CisgICAgICAgIHVuc2lnbmVkIG1fdGlja3NVbnRp
bE5leHRUaW1lb3V0Q2hlY2s7CisKICAgICAgICAgUmVnaXN0ZXJGaWxlIG1fcmVnaXN0ZXJGaWxl
OwogCiAjaWYgSEFWRShDT01QVVRFRF9HT1RPKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
Vk0vT3Bjb2RlLmNwcCBiL0phdmFTY3JpcHRDb3JlL1ZNL09wY29kZS5jcHAKaW5kZXggYmUxMjVl
ZC4uYTk3ZWY4YSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvVk0vT3Bjb2RlLmNwcAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9WTS9PcGNvZGUuY3BwCkBAIC0xMDUsNiArMTA1LDkgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIG9wY29kZU5hbWVzW10gPSB7CiAgICAgImpmYWxzZSAgICAgICIsCiAgICAg
ImpsZXNzICAgICAgICIsCiAgICAgImptcF9zY29wZXMgICIsCisgICAgImxvb3AgICAgICAgICIs
CisgICAgImxvb3BfaWZfdHJ1ZSIsCisgICAgImxvb3BfaWZfbGVzcyIsCiAKICAgICAibmV3X2Z1
bmMgICAgIiwKICAgICAibmV3X2Z1bmNfZXhwIiwKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L1ZNL09wY29kZS5oIGIvSmF2YVNjcmlwdENvcmUvVk0vT3Bjb2RlLmgKaW5kZXggYTkxMzIyMi4u
Njg4Y2YwZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvVk0vT3Bjb2RlLmgKKysrIGIvSmF2
YVNjcmlwdENvcmUvVk0vT3Bjb2RlLmgKQEAgLTk3LDYgKzk3LDkgQEAgbmFtZXNwYWNlIEtKUyB7
CiAgICAgICAgIG1hY3JvKG9wX2pmYWxzZSkgXAogICAgICAgICBtYWNybyhvcF9qbGVzcykgXAog
ICAgICAgICBtYWNybyhvcF9qbXBfc2NvcGVzKSBcCisgICAgICAgIG1hY3JvKG9wX2xvb3ApIFwK
KyAgICAgICAgbWFjcm8ob3BfbG9vcF9pZl90cnVlKSBcCisgICAgICAgIG1hY3JvKG9wX2xvb3Bf
aWZfbGVzcykgXAogICAgICAgICBcCiAgICAgICAgIG1hY3JvKG9wX25ld19mdW5jKSBcCiAgICAg
ICAgIG1hY3JvKG9wX25ld19mdW5jX2V4cCkgXApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
a2pzL0pTR2xvYmFsT2JqZWN0LmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggNWM4OTk3Mi4uZWEwNGQyNyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
a2pzL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC00NSwxOCArNDUsNiBAQAogI2luY2x1ZGUgIlNjb3BlQ2hhaW5NYXJrLmgi
CiAjaW5jbHVkZSAic3RyaW5nX29iamVjdC5oIgogCi0jaWYgSEFWRShTWVNfVElNRV9IKQotI2lu
Y2x1ZGUgPHN5cy90aW1lLmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTl9PUykKLSNpbmNs
dWRlIDx3aW5kb3dzLmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFFUKQotI2luY2x1ZGUgPFFE
YXRlVGltZT4KLSNlbmRpZgotCiBuYW1lc3BhY2UgS0pTIHsKIAogLy8gRGVmYXVsdCBudW1iZXIg
b2YgdGlja3MgYmVmb3JlIGEgdGltZW91dCBjaGVjayBzaG91bGQgYmUgZG9uZS4KQEAgLTcwLDI1
ICs1OCw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrSWZOZWVkZWQoSlNWYWx1ZSogdikKICAg
ICBpZiAodiAmJiAhdi0+bWFya2VkKCkpCiAgICAgICAgIHYtPm1hcmsoKTsKIH0KLSAgICAKLS8v
IFJldHVybnMgdGhlIGN1cnJlbnQgdGltZSBpbiBtaWxsaXNlY29uZHMKLS8vIEl0IGRvZXNuJ3Qg
bWF0dGVyIHdoYXQgImN1cnJlbnQgdGltZSIgaXMgaGVyZSwganVzdCBhcyBsb25nIGFzCi0vLyBp
dCdzIHBvc3NpYmxlIHRvIG1lYXN1cmUgdGhlIHRpbWUgZGlmZmVyZW5jZSBjb3JyZWN0bHkuCi1z
dGF0aWMgaW5saW5lIHVuc2lnbmVkIGdldEN1cnJlbnRUaW1lKCkKLXsKLSNpZiBIQVZFKFNZU19U
SU1FX0gpCi0gICAgc3RydWN0IHRpbWV2YWwgdHY7Ci0gICAgZ2V0dGltZW9mZGF5KCZ0diwgMCk7
Ci0gICAgcmV0dXJuIHR2LnR2X3NlYyAqIDEwMDAgKyB0di50dl91c2VjIC8gMTAwMDsKLSNlbGlm
IFBMQVRGT1JNKFFUKQotICAgIFFEYXRlVGltZSB0ID0gUURhdGVUaW1lOjpjdXJyZW50RGF0ZVRp
bWUoKTsKLSAgICByZXR1cm4gdC50b1RpbWVfdCgpICogMTAwMCArIHQudGltZSgpLm1zZWMoKTsK
LSNlbGlmIFBMQVRGT1JNKFdJTl9PUykKLSAgICByZXR1cm4gdGltZUdldFRpbWUoKTsKLSNlbHNl
Ci0jZXJyb3IgUGxhdGZvcm0gZG9lcyBub3QgaGF2ZSBnZXRDdXJyZW50VGltZSBmdW5jdGlvbgot
I2VuZGlmCi19CiAKIEpTR2xvYmFsT2JqZWN0Ojp+SlNHbG9iYWxPYmplY3QoKQogewpAQCAtMTMx
LDEzICsxMDAsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChKU09iamVjdCogdGhpc1Zh
bHVlKQogICAgIH0gZWxzZQogICAgICAgICBoZWFkT2JqZWN0ID0gZCgpLT5uZXh0ID0gZCgpLT5w
cmV2ID0gdGhpczsKIAotICAgIHJlc2V0VGltZW91dENoZWNrKCk7Ci0gICAgZCgpLT50aW1lb3V0
VGltZSA9IDA7Ci0gICAgZCgpLT50aW1lb3V0Q2hlY2tDb3VudCA9IDA7Ci0KICAgICBkKCktPnJl
Y3Vyc2lvbiA9IDA7CiAgICAgZCgpLT5kZWJ1Z2dlciA9IDA7Ci0gICAgCisgICAgZ2xvYmFsRGF0
YSgpLT5tYWNoaW5lLT5pbml0VGltZW91dCgpOworCiAgICAgZCgpLT5nbG9iYWxFeGVjLnNldChu
ZXcgRXhlY1N0YXRlKHRoaXMsIHRoaXNWYWx1ZSwgZCgpLT5nbG9iYWxTY29wZUNoYWluLm5vZGUo
KSkpOwogCiAgICAgZCgpLT5wYWdlR3JvdXBJZGVudGlmaWVyID0gMDsKQEAgLTM0Niw2NCArMzEy
LDE5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUqIHByb3RvdHlwZSkKICAg
ICBsYXN0SW5Qcm90b3R5cGVDaGFpbih0aGlzKS0+c2V0UHJvdG90eXBlKGQoKS0+b2JqZWN0UHJv
dG90eXBlKTsKIH0KIAotdm9pZCBKU0dsb2JhbE9iamVjdDo6c3RhcnRUaW1lb3V0Q2hlY2soKQor
dm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0VGltZW91dFRpbWUodW5zaWduZWQgdGltZW91dFRpbWUp
CiB7Ci0gICAgaWYgKCFkKCktPnRpbWVvdXRDaGVja0NvdW50KQotICAgICAgICByZXNldFRpbWVv
dXRDaGVjaygpOwotICAgIAotICAgICsrZCgpLT50aW1lb3V0Q2hlY2tDb3VudDsKKyAgICBnbG9i
YWxEYXRhKCktPm1hY2hpbmUtPnNldFRpbWVvdXRUaW1lKHRpbWVvdXRUaW1lKTsKIH0KIAotdm9p
ZCBKU0dsb2JhbE9iamVjdDo6c3RvcFRpbWVvdXRDaGVjaygpCit2b2lkIEpTR2xvYmFsT2JqZWN0
OjpzdGFydFRpbWVvdXRDaGVjaygpCiB7Ci0gICAgLS1kKCktPnRpbWVvdXRDaGVja0NvdW50Owor
ICAgIGdsb2JhbERhdGEoKS0+bWFjaGluZS0+c3RhcnRUaW1lb3V0Q2hlY2soKTsKIH0KIAotdm9p
ZCBKU0dsb2JhbE9iamVjdDo6cmVzZXRUaW1lb3V0Q2hlY2soKQordm9pZCBKU0dsb2JhbE9iamVj
dDo6c3RvcFRpbWVvdXRDaGVjaygpCiB7Ci0gICAgZCgpLT50aWNrQ291bnQgPSAwOwotICAgIGQo
KS0+dGlja3NVbnRpbE5leHRUaW1lb3V0Q2hlY2sgPSBpbml0aWFsVGlja0NvdW50VGhyZXNob2xk
OwotICAgIGQoKS0+dGltZUF0TGFzdENoZWNrVGltZW91dCA9IDA7Ci0gICAgZCgpLT50aW1lRXhl
Y3V0aW5nID0gMDsKLX0KLQotYm9vbCBKU0dsb2JhbE9iamVjdDo6Y2hlY2tUaW1lb3V0KCkKLXsg
ICAgCi0gICAgZCgpLT50aWNrQ291bnQgPSAwOwotICAgIAotICAgIHVuc2lnbmVkIGN1cnJlbnRU
aW1lID0gZ2V0Q3VycmVudFRpbWUoKTsKLQotICAgIGlmICghZCgpLT50aW1lQXRMYXN0Q2hlY2tU
aW1lb3V0KSB7Ci0gICAgICAgIC8vIFN1c3BpY2lvdXMgYW1vdW50IG9mIGxvb3BpbmcgaW4gYSBz
Y3JpcHQgLS0gc3RhcnQgdGltaW5nIGl0Ci0gICAgICAgIGQoKS0+dGltZUF0TGFzdENoZWNrVGlt
ZW91dCA9IGN1cnJlbnRUaW1lOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
dW5zaWduZWQgdGltZURpZmYgPSBjdXJyZW50VGltZSAtIGQoKS0+dGltZUF0TGFzdENoZWNrVGlt
ZW91dDsKLQotICAgIGlmICh0aW1lRGlmZiA9PSAwKQotICAgICAgICB0aW1lRGlmZiA9IDE7Ci0g
ICAgCi0gICAgZCgpLT50aW1lRXhlY3V0aW5nICs9IHRpbWVEaWZmOwotICAgIGQoKS0+dGltZUF0
TGFzdENoZWNrVGltZW91dCA9IGN1cnJlbnRUaW1lOwotICAgIAotICAgIC8vIEFkanVzdCB0aGUg
dGljayB0aHJlc2hvbGQgc28gd2UgZ2V0IHRoZSBuZXh0IGNoZWNrVGltZW91dCBjYWxsIGluIHRo
ZSBpbnRlcnZhbCBzcGVjaWZpZWQgaW4gCi0gICAgLy8gcHJlZmVycmVkU2NyaXB0Q2hlY2tUaW1l
SW50ZXJ2YWwKLSAgICBkKCktPnRpY2tzVW50aWxOZXh0VGltZW91dENoZWNrID0gKHVuc2lnbmVk
KSgoZmxvYXQpcHJlZmVycmVkU2NyaXB0Q2hlY2tUaW1lSW50ZXJ2YWwgLyB0aW1lRGlmZikgKiBk
KCktPnRpY2tzVW50aWxOZXh0VGltZW91dENoZWNrOwotCi0gICAgLy8gSWYgdGhlIG5ldyB0aHJl
c2hvbGQgaXMgMCByZXNldCBpdCB0byB0aGUgZGVmYXVsdCB0aHJlc2hvbGQuIFRoaXMgY2FuIGhh
cHBlbiBpZiB0aGUgdGltZURpZmYgaXMgaGlnaGVyIHRoYW4gdGhlCi0gICAgLy8gcHJlZmVycmVk
IHNjcmlwdCBjaGVjayB0aW1lIGludGVydmFsLgotICAgIGlmIChkKCktPnRpY2tzVW50aWxOZXh0
VGltZW91dENoZWNrID09IDApCi0gICAgICAgIGQoKS0+dGlja3NVbnRpbE5leHRUaW1lb3V0Q2hl
Y2sgPSBpbml0aWFsVGlja0NvdW50VGhyZXNob2xkOwotCi0gICAgaWYgKGQoKS0+dGltZW91dFRp
bWUgJiYgZCgpLT50aW1lRXhlY3V0aW5nID4gZCgpLT50aW1lb3V0VGltZSkgewotICAgICAgICBp
ZiAoc2hvdWxkSW50ZXJydXB0U2NyaXB0KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgCi0gICAgICAgIHJlc2V0VGltZW91dENoZWNrKCk7Ci0gICAgfQotICAgIAotICAgIHJl
dHVybiBmYWxzZTsKKyAgICBnbG9iYWxEYXRhKCktPm1hY2hpbmUtPnN0b3BUaW1lb3V0Q2hlY2so
KTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdDo6bWFyaygpCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9ranMvSlNHbG9iYWxPYmplY3QuaCBiL0phdmFTY3JpcHRDb3JlL2tqcy9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IGZiNDZlMmIuLjJjYjQ1NjAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL2tqcy9KU0dsb2JhbE9iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9KU0dsb2Jh
bE9iamVjdC5oCkBAIC04OSwxMyArODksNiBAQCBuYW1lc3BhY2UgS0pTIHsKIAogICAgICAgICAg
ICAgaW50IHJlY3Vyc2lvbjsKIAotICAgICAgICAgICAgdW5zaWduZWQgdGltZW91dFRpbWU7Ci0g
ICAgICAgICAgICB1bnNpZ25lZCB0aW1lQXRMYXN0Q2hlY2tUaW1lb3V0OwotICAgICAgICAgICAg
dW5zaWduZWQgdGltZUV4ZWN1dGluZzsKLSAgICAgICAgICAgIHVuc2lnbmVkIHRpbWVvdXRDaGVj
a0NvdW50OwotICAgICAgICAgICAgdW5zaWduZWQgdGlja0NvdW50OwotICAgICAgICAgICAgdW5z
aWduZWQgdGlja3NVbnRpbE5leHRUaW1lb3V0Q2hlY2s7Ci0KICAgICAgICAgICAgIFJlZ0V4cENv
bnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvcjsKICAgICAgICAgICAgIEVycm9yQ29uc3RydWN0
b3IqIGVycm9yQ29uc3RydWN0b3I7CiAgICAgICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KiBldmFsRXJyb3JDb25zdHJ1Y3RvcjsKQEAgLTIwMiwxMCArMTk1LDkgQEAgbmFtZXNwYWNlIEtK
UyB7CiAgICAgICAgIHZvaWQgc2V0UGFnZUdyb3VwSWRlbnRpZmllcih1bnNpZ25lZCB2YWx1ZSkg
eyBkKCktPnBhZ2VHcm91cElkZW50aWZpZXIgPSB2YWx1ZTsgfQogICAgICAgICB1bnNpZ25lZCBw
YWdlR3JvdXBJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gZCgpLT5wYWdlR3JvdXBJZGVudGlm
aWVyOyB9CiAKLSAgICAgICAgdm9pZCBzZXRUaW1lb3V0VGltZSh1bnNpZ25lZCB0aW1lb3V0VGlt
ZSkgeyBkKCktPnRpbWVvdXRUaW1lID0gdGltZW91dFRpbWU7IH0KKyAgICAgICAgdm9pZCBzZXRU
aW1lb3V0VGltZSh1bnNpZ25lZCB0aW1lb3V0VGltZSk7CiAgICAgICAgIHZvaWQgc3RhcnRUaW1l
b3V0Q2hlY2soKTsKICAgICAgICAgdm9pZCBzdG9wVGltZW91dENoZWNrKCk7Ci0gICAgICAgIGJv
b2wgdGltZWRPdXQoKTsKIAogICAgICAgICBEZWJ1Z2dlciogZGVidWdnZXIoKSBjb25zdCB7IHJl
dHVybiBkKCktPmRlYnVnZ2VyOyB9CiAgICAgICAgIHZvaWQgc2V0RGVidWdnZXIoRGVidWdnZXIq
IGRlYnVnZ2VyKSB7IGQoKS0+ZGVidWdnZXIgPSBkZWJ1Z2dlcjsgfQpAQCAtMjYyLDkgKzI1NCw2
IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICB9OwogICAgICAgICB2b2lkIGFkZFN0YXRpY0ds
b2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiwgaW50IGNvdW50KTsKIAotICAgIHByaXZhdGU6Ci0g
ICAgICAgIGJvb2wgY2hlY2tUaW1lb3V0KCk7Ci0gICAgICAgIHZvaWQgcmVzZXRUaW1lb3V0Q2hl
Y2soKTsKICAgICB9OwogCiAgICAgaW5saW5lIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmFkZFN0YXRp
Y0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiBnbG9iYWxzLCBpbnQgY291bnQpCkBAIC0yOTgs
MTYgKzI4Nyw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICByZXR1cm4gc3ltYm9sVGFibGVH
ZXQocHJvcGVydHlOYW1lLCBzbG90LCBzbG90SXNXcml0ZWFibGUpOwogICAgIH0KIAotICAgIGlu
bGluZSBib29sIEpTR2xvYmFsT2JqZWN0Ojp0aW1lZE91dCgpCi0gICAgewotICAgICAgICBkKCkt
PnRpY2tDb3VudCsrOwotCi0gICAgICAgIGlmIChkKCktPnRpY2tDb3VudCAhPSBkKCktPnRpY2tz
VW50aWxOZXh0VGltZW91dENoZWNrKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgIHJldHVybiBjaGVja1RpbWVvdXQoKTsKLSAgICB9Ci0KICAgICBpbmxpbmUgSlNHbG9iYWxP
YmplY3QqIFNjb3BlQ2hhaW5Ob2RlOjpnbG9iYWxPYmplY3QoKSBjb25zdAogICAgIHsKICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oYm90dG9tKCkpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL0pTT2JqZWN0
LmggYi9KYXZhU2NyaXB0Q29yZS9ranMvSlNPYmplY3QuaAppbmRleCA4MTlkOTJjLi40YTZlZTRh
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvSlNPYmplY3QuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9ranMvSlNPYmplY3QuaApAQCAtMzc4LDYgKzM3OCw4IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgIHZpcnR1YWwgYm9vbCBpc0dsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGVPYmplY3QoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCisgICAgdmlydHVhbCBib29sIGlzV2F0Y2hkb2dFeGNlcHRpb24oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorCiAgIHByb3RlY3RlZDoKICAgICBQcm9wZXJ0eU1hcCBfcHJvcDsK
ICAgICBib29sIGdldE93blByb3BlcnR5U2xvdEZvcldyaXRlKEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmLCBib29sJiBzbG90SXNXcml0ZWFibGUpOwpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcCBiL0phdmFTY3JpcHRDb3Jl
L2tqcy9pbnRlcnByZXRlci5jcHAKaW5kZXggM2Y1MTQzZi4uZjZkYzAyNSAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9r
anMvaW50ZXJwcmV0ZXIuY3BwCkBAIC04MSw3ICs4MSwxMiBAQCBDb21wbGV0aW9uIEludGVycHJl
dGVyOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW4mIHNjb3BlQ2hhaW4sIGNv
bnN0CiAgICAgSlNWYWx1ZSogZXhjZXB0aW9uID0gMDsKICAgICBKU1ZhbHVlKiByZXN1bHQgPSBl
eGVjLT5tYWNoaW5lKCktPmV4ZWN1dGUocHJvZ3JhbU5vZGUuZ2V0KCksIGV4ZWMsIHNjb3BlQ2hh
aW4ubm9kZSgpLCB0aGlzT2JqLCAmZXhjZXB0aW9uKTsKIAotICAgIHJldHVybiBleGNlcHRpb24g
PyBDb21wbGV0aW9uKFRocm93LCBleGNlcHRpb24pIDogQ29tcGxldGlvbihOb3JtYWwsIHJlc3Vs
dCk7CisgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICBpZiAoZXhjZXB0aW9uLT5pc09iamVj
dCgpICYmIHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4oZXhjZXB0aW9uKS0+aXNXYXRjaGRvZ0V4Y2Vw
dGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIENvbXBsZXRpb24oSW50ZXJydXB0ZWQsIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBDb21wbGV0aW9uKFRocm93LCBleGNlcHRpb24pOworICAgIH0K
KyAgICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwsIHJlc3VsdCk7CiB9CiAKIHN0YXRpYyBib29s
IHByaW50RXhjZXB0aW9ucyA9IGZhbHNlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>