<?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>83610</bug_id>
          
          <creation_ts>2012-04-10 13:09:31 -0700</creation_ts>
          <short_desc>AudioParam must support fan-in (multiple audio connections)</short_desc>
          <delta_ts>2012-05-23 14:45:37 -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>Web Audio</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>
          <dependson>86710</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Chris Rogers">crogers</assigned_to>
          <cc>crogers</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>599558</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-04-10 13:09:31 -0700</bug_when>
    <thetext>AudioNodes already support multiple connections from diverse sources (with implicit unity-gain summing).
When it becomes possible to connect an AudioNode to an AudioParam, then we should similarly support multiple connections with implicit summing.

This depends on:
https://bugs.webkit.org/show_bug.cgi?id=83524</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624827</commentid>
    <comment_count>1</comment_count>
      <attachid>142120</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-05-15 18:36:36 -0700</bug_when>
    <thetext>Created attachment 142120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624920</commentid>
    <comment_count>2</comment_count>
      <attachid>142120</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-15 20:41:05 -0700</bug_when>
    <thetext>Comment on attachment 142120
Patch

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

Looks good to me overall. Couple of minor comments.

&gt; LayoutTests/webaudio/audioparam-connect-audioratesignal.html:92
&gt; +    gainNode.gain.value = 0;

Is this change really related to this patch? If not, I suggest splitting it out. If so, will existing Web Audio apps need to be updated?

&gt; LayoutTests/webaudio/audioparam-summingjunction.html:97
&gt; +    // Create 2st buffer used to control gain (a simple sine wave tone).

2st -&gt; 2nd</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626089</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-05-16 18:13:34 -0700</bug_when>
    <thetext>Committed r117372: &lt;http://trac.webkit.org/changeset/117372&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626094</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-05-16 18:17:41 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 142120 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=142120&amp;action=review
&gt; 
&gt; Looks good to me overall. Couple of minor comments.
&gt; 
&gt; &gt; LayoutTests/webaudio/audioparam-connect-audioratesignal.html:92
&gt; &gt; +    gainNode.gain.value = 0;
&gt; 
&gt; Is this change really related to this patch? If not, I suggest splitting it out. If so, will existing Web Audio apps need to be updated?

Yes, the behavior needs to be changed to this -- it&apos;s the &quot;correct&quot; thing to do.

The audio-rate control of AudioParams is very new (within the last couple of weeks) and is a bit more specialized, so I&apos;m not concerned about breaking existing content here.

&gt; 
&gt; &gt; LayoutTests/webaudio/audioparam-summingjunction.html:97
&gt; &gt; +    // Create 2st buffer used to control gain (a simple sine wave tone).
&gt; 
&gt; 2st -&gt; 2nd

FIXED</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626303</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-16 23:41:38 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 86710</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631861</commentid>
    <comment_count>6</comment_count>
      <attachid>143605</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-05-23 11:47:25 -0700</bug_when>
    <thetext>Created attachment 143605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631865</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-05-23 11:49:21 -0700</bug_when>
    <thetext>Hi Ken, I&apos;m hoping to reland the original patch (which was reverted) now that a fix has been commited in:
http://trac.webkit.org/changeset/118099</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632010</commentid>
    <comment_count>8</comment_count>
      <attachid>143605</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-23 13:51:58 -0700</bug_when>
    <thetext>Comment on attachment 143605
Patch

Looks fine as far as I can tell from code inspection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632070</commentid>
    <comment_count>9</comment_count>
      <attachid>143605</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-23 14:45:32 -0700</bug_when>
    <thetext>Comment on attachment 143605
Patch

Clearing flags on attachment: 143605

Committed r118247: &lt;http://trac.webkit.org/changeset/118247&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632071</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-23 14:45:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142120</attachid>
            <date>2012-05-15 18:36:36 -0700</date>
            <delta_ts>2012-05-23 11:47:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83610-20120515183635.patch</filename>
            <type>text/plain</type>
            <size>15652</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNjZGM3N2Q4MDEwYzFi
MjliZTBjOTEwMWIxZTI3ODUxODcyNDZjMS4uZmRhYWFmNGYwMWEyYzQ4OTFhNDEyNzQxOGE2MmZh
MmE1ZTk4MTA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA1LTE1ICBDaHJp
cyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CisKKyAgICAgICAgQXVkaW9QYXJhbSBtdXN0
IHN1cHBvcnQgZmFuLWluIChtdWx0aXBsZSBhdWRpbyBjb25uZWN0aW9ucykKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNjEwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogd2ViYXVkaW8vYXVkaW9w
YXJhbS1zdW1taW5nanVuY3Rpb24uaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06OmNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlVmFs
dWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06OmNhbGN1bGF0ZUF1ZGlvUmF0ZVNp
Z25hbFZhbHVlcyk6CisgICAgICAgIFN1bXMgaW50cmluc2ljIHBhcmFtZXRlciB2YWx1ZSB3aXRo
IGFsbCBhdWRpby1yYXRlIGNvbm5lY3Rpb25zLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvUGFyYW06OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbTo6ZGlz
Y29ubmVjdCk6CisgICAgICAgIFN1cHBvcnQgbXVsdGlwbGUgY29ubmVjdGlvbnMuCisgICAgICAg
IAorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbTo6aGFzU2FtcGxlQWNjdXJhdGVWYWx1ZXMp
OgorICAgICAgICBJZiB3ZSBoYXZlIG9uZSBvciBtb3JlIGF1ZGlvLXJhdGUgY29ubmVjdGlvbnMu
CisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbTo6QXVkaW9QYXJhbSk6Cisg
ICAgICAgIEF1ZGlvUGFyYW0gbm93IHN1Yi1jbGFzc2VzIEF1ZGlvU3VtbWluZ0p1bmN0aW9uLgor
CiAyMDEyLTA1LTE1ICBUZXJyeSBBbmRlcnNvbiAgPHRkYW5kZXJzb25AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gQ29tcHV0ZSB0aGUgYmVzdCB0YXJnZXQgbm9kZSBvbiBhIEdl
c3R1cmVUYXAgZXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9QYXJhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
UGFyYW0uY3BwCmluZGV4IGRlYzcwODc4MjVlMWE4YWU0OWE3YmUxOTE3ZDQ2YTM1YmYzZWYwNWUu
LjE1YzY3NDMxZDE4ODgwMjlhMDVlYTgwNmViZmNkM2VmOGMxNWZlOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcApAQCAtMTAxLDcgKzEwMSw3
IEBAIHZvaWQgQXVkaW9QYXJhbTo6Y2FsY3VsYXRlU2FtcGxlQWNjdXJhdGVWYWx1ZXMoZmxvYXQq
IHZhbHVlcywgdW5zaWduZWQgbnVtYmVyT2ZWCiAgICAgaWYgKCFpc1NhZmUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChtX2F1ZGlvUmF0ZVNpZ25hbCkKKyAgICBpZiAobnVtYmVyT2ZSZW5k
ZXJpbmdDb25uZWN0aW9ucygpKQogICAgICAgICBjYWxjdWxhdGVBdWRpb1JhdGVTaWduYWxWYWx1
ZXModmFsdWVzLCBudW1iZXJPZlZhbHVlcyk7CiAgICAgZWxzZQogICAgICAgICBjYWxjdWxhdGVU
aW1lbGluZVZhbHVlcyh2YWx1ZXMsIG51bWJlck9mVmFsdWVzKTsKQEAgLTEwOSwyNiArMTA5LDQw
IEBAIHZvaWQgQXVkaW9QYXJhbTo6Y2FsY3VsYXRlU2FtcGxlQWNjdXJhdGVWYWx1ZXMoZmxvYXQq
IHZhbHVlcywgdW5zaWduZWQgbnVtYmVyT2ZWCiAKIHZvaWQgQXVkaW9QYXJhbTo6Y2FsY3VsYXRl
QXVkaW9SYXRlU2lnbmFsVmFsdWVzKGZsb2F0KiB2YWx1ZXMsIHVuc2lnbmVkIG51bWJlck9mVmFs
dWVzKQogewotICAgIC8vIEZJWE1FOiBzdXBwb3J0IGZhbi1pbiAobXVsdGlwbGUgYXVkaW8gY29u
bmVjdGlvbnMgdG8gdGhpcyBwYXJhbWV0ZXIgd2l0aCB1bml0eS1nYWluIHN1bW1pbmcpLgotICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzYxMAotICAgIEFT
U0VSVChtX2F1ZGlvUmF0ZVNpZ25hbCk7Ci0KLSAgICBBdWRpb0J1cyogYnVzID0gbV9hdWRpb1Jh
dGVTaWduYWwtPnB1bGwoMCwgbnVtYmVyT2ZWYWx1ZXMpOwotICAgIGJvb2wgaXNCdXNHb29kID0g
YnVzICYmIGJ1cy0+bnVtYmVyT2ZDaGFubmVscygpICYmIGJ1cy0+bGVuZ3RoKCkgPj0gbnVtYmVy
T2ZWYWx1ZXM7Ci0gICAgQVNTRVJUKGlzQnVzR29vZCk7Ci0gICAgaWYgKCFpc0J1c0dvb2QpCisg
ICAgYm9vbCBpc0dvb2QgPSBudW1iZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCkgJiYgbnVtYmVy
T2ZWYWx1ZXM7CisgICAgQVNTRVJUKGlzR29vZCk7CisgICAgaWYgKCFpc0dvb2QpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChidXMtPm51bWJlck9mQ2hhbm5lbHMoKSA9PSAxKSB7Ci0gICAg
ICAgIC8vIFRoZSBub3JtYWwgY2FzZSBpcyB0byBkZWFsIHdpdGggYSBtb25vIGF1ZGlvLXJhdGUg
c2lnbmFsLgotICAgICAgICBtZW1jcHkodmFsdWVzLCBidXMtPmNoYW5uZWwoMCktPmRhdGEoKSwg
c2l6ZW9mKGZsb2F0KSAqIG51bWJlck9mVmFsdWVzKTsKKyAgICAvLyBUaGUgY2FsY3VsYXRlZCBy
ZXN1bHQgd2lsbCBiZSB0aGUgImludHJpbnNpYyIgdmFsdWUgc3VtbWVkIHdpdGggYWxsIGF1ZGlv
LXJhdGUgY29ubmVjdGlvbnMuCisKKyAgICBpZiAobV90aW1lbGluZS5oYXNWYWx1ZXMoKSkgewor
ICAgICAgICAvLyBDYWxjdWxhdGUgcmVndWxhciB0aW1lbGluZSB2YWx1ZXMsIGlmIHdlIGhhdmUg
YW55LgorICAgICAgICBjYWxjdWxhdGVUaW1lbGluZVZhbHVlcyh2YWx1ZXMsIG51bWJlck9mVmFs
dWVzKTsKICAgICB9IGVsc2UgewotICAgICAgICAvLyBEbyBhIHN0YW5kYXJkIG1peGRvd24gdG8g
b25lIGNoYW5uZWwgaWYgbmVjZXNzYXJ5LgotICAgICAgICBBdWRpb0J1cyB3cmFwcGVyQnVzKDEs
IG51bWJlck9mVmFsdWVzLCBmYWxzZSk7Ci0gICAgICAgIHdyYXBwZXJCdXMuc2V0Q2hhbm5lbE1l
bW9yeSgwLCB2YWx1ZXMsIG51bWJlck9mVmFsdWVzKTsKLSAgICAgICAgd3JhcHBlckJ1cy5jb3B5
RnJvbSgqYnVzKTsgLy8gTWl4ZG93bi4KKyAgICAgICAgLy8gT3RoZXJ3aXNlIHNldCB2YWx1ZXMg
YXJyYXkgdG8gb3VyIGNvbnN0YW50IHZhbHVlLgorICAgICAgICBmbG9hdCB2YWx1ZSA9IG1fdmFs
dWU7IC8vIENhY2hlIGluIGxvY2FsLgorCisgICAgICAgIC8vIEZJWE1FOiBjYW4gYmUgb3B0aW1p
emVkIGlmIHdlIGNyZWF0ZSBhIG5ldyBWZWN0b3JNYXRoIGZ1bmN0aW9uLgorICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZWYWx1ZXM7ICsraSkKKyAgICAgICAgICAgIHZh
bHVlc1tpXSA9IHZhbHVlOworICAgIH0KKworICAgIC8vIE5vdyBzdW0gYWxsIG9mIHRoZSBhdWRp
by1yYXRlIGNvbm5lY3Rpb25zIHRvZ2V0aGVyICh1bml0eS1nYWluIHN1bW1pbmcganVuY3Rpb24p
LgorICAgIC8vIE5vdGUgdGhhdCBjb25uZWN0aW9ucyB3b3VsZCBub3JtYWxseSBiZSBtb25vLCBi
dXQgd2UgbWl4IGRvd24gdG8gbW9ubyBpZiBuZWNlc3NhcnkuCisgICAgQXVkaW9CdXMgc3VtbWlu
Z0J1cygxLCBudW1iZXJPZlZhbHVlcywgZmFsc2UpOworICAgIHN1bW1pbmdCdXMuc2V0Q2hhbm5l
bE1lbW9yeSgwLCB2YWx1ZXMsIG51bWJlck9mVmFsdWVzKTsKKworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBudW1iZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCk7ICsraSkgeworICAgICAg
ICBBdWRpb05vZGVPdXRwdXQqIG91dHB1dCA9IHJlbmRlcmluZ091dHB1dChpKTsKKyAgICAgICAg
QVNTRVJUKG91dHB1dCk7CisKKyAgICAgICAgLy8gUmVuZGVyIGF1ZGlvIGZyb20gdGhpcyBvdXRw
dXQuCisgICAgICAgIEF1ZGlvQnVzKiBjb25uZWN0aW9uQnVzID0gb3V0cHV0LT5wdWxsKDAsIG51
bWJlck9mVmFsdWVzKTsKKworICAgICAgICAvLyBTdW0sIHdpdGggdW5pdHktZ2Fpbi4KKyAgICAg
ICAgc3VtbWluZ0J1cy5zdW1Gcm9tKCpjb25uZWN0aW9uQnVzKTsKICAgICB9Ci0gICAgbV92YWx1
ZSA9IHZhbHVlc1swXTsgLy8gVXBkYXRlIHRvIGZpcnN0IHZhbHVlLgogfQogCiB2b2lkIEF1ZGlv
UGFyYW06OmNhbGN1bGF0ZVRpbWVsaW5lVmFsdWVzKGZsb2F0KiB2YWx1ZXMsIHVuc2lnbmVkIG51
bWJlck9mVmFsdWVzKQpAQCAtMTQ0LDMzICsxNTgsMzUgQEAgdm9pZCBBdWRpb1BhcmFtOjpjYWxj
dWxhdGVUaW1lbGluZVZhbHVlcyhmbG9hdCogdmFsdWVzLCB1bnNpZ25lZCBudW1iZXJPZlZhbHVl
cykKICAgICBtX3ZhbHVlID0gbV90aW1lbGluZS52YWx1ZXNGb3JUaW1lUmFuZ2Uoc3RhcnRUaW1l
LCBlbmRUaW1lLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG1fdmFsdWUpLCB2YWx1ZXMsIG51bWJl
ck9mVmFsdWVzLCBzYW1wbGVSYXRlLCBzYW1wbGVSYXRlKTsKIH0KIAotdm9pZCBBdWRpb1BhcmFt
Ojpjb25uZWN0KEF1ZGlvTm9kZU91dHB1dCogYXVkaW9SYXRlU2lnbmFsKQordm9pZCBBdWRpb1Bh
cmFtOjpjb25uZWN0KEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0KQogewogICAgIEFTU0VSVChjb250
ZXh0KCktPmlzR3JhcGhPd25lcigpKTsKLSAgICBBU1NFUlQoYXVkaW9SYXRlU2lnbmFsKTsKLSAg
ICBpZiAoIWF1ZGlvUmF0ZVNpZ25hbCkKKworICAgIEFTU0VSVChvdXRwdXQpOworICAgIGlmICgh
b3V0cHV0KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9hdWRpb1JhdGVTaWduYWwgJiYg
bV9hdWRpb1JhdGVTaWduYWwgIT0gYXVkaW9SYXRlU2lnbmFsKSB7Ci0gICAgICAgIC8vIEJlY2F1
c2Ugd2UgZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQgZmFuLWluIHdlIG11c3QgZXhwbGljaXRseSBk
aXNjb25uZWN0IGZyb20gYW4gb2xkIG91dHB1dC4KLSAgICAgICAgbV9hdWRpb1JhdGVTaWduYWwt
PnJlbW92ZVBhcmFtKHRoaXMpOwotICAgIH0KKyAgICBpZiAobV9vdXRwdXRzLmNvbnRhaW5zKG91
dHB1dCkpCisgICAgICAgIHJldHVybjsKIAotICAgIGF1ZGlvUmF0ZVNpZ25hbC0+YWRkUGFyYW0o
dGhpcyk7Ci0gICAgbV9hdWRpb1JhdGVTaWduYWwgPSBhdWRpb1JhdGVTaWduYWw7CisgICAgb3V0
cHV0LT5hZGRQYXJhbSh0aGlzKTsKKyAgICBtX291dHB1dHMuYWRkKG91dHB1dCk7CisgICAgY2hh
bmdlZE91dHB1dHMoKTsKIH0KIAotdm9pZCBBdWRpb1BhcmFtOjpkaXNjb25uZWN0KEF1ZGlvTm9k
ZU91dHB1dCogYXVkaW9SYXRlU2lnbmFsKQordm9pZCBBdWRpb1BhcmFtOjpkaXNjb25uZWN0KEF1
ZGlvTm9kZU91dHB1dCogb3V0cHV0KQogewogICAgIEFTU0VSVChjb250ZXh0KCktPmlzR3JhcGhP
d25lcigpKTsKLSAgICBBU1NFUlQoYXVkaW9SYXRlU2lnbmFsKTsKLSAgICBpZiAoIWF1ZGlvUmF0
ZVNpZ25hbCkKKworICAgIEFTU0VSVChvdXRwdXQpOworICAgIGlmICghb3V0cHV0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogc3VwcG9ydCBmYW4taW4gKG11bHRpcGxlIGF1ZGlv
IGNvbm5lY3Rpb25zIHRvIHRoaXMgcGFyYW1ldGVyIHdpdGggdW5pdHktZ2FpbiBzdW1taW5nKS4K
LSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MTAKLSAg
ICBpZiAobV9hdWRpb1JhdGVTaWduYWwgPT0gYXVkaW9SYXRlU2lnbmFsKQotICAgICAgICBtX2F1
ZGlvUmF0ZVNpZ25hbCA9IDA7CisgICAgaWYgKG1fb3V0cHV0cy5jb250YWlucyhvdXRwdXQpKSB7
CisgICAgICAgIG1fb3V0cHV0cy5yZW1vdmUob3V0cHV0KTsKKyAgICAgICAgY2hhbmdlZE91dHB1
dHMoKTsKKyAgICAgICAgb3V0cHV0LT5yZW1vdmVQYXJhbSh0aGlzKTsKKyAgICB9CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9QYXJhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtLmgKaW5kZXggM2JkMjdhYmQ4Yzg2ZGU4ZDRhZWVhNzQ5YjE1NDllMzdjZjc5NGE0
OS4uOTBmZGUzYjUyMDUyYTlmNTMxYTNlYzM1MWVlYmRhMWE5OWM0ODA2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKQEAgLTMxLDYgKzMxLDcgQEAK
IAogI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvUGFyYW1UaW1lbGlu
ZS5oIgorI2luY2x1ZGUgIkF1ZGlvU3VtbWluZ0p1bmN0aW9uLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvRmxvYXQz
MkFycmF5Lmg+CkBAIC00MSw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QXVkaW9Ob2RlT3V0cHV0OwogCi1jbGFzcyBBdWRpb1BhcmFtIDogcHVibGljIFJlZkNvdW50ZWQ8
QXVkaW9QYXJhbT4geworY2xhc3MgQXVkaW9QYXJhbSA6IHB1YmxpYyBBdWRpb1N1bW1pbmdKdW5j
dGlvbiwgcHVibGljIFJlZkNvdW50ZWQ8QXVkaW9QYXJhbT4gewogcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBkb3VibGUgRGVmYXVsdFNtb290aGluZ0NvbnN0YW50OwogICAgIHN0YXRpYyBjb25z
dCBkb3VibGUgU25hcFRocmVzaG9sZDsKQEAgLTUxLDcgKzUyLDkgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvUGFyYW0oY29udGV4dCwgbmFtZSwgZGVmYXVsdFZh
bHVlLCBtaW5WYWx1ZSwgbWF4VmFsdWUsIHVuaXRzKSk7CiAgICAgfQogCi0gICAgQXVkaW9Db250
ZXh0KiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisgICAgLy8gQXVkaW9T
dW1taW5nSnVuY3Rpb24KKyAgICB2aXJ0dWFsIGJvb2wgY2FuVXBkYXRlU3RhdGUoKSBPVkVSUklE
RSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZSgpIE9WRVJSSURF
IHsgfQogCiAgICAgZmxvYXQgdmFsdWUoKTsKICAgICB2b2lkIHNldFZhbHVlKGZsb2F0KTsKQEAg
LTg0LDcgKzg3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmFsdWVDdXJ2ZUF0VGltZShGbG9h
dDMyQXJyYXkqIGN1cnZlLCBmbG9hdCB0aW1lLCBmbG9hdCBkdXJhdGlvbikgeyBtX3RpbWVsaW5l
LnNldFZhbHVlQ3VydmVBdFRpbWUoY3VydmUsIHRpbWUsIGR1cmF0aW9uKTsgfQogICAgIHZvaWQg
Y2FuY2VsU2NoZWR1bGVkVmFsdWVzKGZsb2F0IHN0YXJ0VGltZSkgeyBtX3RpbWVsaW5lLmNhbmNl
bFNjaGVkdWxlZFZhbHVlcyhzdGFydFRpbWUpOyB9CiAKLSAgICBib29sIGhhc1NhbXBsZUFjY3Vy
YXRlVmFsdWVzKCkgeyByZXR1cm4gbV90aW1lbGluZS5oYXNWYWx1ZXMoKSB8fCBtX2F1ZGlvUmF0
ZVNpZ25hbDsgfQorICAgIGJvb2wgaGFzU2FtcGxlQWNjdXJhdGVWYWx1ZXMoKSB7IHJldHVybiBt
X3RpbWVsaW5lLmhhc1ZhbHVlcygpIHx8IG51bWJlck9mUmVuZGVyaW5nQ29ubmVjdGlvbnMoKTsg
fQogICAgIAogICAgIC8vIENhbGN1bGF0ZXMgbnVtYmVyT2ZWYWx1ZXMgcGFyYW1ldGVyIHZhbHVl
cyBzdGFydGluZyBhdCB0aGUgY29udGV4dCdzIGN1cnJlbnQgdGltZS4KICAgICAvLyBNdXN0IGJl
IGNhbGxlZCBpbiB0aGUgY29udGV4dCdzIHJlbmRlciB0aHJlYWQuCkBAIC05Niw3ICs5OSw3IEBA
IHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5W
YWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApCi0gICAgICAgIDogbV9j
b250ZXh0KGNvbnRleHQpCisgICAgICAgIDogQXVkaW9TdW1taW5nSnVuY3Rpb24oY29udGV4dCkK
ICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICAgICAgLCBtX3ZhbHVlKGRlZmF1bHRWYWx1ZSkK
ICAgICAgICAgLCBtX2RlZmF1bHRWYWx1ZShkZWZhdWx0VmFsdWUpCkBAIC0xMDUsNyArMTA4LDYg
QEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1fdW5pdHModW5pdHMpCiAgICAgICAgICwgbV9zbW9v
dGhlZFZhbHVlKGRlZmF1bHRWYWx1ZSkKICAgICAgICAgLCBtX3Ntb290aGluZ0NvbnN0YW50KERl
ZmF1bHRTbW9vdGhpbmdDb25zdGFudCkKLSAgICAgICAgLCBtX2F1ZGlvUmF0ZVNpZ25hbCgwKQog
ICAgIHsKICAgICB9CiAKQEAgLTExMyw3ICsxMTUsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY2Fs
Y3VsYXRlQXVkaW9SYXRlU2lnbmFsVmFsdWVzKGZsb2F0KiB2YWx1ZXMsIHVuc2lnbmVkIG51bWJl
ck9mVmFsdWVzKTsKICAgICB2b2lkIGNhbGN1bGF0ZVRpbWVsaW5lVmFsdWVzKGZsb2F0KiB2YWx1
ZXMsIHVuc2lnbmVkIG51bWJlck9mVmFsdWVzKTsKIAotICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+
IG1fY29udGV4dDsKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIGRvdWJsZSBtX3ZhbHVlOwogICAg
IGRvdWJsZSBtX2RlZmF1bHRWYWx1ZTsKQEAgLTEyNiwxMSArMTI3LDYgQEAgcHJpdmF0ZToKICAg
ICBkb3VibGUgbV9zbW9vdGhpbmdDb25zdGFudDsKICAgICAKICAgICBBdWRpb1BhcmFtVGltZWxp
bmUgbV90aW1lbGluZTsKLQotICAgIC8vIEFuIGF1ZGlvLXJhdGUgc2lnbmFsIGRpcmVjdGx5IHBy
b3ZpZGluZyBwYXJhbWV0ZXIgdmFsdWVzLgotICAgIC8vIEZJWE1FOiBzdXBwb3J0IGZhbi1pbiAo
bXVsdGlwbGUgYXVkaW8gY29ubmVjdGlvbnMgdG8gdGhpcyBwYXJhbWV0ZXIgd2l0aCB1bml0eS1n
YWluIHN1bW1pbmcpLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MzYxMAotICAgIEF1ZGlvTm9kZU91dHB1dCogbV9hdWRpb1JhdGVTaWduYWw7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTE4M2FiNDI4MmQwNTRlODRkZjUxNTk0
MTA5YmNhYTMzYzlmNTg3MS4uYzNlNDcyODY1YTM1MjcyYjliM2M3M2M1NDgzODIxMzlkYTRhYjMx
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA1LTE1ICBDaHJpcyBSb2dlcnMgIDxjcm9n
ZXJzQGdvb2dsZS5jb20+CisKKyAgICAgICAgQXVkaW9QYXJhbSBtdXN0IHN1cHBvcnQgZmFuLWlu
IChtdWx0aXBsZSBhdWRpbyBjb25uZWN0aW9ucykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNjEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJhdWRpby9hdWRpb3BhcmFtLWNvbm5lY3QtYXVkaW9y
YXRlc2lnbmFsLmh0bWw6CisgICAgICAgICogd2ViYXVkaW8vYXVkaW9wYXJhbS1zdW1taW5nanVu
Y3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9hdWRpb3BhcmFt
LXN1bW1pbmdqdW5jdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMi0wNS0xNSAgVGVycnkgQW5kZXJz
b24gIDx0ZGFuZGVyc29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENvbXB1
dGUgdGhlIGJlc3QgdGFyZ2V0IG5vZGUgb24gYSBHZXN0dXJlVGFwIGV2ZW50CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb3BhcmFtLWNvbm5lY3QtYXVkaW9yYXRlc2lnbmFs
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb3BhcmFtLWNvbm5lY3QtYXVkaW9yYXRl
c2lnbmFsLmh0bWwKaW5kZXggNTQ2ZWI3MDNmOGIwOWNiMmY4NzE4YmY5ZDI3YjY1ZjFmYTQ2OGJm
NS4uYTA1MzYxYWM3MDZkZGY3NDE5MmE0NmIwZTcwOTgxZjI4MDUwMmFjOSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9wYXJhbS1jb25uZWN0LWF1ZGlvcmF0ZXNpZ25hbC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvcGFyYW0tY29ubmVjdC1hdWRpb3Jh
dGVzaWduYWwuaHRtbApAQCAtODcsNiArODcsMTAgQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKIAog
ICAgIC8vIENyZWF0ZSBhIGdhaW4gbm9kZSBjb250cm9sbGluZyB0aGUgZ2FpbiBvZiBjb25zdGFu
dFNvdXJjZSBhbmQgbWFrZSB0aGUgY29ubmVjdGlvbnMuCiAgICAgdmFyIGdhaW5Ob2RlID0gY29u
dGV4dC5jcmVhdGVHYWluTm9kZSgpOworCisgICAgLy8gSW50cmluc2ljIGJhc2VsaW5lIGdhaW4g
b2YgemVyby4KKyAgICBnYWluTm9kZS5nYWluLnZhbHVlID0gMDsKKwogICAgIGNvbnN0YW50U291
cmNlLmNvbm5lY3QoZ2Fpbk5vZGUpOwogICAgIGdhaW5Ob2RlLmNvbm5lY3QoY29udGV4dC5kZXN0
aW5hdGlvbik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvcGFyYW0t
c3VtbWluZ2p1bmN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlv
cGFyYW0tc3VtbWluZ2p1bmN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTI4YTA5NGQ5
NTIwN2ViZDUyYzExMGE1ZmIwOWI0MzQ4MDE5ZjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vYXVkaW9wYXJhbS1zdW1taW5nanVuY3Rpb24tZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNiBAQAorUEFTUyBSZW5kZXJlZCBzaWduYWwgaXMgb2YgY29ycmVjdCBsZW5ndGgu
CitQQVNTIFJlbmRlcmVkIHNpZ25hbCBtYXRjaGVzIHN1bSBvZiB0d28gYXVkaW8tcmF0ZSBnYWlu
IGNoYW5naW5nIHNpZ25hbHMgcGx1cyBiYXNlbGluZSBnYWluLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL2F1ZGlvcGFyYW0tc3VtbWluZ2p1bmN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJhdWRpby9hdWRpb3BhcmFtLXN1bW1pbmdqdW5jdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NTUx
YjU1YTgyMzA0NjQxZDA1OTQ3YTE0NjAyOTUxYmE2ZTQ0NjUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb3BhcmFtLXN1bW1pbmdqdW5jdGlvbi5odG1sCkBAIC0w
LDAgKzEsMTMyIEBACis8IURPQ1RZUEUgaHRtbD4KKworPCEtLQorVGVzdHMgdGhhdCBtdWx0aXBs
ZSBhdWRpby1yYXRlIHNpZ25hbHMgKEF1ZGlvTm9kZSBvdXRwdXRzKSBjYW4gYmUgY29ubmVjdGVk
IHRvIGFuIEF1ZGlvUGFyYW0KK2FuZCB0aGF0IHRoZXNlIHNpZ25hbHMgYXJlIHN1bW1lZCwgYWxv
bmcgd2l0aCB0aGUgQXVkaW9QYXJhbXMgaW50cmluc2ljIHZhbHVlLgorLS0+CisKKzxodG1sPgor
PGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2F1ZGlvLXRlc3Rp
bmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9taXgtdGVzdGluZy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorCis8L2hlYWQ+Cis8Ym9keT4KKworPHNjcmlwdD4KKwordmFyIHNhbXBs
ZVJhdGUgPSA0NDEwMC4wOwordmFyIGxlbmd0aEluU2Vjb25kcyA9IDE7CisKK3ZhciBjb250ZXh0
ID0gMDsKKworLy8gQnVmZmVycyB1c2VkIGJ5IHRoZSB0d28gZ2FpbiBjb250cm9sbGluZyBzb3Vy
Y2VzLgordmFyIGxpbmVhclJhbXBCdWZmZXI7Cit2YXIgdG9uZUJ1ZmZlcjsKK3ZhciB0b25lRnJl
cXVlbmN5ID0gNDQwOworCisvLyBBcmJpdHJhcnkgbm9uLXplcm8gdmFsdWUuCit2YXIgYmFzZWxp
bmVHYWluID0gNTsKKworLy8gQWxsb3cgZm9yIGEgc21hbGwgcm91bmQtb2ZmIGVycm9yLgordmFy
IG1heEFsbG93ZWRFcnJvciA9IDFlLTY7CisKK2Z1bmN0aW9uIGNoZWNrUmVzdWx0KGV2ZW50KSB7
CisgICAgdmFyIHJlbmRlcmVkQnVmZmVyID0gZXZlbnQucmVuZGVyZWRCdWZmZXI7CisgICAgdmFy
IHJlbmRlcmVkRGF0YSA9IHJlbmRlcmVkQnVmZmVyLmdldENoYW5uZWxEYXRhKDApOworCisgICAg
Ly8gR2V0IGJ1ZmZlciBkYXRhIGZyb20gdGhlIHR3byBzb3VyY2VzIHVzZWQgdG8gY29udHJvbCBn
YWluLgorICAgIHZhciBsaW5lYXJSYW1wRGF0YSA9IGxpbmVhclJhbXBCdWZmZXIuZ2V0Q2hhbm5l
bERhdGEoMCk7CisgICAgdmFyIHRvbmVEYXRhID0gdG9uZUJ1ZmZlci5nZXRDaGFubmVsRGF0YSgw
KTsKKworICAgIHZhciBuID0gcmVuZGVyZWRCdWZmZXIubGVuZ3RoOworCisgICAgaWYgKG4gPT0g
bGluZWFyUmFtcEJ1ZmZlci5sZW5ndGgpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiUmVuZGVyZWQg
c2lnbmFsIGlzIG9mIGNvcnJlY3QgbGVuZ3RoLiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRl
c3RGYWlsZWQoIlJlbmRlcmVkIHNpZ25hbCBpcyBub3Qgb2YgY29ycmVjdCBsZW5ndGguIik7Cisg
ICAgfQorCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgcmVuZGVyZWQgcmVzdWx0IGV4YWN0bHkgbWF0
Y2hlcyB0aGUgc3VtIG9mIHRoZSBpbnRyaW5zaWMgZ2FpbiBwbHVzIHRoZSB0d28gc291cmNlcyB1
c2VkIHRvIGNvbnRyb2wgZ2Fpbi4KKyAgICAvLyBUaGlzIGlzIGJlY2F1c2Ugd2UncmUgY2hhbmdp
bmcgdGhlIGdhaW4gb2YgYSBzaWduYWwgaGF2aW5nIGNvbnN0YW50IHZhbHVlIDEuCisgICAgdmFy
IHN1Y2Nlc3MgPSB0cnVlOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAg
ICAgIHZhciBleHBlY3RlZFZhbHVlID0gYmFzZWxpbmVHYWluICsgbGluZWFyUmFtcERhdGFbaV0g
KyB0b25lRGF0YVtpXTsKKyAgICAgICAgdmFyIGVycm9yID0gTWF0aC5hYnMoZXhwZWN0ZWRWYWx1
ZSAtIHJlbmRlcmVkRGF0YVtpXSk7CisKKyAgICAgICAgaWYgKGVycm9yID4gbWF4QWxsb3dlZEVy
cm9yKSB7CisgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzdWNjZXNzKSB7CisgICAgICAgIHRlc3RQYXNz
ZWQoIlJlbmRlcmVkIHNpZ25hbCBtYXRjaGVzIHN1bSBvZiB0d28gYXVkaW8tcmF0ZSBnYWluIGNo
YW5naW5nIHNpZ25hbHMgcGx1cyBiYXNlbGluZSBnYWluLiIpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHRlc3RGYWlsZWQoIlJlbmRlcmVkIHNpZ25hbCBkaWZmZXJzIGZyb20gdGhlIHN1bSBvZiB0
d28gYXVkaW8tcmF0ZSBnYWluIGNoYW5naW5nIHNpZ25hbHMgcGx1cyBiYXNlbGluZSBnYWluLiIp
OworICAgIH0KKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkg
eworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgdmFyIHNhbXBsZUZyYW1lTGVuZ3RoID0gc2FtcGxlUmF0ZSAqIGxlbmd0aElu
U2Vjb25kczsKKworICAgIC8vIENyZWF0ZSBvZmZsaW5lIGF1ZGlvIGNvbnRleHQuCisgICAgY29u
dGV4dCA9IG5ldyB3ZWJraXRBdWRpb0NvbnRleHQoMSwgc2FtcGxlRnJhbWVMZW5ndGgsIHNhbXBs
ZVJhdGUpOworCisgICAgLy8gQ3JlYXRlIGJ1ZmZlciB1c2VkIGJ5IHRoZSBzb3VyY2Ugd2hpY2gg
d2lsbCBoYXZlIGl0cyBnYWluIGNvbnRyb2xsZWQuCisgICAgdmFyIGNvbnN0YW50T25lQnVmZmVy
ID0gY3JlYXRlQ29uc3RhbnRCdWZmZXIoY29udGV4dCwgc2FtcGxlRnJhbWVMZW5ndGgsIDEpOwor
ICAgIHZhciBjb25zdGFudFNvdXJjZSA9IGNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7Cisg
ICAgY29uc3RhbnRTb3VyY2UuYnVmZmVyID0gY29uc3RhbnRPbmVCdWZmZXI7CisKKyAgICAvLyBD
cmVhdGUgMXN0IGJ1ZmZlciB1c2VkIHRvIGNvbnRyb2wgZ2FpbiAoYSBsaW5lYXIgcmFtcCkuCisg
ICAgbGluZWFyUmFtcEJ1ZmZlciA9IGNyZWF0ZUxpbmVhclJhbXBCdWZmZXIoY29udGV4dCwgc2Ft
cGxlRnJhbWVMZW5ndGgpOworICAgIHZhciBnYWluU291cmNlMSA9IGNvbnRleHQuY3JlYXRlQnVm
ZmVyU291cmNlKCk7CisgICAgZ2FpblNvdXJjZTEuYnVmZmVyID0gbGluZWFyUmFtcEJ1ZmZlcjsK
KworICAgIC8vIENyZWF0ZSAyc3QgYnVmZmVyIHVzZWQgdG8gY29udHJvbCBnYWluIChhIHNpbXBs
ZSBzaW5lIHdhdmUgdG9uZSkuCisgICAgdG9uZUJ1ZmZlciA9IGNyZWF0ZVRvbmVCdWZmZXIoY29u
dGV4dCwgdG9uZUZyZXF1ZW5jeSwgbGVuZ3RoSW5TZWNvbmRzLCAxKTsKKyAgICB2YXIgZ2FpblNv
dXJjZTIgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpOworICAgIGdhaW5Tb3VyY2UyLmJ1
ZmZlciA9IHRvbmVCdWZmZXI7CisKKyAgICAvLyBDcmVhdGUgYSBnYWluIG5vZGUgY29udHJvbGxp
bmcgdGhlIGdhaW4gb2YgY29uc3RhbnRTb3VyY2UgYW5kIG1ha2UgdGhlIGNvbm5lY3Rpb25zLgor
ICAgIHZhciBnYWluTm9kZSA9IGNvbnRleHQuY3JlYXRlR2Fpbk5vZGUoKTsKKworICAgIC8vIElu
dHJpbnNpYyBiYXNlbGluZSBnYWluLgorICAgIC8vIFRoaXMgZ2FpbiB2YWx1ZSBzaG91bGQgYmUg
c3VtbWVkIHdpdGggZ2FpblNvdXJjZTEgYW5kIGdhaW5Tb3VyY2UyLgorICAgIGdhaW5Ob2RlLmdh
aW4udmFsdWUgPSBiYXNlbGluZUdhaW47CisKKyAgICBjb25zdGFudFNvdXJjZS5jb25uZWN0KGdh
aW5Ob2RlKTsKKyAgICBnYWluTm9kZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pOworCisg
ICAgLy8gQ29ubmVjdCB0d28gYXVkaW8tcmF0ZSBzaWduYWxzIHRvIGNvbnRyb2wgdGhlIC5nYWlu
IEF1ZGlvUGFyYW0uCisgICAgZ2FpblNvdXJjZTEuY29ubmVjdChnYWluTm9kZS5nYWluKTsKKyAg
ICBnYWluU291cmNlMi5jb25uZWN0KGdhaW5Ob2RlLmdhaW4pOworCisgICAgLy8gU3RhcnQgYWxs
IHNvdXJjZXMgYXQgdGltZSAwLgorICAgIGNvbnN0YW50U291cmNlLm5vdGVPbigwKTsKKyAgICBn
YWluU291cmNlMS5ub3RlT24oMCk7CisgICAgZ2FpblNvdXJjZTIubm90ZU9uKDApOworCisgICAg
Y29udGV4dC5vbmNvbXBsZXRlID0gY2hlY2tSZXN1bHQ7CisgICAgY29udGV4dC5zdGFydFJlbmRl
cmluZygpOworfQorCitydW5UZXN0KCk7CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143605</attachid>
            <date>2012-05-23 11:47:25 -0700</date>
            <delta_ts>2012-05-23 14:45:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83610-20120523114725.patch</filename>
            <type>text/plain</type>
            <size>15783</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjEwOGU0YTI0YjJlZGQ1
NzFjMDU3MjU4ZGM1YzE0Njg5YjJjOTk4MC4uMWUxNWIxOTRhN2E1YTU0ODRhZmU4YWFkZjA5OGIx
YjJiMjkzMmQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA1LTIzICBDaHJp
cyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CisKKyAgICAgICAgQXVkaW9QYXJhbSBtdXN0
IHN1cHBvcnQgZmFuLWluIChtdWx0aXBsZSBhdWRpbyBjb25uZWN0aW9ucykgKHRha2UgMikKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNjEwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgorICAgICAgICAKKyAgICAgICAgVGhp
cyByZS1sYW5kcyBidWc6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MzYxMAorICAgICAgICBOb3cgdGhhdCBhIGZpeCBoYXMgYmVlbiBsYW5kZWQ6IGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzExODA5OQorCisgICAgICAgIFRlc3Q6IHdlYmF1ZGlvL2F1
ZGlvcGFyYW0tc3VtbWluZ2p1bmN0aW9uLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9QYXJhbS5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFt
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVTYW1wbGVBY2N1cmF0
ZVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVBdWRpb1Jh
dGVTaWduYWxWYWx1ZXMpOgorICAgICAgICBTdW1zIGludHJpbnNpYyBwYXJhbWV0ZXIgdmFsdWUg
d2l0aCBhbGwgYXVkaW8tcmF0ZSBjb25uZWN0aW9ucy4KKyAgICAgICAgCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1BhcmFtOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06
OmRpc2Nvbm5lY3QpOgorICAgICAgICBTdXBwb3J0IG11bHRpcGxlIGNvbm5lY3Rpb25zLgorICAg
ICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06Omhhc1NhbXBsZUFjY3VyYXRlVmFs
dWVzKToKKyAgICAgICAgSWYgd2UgaGF2ZSBvbmUgb3IgbW9yZSBhdWRpby1yYXRlIGNvbm5lY3Rp
b25zLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06OkF1ZGlvUGFyYW0p
OgorICAgICAgICBBdWRpb1BhcmFtIG5vdyBzdWItY2xhc3NlcyBBdWRpb1N1bW1pbmdKdW5jdGlv
bi4KKwogMjAxMi0wNS0yMyAgUm9iaW4gRHVubiAgPHJvYmluQGFsbGR1bm4uY29tPgogCiAgICAg
ICAgIFt3eF0gRml4IG1lbW9yeSBsZWFrIGluIEZvbnRIb2xkZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcAppbmRleCBkZWM3MDg3ODI1ZTFhOGFl
NDlhN2JlMTkxN2Q0NmEzNWJmM2VmMDVlLi4xNWM2NzQzMWQxODg4MDI5YTA1ZWE4MDZlYmZjZDNl
ZjhjMTVmZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvUGFyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Q
YXJhbS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEF1ZGlvUGFyYW06OmNhbGN1bGF0ZVNh
bXBsZUFjY3VyYXRlVmFsdWVzKGZsb2F0KiB2YWx1ZXMsIHVuc2lnbmVkIG51bWJlck9mVgogICAg
IGlmICghaXNTYWZlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9hdWRpb1JhdGVTaWdu
YWwpCisgICAgaWYgKG51bWJlck9mUmVuZGVyaW5nQ29ubmVjdGlvbnMoKSkKICAgICAgICAgY2Fs
Y3VsYXRlQXVkaW9SYXRlU2lnbmFsVmFsdWVzKHZhbHVlcywgbnVtYmVyT2ZWYWx1ZXMpOwogICAg
IGVsc2UKICAgICAgICAgY2FsY3VsYXRlVGltZWxpbmVWYWx1ZXModmFsdWVzLCBudW1iZXJPZlZh
bHVlcyk7CkBAIC0xMDksMjYgKzEwOSw0MCBAQCB2b2lkIEF1ZGlvUGFyYW06OmNhbGN1bGF0ZVNh
bXBsZUFjY3VyYXRlVmFsdWVzKGZsb2F0KiB2YWx1ZXMsIHVuc2lnbmVkIG51bWJlck9mVgogCiB2
b2lkIEF1ZGlvUGFyYW06OmNhbGN1bGF0ZUF1ZGlvUmF0ZVNpZ25hbFZhbHVlcyhmbG9hdCogdmFs
dWVzLCB1bnNpZ25lZCBudW1iZXJPZlZhbHVlcykKIHsKLSAgICAvLyBGSVhNRTogc3VwcG9ydCBm
YW4taW4gKG11bHRpcGxlIGF1ZGlvIGNvbm5lY3Rpb25zIHRvIHRoaXMgcGFyYW1ldGVyIHdpdGgg
dW5pdHktZ2FpbiBzdW1taW5nKS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM2MTAKLSAgICBBU1NFUlQobV9hdWRpb1JhdGVTaWduYWwpOwotCi0gICAg
QXVkaW9CdXMqIGJ1cyA9IG1fYXVkaW9SYXRlU2lnbmFsLT5wdWxsKDAsIG51bWJlck9mVmFsdWVz
KTsKLSAgICBib29sIGlzQnVzR29vZCA9IGJ1cyAmJiBidXMtPm51bWJlck9mQ2hhbm5lbHMoKSAm
JiBidXMtPmxlbmd0aCgpID49IG51bWJlck9mVmFsdWVzOwotICAgIEFTU0VSVChpc0J1c0dvb2Qp
OwotICAgIGlmICghaXNCdXNHb29kKQorICAgIGJvb2wgaXNHb29kID0gbnVtYmVyT2ZSZW5kZXJp
bmdDb25uZWN0aW9ucygpICYmIG51bWJlck9mVmFsdWVzOworICAgIEFTU0VSVChpc0dvb2QpOwor
ICAgIGlmICghaXNHb29kKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoYnVzLT5udW1iZXJP
ZkNoYW5uZWxzKCkgPT0gMSkgewotICAgICAgICAvLyBUaGUgbm9ybWFsIGNhc2UgaXMgdG8gZGVh
bCB3aXRoIGEgbW9ubyBhdWRpby1yYXRlIHNpZ25hbC4KLSAgICAgICAgbWVtY3B5KHZhbHVlcywg
YnVzLT5jaGFubmVsKDApLT5kYXRhKCksIHNpemVvZihmbG9hdCkgKiBudW1iZXJPZlZhbHVlcyk7
CisgICAgLy8gVGhlIGNhbGN1bGF0ZWQgcmVzdWx0IHdpbGwgYmUgdGhlICJpbnRyaW5zaWMiIHZh
bHVlIHN1bW1lZCB3aXRoIGFsbCBhdWRpby1yYXRlIGNvbm5lY3Rpb25zLgorCisgICAgaWYgKG1f
dGltZWxpbmUuaGFzVmFsdWVzKCkpIHsKKyAgICAgICAgLy8gQ2FsY3VsYXRlIHJlZ3VsYXIgdGlt
ZWxpbmUgdmFsdWVzLCBpZiB3ZSBoYXZlIGFueS4KKyAgICAgICAgY2FsY3VsYXRlVGltZWxpbmVW
YWx1ZXModmFsdWVzLCBudW1iZXJPZlZhbHVlcyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgLy8g
RG8gYSBzdGFuZGFyZCBtaXhkb3duIHRvIG9uZSBjaGFubmVsIGlmIG5lY2Vzc2FyeS4KLSAgICAg
ICAgQXVkaW9CdXMgd3JhcHBlckJ1cygxLCBudW1iZXJPZlZhbHVlcywgZmFsc2UpOwotICAgICAg
ICB3cmFwcGVyQnVzLnNldENoYW5uZWxNZW1vcnkoMCwgdmFsdWVzLCBudW1iZXJPZlZhbHVlcyk7
Ci0gICAgICAgIHdyYXBwZXJCdXMuY29weUZyb20oKmJ1cyk7IC8vIE1peGRvd24uCisgICAgICAg
IC8vIE90aGVyd2lzZSBzZXQgdmFsdWVzIGFycmF5IHRvIG91ciBjb25zdGFudCB2YWx1ZS4KKyAg
ICAgICAgZmxvYXQgdmFsdWUgPSBtX3ZhbHVlOyAvLyBDYWNoZSBpbiBsb2NhbC4KKworICAgICAg
ICAvLyBGSVhNRTogY2FuIGJlIG9wdGltaXplZCBpZiB3ZSBjcmVhdGUgYSBuZXcgVmVjdG9yTWF0
aCBmdW5jdGlvbi4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVmFs
dWVzOyArK2kpCisgICAgICAgICAgICB2YWx1ZXNbaV0gPSB2YWx1ZTsKKyAgICB9CisKKyAgICAv
LyBOb3cgc3VtIGFsbCBvZiB0aGUgYXVkaW8tcmF0ZSBjb25uZWN0aW9ucyB0b2dldGhlciAodW5p
dHktZ2FpbiBzdW1taW5nIGp1bmN0aW9uKS4KKyAgICAvLyBOb3RlIHRoYXQgY29ubmVjdGlvbnMg
d291bGQgbm9ybWFsbHkgYmUgbW9ubywgYnV0IHdlIG1peCBkb3duIHRvIG1vbm8gaWYgbmVjZXNz
YXJ5LgorICAgIEF1ZGlvQnVzIHN1bW1pbmdCdXMoMSwgbnVtYmVyT2ZWYWx1ZXMsIGZhbHNlKTsK
KyAgICBzdW1taW5nQnVzLnNldENoYW5uZWxNZW1vcnkoMCwgdmFsdWVzLCBudW1iZXJPZlZhbHVl
cyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZSZW5kZXJpbmdDb25u
ZWN0aW9ucygpOyArK2kpIHsKKyAgICAgICAgQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQgPSByZW5k
ZXJpbmdPdXRwdXQoaSk7CisgICAgICAgIEFTU0VSVChvdXRwdXQpOworCisgICAgICAgIC8vIFJl
bmRlciBhdWRpbyBmcm9tIHRoaXMgb3V0cHV0LgorICAgICAgICBBdWRpb0J1cyogY29ubmVjdGlv
bkJ1cyA9IG91dHB1dC0+cHVsbCgwLCBudW1iZXJPZlZhbHVlcyk7CisKKyAgICAgICAgLy8gU3Vt
LCB3aXRoIHVuaXR5LWdhaW4uCisgICAgICAgIHN1bW1pbmdCdXMuc3VtRnJvbSgqY29ubmVjdGlv
bkJ1cyk7CiAgICAgfQotICAgIG1fdmFsdWUgPSB2YWx1ZXNbMF07IC8vIFVwZGF0ZSB0byBmaXJz
dCB2YWx1ZS4KIH0KIAogdm9pZCBBdWRpb1BhcmFtOjpjYWxjdWxhdGVUaW1lbGluZVZhbHVlcyhm
bG9hdCogdmFsdWVzLCB1bnNpZ25lZCBudW1iZXJPZlZhbHVlcykKQEAgLTE0NCwzMyArMTU4LDM1
IEBAIHZvaWQgQXVkaW9QYXJhbTo6Y2FsY3VsYXRlVGltZWxpbmVWYWx1ZXMoZmxvYXQqIHZhbHVl
cywgdW5zaWduZWQgbnVtYmVyT2ZWYWx1ZXMpCiAgICAgbV92YWx1ZSA9IG1fdGltZWxpbmUudmFs
dWVzRm9yVGltZVJhbmdlKHN0YXJ0VGltZSwgZW5kVGltZSwgbmFycm93UHJlY2lzaW9uVG9GbG9h
dChtX3ZhbHVlKSwgdmFsdWVzLCBudW1iZXJPZlZhbHVlcywgc2FtcGxlUmF0ZSwgc2FtcGxlUmF0
ZSk7CiB9CiAKLXZvaWQgQXVkaW9QYXJhbTo6Y29ubmVjdChBdWRpb05vZGVPdXRwdXQqIGF1ZGlv
UmF0ZVNpZ25hbCkKK3ZvaWQgQXVkaW9QYXJhbTo6Y29ubmVjdChBdWRpb05vZGVPdXRwdXQqIG91
dHB1dCkKIHsKICAgICBBU1NFUlQoY29udGV4dCgpLT5pc0dyYXBoT3duZXIoKSk7Ci0gICAgQVNT
RVJUKGF1ZGlvUmF0ZVNpZ25hbCk7Ci0gICAgaWYgKCFhdWRpb1JhdGVTaWduYWwpCisKKyAgICBB
U1NFUlQob3V0cHV0KTsKKyAgICBpZiAoIW91dHB1dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKG1fYXVkaW9SYXRlU2lnbmFsICYmIG1fYXVkaW9SYXRlU2lnbmFsICE9IGF1ZGlvUmF0ZVNp
Z25hbCkgewotICAgICAgICAvLyBCZWNhdXNlIHdlIGRvbid0IGN1cnJlbnRseSBzdXBwb3J0IGZh
bi1pbiB3ZSBtdXN0IGV4cGxpY2l0bHkgZGlzY29ubmVjdCBmcm9tIGFuIG9sZCBvdXRwdXQuCi0g
ICAgICAgIG1fYXVkaW9SYXRlU2lnbmFsLT5yZW1vdmVQYXJhbSh0aGlzKTsKLSAgICB9CisgICAg
aWYgKG1fb3V0cHV0cy5jb250YWlucyhvdXRwdXQpKQorICAgICAgICByZXR1cm47CiAKLSAgICBh
dWRpb1JhdGVTaWduYWwtPmFkZFBhcmFtKHRoaXMpOwotICAgIG1fYXVkaW9SYXRlU2lnbmFsID0g
YXVkaW9SYXRlU2lnbmFsOworICAgIG91dHB1dC0+YWRkUGFyYW0odGhpcyk7CisgICAgbV9vdXRw
dXRzLmFkZChvdXRwdXQpOworICAgIGNoYW5nZWRPdXRwdXRzKCk7CiB9CiAKLXZvaWQgQXVkaW9Q
YXJhbTo6ZGlzY29ubmVjdChBdWRpb05vZGVPdXRwdXQqIGF1ZGlvUmF0ZVNpZ25hbCkKK3ZvaWQg
QXVkaW9QYXJhbTo6ZGlzY29ubmVjdChBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKIHsKICAgICBB
U1NFUlQoY29udGV4dCgpLT5pc0dyYXBoT3duZXIoKSk7Ci0gICAgQVNTRVJUKGF1ZGlvUmF0ZVNp
Z25hbCk7Ci0gICAgaWYgKCFhdWRpb1JhdGVTaWduYWwpCisKKyAgICBBU1NFUlQob3V0cHV0KTsK
KyAgICBpZiAoIW91dHB1dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IHN1cHBv
cnQgZmFuLWluIChtdWx0aXBsZSBhdWRpbyBjb25uZWN0aW9ucyB0byB0aGlzIHBhcmFtZXRlciB3
aXRoIHVuaXR5LWdhaW4gc3VtbWluZykuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgzNjEwCi0gICAgaWYgKG1fYXVkaW9SYXRlU2lnbmFsID09IGF1ZGlv
UmF0ZVNpZ25hbCkKLSAgICAgICAgbV9hdWRpb1JhdGVTaWduYWwgPSAwOworICAgIGlmIChtX291
dHB1dHMuY29udGFpbnMob3V0cHV0KSkgeworICAgICAgICBtX291dHB1dHMucmVtb3ZlKG91dHB1
dCk7CisgICAgICAgIGNoYW5nZWRPdXRwdXRzKCk7CisgICAgICAgIG91dHB1dC0+cmVtb3ZlUGFy
YW0odGhpcyk7CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCmluZGV4IDNiZDI3YWJkOGM4NmRl
OGQ0YWVlYTc0OWIxNTQ5ZTM3Y2Y3OTRhNDkuLjkwZmRlM2I1MjA1MmE5ZjUzMWEzZWMzNTFlZWJk
YTFhOTljNDgwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Q
YXJhbS5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNp
bmNsdWRlICJBdWRpb1BhcmFtVGltZWxpbmUuaCIKKyNpbmNsdWRlICJBdWRpb1N1bW1pbmdKdW5j
dGlvbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+CiAjaW5jbHVkZSA8d3RmL0Zsb2F0MzJBcnJheS5oPgpAQCAtNDEsNyArNDIsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvTm9kZU91dHB1dDsKIAotY2xhc3MgQXVkaW9Q
YXJhbSA6IHB1YmxpYyBSZWZDb3VudGVkPEF1ZGlvUGFyYW0+IHsKK2NsYXNzIEF1ZGlvUGFyYW0g
OiBwdWJsaWMgQXVkaW9TdW1taW5nSnVuY3Rpb24sIHB1YmxpYyBSZWZDb3VudGVkPEF1ZGlvUGFy
YW0+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIERlZmF1bHRTbW9vdGhpbmdD
b25zdGFudDsKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIFNuYXBUaHJlc2hvbGQ7CkBAIC01MSw3
ICs1Miw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb1BhcmFt
KGNvbnRleHQsIG5hbWUsIGRlZmF1bHRWYWx1ZSwgbWluVmFsdWUsIG1heFZhbHVlLCB1bml0cykp
OwogICAgIH0KIAotICAgIEF1ZGlvQ29udGV4dCogY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4
dC5nZXQoKTsgfQorICAgIC8vIEF1ZGlvU3VtbWluZ0p1bmN0aW9uCisgICAgdmlydHVhbCBib29s
IGNhblVwZGF0ZVN0YXRlKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWRVcGRhdGUoKSBPVkVSUklERSB7IH0KIAogICAgIGZsb2F0IHZhbHVlKCk7CiAgICAg
dm9pZCBzZXRWYWx1ZShmbG9hdCk7CkBAIC04NCw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFZhbHVlQ3VydmVBdFRpbWUoRmxvYXQzMkFycmF5KiBjdXJ2ZSwgZmxvYXQgdGltZSwgZmxv
YXQgZHVyYXRpb24pIHsgbV90aW1lbGluZS5zZXRWYWx1ZUN1cnZlQXRUaW1lKGN1cnZlLCB0aW1l
LCBkdXJhdGlvbik7IH0KICAgICB2b2lkIGNhbmNlbFNjaGVkdWxlZFZhbHVlcyhmbG9hdCBzdGFy
dFRpbWUpIHsgbV90aW1lbGluZS5jYW5jZWxTY2hlZHVsZWRWYWx1ZXMoc3RhcnRUaW1lKTsgfQog
Ci0gICAgYm9vbCBoYXNTYW1wbGVBY2N1cmF0ZVZhbHVlcygpIHsgcmV0dXJuIG1fdGltZWxpbmUu
aGFzVmFsdWVzKCkgfHwgbV9hdWRpb1JhdGVTaWduYWw7IH0KKyAgICBib29sIGhhc1NhbXBsZUFj
Y3VyYXRlVmFsdWVzKCkgeyByZXR1cm4gbV90aW1lbGluZS5oYXNWYWx1ZXMoKSB8fCBudW1iZXJP
ZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCk7IH0KICAgICAKICAgICAvLyBDYWxjdWxhdGVzIG51bWJl
ck9mVmFsdWVzIHBhcmFtZXRlciB2YWx1ZXMgc3RhcnRpbmcgYXQgdGhlIGNvbnRleHQncyBjdXJy
ZW50IHRpbWUuCiAgICAgLy8gTXVzdCBiZSBjYWxsZWQgaW4gdGhlIGNvbnRleHQncyByZW5kZXIg
dGhyZWFkLgpAQCAtOTYsNyArOTksNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBBdWRp
b1BhcmFtKEF1ZGlvQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUg
ZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQg
dW5pdHMgPSAwKQotICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICAgICA6IEF1ZGlv
U3VtbWluZ0p1bmN0aW9uKGNvbnRleHQpCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgICAg
ICwgbV92YWx1ZShkZWZhdWx0VmFsdWUpCiAgICAgICAgICwgbV9kZWZhdWx0VmFsdWUoZGVmYXVs
dFZhbHVlKQpAQCAtMTA1LDcgKzEwOCw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX3VuaXRz
KHVuaXRzKQogICAgICAgICAsIG1fc21vb3RoZWRWYWx1ZShkZWZhdWx0VmFsdWUpCiAgICAgICAg
ICwgbV9zbW9vdGhpbmdDb25zdGFudChEZWZhdWx0U21vb3RoaW5nQ29uc3RhbnQpCi0gICAgICAg
ICwgbV9hdWRpb1JhdGVTaWduYWwoMCkKICAgICB7CiAgICAgfQogCkBAIC0xMTMsNyArMTE1LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbGN1bGF0ZUF1ZGlvUmF0ZVNpZ25hbFZhbHVlcyhmbG9h
dCogdmFsdWVzLCB1bnNpZ25lZCBudW1iZXJPZlZhbHVlcyk7CiAgICAgdm9pZCBjYWxjdWxhdGVU
aW1lbGluZVZhbHVlcyhmbG9hdCogdmFsdWVzLCB1bnNpZ25lZCBudW1iZXJPZlZhbHVlcyk7CiAK
LSAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBtX2NvbnRleHQ7CiAgICAgU3RyaW5nIG1fbmFtZTsK
ICAgICBkb3VibGUgbV92YWx1ZTsKICAgICBkb3VibGUgbV9kZWZhdWx0VmFsdWU7CkBAIC0xMjYs
MTEgKzEyNyw2IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fc21vb3RoaW5nQ29uc3RhbnQ7CiAg
ICAgCiAgICAgQXVkaW9QYXJhbVRpbWVsaW5lIG1fdGltZWxpbmU7Ci0KLSAgICAvLyBBbiBhdWRp
by1yYXRlIHNpZ25hbCBkaXJlY3RseSBwcm92aWRpbmcgcGFyYW1ldGVyIHZhbHVlcy4KLSAgICAv
LyBGSVhNRTogc3VwcG9ydCBmYW4taW4gKG11bHRpcGxlIGF1ZGlvIGNvbm5lY3Rpb25zIHRvIHRo
aXMgcGFyYW1ldGVyIHdpdGggdW5pdHktZ2FpbiBzdW1taW5nKS4KLSAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM2MTAKLSAgICBBdWRpb05vZGVPdXRwdXQq
IG1fYXVkaW9SYXRlU2lnbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDBkYjZhZDdlYzRiZmM3NWIyNzJlNTUwY2QzMjQwOWExMTc5ZWRlZTkuLjgyOWY5ZGVkMDRhMjRl
Y2FkNDE0MDA0MzYxY2YwZWRmODY1OTVmODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0w
NS0yMyAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIEF1ZGlv
UGFyYW0gbXVzdCBzdXBwb3J0IGZhbi1pbiAobXVsdGlwbGUgYXVkaW8gY29ubmVjdGlvbnMpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzYxMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KKworICAgICAgICAqIHdlYmF1ZGlv
L2F1ZGlvcGFyYW0tY29ubmVjdC1hdWRpb3JhdGVzaWduYWwuaHRtbDoKKyAgICAgICAgKiB3ZWJh
dWRpby9hdWRpb3BhcmFtLXN1bW1pbmdqdW5jdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHdlYmF1ZGlvL2F1ZGlvcGFyYW0tc3VtbWluZ2p1bmN0aW9uLmh0bWw6IEFkZGVkLgor
CiAyMDEyLTA1LTIzICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcgLSBvbmUgbW9yZSBtZWRpYS90cmFjayB0ZXN0IGlzIGNy
YXNoeS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvcGFyYW0tY29ubmVj
dC1hdWRpb3JhdGVzaWduYWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvcGFyYW0t
Y29ubmVjdC1hdWRpb3JhdGVzaWduYWwuaHRtbAppbmRleCA1NDZlYjcwM2Y4YjA5Y2IyZjg3MThi
ZjlkMjdiNjVmMWZhNDY4YmY1Li5hMDUzNjFhYzcwNmRkZjc0MTkyYTQ2YjBlNzA5ODFmMjgwNTAy
YWM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb3BhcmFtLWNvbm5lY3Qt
YXVkaW9yYXRlc2lnbmFsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9wYXJh
bS1jb25uZWN0LWF1ZGlvcmF0ZXNpZ25hbC5odG1sCkBAIC04Nyw2ICs4NywxMCBAQCBmdW5jdGlv
biBydW5UZXN0KCkgewogCiAgICAgLy8gQ3JlYXRlIGEgZ2FpbiBub2RlIGNvbnRyb2xsaW5nIHRo
ZSBnYWluIG9mIGNvbnN0YW50U291cmNlIGFuZCBtYWtlIHRoZSBjb25uZWN0aW9ucy4KICAgICB2
YXIgZ2Fpbk5vZGUgPSBjb250ZXh0LmNyZWF0ZUdhaW5Ob2RlKCk7CisKKyAgICAvLyBJbnRyaW5z
aWMgYmFzZWxpbmUgZ2FpbiBvZiB6ZXJvLgorICAgIGdhaW5Ob2RlLmdhaW4udmFsdWUgPSAwOwor
CiAgICAgY29uc3RhbnRTb3VyY2UuY29ubmVjdChnYWluTm9kZSk7CiAgICAgZ2Fpbk5vZGUuY29u
bmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vYXVkaW9wYXJhbS1zdW1taW5nanVuY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvd2ViYXVkaW8vYXVkaW9wYXJhbS1zdW1taW5nanVuY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU1MjhhMDk0ZDk1MjA3ZWJkNTJjMTEwYTVmYjA5YjQzNDgwMTlmNDcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb3BhcmFtLXN1bW1pbmdqdW5jdGlv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitQQVNTIFJlbmRlcmVkIHNpZ25hbCBpcyBv
ZiBjb3JyZWN0IGxlbmd0aC4KK1BBU1MgUmVuZGVyZWQgc2lnbmFsIG1hdGNoZXMgc3VtIG9mIHR3
byBhdWRpby1yYXRlIGdhaW4gY2hhbmdpbmcgc2lnbmFscyBwbHVzIGJhc2VsaW5lIGdhaW4uCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9wYXJhbS1zdW1taW5nanVuY3Rpb24uaHRt
bCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvcGFyYW0tc3VtbWluZ2p1bmN0aW9uLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDk1NTFiNTVhODIzMDQ2NDFkMDU5NDdhMTQ2MDI5NTFiYTZlNDQ2NQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvcGFyYW0tc3VtbWluZ2p1
bmN0aW9uLmh0bWwKQEAgLTAsMCArMSwxMzIgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8IS0tCitU
ZXN0cyB0aGF0IG11bHRpcGxlIGF1ZGlvLXJhdGUgc2lnbmFscyAoQXVkaW9Ob2RlIG91dHB1dHMp
IGNhbiBiZSBjb25uZWN0ZWQgdG8gYW4gQXVkaW9QYXJhbQorYW5kIHRoYXQgdGhlc2Ugc2lnbmFs
cyBhcmUgc3VtbWVkLCBhbG9uZyB3aXRoIHRoZSBBdWRpb1BhcmFtcyBpbnRyaW5zaWMgdmFsdWUu
CistLT4KKworPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L21peC10ZXN0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisKKzwvaGVhZD4KKzxib2R5PgorCis8c2Ny
aXB0PgorCit2YXIgc2FtcGxlUmF0ZSA9IDQ0MTAwLjA7Cit2YXIgbGVuZ3RoSW5TZWNvbmRzID0g
MTsKKwordmFyIGNvbnRleHQgPSAwOworCisvLyBCdWZmZXJzIHVzZWQgYnkgdGhlIHR3byBnYWlu
IGNvbnRyb2xsaW5nIHNvdXJjZXMuCit2YXIgbGluZWFyUmFtcEJ1ZmZlcjsKK3ZhciB0b25lQnVm
ZmVyOwordmFyIHRvbmVGcmVxdWVuY3kgPSA0NDA7CisKKy8vIEFyYml0cmFyeSBub24temVybyB2
YWx1ZS4KK3ZhciBiYXNlbGluZUdhaW4gPSA1OworCisvLyBBbGxvdyBmb3IgYSBzbWFsbCByb3Vu
ZC1vZmYgZXJyb3IuCit2YXIgbWF4QWxsb3dlZEVycm9yID0gMWUtNjsKKworZnVuY3Rpb24gY2hl
Y2tSZXN1bHQoZXZlbnQpIHsKKyAgICB2YXIgcmVuZGVyZWRCdWZmZXIgPSBldmVudC5yZW5kZXJl
ZEJ1ZmZlcjsKKyAgICB2YXIgcmVuZGVyZWREYXRhID0gcmVuZGVyZWRCdWZmZXIuZ2V0Q2hhbm5l
bERhdGEoMCk7CisKKyAgICAvLyBHZXQgYnVmZmVyIGRhdGEgZnJvbSB0aGUgdHdvIHNvdXJjZXMg
dXNlZCB0byBjb250cm9sIGdhaW4uCisgICAgdmFyIGxpbmVhclJhbXBEYXRhID0gbGluZWFyUmFt
cEJ1ZmZlci5nZXRDaGFubmVsRGF0YSgwKTsKKyAgICB2YXIgdG9uZURhdGEgPSB0b25lQnVmZmVy
LmdldENoYW5uZWxEYXRhKDApOworCisgICAgdmFyIG4gPSByZW5kZXJlZEJ1ZmZlci5sZW5ndGg7
CisKKyAgICBpZiAobiA9PSBsaW5lYXJSYW1wQnVmZmVyLmxlbmd0aCkgeworICAgICAgICB0ZXN0
UGFzc2VkKCJSZW5kZXJlZCBzaWduYWwgaXMgb2YgY29ycmVjdCBsZW5ndGguIik7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiUmVuZGVyZWQgc2lnbmFsIGlzIG5vdCBvZiBjb3Jy
ZWN0IGxlbmd0aC4iKTsKKyAgICB9CisKKyAgICAvLyBDaGVjayB0aGF0IHRoZSByZW5kZXJlZCBy
ZXN1bHQgZXhhY3RseSBtYXRjaGVzIHRoZSBzdW0gb2YgdGhlIGludHJpbnNpYyBnYWluIHBsdXMg
dGhlIHR3byBzb3VyY2VzIHVzZWQgdG8gY29udHJvbCBnYWluLgorICAgIC8vIFRoaXMgaXMgYmVj
YXVzZSB3ZSdyZSBjaGFuZ2luZyB0aGUgZ2FpbiBvZiBhIHNpZ25hbCBoYXZpbmcgY29uc3RhbnQg
dmFsdWUgMS4KKyAgICB2YXIgc3VjY2VzcyA9IHRydWU7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBuOyArK2kpIHsKKyAgICAgICAgdmFyIGV4cGVjdGVkVmFsdWUgPSBiYXNlbGluZUdhaW4gKyBs
aW5lYXJSYW1wRGF0YVtpXSArIHRvbmVEYXRhW2ldOworICAgICAgICB2YXIgZXJyb3IgPSBNYXRo
LmFicyhleHBlY3RlZFZhbHVlIC0gcmVuZGVyZWREYXRhW2ldKTsKKworICAgICAgICBpZiAoZXJy
b3IgPiBtYXhBbGxvd2VkRXJyb3IpIHsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHN1Y2Nlc3MpIHsK
KyAgICAgICAgdGVzdFBhc3NlZCgiUmVuZGVyZWQgc2lnbmFsIG1hdGNoZXMgc3VtIG9mIHR3byBh
dWRpby1yYXRlIGdhaW4gY2hhbmdpbmcgc2lnbmFscyBwbHVzIGJhc2VsaW5lIGdhaW4uIik7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiUmVuZGVyZWQgc2lnbmFsIGRpZmZlcnMg
ZnJvbSB0aGUgc3VtIG9mIHR3byBhdWRpby1yYXRlIGdhaW4gY2hhbmdpbmcgc2lnbmFscyBwbHVz
IGJhc2VsaW5lIGdhaW4uIik7CisgICAgfQorCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1
bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB2YXIgc2FtcGxlRnJhbWVMZW5ndGggPSBzYW1w
bGVSYXRlICogbGVuZ3RoSW5TZWNvbmRzOworCisgICAgLy8gQ3JlYXRlIG9mZmxpbmUgYXVkaW8g
Y29udGV4dC4KKyAgICBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgxLCBzYW1wbGVG
cmFtZUxlbmd0aCwgc2FtcGxlUmF0ZSk7CisKKyAgICAvLyBDcmVhdGUgYnVmZmVyIHVzZWQgYnkg
dGhlIHNvdXJjZSB3aGljaCB3aWxsIGhhdmUgaXRzIGdhaW4gY29udHJvbGxlZC4KKyAgICB2YXIg
Y29uc3RhbnRPbmVCdWZmZXIgPSBjcmVhdGVDb25zdGFudEJ1ZmZlcihjb250ZXh0LCBzYW1wbGVG
cmFtZUxlbmd0aCwgMSk7CisgICAgdmFyIGNvbnN0YW50U291cmNlID0gY29udGV4dC5jcmVhdGVC
dWZmZXJTb3VyY2UoKTsKKyAgICBjb25zdGFudFNvdXJjZS5idWZmZXIgPSBjb25zdGFudE9uZUJ1
ZmZlcjsKKworICAgIC8vIENyZWF0ZSAxc3QgYnVmZmVyIHVzZWQgdG8gY29udHJvbCBnYWluIChh
IGxpbmVhciByYW1wKS4KKyAgICBsaW5lYXJSYW1wQnVmZmVyID0gY3JlYXRlTGluZWFyUmFtcEJ1
ZmZlcihjb250ZXh0LCBzYW1wbGVGcmFtZUxlbmd0aCk7CisgICAgdmFyIGdhaW5Tb3VyY2UxID0g
Y29udGV4dC5jcmVhdGVCdWZmZXJTb3VyY2UoKTsKKyAgICBnYWluU291cmNlMS5idWZmZXIgPSBs
aW5lYXJSYW1wQnVmZmVyOworCisgICAgLy8gQ3JlYXRlIDJzdCBidWZmZXIgdXNlZCB0byBjb250
cm9sIGdhaW4gKGEgc2ltcGxlIHNpbmUgd2F2ZSB0b25lKS4KKyAgICB0b25lQnVmZmVyID0gY3Jl
YXRlVG9uZUJ1ZmZlcihjb250ZXh0LCB0b25lRnJlcXVlbmN5LCBsZW5ndGhJblNlY29uZHMsIDEp
OworICAgIHZhciBnYWluU291cmNlMiA9IGNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7Cisg
ICAgZ2FpblNvdXJjZTIuYnVmZmVyID0gdG9uZUJ1ZmZlcjsKKworICAgIC8vIENyZWF0ZSBhIGdh
aW4gbm9kZSBjb250cm9sbGluZyB0aGUgZ2FpbiBvZiBjb25zdGFudFNvdXJjZSBhbmQgbWFrZSB0
aGUgY29ubmVjdGlvbnMuCisgICAgdmFyIGdhaW5Ob2RlID0gY29udGV4dC5jcmVhdGVHYWluTm9k
ZSgpOworCisgICAgLy8gSW50cmluc2ljIGJhc2VsaW5lIGdhaW4uCisgICAgLy8gVGhpcyBnYWlu
IHZhbHVlIHNob3VsZCBiZSBzdW1tZWQgd2l0aCBnYWluU291cmNlMSBhbmQgZ2FpblNvdXJjZTIu
CisgICAgZ2Fpbk5vZGUuZ2Fpbi52YWx1ZSA9IGJhc2VsaW5lR2FpbjsKKworICAgIGNvbnN0YW50
U291cmNlLmNvbm5lY3QoZ2Fpbk5vZGUpOworICAgIGdhaW5Ob2RlLmNvbm5lY3QoY29udGV4dC5k
ZXN0aW5hdGlvbik7CisKKyAgICAvLyBDb25uZWN0IHR3byBhdWRpby1yYXRlIHNpZ25hbHMgdG8g
Y29udHJvbCB0aGUgLmdhaW4gQXVkaW9QYXJhbS4KKyAgICBnYWluU291cmNlMS5jb25uZWN0KGdh
aW5Ob2RlLmdhaW4pOworICAgIGdhaW5Tb3VyY2UyLmNvbm5lY3QoZ2Fpbk5vZGUuZ2Fpbik7CisK
KyAgICAvLyBTdGFydCBhbGwgc291cmNlcyBhdCB0aW1lIDAuCisgICAgY29uc3RhbnRTb3VyY2Uu
bm90ZU9uKDApOworICAgIGdhaW5Tb3VyY2UxLm5vdGVPbigwKTsKKyAgICBnYWluU291cmNlMi5u
b3RlT24oMCk7CisKKyAgICBjb250ZXh0Lm9uY29tcGxldGUgPSBjaGVja1Jlc3VsdDsKKyAgICBj
b250ZXh0LnN0YXJ0UmVuZGVyaW5nKCk7Cit9CisKK3J1blRlc3QoKTsKK3N1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>