<?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>90952</bug_id>
          
          <creation_ts>2012-07-11 01:46:10 -0700</creation_ts>
          <short_desc>AudioPannerNode should raise exception when distanceModel is set incorrectly</short_desc>
          <delta_ts>2012-07-31 12:14:29 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Li Yin">li.yin</reporter>
          <assigned_to name="Li Yin">li.yin</assigned_to>
          <cc>abarth</cc>
    
    <cc>crogers</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>haraken</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>666518</commentid>
    <comment_count>0</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-07-11 01:46:10 -0700</bug_when>
    <thetext>From Spec: http://www.w3.org/TR/webaudio/#AudioPannerNode-section
The distance model can be set to LINEAR_DISTANCE, INVERSE_DISTANCE or EXPONENTIAL_DISTANCE.
It will be better to raise exception, when it is set incorrectly, like panningModel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666738</commentid>
    <comment_count>1</comment_count>
      <attachid>151702</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-07-11 07:21:45 -0700</bug_when>
    <thetext>Created attachment 151702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673659</commentid>
    <comment_count>2</comment_count>
      <attachid>151702</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-07-19 10:45:43 -0700</bug_when>
    <thetext>Comment on attachment 151702
Patch

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

Except for the two questions, this looks good.  Thanks for the patch!

&gt; Source/WebCore/Modules/webaudio/AudioPannerNode.idl:41
&gt; +        attribute unsigned short panningModel

Does the glue generation support unsigned short now?

&gt; Source/WebCore/Modules/webaudio/AudioPannerNode.idl:50
&gt; +        attribute unsigned short distanceModel

Does the glue generation support unsigned short now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675135</commentid>
    <comment_count>3</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-07-20 18:31:14 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=151702) [details]
&gt; Patch

(In reply to comment #2)
&gt; (From update of attachment 151702 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151702&amp;action=review
&gt; 
&gt; Except for the two questions, this looks good.  Thanks for the patch!
&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/AudioPannerNode.idl:41
&gt; &gt; +        attribute unsigned short panningModel
&gt; 
&gt; Does the glue generation support unsigned short now?
&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/AudioPannerNode.idl:50
&gt; &gt; +        attribute unsigned short distanceModel
&gt; 
&gt; Does the glue generation support unsigned short now?

I think so, look this: http://trac.webkit.org/browser/trunk/Source/WebCore/Modules/webaudio/BiquadFilterNode.idl#L40</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675391</commentid>
    <comment_count>4</comment_count>
      <attachid>151702</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-22 18:35:03 -0700</bug_when>
    <thetext>Comment on attachment 151702
Patch

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

This patch is trying to raise an exception for the code that has not so far raised an exception. Isn&apos;t there any compatibility concern?

&gt; Source/WebCore/ChangeLog:8
&gt; +        The distance model can be only set to LINEAR_DISTANCE, INVERSE_DISTANCE or EXPONENTIAL_DISTANCE.

Please add the link to the spec to this ChangeLog.

&gt;&gt;&gt; Source/WebCore/Modules/webaudio/AudioPannerNode.idl:41
&gt;&gt;&gt; +        attribute unsigned short panningModel
&gt;&gt; 
&gt;&gt; Does the glue generation support unsigned short now?
&gt; 
&gt; I think so, look this: http://trac.webkit.org/browser/trunk/Source/WebCore/Modules/webaudio/BiquadFilterNode.idl#L40

Yes, unsigned short is already supported.

&gt; LayoutTests/webaudio/audiopannernode-basic.html:111
&gt; +          if (success) {
&gt; +              testPassed(&quot;panningModel and distanceModel tests passed.&quot;);
&gt; +          } else {
&gt; +              testFailed(&quot;panningModel and distanceModel tests failed.&quot;);
&gt; +          }
&gt; +

Nit: I am not sure if the &apos;success&apos; check is needed. You can remove all &apos;success&apos;-related code (if you want).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675404</commentid>
    <comment_count>5</comment_count>
      <attachid>153721</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-07-22 19:43:34 -0700</bug_when>
    <thetext>Created attachment 153721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675405</commentid>
    <comment_count>6</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-07-22 19:53:00 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; This patch is trying to raise an exception for the code that has not so far raised an exception. Isn&apos;t there any compatibility concern?
&gt; 

Currently, there is not related clarification in WebAudio specification.
In WebKit implementation, if panningModel attribute can raise exception, I think distanceModel should do this as well.

&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        The distance model can be only set to LINEAR_DISTANCE, INVERSE_DISTANCE or EXPONENTIAL_DISTANCE.
&gt; 
&gt; Please add the link to the spec to this ChangeLog.

Done.

&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/Modules/webaudio/AudioPannerNode.idl:41
&gt; &gt;&gt;&gt; +        attribute unsigned short panningModel
&gt; &gt;&gt; 
&gt; &gt;&gt; Does the glue generation support unsigned short now?
&gt; &gt; 
&gt; &gt; I think so, look this: http://trac.webkit.org/browser/trunk/Source/WebCore/Modules/webaudio/BiquadFilterNode.idl#L40
&gt; 
&gt; Yes, unsigned short is already supported.
&gt; 
&gt; &gt; LayoutTests/webaudio/audiopannernode-basic.html:111
&gt; &gt; +          if (success) {
&gt; &gt; +              testPassed(&quot;panningModel and distanceModel tests passed.&quot;);
&gt; &gt; +          } else {
&gt; &gt; +              testFailed(&quot;panningModel and distanceModel tests failed.&quot;);
&gt; &gt; +          }
&gt; &gt; +
&gt; 
&gt; Nit: I am not sure if the &apos;success&apos; check is needed. You can remove all &apos;success&apos;-related code (if you want).

Done, yes, we can delete these lines.

Thanks for your review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680154</commentid>
    <comment_count>7</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-07-26 23:18:10 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; This patch is trying to raise an exception for the code that has not so far raised an exception. Isn&apos;t there any compatibility concern?

From the new spec, some exceptions are added for API, they can define and describe the api better, the compatibility should not be a problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680156</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-26 23:21:48 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #4)
&gt; &gt; This patch is trying to raise an exception for the code that has not so far raised an exception. Isn&apos;t there any compatibility concern?
&gt; 
&gt; From the new spec, some exceptions are added for API, they can define and describe the api better, the compatibility should not be a problem.

rtoy: If you think this is OK, I&apos;m happy to r+ the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680165</commentid>
    <comment_count>9</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-07-26 23:34:22 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; This patch is trying to raise an exception for the code that has not so far raised an exception. Isn&apos;t there any compatibility concern?
&gt; &gt; 
&gt; &gt; From the new spec, some exceptions are added for API, they can define and describe the api better, the compatibility should not be a problem.
&gt; 
&gt; rtoy: If you think this is OK, I&apos;m happy to r+ the patch.

According to Comment #2, it seems that Raymond has agreed the patch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682563</commentid>
    <comment_count>10</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-07-30 17:28:25 -0700</bug_when>
    <thetext>Hi Chris,
  Could you please give some comments? Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683331</commentid>
    <comment_count>11</comment_count>
      <attachid>153721</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-07-31 11:51:01 -0700</bug_when>
    <thetext>Comment on attachment 153721
Patch

Li, thanks for the patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683368</commentid>
    <comment_count>12</comment_count>
      <attachid>153721</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-31 12:14:25 -0700</bug_when>
    <thetext>Comment on attachment 153721
Patch

Clearing flags on attachment: 153721

Committed r124237: &lt;http://trac.webkit.org/changeset/124237&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683369</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-31 12:14:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151702</attachid>
            <date>2012-07-11 07:21:45 -0700</date>
            <delta_ts>2012-07-22 19:43:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90952-20120712222602.patch</filename>
            <type>text/plain</type>
            <size>15515</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVmMjk2ZDA0MWI1MGU2
OTRjN2Q4ZjU4YTdkMDE5ZWMzM2NlZTc4Yy4uNDNjOGVlNjdiNjQ0YmUyZTI2Mzc1ZWY1ZjA2MTJi
YmEwODA2OGM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA3LTEyICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIEF1ZGlvUGFubmVyTm9kZSBzaG91bGQg
cmFpc2UgZXhjZXB0aW9uIHdoZW4gZGlzdGFuY2VNb2RlbCBpcyBzZXQgaW5jb3JyZWN0bHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTUyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGRpc3RhbmNl
IG1vZGVsIGNhbiBiZSBvbmx5IHNldCB0byBMSU5FQVJfRElTVEFOQ0UsIElOVkVSU0VfRElTVEFO
Q0Ugb3IgRVhQT05FTlRJQUxfRElTVEFOQ0UuCisgICAgICAgIElmIHRoZSBpbmNvcnJlY3QgdmFs
dWUgaXMgc2V0LCBpdCB3aWxsIHJhaXNlIHRoZSBleGNlcHRpb24uCisgICAgICAgIFVzZSB0aGUg
dW5zaWduZWQgc2hvcnQgdG8gcmVwbGFjZSB1bnNpZ25lZCBsb25nIGluIEF1ZGlvUGFubmVyTm9k
ZS5pZGwuCisKKyAgICAgICAgVGVzdDogd2ViYXVkaW8vYXVkaW9wYW5uZXJub2RlLWJhc2ljLmh0
bWwKKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFubmVyTm9kZTo6c2V0RGlzdGFuY2VNb2RlbCk6IHJhaXNl
IGV4Y2VwdGlvbgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1Bhbm5lck5vZGUuaDoKKyAgICAgICAgKEF1ZGlvUGFubmVyTm9kZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaWRsOiB1c2luZyB1bnNpZ25lZCBz
aG9ydCB0byByZXBsYWNlIHVuc2lnbmVkIGxvbmcKKwogMjAxMi0wNy0xMCAgUHJhdmluIEQgIDxw
cmF2aW5kLjJrNEBnbWFpbC5jb20+CiAKICAgICAgICAgUmUtZmFjdG9yaW5nIHJlY2FsY0NvbHVt
biBpbiBBdXRvVGFibGVMYXlvdXQuY3BwIGZvciByZWFkYWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuY3BwCmluZGV4IDRkMGFk
MTg5YzYwODIyYTE5MDQyNzI3OTdkMjU1MmM1ZmRkZWZlNTMuLmQ4NTFhMjUxMzczMmY1MTM1NGZi
OGM4ZmQxZmNlNzM5Yjc0NTg2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5jcHAKQEAgLTE3MSw2ICsxNzEsMjAgQEAgdm9pZCBB
dWRpb1Bhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbCh1bnNpZ25lZCBzaG9ydCBtb2RlbCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgfQogfQogCit2b2lkIEF1ZGlvUGFubmVyTm9kZTo6c2V0RGlz
dGFuY2VNb2RlbCh1bnNpZ25lZCBzaG9ydCBtb2RlbCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgc3dpdGNoIChtb2RlbCkgeworICAgIGNhc2UgRGlzdGFuY2VFZmZlY3Q6Ok1vZGVsTGluZWFy
OgorICAgIGNhc2UgRGlzdGFuY2VFZmZlY3Q6Ok1vZGVsSW52ZXJzZToKKyAgICBjYXNlIERpc3Rh
bmNlRWZmZWN0OjpNb2RlbEV4cG9uZW50aWFsOgorICAgICAgICBtX2Rpc3RhbmNlRWZmZWN0LnNl
dE1vZGVsKHN0YXRpY19jYXN0PERpc3RhbmNlRWZmZWN0OjpNb2RlbFR5cGU+KG1vZGVsKSwgdHJ1
ZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGVjID0gTk9UX1NVUFBP
UlRFRF9FUlI7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogdm9pZCBBdWRpb1Bhbm5lck5v
ZGU6OmdldEF6aW11dGhFbGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVs
ZXZhdGlvbikKIHsKICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGNhY2hlIGF6aW11dGggYW5kIGVs
ZXZhdGlvbiAoaWYgcG9zc2libGUpLCBzbyB3ZSBvbmx5IHJlLWNhbGN1bGF0ZSBpZiBhIGNoYW5n
ZSBoYXMgYmVlbiBtYWRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1Bhbm5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYW5uZXJOb2RlLmgKaW5kZXggOTYxZWYzYzJjZjBmYWI1NThlNDQ3ZjE3ZmMxMzgwNTA3
N2RmMDAyYy4uMGJiODYxMzYxMTgxZTk4YjRmNjcwOWYzZTc1MmI2ZTYyYzMyZGE1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5oCkBA
IC05Niw4ICs5Niw4IEBAIHB1YmxpYzoKIAogICAgIC8vIERpc3RhbmNlIHBhcmFtZXRlcnMKICAg
ICB1bnNpZ25lZCBzaG9ydCBkaXN0YW5jZU1vZGVsKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVj
dC5tb2RlbCgpOyB9Ci0gICAgdm9pZCBzZXREaXN0YW5jZU1vZGVsKHVuc2lnbmVkIHNob3J0IG1v
ZGVsKSB7IG1fZGlzdGFuY2VFZmZlY3Quc2V0TW9kZWwoc3RhdGljX2Nhc3Q8RGlzdGFuY2VFZmZl
Y3Q6Ok1vZGVsVHlwZT4obW9kZWwpLCB0cnVlKTsgfQotICAgIAorICAgIHZvaWQgc2V0RGlzdGFu
Y2VNb2RlbCh1bnNpZ25lZCBzaG9ydCwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgZmxvYXQgcmVm
RGlzdGFuY2UoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4obV9kaXN0YW5jZUVmZmVjdC5y
ZWZEaXN0YW5jZSgpKTsgfQogICAgIHZvaWQgc2V0UmVmRGlzdGFuY2UoZmxvYXQgcmVmRGlzdGFu
Y2UpIHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRSZWZEaXN0YW5jZShyZWZEaXN0YW5jZSk7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5v
ZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUu
aWRsCmluZGV4IDUwNjFlNzgyNTA0MmE5ODUyMTU5NWJmZTcyM2Y4ODQ1ODU1MzcyNWQuLjFhODY4
OGY2NDExYjk0OWI5NjY0NjljM2MyYTk4NjRiYmNiNzY4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5pZGwKQEAgLTM4LDggKzM4
LDcgQEAgbW9kdWxlIGF1ZGlvIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRVhQT05F
TlRJQUxfRElTVEFOQ0UgPSAyOwogCiAgICAgICAgIC8vIERlZmF1bHQgbW9kZWwgZm9yIHN0ZXJl
byBpcyBIUlRGIAotICAgICAgICAvLyBGSVhNRTogdXNlIHVuc2lnbmVkIHNob3J0IHdoZW4gZ2x1
ZSBnZW5lcmF0aW9uIHN1cHBvcnRzIGl0Ci0gICAgICAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25n
IHBhbm5pbmdNb2RlbAorICAgICAgICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcGFubmluZ01v
ZGVsCiAgICAgICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAg
Ly8gVXNlcyBhIDNEIGNhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbSAKQEAgLTQ4LDcgKzQ3LDkg
QEAgbW9kdWxlIGF1ZGlvIHsKICAgICAgICAgdm9pZCBzZXRWZWxvY2l0eShpbiBmbG9hdCB4LCBp
biBmbG9hdCB5LCBpbiBmbG9hdCB6KTsKIAogICAgICAgICAvLyBEaXN0YW5jZSBtb2RlbAotICAg
ICAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBkaXN0YW5jZU1vZGVsOyAvLyBGSVhNRTogdXNl
IHVuc2lnbmVkIHNob3J0IHdoZW4gZ2x1ZSBnZW5lcmF0aW9uIHN1cHBvcnRzIGl0CisgICAgICAg
IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBkaXN0YW5jZU1vZGVsCisgICAgICAgICAgICBzZXR0
ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKICAgICAgICAgYXR0cmlidXRlIGZsb2F0IHJlZkRp
c3RhbmNlOwogICAgICAgICBhdHRyaWJ1dGUgZmxvYXQgbWF4RGlzdGFuY2U7CiAgICAgICAgIGF0
dHJpYnV0ZSBmbG9hdCByb2xsb2ZmRmFjdG9yOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGIyM2NjZDkwYTUwM2JmYjY2Mjcw
N2M3MWQ4OTFiNWI3MDFjOTU3OWYuLjVkMTdiYjc5ZDU2OTYyYWZhMjg5ZTViNzcxMjhlNjkzNDQ5
YmQ4N2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNy0xMiAgTGkgWWluICA8bGkueWlu
QGludGVsLmNvbT4KKworICAgICAgICBBdWRpb1Bhbm5lck5vZGUgc2hvdWxkIHJhaXNlIGV4Y2Vw
dGlvbiB3aGVuIGRpc3RhbmNlTW9kZWwgaXMgc2V0IGluY29ycmVjdGx5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDk1MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgZGlzdGFuY2VN
b2RlbCxudW1iZXJPZklucHV0cyBhbmQgbnVtYmVyT2ZJbnB1dHMgb2YgQXVkaW9QYW5uZXJOb2Rl
LgorCisgICAgICAgICogd2ViYXVkaW8vYXVkaW9wYW5uZXJub2RlLWJhc2ljLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogd2ViYXVkaW8vYXVkaW9wYW5uZXJub2RlLWJhc2ljLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL3Bhbm5lci1zZXQtbW9kZWwtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmF1ZGlvL3Bhbm5lci1zZXQtbW9kZWwuaHRtbDogUmVt
b3ZlZC4KKwogMjAxMi0wNy0xMCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgTGluZSBkaXJlY3RpdmUgdGVzdCBpbiBmYXN0L2NhbnZhcy93ZWJnbC9nbHNsLWNv
bmZvcm1hbmNlLmh0bWwgaXMgaW5jb3JyZWN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJh
dWRpby9hdWRpb3Bhbm5lcm5vZGUtYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vYXVkaW9wYW5uZXJub2RlLWJhc2ljLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTE1
ZDg4N2MwNTUxNGY0OTE2MzhiM2QyMjdiZjQ4Y2I1NTI2OGQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9wYW5uZXJub2RlLWJhc2ljLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDIwIEBACitCYXNpYyB0ZXN0IGZvciBBdWRpb1Bhbm5lck5vZGUuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBwYW5uZXIubnVtYmVyT2ZJbnB1dHMgPT09IDEg
aXMgdHJ1ZQorUEFTUyBwYW5uZXIubnVtYmVyT2ZPdXRwdXRzID09PSAxIGlzIHRydWUKK1BBU1Mg
cGFubmluZ01vZGVsIGRlZmF1bHQgdmFsdWUgaXMgSFJURi4KK1BBU1MgcGFubmluZ01vZGVsIHNl
dCB0byBFUVVBTFBPV0VSIG1vZGVsIGFuZCByZWFkIGNvcnJlY3RseS4KK1BBU1MgcGFubmluZ01v
ZGVsIHNldCB0byBIUlRGIG1vZGVsIGFuZCByZWFkIGNvcnJlY3RseS4KK1BBU1MgU2V0dGluZyBw
YW5uaW5nTW9kZWwgdG8gU09VTkRGSUVMRCBjb3JyZWN0bHkgdGhyb3dzIGV4Y2VwdGlvbiBiZWNh
dXNlIGl0IGlzIG5vdCBpbXBsZW1lbnRlZC4KK1BBU1MgSWxsZWdhbCBwYW5uaW5nTW9kZWwgY29y
cmVjdGx5IHRocm93cyBleGNlcHRpb24uCitQQVNTIGRpc3RhbmNlTW9kZWwgc2V0IHRvIExJTkVB
Ul9ESVNUQU5DRSBhbmQgcmVhZCBjb3JyZWN0bHkuCitQQVNTIGRpc3RhbmNlTW9kZWwgc2V0IHRv
IElOVkVSU0VfRElTVEFOQ0UgYW5kIHJlYWQgY29ycmVjdGx5LgorUEFTUyBkaXN0YW5jZU1vZGVs
IHNldCB0byBFWFBPTkVOVElBTF9ESVNUQU5DRSBhbmQgcmVhZCBjb3JyZWN0bHkuCitQQVNTIEls
bGVnYWwgZGlzdGFuY2VNb2RlbCBjb3JyZWN0bHkgdGhyb3dzIGV4Y2VwdGlvbi4KK1BBU1MgcGFu
bmluZ01vZGVsIGFuZCBkaXN0YW5jZU1vZGVsIHRlc3RzIHBhc3NlZC4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJhdWRpby9hdWRpb3Bhbm5lcm5vZGUtYmFzaWMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmF1ZGlvL2F1ZGlvcGFubmVybm9kZS1iYXNpYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNDNhY2I2ODM4
OWQwY2MyMmQ3YTYyYzg1OWIwMGRlZTU3MWFjZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJhdWRpby9hdWRpb3Bhbm5lcm5vZGUtYmFzaWMuaHRtbApAQCAtMCwwICsxLDEyMiBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlv
bmFsLy9FTiI+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorICAgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAg
ICA8dGl0bGU+QmFzaWMgdGVzdCBmb3IgQXVkaW9QYW5uZXJOb2RlPC90aXRsZT4KKyAgPC9oZWFk
PgorCisgIDxib2R5PgorICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKworICAgIDxzY3JpcHQ+CisgICAgICBkZXNjcmlwdGlvbigi
QmFzaWMgdGVzdCBmb3IgQXVkaW9QYW5uZXJOb2RlLiIpOworCisgICAgICBmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisgICAgICAgICAgfQorCisgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgICAgdmFyIGNvbnRleHQgPSBuZXcgd2Via2l0QXVkaW9Db250
ZXh0KCk7CisgICAgICAgICAgdmFyIHN1Y2Nlc3MgPSB0cnVlOworICAgICAgICAgIHZhciBwYW5u
ZXIgPSBjb250ZXh0LmNyZWF0ZVBhbm5lcigpOworICAgICAgICAgIHdpbmRvdy5wYW5uZXIgPSBw
YW5uZXI7CisgICAgICAgICAgc2hvdWxkQmVUcnVlKCJwYW5uZXIubnVtYmVyT2ZJbnB1dHMgPT09
IDEiKTsKKyAgICAgICAgICBzaG91bGRCZVRydWUoInBhbm5lci5udW1iZXJPZk91dHB1dHMgPT09
IDEiKTsKKworICAgICAgICAgIC8vIFNldCB0aGUgcGFubmluZyBtb2RlbCBhbmQgc2VlIGlmIGl0
IGNhbiBiZSByZWFkIGJhY2sgY29ycmVjdGx5LgorICAgICAgICAgIGlmIChwYW5uZXIucGFubmlu
Z01vZGVsID09PSBwYW5uZXIuSFJURikgeworICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJwYW5u
aW5nTW9kZWwgZGVmYXVsdCB2YWx1ZSBpcyBIUlRGLiIpOworICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoInBhbm5pbmdNb2RlbCBkZWZhdWx0IHZhbHVlIGlzIG5v
dCBIUlRGLiIpOworICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgfQor
ICAgICAgICAgIHBhbm5lci5wYW5uaW5nTW9kZWwgPSBwYW5uZXIuRVFVQUxQT1dFUjsKKyAgICAg
ICAgICBpZiAocGFubmVyLnBhbm5pbmdNb2RlbCA9PT0gMCkgeworICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJwYW5uaW5nTW9kZWwgc2V0IHRvIEVRVUFMUE9XRVIgbW9kZWwgYW5kIHJlYWQgY29y
cmVjdGx5LiIpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
InBhbm5pbmdNb2RlbCBzZXQgdG8gRVFVQUxQT1dFUiAoMCkgYnV0IHJldHVybmVkICIgKyBwYW5u
ZXIucGFubmluZ01vZGVsKTsKKyAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAg
ICAgIH0KKyAgICAgIAorICAgICAgICAgIHBhbm5lci5wYW5uaW5nTW9kZWwgPSBwYW5uZXIuSFJU
RjsKKyAgICAgICAgICBpZiAocGFubmVyLnBhbm5pbmdNb2RlbCA9PT0gMSkgeworICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJwYW5uaW5nTW9kZWwgc2V0IHRvIEhSVEYgbW9kZWwgYW5kIHJlYWQg
Y29ycmVjdGx5LiIpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoInBhbm5pbmdNb2RlbCBzZXQgdG8gSFJURiAoMSkgYnV0IHJldHVybmVkICIgKyBwYW5uZXIu
cGFubmluZ01vZGVsKTsKKyAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAg
IH0KKworICAgICAgICAgIC8vIFNPVU5ERklFTEQgc2hvdWxkIHRocm93IGV4Y2VwdGlvbiBiZWNh
dXNlIGl0IGlzIG5vdAorICAgICAgICAgIC8vIGN1cnJlbnRseSBpbXBsZW1lbnRlZC4gIChTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MzY3KQorICAgICAgICAg
IHRyeSB7CisgICAgICAgICAgICAgIHBhbm5lci5wYW5uaW5nTW9kZWwgPSBwYW5uZXIuU09VTkRG
SUVMRDsKKyAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiU2V0dGluZyBwYW5uaW5nTW9kZWwgdG8g
U09VTkRGSUVMRCBzaG91bGQgdGhyb3cgZXhjZXB0aW9uIGJlY2F1c2UgaXQgaXMgbm90IGltcGxl
bWVudGVkLiIpOworICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAgfSBj
YXRjaChlKSB7CisgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlNldHRpbmcgcGFubmluZ01vZGVs
IHRvIFNPVU5ERklFTEQgY29ycmVjdGx5IHRocm93cyBleGNlcHRpb24gYmVjYXVzZSBpdCBpcyBu
b3QgaW1wbGVtZW50ZWQuIik7CisgICAgICAgICAgfQorCisgICAgICAgICAgLy8gT3RoZXIgaW52
YWxpZCBtb2RlbHMgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbi4KKyAgICAgICAgICB0cnkgewor
ICAgICAgICAgICAgICBwYW5uZXIucGFubmluZ01vZGVsID0gcGFubmVyLlNPVU5ERklFTEQgKyAx
OworICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJJbGxlZ2FsIHBhbm5pbmdNb2RlbCBzaG91bGQg
dGhyb3cgZXhjZXB0aW9uLiIpOworICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAg
ICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIklsbGVnYWwgcGFu
bmluZ01vZGVsIGNvcnJlY3RseSB0aHJvd3MgZXhjZXB0aW9uLiIpOworICAgICAgICAgIH0KKwor
ICAgICAgICAgIHBhbm5lci5kaXN0YW5jZU1vZGVsID0gcGFubmVyLkxJTkVBUl9ESVNUQU5DRTsK
KyAgICAgICAgICBpZiAocGFubmVyLmRpc3RhbmNlTW9kZWwgPT09IDApIHsKKyAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGlzdGFuY2VNb2RlbCBzZXQgdG8gTElORUFSX0RJU1RBTkNFIGFuZCBy
ZWFkIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXN0YW5jZU1vZGVsIHNldCB0byBMSU5FQVJfRElTVEFOQ0UgKDApIGJ1dCByZXR1
cm5lZCAiICsgcGFubmVyLmRpc3RhbmNlTW9kZWwpOworICAgICAgICAgICAgICBzdWNjZXNzID0g
ZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICAgCisgICAgICAgICAgcGFubmVyLmRpc3RhbmNl
TW9kZWwgPSBwYW5uZXIuSU5WRVJTRV9ESVNUQU5DRTsKKyAgICAgICAgICBpZiAocGFubmVyLmRp
c3RhbmNlTW9kZWwgPT09IDEpIHsKKyAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGlzdGFuY2VN
b2RlbCBzZXQgdG8gSU5WRVJTRV9ESVNUQU5DRSBhbmQgcmVhZCBjb3JyZWN0bHkuIik7CisgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGlzdGFuY2VNb2RlbCBz
ZXQgdG8gSU5WRVJTRV9ESVNUQU5DRSAoMSkgYnV0IHJldHVybmVkICIgKyBwYW5uZXIuZGlzdGFu
Y2VNb2RlbCk7CisgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgICB9CisK
KyAgICAgICAgICBwYW5uZXIuZGlzdGFuY2VNb2RlbCA9IHBhbm5lci5FWFBPTkVOVElBTF9ESVNU
QU5DRTsKKyAgICAgICAgICBpZiAocGFubmVyLmRpc3RhbmNlTW9kZWwgPT09IDIpIHsKKyAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGlzdGFuY2VNb2RlbCBzZXQgdG8gRVhQT05FTlRJQUxfRElT
VEFOQ0UgYW5kIHJlYWQgY29ycmVjdGx5LiIpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpc3RhbmNlTW9kZWwgc2V0IHRvIEVYUE9ORU5USUFMX0RJU1RB
TkNFICgyKSBidXQgcmV0dXJuZWQgIiArIHBhbm5lci5kaXN0YW5jZU1vZGVsKTsKKyAgICAgICAg
ICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAgIH0KKworICAgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICAgIHBhbm5lci5kaXN0YW5jZU1vZGVsID0gcGFubmVyLkVYUE9ORU5USUFMX0RJ
U1RBTkNFICsgMTsKKyAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBkaXN0YW5jZU1v
ZGVsIHNob3VsZCB0aHJvdyBleGNlcHRpb24uIik7CisgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBm
YWxzZTsKKyAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
SWxsZWdhbCBkaXN0YW5jZU1vZGVsIGNvcnJlY3RseSB0aHJvd3MgZXhjZXB0aW9uLiIpOworICAg
ICAgICAgIH0KKworICAgICAgICAgIGlmIChzdWNjZXNzKSB7CisgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoInBhbm5pbmdNb2RlbCBhbmQgZGlzdGFuY2VNb2RlbCB0ZXN0cyBwYXNzZWQuIik7Cisg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgdGVzdEZhaWxlZCgicGFubmluZ01vZGVs
IGFuZCBkaXN0YW5jZU1vZGVsIHRlc3RzIGZhaWxlZC4iKTsKKyAgICAgICAgICB9CisKKyAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgIH0KKworICAgICAgcnVuVGVzdCgpOworICAgICAg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlw
dCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cisg
IDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Bhbm5l
ci1zZXQtbW9kZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcGFubmVyLXNl
dC1tb2RlbC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMjIw
ZDU4NzM4YTJhNWY4MDQzYTdjYWRmOWVhZDQ1NjMzYjZiZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcGFubmVyLXNl
dC1tb2RlbC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1UZXN0
IGlmIHBhbm5pbmdNb2RlbCBjYW4gYmUgc2V0IGFuZCByZWFkLgotCi1PbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCi0KLVBBU1MgUGFubmVyIHNldCB0byBFUVVBTFBPV0VSIG1vZGVsIGFuZCByZWFk
IGNvcnJlY3RseS4KLVBBU1MgUGFubmVyIHNldCB0byBIUlRGIG1vZGVsIGFuZCByZWFkIGNvcnJl
Y3RseS4KLVBBU1MgU2V0dGluZyBwYW5uZXIgbW9kZWwgdG8gU09VTkRGSUVMRCBjb3JyZWN0bHkg
dGhyb3dzIGV4Y2VwdGlvbiBiZWNhdXNlIGl0IGlzIG5vdCBpbXBsZW1lbnRlZC4KLVBBU1MgSWxs
ZWdhbCBwYW5uZXIgbW9kZWwgY29ycmVjdGx5IHRocm93cyBleGNlcHRpb24uCi1QQVNTIFBhbm5p
bmcgbW9kZWwgdGVzdHMgcGFzc2VkLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQot
Ci1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Bhbm5l
ci1zZXQtbW9kZWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Bhbm5lci1zZXQtbW9kZWwu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJmOTM4YzVjMGIxMWY3OGExMmRk
YTE4MTU4OTEyOWNmYTNhZWFhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9wYW5uZXItc2V0LW1vZGVsLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1cz
Qy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPgotICA8aGVhZD4KLSAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9hdWRpby10ZXN0aW5n
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgotICAgIDx0aXRsZT5UZXN0IFBhbm5lciBzZXRQYW5uaW5n
TW9kZWwgdmFsdWVzLjwvdGl0bGU+Ci0gIDwvaGVhZD4KLQotICA8Ym9keT4KLSAgICA8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KLSAg
ICA8c2NyaXB0PgotICAgICAgZGVzY3JpcHRpb24oIlRlc3QgaWYgcGFubmluZ01vZGVsIGNhbiBi
ZSBzZXQgYW5kIHJlYWQuIik7Ci0KLSAgICAgIC8vIFRlc3QgdG8gc2VlIGlmIHdlIHBhbm5pbmdN
b2RlbCBpcyB1cGRhdGVkIHdoZW4gd2Ugc2V0IGl0LgotICAgICAgZnVuY3Rpb24gcnVuVGVzdCgp
IHsKLSAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLQotICAgICAgICAgIHZhciBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgp
OwotICAgICAgICAgIHZhciBzdWNjZXNzID0gdHJ1ZTsKLSAgICAgICAgICB2YXIgcGFubmVyID0g
Y29udGV4dC5jcmVhdGVQYW5uZXIoKTsKLQotICAgICAgICAgIC8vIFNldCB0aGUgcGFubmluZyBt
b2RlbCBhbmQgc2VlIGlmIGl0IGNhbiBiZSByZWFkIGJhY2sKLSAgICAgICAgICAvLyBjb3JyZWN0
bHkuCi0gICAgICAgICAgcGFubmVyLnBhbm5pbmdNb2RlbCA9IHBhbm5lci5FUVVBTFBPV0VSOwot
ICAgICAgICAgIGlmIChwYW5uZXIucGFubmluZ01vZGVsID09IDApIHsKLSAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiUGFubmVyIHNldCB0byBFUVVBTFBPV0VSIG1vZGVsIGFuZCByZWFkIGNvcnJl
Y3RseS4iKTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQ
YW5uZXIgbW9kZWwgc2V0IHRvIEVRVUFMUE9XRVIgKDApIGJ1dCByZXR1cm5lZCAiICsgcGFubmVy
LnBhbm5pbmdNb2RlbCk7Ci0gICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAg
ICB9Ci0gICAgICAKLSAgICAgICAgICBwYW5uZXIucGFubmluZ01vZGVsID0gcGFubmVyLkhSVEY7
Ci0gICAgICAgICAgaWYgKHBhbm5lci5wYW5uaW5nTW9kZWwgPT0gMSkgewotICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJQYW5uZXIgc2V0IHRvIEhSVEYgbW9kZWwgYW5kIHJlYWQgY29ycmVjdGx5
LiIpOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlBhbm5l
ciBtb2RlbCBzZXQgdG8gSFJURiAoMSkgYnV0IHJldHVybmVkICIgKyBwYW5uZXIucGFubmluZ01v
ZGVsKTsKLSAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICAgIH0KLQotICAg
ICAgICAgIC8vIFNPVU5ERklFTEQgc2hvdWxkIHRocm93IGV4Y2VwdGlvbiBiZWNhdXNlIGl0IGlz
IG5vdAotICAgICAgICAgIC8vIGN1cnJlbnRseSBpbXBsZW1lbnRlZC4gIChTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MzY3KQotICAgICAgICAgIHRyeSB7Ci0g
ICAgICAgICAgICAgIHBhbm5lci5wYW5uaW5nTW9kZWwgPSBwYW5uZXIuU09VTkRGSUVMRDsKLSAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiU2V0dGluZyBwYW5uZXIgbW9kZWwgdG8gU09VTkRGSUVM
RCBzaG91bGQgdGhyb3cgZXhjZXB0aW9uIGJlY2F1c2UgaXQgaXMgbm90IGltcGxlbWVudGVkLiIp
OwotICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgICAgfSBjYXRjaChlKSB7
Ci0gICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlNldHRpbmcgcGFubmVyIG1vZGVsIHRvIFNPVU5E
RklFTEQgY29ycmVjdGx5IHRocm93cyBleGNlcHRpb24gYmVjYXVzZSBpdCBpcyBub3QgaW1wbGVt
ZW50ZWQuIik7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgLy8gT3RoZXIgaW52YWxpZCBtb2Rl
bHMgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbi4KLSAgICAgICAgICB0cnkgewotICAgICAgICAg
ICAgICBwYW5uZXIucGFubmluZ01vZGVsID0gOTk7Ci0gICAgICAgICAgICAgIHRlc3RGYWlsZWQo
IklsbGVnYWwgcGFubmVyIG1vZGVsIHNob3VsZCB0aHJvdyBleGNlcHRpb24uIik7Ci0gICAgICAg
ICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiSWxsZWdhbCBwYW5uZXIgbW9kZWwgY29ycmVjdGx5IHRocm93cyBl
eGNlcHRpb24uIik7Ci0gICAgICAgICAgfQotICAgICAgICAgIAotICAgICAgICAgIGlmIChzdWNj
ZXNzKSB7Ci0gICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlBhbm5pbmcgbW9kZWwgdGVzdHMgcGFz
c2VkLiIpOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlBh
bm5pbmcgbW9kZWwgdGVzdHMgZmFpbGVkLiIpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOwotICAgICAgfQotCi0gICAgICBydW5UZXN0KCk7Ci0gICAgICBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwotCi0gICAgPC9zY3JpcHQ+Ci0KLSAgICA8c2NyaXB0IHNyYz0i
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLSAgPC9ib2R5
PgotPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153721</attachid>
            <date>2012-07-22 19:43:34 -0700</date>
            <delta_ts>2012-07-31 12:14:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90952-20120724104802.patch</filename>
            <type>text/plain</type>
            <size>14543</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVmMjk2ZDA0MWI1MGU2
OTRjN2Q4ZjU4YTdkMDE5ZWMzM2NlZTc4Yy4uYzkyZDE0NmQ5MDMyNDVkYTEwMjlhNTlkMTE5NWU0
NDFjM2JiNjcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA3LTEyICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIEF1ZGlvUGFubmVyTm9kZSBzaG91bGQg
cmFpc2UgZXhjZXB0aW9uIHdoZW4gZGlzdGFuY2VNb2RlbCBpcyBzZXQgaW5jb3JyZWN0bHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTUyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlYzogaHR0cDov
L3d3dy53My5vcmcvVFIvd2ViYXVkaW8vI0F1ZGlvUGFubmVyTm9kZS1zZWN0aW9uCisgICAgICAg
IFRoZSBkaXN0YW5jZSBtb2RlbCBjYW4gYmUgb25seSBzZXQgdG8gTElORUFSX0RJU1RBTkNFLCBJ
TlZFUlNFX0RJU1RBTkNFIG9yIEVYUE9ORU5USUFMX0RJU1RBTkNFLgorICAgICAgICBJZiB0aGUg
aW5jb3JyZWN0IHZhbHVlIGlzIHNldCwgaXQgd2lsbCByYWlzZSB0aGUgZXhjZXB0aW9uLgorICAg
ICAgICBVc2UgdGhlIHVuc2lnbmVkIHNob3J0IHRvIHJlcGxhY2UgdW5zaWduZWQgbG9uZyBpbiBB
dWRpb1Bhbm5lck5vZGUuaWRsLgorCisgICAgICAgIFRlc3Q6IHdlYmF1ZGlvL2F1ZGlvcGFubmVy
bm9kZS1iYXNpYy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVy
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Bhbm5lck5vZGU6OnNldERpc3RhbmNl
TW9kZWwpOiByYWlzZSBleGNlcHRpb24KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmg6CisgICAgICAgIChBdWRpb1Bhbm5lck5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmlkbDogdXNp
bmcgdW5zaWduZWQgc2hvcnQgdG8gcmVwbGFjZSB1bnNpZ25lZCBsb25nCisKIDIwMTItMDctMTAg
IFByYXZpbiBEICA8cHJhdmluZC4yazRAZ21haWwuY29tPgogCiAgICAgICAgIFJlLWZhY3Rvcmlu
ZyByZWNhbGNDb2x1bW4gaW4gQXV0b1RhYmxlTGF5b3V0LmNwcCBmb3IgcmVhZGFiaWxpdHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmNw
cAppbmRleCA0ZDBhZDE4OWM2MDgyMmExOTA0MjcyNzk3ZDI1NTJjNWZkZGVmZTUzLi5kODUxYTI1
MTM3MzJmNTEzNTRmYjhjOGZkMWZjZTczOWI3NDU4NjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuY3BwCkBAIC0xNzEsNiArMTcx
LDIwIEBAIHZvaWQgQXVkaW9QYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9kZWwodW5zaWduZWQgc2hv
cnQgbW9kZWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0KIH0KIAordm9pZCBBdWRpb1Bhbm5l
ck5vZGU6OnNldERpc3RhbmNlTW9kZWwodW5zaWduZWQgc2hvcnQgbW9kZWwsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIHN3aXRjaCAobW9kZWwpIHsKKyAgICBjYXNlIERpc3RhbmNlRWZmZWN0
OjpNb2RlbExpbmVhcjoKKyAgICBjYXNlIERpc3RhbmNlRWZmZWN0OjpNb2RlbEludmVyc2U6Cisg
ICAgY2FzZSBEaXN0YW5jZUVmZmVjdDo6TW9kZWxFeHBvbmVudGlhbDoKKyAgICAgICAgbV9kaXN0
YW5jZUVmZmVjdC5zZXRNb2RlbChzdGF0aWNfY2FzdDxEaXN0YW5jZUVmZmVjdDo6TW9kZWxUeXBl
Pihtb2RlbCksIHRydWUpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIHZvaWQg
QXVkaW9QYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwg
ZG91YmxlKiBvdXRFbGV2YXRpb24pCiB7CiAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBjYWNoZSBh
emltdXRoIGFuZCBlbGV2YXRpb24gKGlmIHBvc3NpYmxlKSwgc28gd2Ugb25seSByZS1jYWxjdWxh
dGUgaWYgYSBjaGFuZ2UgaGFzIGJlZW4gbWFkZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5oCmluZGV4IDk2MWVmM2MyY2YwZmFiNTU4ZTQ0
N2YxN2ZjMTM4MDUwNzdkZjAwMmMuLjBiYjg2MTM2MTE4MWU5OGI0ZjY3MDlmM2U3NTJiNmU2MmMz
MmRhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Q
YW5uZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
bm5lck5vZGUuaApAQCAtOTYsOCArOTYsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBEaXN0YW5jZSBw
YXJhbWV0ZXJzCiAgICAgdW5zaWduZWQgc2hvcnQgZGlzdGFuY2VNb2RlbCgpIHsgcmV0dXJuIG1f
ZGlzdGFuY2VFZmZlY3QubW9kZWwoKTsgfQotICAgIHZvaWQgc2V0RGlzdGFuY2VNb2RlbCh1bnNp
Z25lZCBzaG9ydCBtb2RlbCkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldE1vZGVsKHN0YXRpY19jYXN0
PERpc3RhbmNlRWZmZWN0OjpNb2RlbFR5cGU+KG1vZGVsKSwgdHJ1ZSk7IH0KLSAgICAKKyAgICB2
b2lkIHNldERpc3RhbmNlTW9kZWwodW5zaWduZWQgc2hvcnQsIEV4Y2VwdGlvbkNvZGUmKTsKKwog
ICAgIGZsb2F0IHJlZkRpc3RhbmNlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fZGlz
dGFuY2VFZmZlY3QucmVmRGlzdGFuY2UoKSk7IH0KICAgICB2b2lkIHNldFJlZkRpc3RhbmNlKGZs
b2F0IHJlZkRpc3RhbmNlKSB7IG1fZGlzdGFuY2VFZmZlY3Quc2V0UmVmRGlzdGFuY2UocmVmRGlz
dGFuY2UpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYW5uZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9QYW5uZXJOb2RlLmlkbAppbmRleCA1MDYxZTc4MjUwNDJhOTg1MjE1OTViZmU3MjNmODg0NTg1
NTM3MjVkLi4xYTg2ODhmNjQxMWI5NDliOTY2NDY5YzNjMmE5ODY0YmJjYjc2ODM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaWRs
CkBAIC0zOCw4ICszOCw3IEBAIG1vZHVsZSBhdWRpbyB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IEVYUE9ORU5USUFMX0RJU1RBTkNFID0gMjsKIAogICAgICAgICAvLyBEZWZhdWx0IG1v
ZGVsIGZvciBzdGVyZW8gaXMgSFJURiAKLSAgICAgICAgLy8gRklYTUU6IHVzZSB1bnNpZ25lZCBz
aG9ydCB3aGVuIGdsdWUgZ2VuZXJhdGlvbiBzdXBwb3J0cyBpdAotICAgICAgICBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBwYW5uaW5nTW9kZWwKKyAgICAgICAgYXR0cmlidXRlIHVuc2lnbmVkIHNo
b3J0IHBhbm5pbmdNb2RlbAogICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24p
OwogCiAgICAgICAgIC8vIFVzZXMgYSAzRCBjYXJ0ZXNpYW4gY29vcmRpbmF0ZSBzeXN0ZW0gCkBA
IC00OCw3ICs0Nyw5IEBAIG1vZHVsZSBhdWRpbyB7CiAgICAgICAgIHZvaWQgc2V0VmVsb2NpdHko
aW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwgaW4gZmxvYXQgeik7CiAKICAgICAgICAgLy8gRGlzdGFu
Y2UgbW9kZWwKLSAgICAgICAgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgZGlzdGFuY2VNb2RlbDsg
Ly8gRklYTUU6IHVzZSB1bnNpZ25lZCBzaG9ydCB3aGVuIGdsdWUgZ2VuZXJhdGlvbiBzdXBwb3J0
cyBpdAorICAgICAgICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgZGlzdGFuY2VNb2RlbAorICAg
ICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOworCiAgICAgICAgIGF0dHJpYnV0
ZSBmbG9hdCByZWZEaXN0YW5jZTsKICAgICAgICAgYXR0cmlidXRlIGZsb2F0IG1heERpc3RhbmNl
OwogICAgICAgICBhdHRyaWJ1dGUgZmxvYXQgcm9sbG9mZkZhY3RvcjsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiMjNjY2Q5
MGE1MDNiZmI2NjI3MDdjNzFkODkxYjViNzAxYzk1NzlmLi40YzEzYzNmNzEwMzcxZGQ0MDcwNWEw
OTA4MjE3ZWIzMDMxMmZlMWJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDctMTIgIExp
IFlpbiAgPGxpLnlpbkBpbnRlbC5jb20+CisKKyAgICAgICAgQXVkaW9QYW5uZXJOb2RlIHNob3Vs
ZCByYWlzZSBleGNlcHRpb24gd2hlbiBkaXN0YW5jZU1vZGVsIGlzIHNldCBpbmNvcnJlY3RseQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA5NTIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGVjOiBodHRw
Oi8vd3d3LnczLm9yZy9UUi93ZWJhdWRpby8jQXVkaW9QYW5uZXJOb2RlLXNlY3Rpb24KKyAgICAg
ICAgQWRkIHRlc3RzIGZvciBkaXN0YW5jZU1vZGVsLG51bWJlck9mSW5wdXRzIGFuZCBudW1iZXJP
ZklucHV0cyBvZiBBdWRpb1Bhbm5lck5vZGUuCisKKyAgICAgICAgKiB3ZWJhdWRpby9hdWRpb3Bh
bm5lcm5vZGUtYmFzaWMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9h
dWRpb3Bhbm5lcm5vZGUtYmFzaWMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViYXVkaW8vcGFu
bmVyLXNldC1tb2RlbC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViYXVkaW8v
cGFubmVyLXNldC1tb2RlbC5odG1sOiBSZW1vdmVkLgorCiAyMDEyLTA3LTEwICBLZW5uZXRoIFJ1
c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBMaW5lIGRpcmVjdGl2ZSB0ZXN0IGlu
IGZhc3QvY2FudmFzL3dlYmdsL2dsc2wtY29uZm9ybWFuY2UuaHRtbCBpcyBpbmNvcnJlY3QKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvcGFubmVybm9kZS1iYXNpYy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb3Bhbm5lcm5vZGUtYmFzaWMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxMGVkNjY0N2Y3N2NjMmYwOTc5ODM2YzlmNWZkMTBlNjJk
NDAwODcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb3Bhbm5l
cm5vZGUtYmFzaWMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK0Jhc2ljIHRlc3QgZm9y
IEF1ZGlvUGFubmVyTm9kZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIEF1
ZGlvUGFubmVyTm9kZSBoYXMgb25lIGlucHV0LgorUEFTUyBBdWRpb1Bhbm5lck5vZGUgaGFzIG9u
ZSBvdXRwdXQuCitQQVNTIHBhbm5pbmdNb2RlbCBkZWZhdWx0IHZhbHVlIGlzIEhSVEYuCitQQVNT
IHBhbm5pbmdNb2RlbCBzZXQgdG8gRVFVQUxQT1dFUiBtb2RlbCBhbmQgcmVhZCBjb3JyZWN0bHku
CitQQVNTIHBhbm5pbmdNb2RlbCBzZXQgdG8gSFJURiBtb2RlbCBhbmQgcmVhZCBjb3JyZWN0bHku
CitQQVNTIFNldHRpbmcgcGFubmluZ01vZGVsIHRvIFNPVU5ERklFTEQgY29ycmVjdGx5IHRocm93
cyBleGNlcHRpb24gYmVjYXVzZSBpdCBpcyBub3QgaW1wbGVtZW50ZWQuCitQQVNTIElsbGVnYWwg
cGFubmluZ01vZGVsIGNvcnJlY3RseSB0aHJvd3MgZXhjZXB0aW9uLgorUEFTUyBkaXN0YW5jZU1v
ZGVsIHNldCB0byBMSU5FQVJfRElTVEFOQ0UgYW5kIHJlYWQgY29ycmVjdGx5LgorUEFTUyBkaXN0
YW5jZU1vZGVsIHNldCB0byBJTlZFUlNFX0RJU1RBTkNFIGFuZCByZWFkIGNvcnJlY3RseS4KK1BB
U1MgZGlzdGFuY2VNb2RlbCBzZXQgdG8gRVhQT05FTlRJQUxfRElTVEFOQ0UgYW5kIHJlYWQgY29y
cmVjdGx5LgorUEFTUyBJbGxlZ2FsIGRpc3RhbmNlTW9kZWwgY29ycmVjdGx5IHRocm93cyBleGNl
cHRpb24uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9wYW5uZXJub2RlLWJhc2lj
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb3Bhbm5lcm5vZGUtYmFzaWMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44ODJjY2ZhZGMzYTIyOWVhNDI0MzlhZmFmMzcwOWNlODkyNTMxMDFmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9wYW5uZXJub2RlLWJhc2lj
Lmh0bWwKQEAgLTAsMCArMSwxMDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorCis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIkJhc2ljIHRlc3QgZm9y
IEF1ZGlvUGFubmVyTm9kZS4iKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIHZhciBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29u
dGV4dCgpOworICAgIHZhciBwYW5uZXIgPSBjb250ZXh0LmNyZWF0ZVBhbm5lcigpOworICAgIAor
ICAgIGlmIChwYW5uZXIubnVtYmVyT2ZJbnB1dHMgPT09IDEpCisgICAgICAgIHRlc3RQYXNzZWQo
IkF1ZGlvUGFubmVyTm9kZSBoYXMgb25lIGlucHV0LiIpOworICAgIGVsc2UKKyAgICAgICAgdGVz
dEZhaWxlZCgiQXVkaW9QYW5uZXJOb2RlIHNob3VsZCBoYXZlIG9uZSBpbnB1dC4iKTsKKworICAg
IGlmIChwYW5uZXIubnVtYmVyT2ZPdXRwdXRzID09PSAxKQorICAgICAgICB0ZXN0UGFzc2VkKCJB
dWRpb1Bhbm5lck5vZGUgaGFzIG9uZSBvdXRwdXQuIik7CisgICAgZWxzZQorICAgICAgICB0ZXN0
RmFpbGVkKCJBdWRpb1Bhbm5lck5vZGUgc2hvdWxkIGhhdmUgb25lIG91dHB1dC4iKTsKKworICAg
IGlmIChwYW5uZXIucGFubmluZ01vZGVsID09PSBwYW5uZXIuSFJURikKKyAgICAgICAgdGVzdFBh
c3NlZCgicGFubmluZ01vZGVsIGRlZmF1bHQgdmFsdWUgaXMgSFJURi4iKTsKKyAgICBlbHNlCisg
ICAgICAgIHRlc3RGYWlsZWQoInBhbm5pbmdNb2RlbCBkZWZhdWx0IHZhbHVlIGlzIG5vdCBIUlRG
LiIpOworICAgIAorICAgIC8vIFNldCB0aGUgcGFubmluZyBtb2RlbCBhbmQgc2VlIGlmIGl0IGNh
biBiZSByZWFkIGJhY2sgY29ycmVjdGx5LgorICAgIHBhbm5lci5wYW5uaW5nTW9kZWwgPSBwYW5u
ZXIuRVFVQUxQT1dFUjsKKyAgICBpZiAocGFubmVyLnBhbm5pbmdNb2RlbCA9PT0gMCkKKyAgICAg
ICAgdGVzdFBhc3NlZCgicGFubmluZ01vZGVsIHNldCB0byBFUVVBTFBPV0VSIG1vZGVsIGFuZCBy
ZWFkIGNvcnJlY3RseS4iKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoInBhbm5pbmdN
b2RlbCBzZXQgdG8gRVFVQUxQT1dFUiAoMCkgYnV0IHJldHVybmVkICIgKyBwYW5uZXIucGFubmlu
Z01vZGVsKTsKKyAgICAKKyAgICBwYW5uZXIucGFubmluZ01vZGVsID0gcGFubmVyLkhSVEY7Cisg
ICAgaWYgKHBhbm5lci5wYW5uaW5nTW9kZWwgPT09IDEpCisgICAgICAgIHRlc3RQYXNzZWQoInBh
bm5pbmdNb2RlbCBzZXQgdG8gSFJURiBtb2RlbCBhbmQgcmVhZCBjb3JyZWN0bHkuIik7CisgICAg
ZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCJwYW5uaW5nTW9kZWwgc2V0IHRvIEhSVEYgKDEpIGJ1
dCByZXR1cm5lZCAiICsgcGFubmVyLnBhbm5pbmdNb2RlbCk7CisKKyAgICAvLyBTT1VOREZJRUxE
IHNob3VsZCB0aHJvdyBleGNlcHRpb24gYmVjYXVzZSBpdCBpcyBub3QKKyAgICAvLyBjdXJyZW50
bHkgaW1wbGVtZW50ZWQuICAoU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NzM2NykKKyAgICB0cnkgeworICAgICAgICBwYW5uZXIucGFubmluZ01vZGVsID0gcGFu
bmVyLlNPVU5ERklFTEQ7CisgICAgICAgIHRlc3RGYWlsZWQoIlNldHRpbmcgcGFubmluZ01vZGVs
IHRvIFNPVU5ERklFTEQgc2hvdWxkIHRocm93IGV4Y2VwdGlvbiBiZWNhdXNlIGl0IGlzIG5vdCBp
bXBsZW1lbnRlZC4iKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU2V0
dGluZyBwYW5uaW5nTW9kZWwgdG8gU09VTkRGSUVMRCBjb3JyZWN0bHkgdGhyb3dzIGV4Y2VwdGlv
biBiZWNhdXNlIGl0IGlzIG5vdCBpbXBsZW1lbnRlZC4iKTsKKyAgICB9CisKKyAgICAvLyBPdGhl
ciBpbnZhbGlkIG1vZGVscyBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLgorICAgIHRyeSB7Cisg
ICAgICAgIHBhbm5lci5wYW5uaW5nTW9kZWwgPSBwYW5uZXIuU09VTkRGSUVMRCArIDE7CisgICAg
ICAgIHRlc3RGYWlsZWQoIklsbGVnYWwgcGFubmluZ01vZGVsIHNob3VsZCB0aHJvdyBleGNlcHRp
b24uIik7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIklsbGVnYWwgcGFu
bmluZ01vZGVsIGNvcnJlY3RseSB0aHJvd3MgZXhjZXB0aW9uLiIpOworICAgIH0KKworICAgIHBh
bm5lci5kaXN0YW5jZU1vZGVsID0gcGFubmVyLkxJTkVBUl9ESVNUQU5DRTsKKyAgICBpZiAocGFu
bmVyLmRpc3RhbmNlTW9kZWwgPT09IDApCisgICAgICAgIHRlc3RQYXNzZWQoImRpc3RhbmNlTW9k
ZWwgc2V0IHRvIExJTkVBUl9ESVNUQU5DRSBhbmQgcmVhZCBjb3JyZWN0bHkuIik7CisgICAgZWxz
ZQorICAgICAgICB0ZXN0RmFpbGVkKCJkaXN0YW5jZU1vZGVsIHNldCB0byBMSU5FQVJfRElTVEFO
Q0UgKDApIGJ1dCByZXR1cm5lZCAiICsgcGFubmVyLmRpc3RhbmNlTW9kZWwpOworCisgICAgcGFu
bmVyLmRpc3RhbmNlTW9kZWwgPSBwYW5uZXIuSU5WRVJTRV9ESVNUQU5DRTsKKyAgICBpZiAocGFu
bmVyLmRpc3RhbmNlTW9kZWwgPT09IDEpCisgICAgICAgIHRlc3RQYXNzZWQoImRpc3RhbmNlTW9k
ZWwgc2V0IHRvIElOVkVSU0VfRElTVEFOQ0UgYW5kIHJlYWQgY29ycmVjdGx5LiIpOworICAgIGVs
c2UKKyAgICAgICAgdGVzdEZhaWxlZCgiZGlzdGFuY2VNb2RlbCBzZXQgdG8gSU5WRVJTRV9ESVNU
QU5DRSAoMSkgYnV0IHJldHVybmVkICIgKyBwYW5uZXIuZGlzdGFuY2VNb2RlbCk7CisKKyAgICBw
YW5uZXIuZGlzdGFuY2VNb2RlbCA9IHBhbm5lci5FWFBPTkVOVElBTF9ESVNUQU5DRTsKKyAgICBp
ZiAocGFubmVyLmRpc3RhbmNlTW9kZWwgPT09IDIpCisgICAgICAgIHRlc3RQYXNzZWQoImRpc3Rh
bmNlTW9kZWwgc2V0IHRvIEVYUE9ORU5USUFMX0RJU1RBTkNFIGFuZCByZWFkIGNvcnJlY3RseS4i
KTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoImRpc3RhbmNlTW9kZWwgc2V0IHRvIEVY
UE9ORU5USUFMX0RJU1RBTkNFICgyKSBidXQgcmV0dXJuZWQgIiArIHBhbm5lci5kaXN0YW5jZU1v
ZGVsKTsKKworICAgIHRyeSB7CisgICAgICAgIHBhbm5lci5kaXN0YW5jZU1vZGVsID0gcGFubmVy
LkVYUE9ORU5USUFMX0RJU1RBTkNFICsgMTsKKyAgICAgICAgdGVzdEZhaWxlZCgiSWxsZWdhbCBk
aXN0YW5jZU1vZGVsIHNob3VsZCB0aHJvdyBleGNlcHRpb24uIik7CisgICAgfSBjYXRjaChlKSB7
CisgICAgICAgIHRlc3RQYXNzZWQoIklsbGVnYWwgZGlzdGFuY2VNb2RlbCBjb3JyZWN0bHkgdGhy
b3dzIGV4Y2VwdGlvbi4iKTsKKyAgICB9CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworcnVu
VGVzdCgpOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Bhbm5lci1z
ZXQtbW9kZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcGFubmVyLXNldC1t
b2RlbC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMjIwZDU4
NzM4YTJhNWY4MDQzYTdjYWRmOWVhZDQ1NjMzYjZiZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcGFubmVyLXNldC1t
b2RlbC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1UZXN0IGlm
IHBhbm5pbmdNb2RlbCBjYW4gYmUgc2V0IGFuZCByZWFkLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCi0KLVBBU1MgUGFubmVyIHNldCB0byBFUVVBTFBPV0VSIG1vZGVsIGFuZCByZWFkIGNv
cnJlY3RseS4KLVBBU1MgUGFubmVyIHNldCB0byBIUlRGIG1vZGVsIGFuZCByZWFkIGNvcnJlY3Rs
eS4KLVBBU1MgU2V0dGluZyBwYW5uZXIgbW9kZWwgdG8gU09VTkRGSUVMRCBjb3JyZWN0bHkgdGhy
b3dzIGV4Y2VwdGlvbiBiZWNhdXNlIGl0IGlzIG5vdCBpbXBsZW1lbnRlZC4KLVBBU1MgSWxsZWdh
bCBwYW5uZXIgbW9kZWwgY29ycmVjdGx5IHRocm93cyBleGNlcHRpb24uCi1QQVNTIFBhbm5pbmcg
bW9kZWwgdGVzdHMgcGFzc2VkLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Bhbm5lci1z
ZXQtbW9kZWwuaHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Bhbm5lci1zZXQtbW9kZWwuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJmOTM4YzVjMGIxMWY3OGExMmRkYTE4
MTU4OTEyOWNmYTNhZWFhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9wYW5uZXItc2V0LW1vZGVsLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8v
RFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPgotICA8aGVhZD4KLSAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIi8+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9hdWRpby10ZXN0aW5nLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgotICAgIDx0aXRsZT5UZXN0IFBhbm5lciBzZXRQYW5uaW5nTW9k
ZWwgdmFsdWVzLjwvdGl0bGU+Ci0gIDwvaGVhZD4KLQotICA8Ym9keT4KLSAgICA8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KLSAgICA8
c2NyaXB0PgotICAgICAgZGVzY3JpcHRpb24oIlRlc3QgaWYgcGFubmluZ01vZGVsIGNhbiBiZSBz
ZXQgYW5kIHJlYWQuIik7Ci0KLSAgICAgIC8vIFRlc3QgdG8gc2VlIGlmIHdlIHBhbm5pbmdNb2Rl
bCBpcyB1cGRhdGVkIHdoZW4gd2Ugc2V0IGl0LgotICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsK
LSAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKLQotICAgICAgICAgIHZhciBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgpOwot
ICAgICAgICAgIHZhciBzdWNjZXNzID0gdHJ1ZTsKLSAgICAgICAgICB2YXIgcGFubmVyID0gY29u
dGV4dC5jcmVhdGVQYW5uZXIoKTsKLQotICAgICAgICAgIC8vIFNldCB0aGUgcGFubmluZyBtb2Rl
bCBhbmQgc2VlIGlmIGl0IGNhbiBiZSByZWFkIGJhY2sKLSAgICAgICAgICAvLyBjb3JyZWN0bHku
Ci0gICAgICAgICAgcGFubmVyLnBhbm5pbmdNb2RlbCA9IHBhbm5lci5FUVVBTFBPV0VSOwotICAg
ICAgICAgIGlmIChwYW5uZXIucGFubmluZ01vZGVsID09IDApIHsKLSAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiUGFubmVyIHNldCB0byBFUVVBTFBPV0VSIG1vZGVsIGFuZCByZWFkIGNvcnJlY3Rs
eS4iKTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJQYW5u
ZXIgbW9kZWwgc2V0IHRvIEVRVUFMUE9XRVIgKDApIGJ1dCByZXR1cm5lZCAiICsgcGFubmVyLnBh
bm5pbmdNb2RlbCk7Ci0gICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgICB9
Ci0gICAgICAKLSAgICAgICAgICBwYW5uZXIucGFubmluZ01vZGVsID0gcGFubmVyLkhSVEY7Ci0g
ICAgICAgICAgaWYgKHBhbm5lci5wYW5uaW5nTW9kZWwgPT0gMSkgewotICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJQYW5uZXIgc2V0IHRvIEhSVEYgbW9kZWwgYW5kIHJlYWQgY29ycmVjdGx5LiIp
OwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlBhbm5lciBt
b2RlbCBzZXQgdG8gSFJURiAoMSkgYnV0IHJldHVybmVkICIgKyBwYW5uZXIucGFubmluZ01vZGVs
KTsKLSAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICAgIH0KLQotICAgICAg
ICAgIC8vIFNPVU5ERklFTEQgc2hvdWxkIHRocm93IGV4Y2VwdGlvbiBiZWNhdXNlIGl0IGlzIG5v
dAotICAgICAgICAgIC8vIGN1cnJlbnRseSBpbXBsZW1lbnRlZC4gIChTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MzY3KQotICAgICAgICAgIHRyeSB7Ci0gICAg
ICAgICAgICAgIHBhbm5lci5wYW5uaW5nTW9kZWwgPSBwYW5uZXIuU09VTkRGSUVMRDsKLSAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiU2V0dGluZyBwYW5uZXIgbW9kZWwgdG8gU09VTkRGSUVMRCBz
aG91bGQgdGhyb3cgZXhjZXB0aW9uIGJlY2F1c2UgaXQgaXMgbm90IGltcGxlbWVudGVkLiIpOwot
ICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgICAgfSBjYXRjaChlKSB7Ci0g
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlNldHRpbmcgcGFubmVyIG1vZGVsIHRvIFNPVU5ERklF
TEQgY29ycmVjdGx5IHRocm93cyBleGNlcHRpb24gYmVjYXVzZSBpdCBpcyBub3QgaW1wbGVtZW50
ZWQuIik7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgLy8gT3RoZXIgaW52YWxpZCBtb2RlbHMg
c2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbi4KLSAgICAgICAgICB0cnkgewotICAgICAgICAgICAg
ICBwYW5uZXIucGFubmluZ01vZGVsID0gOTk7Ci0gICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkls
bGVnYWwgcGFubmVyIG1vZGVsIHNob3VsZCB0aHJvdyBleGNlcHRpb24uIik7Ci0gICAgICAgICAg
ICAgIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiSWxsZWdhbCBwYW5uZXIgbW9kZWwgY29ycmVjdGx5IHRocm93cyBleGNl
cHRpb24uIik7Ci0gICAgICAgICAgfQotICAgICAgICAgIAotICAgICAgICAgIGlmIChzdWNjZXNz
KSB7Ci0gICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlBhbm5pbmcgbW9kZWwgdGVzdHMgcGFzc2Vk
LiIpOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlBhbm5p
bmcgbW9kZWwgdGVzdHMgZmFpbGVkLiIpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOwotICAgICAgfQotCi0gICAgICBydW5UZXN0KCk7Ci0gICAgICBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwotCi0gICAgPC9zY3JpcHQ+Ci0KLSAgICA8c2NyaXB0IHNyYz0iLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLSAgPC9ib2R5Pgot
PC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>