<?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>128633</bug_id>
          
          <creation_ts>2014-02-11 16:25:44 -0800</creation_ts>
          <short_desc>Web Replay: capture and replay nondeterminism of Date.now() and Math.random()</short_desc>
          <delta_ts>2014-02-12 19:29:26 -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>JavaScriptCore</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="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>979653</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-11 16:25:44 -0800</bug_when>
    <thetext>These are the only sources of nondeterminism implemented in JSC that are visible to script (excluding VM bugs, etc).

For Math.random(), the seed given to WeakRandom can be memoized. For Date.now() and new Date(), we have to memoize each call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979680</commentid>
    <comment_count>1</comment_count>
      <attachid>223920</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-11 17:25:03 -0800</bug_when>
    <thetext>Created attachment 223920
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979687</commentid>
    <comment_count>2</comment_count>
      <attachid>223920</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-11 17:41:44 -0800</bug_when>
    <thetext>Comment on attachment 223920
patch

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

R=me but please consider encapsulating the #if ENABLE(WEB_REPLAY) inside a clever macro.

&gt; Source/JavaScriptCore/runtime/DateConstructor.cpp:128
&gt; +#if ENABLE(WEB_REPLAY)
&gt; +        value = deterministicCurrentTime(globalObject);
&gt; +#else
&gt;          value = jsCurrentTime();
&gt; +#endif

Can&apos;t you have a macro like REPLAY(jsCurrentTime(), deterministicCurrentTime(globalObject))?

The reason why I would like that more is that #if&apos;s can often disturb our ability to visualize the nesting of control flow.  The definition of REPLAY would literally be:

#if ENABLE(WEB_REPLAY)
#define REPLAY(a, b) (b)
#else
#define REPLAY(a, b) (a)
#endif

You can call REPLAY() whatever you like...

&gt; Source/JavaScriptCore/runtime/DateConstructor.cpp:214
&gt; +#if ENABLE(WEB_REPLAY)
&gt; +    return JSValue::encode(jsNumber(deterministicCurrentTime(exec-&gt;lexicalGlobalObject())));
&gt; +#else
&gt; +    UNUSED_PARAM(exec);
&gt;      return JSValue::encode(jsNumber(jsCurrentTime()));
&gt; +#endif

Another fine example of a place where that REPLAY() macro would simplify things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980063</commentid>
    <comment_count>3</comment_count>
      <attachid>223920</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-12 16:07:45 -0800</bug_when>
    <thetext>Comment on attachment 223920
patch

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

&gt;&gt; Source/JavaScriptCore/runtime/DateConstructor.cpp:128
&gt;&gt; +#endif
&gt; 
&gt; Can&apos;t you have a macro like REPLAY(jsCurrentTime(), deterministicCurrentTime(globalObject))?
&gt; 
&gt; The reason why I would like that more is that #if&apos;s can often disturb our ability to visualize the nesting of control flow.  The definition of REPLAY would literally be:
&gt; 
&gt; #if ENABLE(WEB_REPLAY)
&gt; #define REPLAY(a, b) (b)
&gt; #else
&gt; #define REPLAY(a, b) (a)
&gt; #endif
&gt; 
&gt; You can call REPLAY() whatever you like...

Sure thing, I can add that. It will only help out in cases where the difference is which function to call, but that&apos;s fine. (Most replay-oriented hooks add a branch without interleaving the normal code path.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980071</commentid>
    <comment_count>4</comment_count>
      <attachid>223920</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-12 16:18:50 -0800</bug_when>
    <thetext>Comment on attachment 223920
patch

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

&gt; Source/JavaScriptCore/runtime/DateConstructor.cpp:88
&gt; +    if (cursor.isCapturing())
&gt; +        cursor.appendInput&lt;GetCurrentTime&gt;(currentTime);
&gt; +
&gt; +    if (cursor.isReplaying()) {

If a cursor cannot be both capturing and replaying then this can be an &quot;else if&quot; instead of another if. Or the states could move to an enum (Default, Capturing, Replaying).

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:793
&gt; +    if (cursor.isCapturing())
&gt; +        cursor.appendInput&lt;SetRandomSeed&gt;(m_weakRandom.seedUnsafe());
&gt; +
&gt; +    if (cursor.isReplaying()) {

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980136</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-12 19:29:26 -0800</bug_when>
    <thetext>Committed r164007: &lt;http://trac.webkit.org/changeset/164007&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223920</attachid>
            <date>2014-02-11 17:25:03 -0800</date>
            <delta_ts>2014-02-12 16:18:50 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-128633-20140211172502.patch</filename>
            <type>text/plain</type>
            <size>15422</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzOTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NjljZDVhMzY1ZTYwYzM1NTdjYmNjNjlmMmViYmRmOTA1MjJhOGExLi5hZDYzMGJhZGJkMTUzY2Ri
M2NiYmNjNTkwNDRiNzA4OTQ0YjE1NTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1MCBAQAogMjAxNC0wMi0xMSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWIgUmVwbGF5OiBjYXB0dXJlIGFuZCByZXBsYXkgbm9uZGV0ZXJtaW5pc20gb2Yg
RGF0ZS5ub3coKSBhbmQgTWF0aC5yYW5kb20oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NjMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXBzdHJlYW0gdGhlIG9ubHkgdHdvIHNvdXJjZXMgb2Ygc2Ny
aXB0LXZpc2libGUgbm9uZGV0ZXJtaW5pc20gaW4gSmF2YVNjcmlwdENvcmUuCisKKyAgICAgICAg
VGhlIHJhbmRvbSBzZWVkIGZvciBXZWFrUmFuZG9tIGlzIG1lbW9pemVkIHdoZW4gdGhlIG93bmlu
ZyBKU0dsb2JhbE9iamVjdCBpcworICAgICAgICBjb25zdHJ1Y3RlZC4gSXQgaXMgZGV0ZXJtaW5p
c3RpY2FsbHkgaW5pdGlhbGl6ZWQgZHVyaW5nIHJlcGxheSBiZWZvcmUgYW55CisgICAgICAgIHNj
cmlwdHMgZXhlY3V0ZSB3aXRoIHRoZSBnbG9iYWwgb2JqZWN0LgorCisgICAgICAgIFRoZSBpbXBs
ZW1lbnRhdGlvbnMgb2YgYERhdGUubm93KClgIGFuZCBgbmV3IERhdGUoKWAgZXZlbnR1YWxseSBv
YnRhaW4gdGhlCisgICAgICAgIGN1cnJlbnQgdGltZSBmcm9tIGpzQ3VycmVudFRpbWUoKS4gV2hl
biBjYXB0dXJpbmcsIHdlIHNhdmUgcmV0dXJuIHZhbHVlcyBvZgorICAgICAgICBqc0N1cnJlbnRU
aW1lKCkgaW50byB0aGUgcmVjb3JkaW5nLiBXaGVuIHJlcGxheWluZywgd2UgdXNlIG1lbW9pemVk
IHZhbHVlcyBmcm9tCisgICAgICAgIHRoZSByZWNvcmRpbmcgaW5zdGVhZCBvZiBvYnRhaW5pbmcg
dmFsdWVzIGZyb20gdGhlIHBsYXRmb3JtLXNwZWNpZmljIGN1cnJlbnRUaW1lKCkKKyAgICAgICAg
aW1wbGVtZW50YXRpb24uIE5vIG90aGVyIGNvZGUgY2FsbHMganNDdXJyZW50VGltZSgpLgorCisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogQWRkIHJ1bGVzIHRvIG1ha2UgSlNSZXBsYXlJ
bnB1dHMuaCBmcm9tIEpTSW5wdXRzLmpzb24uCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZXBsYXkvSlNJbnB1dHMuanNvbjog
QWRkZWQuIEluY2x1ZGVzIHNwZWNpZmljYXRpb25zIGZvciByZXBsYXkgaW5wdXRzCisgICAgICAg
ICJHZXRDdXJyZW50VGltZSIgYW5kICJTZXRSYW5kb21TZWVkIi4gVGVzdHMgd2lsbCBiZSBhZGRl
ZCBmb3IgYm90aCBpbnB1dAorICAgICAgICBjYXNlcyBvbmNlIHN1ZmZpY2llbnQgcmVwbGF5IG1h
Y2hpbmVyeSBoYXMgYmVlbiBhZGRlZC4KKworICAgICAgICAqIHJlcGxheS9Ob25kZXRlcm1pbmlz
dGljSW5wdXQuaDogTm9uZGV0ZXJtaW5pc3RpY0lucHV0IHNob3VsZCBub3QgaGF2ZQorICAgICAg
ICBiZWVuIG1hcmtlZCAnZmluYWwnLgorCisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpkZXRlcm1pbmlzdGljQ3VycmVudFRpbWUpOiBBZGRlZC4g
TG9hZCBvciBzdG9yZSB0aGUgY3VycmVudCB0aW1lIGRlcGVuZGluZworICAgICAgICBvbiB3aGF0
IGtpbmQgb2YgSW5wdXRDdXJzb3IgaXMgYXR0YWNoZWQgdG8gdGhlIEpTR2xvYmFsT2JqZWN0Lgor
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdERhdGUpOiBVc2UgZGV0ZXJtaW5pc3RpY0N1cnJlbnRU
aW1lKCkuCisgICAgICAgIChKU0M6OmRhdGVOb3cpOiBVc2UgZGV0ZXJtaW5pc3RpY0N1cnJlbnRU
aW1lKCkuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpzZXRJbnB1dEN1cnNvcik6IFdoZW4gc2V0dGluZyBhIG5vbi1l
bXB0eSBpbnB1dCBjdXJzb3IsCisgICAgICAgIGltbWVkaWF0ZWx5IHN0b3JlIG9yIGxvYWQgdGhl
ICJTZXRSYW5kb21TZWVkIiBpbnB1dCBhbmQgaW5pdGlhbGl6ZSBXZWFrUmFuZG9tJ3MKKyAgICAg
ICAgcmFuZG9tIHNlZWQgd2l0aCBpdC4gVGhlIGlucHV0IGN1cnNvciAoYW5kIHRodXMgcmFuZG9t
IHNlZWQpIG11c3QgYmUgc2V0IGJlZm9yZQorICAgICAgICBhbnkgc2NyaXB0cyBhcmUgZXZhbHVh
dGVkIHdpdGggdGhpcyBKU0dsb2JhbE9iamVjdC4KKworICAgICAgICAqIHJ1bnRpbWUvV2Vha1Jh
bmRvbS5oOgorICAgICAgICAoSlNDOjpXZWFrUmFuZG9tOjpXZWFrUmFuZG9tKTogQWRkIEpTR2xv
YmFsT2JqZWN0IGFzIGEgZnJpZW5kIGNsYXNzLgorICAgICAgICAoSlNDOjpXZWFrUmFuZG9tOjpp
bml0aWFsaXplU2VlZCk6IEV4dHJhY3QgdGhlIHNlZWQgaW5pdGlhbGl6YXRpb24gaW50byBhCisg
ICAgICAgIHNlcGFyYXRlIG1ldGhvZCBzbyBpdCBjYW4gYmUgY2FsbGVkIG91dHNpZGUgb2YgdGhl
IEpTR2xvYmFsT2JqZWN0IGNvbnN0cnVjdG9yLgorCisyMDE0LTAyLTExICBCcmlhbiBCdXJnICA8
YmJ1cmdAYXBwbGUuY29tPgorCiAgICAgICAgIFdlYiBSZXBsYXk6IHVwc3RyZWFtIHJlcGxheSBp
bnB1dCBjb2RlIGdlbmVyYXRvciBhbmQgRW5jb2RlZFZhbHVlIGNsYXNzCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjgyMTUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2MDI3NDY2MzA5YmNhZmMxMTI2MzM3
ZmEzMTgzZmZhZmY3MzBmMGY1Li41ZDhjNmExMjUzMzU5NjRiYmNlZGMyYzYxODdlOTljNDJiMWZl
YTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtOTAs
MTUgKzkwLDI1IEBAIElOU1BFQ1RPUl9ET01BSU5TID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUp
L2luc3BlY3Rvci9wcm90b2NvbC9SdW50aW1lLmpzb24gXAogIwogCitJTlBVVF9HRU5FUkFUT1Jf
U0NSSVBUUyA9IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9yZXBsYXkvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yUmVwbGF5SW5wdXRzLnB5IFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9yZXBsYXkvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzVGVtcGxhdGVzLnB5IFwKKyMKKwogSU5TUEVD
VE9SX0dFTkVSQVRPUl9TQ1JJUFRTID0gXAogCSQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgXAogCSQoSmF2YVNjcmlwdENvcmUpL2lu
c3BlY3Rvci9zY3JpcHRzL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5IFwKICMKIAor
SU5QVVRfR0VORVJBVE9SX1NQRUNJRklDQVRJT05TID0gXAorICAgICQoSmF2YVNjcmlwdENvcmUp
L3JlcGxheS9KU0lucHV0cy5qc29uIFwKKyMKKwogYWxsIDogXAogICAgIEluc3BlY3RvckpTLmpz
b24gXAogICAgIEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oIFwKICAgICBJbmplY3Rl
ZFNjcmlwdFNvdXJjZS5oIFwKKwlKU1JlcGxheUlucHV0cy5oIFwKICMKIAogSW5zcGVjdG9ySlMu
anNvbiA6IGluc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29u
LnB5ICQoSU5TUEVDVE9SX0RPTUFJTlMpCkBAIC0xMTIsMyArMTIyLDkgQEAgSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuaCA6IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcyAkKEphdmFTY3Jp
cHRDb3JlKS9pbnMKIAlweXRob24gJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3NjcmlwdHMv
anNtaW4ucHkgPCAkKEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuanMgPiAuL0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcwogCXBlcmwgJChKYXZhU2NyaXB0
Q29yZSkvaW5zcGVjdG9yL3NjcmlwdHMveHhkLnBsIEluamVjdGVkU2NyaXB0U291cmNlX2pzIC4v
SW5qZWN0ZWRTY3JpcHRTb3VyY2UubWluLmpzIEluamVjdGVkU2NyaXB0U291cmNlLmgKIAlybSAt
ZiAuL0luamVjdGVkU2NyaXB0U291cmNlLm1pbi5qcworCisjIFdlYiBSZXBsYXkgaW5wdXRzIGdl
bmVyYXRvcgorCitKU1JlcGxheUlucHV0cy5oIDogJChJTlBVVF9HRU5FUkFUT1JfU1BFQ0lGSUNB
VElPTlMpICQoSU5QVVRfR0VORVJBVE9SX1NDUklQVFMpCisJcHl0aG9uICQoSmF2YVNjcmlwdENv
cmUpL3JlcGxheS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgLS1vdXRwdXRE
aXIgLiAtLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAkKElOUFVUX0dFTkVSQVRPUl9TUEVDSUZJ
Q0FUSU9OUykKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3OTc5NjRiYTZjNjQy
ZWEzNGNhMzc0OGMwNWQ4ZjAxZmU4MGUzZjViLi4yODE0MWM5ZjQ0NjlmYzZmYWRjNzY2ZTI4ZWNm
YWE4YTk0ZDczMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTI5LDYgKzky
OSw4IEBACiAJCTk2OUEwNzlCMEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2OUEwNzk1MEVEMUQzQUUwMEYx
RjY4MSAvKiBPcGNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5Nzg4MDE0MDE0NzFBRDkyMDA0MUIwMTYgLyogSlNEYXRlTWF0aC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzg4RkMyMjE0NzFB
RDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5jcHAgKi87IH07CiAJCTk3ODgwMTQxMTQ3MUFEOTIw
MDQxQjAxNiAvKiBKU0RhdGVNYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5Nzg4RkMyMzE0NzFBRDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5MjhGRjMz
MThBQUZBQkYwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI4RkYzMTE4QUFGQUJGMDBCOENGMTIgLyog
SlNSZXBsYXlJbnB1dHMuY3BwICovOyB9OworCQk5OTI4RkYzNDE4QUFGQUJGMDBCOENGMTIgLyog
SlNSZXBsYXlJbnB1dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5MjhGRjMyMThBQUZBQkYwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5oICovOyB9
OwogCQk5OUU0NUEyNDE4QTFCMjU5MDAyNkQ4OEYgLyogRW1wdHlJbnB1dEN1cnNvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMUYxOEExQjI1
OTAwMjZEODhGIC8qIEVtcHR5SW5wdXRDdXJzb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OUU0NUEyNTE4QTFCMjU5MDAyNkQ4OEYgLyogRW5j
b2RlZFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5RTQ1QTIwMThBMUIyNTkwMDI2RDg4RiAvKiBFbmNvZGVkVmFsdWUuY3BwICovOyB9Owog
CQk5OUU0NUEyNjE4QTFCMjU5MDAyNkQ4OEYgLyogRW5jb2RlZFZhbHVlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUU0NUEyMTE4QTFCMjU5MDAyNkQ4
OEYgLyogRW5jb2RlZFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTI0MDIsNiArMjQwNCw4IEBACiAJCTk2OUEwOTIyMEVEMUUwOUMwMEYx
RjY4MSAvKiBDb21wbGV0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbXBsZXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Nzg4RkMy
MjE0NzFBRDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0RhdGVNYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTc4OEZDMjMxNDcxQUQwQzAwNjhDRTJEIC8qIEpTRGF0ZU1hdGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEYXRlTWF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5OTI4RkYzMTE4QUFGQUJGMDBCOENGMTIgLyogSlNSZXBsYXlJbnB1dHMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZXBsYXlJbnB1dHMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTI4RkYzMjE4QUFGQUJGMDBCOENGMTIg
LyogSlNSZXBsYXlJbnB1dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNS
ZXBsYXlJbnB1dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlFNDVBMUQxOEEx
QjFFNzAwMjZEODhGIC8qIENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHkgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBDb2RlR2VuZXJhdG9yUmVwbGF5SW5wdXRzLnB5OyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUU0NUExRTE4QTFCMUU3MDAyNkQ4OEYgLyog
Q29kZUdlbmVyYXRvclJlcGxheUlucHV0c1RlbXBsYXRlcy5weSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2Ny
aXB0LnB5dGhvbjsgcGF0aCA9IENvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHNUZW1wbGF0ZXMucHk7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5RTQ1QTFGMThBMUIyNTkwMDI2RDg4RiAv
KiBFbXB0eUlucHV0Q3Vyc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVt
cHR5SW5wdXRDdXJzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1OTksNiAr
MzYwMyw4IEBACiAJCTY1MEZERjhEMDlEMEZDQTcwMDc2OUU1NCAvKiBEZXJpdmVkIFNvdXJjZXMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTk5MjhGRjMx
MThBQUZBQkYwMEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5jcHAgKi8sCisJCQkJOTkyOEZGMzIx
OEFBRkFCRjAwQjhDRjEyIC8qIEpTUmVwbGF5SW5wdXRzLmggKi8sCiAJCQkJQkMxOEM1MjMwRTE2
RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUJDRDIwM0U3MEUx
NzE4RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oICovLAogCQkJCUE1MTNFNUM2MTg1
Rjk0MzYwMDdFOTVBRCAvKiBJbmplY3RlZFNjcmlwdFNvdXJjZS5oICovLApAQCAtNTEwNyw2ICs1
MTEzLDcgQEAKIAkJCQkwRjI0RTU1NjE3RjBCNzFDMDBBQkIyMTcgLyogSW5saW5lQ2FsbEZyYW1l
U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyogSW5z
dHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNCMTdBREI1RjMwMDVBQjE3NCAv
KiBJbnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTI4RkYzNDE4QUFGQUJGMDBCOENG
MTIgLyogSlNSZXBsYXlJbnB1dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjNDMTdBREI1
RjMwMDVBQjE3NCAvKiBJbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzQTE3
QURCNUYzMDA1QUIxNzQgLyogSW50OEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzg4NTNG
QTE3OTcyNjI5MDAxNDQwRTQgLyogSW50ZW5kZWRTdHJ1Y3R1cmVDaGFpbi5oIGluIEhlYWRlcnMg
Ki8sCkBAIC02NDQ1LDYgKzY0NTIsNyBAQAogCQkJCUE1QkExNUVDMTgyMzQwQjQwMEE4MkU2OSAv
KiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUE1QkExNUVFMTgyMzQwQjQwMEE4MkU2OSAvKiBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0
aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdFNUFCM0ExNzk5RTRCMjAwRDI4MzNEIC8qIFg4
NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5OTI4RkYzMzE4QUFGQUJGMDBC
OENGMTIgLyogSlNSZXBsYXlJbnB1dHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYzQzZEOUMx
NTIxMTExQTAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2NzA0Qjg0MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySW50ZXJwcmV0ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5
L0pTSW5wdXRzLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0pTSW5wdXRzLmpz
b24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzM5NGQ5NDcwYTg0YjI5ZmRkM2Q0YjQxY2YzYjkxOGRmMzVmNDM4MAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvSlNJbnB1dHMu
anNvbgpAQCAtMCwwICsxLDI3IEBACit7CisgICAgInR5cGVzIjogeworICAgICAgICAiR2xvYmFs
IjogWworICAgICAgICAgICAgeyAibmFtZSI6ICJkb3VibGUiLCAibW9kZSI6ICJTQ0FMQVIiIH0s
CisgICAgICAgICAgICB7ICJuYW1lIjogInVpbnQ2NF90IiwgIm1vZGUiOiAiU0NBTEFSIiB9Cisg
ICAgICAgIF0KKyAgICB9LAorCisgICAgImlucHV0cyI6IFsKKyAgICAgICAgeworICAgICAgICAg
ICAgIm5hbWUiOiAiR2V0Q3VycmVudFRpbWUiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IlN1cHBsaWVzIHRoZSBzeXN0ZW0gdGltZSB0byBEYXRlLm5vdygpIGFuZCBuZXcgRGF0ZSgpLiIs
CisgICAgICAgICAgICAicXVldWUiOiAiU0NSSVBUX01FTU9JWkVEIiwKKyAgICAgICAgICAgICJt
ZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY3VycmVudFRpbWUiLCAidHlw
ZSI6ICJkb3VibGUiIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgIm5hbWUiOiAiU2V0UmFuZG9tU2VlZCIsCisgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiU2V0cyB0aGUgUFJORyBzZWVkIHVzZWQgYnkgTWF0aC5yYW5kb20oKS4iLAorICAgICAg
ICAgICAgInF1ZXVlIjogIlNDUklQVF9NRU1PSVpFRCIsCisgICAgICAgICAgICAibWVtYmVycyI6
IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJhbmRvbVNlZWQiLCAidHlwZSI6ICJ1aW50
NjRfdCIgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9Ob25kZXRlcm1pbmlzdGljSW5wdXQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvTm9uZGV0ZXJtaW5pc3RpY0lucHV0LmgKaW5kZXgg
ZmIzYmNhMDIxMWU0YzIwNWM5NmE1NTAzNDllOTY1ZGFjODY0OTA4Yi4uYTI1NmMyYjYyN2Q5NWI0
ODA0NDAyZmZhMjg2MjViYjM3N2NjYzNjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3JlcGxheS9Ob25kZXRlcm1pbmlzdGljSW5wdXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcmVwbGF5L05vbmRldGVybWluaXN0aWNJbnB1dC5oCkBAIC02NCw3ICs2NCw3IEBAIHB1
YmxpYzoKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0VHlwZT4KLWNsYXNzIE5vbmRldGVy
bWluaXN0aWNJbnB1dCBmaW5hbCA6IHB1YmxpYyBOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlIHsK
K2NsYXNzIE5vbmRldGVybWluaXN0aWNJbnB1dCA6IHB1YmxpYyBOb25kZXRlcm1pbmlzdGljSW5w
dXRCYXNlIHsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIGNvbnN0IG92
ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gSW5wdXRUcmFpdHM8SW5wdXRUeXBlPjo6dHlw
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggZmU0ZGQwYmE2ODVkYjE0MDcyZDA1YmQwOGMyMTRmOTY5MmI5MWI3Mi4uNjJj
MmNhNzEzYzI4NzY3Y2ZlYWQ1YWE4YjYzYjY5MzA2NGYzYmMzZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCkBAIC0zNiw2ICszNiwx
MSBAQAogI2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCisj
aWYgRU5BQkxFKFdFQl9SRVBMQVkpCisjaW5jbHVkZSAiSW5wdXRDdXJzb3IuaCIKKyNpbmNsdWRl
ICJKU1JlcGxheUlucHV0cy5oIgorI2VuZGlmCisKICNpZiBPUyhXSU5DRSkKIGV4dGVybiAiQyIg
dGltZV90IHRpbWUodGltZV90KiB0aW1lcik7IC8vIFByb3ZpZGVkIGJ5IGxpYmNlLgogI2VuZGlm
CkBAIC03Miw2ICs3NywyMiBAQCBjb25zdCBDbGFzc0luZm8gRGF0ZUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZgogQGVuZAogKi8KIAor
I2lmIEVOQUJMRShXRUJfUkVQTEFZKQorc3RhdGljIGRvdWJsZSBkZXRlcm1pbmlzdGljQ3VycmVu
dFRpbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBkb3VibGUgY3VycmVu
dFRpbWUgPSBqc0N1cnJlbnRUaW1lKCk7CisgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IGdsb2Jh
bE9iamVjdC0+aW5wdXRDdXJzb3IoKTsKKyAgICBpZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkpCisg
ICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxHZXRDdXJyZW50VGltZT4oY3VycmVudFRpbWUpOwor
CisgICAgaWYgKGN1cnNvci5pc1JlcGxheWluZygpKSB7CisgICAgICAgIGlmIChHZXRDdXJyZW50
VGltZSogaW5wdXQgPSBjdXJzb3IuZmV0Y2hJbnB1dDxHZXRDdXJyZW50VGltZT4oKSkKKyAgICAg
ICAgICAgIGN1cnJlbnRUaW1lID0gaW5wdXQtPmN1cnJlbnRUaW1lKCk7CisgICAgfQorICAgIHJl
dHVybiBjdXJyZW50VGltZTsKK30KKyNlbmRpZgorCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxM
WV9ERVNUUlVDVElCTEUoRGF0ZUNvbnN0cnVjdG9yKTsKIAogRGF0ZUNvbnN0cnVjdG9yOjpEYXRl
Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTEwMCw3ICsxMjEs
MTEgQEAgSlNPYmplY3QqIGNvbnN0cnVjdERhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBBcmcKICAgICBkb3VibGUgdmFsdWU7CiAKICAgICBp
ZiAobnVtQXJncyA9PSAwKSAvLyBuZXcgRGF0ZSgpIEVDTUEgMTUuOS4zLjMKKyNpZiBFTkFCTEUo
V0VCX1JFUExBWSkKKyAgICAgICAgdmFsdWUgPSBkZXRlcm1pbmlzdGljQ3VycmVudFRpbWUoZ2xv
YmFsT2JqZWN0KTsKKyNlbHNlCiAgICAgICAgIHZhbHVlID0ganNDdXJyZW50VGltZSgpOworI2Vu
ZGlmCiAgICAgZWxzZSBpZiAobnVtQXJncyA9PSAxKSB7CiAgICAgICAgIGlmIChhcmdzLmF0KDAp
LmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKICAgICAgICAgICAgIHZhbHVlID0gYXNE
YXRlSW5zdGFuY2UoYXJncy5hdCgwKSktPmludGVybmFsTnVtYmVyKCk7CkBAIC0xNzksOSArMjA0
LDE0IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQYXJzZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwYXJzZURh
dGUoZXhlYy0+dm0oKSwgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlTm93
KEV4ZWNTdGF0ZSopCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlTm93
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGRldGVybWluaXN0aWNDdXJyZW50VGltZShleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGpzQ3VycmVudFRpbWUoKSkpOwor
I2VuZGlmCiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVVVEMo
RXhlY1N0YXRlKiBleGVjKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAppbmRleCBiZjgzYjhhNmVjMjMxNTE5YTU2YmQ5MjU2NmYwYjFhNjQ1
ODljYWJiLi45ZjhiMDMwYTBhNTkxOTE5MjhlMGRmOTc3MDA2YTE5MzFhYTI5OTA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0x
MjksNiArMTI5LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQogI2luY2x1ZGUgIkVtcHR5
SW5wdXRDdXJzb3IuaCIKKyNpbmNsdWRlICJKU1JlcGxheUlucHV0cy5oIgogI2VuZGlmCiAKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5sdXQuaCIKQEAgLTc4MSw2ICs3ODIsMTggQEAgYm9vbCBK
U0dsb2JhbE9iamVjdDo6cmVtb3RlRGVidWdnaW5nRW5hYmxlZCgpIGNvbnN0CiB2b2lkIEpTR2xv
YmFsT2JqZWN0OjpzZXRJbnB1dEN1cnNvcihQYXNzUmVmUHRyPElucHV0Q3Vyc29yPiBwcnBDdXJz
b3IpCiB7CiAgICAgbV9pbnB1dEN1cnNvciA9IHBycEN1cnNvcjsKKyAgICBBU1NFUlQobV9pbnB1
dEN1cnNvcik7CisKKyAgICBJbnB1dEN1cnNvciYgY3Vyc29yID0gaW5wdXRDdXJzb3IoKTsKKyAg
ICAvLyBTYXZlIG9yIHNldCB0aGUgcmFuZG9tIHNlZWQuIFRoaXMgcGVyZm9ybWVkIGhlcmUgcmF0
aGVyIHRoYW4gdGhlIGNvbnN0cnVjdG9yCisgICAgLy8gdG8gYXZvaWQgdGhyZWFkaW5nIHRoZSBp
bnB1dCBjdXJzb3IgdGhyb3VnaCBhbGwgdGhlIGFic3RyYWN0aW9uIGxheWVycy4KKyAgICBpZiAo
Y3Vyc29yLmlzQ2FwdHVyaW5nKCkpCisgICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxTZXRSYW5k
b21TZWVkPihtX3dlYWtSYW5kb20uc2VlZFVuc2FmZSgpKTsKKworICAgIGlmIChjdXJzb3IuaXNS
ZXBsYXlpbmcoKSkgeworICAgICAgICBpZiAoU2V0UmFuZG9tU2VlZCogaW5wdXQgPSBjdXJzb3Iu
ZmV0Y2hJbnB1dDxTZXRSYW5kb21TZWVkPigpKQorICAgICAgICAgICAgbV93ZWFrUmFuZG9tLmlu
aXRpYWxpemVTZWVkKGlucHV0LT5yYW5kb21TZWVkKCkpOworICAgIH0KIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmgKaW5kZXggM2NkMTAxNmQz
YmRjMjliZDhmZTIwZTNlNWE3NWRhMjUxNDk2OGVmYi4uOThiMjNjNzBkNmE5YzYwYTllMzU2OGQ1
NzUzZmJiOTczODNkOWNlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha1JhbmRvbS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtS
YW5kb20uaApAQCAtNTYsMTEgKzU2LDExIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgV2Vh
a1JhbmRvbSB7CitmcmllbmQgY2xhc3MgSlNHbG9iYWxPYmplY3Q7IC8vIEZvciBhY2Nlc3MgdG8g
aW5pdGlhbGl6ZVNlZWQoKSBkdXJpbmcgcmVwbGF5LgogcHVibGljOgogICAgIFdlYWtSYW5kb20o
dW5zaWduZWQgc2VlZCkKLSAgICAgICAgOiBtX2xvdyhzZWVkIF4gMHg0OTYxNkU0MikKLSAgICAg
ICAgLCBtX2hpZ2goc2VlZCkKICAgICB7CisgICAgICAgIGluaXRpYWxpemVTZWVkKHNlZWQpOwog
ICAgIH0KICAgICAKICAgICAvLyBSZXR1cm5zIHRoZSBzZWVkIHByb3ZpZGVkIHRoYXQgeW91J3Zl
IG5ldmVyIGNhbGxlZCBnZXQoKSBvciBnZXRVaW50MzIoKS4KQEAgLTg1LDYgKzg1LDEyIEBAIHBy
aXZhdGU6CiAgICAgICAgIHJldHVybiBtX2hpZ2g7CiAgICAgfQogCisgICAgdm9pZCBpbml0aWFs
aXplU2VlZCh1bnNpZ25lZCBzZWVkKQorICAgIHsKKyAgICAgICAgbV9sb3cgPSBzZWVkIF4gMHg0
OTYxNkU0MjsKKyAgICAgICAgbV9oaWdoID0gc2VlZDsKKyAgICB9CisKICAgICB1bnNpZ25lZCBt
X2xvdzsKICAgICB1bnNpZ25lZCBtX2hpZ2g7CiB9Owo=
</data>
<flag name="review"
          id="247993"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>