<?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>86160</bug_id>
          
          <creation_ts>2012-05-10 16:52:45 -0700</creation_ts>
          <short_desc>CSS3 calc: blending involving expressions</short_desc>
          <delta_ts>2012-06-27 11:23:33 -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>CSS</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="Mike Lawther">mikelawther</reporter>
          <assigned_to name="Mike Lawther">mikelawther</assigned_to>
          <cc>agektmr</cc>
    
    <cc>dino</cc>
    
    <cc>ojan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>621126</commentid>
    <comment_count>0</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-05-10 16:52:45 -0700</bug_when>
    <thetext>Blending (eg for CSS transitions) when a calc expression is involved is not implemented.

Ideally this would involve being able to evaluate any expressions and perform the blend. Currently at the time the blend function operates, the &apos;100% value&apos; is not known, so an expression such as &apos;100% - 10px&apos; cannot be evaluated to a pixel value result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628817</commentid>
    <comment_count>1</comment_count>
      <attachid>142952</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-05-20 23:50:57 -0700</bug_when>
    <thetext>Created attachment 142952
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628823</commentid>
    <comment_count>2</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-05-20 23:59:52 -0700</bug_when>
    <thetext>Ignore that patch, accidentally added via webkit-patch&apos;s parsing of the changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651070</commentid>
    <comment_count>3</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-06-17 17:38:55 -0700</bug_when>
    <thetext>*** Bug 89064 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656416</commentid>
    <comment_count>4</comment_count>
      <attachid>149251</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-06-24 23:52:37 -0700</bug_when>
    <thetext>Created attachment 149251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656425</commentid>
    <comment_count>5</comment_count>
      <attachid>149255</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-06-25 00:22:37 -0700</bug_when>
    <thetext>Created attachment 149255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656708</commentid>
    <comment_count>6</comment_count>
      <attachid>149255</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-06-25 10:53:00 -0700</bug_when>
    <thetext>Comment on attachment 149255
Patch

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

Code looks OK, but I&apos;d like to see some more tests.

&gt; Source/WebCore/ChangeLog:8
&gt; +        If either endpoint of a blend involves a colc expression, we create a new

Nit: colc -&gt; calc

&gt; Source/WebCore/platform/Length.cpp:223
&gt; +    return Length(CalculationValue::create(blend.release(), CalculationRangeAll));

Is it necessary to return a calculation Length here?  E.g., if you evaluated &apos;from&apos; and &apos;to&apos; to create Fixed/Percent Lengths, could you call blend() from the results?  This might avoid having to allocate 7 objects on the heap for each frame of the transition.

&gt; LayoutTests/css3/calc/transitions.html:13
&gt; +#startCalcEndCalc, #startCalcEndPx, #startCalcEndPercent {
&gt; +    width: -webkit-calc(10% + 50px);
&gt; +    width: -moz-calc(10% + 50px);
&gt; +}

Can we add a second test file that tests a calculation that is based on a transitioning element?  E.g.,
#outer&apos;s width is transitioning and #inner&apos;s width is a calculation with a percentage size (#inner could either be a fixed calculation or a calculation that is transitioning).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657020</commentid>
    <comment_count>7</comment_count>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-06-25 16:58:28 -0700</bug_when>
    <thetext>Thanks for the review Tony!

&gt; Is it necessary to return a calculation Length here?  E.g., if you evaluated &apos;from&apos; and &apos;to&apos; to create Fixed/Percent Lengths, could you call blend() from the results?  This might avoid having to allocate 7 objects on the heap for each frame of the transition.

In short, yes, it&apos;s necessary to return the CalculationValue.

If we have a Length of type Calculated, then it must be an expression involving both percents and fixed (a pure percent or pure fixed expression gets simplified earlier). So at this stage, the expression can&apos;t be evaluated to a pixel result, as we don&apos;t know what 100% is.

This is also why WebKit can&apos;t blend a fixed and a percent - it can&apos;t express one of them in terms of the other.

I know 7 mallocs is a bit gnarly :( An alternative I considered was to introduce a new type of expression node that was a BlendNode - then you&apos;d only need to alloc one of them. But I also figured that was an optimisation that could wait until the behaviour was correct.

Another thing I could do is if one of from or to is not an expression, to multiply that with its progress to eliminate some nodes. It would still mean allocating a new Length though.

How about I file a bug for these optimisations? 

&gt; Can we add a second test file that tests a calculation that is based on a transitioning element?  E.g.,
&gt; #outer&apos;s width is transitioning and #inner&apos;s width is a calculation with a percentage size (#inner could either be a fixed calculation or a calculation that is transitioning).

Cool - I&apos;ll cook something up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657030</commentid>
    <comment_count>8</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-06-25 17:05:13 -0700</bug_when>
    <thetext>Filing a bug for optimizations sounds fine to me. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657136</commentid>
    <comment_count>9</comment_count>
      <attachid>149420</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-06-25 18:45:12 -0700</bug_when>
    <thetext>Created attachment 149420
dependent transitions testcase

I&apos;ve been trying to write a dependent transitions testcase as suggested by Tony. I suspect the transition test framework doesn&apos;t support this. 

The attached testcase is my simplified attempt - there is no calc involved. Running it using new-run-webkit-tests I get (only showing relevant results):

PASS - &quot;width&quot; property for &quot;outer&quot; element at 0.5s saw something close to: 300
FAIL - &quot;width&quot; property for &quot;innerSimple&quot; element at 0.5s expected: 150 but saw: 250
PASS - &quot;width&quot; property for &quot;innerSimple&quot; element at 1s saw something close to: 450

and running it in the browser I get 

PASS - &quot;width&quot; property for &quot;outer&quot; element at 0.5s saw something close to: 300
PASS - &quot;width&quot; property for &quot;innerSimple&quot; element at 0.5s saw something close to: 150
PASS - &quot;width&quot; property for &quot;innerSimple&quot; element at 1s saw something close to: 450

Am I doing something wrong in this testcase? It looks like in the NRWT case, innerSimple is at 50% (correct), but is being applied to the completed value of outer (500px), which is incorrect :(

So I can write a test involving dependent calc transitions that passes in the browser, but will fail using NRWT :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657237</commentid>
    <comment_count>10</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-06-25 20:47:25 -0700</bug_when>
    <thetext>IIRC, the transition testing framework only works on the element being transitioned.

Hmm, maybe it&apos;s not possible to write a test like I suggested using the transition testing framework.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657956</commentid>
    <comment_count>11</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-06-26 13:54:10 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; 
&gt; I&apos;ve been trying to write a dependent transitions testcase as suggested by Tony. I suspect the transition test framework doesn&apos;t support this. 

Our transition test framework sucks, sorry. It really does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658281</commentid>
    <comment_count>12</comment_count>
      <attachid>149669</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-06-26 20:00:43 -0700</bug_when>
    <thetext>Created attachment 149669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658284</commentid>
    <comment_count>13</comment_count>
      <attachid>149669</attachid>
    <who name="Mike Lawther">mikelawther</who>
    <bug_when>2012-06-26 20:04:11 -0700</bug_when>
    <thetext>Comment on attachment 149669
Patch

&gt; Nit: colc -&gt; calc

Oops - fixed.

&gt; Filing a bug for optimizations sounds fine to me. Thanks!

Filed https://bugs.webkit.org/show_bug.cgi?id=90037 to track this.

&gt; Can we add a second test file that tests a calculation that is based on a transitioning element?  E.g.,
&gt; #outer&apos;s width is transitioning and #inner&apos;s width is a calculation with a percentage size (#inner could either be a fixed calculation or a calculation that is transitioning).

Done. There both types of inner elements (fixed calculation and transitioning calculation) in the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658724</commentid>
    <comment_count>14</comment_count>
      <attachid>149669</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-27 11:23:28 -0700</bug_when>
    <thetext>Comment on attachment 149669
Patch

Clearing flags on attachment: 149669

Committed r121351: &lt;http://trac.webkit.org/changeset/121351&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658725</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-27 11:23:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142952</attachid>
            <date>2012-05-20 23:50:57 -0700</date>
            <delta_ts>2012-05-20 23:53:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-86160-20120521165054.patch</filename>
            <type>text/plain</type>
            <size>6379</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZiZWE0YWZiZDFlZjhk
MTY2ZjY2MzU1YmZlMDJiNDdhZWMzMjg1OC4uNTViYTE3ODQ4NTlhYjU4ZDM0OWFjOWMxYjFjM2I0
YWUzNDg1M2MyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA1LTIwICBNaWtl
IExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ3Jhc2ggaW4g
LXdlYmtpdC1jYWxjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04Njk1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEVuc3VyZSB0aGF0IGJvdGggZW5kcyBvZiBhIGJsZW5kIGFyZSBjaGVja2VkIGZvciBiZWlu
ZyBDYWxjdWxhdGVkLiBUaGUgY3VycmVudAorICAgICAgICBjaGVjayBkaWQgbm90IGNvdmVyIHRo
ZSBjYXNlIHdoZXJlIHRoZSAnZnJvbScgZW5kIHdhcyBDYWxjdWxhdGVkIGFuZCBub256ZXJvLAor
ICAgICAgICBhbmQgdGhlICd0bycgZW5kIHdhcyB6ZXJvIGFuZCBub3QgQ2FsY3VsYXRlZC4gCisK
KyAgICAgICAgQmxlbmRpbmcgZG9lc24ndCB3b3JrIHdpdGggY2FsY3VsYXRlZCBleHByZXNzaW9u
cyBhbmQgaXMgYmVpbmcgdHJhY2tlZCBpbgorICAgICAgICBodHRwOi8vd2Via2l0Lm9yZy9iLzg2
MTYwCisKKyAgICAgICAgVGVzdHM6IGNzczMvY2FsYy90cmFuc2l0aW9uLWNyYXNoMy5odG1sCisg
ICAgICAgICAgICAgICBjc3MzL2NhbGMvdHJhbnNpdGlvbi1jcmFzaDQuaHRtbAorCisgICAgICAg
ICogcGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmJsZW5kKToK
KwogMjAxMi0wNS0yMCAgR2VvcmdlIFN0YWlrb3MgIDxzdGFpa29zQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVXNlIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPD4gdG8gZml4IGFuIGFsaWdubWVudCB3YXJu
aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAppbmRleCBlNmNjMDJkNTc0NjZhMWJhYjEyNzY5
YjQzODMyNGIzY2YyN2NkMDA2Li5kMTk0NzFlNjg3NmRiODAxYTM0ZWZlZjUzOGIxZmQ0NTM4NDA2
MWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaApAQCAtMjI4LDcgKzIyOCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybiAqdGhpczsKIAogICAgICAgICAvLyBGSVhNRSBodHRwOi8v
d2Via2l0Lm9yZy9iLzg2MTYwIC0gQmxlbmRpbmcgZG9lc24ndCB3b3JrIHdpdGggY2FsY3VsYXRl
ZCBleHByZXNzaW9ucwotICAgICAgICBpZiAodHlwZSgpID09IENhbGN1bGF0ZWQpCisgICAgICAg
IGlmIChmcm9tLnR5cGUoKSA9PSBDYWxjdWxhdGVkIHx8IHR5cGUoKSA9PSBDYWxjdWxhdGVkKQog
ICAgICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgICAKICAgICAgICAgTGVuZ3RoVHlwZSBy
ZXN1bHRUeXBlID0gdHlwZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNmMzI4ZjFjOGZlZTE5ZjY3MWViNGQ0NjQ0YTEx
NGE2OTAxMmEzNTEuLmI4NmQxNjhmMmU4YTg5ZWJkZWJiODgxODlhYTIwMjQ1ODQ1MGUwOTYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNS0yMCAgTWlrZSBMYXd0aGVyICA8bWlrZWxhd3Ro
ZXJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENyYXNoIGluIC13ZWJraXQtY2FsYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY5NTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMvY2FsYy90cmFu
c2l0aW9uLWNyYXNoMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzczMvY2FsYy90
cmFuc2l0aW9uLWNyYXNoMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2NhbGMvdHJhbnNp
dGlvbi1jcmFzaDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2NhbGMvdHJh
bnNpdGlvbi1jcmFzaDQuaHRtbDogQWRkZWQuCisKIDIwMTItMDUtMjAgIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIEdUSyBnYXJk
ZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvdHJhbnNpdGlvbi1jcmFz
aDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3RyYW5zaXRpb24tY3Jhc2gz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjBkNDljMGU3NGEwZjhjZDNjYjUzNTkxYzJmZWE3
NTM5Zjc4NDM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3RyYW5z
aXRpb24tY3Jhc2gzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitUaGlzIHRlc3RzIHRyYW5z
aXRpb25pbmcgb2YgZWxlbWVudHMgY29udGFpbmluZyBhIGNhbGMgZXhwcmVzc2lvbi4gVGhlIHRl
c3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IGNyYXNoLiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2NzczMvY2FsYy90cmFuc2l0aW9uLWNyYXNoMy5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxj
L3RyYW5zaXRpb24tY3Jhc2gzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRiYTk5YjQ2Y2QyOTBlNjVjNDIw
MDcyNmZmOTZhMzllYWFiNzg1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMv
Y2FsYy90cmFuc2l0aW9uLWNyYXNoMy5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPHN0eWxlPgorICAgIC50ZXN0IHsgCisgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjog
d2lkdGggMzBzOyAKKyAgICB9CisgICAgLnRlc3Q6bnRoLWNoaWxkKDJuKSB7IAorICAgICAgICB3
aWR0aDogLXdlYmtpdC1jYWxjKC04ZW0gKyA1OSUpOworICAgIH0KKzwvc3R5bGU+CisKK1RoaXMg
dGVzdHMgdHJhbnNpdGlvbmluZyBvZiBlbGVtZW50cyBjb250YWluaW5nIGEgY2FsYyBleHByZXNz
aW9uLiBUaGUgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2guCisKKzxzY3JpcHQ+Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7ICAgICAgICAKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOyAKKyAgICB9CisKKyAgICBlbGVtZW50QSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKKyAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQoZWxlbWVudEEpOworICAgIGVsZW1lbnRRID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
cScpOworICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChlbGVtZW50USk7
CisgICAgZWxlbWVudFN0cm9uZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0cm9uZycpOwor
ICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChlbGVtZW50U3Ryb25nKTsK
KyAgICBlbGVtZW50RmllbGRTZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdmaWVsZHNldCcp
OworICAgIGVsZW1lbnRGaWVsZFNldC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3Rlc3QnKTsKKyAg
ICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZWxlbWVudEZpZWxkU2V0KTsK
KyAgICBlbGVtZW50U2VjdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlY3Rpb24nKTsK
KyAgICAKKyAgICBmdW5jdGlvbiBib29tKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAg
ZWxlbWVudFNlY3Rpb24uYXBwZW5kQ2hpbGQoZWxlbWVudFEpOyAKKyAgICAgICAgfSBjYXRjaCAo
ZSkgeyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIAorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOyAKKyAgICB9CisgICAgCisgICAgc2V0VGltZW91dChib29tLCAxKTsKKzwvc2NyaXB0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMv
Y2FsYy90cmFuc2l0aW9uLWNyYXNoNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2Nh
bGMvdHJhbnNpdGlvbi1jcmFzaDQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2MGQ0OWMwZTc0
YTBmOGNkM2NiNTM1OTFjMmZlYTc1MzlmNzg0MzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9jc3MzL2NhbGMvdHJhbnNpdGlvbi1jcmFzaDQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEg
QEAKK1RoaXMgdGVzdHMgdHJhbnNpdGlvbmluZyBvZiBlbGVtZW50cyBjb250YWluaW5nIGEgY2Fs
YyBleHByZXNzaW9uLiBUaGUgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3QgY3Jhc2guIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3RyYW5zaXRpb24tY3Jhc2g0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9jc3MzL2NhbGMvdHJhbnNpdGlvbi1jcmFzaDQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
YWZjZTJjODRhYmM2YmEwM2ZhY2QxMzg0N2Q2NDZkY2RjMmE2NThjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3RyYW5zaXRpb24tY3Jhc2g0Lmh0bWwKQEAgLTAsMCAr
MSwzNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8c3R5bGU+CisgICAgLnRlc3QgeyAKKyAgICAgICAg
LXdlYmtpdC10cmFuc2l0aW9uOiBoZWlnaHQgMXM7IAorICAgIH0KKyAgICAudGVzdDpudGgtY2hp
bGQoMm4pIHsgCisgICAgICAgIGhlaWdodDogLXdlYmtpdC1jYWxjKDQ1ZW0gLSA4MSUpOworICAg
IH0KKzwvc3R5bGU+CisKK1RoaXMgdGVzdHMgdHJhbnNpdGlvbmluZyBvZiBlbGVtZW50cyBjb250
YWluaW5nIGEgY2FsYyBleHByZXNzaW9uLiBUaGUgdGVzdCBwYXNzZXMgaWYgaXQgZG9lcyBub3Qg
Y3Jhc2guCisKKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7ICAgICAgICAKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOyAKKyAgICB9CisKKyAg
ICBlbGVtZW50QnIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpOworICAgIGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZChlbGVtZW50QnIpOworICAgIGVsZW1lbnRBYmJy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYWJicicpOworICAgIGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudC5hcHBlbmRDaGlsZChlbGVtZW50QWJicik7CisgICAgZWxlbWVudENvbEdyb3VwID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY29sZ3JvdXAnKTsKKyAgICBkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQuYXBwZW5kQ2hpbGQoZWxlbWVudENvbEdyb3VwKTsKKyAgICBlbGVtZW50T3B0R3Jv
dXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRncm91cCcpOworICAgIGVsZW1lbnRJZnJh
bWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICBlbGVtZW50SWZyYW1l
LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAndGVzdCcpOworICAgIGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudC5hcHBlbmRDaGlsZChlbGVtZW50SWZyYW1lKTsKKyAgICAKKyAgICBmdW5jdGlvbiBib29t
KCkgeworICAgICAgICBlbGVtZW50T3B0R3JvdXAuYXBwZW5kQ2hpbGQoZWxlbWVudEJyKTsKKyAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgCisgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorICAgIAorICAgIHNldFRpbWVv
dXQoYm9vbSwgMSk7Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="commit-queue"
          id="149408"
          type_id="3"
          status="-"
          setter="mikelawther"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149251</attachid>
            <date>2012-06-24 23:52:37 -0700</date>
            <delta_ts>2012-06-25 00:22:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86160-20120625165235.patch</filename>
            <type>text/plain</type>
            <size>14606</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA2Y2QyMDE0NTQwNDZk
ZmY3YzdkYWZlMWIzZGJkMzliN2RkNjgyZC4uZTNkMjcyMThiMWFiZTIyMTU5ODVkYTFjZjBmYjhk
MmVmYzkxYzM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA2LTI0ICBNaWtl
IExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NTMyBjYWxj
OiBibGVuZGluZyBpbnZvbHZpbmcgZXhwcmVzc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgZWl0aGVyIGVuZHBvaW50IG9mIGEgYmxlbmQgaW52
b2x2ZXMgYSBjb2xjIGV4cHJlc3Npb24sIHdlIGNyZWF0ZSBhIG5ldworICAgICAgICBleHByZXNz
aW9uIHRvIHBlcmZvcm0gdGhlIGJsZW5kIGNhbGN1bGF0aW9uLgorCisgICAgICAgIFRlc3Q6IGNz
czMvY2FsYy90cmFuc2l0aW9ucy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlv
blZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU6OmJsZW5kKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUu
aDoKKyAgICAgICAgKENhbGN1bGF0aW9uVmFsdWUpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0
aC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6Ymxl
bmRDYWxjdWxhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgIChX
ZWJDb3JlOjpMZW5ndGg6OmJsZW5kKToKKyAgICAgICAgKExlbmd0aCk6CisKIDIwMTItMDYtMjQg
IEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBjb21waWxlIGVycm9yIGZpeCBvZiBDaHJvbWl1bSBXaW4gUmVsZWFzZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggNTc0MTNmYmZlYjFhODg5
NzlhMjQzN2Y1YjYwM2NkN2E0YjU5ZGE0YS4uN2NkYzFjMDc3NDY4ZTk1ZmI5Njc3YjU3Yzk0ZGU3
NjQ3NjI3YjRhMSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRp
b25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1
ZS5jcHAKQEAgLTYwLDYgKzYwLDIwIEBAIFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gQ2Fs
Y3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25OCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDYWxjdWxhdGlvblZhbHVlKHZhbHVlLCByYW5nZSkpOwogfQogCitQ
YXNzUmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+IENhbGN1bGF0aW9uVmFsdWU6OmJsZW5kKFBhc3NS
ZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gc3RhcnQsIFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25WYWx1
ZT4gZW5kLCBkb3VibGUgcHJvZ3Jlc3MpCit7CisgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9k
ZT4gc3RhcnRTY2FsZSA9IGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbk51bWJlcihwcm9ncmVz
cykpOyAgICAKKyAgICBPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBzdGFydE5vZGUgPSBhZG9w
dFB0cihuZXcgQ2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb24oc3RhcnRTY2FsZS5yZWxlYXNl
KCksIHN0YXJ0LT5tX3ZhbHVlLnJlbGVhc2UoKSwgQ2FsY011bHRpcGx5KSk7CisgICAgCisgICAg
T3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gZW5kU2NhbGUgPSBhZG9wdFB0cihuZXcgQ2FsY0V4
cHJlc3Npb25OdW1iZXIoMS4wIC0gcHJvZ3Jlc3MpKTsKKyAgICBPd25QdHI8Q2FsY0V4cHJlc3Np
b25Ob2RlPiBlbmROb2RlID0gYWRvcHRQdHIobmV3IENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0
aW9uKGVuZFNjYWxlLnJlbGVhc2UoKSwgZW5kLT5tX3ZhbHVlLnJlbGVhc2UoKSwgQ2FsY011bHRp
cGx5KSk7CisKKyAgICBPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBibGVuZCA9IGFkb3B0UHRy
KG5ldyBDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbihzdGFydE5vZGUucmVsZWFzZSgpLCBl
bmROb2RlLnJlbGVhc2UoKSwgQ2FsY0FkZCkpOworICAgIAorICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ2FsY3VsYXRpb25WYWx1ZShibGVuZC5yZWxlYXNlKCksIENhbGN1bGF0aW9uUmFuZ2VOb25O
ZWdhdGl2ZSkpOworCit9CisKIGZsb2F0IENhbGN1bGF0aW9uVmFsdWU6OmV2YWx1YXRlKGZsb2F0
IG1heFZhbHVlKSBjb25zdAogewogICAgIGZsb2F0IHJlc3VsdCA9IG1fdmFsdWUtPmV2YWx1YXRl
KG1heFZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0
aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaApp
bmRleCAxYTc2NjM3MGRmMzgwOWVkNTk2ZjI0ZmRmMjA2OGE5NzlmYjQ3ZjRlLi42MDUwMzk4NDdm
MzI5MDNkOWQ2YzI3MDExNjlkNDk0YzU0M2Q0YjQ5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ2FsY3VsYXRpb25WYWx1ZS5oCkBAIC04Miw2ICs4Miw4IEBAIHByb3RlY3RlZDoKIGNsYXNz
IENhbGN1bGF0aW9uVmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWxjdWxhdGlvblZhbHVlPiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gY3JlYXRl
KFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB2YWx1ZSwgQ2FsY3VsYXRpb25QZXJtaXR0
ZWRWYWx1ZVJhbmdlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBi
bGVuZChQYXNzUmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+IHN0YXJ0LCBQYXNzUmVmUHRyPENhbGN1
bGF0aW9uVmFsdWU+IGVuZCwgZG91YmxlIHByb2dyZXNzKTsKKyAgICAKICAgICBmbG9hdCBldmFs
dWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q2FsY3VsYXRpb25WYWx1ZSYgbykgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcApp
bmRleCAwODZmMjIxOGQxZWFlYjgzYzY2OTc5YWY5MDVmMDBlOTU5OTVmNzE2Li5jYmE3ZDcwN2U3
MDI1MzcxMGY0M2MyY2E3ZTA5ODUwYzQ5NGQyZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aC5jcHAKQEAgLTIwMSw3ICsyMDEsMjggQEAgTGVuZ3RoOjpMZW5ndGgoUGFzc1JlZlB0cjxDYWxj
dWxhdGlvblZhbHVlPiBjYWxjKQogewogICAgIG1faW50VmFsdWUgPSBjYWxjSGFuZGxlcygpLmlu
c2VydChjYWxjKTsKIH0KKyAgICAgICAgCitMZW5ndGggTGVuZ3RoOjpibGVuZENhbGN1bGF0aW9u
KGNvbnN0IExlbmd0aCYgZnJvbSwgZG91YmxlIHByb2dyZXNzKSBjb25zdAoreworICAgIGlmIChw
cm9ncmVzcyA8PSAwLjApCisgICAgICAgIHJldHVybiBmcm9tOworICAgICAgICAKKyAgICBpZiAo
cHJvZ3Jlc3MgPj0gMS4wKQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIAorICAgIE93
blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHN0YXJ0U2NhbGUgPSBhZG9wdFB0cihuZXcgQ2FsY0V4
cHJlc3Npb25OdW1iZXIoMS4wIC0gcHJvZ3Jlc3MpKTsKKyAgICBPd25QdHI8Q2FsY0V4cHJlc3Np
b25Ob2RlPiBzdGFydExlbmd0aCA9IGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbkxlbmd0aChm
cm9tKSk7CisgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gc3RhcnROb2RlID0gYWRvcHRQ
dHIobmV3IENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uKHN0YXJ0U2NhbGUucmVsZWFzZSgp
LCBzdGFydExlbmd0aC5yZWxlYXNlKCksIENhbGNNdWx0aXBseSkpOwogICAgIAorICAgIE93blB0
cjxDYWxjRXhwcmVzc2lvbk5vZGU+IGVuZFNjYWxlID0gYWRvcHRQdHIobmV3IENhbGNFeHByZXNz
aW9uTnVtYmVyKHByb2dyZXNzKSk7CisgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gZW5k
TGVuZ3RoID0gYWRvcHRQdHIobmV3IENhbGNFeHByZXNzaW9uTGVuZ3RoKCp0aGlzKSk7CisgICAg
T3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gZW5kTm9kZSA9IGFkb3B0UHRyKG5ldyBDYWxjRXhw
cmVzc2lvbkJpbmFyeU9wZXJhdGlvbihlbmRTY2FsZS5yZWxlYXNlKCksIGVuZExlbmd0aC5yZWxl
YXNlKCksIENhbGNNdWx0aXBseSkpOworICAgIAorICAgIE93blB0cjxDYWxjRXhwcmVzc2lvbk5v
ZGU+IGJsZW5kID0gYWRvcHRQdHIobmV3IENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uKHN0
YXJ0Tm9kZS5yZWxlYXNlKCksIGVuZE5vZGUucmVsZWFzZSgpLCBDYWxjQWRkKSk7CisgICAgICAg
IAorICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKGJsZW5kLnJlbGVh
c2UoKSwgQ2FsY3VsYXRpb25SYW5nZUFsbCkpOworfQorICAgICAgICAgIAogUGFzc1JlZlB0cjxD
YWxjdWxhdGlvblZhbHVlPiBMZW5ndGg6OmNhbGN1bGF0aW9uVmFsdWUoKSBjb25zdAogewogICAg
IEFTU0VSVChpc0NhbGN1bGF0ZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCmluZGV4IDE4
MTUxMzBhOWMzNmY5OTE0Zjk2Njk4YmRiMWRiY2VlZTBlYWUzYjUuLjcxNzFlMzQ5NDhhNWI2Mzdh
ZTkzYjBiM2RlYjBhZTE3MjdmNjRiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xlbmd0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCkBAIC0y
MzAsMTUgKzIzMCwxNCBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoIGJsZW5kKGNvbnN0IExlbmd0aCYg
ZnJvbSwgZG91YmxlIHByb2dyZXNzKSBjb25zdAogICAgIHsKICAgICAgICAgLy8gQmxlbmQgdHdv
IGxlbmd0aHMgdG8gcHJvZHVjZSBhIG5ldyBsZW5ndGggdGhhdCBpcyBpbiBiZXR3ZWVuIHRoZW0u
ICBVc2VkIGZvciBhbmltYXRpb24uCisgICAgICAgIGlmIChmcm9tLnR5cGUoKSA9PSBDYWxjdWxh
dGVkIHx8IHR5cGUoKSA9PSBDYWxjdWxhdGVkKQorICAgICAgICAgICAgcmV0dXJuIGJsZW5kQ2Fs
Y3VsYXRpb24oZnJvbSwgcHJvZ3Jlc3MpOworICAgICAgICAKICAgICAgICAgaWYgKCFmcm9tLmlz
WmVybygpICYmICFpc1plcm8oKSAmJiBmcm9tLnR5cGUoKSAhPSB0eXBlKCkpCiAgICAgICAgICAg
ICByZXR1cm4gKnRoaXM7CiAKICAgICAgICAgaWYgKGZyb20uaXNaZXJvKCkgJiYgaXNaZXJvKCkp
CiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0KLSAgICAgICAgLy8gRklYTUUgaHR0cDovL3dl
YmtpdC5vcmcvYi84NjE2MCAtIEJsZW5kaW5nIGRvZXNuJ3Qgd29yayB3aXRoIGNhbGN1bGF0ZWQg
ZXhwcmVzc2lvbnMKLSAgICAgICAgaWYgKGZyb20udHlwZSgpID09IENhbGN1bGF0ZWQgfHwgdHlw
ZSgpID09IENhbGN1bGF0ZWQpCi0gICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIAog
ICAgICAgICBMZW5ndGhUeXBlIHJlc3VsdFR5cGUgPSB0eXBlKCk7CiAgICAgICAgIGlmIChpc1pl
cm8oKSkKQEAgLTI5Myw2ICsyOTIsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgaW5jcmVtZW50
Q2FsY3VsYXRlZFJlZigpOwogICAgIH0KIAorICAgIExlbmd0aCBibGVuZENhbGN1bGF0aW9uKGNv
bnN0IExlbmd0aCYgZnJvbSwgZG91YmxlIHByb2dyZXNzKSBjb25zdDsKKwogICAgIGludCBjYWxj
dWxhdGlvbkhhbmRsZSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaXNDYWxjdWxhdGVk
KCkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGFjZjVkZWIyNTU4MjQyZWQyOWJjMWYxY2IxNWUyY2Q5NzdlM2ZmZWQuLjQx
MjcxMzY1MWEzYTRkNzY5ZjcwM2Y1ZjQyYTA5NTQ0N2JmMmVkNDQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxMi0wNi0yNCAgTWlrZSBMYXd0aGVyICA8bWlrZWxhd3RoZXJAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIENTUzMgY2FsYzogYmxlbmRpbmcgaW52b2x2aW5nIGV4cHJlc3Npb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjE2MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgZXhp
c3RpbmcgdGVzdCBhcyBpdCB3YXMgZm9sZGVkIGludG8gdGhlIG5ldyBvbmUuCisKKyAgICAgICAg
KiBjc3MzL2NhbGMvdHJhbnNpdGlvbi1zdGFydC1lbmQtd2l0aC1jYWxjLWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiBjc3MzL2NhbGMvdHJhbnNpdGlvbi1zdGFydC1lbmQtd2l0aC1j
YWxjLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogY3NzMy9jYWxjL3RyYW5zaXRpb25zLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzMy9jYWxjL3RyYW5zaXRpb25zLmh0bWw6IEFk
ZGVkLgorCiAyMDEyLTA2LTI0ICBKb29uZSBIdXIgIDxqb29uZS5odXJAaW50ZWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgR1RLL0VGTCBnYXJkZW5pbmcgYWZ0ZXIgcjEyMTEyMS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NzczMvY2FsYy90cmFuc2l0aW9uLXN0YXJ0LWVuZC13aXRoLWNh
bGMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3RyYW5zaXRpb24tc3RhcnQt
ZW5kLXdpdGgtY2FsYy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDRhOTBjN2MwNzQ3NDUyNjQzOTdmMGYwNjBiN2M2ZTFiMTE5YTY5NWEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3Ry
YW5zaXRpb24tc3RhcnQtZW5kLXdpdGgtY2FsYy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSw0ICswLDAgQEAKLVRoaXMgdGVzdHMgdGhhdCB0cmFuc2l0aW9ucyBiZWdpbm5pbmcgYW5k
IGVuZGluZyB3aXRoIGNhbGMoKSBleHByZXNzaW9ucyBtb3ZlIHRvIHRoZSBmaW5hbCBzdGF0ZS4K
LVBBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAicmVjdCIgZWxlbWVudCBhdCAwLjBzIHdhczog
NTEKLVBBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAicmVjdCIgZWxlbWVudCBhdCAxcyBzYXcg
c29tZXRoaW5nIGNsb3NlIHRvOiA0MDAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9j
YWxjL3RyYW5zaXRpb24tc3RhcnQtZW5kLXdpdGgtY2FsYy5odG1sIGIvTGF5b3V0VGVzdHMvY3Nz
My9jYWxjL3RyYW5zaXRpb24tc3RhcnQtZW5kLXdpdGgtY2FsYy5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0NmYzNzkyNThkZjg0NzI2NTVmMTFjMGEzMDU3NTRiNTM4Y2QyNzVi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2NzczMvY2FsYy90cmFuc2l0aW9uLXN0YXJ0LWVuZC13aXRoLWNhbGMuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPHN0eWxlPgotI3JlY3Qg
ewotICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOwotICAgIGhlaWdodDogMTAwcHg7Ci0gICAg
LXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMXM7Ci0gICAgLW1vei10cmFuc2l0aW9uOiBhbGwgMXM7
Ci0gICAgd2lkdGg6IC13ZWJraXQtY2FsYygxMCUgKyAxcHgpOwotICAgIHdpZHRoOiAtbW96LWNh
bGMoMTAlICsgMXB4KTsKLX0KLSNyZWN0LmdvIHsKLSAgICB3aWR0aDogLXdlYmtpdC1jYWxjKDEw
MCUgLSAxMDBweCk7Ci0gICAgd2lkdGg6IC1tb3otY2FsYygxMDAlIC0gMTAwcHgpOwotfQotPC9z
dHlsZT4KLQotVGhpcyB0ZXN0cyB0aGF0IHRyYW5zaXRpb25zIGJlZ2lubmluZyBhbmQgZW5kaW5n
IHdpdGggY2FsYygpIGV4cHJlc3Npb25zIG1vdmUgdG8gdGhlIGZpbmFsIHN0YXRlLgotPGRpdiBz
dHlsZT0id2lkdGg6NTAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+Ci0gICAgPGRpdiBp
ZD0icmVjdCI+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Ci0KLTxzY3Jp
cHQgc3JjPSIuLi8uLi90cmFuc2l0aW9ucy9yZXNvdXJjZXMvdHJhbnNpdGlvbi10ZXN0LWhlbHBl
cnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IGV4cGVjdGVkVmFsdWVzID0gWwotICAv
LyBbdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2Vd
Ci0gIFsxLjAsICdyZWN0JywgJ3dpZHRoJywgNDAwLCAwXSwKLV07Ci0KLWZ1bmN0aW9uIHNldHVw
VGVzdCgpCi17Ci0gICAgdmFyIGV4cGVjdGVkU3RhcnRXaWR0aCA9IDUxOyAvLyAoMTAlICsgMXB4
KSB3aGVyZSAxMDAlID0gNTAwcHgKLSAgICB2YXIgcmVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZWN0Iik7Ci0gICAgdmFyIHdpZHRoID0gcmVjdC5vZmZzZXRXaWR0aDsKLSAgICBpZiAo
d2lkdGggPT0gZXhwZWN0ZWRTdGFydFdpZHRoKQotICAgICAgICByZWN0LmlubmVySFRNTCArPSAn
UEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9yICJyZWN0IiBlbGVtZW50IGF0IDAuMHMgd2FzOiAn
ICsgd2lkdGg7Ci0gICAgZWxzZQotICAgICAgICByZWN0LmlubmVySFRNTCArPSAnRkFJTCAgLSAi
d2lkdGgiIHByb3BlcnR5IGZvciAicmVjdCIgZWxlbWVudCBhdCAwLjBzIGV4cGVjdGVkOiAnICsg
ZXhwZWN0ZWRTdGFydFdpZHRoICsgJ2J1dCBzYXc6ICcgKyB3aWR0aDsKLSAgICAKLSAgICByZWN0
LmNsYXNzTmFtZSA9ICJnbyI7Ci19Ci0KLXJ1blRyYW5zaXRpb25UZXN0KGV4cGVjdGVkVmFsdWVz
LCBzZXR1cFRlc3QsIHRydWUsIGZhbHNlIC8qIHBpeGVsIHRlc3QgKi8pOwotCi08L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvY2FsYy90cmFuc2l0aW9ucy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvdHJhbnNpdGlvbnMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcxMGUwY2JkN2UxZjgwNGNkOGM2MTU4ZjM0MzVmY2ZiY2Q1YmRhMzEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvdHJhbnNpdGlvbnMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMjcgQEAKK1RoaXMgdGVzdHMgdGhhdCB0cmFuc2l0aW9ucyBjb250YWluaW5n
IGNhbGMoKSBleHByZXNzaW9ucyB0cmFuc2l0aW9uIGNvcnJlY3RseS4KK1BBU1MgLSAid2lkdGgi
IHByb3BlcnR5IGZvciAic3RhcnRDYWxjRW5kQ2FsYyIgZWxlbWVudCBhdCAwLjBzIHdhczogMTAw
CitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0UHhFbmRDYWxjIiBlbGVtZW50IGF0
IDAuMHMgd2FzOiAxMDAKK1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAic3RhcnRQZXJjZW50
RW5kQ2FsYyIgZWxlbWVudCBhdCAwLjBzIHdhczogMTAwCitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0
eSBmb3IgInN0YXJ0Q2FsY0VuZFB4IiBlbGVtZW50IGF0IDAuMHMgd2FzOiAxMDAKK1BBU1MgLSAi
d2lkdGgiIHByb3BlcnR5IGZvciAic3RhcnRDYWxjRW5kUGVyY2VudCIgZWxlbWVudCBhdCAwLjBz
IHdhczogMTAwCitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0Q2FsY0VuZENhbGMi
IGVsZW1lbnQgYXQgMC4yNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTc1CitQQVNTIC0gIndp
ZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0Q2FsY0VuZENhbGMiIGVsZW1lbnQgYXQgMC41cyBzYXcg
c29tZXRoaW5nIGNsb3NlIHRvOiAyNTAKK1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAic3Rh
cnRDYWxjRW5kQ2FsYyIgZWxlbWVudCBhdCAwLjc1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAz
MjUKK1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAic3RhcnRDYWxjRW5kQ2FsYyIgZWxlbWVu
dCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiA0MDAKK1BBU1MgLSAid2lkdGgiIHByb3Bl
cnR5IGZvciAic3RhcnRQeEVuZENhbGMiIGVsZW1lbnQgYXQgMC4yNXMgc2F3IHNvbWV0aGluZyBj
bG9zZSB0bzogMTc1CitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0UHhFbmRDYWxj
IiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjUwCitQQVNTIC0gIndp
ZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0UHhFbmRDYWxjIiBlbGVtZW50IGF0IDAuNzVzIHNhdyBz
b21ldGhpbmcgY2xvc2UgdG86IDMyNQorUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9yICJzdGFy
dFB4RW5kQ2FsYyIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiA0MDAKK1BB
U1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAic3RhcnRQZXJjZW50RW5kQ2FsYyIgZWxlbWVudCBh
dCAwLjI1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNzUKK1BBU1MgLSAid2lkdGgiIHByb3Bl
cnR5IGZvciAic3RhcnRQZXJjZW50RW5kQ2FsYyIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhp
bmcgY2xvc2UgdG86IDI1MAorUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9yICJzdGFydFBlcmNl
bnRFbmRDYWxjIiBlbGVtZW50IGF0IDAuNzVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDMyNQor
UEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9yICJzdGFydFBlcmNlbnRFbmRDYWxjIiBlbGVtZW50
IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDQwMAorUEFTUyAtICJ3aWR0aCIgcHJvcGVy
dHkgZm9yICJzdGFydENhbGNFbmRQeCIgZWxlbWVudCBhdCAwLjI1cyBzYXcgc29tZXRoaW5nIGNs
b3NlIHRvOiAxNzUKK1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAic3RhcnRDYWxjRW5kUHgi
IGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyNTAKK1BBU1MgLSAid2lk
dGgiIHByb3BlcnR5IGZvciAic3RhcnRDYWxjRW5kUHgiIGVsZW1lbnQgYXQgMC43NXMgc2F3IHNv
bWV0aGluZyBjbG9zZSB0bzogMzI1CitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0
Q2FsY0VuZFB4IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDQwMAorUEFT
UyAtICJ3aWR0aCIgcHJvcGVydHkgZm9yICJzdGFydENhbGNFbmRQZXJjZW50IiBlbGVtZW50IGF0
IDAuMjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE3NQorUEFTUyAtICJ3aWR0aCIgcHJvcGVy
dHkgZm9yICJzdGFydENhbGNFbmRQZXJjZW50IiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGlu
ZyBjbG9zZSB0bzogMjUwCitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0Q2FsY0Vu
ZFBlcmNlbnQiIGVsZW1lbnQgYXQgMC43NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMzI1CitQ
QVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0Q2FsY0VuZFBlcmNlbnQiIGVsZW1lbnQg
YXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogNDAwCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2NzczMvY2FsYy90cmFuc2l0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3Ry
YW5zaXRpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNiZTViMmU3N2YxNTYyZDhmZGE2YzViMTYyNWY0
YTBjNjM2MWUyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvY2FsYy90cmFu
c2l0aW9ucy5odG1sCkBAIC0wLDAgKzEsODIgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxlPgor
LnRyYW5zaXRpb25UZXN0IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICBoZWln
aHQ6IDEwMHB4OworICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDFzIGxpbmVhcjsKKyAgICAt
bW96LXRyYW5zaXRpb246IGFsbCAxcyBsaW5lYXI7Cit9CisKKyNzdGFydENhbGNFbmRDYWxjLCAj
c3RhcnRDYWxjRW5kUHgsICNzdGFydENhbGNFbmRQZXJjZW50IHsKKyAgICB3aWR0aDogLXdlYmtp
dC1jYWxjKDEwJSArIDUwcHgpOworICAgIHdpZHRoOiAtbW96LWNhbGMoMTAlICsgNTBweCk7Cit9
CisKKyNzdGFydFB4RW5kQ2FsYyB7CisgICAgd2lkdGg6IDEwMHB4OworfQorCisjc3RhcnRQZXJj
ZW50RW5kQ2FsYyB7CisgICAgd2lkdGg6IDIwJTsKK30KKworI3N0YXJ0Q2FsY0VuZENhbGMuZ28s
ICNzdGFydFB4RW5kQ2FsYy5nbywgI3N0YXJ0UGVyY2VudEVuZENhbGMuZ28geworICAgIHdpZHRo
OiAtd2Via2l0LWNhbGMoMTAwJSAtIDEwMHB4KTsKKyAgICB3aWR0aDogLW1vei1jYWxjKDEwMCUg
LSAxMDBweCk7Cit9CisKKyNzdGFydENhbGNFbmRQeC5nbyB7CisgICAgd2lkdGg6IDQwMHB4Owor
fQorCisjc3RhcnRDYWxjRW5kUGVyY2VudC5nbyB7CisgICAgd2lkdGg6IDgwJTsKK30KKzwvc3R5
bGU+CisKK1RoaXMgdGVzdHMgdGhhdCB0cmFuc2l0aW9ucyBjb250YWluaW5nIGNhbGMoKSBleHBy
ZXNzaW9ucyB0cmFuc2l0aW9uIGNvcnJlY3RseS4KKzxkaXYgc3R5bGU9IndpZHRoOjUwMHB4OyBi
b3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorICAgIDxkaXYgY2xhc3M9InRyYW5zaXRpb25UZXN0
IiBpZD0ic3RhcnRDYWxjRW5kQ2FsYyI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0idHJhbnNpdGlv
blRlc3QiIGlkPSJzdGFydFB4RW5kQ2FsYyI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0idHJhbnNp
dGlvblRlc3QiIGlkPSJzdGFydFBlcmNlbnRFbmRDYWxjIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNz
PSJ0cmFuc2l0aW9uVGVzdCIgaWQ9InN0YXJ0Q2FsY0VuZFB4Ij48L2Rpdj4KKyAgICA8ZGl2IGNs
YXNzPSJ0cmFuc2l0aW9uVGVzdCIgaWQ9InN0YXJ0Q2FsY0VuZFBlcmNlbnQiPjwvZGl2PgorPC9k
aXY+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vdHJhbnNp
dGlvbnMvcmVzb3VyY2VzL3RyYW5zaXRpb24tdGVzdC1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CisKK2NvbnN0IHRlc3RzID0gWyJzdGFydENhbGNFbmRDYWxjIiwgInN0YXJ0UHhFbmRD
YWxjIiwgInN0YXJ0UGVyY2VudEVuZENhbGMiLCAic3RhcnRDYWxjRW5kUHgiLCAic3RhcnRDYWxj
RW5kUGVyY2VudCJdOworCitleHBlY3RlZFZhbHVlcyA9IFtdOworCitmb3IgKHZhciBpID0gMDsg
aSA8IHRlc3RzLmxlbmd0aDsgaSsrKSB7CisgICAgZXhwZWN0ZWRWYWx1ZXMgPSBleHBlY3RlZFZh
bHVlcy5jb25jYXQoW1swLjI1LCB0ZXN0c1tpXSwgJ3dpZHRoJywgMTc1LCAyXV0pOworICAgIGV4
cGVjdGVkVmFsdWVzID0gZXhwZWN0ZWRWYWx1ZXMuY29uY2F0KFtbMC41LCB0ZXN0c1tpXSwgJ3dp
ZHRoJywgMjUwLCAyXV0pOworICAgIGV4cGVjdGVkVmFsdWVzID0gZXhwZWN0ZWRWYWx1ZXMuY29u
Y2F0KFtbMC43NSwgdGVzdHNbaV0sICd3aWR0aCcsIDMyNSwgMl1dKTsKKyAgICBleHBlY3RlZFZh
bHVlcyA9IGV4cGVjdGVkVmFsdWVzLmNvbmNhdChbWzEuMCwgdGVzdHNbaV0sICd3aWR0aCcsIDQw
MCwgMl1dKTsKK30KKworZnVuY3Rpb24gaW5pdGlhbGl6ZShpZCkKK3sKKyAgICB2YXIgZXhwZWN0
ZWRTdGFydFdpZHRoID0gMTAwOworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoaWQpOworICAgIHZhciB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7CisgICAgaWYg
KHdpZHRoID09IGV4cGVjdGVkU3RhcnRXaWR0aCkKKyAgICAgICAgZWxlbWVudC5pbm5lckhUTUwg
Kz0gJ1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAiJyArIGlkICsnIiBlbGVtZW50IGF0IDAu
MHMgd2FzOiAnICsgd2lkdGg7CisgICAgZWxzZQorICAgICAgICBlbGVtZW50LmlubmVySFRNTCAr
PSAnRkFJTCAgLSAid2lkdGgiIHByb3BlcnR5IGZvciAiJyArIGlkICsnIiBlbGVtZW50IGF0IDAu
MHMgZXhwZWN0ZWQ6ICcgKyBleHBlY3RlZFN0YXJ0V2lkdGggKyAnIGJ1dCBzYXc6ICcgKyB3aWR0
aDsKKyAgICAKKyAgICBlbGVtZW50LmNsYXNzTmFtZSArPSAiIGdvIjsKK30KKworZnVuY3Rpb24g
c2V0dXBUZXN0KCkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSsr
KQorICAgICAgICBpbml0aWFsaXplKHRlc3RzW2ldKTsKK30KKworcnVuVHJhbnNpdGlvblRlc3Qo
ZXhwZWN0ZWRWYWx1ZXMsIHNldHVwVGVzdCwgdHJ1ZSwgZmFsc2UgLyogcGl4ZWwgdGVzdCAqLyk7
CisKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149255</attachid>
            <date>2012-06-25 00:22:37 -0700</date>
            <delta_ts>2012-06-26 20:00:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86160-20120625172236.patch</filename>
            <type>text/plain</type>
            <size>12224</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA2Y2QyMDE0NTQwNDZk
ZmY3YzdkYWZlMWIzZGJkMzliN2RkNjgyZC4uNzQ1Yzg5NWI3ZjBmZjcwOGQwMGVkYTlmM2QwODcw
OGM3YjU4ZDQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA2LTI0ICBNaWtl
IExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NTMyBjYWxj
OiBibGVuZGluZyBpbnZvbHZpbmcgZXhwcmVzc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgZWl0aGVyIGVuZHBvaW50IG9mIGEgYmxlbmQgaW52
b2x2ZXMgYSBjb2xjIGV4cHJlc3Npb24sIHdlIGNyZWF0ZSBhIG5ldworICAgICAgICBleHByZXNz
aW9uIHRvIHBlcmZvcm0gdGhlIGJsZW5kIGNhbGN1bGF0aW9uLgorCisgICAgICAgIFRlc3Q6IGNz
czMvY2FsYy90cmFuc2l0aW9ucy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGguY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmJsZW5kQ2Fs
Y3VsYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGVuZ3RoOjpibGVuZCk6CisgICAgICAgIChMZW5ndGgpOgorCiAyMDEyLTA2LTI0ICBGdW1p
dG9zaGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgY29t
cGlsZSBlcnJvciBmaXggb2YgQ2hyb21pdW0gV2luIFJlbGVhc2UuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoLmNwcAppbmRleCAwODZmMjIxOGQxZWFlYjgzYzY2OTc5YWY5MDVmMDBlOTU5OTVmNzE2
Li5jYmE3ZDcwN2U3MDI1MzcxMGY0M2MyY2E3ZTA5ODUwYzQ5NGQyZjVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aC5jcHAKQEAgLTIwMSw3ICsyMDEsMjggQEAgTGVuZ3RoOjpMZW5ndGgoUGFz
c1JlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBjYWxjKQogewogICAgIG1faW50VmFsdWUgPSBjYWxj
SGFuZGxlcygpLmluc2VydChjYWxjKTsKIH0KKyAgICAgICAgCitMZW5ndGggTGVuZ3RoOjpibGVu
ZENhbGN1bGF0aW9uKGNvbnN0IExlbmd0aCYgZnJvbSwgZG91YmxlIHByb2dyZXNzKSBjb25zdAor
eworICAgIGlmIChwcm9ncmVzcyA8PSAwLjApCisgICAgICAgIHJldHVybiBmcm9tOworICAgICAg
ICAKKyAgICBpZiAocHJvZ3Jlc3MgPj0gMS4wKQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
ICAgIAorICAgIE93blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHN0YXJ0U2NhbGUgPSBhZG9wdFB0
cihuZXcgQ2FsY0V4cHJlc3Npb25OdW1iZXIoMS4wIC0gcHJvZ3Jlc3MpKTsKKyAgICBPd25QdHI8
Q2FsY0V4cHJlc3Npb25Ob2RlPiBzdGFydExlbmd0aCA9IGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVz
c2lvbkxlbmd0aChmcm9tKSk7CisgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gc3RhcnRO
b2RlID0gYWRvcHRQdHIobmV3IENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0aW9uKHN0YXJ0U2Nh
bGUucmVsZWFzZSgpLCBzdGFydExlbmd0aC5yZWxlYXNlKCksIENhbGNNdWx0aXBseSkpOwogICAg
IAorICAgIE93blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IGVuZFNjYWxlID0gYWRvcHRQdHIobmV3
IENhbGNFeHByZXNzaW9uTnVtYmVyKHByb2dyZXNzKSk7CisgICAgT3duUHRyPENhbGNFeHByZXNz
aW9uTm9kZT4gZW5kTGVuZ3RoID0gYWRvcHRQdHIobmV3IENhbGNFeHByZXNzaW9uTGVuZ3RoKCp0
aGlzKSk7CisgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gZW5kTm9kZSA9IGFkb3B0UHRy
KG5ldyBDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbihlbmRTY2FsZS5yZWxlYXNlKCksIGVu
ZExlbmd0aC5yZWxlYXNlKCksIENhbGNNdWx0aXBseSkpOworICAgIAorICAgIE93blB0cjxDYWxj
RXhwcmVzc2lvbk5vZGU+IGJsZW5kID0gYWRvcHRQdHIobmV3IENhbGNFeHByZXNzaW9uQmluYXJ5
T3BlcmF0aW9uKHN0YXJ0Tm9kZS5yZWxlYXNlKCksIGVuZE5vZGUucmVsZWFzZSgpLCBDYWxjQWRk
KSk7CisgICAgICAgIAorICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRl
KGJsZW5kLnJlbGVhc2UoKSwgQ2FsY3VsYXRpb25SYW5nZUFsbCkpOworfQorICAgICAgICAgIAog
UGFzc1JlZlB0cjxDYWxjdWxhdGlvblZhbHVlPiBMZW5ndGg6OmNhbGN1bGF0aW9uVmFsdWUoKSBj
b25zdAogewogICAgIEFTU0VSVChpc0NhbGN1bGF0ZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aC5oCmluZGV4IDE4MTUxMzBhOWMzNmY5OTE0Zjk2Njk4YmRiMWRiY2VlZTBlYWUzYjUuLjcxNzFl
MzQ5NDhhNWI2MzdhZTkzYjBiM2RlYjBhZTE3MjdmNjRiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
bmd0aC5oCkBAIC0yMzAsMTUgKzIzMCwxNCBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoIGJsZW5kKGNv
bnN0IExlbmd0aCYgZnJvbSwgZG91YmxlIHByb2dyZXNzKSBjb25zdAogICAgIHsKICAgICAgICAg
Ly8gQmxlbmQgdHdvIGxlbmd0aHMgdG8gcHJvZHVjZSBhIG5ldyBsZW5ndGggdGhhdCBpcyBpbiBi
ZXR3ZWVuIHRoZW0uICBVc2VkIGZvciBhbmltYXRpb24uCisgICAgICAgIGlmIChmcm9tLnR5cGUo
KSA9PSBDYWxjdWxhdGVkIHx8IHR5cGUoKSA9PSBDYWxjdWxhdGVkKQorICAgICAgICAgICAgcmV0
dXJuIGJsZW5kQ2FsY3VsYXRpb24oZnJvbSwgcHJvZ3Jlc3MpOworICAgICAgICAKICAgICAgICAg
aWYgKCFmcm9tLmlzWmVybygpICYmICFpc1plcm8oKSAmJiBmcm9tLnR5cGUoKSAhPSB0eXBlKCkp
CiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICAgICAgaWYgKGZyb20uaXNaZXJvKCkg
JiYgaXNaZXJvKCkpCiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0KLSAgICAgICAgLy8gRklY
TUUgaHR0cDovL3dlYmtpdC5vcmcvYi84NjE2MCAtIEJsZW5kaW5nIGRvZXNuJ3Qgd29yayB3aXRo
IGNhbGN1bGF0ZWQgZXhwcmVzc2lvbnMKLSAgICAgICAgaWYgKGZyb20udHlwZSgpID09IENhbGN1
bGF0ZWQgfHwgdHlwZSgpID09IENhbGN1bGF0ZWQpCi0gICAgICAgICAgICByZXR1cm4gKnRoaXM7
CiAgICAgICAgIAogICAgICAgICBMZW5ndGhUeXBlIHJlc3VsdFR5cGUgPSB0eXBlKCk7CiAgICAg
ICAgIGlmIChpc1plcm8oKSkKQEAgLTI5Myw2ICsyOTIsOCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgaW5jcmVtZW50Q2FsY3VsYXRlZFJlZigpOwogICAgIH0KIAorICAgIExlbmd0aCBibGVuZENh
bGN1bGF0aW9uKGNvbnN0IExlbmd0aCYgZnJvbSwgZG91YmxlIHByb2dyZXNzKSBjb25zdDsKKwog
ICAgIGludCBjYWxjdWxhdGlvbkhhbmRsZSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQo
aXNDYWxjdWxhdGVkKCkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFjZjVkZWIyNTU4MjQyZWQyOWJjMWYxY2IxNWUyY2Q5
NzdlM2ZmZWQuLjQxMjcxMzY1MWEzYTRkNzY5ZjcwM2Y1ZjQyYTA5NTQ0N2JmMmVkNDQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNi0yNCAgTWlrZSBMYXd0aGVyICA8bWlrZWxhd3RoZXJA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIENTUzMgY2FsYzogYmxlbmRpbmcgaW52b2x2aW5nIGV4
cHJlc3Npb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NjE2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZWQgZXhpc3RpbmcgdGVzdCBhcyBpdCB3YXMgZm9sZGVkIGludG8gdGhlIG5ldyBvbmUu
CisKKyAgICAgICAgKiBjc3MzL2NhbGMvdHJhbnNpdGlvbi1zdGFydC1lbmQtd2l0aC1jYWxjLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBjc3MzL2NhbGMvdHJhbnNpdGlvbi1zdGFy
dC1lbmQtd2l0aC1jYWxjLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogY3NzMy9jYWxjL3RyYW5z
aXRpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzMy9jYWxjL3RyYW5zaXRp
b25zLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA2LTI0ICBKb29uZSBIdXIgIDxqb29uZS5odXJAaW50
ZWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLL0VGTCBnYXJkZW5pbmcgYWZ0ZXIgcjEy
MTEyMS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvY2FsYy90cmFuc2l0aW9uLXN0YXJ0
LWVuZC13aXRoLWNhbGMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3RyYW5z
aXRpb24tc3RhcnQtZW5kLXdpdGgtY2FsYy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDRhOTBjN2MwNzQ3NDUyNjQzOTdmMGYwNjBiN2M2ZTFiMTE5YTY5NWEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
Y3NzMy9jYWxjL3RyYW5zaXRpb24tc3RhcnQtZW5kLXdpdGgtY2FsYy1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLVRoaXMgdGVzdHMgdGhhdCB0cmFuc2l0aW9ucyBi
ZWdpbm5pbmcgYW5kIGVuZGluZyB3aXRoIGNhbGMoKSBleHByZXNzaW9ucyBtb3ZlIHRvIHRoZSBm
aW5hbCBzdGF0ZS4KLVBBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAicmVjdCIgZWxlbWVudCBh
dCAwLjBzIHdhczogNTEKLVBBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAicmVjdCIgZWxlbWVu
dCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiA0MDAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY3NzMy9jYWxjL3RyYW5zaXRpb24tc3RhcnQtZW5kLXdpdGgtY2FsYy5odG1sIGIvTGF5
b3V0VGVzdHMvY3NzMy9jYWxjL3RyYW5zaXRpb24tc3RhcnQtZW5kLXdpdGgtY2FsYy5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmYzNzkyNThkZjg0NzI2NTVmMTFjMGEzMDU3
NTRiNTM4Y2QyNzViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2NzczMvY2FsYy90cmFuc2l0aW9uLXN0YXJ0LWVuZC13aXRoLWNhbGMu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPHN0
eWxlPgotI3JlY3QgewotICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOwotICAgIGhlaWdodDog
MTAwcHg7Ci0gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMXM7Ci0gICAgLW1vei10cmFuc2l0
aW9uOiBhbGwgMXM7Ci0gICAgd2lkdGg6IC13ZWJraXQtY2FsYygxMCUgKyAxcHgpOwotICAgIHdp
ZHRoOiAtbW96LWNhbGMoMTAlICsgMXB4KTsKLX0KLSNyZWN0LmdvIHsKLSAgICB3aWR0aDogLXdl
YmtpdC1jYWxjKDEwMCUgLSAxMDBweCk7Ci0gICAgd2lkdGg6IC1tb3otY2FsYygxMDAlIC0gMTAw
cHgpOwotfQotPC9zdHlsZT4KLQotVGhpcyB0ZXN0cyB0aGF0IHRyYW5zaXRpb25zIGJlZ2lubmlu
ZyBhbmQgZW5kaW5nIHdpdGggY2FsYygpIGV4cHJlc3Npb25zIG1vdmUgdG8gdGhlIGZpbmFsIHN0
YXRlLgotPGRpdiBzdHlsZT0id2lkdGg6NTAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyI+
Ci0gICAgPGRpdiBpZD0icmVjdCI+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+PC9k
aXY+Ci0KLTxzY3JpcHQgc3JjPSIuLi8uLi90cmFuc2l0aW9ucy9yZXNvdXJjZXMvdHJhbnNpdGlv
bi10ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWNvbnN0IGV4cGVjdGVkVmFs
dWVzID0gWwotICAvLyBbdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVjdGVkLXZhbHVl
LCB0b2xlcmFuY2VdCi0gIFsxLjAsICdyZWN0JywgJ3dpZHRoJywgNDAwLCAwXSwKLV07Ci0KLWZ1
bmN0aW9uIHNldHVwVGVzdCgpCi17Ci0gICAgdmFyIGV4cGVjdGVkU3RhcnRXaWR0aCA9IDUxOyAv
LyAoMTAlICsgMXB4KSB3aGVyZSAxMDAlID0gNTAwcHgKLSAgICB2YXIgcmVjdCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZWN0Iik7Ci0gICAgdmFyIHdpZHRoID0gcmVjdC5vZmZzZXRXaWR0
aDsKLSAgICBpZiAod2lkdGggPT0gZXhwZWN0ZWRTdGFydFdpZHRoKQotICAgICAgICByZWN0Lmlu
bmVySFRNTCArPSAnUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9yICJyZWN0IiBlbGVtZW50IGF0
IDAuMHMgd2FzOiAnICsgd2lkdGg7Ci0gICAgZWxzZQotICAgICAgICByZWN0LmlubmVySFRNTCAr
PSAnRkFJTCAgLSAid2lkdGgiIHByb3BlcnR5IGZvciAicmVjdCIgZWxlbWVudCBhdCAwLjBzIGV4
cGVjdGVkOiAnICsgZXhwZWN0ZWRTdGFydFdpZHRoICsgJ2J1dCBzYXc6ICcgKyB3aWR0aDsKLSAg
ICAKLSAgICByZWN0LmNsYXNzTmFtZSA9ICJnbyI7Ci19Ci0KLXJ1blRyYW5zaXRpb25UZXN0KGV4
cGVjdGVkVmFsdWVzLCBzZXR1cFRlc3QsIHRydWUsIGZhbHNlIC8qIHBpeGVsIHRlc3QgKi8pOwot
Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvY2FsYy90cmFuc2l0aW9u
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvdHJhbnNpdGlvbnMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjcxMGUwY2JkN2UxZjgwNGNkOGM2MTU4ZjM0MzVmY2ZiY2Q1YmRh
MzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvdHJhbnNpdGlvbnMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjcgQEAKK1RoaXMgdGVzdHMgdGhhdCB0cmFuc2l0aW9u
cyBjb250YWluaW5nIGNhbGMoKSBleHByZXNzaW9ucyB0cmFuc2l0aW9uIGNvcnJlY3RseS4KK1BB
U1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAic3RhcnRDYWxjRW5kQ2FsYyIgZWxlbWVudCBhdCAw
LjBzIHdhczogMTAwCitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0UHhFbmRDYWxj
IiBlbGVtZW50IGF0IDAuMHMgd2FzOiAxMDAKK1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAi
c3RhcnRQZXJjZW50RW5kQ2FsYyIgZWxlbWVudCBhdCAwLjBzIHdhczogMTAwCitQQVNTIC0gIndp
ZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0Q2FsY0VuZFB4IiBlbGVtZW50IGF0IDAuMHMgd2FzOiAx
MDAKK1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAic3RhcnRDYWxjRW5kUGVyY2VudCIgZWxl
bWVudCBhdCAwLjBzIHdhczogMTAwCitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0
Q2FsY0VuZENhbGMiIGVsZW1lbnQgYXQgMC4yNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTc1
CitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0Q2FsY0VuZENhbGMiIGVsZW1lbnQg
YXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyNTAKK1BBU1MgLSAid2lkdGgiIHByb3Bl
cnR5IGZvciAic3RhcnRDYWxjRW5kQ2FsYyIgZWxlbWVudCBhdCAwLjc1cyBzYXcgc29tZXRoaW5n
IGNsb3NlIHRvOiAzMjUKK1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAic3RhcnRDYWxjRW5k
Q2FsYyIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiA0MDAKK1BBU1MgLSAi
d2lkdGgiIHByb3BlcnR5IGZvciAic3RhcnRQeEVuZENhbGMiIGVsZW1lbnQgYXQgMC4yNXMgc2F3
IHNvbWV0aGluZyBjbG9zZSB0bzogMTc1CitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInN0
YXJ0UHhFbmRDYWxjIiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjUw
CitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0UHhFbmRDYWxjIiBlbGVtZW50IGF0
IDAuNzVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDMyNQorUEFTUyAtICJ3aWR0aCIgcHJvcGVy
dHkgZm9yICJzdGFydFB4RW5kQ2FsYyIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3Nl
IHRvOiA0MDAKK1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAic3RhcnRQZXJjZW50RW5kQ2Fs
YyIgZWxlbWVudCBhdCAwLjI1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNzUKK1BBU1MgLSAi
d2lkdGgiIHByb3BlcnR5IGZvciAic3RhcnRQZXJjZW50RW5kQ2FsYyIgZWxlbWVudCBhdCAwLjVz
IHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDI1MAorUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9y
ICJzdGFydFBlcmNlbnRFbmRDYWxjIiBlbGVtZW50IGF0IDAuNzVzIHNhdyBzb21ldGhpbmcgY2xv
c2UgdG86IDMyNQorUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9yICJzdGFydFBlcmNlbnRFbmRD
YWxjIiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDQwMAorUEFTUyAtICJ3
aWR0aCIgcHJvcGVydHkgZm9yICJzdGFydENhbGNFbmRQeCIgZWxlbWVudCBhdCAwLjI1cyBzYXcg
c29tZXRoaW5nIGNsb3NlIHRvOiAxNzUKK1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAic3Rh
cnRDYWxjRW5kUHgiIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyNTAK
K1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAic3RhcnRDYWxjRW5kUHgiIGVsZW1lbnQgYXQg
MC43NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMzI1CitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0
eSBmb3IgInN0YXJ0Q2FsY0VuZFB4IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2Ug
dG86IDQwMAorUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9yICJzdGFydENhbGNFbmRQZXJjZW50
IiBlbGVtZW50IGF0IDAuMjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE3NQorUEFTUyAtICJ3
aWR0aCIgcHJvcGVydHkgZm9yICJzdGFydENhbGNFbmRQZXJjZW50IiBlbGVtZW50IGF0IDAuNXMg
c2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjUwCitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3Ig
InN0YXJ0Q2FsY0VuZFBlcmNlbnQiIGVsZW1lbnQgYXQgMC43NXMgc2F3IHNvbWV0aGluZyBjbG9z
ZSB0bzogMzI1CitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0Q2FsY0VuZFBlcmNl
bnQiIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogNDAwCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NzczMvY2FsYy90cmFuc2l0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMv
Y3NzMy9jYWxjL3RyYW5zaXRpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNiZTViMmU3N2YxNTYyZDhm
ZGE2YzViMTYyNWY0YTBjNjM2MWUyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nz
czMvY2FsYy90cmFuc2l0aW9ucy5odG1sCkBAIC0wLDAgKzEsODIgQEAKKzwhRE9DVFlQRSBodG1s
PgorPHN0eWxlPgorLnRyYW5zaXRpb25UZXN0IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVl
bjsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDFzIGxp
bmVhcjsKKyAgICAtbW96LXRyYW5zaXRpb246IGFsbCAxcyBsaW5lYXI7Cit9CisKKyNzdGFydENh
bGNFbmRDYWxjLCAjc3RhcnRDYWxjRW5kUHgsICNzdGFydENhbGNFbmRQZXJjZW50IHsKKyAgICB3
aWR0aDogLXdlYmtpdC1jYWxjKDEwJSArIDUwcHgpOworICAgIHdpZHRoOiAtbW96LWNhbGMoMTAl
ICsgNTBweCk7Cit9CisKKyNzdGFydFB4RW5kQ2FsYyB7CisgICAgd2lkdGg6IDEwMHB4OworfQor
Cisjc3RhcnRQZXJjZW50RW5kQ2FsYyB7CisgICAgd2lkdGg6IDIwJTsKK30KKworI3N0YXJ0Q2Fs
Y0VuZENhbGMuZ28sICNzdGFydFB4RW5kQ2FsYy5nbywgI3N0YXJ0UGVyY2VudEVuZENhbGMuZ28g
eworICAgIHdpZHRoOiAtd2Via2l0LWNhbGMoMTAwJSAtIDEwMHB4KTsKKyAgICB3aWR0aDogLW1v
ei1jYWxjKDEwMCUgLSAxMDBweCk7Cit9CisKKyNzdGFydENhbGNFbmRQeC5nbyB7CisgICAgd2lk
dGg6IDQwMHB4OworfQorCisjc3RhcnRDYWxjRW5kUGVyY2VudC5nbyB7CisgICAgd2lkdGg6IDgw
JTsKK30KKzwvc3R5bGU+CisKK1RoaXMgdGVzdHMgdGhhdCB0cmFuc2l0aW9ucyBjb250YWluaW5n
IGNhbGMoKSBleHByZXNzaW9ucyB0cmFuc2l0aW9uIGNvcnJlY3RseS4KKzxkaXYgc3R5bGU9Indp
ZHRoOjUwMHB4OyBib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgorICAgIDxkaXYgY2xhc3M9InRy
YW5zaXRpb25UZXN0IiBpZD0ic3RhcnRDYWxjRW5kQ2FsYyI+PC9kaXY+CisgICAgPGRpdiBjbGFz
cz0idHJhbnNpdGlvblRlc3QiIGlkPSJzdGFydFB4RW5kQ2FsYyI+PC9kaXY+CisgICAgPGRpdiBj
bGFzcz0idHJhbnNpdGlvblRlc3QiIGlkPSJzdGFydFBlcmNlbnRFbmRDYWxjIj48L2Rpdj4KKyAg
ICA8ZGl2IGNsYXNzPSJ0cmFuc2l0aW9uVGVzdCIgaWQ9InN0YXJ0Q2FsY0VuZFB4Ij48L2Rpdj4K
KyAgICA8ZGl2IGNsYXNzPSJ0cmFuc2l0aW9uVGVzdCIgaWQ9InN0YXJ0Q2FsY0VuZFBlcmNlbnQi
PjwvZGl2PgorPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorCis8c2NyaXB0IHNyYz0i
Li4vLi4vdHJhbnNpdGlvbnMvcmVzb3VyY2VzL3RyYW5zaXRpb24tdGVzdC1oZWxwZXJzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2NvbnN0IHRlc3RzID0gWyJzdGFydENhbGNFbmRDYWxjIiwg
InN0YXJ0UHhFbmRDYWxjIiwgInN0YXJ0UGVyY2VudEVuZENhbGMiLCAic3RhcnRDYWxjRW5kUHgi
LCAic3RhcnRDYWxjRW5kUGVyY2VudCJdOworCitleHBlY3RlZFZhbHVlcyA9IFtdOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSsrKSB7CisgICAgZXhwZWN0ZWRWYWx1ZXMg
PSBleHBlY3RlZFZhbHVlcy5jb25jYXQoW1swLjI1LCB0ZXN0c1tpXSwgJ3dpZHRoJywgMTc1LCAy
XV0pOworICAgIGV4cGVjdGVkVmFsdWVzID0gZXhwZWN0ZWRWYWx1ZXMuY29uY2F0KFtbMC41LCB0
ZXN0c1tpXSwgJ3dpZHRoJywgMjUwLCAyXV0pOworICAgIGV4cGVjdGVkVmFsdWVzID0gZXhwZWN0
ZWRWYWx1ZXMuY29uY2F0KFtbMC43NSwgdGVzdHNbaV0sICd3aWR0aCcsIDMyNSwgMl1dKTsKKyAg
ICBleHBlY3RlZFZhbHVlcyA9IGV4cGVjdGVkVmFsdWVzLmNvbmNhdChbWzEuMCwgdGVzdHNbaV0s
ICd3aWR0aCcsIDQwMCwgMl1dKTsKK30KKworZnVuY3Rpb24gaW5pdGlhbGl6ZShpZCkKK3sKKyAg
ICB2YXIgZXhwZWN0ZWRTdGFydFdpZHRoID0gMTAwOworICAgIHZhciBlbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoaWQpOworICAgIHZhciB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lk
dGg7CisgICAgaWYgKHdpZHRoID09IGV4cGVjdGVkU3RhcnRXaWR0aCkKKyAgICAgICAgZWxlbWVu
dC5pbm5lckhUTUwgKz0gJ1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAiJyArIGlkICsnIiBl
bGVtZW50IGF0IDAuMHMgd2FzOiAnICsgd2lkdGg7CisgICAgZWxzZQorICAgICAgICBlbGVtZW50
LmlubmVySFRNTCArPSAnRkFJTCAgLSAid2lkdGgiIHByb3BlcnR5IGZvciAiJyArIGlkICsnIiBl
bGVtZW50IGF0IDAuMHMgZXhwZWN0ZWQ6ICcgKyBleHBlY3RlZFN0YXJ0V2lkdGggKyAnIGJ1dCBz
YXc6ICcgKyB3aWR0aDsKKyAgICAKKyAgICBlbGVtZW50LmNsYXNzTmFtZSArPSAiIGdvIjsKK30K
KworZnVuY3Rpb24gc2V0dXBUZXN0KCkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3Rz
Lmxlbmd0aDsgaSsrKQorICAgICAgICBpbml0aWFsaXplKHRlc3RzW2ldKTsKK30KKworcnVuVHJh
bnNpdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMsIHNldHVwVGVzdCwgdHJ1ZSwgZmFsc2UgLyogcGl4
ZWwgdGVzdCAqLyk7CisKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>149420</attachid>
            <date>2012-06-25 18:45:12 -0700</date>
            <delta_ts>2012-06-25 18:45:12 -0700</delta_ts>
            <desc>dependent transitions testcase</desc>
            <filename>transitions-dependent.html</filename>
            <type>text/html</type>
            <size>1334</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxzdHlsZT4KLm91dGVyQmxvY2sgewogICAgYm9yZGVyOiAxcHggc29s
aWQgYmxhY2s7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAxcyBsaW5lYXI7CiAgICAtbW96
LXRyYW5zaXRpb246IGFsbCAxcyBsaW5lYXI7Cn0KCi5pbm5lckJsb2NrIHsgICAgCiAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBncmVlbjsKICAgIGhlaWdodDogMTAwcHg7CiAgICAtd2Via2l0LXRyYW5z
aXRpb246IGFsbCAxcyBsaW5lYXI7CiAgICAtbW96LXRyYW5zaXRpb246IGFsbCAxcyBsaW5lYXI7
ICAgIAp9Cgojb3V0ZXIgewogICAgd2lkdGg6IDEwMHB4Owp9Cgojb3V0ZXIuZ28gewogICAgd2lk
dGg6IDUwMHB4Owp9CgojaW5uZXJTaW1wbGUgewogICAgd2lkdGg6IDEwJTsKfQoKI2lubmVyU2lt
cGxlLmdvIHsKICAgIHdpZHRoOiA5MCU7Cn0KCjwvc3R5bGU+CgpUaGlzIHRlc3RzIHRoYXQgY2Fs
YygpIGV4cHJlc3Npb25zIGRlcGVuZGluZyBvbiB0cmFuc2l0aW9uaW5nIGVsZW1lbnRzIGJlaGF2
ZSBjb3JyZWN0bHkuCjxkaXYgY2xhc3M9Im91dGVyQmxvY2siIGlkPSJvdXRlciI+CiAgICA8ZGl2
IGNsYXNzPSJpbm5lckJsb2NrIiBpZD0iaW5uZXJTaW1wbGUiPjwvZGl2Pgo8L2Rpdj4KPGRpdiBp
ZD0icmVzdWx0Ij48L2Rpdj4KCjxzY3JpcHQgc3JjPSIuLi8uLi90cmFuc2l0aW9ucy9yZXNvdXJj
ZXMvdHJhbnNpdGlvbi10ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0Pgo8c2NyaXB0PgoKY29uc3Qg
dGVzdHMgPSBbIm91dGVyIiwgImlubmVyU2ltcGxlIl07CgpleHBlY3RlZFZhbHVlcyA9IFsKICAg
IFswLjI1LCAib3V0ZXIiLCAnd2lkdGgnLCAyMDAsIDVdLAogICAgWzAuNTAsICJvdXRlciIsICd3
aWR0aCcsIDMwMCwgNV0sCiAgICBbMC43NSwgIm91dGVyIiwgJ3dpZHRoJywgNDAwLCA1XSwKICAg
IFsxLjAwLCAib3V0ZXIiLCAnd2lkdGgnLCA1MDAsIDVdLAoKICAgIFswLjUwLCAiaW5uZXJTaW1w
bGUiLCAnd2lkdGgnLCAxNTAsIDVdLAogICAgWzEuMDAsICJpbm5lclNpbXBsZSIsICd3aWR0aCcs
IDQ1MCwgNV0sCl07CgpmdW5jdGlvbiBpbml0aWFsaXplKGlkKQp7CiAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKICAgIGVsZW1lbnQuY2xhc3NOYW1lICs9ICIg
Z28iOwp9CgpmdW5jdGlvbiBzZXR1cFRlc3QoKQp7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRl
c3RzLmxlbmd0aDsgaSsrKQogICAgICAgIGluaXRpYWxpemUodGVzdHNbaV0pOwp9CgpydW5UcmFu
c2l0aW9uVGVzdChleHBlY3RlZFZhbHVlcywgc2V0dXBUZXN0LCB0cnVlLCBmYWxzZSAvKiBwaXhl
bCB0ZXN0ICovKTsKCjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149669</attachid>
            <date>2012-06-26 20:00:43 -0700</date>
            <delta_ts>2012-06-27 11:23:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86160-20120627130042.patch</filename>
            <type>text/plain</type>
            <size>16986</size>
            <attacher name="Mike Lawther">mikelawther</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA2Y2QyMDE0NTQwNDZk
ZmY3YzdkYWZlMWIzZGJkMzliN2RkNjgyZC4uNWUxMjU5MGM4NGQzZDA3YjQ2NGRiMmI4ZGE4Mjg4
ODYxZDUwOGNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA2LTI0ICBNaWtl
IExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NTMyBjYWxj
OiBibGVuZGluZyBpbnZvbHZpbmcgZXhwcmVzc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgZWl0aGVyIGVuZHBvaW50IG9mIGEgYmxlbmQgaW52
b2x2ZXMgYSBjYWxjIGV4cHJlc3Npb24sIHdlIGNyZWF0ZSBhIG5ldworICAgICAgICBleHByZXNz
aW9uIHRvIHBlcmZvcm0gdGhlIGJsZW5kIGNhbGN1bGF0aW9uLgorCisgICAgICAgIFRlc3Q6IGNz
czMvY2FsYy90cmFuc2l0aW9ucy5odG1sCisgICAgICAgICAgICAgIGNzczMvY2FsYy90cmFuc2l0
aW9ucy1kZXBlbmRlbnQuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpibGVuZENhbGN1bGF0
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGguaDoKKyAgICAgICAgKFdlYkNvcmU6Okxl
bmd0aDo6YmxlbmQpOgorICAgICAgICAoTGVuZ3RoKToKKwogMjAxMi0wNi0yNCAgRnVtaXRvc2hp
IFVrYWkgIDx1a2FpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGNvbXBpbGUg
ZXJyb3IgZml4IG9mIENocm9taXVtIFdpbiBSZWxlYXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aC5jcHAKaW5kZXggMDg2ZjIyMThkMWVhZWI4M2M2Njk3OWFmOTA1ZjAwZTk1OTk1ZjcxNi4uOWQ5
M2NjNjlmNzllMWYxMmJiYjg1YWU3NGIxZGJlNTlhNjc1YjU0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGguY3BwCkBAIC0yMDEsNyArMjAxLDI5IEBAIExlbmd0aDo6TGVuZ3RoKFBhc3NSZWZQ
dHI8Q2FsY3VsYXRpb25WYWx1ZT4gY2FsYykKIHsKICAgICBtX2ludFZhbHVlID0gY2FsY0hhbmRs
ZXMoKS5pbnNlcnQoY2FsYyk7CiB9CisgICAgICAgIAorTGVuZ3RoIExlbmd0aDo6YmxlbmRDYWxj
dWxhdGlvbihjb25zdCBMZW5ndGgmIGZyb20sIGRvdWJsZSBwcm9ncmVzcykgY29uc3QKK3sKKyAg
ICBpZiAocHJvZ3Jlc3MgPD0gMC4wKQorICAgICAgICByZXR1cm4gZnJvbTsKKyAgICAgICAgCisg
ICAgaWYgKHByb2dyZXNzID49IDEuMCkKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICAK
KyAgICAvLyBGSVhNRTogaHR0cHM6Ly93ZWJraXQub3JnL2IvOTAwMzcgLSBzb21lIG9mIHRoZXNl
IGFsbG9jYXRpb25zIGNhbiBiZSBlbGltaW5hdGVkCisgICAgT3duUHRyPENhbGNFeHByZXNzaW9u
Tm9kZT4gc3RhcnRTY2FsZSA9IGFkb3B0UHRyKG5ldyBDYWxjRXhwcmVzc2lvbk51bWJlcigxLjAg
LSBwcm9ncmVzcykpOworICAgIE93blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHN0YXJ0TGVuZ3Ro
ID0gYWRvcHRQdHIobmV3IENhbGNFeHByZXNzaW9uTGVuZ3RoKGZyb20pKTsKKyAgICBPd25QdHI8
Q2FsY0V4cHJlc3Npb25Ob2RlPiBzdGFydE5vZGUgPSBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Np
b25CaW5hcnlPcGVyYXRpb24oc3RhcnRTY2FsZS5yZWxlYXNlKCksIHN0YXJ0TGVuZ3RoLnJlbGVh
c2UoKSwgQ2FsY011bHRpcGx5KSk7CiAgICAgCisgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9k
ZT4gZW5kU2NhbGUgPSBhZG9wdFB0cihuZXcgQ2FsY0V4cHJlc3Npb25OdW1iZXIocHJvZ3Jlc3Mp
KTsKKyAgICBPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiBlbmRMZW5ndGggPSBhZG9wdFB0cihu
ZXcgQ2FsY0V4cHJlc3Npb25MZW5ndGgoKnRoaXMpKTsKKyAgICBPd25QdHI8Q2FsY0V4cHJlc3Np
b25Ob2RlPiBlbmROb2RlID0gYWRvcHRQdHIobmV3IENhbGNFeHByZXNzaW9uQmluYXJ5T3BlcmF0
aW9uKGVuZFNjYWxlLnJlbGVhc2UoKSwgZW5kTGVuZ3RoLnJlbGVhc2UoKSwgQ2FsY011bHRpcGx5
KSk7CisgICAgCisgICAgT3duUHRyPENhbGNFeHByZXNzaW9uTm9kZT4gYmxlbmQgPSBhZG9wdFB0
cihuZXcgQ2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb24oc3RhcnROb2RlLnJlbGVhc2UoKSwg
ZW5kTm9kZS5yZWxlYXNlKCksIENhbGNBZGQpKTsKKyAgICAgICAgCisgICAgcmV0dXJuIExlbmd0
aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoYmxlbmQucmVsZWFzZSgpLCBDYWxjdWxhdGlvblJh
bmdlQWxsKSk7Cit9CisgICAgICAgICAgCiBQYXNzUmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+IExl
bmd0aDo6Y2FsY3VsYXRpb25WYWx1ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzQ2FsY3VsYXRl
ZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKaW5kZXggMTgxNTEzMGE5YzM2Zjk5MTRmOTY2
OThiZGIxZGJjZWVlMGVhZTNiNS4uNzE3MWUzNDk0OGE1YjYzN2FlOTNiMGIzZGViMGFlMTcyN2Y2
NGI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKQEAgLTIzMCwxNSArMjMwLDE0IEBAIHB1
YmxpYzoKICAgICBMZW5ndGggYmxlbmQoY29uc3QgTGVuZ3RoJiBmcm9tLCBkb3VibGUgcHJvZ3Jl
c3MpIGNvbnN0CiAgICAgewogICAgICAgICAvLyBCbGVuZCB0d28gbGVuZ3RocyB0byBwcm9kdWNl
IGEgbmV3IGxlbmd0aCB0aGF0IGlzIGluIGJldHdlZW4gdGhlbS4gIFVzZWQgZm9yIGFuaW1hdGlv
bi4KKyAgICAgICAgaWYgKGZyb20udHlwZSgpID09IENhbGN1bGF0ZWQgfHwgdHlwZSgpID09IENh
bGN1bGF0ZWQpCisgICAgICAgICAgICByZXR1cm4gYmxlbmRDYWxjdWxhdGlvbihmcm9tLCBwcm9n
cmVzcyk7CisgICAgICAgIAogICAgICAgICBpZiAoIWZyb20uaXNaZXJvKCkgJiYgIWlzWmVybygp
ICYmIGZyb20udHlwZSgpICE9IHR5cGUoKSkKICAgICAgICAgICAgIHJldHVybiAqdGhpczsKIAog
ICAgICAgICBpZiAoZnJvbS5pc1plcm8oKSAmJiBpc1plcm8oKSkKICAgICAgICAgICAgIHJldHVy
biAqdGhpczsKLQotICAgICAgICAvLyBGSVhNRSBodHRwOi8vd2Via2l0Lm9yZy9iLzg2MTYwIC0g
QmxlbmRpbmcgZG9lc24ndCB3b3JrIHdpdGggY2FsY3VsYXRlZCBleHByZXNzaW9ucwotICAgICAg
ICBpZiAoZnJvbS50eXBlKCkgPT0gQ2FsY3VsYXRlZCB8fCB0eXBlKCkgPT0gQ2FsY3VsYXRlZCkK
LSAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICAgCiAgICAgICAgIExlbmd0aFR5cGUg
cmVzdWx0VHlwZSA9IHR5cGUoKTsKICAgICAgICAgaWYgKGlzWmVybygpKQpAQCAtMjkzLDYgKzI5
Miw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpbmNyZW1lbnRDYWxjdWxhdGVkUmVmKCk7CiAg
ICAgfQogCisgICAgTGVuZ3RoIGJsZW5kQ2FsY3VsYXRpb24oY29uc3QgTGVuZ3RoJiBmcm9tLCBk
b3VibGUgcHJvZ3Jlc3MpIGNvbnN0OworCiAgICAgaW50IGNhbGN1bGF0aW9uSGFuZGxlKCkgY29u
c3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0NhbGN1bGF0ZWQoKSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWNmNWRl
YjI1NTgyNDJlZDI5YmMxZjFjYjE1ZTJjZDk3N2UzZmZlZC4uYTY4NGE1YTE4MWU0NTk5Y2I3ZDlm
MmU0MDcwZTMyYTEwNmI0ODcyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA2LTI0ICBN
aWtlIExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ1NTMyBj
YWxjOiBibGVuZGluZyBpbnZvbHZpbmcgZXhwcmVzc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBleGlzdGluZyB0ZXN0IGFzIGl0IHdh
cyBmb2xkZWQgaW50byB0cmFuc2l0aW9ucy5odG1sLgorCisgICAgICAgICogY3NzMy9jYWxjL3Ry
YW5zaXRpb24tc3RhcnQtZW5kLXdpdGgtY2FsYy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogY3NzMy9jYWxjL3RyYW5zaXRpb24tc3RhcnQtZW5kLXdpdGgtY2FsYy5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIGNzczMvY2FsYy90cmFuc2l0aW9ucy1kZXBlbmRlbnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2NhbGMvdHJhbnNpdGlvbnMtZGVwZW5kZW50Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvY2FsYy90cmFuc2l0aW9ucy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGNzczMvY2FsYy90cmFuc2l0aW9ucy5odG1sOiBBZGRlZC4KKwog
MjAxMi0wNi0yNCAgSm9vbmUgSHVyICA8am9vbmUuaHVyQGludGVsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkIEdUSy9FRkwgZ2FyZGVuaW5nIGFmdGVyIHIxMjExMjEuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jc3MzL2NhbGMvdHJhbnNpdGlvbi1zdGFydC1lbmQtd2l0aC1jYWxjLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvY2FsYy90cmFuc2l0aW9uLXN0YXJ0LWVuZC13aXRo
LWNhbGMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTkwYzdj
MDc0NzQ1MjY0Mzk3ZjBmMDYwYjdjNmUxYjExOWE2OTVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2NzczMvY2FsYy90cmFuc2l0aW9u
LXN0YXJ0LWVuZC13aXRoLWNhbGMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCAr
MCwwIEBACi1UaGlzIHRlc3RzIHRoYXQgdHJhbnNpdGlvbnMgYmVnaW5uaW5nIGFuZCBlbmRpbmcg
d2l0aCBjYWxjKCkgZXhwcmVzc2lvbnMgbW92ZSB0byB0aGUgZmluYWwgc3RhdGUuCi1QQVNTIC0g
IndpZHRoIiBwcm9wZXJ0eSBmb3IgInJlY3QiIGVsZW1lbnQgYXQgMC4wcyB3YXM6IDUxCi1QQVNT
IC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInJlY3QiIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGlu
ZyBjbG9zZSB0bzogNDAwCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvY2FsYy90cmFu
c2l0aW9uLXN0YXJ0LWVuZC13aXRoLWNhbGMuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvY2FsYy90
cmFuc2l0aW9uLXN0YXJ0LWVuZC13aXRoLWNhbGMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNDZmMzc5MjU4ZGY4NDcyNjU1ZjExYzBhMzA1NzU0YjUzOGNkMjc1Yi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9jc3Mz
L2NhbGMvdHJhbnNpdGlvbi1zdGFydC1lbmQtd2l0aC1jYWxjLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw0NSArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxzdHlsZT4KLSNyZWN0IHsKLSAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKLSAgICBoZWlnaHQ6IDEwMHB4OwotICAgIC13ZWJraXQt
dHJhbnNpdGlvbjogYWxsIDFzOwotICAgIC1tb3otdHJhbnNpdGlvbjogYWxsIDFzOwotICAgIHdp
ZHRoOiAtd2Via2l0LWNhbGMoMTAlICsgMXB4KTsKLSAgICB3aWR0aDogLW1vei1jYWxjKDEwJSAr
IDFweCk7Ci19Ci0jcmVjdC5nbyB7Ci0gICAgd2lkdGg6IC13ZWJraXQtY2FsYygxMDAlIC0gMTAw
cHgpOwotICAgIHdpZHRoOiAtbW96LWNhbGMoMTAwJSAtIDEwMHB4KTsKLX0KLTwvc3R5bGU+Ci0K
LVRoaXMgdGVzdHMgdGhhdCB0cmFuc2l0aW9ucyBiZWdpbm5pbmcgYW5kIGVuZGluZyB3aXRoIGNh
bGMoKSBleHByZXNzaW9ucyBtb3ZlIHRvIHRoZSBmaW5hbCBzdGF0ZS4KLTxkaXYgc3R5bGU9Indp
ZHRoOjUwMHB4OyBib3JkZXI6IDFweCBzb2xpZCBibGFjazsiPgotICAgIDxkaXYgaWQ9InJlY3Qi
PjwvZGl2PgotPC9kaXY+Ci08ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgotCi08c2NyaXB0IHNyYz0i
Li4vLi4vdHJhbnNpdGlvbnMvcmVzb3VyY2VzL3RyYW5zaXRpb24tdGVzdC1oZWxwZXJzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQ+Ci1jb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKLSAgLy8gW3RpbWUs
IGVsZW1lbnQtaWQsIHByb3BlcnR5LCBleHBlY3RlZC12YWx1ZSwgdG9sZXJhbmNlXQotICBbMS4w
LCAncmVjdCcsICd3aWR0aCcsIDQwMCwgMF0sCi1dOwotCi1mdW5jdGlvbiBzZXR1cFRlc3QoKQot
ewotICAgIHZhciBleHBlY3RlZFN0YXJ0V2lkdGggPSA1MTsgLy8gKDEwJSArIDFweCkgd2hlcmUg
MTAwJSA9IDUwMHB4Ci0gICAgdmFyIHJlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVj
dCIpOwotICAgIHZhciB3aWR0aCA9IHJlY3Qub2Zmc2V0V2lkdGg7Ci0gICAgaWYgKHdpZHRoID09
IGV4cGVjdGVkU3RhcnRXaWR0aCkKLSAgICAgICAgcmVjdC5pbm5lckhUTUwgKz0gJ1BBU1MgLSAi
d2lkdGgiIHByb3BlcnR5IGZvciAicmVjdCIgZWxlbWVudCBhdCAwLjBzIHdhczogJyArIHdpZHRo
OwotICAgIGVsc2UKLSAgICAgICAgcmVjdC5pbm5lckhUTUwgKz0gJ0ZBSUwgIC0gIndpZHRoIiBw
cm9wZXJ0eSBmb3IgInJlY3QiIGVsZW1lbnQgYXQgMC4wcyBleHBlY3RlZDogJyArIGV4cGVjdGVk
U3RhcnRXaWR0aCArICdidXQgc2F3OiAnICsgd2lkdGg7Ci0gICAgCi0gICAgcmVjdC5jbGFzc05h
bWUgPSAiZ28iOwotfQotCi1ydW5UcmFuc2l0aW9uVGVzdChleHBlY3RlZFZhbHVlcywgc2V0dXBU
ZXN0LCB0cnVlLCBmYWxzZSAvKiBwaXhlbCB0ZXN0ICovKTsKLQotPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvdHJhbnNpdGlvbnMtZGVwZW5kZW50LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2NzczMvY2FsYy90cmFuc2l0aW9ucy1kZXBlbmRlbnQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM0NjVmOTY4Yjk3ZmViYjAwNWQ3MTlkYzJhMTFjZTBkMTM4NThj
ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvdHJhbnNpdGlvbnMt
ZGVwZW5kZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRlc3RzIHRoYXQg
Y2FsYygpIGV4cHJlc3Npb25zIGRlcGVuZGluZyBvbiB0cmFuc2l0aW9uaW5nIGVsZW1lbnRzIGJl
aGF2ZSBjb3JyZWN0bHkuCitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgImlubmVyIiBlbGVt
ZW50IGF0IDBzIHdhczogNjAKK1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAiaW5uZXIiIGVs
ZW1lbnQgYXQgMC4yNXMgd2FzOiAxMTAKK1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAiaW5u
ZXIiIGVsZW1lbnQgYXQgMC41cyB3YXM6IDE2MAorUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9y
ICJpbm5lciIgZWxlbWVudCBhdCAwLjc1cyB3YXM6IDIxMAorUEFTUyAtICJ3aWR0aCIgcHJvcGVy
dHkgZm9yICJpbm5lciIgZWxlbWVudCBhdCAxcyB3YXM6IDI2MAorUEFTUyAtICJ3aWR0aCIgcHJv
cGVydHkgZm9yICJpbm5lclRyYW5zaXRpb24iIGVsZW1lbnQgYXQgMHMgd2FzOiAyMAorUEFTUyAt
ICJ3aWR0aCIgcHJvcGVydHkgZm9yICJpbm5lclRyYW5zaXRpb24iIGVsZW1lbnQgYXQgMC4yNXMg
d2FzOiA3MAorUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9yICJpbm5lclRyYW5zaXRpb24iIGVs
ZW1lbnQgYXQgMC41cyB3YXM6IDE2NQorUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9yICJpbm5l
clRyYW5zaXRpb24iIGVsZW1lbnQgYXQgMC43NXMgd2FzOiAzMDUKK1BBU1MgLSAid2lkdGgiIHBy
b3BlcnR5IGZvciAiaW5uZXJUcmFuc2l0aW9uIiBlbGVtZW50IGF0IDFzIHdhczogNDkwCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvY2FsYy90cmFuc2l0aW9ucy1kZXBlbmRlbnQuaHRt
bCBiL0xheW91dFRlc3RzL2NzczMvY2FsYy90cmFuc2l0aW9ucy1kZXBlbmRlbnQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42MzhkZWYyNmZiNDg0NWM0OWQ5MzkzOTgwNmMyNTVjYWI2ZGU0MmFkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9jYWxjL3RyYW5zaXRpb25zLWRlcGVuZGVudC5o
dG1sCkBAIC0wLDAgKzEsOTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPHN0eWxlPgorLm91dGVyQmxv
Y2sgeworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgIC13ZWJraXQtdHJhbnNpdGlv
bjogYWxsIDFzIGxpbmVhcjsKKyAgICAtbW96LXRyYW5zaXRpb246IGFsbCAxcyBsaW5lYXI7Cit9
CisKKy5pbm5lckJsb2NrIHsgICAgCisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAg
aGVpZ2h0OiAxMDBweDsKKyAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAxcyBsaW5lYXI7Cisg
ICAgLW1vei10cmFuc2l0aW9uOiBhbGwgMXMgbGluZWFyOyAgICAKK30KKworI291dGVyIHsKKyAg
ICB3aWR0aDogMTAwcHg7Cit9CisKKyNvdXRlci5nbyB7CisgICAgd2lkdGg6IDUwMHB4OworfQor
CisjaW5uZXIgeworICAgIHdpZHRoOiAtd2Via2l0LWNhbGMoNTAlICsgMTBweCk7Cit9CisKKyNp
bm5lclRyYW5zaXRpb24geworICAgIHdpZHRoOiAtd2Via2l0LWNhbGMoMTAlICsgMTBweCk7Cit9
CisKKyNpbm5lclRyYW5zaXRpb24uZ28geworICAgIHdpZHRoOiAtd2Via2l0LWNhbGMoMTAwJSAt
IDEwcHgpOworfQorCis8L3N0eWxlPgorCitUaGlzIHRlc3RzIHRoYXQgY2FsYygpIGV4cHJlc3Np
b25zIGRlcGVuZGluZyBvbiB0cmFuc2l0aW9uaW5nIGVsZW1lbnRzIGJlaGF2ZSBjb3JyZWN0bHku
Cis8ZGl2IGNsYXNzPSJvdXRlckJsb2NrIiBpZD0ib3V0ZXIiPgorICAgIDxkaXYgY2xhc3M9Imlu
bmVyQmxvY2siIGlkPSJpbm5lciI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iaW5uZXJCbG9jayIg
aWQ9ImlubmVyVHJhbnNpdGlvbiI+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9k
aXY+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi90cmFuc2l0aW9ucy9yZXNvdXJjZXMvdHJhbnNpdGlv
bi10ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworY29uc3QgdHJh
bnNpdGlvbmluZ0VsZW1lbnRzID0gWyJvdXRlciIsICJpbm5lclRyYW5zaXRpb24iXTsKKworZXhw
ZWN0ZWRWYWx1ZXMgPSBbCisgICAgLy8gdGltZSwgZWxlbWVudCwgcHJvcGVydHksIGV4cGVjdGVk
LXZhbHVlLCBkZXBlbmRzLW9uCisgICAgWzAuMDAsICJpbm5lciIsICd3aWR0aCcsIDYwLCAib3V0
ZXIiXSwKKyAgICBbMC4yNSwgImlubmVyIiwgJ3dpZHRoJywgMTEwLCAib3V0ZXIiXSwKKyAgICBb
MC41MCwgImlubmVyIiwgJ3dpZHRoJywgMTYwLCAib3V0ZXIiXSwKKyAgICBbMC43NSwgImlubmVy
IiwgJ3dpZHRoJywgMjEwLCAib3V0ZXIiXSwKKyAgICBbMS4wMCwgImlubmVyIiwgJ3dpZHRoJywg
MjYwLCAib3V0ZXIiXSwKKworICAgIFswLjAwLCAiaW5uZXJUcmFuc2l0aW9uIiwgJ3dpZHRoJywg
MjAsICJvdXRlciJdLAorICAgIFswLjI1LCAiaW5uZXJUcmFuc2l0aW9uIiwgJ3dpZHRoJywgNzAs
ICJvdXRlciJdLAorICAgIFswLjUwLCAiaW5uZXJUcmFuc2l0aW9uIiwgJ3dpZHRoJywgMTY1LCAi
b3V0ZXIiXSwKKyAgICBbMC43NSwgImlubmVyVHJhbnNpdGlvbiIsICd3aWR0aCcsIDMwNSwgIm91
dGVyIl0sCisgICAgWzEuMDAsICJpbm5lclRyYW5zaXRpb24iLCAnd2lkdGgnLCA0OTAsICJvdXRl
ciJdLAorXTsKKworZnVuY3Rpb24gcnVuVGVzdChleHBlY3RlZCkgCit7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgdGltZSA9IGV4
cGVjdGVkW2ldWzBdOworICAgICAgICB2YXIgZWxlbWVudElkID0gZXhwZWN0ZWRbaV1bMV07Cisg
ICAgICAgIHZhciBwcm9wZXJ0eSA9IGV4cGVjdGVkW2ldWzJdOworICAgICAgICB2YXIgZXhwZWN0
ZWRWYWx1ZSA9IGV4cGVjdGVkW2ldWzNdOworICAgICAgICB2YXIgZGVwZW5kc09uID0gZXhwZWN0
ZWRbaV1bNF07CisgICAgICAgIAorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVu
dFdpdGhJZChwcm9wZXJ0eSwgdGltZSwgZGVwZW5kc09uKTsKKyAgICAgICAgICAgIHdpbmRvdy50
ZXN0UnVubmVyLnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZChwcm9wZXJ0eSwg
dGltZSwgZWxlbWVudElkKTsKKyAgICAgICAgICAgIHZhciBhY3R1YWwgPSB3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpKS5nZXRQcm9wZXJ0
eUNTU1ZhbHVlKHByb3BlcnR5KS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19O
VU1CRVIpOworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKTsKKworICAgICAgICAgICAgaWYgKGFjdHVhbCA9PSBleHBlY3RlZFZhbHVlKQor
ICAgICAgICAgICAgICAgIHJlc3VsdC5pbm5lckhUTUwgKz0gJ1BBU1MgLSAiJyArIHByb3BlcnR5
ICsgJyIgcHJvcGVydHkgZm9yICInICsgZWxlbWVudElkICsnIiBlbGVtZW50IGF0ICcgKyB0aW1l
ICsgJ3Mgd2FzOiAnICsgYWN0dWFsICsgJzxici8+JzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MICs9ICdGQUlMIC0gIicgKyBwcm9wZXJ0eSArICci
IHByb3BlcnR5IGZvciAiJyArIGVsZW1lbnRJZCArJyIgZWxlbWVudCBhdCAnICsgdGltZSArICdz
IGV4cGVjdGVkOiAnICsgZXhwZWN0ZWRWYWx1ZSArICcgYnV0IHNhdzogJyArIGFjdHVhbCArICc8
YnIvPic7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgIH0KK30KKworZm9yICh2YXIgaSA9
IDA7IGkgPCB0cmFuc2l0aW9uaW5nRWxlbWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICB2YXIgZWxl
bWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRyYW5zaXRpb25pbmdFbGVtZW50c1tpXSk7
CisgICAgZWxlbWVudC5jbGFzc05hbWUgKz0gIiBnbyI7Cit9CisKK3dpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7IHdhaXRGb3JBbmltYXRpb25TdGFydChydW5UZXN0
KGV4cGVjdGVkVmFsdWVzKSk7IH0sIGZhbHNlKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jc3MzL2NhbGMvdHJhbnNpdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvY3NzMy9jYWxjL3RyYW5zaXRpb25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTBlMGNi
ZDdlMWY4MDRjZDhjNjE1OGYzNDM1ZmNmYmNkNWJkYTMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvY3NzMy9jYWxjL3RyYW5zaXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI3
IEBACitUaGlzIHRlc3RzIHRoYXQgdHJhbnNpdGlvbnMgY29udGFpbmluZyBjYWxjKCkgZXhwcmVz
c2lvbnMgdHJhbnNpdGlvbiBjb3JyZWN0bHkuCitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3Ig
InN0YXJ0Q2FsY0VuZENhbGMiIGVsZW1lbnQgYXQgMC4wcyB3YXM6IDEwMAorUEFTUyAtICJ3aWR0
aCIgcHJvcGVydHkgZm9yICJzdGFydFB4RW5kQ2FsYyIgZWxlbWVudCBhdCAwLjBzIHdhczogMTAw
CitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0UGVyY2VudEVuZENhbGMiIGVsZW1l
bnQgYXQgMC4wcyB3YXM6IDEwMAorUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9yICJzdGFydENh
bGNFbmRQeCIgZWxlbWVudCBhdCAwLjBzIHdhczogMTAwCitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0
eSBmb3IgInN0YXJ0Q2FsY0VuZFBlcmNlbnQiIGVsZW1lbnQgYXQgMC4wcyB3YXM6IDEwMAorUEFT
UyAtICJ3aWR0aCIgcHJvcGVydHkgZm9yICJzdGFydENhbGNFbmRDYWxjIiBlbGVtZW50IGF0IDAu
MjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE3NQorUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkg
Zm9yICJzdGFydENhbGNFbmRDYWxjIiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGluZyBjbG9z
ZSB0bzogMjUwCitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0Q2FsY0VuZENhbGMi
IGVsZW1lbnQgYXQgMC43NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMzI1CitQQVNTIC0gIndp
ZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0Q2FsY0VuZENhbGMiIGVsZW1lbnQgYXQgMXMgc2F3IHNv
bWV0aGluZyBjbG9zZSB0bzogNDAwCitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0
UHhFbmRDYWxjIiBlbGVtZW50IGF0IDAuMjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE3NQor
UEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9yICJzdGFydFB4RW5kQ2FsYyIgZWxlbWVudCBhdCAw
LjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDI1MAorUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkg
Zm9yICJzdGFydFB4RW5kQ2FsYyIgZWxlbWVudCBhdCAwLjc1cyBzYXcgc29tZXRoaW5nIGNsb3Nl
IHRvOiAzMjUKK1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAic3RhcnRQeEVuZENhbGMiIGVs
ZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogNDAwCitQQVNTIC0gIndpZHRoIiBw
cm9wZXJ0eSBmb3IgInN0YXJ0UGVyY2VudEVuZENhbGMiIGVsZW1lbnQgYXQgMC4yNXMgc2F3IHNv
bWV0aGluZyBjbG9zZSB0bzogMTc1CitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0
UGVyY2VudEVuZENhbGMiIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAy
NTAKK1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAic3RhcnRQZXJjZW50RW5kQ2FsYyIgZWxl
bWVudCBhdCAwLjc1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAzMjUKK1BBU1MgLSAid2lkdGgi
IHByb3BlcnR5IGZvciAic3RhcnRQZXJjZW50RW5kQ2FsYyIgZWxlbWVudCBhdCAxcyBzYXcgc29t
ZXRoaW5nIGNsb3NlIHRvOiA0MDAKK1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAic3RhcnRD
YWxjRW5kUHgiIGVsZW1lbnQgYXQgMC4yNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTc1CitQ
QVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgInN0YXJ0Q2FsY0VuZFB4IiBlbGVtZW50IGF0IDAu
NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjUwCitQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBm
b3IgInN0YXJ0Q2FsY0VuZFB4IiBlbGVtZW50IGF0IDAuNzVzIHNhdyBzb21ldGhpbmcgY2xvc2Ug
dG86IDMyNQorUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9yICJzdGFydENhbGNFbmRQeCIgZWxl
bWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiA0MDAKK1BBU1MgLSAid2lkdGgiIHBy
b3BlcnR5IGZvciAic3RhcnRDYWxjRW5kUGVyY2VudCIgZWxlbWVudCBhdCAwLjI1cyBzYXcgc29t
ZXRoaW5nIGNsb3NlIHRvOiAxNzUKK1BBU1MgLSAid2lkdGgiIHByb3BlcnR5IGZvciAic3RhcnRD
YWxjRW5kUGVyY2VudCIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDI1
MAorUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9yICJzdGFydENhbGNFbmRQZXJjZW50IiBlbGVt
ZW50IGF0IDAuNzVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDMyNQorUEFTUyAtICJ3aWR0aCIg
cHJvcGVydHkgZm9yICJzdGFydENhbGNFbmRQZXJjZW50IiBlbGVtZW50IGF0IDFzIHNhdyBzb21l
dGhpbmcgY2xvc2UgdG86IDQwMAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2NhbGMv
dHJhbnNpdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvY2FsYy90cmFuc2l0aW9ucy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRjYmU1YjJlNzdmMTU2MmQ4ZmRhNmM1YjE2MjVmNGEwYzYzNjFlMjUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2NhbGMvdHJhbnNpdGlvbnMuaHRtbApA
QCAtMCwwICsxLDgyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxzdHlsZT4KKy50cmFuc2l0aW9uVGVz
dCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAxcyBsaW5lYXI7CisgICAgLW1vei10cmFuc2l0aW9u
OiBhbGwgMXMgbGluZWFyOworfQorCisjc3RhcnRDYWxjRW5kQ2FsYywgI3N0YXJ0Q2FsY0VuZFB4
LCAjc3RhcnRDYWxjRW5kUGVyY2VudCB7CisgICAgd2lkdGg6IC13ZWJraXQtY2FsYygxMCUgKyA1
MHB4KTsKKyAgICB3aWR0aDogLW1vei1jYWxjKDEwJSArIDUwcHgpOworfQorCisjc3RhcnRQeEVu
ZENhbGMgeworICAgIHdpZHRoOiAxMDBweDsKK30KKworI3N0YXJ0UGVyY2VudEVuZENhbGMgewor
ICAgIHdpZHRoOiAyMCU7Cit9CisKKyNzdGFydENhbGNFbmRDYWxjLmdvLCAjc3RhcnRQeEVuZENh
bGMuZ28sICNzdGFydFBlcmNlbnRFbmRDYWxjLmdvIHsKKyAgICB3aWR0aDogLXdlYmtpdC1jYWxj
KDEwMCUgLSAxMDBweCk7CisgICAgd2lkdGg6IC1tb3otY2FsYygxMDAlIC0gMTAwcHgpOworfQor
Cisjc3RhcnRDYWxjRW5kUHguZ28geworICAgIHdpZHRoOiA0MDBweDsKK30KKworI3N0YXJ0Q2Fs
Y0VuZFBlcmNlbnQuZ28geworICAgIHdpZHRoOiA4MCU7Cit9Cis8L3N0eWxlPgorCitUaGlzIHRl
c3RzIHRoYXQgdHJhbnNpdGlvbnMgY29udGFpbmluZyBjYWxjKCkgZXhwcmVzc2lvbnMgdHJhbnNp
dGlvbiBjb3JyZWN0bHkuCis8ZGl2IHN0eWxlPSJ3aWR0aDo1MDBweDsgYm9yZGVyOiAxcHggc29s
aWQgYmxhY2s7Ij4KKyAgICA8ZGl2IGNsYXNzPSJ0cmFuc2l0aW9uVGVzdCIgaWQ9InN0YXJ0Q2Fs
Y0VuZENhbGMiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InRyYW5zaXRpb25UZXN0IiBpZD0ic3Rh
cnRQeEVuZENhbGMiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InRyYW5zaXRpb25UZXN0IiBpZD0i
c3RhcnRQZXJjZW50RW5kQ2FsYyI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0idHJhbnNpdGlvblRl
c3QiIGlkPSJzdGFydENhbGNFbmRQeCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0idHJhbnNpdGlv
blRlc3QiIGlkPSJzdGFydENhbGNFbmRQZXJjZW50Ij48L2Rpdj4KKzwvZGl2PgorPGRpdiBpZD0i
cmVzdWx0Ij48L2Rpdj4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3RyYW5zaXRpb25zL3Jlc291cmNl
cy90cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitjb25z
dCB0ZXN0cyA9IFsic3RhcnRDYWxjRW5kQ2FsYyIsICJzdGFydFB4RW5kQ2FsYyIsICJzdGFydFBl
cmNlbnRFbmRDYWxjIiwgInN0YXJ0Q2FsY0VuZFB4IiwgInN0YXJ0Q2FsY0VuZFBlcmNlbnQiXTsK
KworZXhwZWN0ZWRWYWx1ZXMgPSBbXTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5n
dGg7IGkrKykgeworICAgIGV4cGVjdGVkVmFsdWVzID0gZXhwZWN0ZWRWYWx1ZXMuY29uY2F0KFtb
MC4yNSwgdGVzdHNbaV0sICd3aWR0aCcsIDE3NSwgMl1dKTsKKyAgICBleHBlY3RlZFZhbHVlcyA9
IGV4cGVjdGVkVmFsdWVzLmNvbmNhdChbWzAuNSwgdGVzdHNbaV0sICd3aWR0aCcsIDI1MCwgMl1d
KTsKKyAgICBleHBlY3RlZFZhbHVlcyA9IGV4cGVjdGVkVmFsdWVzLmNvbmNhdChbWzAuNzUsIHRl
c3RzW2ldLCAnd2lkdGgnLCAzMjUsIDJdXSk7CisgICAgZXhwZWN0ZWRWYWx1ZXMgPSBleHBlY3Rl
ZFZhbHVlcy5jb25jYXQoW1sxLjAsIHRlc3RzW2ldLCAnd2lkdGgnLCA0MDAsIDJdXSk7Cit9CisK
K2Z1bmN0aW9uIGluaXRpYWxpemUoaWQpCit7CisgICAgdmFyIGV4cGVjdGVkU3RhcnRXaWR0aCA9
IDEwMDsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKKyAg
ICB2YXIgd2lkdGggPSBlbGVtZW50Lm9mZnNldFdpZHRoOworICAgIGlmICh3aWR0aCA9PSBleHBl
Y3RlZFN0YXJ0V2lkdGgpCisgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MICs9ICdQQVNTIC0gIndp
ZHRoIiBwcm9wZXJ0eSBmb3IgIicgKyBpZCArJyIgZWxlbWVudCBhdCAwLjBzIHdhczogJyArIHdp
ZHRoOworICAgIGVsc2UKKyAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgKz0gJ0ZBSUwgIC0gIndp
ZHRoIiBwcm9wZXJ0eSBmb3IgIicgKyBpZCArJyIgZWxlbWVudCBhdCAwLjBzIGV4cGVjdGVkOiAn
ICsgZXhwZWN0ZWRTdGFydFdpZHRoICsgJyBidXQgc2F3OiAnICsgd2lkdGg7CisgICAgCisgICAg
ZWxlbWVudC5jbGFzc05hbWUgKz0gIiBnbyI7Cit9CisKK2Z1bmN0aW9uIHNldHVwVGVzdCgpCit7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7IGkrKykKKyAgICAgICAgaW5p
dGlhbGl6ZSh0ZXN0c1tpXSk7Cit9CisKK3J1blRyYW5zaXRpb25UZXN0KGV4cGVjdGVkVmFsdWVz
LCBzZXR1cFRlc3QsIHRydWUsIGZhbHNlIC8qIHBpeGVsIHRlc3QgKi8pOworCis8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>