<?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>34585</bug_id>
          
          <creation_ts>2010-02-04 06:27:01 -0800</creation_ts>
          <short_desc>[Qt] The target element of a Touch should be the target where that touch originated, not where it is now.</short_desc>
          <delta_ts>2010-02-25 05:24:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.ksasq.com/touch/touch-target.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>34476</dependson>
          <blocked>32485</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ben Murdoch">benm</reporter>
          <assigned_to name="Ben Murdoch">benm</assigned_to>
          <cc>android-webkit-unforking</cc>
    
    <cc>commit-queue</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>187769</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2010-02-04 06:27:01 -0800</bug_when>
    <thetext>To match the current behavior on iPhone and Android, the target of a touch point within a touch event should be the same target as when the touch point was first pressed. This matches the behavior Android and iPhone currently exhibit.

For example, see http://www.ksasq.com/touch/touch-target.html which shows 3 DIVs and the target of the current touch points. On Android and iPhone, the target does not change with touchmove events, even if the touch moves into a different DIV.

I have a patch to the handleTouchEvent function to fix this, and will send a new patch to this bug to also update the layout tests to match the new behavior once 34476 lands. Until then, I&apos;d really appreciate any feedback on the code.

Whilst developing the patch, I noticed a bug in the Qt event sender: touch points where not being assigned a unique id. A patch to correct that is also included.

Thanks, Ben</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187771</commentid>
    <comment_count>1</comment_count>
      <attachid>48136</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2010-02-04 06:31:08 -0800</bug_when>
    <thetext>Created attachment 48136
First draft of code to fix the problem. Layout tests to follow later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193300</commentid>
    <comment_count>2</comment_count>
      <attachid>49378</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2010-02-24 04:16:33 -0800</bug_when>
    <thetext>Created attachment 49378
Patch and layout test changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193407</commentid>
    <comment_count>3</comment_count>
      <attachid>49409</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2010-02-24 10:37:40 -0800</bug_when>
    <thetext>Created attachment 49409
Proposed patch and test.

Sorry for the review request/patch churn on this bug... this patch is the correct one to review :)

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193409</commentid>
    <comment_count>4</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2010-02-24 10:39:09 -0800</bug_when>
    <thetext>Tagging Qt as there are some small edits to Qt specific files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193412</commentid>
    <comment_count>5</comment_count>
      <attachid>49409</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-24 10:47:22 -0800</bug_when>
    <thetext>Comment on attachment 49409
Proposed patch and test.

Couldn&apos;t you wrap those ChangeLog lines? Most people do that. It is very hard to read how it is now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193415</commentid>
    <comment_count>6</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2010-02-24 10:51:21 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 49409 [details])
&gt; Couldn&apos;t you wrap those ChangeLog lines? Most people do that. It is very hard
&gt; to read how it is now.

Sure thing. I&apos;ll send a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193417</commentid>
    <comment_count>7</comment_count>
      <attachid>49412</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2010-02-24 10:56:14 -0800</bug_when>
    <thetext>Created attachment 49412
Patch (line wrapped Changelogs)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193425</commentid>
    <comment_count>8</comment_count>
      <attachid>49412</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-24 11:12:51 -0800</bug_when>
    <thetext>Comment on attachment 49412
Patch (line wrapped Changelogs)


&gt; +        if (point.state() == PlatformTouchPoint::TouchPressed) {
&gt; +            m_originatingTouchPointTargets.set(touchPointTargetKey, target);
&gt; +            touchTarget = target;
&gt; +        } else if (point.state() == PlatformTouchPoint::TouchReleased || point.state() == PlatformTouchPoint::TouchCancelled)
&gt; +            touchTarget = m_originatingTouchPointTargets.take(touchPointTargetKey).get();
&gt; +        else
&gt; +            touchTarget = m_originatingTouchPointTargets.get(touchPointTargetKey).get();

When do you get in this last else? I would add a comment (like in the changelog) above the point.state() == PlatformTouchPoint::TouchReleased, that the target is the original point.


&gt; -    m_id = point.id();
&gt; +    // The QTouchEvent::TouchPoint API states that ids will be &gt;= 0.
&gt; +    m_id = static_cast&lt;unsigned&gt;(point.id());

Didn&apos;t you just change id to be unsigned? why is the cast then needed

&gt; +
&gt;  #if QT_VERSION &gt;= QT_VERSION_CHECK(4, 6, 0)
&gt; -    int id = m_touchPoints.count();
&gt; +    int index = m_touchPoints.count();
&gt; +    int id = m_touchPoints.isEmpty() ? 0 : m_touchPoints.last().id() + 1;

It is not so obvious what you are doing here, could you add a small comment?

The rest looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193504</commentid>
    <comment_count>9</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2010-02-24 14:21:35 -0800</bug_when>
    <thetext>(In reply to comment #8)

Hi Kenneth, thanks for the review! Comments inline.

&gt; (From update of attachment 49412 [details])
&gt; 
&gt; &gt; +        if (point.state() == PlatformTouchPoint::TouchPressed) {
&gt; &gt; +            m_originatingTouchPointTargets.set(touchPointTargetKey, target);
&gt; &gt; +            touchTarget = target;
&gt; &gt; +        } else if (point.state() == PlatformTouchPoint::TouchReleased || point.state() == PlatformTouchPoint::TouchCancelled)
&gt; &gt; +            touchTarget = m_originatingTouchPointTargets.take(touchPointTargetKey).get();
&gt; &gt; +        else
&gt; &gt; +            touchTarget = m_originatingTouchPointTargets.get(touchPointTargetKey).get();
&gt; 
&gt; When do you get in this last else? I would add a comment (like in the
&gt; changelog) above the point.state() == PlatformTouchPoint::TouchReleased, that
&gt; the target is the original point.

The last else is for when the touch is a move event, i.e. an update to a touch point that has already been pressed down but not yet released. Then we just want to pull the original target out of the map. I can add the comment like you suggest.

&gt; 
&gt; &gt; -    m_id = point.id();
&gt; &gt; +    // The QTouchEvent::TouchPoint API states that ids will be &gt;= 0.
&gt; &gt; +    m_id = static_cast&lt;unsigned&gt;(point.id());
&gt; 
&gt; Didn&apos;t you just change id to be unsigned? why is the cast then needed

The Qt API returns a (signed) int from the id() function, I just wanted to avoid any compiler warnings and make it explicit that the id must be unsigned.

&gt; 
&gt; &gt; +
&gt; &gt;  #if QT_VERSION &gt;= QT_VERSION_CHECK(4, 6, 0)
&gt; &gt; -    int id = m_touchPoints.count();
&gt; &gt; +    int index = m_touchPoints.count();
&gt; &gt; +    int id = m_touchPoints.isEmpty() ? 0 : m_touchPoints.last().id() + 1;
&gt; 
&gt; It is not so obvious what you are doing here, could you add a small comment?
&gt; 

Sure. Basically, with the old code, touches were not always being assigned unique ids. For example, imagine the case when you press two fingers down, first finger would get id 0, second would get id 1. Then lift the first finger and place another down - it would get assigned id 1 and then both the pressed touches have the same id.

My change is just to ensure that we assign a unique ID to each new touch press. When we first start or after all touches are released, we start again assigning id 0.

&gt; The rest looks fine.

Great! I can upload a new patch tomorrow or if you are happy with my explanations I can add the comments on commit, whichever you prefer.

Thanks again for the review!

Ben</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193531</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-24 14:52:06 -0800</bug_when>
    <thetext>
&gt; The last else is for when the touch is a move event, i.e. an update to a touch
&gt; point that has already been pressed down but not yet released. Then we just
&gt; want to pull the original target out of the map. I can add the comment like you
&gt; suggest.

great, I would like that.

&gt; The Qt API returns a (signed) int from the id() function, I just wanted to
&gt; avoid any compiler warnings and make it explicit that the id must be unsigned.

ok, got it.


&gt; Sure. Basically, with the old code, touches were not always being assigned
&gt; unique ids. For example, imagine the case when you press two fingers down,
&gt; first finger would get id 0, second would get id 1. Then lift the first finger
&gt; and place another down - it would get assigned id 1 and then both the pressed
&gt; touches have the same id.
&gt; 
&gt; My change is just to ensure that we assign a unique ID to each new touch press.
&gt; When we first start or after all touches are released, we start again assigning
&gt; id 0.

Ah, sounds good. Would be good with a comment like the above (maybe a bit shorter :-))

&gt; Great! I can upload a new patch tomorrow or if you are happy with my
&gt; explanations I can add the comments on commit, whichever you prefer.

Sounds good! I will re-review it tomorrow then.

&gt; Thanks again for the review!

You&apos;re welcome!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193662</commentid>
    <comment_count>11</comment_count>
      <attachid>49470</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2010-02-25 02:41:34 -0800</bug_when>
    <thetext>Created attachment 49470
Patch and layout test changes.

Hi Kenneth, please see the new patch with extra comments added.

Thanks, Ben</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193687</commentid>
    <comment_count>12</comment_count>
      <attachid>49470</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-25 05:24:18 -0800</bug_when>
    <thetext>Comment on attachment 49470
Patch and layout test changes.

Clearing flags on attachment: 49470

Committed r55230: &lt;http://trac.webkit.org/changeset/55230&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193688</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-25 05:24:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48136</attachid>
            <date>2010-02-04 06:31:08 -0800</date>
            <delta_ts>2010-02-24 04:16:33 -0800</delta_ts>
            <desc>First draft of code to fix the problem. Layout tests to follow later.</desc>
            <filename>34585.txt</filename>
            <type>text/plain</type>
            <size>3178</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiA1NDM0MCkKKysrIFdlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTczLDcgKzI1NzMsMTAgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29ucwogICAgICAgICBpbnQgYWRq
dXN0ZWRQYWdlWCA9IGxyb3VuZGYocGFnZVBvaW50LngoKSAvIG1fZnJhbWUtPnBhZ2Vab29tRmFj
dG9yKCkpOwogICAgICAgICBpbnQgYWRqdXN0ZWRQYWdlWSA9IGxyb3VuZGYocGFnZVBvaW50Lnko
KSAvIG1fZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkpOwogCi0gICAgICAgIFJlZlB0cjxUb3VjaD4g
dG91Y2ggPSBUb3VjaDo6Y3JlYXRlKGRvYy0+ZnJhbWUoKSwgdGFyZ2V0LCBwb2ludC5pZCgpLAor
ICAgICAgICBpZiAocG9pbnQuc3RhdGUoKSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJl
c3NlZCkKKyAgICAgICAgICAgIG1fb3JpZ2luYXRpbmdUYXJnZXRzLnNldChwb2ludC5pZCgpLCB0
YXJnZXQpOyAgICAgCisKKyAgICAgICAgUmVmUHRyPFRvdWNoPiB0b3VjaCA9IFRvdWNoOjpjcmVh
dGUoZG9jLT5mcmFtZSgpLCBtX29yaWdpbmF0aW5nVGFyZ2V0cy5nZXQocG9pbnQuaWQoKSkuZ2V0
KCksIHBvaW50LmlkKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBvaW50LnNjcmVlblBvcygpLngoKSwgcG9pbnQuc2NyZWVuUG9zKCkueSgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFBhZ2VYLCBhZGp1
c3RlZFBhZ2VZKTsKIApAQCAtMjU4Myw5ICsyNTg2LDEwIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVUb3VjaEV2ZW50KGNvbnMKICAgICAgICAgICAgIG1fZmlyc3RUb3VjaFBhZ2VQb3MgPSBw
YWdlUG9pbnQ7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAocG9pbnQuc3RhdGUoKSA9PSBQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQpCisgICAgICAgIGlmIChwb2ludC5zdGF0ZSgp
ID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCkgewogICAgICAgICAgICAgcmVs
ZWFzZWRUb3VjaGVzLT5hcHBlbmQodG91Y2gpOwotICAgICAgICBlbHNlIGlmIChwb2ludC5zdGF0
ZSgpID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQpCisgICAgICAgICAgICBt
X29yaWdpbmF0aW5nVGFyZ2V0cy5yZW1vdmUocG9pbnQuaWQoKSk7CisgICAgICAgIH0gZWxzZSBp
ZiAocG9pbnQuc3RhdGUoKSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoQ2FuY2VsbGVkKQog
ICAgICAgICAgICAgY2FuY2VsVG91Y2hlcy0+YXBwZW5kKHRvdWNoKTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBpZiAocG9pbnQuc3RhdGUoKSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoUHJlc3NlZCkKSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHJldmlzaW9uIDU0MzQwKQorKysgV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMiArMzcsMTcg
QEAKIGNsYXNzIE5TVmlldzsKICNlbmRpZgogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQXRvbWljU3RyaW5nOwogY2xhc3MgQ2xpcGJvYXJkOwogY2xhc3MgQ3Vyc29yOwogY2xh
c3MgRXZlbnQ7CitjbGFzcyBFdmVudFRhcmdldDsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBG
cmFtZTsKIGNsYXNzIEhpdFRlc3RSZXF1ZXN0OwpAQCAtNDA4LDYgKzQxMyw4IEBAIHByaXZhdGU6
CiAgICAgaW50IG1fYWN0aXZhdGlvbkV2ZW50TnVtYmVyOwogI2VuZGlmCiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8RXZlbnRUYXJnZXQ+
ID4gVG91Y2hUYXJnZXRNYXA7CisgICAgVG91Y2hUYXJnZXRNYXAgbV9vcmlnaW5hdGluZ1Rhcmdl
dHM7CiAgICAgUmVmUHRyPE5vZGU+IG1fdG91Y2hFdmVudFRhcmdldDsKICAgICBJbnRQb2ludCBt
X2ZpcnN0VG91Y2hTY3JlZW5Qb3M7CiAgICAgSW50UG9pbnQgbV9maXJzdFRvdWNoUGFnZVBvczsK
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQu
Y3BwCShyZXZpc2lvbiA1NDM0MCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2
ZW50U2VuZGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsMTEgKzI4NywxMiBAQCB2b2lk
IEV2ZW50U2VuZGVyOjpzY2hlZHVsZUFzeW5jaHJvbm91c0NsCiB2b2lkIEV2ZW50U2VuZGVyOjph
ZGRUb3VjaFBvaW50KGludCB4LCBpbnQgeSkKIHsKICNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJ
T05fQ0hFQ0soNCwgNiwgMCkKLSAgICBpbnQgaWQgPSBtX3RvdWNoUG9pbnRzLmNvdW50KCk7Cisg
ICAgaW50IGluZGV4ID0gbV90b3VjaFBvaW50cy5jb3VudCgpOworICAgIGludCBpZCA9IG1fdG91
Y2hQb2ludHMuaXNFbXB0eSgpID8gMCA6IG1fdG91Y2hQb2ludHMubGFzdCgpLmlkKCkgKyAxOwog
ICAgIFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50IHBvaW50KGlkKTsKICAgICBtX3RvdWNoUG9pbnRz
LmFwcGVuZChwb2ludCk7Ci0gICAgdXBkYXRlVG91Y2hQb2ludChpZCwgeCwgeSk7Ci0gICAgbV90
b3VjaFBvaW50c1tpZF0uc2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRQcmVzc2VkKTsKKyAgICB1cGRh
dGVUb3VjaFBvaW50KGluZGV4LCB4LCB5KTsKKyAgICBtX3RvdWNoUG9pbnRzW2luZGV4XS5zZXRT
dGF0ZShRdDo6VG91Y2hQb2ludFByZXNzZWQpOwogI2VuZGlmCiB9CiAKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49378</attachid>
            <date>2010-02-24 04:16:33 -0800</date>
            <delta_ts>2010-02-24 10:37:40 -0800</delta_ts>
            <desc>Patch and layout test changes.</desc>
            <filename>34585.txt</filename>
            <type>text/plain</type>
            <size>14327</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTE4NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDItMjQgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB0
YXJnZXQgZWxlbWVudCBvZiBhIFRvdWNoIHNob3VsZCBiZSB0aGUgdGFyZ2V0IHdoZXJlIHRoYXQg
dG91Y2ggb3JpZ2luYXRlZCwgbm90IHdoZXJlIGl0IGlzIG5vdy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NTg1CisKKyAgICAgICAgQ3VycmVudGx5
IHRoZSB0YXJnZXQgb2YgYSB0b3VjaCBpcyBzZXQgdG8gdGhlIHJlc3VsdGluZyBub2RlIG9mIHRo
ZSBoaXQgdGVzdCB3aGVyZSB0aGUgdG91Y2ggY3VycmVudGx5IGlzLiBUaGlzIGRvZXMgbm90IG1h
dGNoIHRoZSBiZWhhdmlvciBvZiBpUGhvbmUgb3IgQW5kcm9pZC4gVGhpcyBwYXRjaCB1c2VzIGEg
aGFzaG1hcCBvbiB0aGUgRXZlbnRIYW5kbGVyIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHRhcmdldCBl
bGVtZW50IHdoZW4gYSB0b3VjaCBpcyBmaXJzdCBzdGFydGVkLiBUaGlzIHRhcmdldCBpcyB0aGVu
IHVzZWQgYXMgdGhlIHRhcmdldCBmb3Igc3Vic2VxdWVudCB0b3VjaGVzIHdpdGggdGhlIHNhbWUg
aWQuIFRoaXMgbWF0Y2hlcyBvYnNlcnZlZCBiZWhhdmlvciBvbiBpUGhvbmUgYW5kIEFuZHJvaWQu
CisKKyAgICAgICAgVGVzdHM6CisgICAgICAgIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXRhcmdl
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtc2luZ2xlLXRv
dWNoLWV2ZW50cy5odG1sOiBVcGRhdGVkLgorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KTog
U3RvcmUgdGhlIG9yaWdpbmF0aW5nIHRhcmdldCBlbGVtZW50IG9mIGEgdG91Y2ggaW4gYSBoYXNo
bWFwIHNvIHRoYXQgd2UgY2FuIHJldXNlIHRoYXQgdGFyZ2V0IGZvciBmdXR1cmUgZXZlbnRzIGNh
dXNlZCBieSB0aGF0IHRvdWNoLiBUaGlzIG1hdGNoZXMgb2JzZXJ2ZWQgYmVoYXZpb3Igb24gaVBo
b25lIGFuZCBBbmRyb2lkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6IEFkZCBoYXNo
bWFwIGFzIGEgbWVtYmVyLgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5o
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50OjppZCk6IFN0b3JlIHRoZSB0
b3VjaCBwb2ludCBpZCBhcyB1bnNpZ25lZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QbGF0Zm9y
bVRvdWNoUG9pbnRRdC5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50
OjpQbGF0Zm9ybVRvdWNoUG9pbnQpOiBDYXN0IHBsYXRmb3JtIHRvdWNoIGlkIGZyb20gc2lnbmVk
IHRvIHVuc2lnbmVkLiBRdCBBUEkgZG9jcyBzdGF0ZSB0aGF0IGl0IHdpbGwgYWx3YXlzIGJlID49
IDAuCisKIDIwMTAtMDItMjMgIEdlb2ZmIEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShy
ZXZpc2lvbiA1NTE4NSkKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTgzLDcgKzI1ODMsMjAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRv
dWNoRXZlbnQoY29ucwogICAgICAgICBpbnQgYWRqdXN0ZWRQYWdlWCA9IGxyb3VuZGYocGFnZVBv
aW50LngoKSAvIG1fZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkpOwogICAgICAgICBpbnQgYWRqdXN0
ZWRQYWdlWSA9IGxyb3VuZGYocGFnZVBvaW50LnkoKSAvIG1fZnJhbWUtPnBhZ2Vab29tRmFjdG9y
KCkpOwogCi0gICAgICAgIFJlZlB0cjxUb3VjaD4gdG91Y2ggPSBUb3VjaDo6Y3JlYXRlKGRvYy0+
ZnJhbWUoKSwgdGFyZ2V0LCBwb2ludC5pZCgpLAorICAgICAgICAvLyBJbmNyZW1lbnQgdGhlIHBs
YXRmb3JtIHRvdWNoIGlkIGJ5IDEgdG8gYXZvaWQgc3RvcmluZyBhIGtleSBvZiAwIGluIHRoZSBo
YXNobWFwLgorICAgICAgICB1bnNpZ25lZCB0b3VjaFBvaW50VGFyZ2V0S2V5ID0gcG9pbnQuaWQo
KSArIDE7CisgICAgICAgIEV2ZW50VGFyZ2V0KiB0b3VjaFRhcmdldCA9IDA7CisgICAgICAgIGlm
IChwb2ludC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkKSB7Cisg
ICAgICAgICAgICBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHMuc2V0KHRvdWNoUG9pbnRU
YXJnZXRLZXksIHRhcmdldCk7CisgICAgICAgICAgICB0b3VjaFRhcmdldCA9IHRhcmdldDsKKyAg
ICAgICAgfSBlbHNlIGlmIChwb2ludC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91
Y2hSZWxlYXNlZCB8fCBwb2ludC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hD
YW5jZWxsZWQpCisgICAgICAgICAgICB0b3VjaFRhcmdldCA9IG1fb3JpZ2luYXRpbmdUb3VjaFBv
aW50VGFyZ2V0cy50YWtlKHRvdWNoUG9pbnRUYXJnZXRLZXkpLmdldCgpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICB0b3VjaFRhcmdldCA9IG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50VGFyZ2V0
cy5nZXQodG91Y2hQb2ludFRhcmdldEtleSkuZ2V0KCk7CisKKyAgICAgICAgQVNTRVJUKHRvdWNo
VGFyZ2V0KTsKKworICAgICAgICBSZWZQdHI8VG91Y2g+IHRvdWNoID0gVG91Y2g6OmNyZWF0ZShk
b2MtPmZyYW1lKCksIHRvdWNoVGFyZ2V0LCBwb2ludC5pZCgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludC5zY3JlZW5Qb3MoKS54KCksIHBvaW50LnNj
cmVlblBvcygpLnkoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWRqdXN0ZWRQYWdlWCwgYWRqdXN0ZWRQYWdlWSk7CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJ
KHJldmlzaW9uIDU1MTg1KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNywxMiArMzcsMTcgQEAKIGNsYXNzIE5TVmlldzsKICNlbmRpZgogCisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXRvbWljU3RyaW5nOwogY2xhc3MgQ2xpcGJv
YXJkOwogY2xhc3MgQ3Vyc29yOwogY2xhc3MgRXZlbnQ7CitjbGFzcyBFdmVudFRhcmdldDsKIGNs
YXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhpdFRlc3RSZXF1ZXN0OwpAQCAt
NDA4LDYgKzQxMyw4IEBAIHByaXZhdGU6CiAgICAgaW50IG1fYWN0aXZhdGlvbkV2ZW50TnVtYmVy
OwogI2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB0eXBlZGVmIEhhc2hNYXA8
aW50LCBSZWZQdHI8RXZlbnRUYXJnZXQ+ID4gVG91Y2hUYXJnZXRNYXA7CisgICAgVG91Y2hUYXJn
ZXRNYXAgbV9vcmlnaW5hdGluZ1RvdWNoUG9pbnRUYXJnZXRzOwogICAgIFJlZlB0cjxOb2RlPiBt
X3RvdWNoRXZlbnRUYXJnZXQ7CiAjZW5kaWYKIH07CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtVG91Y2hQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1Ub3VjaFBvaW50LmgJKHJldmlzaW9uIDU1MTg1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVRvdWNoUG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTMgKzUwLDEzIEBAIHB1Ymxp
YzoKICAgICBQbGF0Zm9ybVRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvcywgU3Rh
dGUpOwogI2VuZGlmCiAKLSAgICBpbnQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAg
dW5zaWduZWQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgU3RhdGUgc3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAgICAgSW50UG9pbnQgc2NyZWVuUG9zKCkgY29uc3Qg
eyByZXR1cm4gbV9zY3JlZW5Qb3M7IH0KICAgICBJbnRQb2ludCBwb3MoKSBjb25zdCB7IHJldHVy
biBtX3BvczsgfQogICAgIAogcHJpdmF0ZToKLSAgICBpbnQgbV9pZDsKKyAgICB1bnNpZ25lZCBt
X2lkOwogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgSW50UG9pbnQgbV9zY3JlZW5Qb3M7CiAgICAg
SW50UG9pbnQgbV9wb3M7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtVG91Y2hQ
b2ludFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtVG91
Y2hQb2ludFF0LmNwcAkocmV2aXNpb24gNTUxODUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L1Bs
YXRmb3JtVG91Y2hQb2ludFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBsYXRmb3JtVG91Y2hQb2ludDo6UGxhdGZvcm1Ub3VjaFBv
aW50KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50JiBwb2ludCkKIHsKLSAgICBtX2lkID0g
cG9pbnQuaWQoKTsKKyAgICAvLyBUaGUgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQgQVBJIHN0YXRl
cyB0aGF0IGlkcyB3aWxsIGJlID49IDAuCisgICAgbV9pZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihwb2ludC5pZCgpKTsKICAgICBzd2l0Y2ggKHBvaW50LnN0YXRlKCkpIHsKICAgICBjYXNlIFF0
OjpUb3VjaFBvaW50UmVsZWFzZWQ6IG1fc3RhdGUgPSBUb3VjaFJlbGVhc2VkOyBicmVhazsKICAg
ICBjYXNlIFF0OjpUb3VjaFBvaW50TW92ZWQ6IG1fc3RhdGUgPSBUb3VjaE1vdmVkOyBicmVhazsK
SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU1MTg1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDItMjQgIEJlbiBNdXJkb2NoICA8YmVu
bUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSB0YXJnZXQgZWxlbWVudCBvZiBhIFRvdWNoIHNob3VsZCBiZSB0aGUgdGFyZ2V0
IHdoZXJlIHRoYXQgdG91Y2ggb3JpZ2luYXRlZCwgbm90IHdoZXJlIGl0IGlzIG5vdy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NTg1CisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9FdmVudFNlbmRlclF0LmNwcDoKKyAgICAgICAgKEV2ZW50
U2VuZGVyOjphZGRUb3VjaFBvaW50KTogRml4IGEgYnVnIHdoZXJlIHRvdWNoIHBvaW50cyB3ZXJl
IG5vdCBiZWluZyBnaXZlbiB1bmlxdWUgaWRzLgorCiAyMDEwLTAyLTI0ICBTaGluaWNoaXJvIEhh
bWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9FdmVudFNlbmRlclF0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9FdmVudFNl
bmRlclF0LmNwcAkocmV2aXNpb24gNTUxODUpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9FdmVudFNlbmRlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDEyICsyODgsMTQg
QEAgdm9pZCBFdmVudFNlbmRlcjo6c2NoZWR1bGVBc3luY2hyb25vdXNDbAogCiB2b2lkIEV2ZW50
U2VuZGVyOjphZGRUb3VjaFBvaW50KGludCB4LCBpbnQgeSkKIHsKKwogI2lmIFFUX1ZFUlNJT04g
Pj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA2LCAwKQotICAgIGludCBpZCA9IG1fdG91Y2hQb2ludHMu
Y291bnQoKTsKKyAgICBpbnQgaW5kZXggPSBtX3RvdWNoUG9pbnRzLmNvdW50KCk7CisgICAgaW50
IGlkID0gbV90b3VjaFBvaW50cy5pc0VtcHR5KCkgPyAwIDogbV90b3VjaFBvaW50cy5sYXN0KCku
aWQoKSArIDE7CiAgICAgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQgcG9pbnQoaWQpOwogICAgIG1f
dG91Y2hQb2ludHMuYXBwZW5kKHBvaW50KTsKLSAgICB1cGRhdGVUb3VjaFBvaW50KGlkLCB4LCB5
KTsKLSAgICBtX3RvdWNoUG9pbnRzW2lkXS5zZXRTdGF0ZShRdDo6VG91Y2hQb2ludFByZXNzZWQp
OworICAgIHVwZGF0ZVRvdWNoUG9pbnQoaW5kZXgsIHgsIHkpOworICAgIG1fdG91Y2hQb2ludHNb
aW5kZXhdLnNldFN0YXRlKFF0OjpUb3VjaFBvaW50UHJlc3NlZCk7CiAjZW5kaWYKIH0KIApJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNTUxODUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMi0yNCAgQmVuIE11cmRvY2ggIDxiZW5tQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIHRhcmdldCBlbGVtZW50IG9mIGEgVG91Y2ggc2hvdWxkIGJlIHRoZSB0YXJnZXQgd2hl
cmUgdGhhdCB0b3VjaCBvcmlnaW5hdGVkLCBub3Qgd2hlcmUgaXQgaXMgbm93LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ1ODUKKworICAgICAgICAq
IGZhc3QvZXZlbnRzL3RvdWNoL2Jhc2ljLXNpbmdsZS10b3VjaC1ldmVudHMtZXhwZWN0ZWQudHh0
OiBVcGRhdGUgZXhwZWN0ZWQgdGFyZ2V0IGVsZW1lbnQuCisgICAgICAgICogZmFzdC9ldmVudHMv
dG91Y2gvc2NyaXB0LXRlc3RzL2Jhc2ljLXNpbmdsZS10b3VjaC1ldmVudHMuanM6IGRpdHRvLgor
ICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC10YXJnZXQuanM6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXRhcmdldC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXRhcmdldC5o
dG1sOiBBZGRlZC4KKwogMjAxMC0wMi0yMyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFNpbW9uIEhhdXNtYW5uLgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtc2luZ2xlLXRvdWNoLWV2ZW50
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvYmFzaWMtc2luZ2xlLXRvdWNoLWV2ZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDU1MTg1
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtc2luZ2xlLXRvdWNoLWV2
ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgUEFTUyBs
YXN0RXZlbnQuY2hhbmdlZFRvdWNoZXMubGVuZ3RoIGlzIAogUEFTUyBsYXN0RXZlbnQudGFyZ2V0
VG91Y2hlcy5sZW5ndGggaXMgMAogUEFTUyBsYXN0RXZlbnQucGFnZVggaXMgMAogUEFTUyBsYXN0
RXZlbnQucGFnZVkgaXMgMAotUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS50YXJnZXQudGFnTmFt
ZSBpcyAiSFRNTCIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LnRhZ05hbWUgaXMg
IkRJViIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtdGFyZ2V0LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC10
YXJnZXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdG91Y2gvdG91Y2gtdGFyZ2V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyNSBAQAorVGVzdHMgdGhhdCB0aGUgdGFyZ2V0IG9mIHRvdWNoZXMgbWF0Y2ggdGhlIGVsZW1l
bnQgd2hlcmUgdGhlIGV2ZW50IG9yaWdpbmF0ZWQsIG5vdCB3aGVyZSB0aGUgdG91Y2ggaXMgY3Vy
cmVudGx5IG9jY3VycmluZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFT
UyBldmVudC50eXBlIGlzICJ0b3VjaHN0YXJ0IgorUEFTUyBldmVudC50b3VjaGVzWzBdLnRhcmdl
dC5pZCBpcyAidGFyZ2V0QSIKK1BBU1MgZXZlbnQudG91Y2hlc1sxXS50YXJnZXQuaWQgaXMgInRh
cmdldEIiCitQQVNTIGV2ZW50LnR5cGUgaXMgInRvdWNobW92ZSIKK1BBU1MgZXZlbnQudG91Y2hl
c1swXS50YXJnZXQuaWQgaXMgInRhcmdldEEiCitQQVNTIGV2ZW50LnRvdWNoZXNbMV0udGFyZ2V0
LmlkIGlzICJ0YXJnZXRCIgorUEFTUyBldmVudC50eXBlIGlzICJ0b3VjaG1vdmUiCitQQVNTIGV2
ZW50LnRvdWNoZXNbMF0udGFyZ2V0LmlkIGlzICJ0YXJnZXRBIgorUEFTUyBldmVudC50b3VjaGVz
WzFdLnRhcmdldC5pZCBpcyAidGFyZ2V0QiIKK1BBU1MgZXZlbnQudHlwZSBpcyAidG91Y2hzdGFy
dCIKK1BBU1MgZXZlbnQudG91Y2hlc1swXS50YXJnZXQuaWQgaXMgInRhcmdldEIiCitQQVNTIGV2
ZW50LnRvdWNoZXNbMV0udGFyZ2V0LmlkIGlzICJ0YXJnZXRBIgorUEFTUyBldmVudC50eXBlIGlz
ICJ0b3VjaG1vdmUiCitQQVNTIGV2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LmlkIGlzICJ0YXJnZXRC
IgorUEFTUyBldmVudC50b3VjaGVzWzFdLnRhcmdldC5pZCBpcyAidGFyZ2V0QSIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXRhcmdldC5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
dGFyZ2V0c0RpdiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvdG91Y2gtdGFyZ2V0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy9iYXNp
Yy1zaW5nbGUtdG91Y2gtZXZlbnRzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy9iYXNpYy1zaW5nbGUtdG91Y2gtZXZlbnRzLmpzCShy
ZXZpc2lvbiA1NTE4NSkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10
ZXN0cy9iYXNpYy1zaW5nbGUtdG91Y2gtZXZlbnRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3
ICs4MCw3IEBAIGZ1bmN0aW9uIHZlcmlmeVRvdWNoKHdoaWNoKSB7CiAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICB2ZXJpZnlUb3VjaEV2ZW50KCJ0b3VjaG1vdmUi
LCAxLCAxLCAwKTsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGFzdEV2ZW50
LnRvdWNoZXNbMF0udGFyZ2V0LnRhZ05hbWUiLCAiSFRNTCIpOworICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJsYXN0RXZlbnQudG91Y2hlc1swXS50YXJnZXQudGFnTmFtZSIsICJE
SVYiKTsKICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgZGVmYXVsdDogdGVzdEZhaWxlZCgiV3Jv
bmcgbnVtYmVyIG9mIHRvdWNoIGV2ZW50cyEgKCIgKyB3aGljaCArICIpIik7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvdG91Y2gtdGFyZ2V0LmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90
b3VjaC10YXJnZXQuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9zY3JpcHQtdGVzdHMvdG91Y2gtdGFyZ2V0LmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDk3IEBACit2YXIgZGl2MSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworZGl2MS5p
ZCA9ICJ0YXJnZXRBIjsKK2RpdjEuc3R5bGUud2lkdGggPSAiMTAwcHgiOworZGl2MS5zdHlsZS5o
ZWlnaHQgPSAiMTAwcHgiOworZGl2MS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiYmx1ZSI7CisK
K3ZhciBkaXYyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitkaXYyLmlkID0gInRh
cmdldEIiOworZGl2Mi5zdHlsZS53aWR0aCA9ICIxMDBweCI7CitkaXYyLnN0eWxlLmhlaWdodCA9
ICIxMDBweCI7CitkaXYyLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJncmVlbiI7CisKK3ZhciB0
b3VjaFN0YXJ0Q291bnQgPSAwOwordmFyIHRvdWNoTW92ZUNvdW50ID0gMDsKKworZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3RhcmdldHNEaXYnKS5hcHBlbmRDaGlsZChkaXYxKTsKK2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0YXJnZXRzRGl2JykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnYnInKSk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0c0RpdicpLmFw
cGVuZENoaWxkKGRpdjIpOworCitmdW5jdGlvbiB0b3VjaFN0YXJ0SGFuZGxlcigpCit7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC50eXBlJywgJ3RvdWNoc3RhcnQnKTsKKyAgICBz
d2l0Y2ggKHRvdWNoU3RhcnRDb3VudCkgeworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LmlkJywgZGl2MS5p
ZCk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnRvdWNoZXNbMV0u
dGFyZ2V0LmlkJywgZGl2Mi5pZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAx
OgorICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC50b3VjaGVzWzBdLnRh
cmdldC5pZCcsIGRpdjIuaWQpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdl
dmVudC50b3VjaGVzWzFdLnRhcmdldC5pZCcsIGRpdjEuaWQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgdG91Y2hTdGFydENvdW50Kys7Cit9CisKK2Z1bmN0aW9uIHRvdWNoTW92
ZUhhbmRsZXIoKQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXZlbnQudHlwZScsICd0
b3VjaG1vdmUnKTsKKyAgICBzd2l0Y2ggKHRvdWNoTW92ZUNvdW50KSB7CisgICAgICAgIGNhc2Ug
MDoKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdl
dmVudC50b3VjaGVzWzBdLnRhcmdldC5pZCcsIGRpdjEuaWQpOworICAgICAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdldmVudC50b3VjaGVzWzFdLnRhcmdldC5pZCcsIGRpdjIuaWQpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygnZXZlbnQudG91Y2hlc1swXS50YXJnZXQuaWQnLCBkaXYyLmlkKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXZlbnQudG91Y2hlc1sxXS50YXJnZXQu
aWQnLCBkaXYxLmlkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICgrK3Rv
dWNoTW92ZUNvdW50ID09IDMpCisgICAgeworICAgICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAg
IGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgfQorfQorCitkaXYxLmFkZEV2ZW50TGlzdGVu
ZXIoInRvdWNoc3RhcnQiLCB0b3VjaFN0YXJ0SGFuZGxlciwgZmFsc2UpOworZGl2MS5hZGRFdmVu
dExpc3RlbmVyKCJ0b3VjaG1vdmUiLCB0b3VjaE1vdmVIYW5kbGVyLCBmYWxzZSk7CisKK2RpdjIu
YWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIHRvdWNoU3RhcnRIYW5kbGVyLCBmYWxzZSk7
CitkaXYyLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIHRvdWNoTW92ZUhhbmRsZXIsIGZh
bHNlKTsKKworZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdGhlIHRhcmdldCBvZiB0b3VjaGVzIG1h
dGNoIHRoZSBlbGVtZW50IHdoZXJlIHRoZSBldmVudCBvcmlnaW5hdGVkLCBub3Qgd2hlcmUgdGhl
IHRvdWNoIGlzIGN1cnJlbnRseSBvY2N1cnJpbmcuIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Cit9CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBldmVudFNlbmRlci5jbGVhclRv
dWNoUG9pbnRzKCk7CisgICAgZXZlbnRTZW5kZXIuYWRkVG91Y2hQb2ludCg1MCwgMTUwKTsKKyAg
ICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50KDUwLCAyNTApOworICAgIGV2ZW50U2VuZGVyLnRv
dWNoU3RhcnQoKTsKKworICAgIGV2ZW50U2VuZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgNTAsIDI1
MCk7CisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgxLCA1MCwgMTUwKTsKKyAgICBl
dmVudFNlbmRlci50b3VjaE1vdmUoKTsKKworICAgIGV2ZW50U2VuZGVyLnVwZGF0ZVRvdWNoUG9p
bnQoMCwgMTAwMCwgMTAwMCk7CisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgxLCAx
MDAwLCAxMDAwKTsKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKworICAgIGV2ZW50U2Vu
ZGVyLnJlbGVhc2VUb3VjaFBvaW50KDApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoRW5kKCk7CisK
KyAgICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50KDUwLDE1MCk7CisgICAgZXZlbnRTZW5kZXIu
dG91Y2hTdGFydCgpOworCisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCA1MDAs
IDUwMCk7CisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgxLCA1MDAsIDUwMCk7Cisg
ICAgZXZlbnRTZW5kZXIudG91Y2hNb3ZlKCk7Cit9IGVsc2UKKyAgICBkZWJ1ZygnVGhpcyB0ZXN0
IHJlcXVpcmVzIERSVC4nKTsKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49409</attachid>
            <date>2010-02-24 10:37:40 -0800</date>
            <delta_ts>2010-02-24 10:56:14 -0800</delta_ts>
            <desc>Proposed patch and test.</desc>
            <filename>34585-1.txt</filename>
            <type>text/plain</type>
            <size>14347</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTE4NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDItMjQgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB0
YXJnZXQgZWxlbWVudCBvZiBhIFRvdWNoIHNob3VsZCBiZSB0aGUgdGFyZ2V0IHdoZXJlIHRoYXQg
dG91Y2ggb3JpZ2luYXRlZCwgbm90IHdoZXJlIGl0IGlzIG5vdy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NTg1CisKKyAgICAgICAgQ3VycmVudGx5
IHRoZSB0YXJnZXQgb2YgYSB0b3VjaCBpcyBzZXQgdG8gdGhlIHJlc3VsdGluZyBub2RlIG9mIHRo
ZSBoaXQgdGVzdCB3aGVyZSB0aGUgdG91Y2ggY3VycmVudGx5IGlzLiBUaGlzIGRvZXMgbm90IG1h
dGNoIHRoZSBiZWhhdmlvciBvZiBpUGhvbmUgb3IgQW5kcm9pZC4gVGhpcyBwYXRjaCB1c2VzIGEg
aGFzaG1hcCBvbiB0aGUgRXZlbnRIYW5kbGVyIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHRhcmdldCBl
bGVtZW50IHdoZW4gYSB0b3VjaCBpcyBmaXJzdCBzdGFydGVkLiBUaGlzIHRhcmdldCBpcyB0aGVu
IHVzZWQgYXMgdGhlIHRhcmdldCBmb3Igc3Vic2VxdWVudCB0b3VjaGVzIHdpdGggdGhlIHNhbWUg
aWQuIFRoaXMgbWF0Y2hlcyBvYnNlcnZlZCBiZWhhdmlvciBvbiBpUGhvbmUgYW5kIEFuZHJvaWQu
CisKKyAgICAgICAgVGVzdHM6CisgICAgICAgIGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXRhcmdl
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtc2luZ2xlLXRv
dWNoLWV2ZW50cy5odG1sOiBVcGRhdGVkLgorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KTog
U3RvcmUgdGhlIG9yaWdpbmF0aW5nIHRhcmdldCBlbGVtZW50IG9mIGEgdG91Y2ggaW4gYSBoYXNo
bWFwIHNvIHRoYXQgd2UgY2FuIHJldXNlIHRoYXQgdGFyZ2V0IGZvciBmdXR1cmUgZXZlbnRzIGNh
dXNlZCBieSB0aGF0IHRvdWNoLiBUaGlzIG1hdGNoZXMgb2JzZXJ2ZWQgYmVoYXZpb3Igb24gaVBo
b25lIGFuZCBBbmRyb2lkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6IEFkZCBoYXNo
bWFwIGFzIGEgbWVtYmVyLgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5o
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50OjppZCk6IFN0b3JlIHRoZSB0
b3VjaCBwb2ludCBpZCBhcyB1bnNpZ25lZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QbGF0Zm9y
bVRvdWNoUG9pbnRRdC5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50
OjpQbGF0Zm9ybVRvdWNoUG9pbnQpOiBDYXN0IHBsYXRmb3JtIHRvdWNoIGlkIGZyb20gc2lnbmVk
IHRvIHVuc2lnbmVkLiBRdCBBUEkgZG9jcyBzdGF0ZSB0aGF0IGl0IHdpbGwgYWx3YXlzIGJlID49
IDAuCisKIDIwMTAtMDItMjMgIEdlb2ZmIEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShy
ZXZpc2lvbiA1NTE4NSkKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTgzLDcgKzI1ODMsMjEgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRv
dWNoRXZlbnQoY29ucwogICAgICAgICBpbnQgYWRqdXN0ZWRQYWdlWCA9IGxyb3VuZGYocGFnZVBv
aW50LngoKSAvIG1fZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkpOwogICAgICAgICBpbnQgYWRqdXN0
ZWRQYWdlWSA9IGxyb3VuZGYocGFnZVBvaW50LnkoKSAvIG1fZnJhbWUtPnBhZ2Vab29tRmFjdG9y
KCkpOwogCi0gICAgICAgIFJlZlB0cjxUb3VjaD4gdG91Y2ggPSBUb3VjaDo6Y3JlYXRlKGRvYy0+
ZnJhbWUoKSwgdGFyZ2V0LCBwb2ludC5pZCgpLAorICAgICAgICAvLyBJbmNyZW1lbnQgdGhlIHBs
YXRmb3JtIHRvdWNoIGlkIGJ5IDEgdG8gYXZvaWQgc3RvcmluZyBhIGtleSBvZiAwIGluIHRoZSBo
YXNobWFwLgorICAgICAgICB1bnNpZ25lZCB0b3VjaFBvaW50VGFyZ2V0S2V5ID0gcG9pbnQuaWQo
KSArIDE7CisgICAgICAgIEV2ZW50VGFyZ2V0KiB0b3VjaFRhcmdldCA9IDA7CisgICAgICAgIGlm
IChwb2ludC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkKSB7Cisg
ICAgICAgICAgICBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHMuc2V0KHRvdWNoUG9pbnRU
YXJnZXRLZXksIHRhcmdldCk7CisgICAgICAgICAgICB0b3VjaFRhcmdldCA9IHRhcmdldDsKKyAg
ICAgICAgfSBlbHNlIGlmIChwb2ludC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91
Y2hSZWxlYXNlZCB8fCBwb2ludC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hD
YW5jZWxsZWQpCisgICAgICAgICAgICB0b3VjaFRhcmdldCA9IG1fb3JpZ2luYXRpbmdUb3VjaFBv
aW50VGFyZ2V0cy50YWtlKHRvdWNoUG9pbnRUYXJnZXRLZXkpLmdldCgpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICB0b3VjaFRhcmdldCA9IG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50VGFyZ2V0
cy5nZXQodG91Y2hQb2ludFRhcmdldEtleSkuZ2V0KCk7CisKKyAgICAgICAgaWYgKCF0b3VjaFRh
cmdldCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFJlZlB0cjxUb3VjaD4gdG91
Y2ggPSBUb3VjaDo6Y3JlYXRlKGRvYy0+ZnJhbWUoKSwgdG91Y2hUYXJnZXQsIHBvaW50LmlkKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50LnNjcmVl
blBvcygpLngoKSwgcG9pbnQuc2NyZWVuUG9zKCkueSgpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFBhZ2VYLCBhZGp1c3RlZFBhZ2VZKTsKIApJ
bmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24gNTUxODUpCisrKyBXZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEyICszNywxNyBAQAogY2xhc3MgTlNW
aWV3OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdG9taWNT
dHJpbmc7CiBjbGFzcyBDbGlwYm9hcmQ7CiBjbGFzcyBDdXJzb3I7CiBjbGFzcyBFdmVudDsKK2Ns
YXNzIEV2ZW50VGFyZ2V0OwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZyYW1lOwogY2xhc3Mg
SGl0VGVzdFJlcXVlc3Q7CkBAIC00MDgsNiArNDEzLDggQEAgcHJpdmF0ZToKICAgICBpbnQgbV9h
Y3RpdmF0aW9uRXZlbnROdW1iZXI7CiAjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
ICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxFdmVudFRhcmdldD4gPiBUb3VjaFRhcmdl
dE1hcDsKKyAgICBUb3VjaFRhcmdldE1hcCBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHM7
CiAgICAgUmVmUHRyPE5vZGU+IG1fdG91Y2hFdmVudFRhcmdldDsKICNlbmRpZgogfTsKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaAkocmV2aXNpb24gNTUxODUpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MCwxMyArNTAsMTMgQEAgcHVibGljOgogICAgIFBsYXRmb3JtVG91Y2hQb2ludChjb25zdCBJbnRQ
b2ludCYgd2luZG93UG9zLCBTdGF0ZSk7CiAjZW5kaWYKIAotICAgIGludCBpZCgpIGNvbnN0IHsg
cmV0dXJuIG1faWQ7IH0KKyAgICB1bnNpZ25lZCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0K
ICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KICAgICBJbnRQb2lu
dCBzY3JlZW5Qb3MoKSBjb25zdCB7IHJldHVybiBtX3NjcmVlblBvczsgfQogICAgIEludFBvaW50
IHBvcygpIGNvbnN0IHsgcmV0dXJuIG1fcG9zOyB9CiAgICAgCiBwcml2YXRlOgotICAgIGludCBt
X2lkOworICAgIHVuc2lnbmVkIG1faWQ7CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBJbnRQb2lu
dCBtX3NjcmVlblBvczsKICAgICBJbnRQb2ludCBtX3BvczsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vcXQvUGxhdGZvcm1Ub3VjaFBvaW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vcXQvUGxhdGZvcm1Ub3VjaFBvaW50UXQuY3BwCShyZXZpc2lvbiA1NTE4NSkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaFBvaW50UXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw3ICsyOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGxhdGZvcm1Ub3VjaFBv
aW50OjpQbGF0Zm9ybVRvdWNoUG9pbnQoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIHBv
aW50KQogewotICAgIG1faWQgPSBwb2ludC5pZCgpOworICAgIC8vIFRoZSBRVG91Y2hFdmVudDo6
VG91Y2hQb2ludCBBUEkgc3RhdGVzIHRoYXQgaWRzIHdpbGwgYmUgPj0gMC4KKyAgICBtX2lkID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvaW50LmlkKCkpOwogICAgIHN3aXRjaCAocG9pbnQuc3Rh
dGUoKSkgewogICAgIGNhc2UgUXQ6OlRvdWNoUG9pbnRSZWxlYXNlZDogbV9zdGF0ZSA9IFRvdWNo
UmVsZWFzZWQ7IGJyZWFrOwogICAgIGNhc2UgUXQ6OlRvdWNoUG9pbnRNb3ZlZDogbV9zdGF0ZSA9
IFRvdWNoTW92ZWQ7IGJyZWFrOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNTUxODUpCisrKyBXZWJLaXRU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wMi0y
NCAgQmVuIE11cmRvY2ggIDxiZW5tQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHRhcmdldCBlbGVtZW50IG9mIGEgVG91Y2gg
c2hvdWxkIGJlIHRoZSB0YXJnZXQgd2hlcmUgdGhhdCB0b3VjaCBvcmlnaW5hdGVkLCBub3Qgd2hl
cmUgaXQgaXMgbm93LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzQ1ODUKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQu
Y3BwOgorICAgICAgICAoRXZlbnRTZW5kZXI6OmFkZFRvdWNoUG9pbnQpOiBGaXggYSBidWcgd2hl
cmUgdG91Y2ggcG9pbnRzIHdlcmUgbm90IGJlaW5nIGdpdmVuIHVuaXF1ZSBpZHMuCisKIDIwMTAt
MDItMjQgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwCShyZXZpc2lvbiA1NTE4NSkKKysrIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yODgsMTIgKzI4OCwxNCBAQCB2b2lkIEV2ZW50U2VuZGVyOjpzY2hlZHVsZUFzeW5jaHJv
bm91c0NsCiAKIHZvaWQgRXZlbnRTZW5kZXI6OmFkZFRvdWNoUG9pbnQoaW50IHgsIGludCB5KQog
eworCiAjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDYsIDApCi0gICAgaW50
IGlkID0gbV90b3VjaFBvaW50cy5jb3VudCgpOworICAgIGludCBpbmRleCA9IG1fdG91Y2hQb2lu
dHMuY291bnQoKTsKKyAgICBpbnQgaWQgPSBtX3RvdWNoUG9pbnRzLmlzRW1wdHkoKSA/IDAgOiBt
X3RvdWNoUG9pbnRzLmxhc3QoKS5pZCgpICsgMTsKICAgICBRVG91Y2hFdmVudDo6VG91Y2hQb2lu
dCBwb2ludChpZCk7CiAgICAgbV90b3VjaFBvaW50cy5hcHBlbmQocG9pbnQpOwotICAgIHVwZGF0
ZVRvdWNoUG9pbnQoaWQsIHgsIHkpOwotICAgIG1fdG91Y2hQb2ludHNbaWRdLnNldFN0YXRlKFF0
OjpUb3VjaFBvaW50UHJlc3NlZCk7CisgICAgdXBkYXRlVG91Y2hQb2ludChpbmRleCwgeCwgeSk7
CisgICAgbV90b3VjaFBvaW50c1tpbmRleF0uc2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRQcmVzc2Vk
KTsKICNlbmRpZgogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NTE4NSkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTAyLTI0ICBC
ZW4gTXVyZG9jaCAgPGJlbm1AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgdGFyZ2V0IGVsZW1lbnQgb2YgYSBUb3VjaCBzaG91
bGQgYmUgdGhlIHRhcmdldCB3aGVyZSB0aGF0IHRvdWNoIG9yaWdpbmF0ZWQsIG5vdCB3aGVyZSBp
dCBpcyBub3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNDU4NQorCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtc2luZ2xlLXRvdWNo
LWV2ZW50cy1leHBlY3RlZC50eHQ6IFVwZGF0ZSBleHBlY3RlZCB0YXJnZXQgZWxlbWVudC4KKyAg
ICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvYmFzaWMtc2luZ2xlLXRvdWNo
LWV2ZW50cy5qczogZGl0dG8uCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRl
c3RzL3RvdWNoLXRhcmdldC5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gv
dG91Y2gtdGFyZ2V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMv
dG91Y2gvdG91Y2gtdGFyZ2V0Lmh0bWw6IEFkZGVkLgorCiAyMDEwLTAyLTIzICBDc2FiYSBPc3p0
cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkg
U2ltb24gSGF1c21hbm4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9iYXNp
Yy1zaW5nbGUtdG91Y2gtZXZlbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9iYXNpYy1zaW5nbGUtdG91Y2gtZXZlbnRzLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gNTUxODUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9i
YXNpYy1zaW5nbGUtdG91Y2gtZXZlbnRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
NjcsNyArNjcsNyBAQCBQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggaXMgCiBQ
QVNTIGxhc3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAwCiBQQVNTIGxhc3RFdmVudC5w
YWdlWCBpcyAwCiBQQVNTIGxhc3RFdmVudC5wYWdlWSBpcyAwCi1QQVNTIGxhc3RFdmVudC50b3Vj
aGVzWzBdLnRhcmdldC50YWdOYW1lIGlzICJIVE1MIgorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1sw
XS50YXJnZXQudGFnTmFtZSBpcyAiRElWIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90
b3VjaC10YXJnZXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL3RvdWNoLXRhcmdldC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACitUZXN0cyB0aGF0IHRoZSB0YXJnZXQgb2YgdG91
Y2hlcyBtYXRjaCB0aGUgZWxlbWVudCB3aGVyZSB0aGUgZXZlbnQgb3JpZ2luYXRlZCwgbm90IHdo
ZXJlIHRoZSB0b3VjaCBpcyBjdXJyZW50bHkgb2NjdXJyaW5nLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworCitQQVNTIGV2ZW50LnR5cGUgaXMgInRvdWNoc3RhcnQiCitQQVNTIGV2
ZW50LnRvdWNoZXNbMF0udGFyZ2V0LmlkIGlzICJ0YXJnZXRBIgorUEFTUyBldmVudC50b3VjaGVz
WzFdLnRhcmdldC5pZCBpcyAidGFyZ2V0QiIKK1BBU1MgZXZlbnQudHlwZSBpcyAidG91Y2htb3Zl
IgorUEFTUyBldmVudC50b3VjaGVzWzBdLnRhcmdldC5pZCBpcyAidGFyZ2V0QSIKK1BBU1MgZXZl
bnQudG91Y2hlc1sxXS50YXJnZXQuaWQgaXMgInRhcmdldEIiCitQQVNTIGV2ZW50LnR5cGUgaXMg
InRvdWNobW92ZSIKK1BBU1MgZXZlbnQudG91Y2hlc1swXS50YXJnZXQuaWQgaXMgInRhcmdldEEi
CitQQVNTIGV2ZW50LnRvdWNoZXNbMV0udGFyZ2V0LmlkIGlzICJ0YXJnZXRCIgorUEFTUyBldmVu
dC50eXBlIGlzICJ0b3VjaHN0YXJ0IgorUEFTUyBldmVudC50b3VjaGVzWzBdLnRhcmdldC5pZCBp
cyAidGFyZ2V0QiIKK1BBU1MgZXZlbnQudG91Y2hlc1sxXS50YXJnZXQuaWQgaXMgInRhcmdldEEi
CitQQVNTIGV2ZW50LnR5cGUgaXMgInRvdWNobW92ZSIKK1BBU1MgZXZlbnQudG91Y2hlc1swXS50
YXJnZXQuaWQgaXMgInRhcmdldEIiCitQQVNTIGV2ZW50LnRvdWNoZXNbMV0udGFyZ2V0LmlkIGlz
ICJ0YXJnZXRBIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXRhcmdldC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXRh
cmdldC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gv
dG91Y2gtdGFyZ2V0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJ0YXJnZXRzRGl2Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy90b3VjaC10YXJnZXQuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvc2NyaXB0LXRlc3RzL2Jhc2ljLXNpbmdsZS10b3VjaC1ldmVudHMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL2Jhc2ljLXNpbmds
ZS10b3VjaC1ldmVudHMuanMJKHJldmlzaW9uIDU1MTg1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL2Jhc2ljLXNpbmdsZS10b3VjaC1ldmVudHMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgZnVuY3Rpb24gdmVyaWZ5VG91Y2god2hpY2gp
IHsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgIHZlcmlmeVRv
dWNoRXZlbnQoInRvdWNobW92ZSIsIDEsIDEsIDApOwotICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJsYXN0RXZlbnQudG91Y2hlc1swXS50YXJnZXQudGFnTmFtZSIsICJIVE1MIik7
CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxhc3RFdmVudC50b3VjaGVzWzBd
LnRhcmdldC50YWdOYW1lIiwgIkRJViIpOwogICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZh
dWx0OiB0ZXN0RmFpbGVkKCJXcm9uZyBudW1iZXIgb2YgdG91Y2ggZXZlbnRzISAoIiArIHdoaWNo
ICsgIikiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0
cy90b3VjaC10YXJnZXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvc2NyaXB0LXRlc3RzL3RvdWNoLXRhcmdldC5qcwkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC10YXJnZXQuanMJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsOTcgQEAKK3ZhciBkaXYxID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CitkaXYxLmlkID0gInRhcmdldEEiOworZGl2MS5zdHlsZS53aWR0aCA9ICIx
MDBweCI7CitkaXYxLnN0eWxlLmhlaWdodCA9ICIxMDBweCI7CitkaXYxLnN0eWxlLmJhY2tncm91
bmRDb2xvciA9ICJibHVlIjsKKwordmFyIGRpdjIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKK2RpdjIuaWQgPSAidGFyZ2V0QiI7CitkaXYyLnN0eWxlLndpZHRoID0gIjEwMHB4IjsK
K2RpdjIuc3R5bGUuaGVpZ2h0ID0gIjEwMHB4IjsKK2RpdjIuc3R5bGUuYmFja2dyb3VuZENvbG9y
ID0gImdyZWVuIjsKKwordmFyIHRvdWNoU3RhcnRDb3VudCA9IDA7Cit2YXIgdG91Y2hNb3ZlQ291
bnQgPSAwOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0c0RpdicpLmFwcGVuZENo
aWxkKGRpdjEpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldHNEaXYnKS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpKTsKK2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd0YXJnZXRzRGl2JykuYXBwZW5kQ2hpbGQoZGl2Mik7CisKK2Z1bmN0aW9uIHRvdWNoU3Rh
cnRIYW5kbGVyKCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnR5cGUnLCAn
dG91Y2hzdGFydCcpOworICAgIHN3aXRjaCAodG91Y2hTdGFydENvdW50KSB7CisgICAgICAgIGNh
c2UgMDoKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXZlbnQudG91Y2hlc1sw
XS50YXJnZXQuaWQnLCBkaXYxLmlkKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnZXZlbnQudG91Y2hlc1sxXS50YXJnZXQuaWQnLCBkaXYyLmlkKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2V2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LmlkJywgZGl2Mi5pZCk7CisgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnRvdWNoZXNbMV0udGFyZ2V0LmlkJywgZGl2MS5pZCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICB0b3VjaFN0YXJ0Q291bnQrKzsKK30K
KworZnVuY3Rpb24gdG91Y2hNb3ZlSGFuZGxlcigpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdldmVudC50eXBlJywgJ3RvdWNobW92ZScpOworICAgIHN3aXRjaCAodG91Y2hNb3ZlQ291
bnQpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LmlkJywgZGl2MS5pZCk7
CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnRvdWNoZXNbMV0udGFy
Z2V0LmlkJywgZGl2Mi5pZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgor
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC50b3VjaGVzWzBdLnRhcmdl
dC5pZCcsIGRpdjIuaWQpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVu
dC50b3VjaGVzWzFdLnRhcmdldC5pZCcsIGRpdjEuaWQpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgaWYgKCsrdG91Y2hNb3ZlQ291bnQgPT0gMykKKyAgICB7CisgICAgICAgIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICB9Cit9CisK
K2RpdjEuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIHRvdWNoU3RhcnRIYW5kbGVyLCBm
YWxzZSk7CitkaXYxLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIHRvdWNoTW92ZUhhbmRs
ZXIsIGZhbHNlKTsKKworZGl2Mi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgdG91Y2hT
dGFydEhhbmRsZXIsIGZhbHNlKTsKK2RpdjIuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwg
dG91Y2hNb3ZlSGFuZGxlciwgZmFsc2UpOworCitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB0aGUg
dGFyZ2V0IG9mIHRvdWNoZXMgbWF0Y2ggdGhlIGVsZW1lbnQgd2hlcmUgdGhlIGV2ZW50IG9yaWdp
bmF0ZWQsIG5vdCB3aGVyZSB0aGUgdG91Y2ggaXMgY3VycmVudGx5IG9jY3VycmluZy4iKTsKKwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
IGV2ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICBldmVudFNlbmRlci5hZGRUb3Vj
aFBvaW50KDUwLCAxNTApOworICAgIGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQoNTAsIDI1MCk7
CisgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOworCisgICAgZXZlbnRTZW5kZXIudXBkYXRl
VG91Y2hQb2ludCgwLCA1MCwgMjUwKTsKKyAgICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBvaW50
KDEsIDUwLCAxNTApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworCisgICAgZXZlbnRT
ZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCAxMDAwLCAxMDAwKTsKKyAgICBldmVudFNlbmRlci51
cGRhdGVUb3VjaFBvaW50KDEsIDEwMDAsIDEwMDApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92
ZSgpOworCisgICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7CisgICAgZXZlbnRT
ZW5kZXIudG91Y2hFbmQoKTsKKworICAgIGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQoNTAsMTUw
KTsKKyAgICBldmVudFNlbmRlci50b3VjaFN0YXJ0KCk7CisKKyAgICBldmVudFNlbmRlci51cGRh
dGVUb3VjaFBvaW50KDAsIDUwMCwgNTAwKTsKKyAgICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBv
aW50KDEsIDUwMCwgNTAwKTsKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKK30gZWxzZQor
ICAgIGRlYnVnKCdUaGlzIHRlc3QgcmVxdWlyZXMgRFJULicpOworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49412</attachid>
            <date>2010-02-24 10:56:14 -0800</date>
            <delta_ts>2010-02-25 02:41:34 -0800</delta_ts>
            <desc>Patch (line wrapped Changelogs)</desc>
            <filename>34585-2.txt</filename>
            <type>text/plain</type>
            <size>14413</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTE4NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMDItMjQgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB0
YXJnZXQgZWxlbWVudCBvZiBhIFRvdWNoIHNob3VsZCBiZSB0aGUgdGFyZ2V0IHdoZXJlIHRoYXQg
dG91Y2ggb3JpZ2luYXRlZCwgbm90IHdoZXJlIGl0IGlzIG5vdy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NTg1CisKKyAgICAgICAgQ3VycmVudGx5
IHRoZSB0YXJnZXQgb2YgYSB0b3VjaCBpcyBzZXQgdG8gdGhlIHJlc3VsdGluZyBub2RlIG9mIHRo
ZSBoaXQgdGVzdCB3aGVyZSB0aGUgdG91Y2ggY3VycmVudGx5CisgICAgICAgIGlzLiBUaGlzIGRv
ZXMgbm90IG1hdGNoIHRoZSBiZWhhdmlvciBvZiBpUGhvbmUgb3IgQW5kcm9pZC4gVGhpcyBwYXRj
aCB1c2VzIGEgaGFzaG1hcCBvbiB0aGUgRXZlbnRIYW5kbGVyCisgICAgICAgIHRvIGtlZXAgdHJh
Y2sgb2YgdGhlIHRhcmdldCBlbGVtZW50IHdoZW4gYSB0b3VjaCBpcyBmaXJzdCBzdGFydGVkLiBU
aGlzIHRhcmdldCBpcyB0aGVuIHVzZWQgYXMgdGhlIHRhcmdldAorICAgICAgICBmb3Igc3Vic2Vx
dWVudCB0b3VjaGVzIHdpdGggdGhlIHNhbWUgaWQuIFRoaXMgbWF0Y2hlcyBvYnNlcnZlZCBiZWhh
dmlvciBvbiBpUGhvbmUgYW5kIEFuZHJvaWQuCisKKyAgICAgICAgVGVzdHM6CisgICAgICAgIGZh
c3QvZXZlbnRzL3RvdWNoL3RvdWNoLXRhcmdldC5odG1sOiBBZGRlZC4KKyAgICAgICAgZmFzdC9l
dmVudHMvdG91Y2gvYmFzaWMtc2luZ2xlLXRvdWNoLWV2ZW50cy5odG1sOiBVcGRhdGVkLgorCisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KTogU3RvcmUgdGhlIG9yaWdpbmF0aW5nIHRhcmdldCBl
bGVtZW50IG9mIGEgdG91Y2ggaW4gYSBoYXNobWFwCisgICAgICAgICAgICBzbyB0aGF0IHdlIGNh
biByZXVzZSB0aGF0IHRhcmdldCBmb3IgZnV0dXJlIGV2ZW50cyBjYXVzZWQgYnkgdGhhdCB0b3Vj
aC4gVGhpcyBtYXRjaGVzIG9ic2VydmVkIGJlaGF2aW9yCisgICAgICAgICAgICBvbiBpUGhvbmUg
YW5kIEFuZHJvaWQuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDogQWRkIGhhc2htYXAg
YXMgYSBtZW1iZXIuCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoUG9pbnQ6OmlkKTogU3RvcmUgdGhlIHRvdWNo
IHBvaW50IGlkIGFzIHVuc2lnbmVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L1BsYXRmb3JtVG91
Y2hQb2ludFF0LmNwcDogCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoUG9pbnQ6OlBs
YXRmb3JtVG91Y2hQb2ludCk6IENhc3QgcGxhdGZvcm0gdG91Y2ggaWQgZnJvbSBzaWduZWQgdG8g
dW5zaWduZWQuIFF0IEFQSQorICAgICAgICAgICAgZG9jcyBzdGF0ZSB0aGF0IGl0IHdpbGwgYWx3
YXlzIGJlID49IDAuCisKIDIwMTAtMDItMjMgIEdlb2ZmIEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFdlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCShyZXZpc2lvbiA1NTE4NSkKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTgzLDcgKzI1ODMsMjEgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZVRvdWNoRXZlbnQoY29ucwogICAgICAgICBpbnQgYWRqdXN0ZWRQYWdlWCA9IGxyb3Vu
ZGYocGFnZVBvaW50LngoKSAvIG1fZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkpOwogICAgICAgICBp
bnQgYWRqdXN0ZWRQYWdlWSA9IGxyb3VuZGYocGFnZVBvaW50LnkoKSAvIG1fZnJhbWUtPnBhZ2Va
b29tRmFjdG9yKCkpOwogCi0gICAgICAgIFJlZlB0cjxUb3VjaD4gdG91Y2ggPSBUb3VjaDo6Y3Jl
YXRlKGRvYy0+ZnJhbWUoKSwgdGFyZ2V0LCBwb2ludC5pZCgpLAorICAgICAgICAvLyBJbmNyZW1l
bnQgdGhlIHBsYXRmb3JtIHRvdWNoIGlkIGJ5IDEgdG8gYXZvaWQgc3RvcmluZyBhIGtleSBvZiAw
IGluIHRoZSBoYXNobWFwLgorICAgICAgICB1bnNpZ25lZCB0b3VjaFBvaW50VGFyZ2V0S2V5ID0g
cG9pbnQuaWQoKSArIDE7CisgICAgICAgIEV2ZW50VGFyZ2V0KiB0b3VjaFRhcmdldCA9IDA7Cisg
ICAgICAgIGlmIChwb2ludC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVz
c2VkKSB7CisgICAgICAgICAgICBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHMuc2V0KHRv
dWNoUG9pbnRUYXJnZXRLZXksIHRhcmdldCk7CisgICAgICAgICAgICB0b3VjaFRhcmdldCA9IHRh
cmdldDsKKyAgICAgICAgfSBlbHNlIGlmIChwb2ludC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hSZWxlYXNlZCB8fCBwb2ludC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQb2lu
dDo6VG91Y2hDYW5jZWxsZWQpCisgICAgICAgICAgICB0b3VjaFRhcmdldCA9IG1fb3JpZ2luYXRp
bmdUb3VjaFBvaW50VGFyZ2V0cy50YWtlKHRvdWNoUG9pbnRUYXJnZXRLZXkpLmdldCgpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICB0b3VjaFRhcmdldCA9IG1fb3JpZ2luYXRpbmdUb3VjaFBv
aW50VGFyZ2V0cy5nZXQodG91Y2hQb2ludFRhcmdldEtleSkuZ2V0KCk7CisKKyAgICAgICAgaWYg
KCF0b3VjaFRhcmdldCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFJlZlB0cjxU
b3VjaD4gdG91Y2ggPSBUb3VjaDo6Y3JlYXRlKGRvYy0+ZnJhbWUoKSwgdG91Y2hUYXJnZXQsIHBv
aW50LmlkKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBv
aW50LnNjcmVlblBvcygpLngoKSwgcG9pbnQuc2NyZWVuUG9zKCkueSgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFBhZ2VYLCBhZGp1c3RlZFBh
Z2VZKTsKIApJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24gNTUxODUpCisrKyBXZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEyICszNywxNyBAQAog
Y2xhc3MgTlNWaWV3OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBdG9taWNTdHJpbmc7CiBjbGFzcyBDbGlwYm9hcmQ7CiBjbGFzcyBDdXJzb3I7CiBjbGFzcyBF
dmVudDsKK2NsYXNzIEV2ZW50VGFyZ2V0OwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZyYW1l
OwogY2xhc3MgSGl0VGVzdFJlcXVlc3Q7CkBAIC00MDgsNiArNDEzLDggQEAgcHJpdmF0ZToKICAg
ICBpbnQgbV9hY3RpdmF0aW9uRXZlbnROdW1iZXI7CiAjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxFdmVudFRhcmdldD4gPiBU
b3VjaFRhcmdldE1hcDsKKyAgICBUb3VjaFRhcmdldE1hcCBtX29yaWdpbmF0aW5nVG91Y2hQb2lu
dFRhcmdldHM7CiAgICAgUmVmUHRyPE5vZGU+IG1fdG91Y2hFdmVudFRhcmdldDsKICNlbmRpZgog
fTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaAkocmV2aXNpb24gNTUx
ODUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MCwxMyArNTAsMTMgQEAgcHVibGljOgogICAgIFBsYXRmb3JtVG91Y2hQb2ludChj
b25zdCBJbnRQb2ludCYgd2luZG93UG9zLCBTdGF0ZSk7CiAjZW5kaWYKIAotICAgIGludCBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB1bnNpZ25lZCBpZCgpIGNvbnN0IHsgcmV0dXJu
IG1faWQ7IH0KICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KICAg
ICBJbnRQb2ludCBzY3JlZW5Qb3MoKSBjb25zdCB7IHJldHVybiBtX3NjcmVlblBvczsgfQogICAg
IEludFBvaW50IHBvcygpIGNvbnN0IHsgcmV0dXJuIG1fcG9zOyB9CiAgICAgCiBwcml2YXRlOgot
ICAgIGludCBtX2lkOworICAgIHVuc2lnbmVkIG1faWQ7CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAg
ICBJbnRQb2ludCBtX3NjcmVlblBvczsKICAgICBJbnRQb2ludCBtX3BvczsKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaFBvaW50UXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaFBvaW50UXQuY3BwCShyZXZpc2lvbiA1NTE4
NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaFBvaW50UXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGxhdGZv
cm1Ub3VjaFBvaW50OjpQbGF0Zm9ybVRvdWNoUG9pbnQoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNo
UG9pbnQmIHBvaW50KQogewotICAgIG1faWQgPSBwb2ludC5pZCgpOworICAgIC8vIFRoZSBRVG91
Y2hFdmVudDo6VG91Y2hQb2ludCBBUEkgc3RhdGVzIHRoYXQgaWRzIHdpbGwgYmUgPj0gMC4KKyAg
ICBtX2lkID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvaW50LmlkKCkpOwogICAgIHN3aXRjaCAo
cG9pbnQuc3RhdGUoKSkgewogICAgIGNhc2UgUXQ6OlRvdWNoUG9pbnRSZWxlYXNlZDogbV9zdGF0
ZSA9IFRvdWNoUmVsZWFzZWQ7IGJyZWFrOwogICAgIGNhc2UgUXQ6OlRvdWNoUG9pbnRNb3ZlZDog
bV9zdGF0ZSA9IFRvdWNoTW92ZWQ7IGJyZWFrOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNTUxODUpCisr
KyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxMC0wMi0yNCAgQmVuIE11cmRvY2ggIDxiZW5tQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHRhcmdldCBlbGVtZW50IG9m
IGEgVG91Y2ggc2hvdWxkIGJlIHRoZSB0YXJnZXQgd2hlcmUgdGhhdCB0b3VjaCBvcmlnaW5hdGVk
LCBub3Qgd2hlcmUgaXQgaXMgbm93LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzQ1ODUKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0V2ZW50
U2VuZGVyUXQuY3BwOgorICAgICAgICAoRXZlbnRTZW5kZXI6OmFkZFRvdWNoUG9pbnQpOiBGaXgg
YSBidWcgd2hlcmUgdG91Y2ggcG9pbnRzIHdlcmUgbm90IGJlaW5nIGdpdmVuIHVuaXF1ZSBpZHMu
CisKIDIwMTAtMDItMjQgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwCShyZXZpc2lvbiA1NTE4NSkK
KysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODgsMTIgKzI4OCwxNCBAQCB2b2lkIEV2ZW50U2VuZGVyOjpzY2hlZHVs
ZUFzeW5jaHJvbm91c0NsCiAKIHZvaWQgRXZlbnRTZW5kZXI6OmFkZFRvdWNoUG9pbnQoaW50IHgs
IGludCB5KQogeworCiAjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDYsIDAp
Ci0gICAgaW50IGlkID0gbV90b3VjaFBvaW50cy5jb3VudCgpOworICAgIGludCBpbmRleCA9IG1f
dG91Y2hQb2ludHMuY291bnQoKTsKKyAgICBpbnQgaWQgPSBtX3RvdWNoUG9pbnRzLmlzRW1wdHko
KSA/IDAgOiBtX3RvdWNoUG9pbnRzLmxhc3QoKS5pZCgpICsgMTsKICAgICBRVG91Y2hFdmVudDo6
VG91Y2hQb2ludCBwb2ludChpZCk7CiAgICAgbV90b3VjaFBvaW50cy5hcHBlbmQocG9pbnQpOwot
ICAgIHVwZGF0ZVRvdWNoUG9pbnQoaWQsIHgsIHkpOwotICAgIG1fdG91Y2hQb2ludHNbaWRdLnNl
dFN0YXRlKFF0OjpUb3VjaFBvaW50UHJlc3NlZCk7CisgICAgdXBkYXRlVG91Y2hQb2ludChpbmRl
eCwgeCwgeSk7CisgICAgbV90b3VjaFBvaW50c1tpbmRleF0uc2V0U3RhdGUoUXQ6OlRvdWNoUG9p
bnRQcmVzc2VkKTsKICNlbmRpZgogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NTE4NSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEw
LTAyLTI0ICBCZW4gTXVyZG9jaCAgPGJlbm1AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgdGFyZ2V0IGVsZW1lbnQgb2YgYSBU
b3VjaCBzaG91bGQgYmUgdGhlIHRhcmdldCB3aGVyZSB0aGF0IHRvdWNoIG9yaWdpbmF0ZWQsIG5v
dCB3aGVyZSBpdCBpcyBub3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNDU4NQorCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtc2lu
Z2xlLXRvdWNoLWV2ZW50cy1leHBlY3RlZC50eHQ6IFVwZGF0ZSBleHBlY3RlZCB0YXJnZXQgZWxl
bWVudC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvYmFzaWMtc2lu
Z2xlLXRvdWNoLWV2ZW50cy5qczogZGl0dG8uCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gv
c2NyaXB0LXRlc3RzL3RvdWNoLXRhcmdldC5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVu
dHMvdG91Y2gvdG91Y2gtdGFyZ2V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9ldmVudHMvdG91Y2gvdG91Y2gtdGFyZ2V0Lmh0bWw6IEFkZGVkLgorCiAyMDEwLTAyLTIzICBD
c2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUnViYmVyLXN0
YW1wZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC9iYXNpYy1zaW5nbGUtdG91Y2gtZXZlbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9iYXNpYy1zaW5nbGUtdG91Y2gtZXZlbnRz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTUxODUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC9iYXNpYy1zaW5nbGUtdG91Y2gtZXZlbnRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNjcsNyArNjcsNyBAQCBQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5n
dGggaXMgCiBQQVNTIGxhc3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAwCiBQQVNTIGxh
c3RFdmVudC5wYWdlWCBpcyAwCiBQQVNTIGxhc3RFdmVudC5wYWdlWSBpcyAwCi1QQVNTIGxhc3RF
dmVudC50b3VjaGVzWzBdLnRhcmdldC50YWdOYW1lIGlzICJIVE1MIgorUEFTUyBsYXN0RXZlbnQu
dG91Y2hlc1swXS50YXJnZXQudGFnTmFtZSBpcyAiRElWIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC90b3VjaC10YXJnZXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXRhcmdldC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACitUZXN0cyB0aGF0IHRoZSB0YXJn
ZXQgb2YgdG91Y2hlcyBtYXRjaCB0aGUgZWxlbWVudCB3aGVyZSB0aGUgZXZlbnQgb3JpZ2luYXRl
ZCwgbm90IHdoZXJlIHRoZSB0b3VjaCBpcyBjdXJyZW50bHkgb2NjdXJyaW5nLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworCitQQVNTIGV2ZW50LnR5cGUgaXMgInRvdWNoc3RhcnQi
CitQQVNTIGV2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LmlkIGlzICJ0YXJnZXRBIgorUEFTUyBldmVu
dC50b3VjaGVzWzFdLnRhcmdldC5pZCBpcyAidGFyZ2V0QiIKK1BBU1MgZXZlbnQudHlwZSBpcyAi
dG91Y2htb3ZlIgorUEFTUyBldmVudC50b3VjaGVzWzBdLnRhcmdldC5pZCBpcyAidGFyZ2V0QSIK
K1BBU1MgZXZlbnQudG91Y2hlc1sxXS50YXJnZXQuaWQgaXMgInRhcmdldEIiCitQQVNTIGV2ZW50
LnR5cGUgaXMgInRvdWNobW92ZSIKK1BBU1MgZXZlbnQudG91Y2hlc1swXS50YXJnZXQuaWQgaXMg
InRhcmdldEEiCitQQVNTIGV2ZW50LnRvdWNoZXNbMV0udGFyZ2V0LmlkIGlzICJ0YXJnZXRCIgor
UEFTUyBldmVudC50eXBlIGlzICJ0b3VjaHN0YXJ0IgorUEFTUyBldmVudC50b3VjaGVzWzBdLnRh
cmdldC5pZCBpcyAidGFyZ2V0QiIKK1BBU1MgZXZlbnQudG91Y2hlc1sxXS50YXJnZXQuaWQgaXMg
InRhcmdldEEiCitQQVNTIGV2ZW50LnR5cGUgaXMgInRvdWNobW92ZSIKK1BBU1MgZXZlbnQudG91
Y2hlc1swXS50YXJnZXQuaWQgaXMgInRhcmdldEIiCitQQVNTIGV2ZW50LnRvdWNoZXNbMV0udGFy
Z2V0LmlkIGlzICJ0YXJnZXRBIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNo
LXRhcmdldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L3RvdWNoLXRhcmdldC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdG91Y2gvdG91Y2gtdGFyZ2V0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJ0YXJnZXRzRGl2Ij48L2Rpdj4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy90b3VjaC10YXJnZXQu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL2Jhc2ljLXNpbmdsZS10b3VjaC1ldmVudHMuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL2Jh
c2ljLXNpbmdsZS10b3VjaC1ldmVudHMuanMJKHJldmlzaW9uIDU1MTg1KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL2Jhc2ljLXNpbmdsZS10b3VjaC1ldmVu
dHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgZnVuY3Rpb24gdmVyaWZ5VG91
Y2god2hpY2gpIHsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAg
IHZlcmlmeVRvdWNoRXZlbnQoInRvdWNobW92ZSIsIDEsIDEsIDApOwotICAgICAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJsYXN0RXZlbnQudG91Y2hlc1swXS50YXJnZXQudGFnTmFtZSIs
ICJIVE1MIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxhc3RFdmVudC50
b3VjaGVzWzBdLnRhcmdldC50YWdOYW1lIiwgIkRJViIpOwogICAgICAgICBicmVhazsKIAogICAg
ICAgICBkZWZhdWx0OiB0ZXN0RmFpbGVkKCJXcm9uZyBudW1iZXIgb2YgdG91Y2ggZXZlbnRzISAo
IiArIHdoaWNoICsgIikiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3Nj
cmlwdC10ZXN0cy90b3VjaC10YXJnZXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL3RvdWNoLXRhcmdldC5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC10YXJn
ZXQuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTcgQEAKK3ZhciBkaXYxID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CitkaXYxLmlkID0gInRhcmdldEEiOworZGl2MS5zdHlsZS53
aWR0aCA9ICIxMDBweCI7CitkaXYxLnN0eWxlLmhlaWdodCA9ICIxMDBweCI7CitkaXYxLnN0eWxl
LmJhY2tncm91bmRDb2xvciA9ICJibHVlIjsKKwordmFyIGRpdjIgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKK2RpdjIuaWQgPSAidGFyZ2V0QiI7CitkaXYyLnN0eWxlLndpZHRoID0g
IjEwMHB4IjsKK2RpdjIuc3R5bGUuaGVpZ2h0ID0gIjEwMHB4IjsKK2RpdjIuc3R5bGUuYmFja2dy
b3VuZENvbG9yID0gImdyZWVuIjsKKwordmFyIHRvdWNoU3RhcnRDb3VudCA9IDA7Cit2YXIgdG91
Y2hNb3ZlQ291bnQgPSAwOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0c0Rpdicp
LmFwcGVuZENoaWxkKGRpdjEpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldHNEaXYn
KS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpKTsKK2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCd0YXJnZXRzRGl2JykuYXBwZW5kQ2hpbGQoZGl2Mik7CisKK2Z1bmN0aW9u
IHRvdWNoU3RhcnRIYW5kbGVyKCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50
LnR5cGUnLCAndG91Y2hzdGFydCcpOworICAgIHN3aXRjaCAodG91Y2hTdGFydENvdW50KSB7Cisg
ICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXZlbnQu
dG91Y2hlc1swXS50YXJnZXQuaWQnLCBkaXYxLmlkKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygnZXZlbnQudG91Y2hlc1sxXS50YXJnZXQuaWQnLCBkaXYyLmlkKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2V2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LmlkJywgZGl2Mi5pZCk7CisgICAgICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnRvdWNoZXNbMV0udGFyZ2V0LmlkJywg
ZGl2MS5pZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICB0b3VjaFN0YXJ0Q291
bnQrKzsKK30KKworZnVuY3Rpb24gdG91Y2hNb3ZlSGFuZGxlcigpCit7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdldmVudC50eXBlJywgJ3RvdWNobW92ZScpOworICAgIHN3aXRjaCAodG91
Y2hNb3ZlQ291bnQpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICBjYXNlIDE6CisgICAgICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LmlkJywg
ZGl2MS5pZCk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnRvdWNo
ZXNbMV0udGFyZ2V0LmlkJywgZGl2Mi5pZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAyOgorICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC50b3VjaGVz
WzBdLnRhcmdldC5pZCcsIGRpdjIuaWQpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdldmVudC50b3VjaGVzWzFdLnRhcmdldC5pZCcsIGRpdjEuaWQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgaWYgKCsrdG91Y2hNb3ZlQ291bnQgPT0gMykKKyAgICB7Cisg
ICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAg
ICB9Cit9CisKK2RpdjEuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIHRvdWNoU3RhcnRI
YW5kbGVyLCBmYWxzZSk7CitkaXYxLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIHRvdWNo
TW92ZUhhbmRsZXIsIGZhbHNlKTsKKworZGl2Mi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0
IiwgdG91Y2hTdGFydEhhbmRsZXIsIGZhbHNlKTsKK2RpdjIuYWRkRXZlbnRMaXN0ZW5lcigidG91
Y2htb3ZlIiwgdG91Y2hNb3ZlSGFuZGxlciwgZmFsc2UpOworCitkZXNjcmlwdGlvbigiVGVzdHMg
dGhhdCB0aGUgdGFyZ2V0IG9mIHRvdWNoZXMgbWF0Y2ggdGhlIGVsZW1lbnQgd2hlcmUgdGhlIGV2
ZW50IG9yaWdpbmF0ZWQsIG5vdCB3aGVyZSB0aGUgdG91Y2ggaXMgY3VycmVudGx5IG9jY3Vycmlu
Zy4iKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgIGV2ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICBldmVudFNlbmRl
ci5hZGRUb3VjaFBvaW50KDUwLCAxNTApOworICAgIGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQo
NTAsIDI1MCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOworCisgICAgZXZlbnRTZW5k
ZXIudXBkYXRlVG91Y2hQb2ludCgwLCA1MCwgMjUwKTsKKyAgICBldmVudFNlbmRlci51cGRhdGVU
b3VjaFBvaW50KDEsIDUwLCAxNTApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworCisg
ICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCAxMDAwLCAxMDAwKTsKKyAgICBldmVu
dFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDEsIDEwMDAsIDEwMDApOworICAgIGV2ZW50U2VuZGVy
LnRvdWNoTW92ZSgpOworCisgICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7Cisg
ICAgZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKKworICAgIGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9p
bnQoNTAsMTUwKTsKKyAgICBldmVudFNlbmRlci50b3VjaFN0YXJ0KCk7CisKKyAgICBldmVudFNl
bmRlci51cGRhdGVUb3VjaFBvaW50KDAsIDUwMCwgNTAwKTsKKyAgICBldmVudFNlbmRlci51cGRh
dGVUb3VjaFBvaW50KDEsIDUwMCwgNTAwKTsKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsK
K30gZWxzZQorICAgIGRlYnVnKCdUaGlzIHRlc3QgcmVxdWlyZXMgRFJULicpOworCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49470</attachid>
            <date>2010-02-25 02:41:34 -0800</date>
            <delta_ts>2010-02-25 05:24:18 -0800</delta_ts>
            <desc>Patch and layout test changes.</desc>
            <filename>34585-3.txt</filename>
            <type>text/plain</type>
            <size>14794</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTIyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMDItMjQgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB0
YXJnZXQgZWxlbWVudCBvZiBhIFRvdWNoIHNob3VsZCBiZSB0aGUgdGFyZ2V0IHdoZXJlIHRoYXQg
dG91Y2ggb3JpZ2luYXRlZCwgbm90IHdoZXJlIGl0IGlzIG5vdy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NTg1CisKKyAgICAgICAgQ3VycmVudGx5
IHRoZSB0YXJnZXQgb2YgYSB0b3VjaCBpcyBzZXQgdG8gdGhlIHJlc3VsdGluZyBub2RlIG9mIHRo
ZSBoaXQgdGVzdCB3aGVyZSB0aGUgdG91Y2ggY3VycmVudGx5CisgICAgICAgIGlzLiBUaGlzIGRv
ZXMgbm90IG1hdGNoIHRoZSBiZWhhdmlvciBvZiBpUGhvbmUgb3IgQW5kcm9pZC4gVGhpcyBwYXRj
aCB1c2VzIGEgaGFzaG1hcCBvbiB0aGUgRXZlbnRIYW5kbGVyCisgICAgICAgIHRvIGtlZXAgdHJh
Y2sgb2YgdGhlIHRhcmdldCBlbGVtZW50IHdoZW4gYSB0b3VjaCBpcyBmaXJzdCBzdGFydGVkLiBU
aGlzIHRhcmdldCBpcyB0aGVuIHVzZWQgYXMgdGhlIHRhcmdldAorICAgICAgICBmb3Igc3Vic2Vx
dWVudCB0b3VjaGVzIHdpdGggdGhlIHNhbWUgaWQuIFRoaXMgbWF0Y2hlcyBvYnNlcnZlZCBiZWhh
dmlvciBvbiBpUGhvbmUgYW5kIEFuZHJvaWQuCisKKyAgICAgICAgVGVzdHM6CisgICAgICAgIGZh
c3QvZXZlbnRzL3RvdWNoL3RvdWNoLXRhcmdldC5odG1sOiBBZGRlZC4KKyAgICAgICAgZmFzdC9l
dmVudHMvdG91Y2gvYmFzaWMtc2luZ2xlLXRvdWNoLWV2ZW50cy5odG1sOiBVcGRhdGVkLgorCisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KTogU3RvcmUgdGhlIG9yaWdpbmF0aW5nIHRhcmdldCBl
bGVtZW50IG9mIGEgdG91Y2ggaW4gYSBoYXNobWFwCisgICAgICAgICAgICBzbyB0aGF0IHdlIGNh
biByZXVzZSB0aGF0IHRhcmdldCBmb3IgZnV0dXJlIGV2ZW50cyBjYXVzZWQgYnkgdGhhdCB0b3Vj
aC4gVGhpcyBtYXRjaGVzIG9ic2VydmVkIGJlaGF2aW9yCisgICAgICAgICAgICBvbiBpUGhvbmUg
YW5kIEFuZHJvaWQuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDogQWRkIGhhc2htYXAg
YXMgYSBtZW1iZXIuCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoUG9pbnQ6OmlkKTogU3RvcmUgdGhlIHRvdWNo
IHBvaW50IGlkIGFzIHVuc2lnbmVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L1BsYXRmb3JtVG91
Y2hQb2ludFF0LmNwcDogCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoUG9pbnQ6OlBs
YXRmb3JtVG91Y2hQb2ludCk6IENhc3QgcGxhdGZvcm0gdG91Y2ggaWQgZnJvbSBzaWduZWQgdG8g
dW5zaWduZWQuIFF0IEFQSQorICAgICAgICAgICAgZG9jcyBzdGF0ZSB0aGF0IGl0IHdpbGwgYWx3
YXlzIGJlID49IDAuCisKIDIwMTAtMDItMjQgIE5pY2hvbGFzIFlvdW5nICA8bmljaG9sYXMueW91
bmdAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KSW5kZXg6
IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiA1NTIyNikKKysrIFdlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgzLDcgKzI1ODMsMjMgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29ucwogICAgICAgICBpbnQgYWRqdXN0ZWRQ
YWdlWCA9IGxyb3VuZGYocGFnZVBvaW50LngoKSAvIG1fZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkp
OwogICAgICAgICBpbnQgYWRqdXN0ZWRQYWdlWSA9IGxyb3VuZGYocGFnZVBvaW50LnkoKSAvIG1f
ZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkpOwogCi0gICAgICAgIFJlZlB0cjxUb3VjaD4gdG91Y2gg
PSBUb3VjaDo6Y3JlYXRlKGRvYy0+ZnJhbWUoKSwgdGFyZ2V0LCBwb2ludC5pZCgpLAorICAgICAg
ICAvLyBJbmNyZW1lbnQgdGhlIHBsYXRmb3JtIHRvdWNoIGlkIGJ5IDEgdG8gYXZvaWQgc3Rvcmlu
ZyBhIGtleSBvZiAwIGluIHRoZSBoYXNobWFwLgorICAgICAgICB1bnNpZ25lZCB0b3VjaFBvaW50
VGFyZ2V0S2V5ID0gcG9pbnQuaWQoKSArIDE7CisgICAgICAgIEV2ZW50VGFyZ2V0KiB0b3VjaFRh
cmdldCA9IDA7CisgICAgICAgIGlmIChwb2ludC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQb2lu
dDo6VG91Y2hQcmVzc2VkKSB7CisgICAgICAgICAgICBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRh
cmdldHMuc2V0KHRvdWNoUG9pbnRUYXJnZXRLZXksIHRhcmdldCk7CisgICAgICAgICAgICB0b3Vj
aFRhcmdldCA9IHRhcmdldDsKKyAgICAgICAgfSBlbHNlIGlmIChwb2ludC5zdGF0ZSgpID09IFBs
YXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCB8fCBwb2ludC5zdGF0ZSgpID09IFBsYXRm
b3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQpIHsKKyAgICAgICAgICAgIC8vIFRoZSB0YXJn
ZXQgc2hvdWxkIGJlIHRoZSBvcmlnaW5hbCB0YXJnZXQgZm9yIHRoaXMgdG91Y2gsIHNvIGdldCBp
dCBmcm9tIHRoZSBoYXNobWFwLiBBcyBpdCdzIGEgcmVsZWFzZSBvciBjYW5jZWwKKyAgICAgICAg
ICAgIC8vIHdlIGFsc28gcmVtb3ZlIGl0IGZyb20gdGhlIG1hcC4KKyAgICAgICAgICAgIHRvdWNo
VGFyZ2V0ID0gbV9vcmlnaW5hdGluZ1RvdWNoUG9pbnRUYXJnZXRzLnRha2UodG91Y2hQb2ludFRh
cmdldEtleSkuZ2V0KCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdG91Y2hUYXJnZXQg
PSBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHMuZ2V0KHRvdWNoUG9pbnRUYXJnZXRLZXkp
LmdldCgpOworCisgICAgICAgIGlmICghdG91Y2hUYXJnZXQpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBSZWZQdHI8VG91Y2g+IHRvdWNoID0gVG91Y2g6OmNyZWF0ZShkb2MtPmZy
YW1lKCksIHRvdWNoVGFyZ2V0LCBwb2ludC5pZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwb2ludC5zY3JlZW5Qb3MoKS54KCksIHBvaW50LnNjcmVlblBv
cygpLnkoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRq
dXN0ZWRQYWdlWCwgYWRqdXN0ZWRQYWdlWSk7CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHJldmlz
aW9uIDU1MjI2KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNywxMiArMzcsMTcgQEAKIGNsYXNzIE5TVmlldzsKICNlbmRpZgogCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXRvbWljU3RyaW5nOwogY2xhc3MgQ2xpcGJvYXJkOwog
Y2xhc3MgQ3Vyc29yOwogY2xhc3MgRXZlbnQ7CitjbGFzcyBFdmVudFRhcmdldDsKIGNsYXNzIEZs
b2F0UG9pbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhpdFRlc3RSZXF1ZXN0OwpAQCAtNDA4LDYg
KzQxMyw4IEBAIHByaXZhdGU6CiAgICAgaW50IG1fYWN0aXZhdGlvbkV2ZW50TnVtYmVyOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBS
ZWZQdHI8RXZlbnRUYXJnZXQ+ID4gVG91Y2hUYXJnZXRNYXA7CisgICAgVG91Y2hUYXJnZXRNYXAg
bV9vcmlnaW5hdGluZ1RvdWNoUG9pbnRUYXJnZXRzOwogICAgIFJlZlB0cjxOb2RlPiBtX3RvdWNo
RXZlbnRUYXJnZXQ7CiAjZW5kaWYKIH07CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
VG91Y2hQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3Vj
aFBvaW50LmgJKHJldmlzaW9uIDU1MjI2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRv
dWNoUG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTMgKzUwLDEzIEBAIHB1YmxpYzoKICAg
ICBQbGF0Zm9ybVRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvcywgU3RhdGUpOwog
I2VuZGlmCiAKLSAgICBpbnQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgdW5zaWdu
ZWQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlOyB9CiAgICAgSW50UG9pbnQgc2NyZWVuUG9zKCkgY29uc3QgeyByZXR1
cm4gbV9zY3JlZW5Qb3M7IH0KICAgICBJbnRQb2ludCBwb3MoKSBjb25zdCB7IHJldHVybiBtX3Bv
czsgfQogICAgIAogcHJpdmF0ZToKLSAgICBpbnQgbV9pZDsKKyAgICB1bnNpZ25lZCBtX2lkOwog
ICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgSW50UG9pbnQgbV9zY3JlZW5Qb3M7CiAgICAgSW50UG9p
bnQgbV9wb3M7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtVG91Y2hQb2ludFF0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtVG91Y2hQb2lu
dFF0LmNwcAkocmV2aXNpb24gNTUyMjYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3Jt
VG91Y2hQb2ludFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFBsYXRmb3JtVG91Y2hQb2ludDo6UGxhdGZvcm1Ub3VjaFBvaW50KGNv
bnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50JiBwb2ludCkKIHsKLSAgICBtX2lkID0gcG9pbnQu
aWQoKTsKKyAgICAvLyBUaGUgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQgQVBJIHN0YXRlcyB0aGF0
IGlkcyB3aWxsIGJlID49IDAuCisgICAgbV9pZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb2lu
dC5pZCgpKTsKICAgICBzd2l0Y2ggKHBvaW50LnN0YXRlKCkpIHsKICAgICBjYXNlIFF0OjpUb3Vj
aFBvaW50UmVsZWFzZWQ6IG1fc3RhdGUgPSBUb3VjaFJlbGVhc2VkOyBicmVhazsKICAgICBjYXNl
IFF0OjpUb3VjaFBvaW50TW92ZWQ6IG1fc3RhdGUgPSBUb3VjaE1vdmVkOyBicmVhazsKSW5kZXg6
IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU1MjI2KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDItMjQgIEJlbiBNdXJkb2NoICA8YmVubUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZSB0YXJnZXQgZWxlbWVudCBvZiBhIFRvdWNoIHNob3VsZCBiZSB0aGUgdGFyZ2V0IHdoZXJl
IHRoYXQgdG91Y2ggb3JpZ2luYXRlZCwgbm90IHdoZXJlIGl0IGlzIG5vdy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NTg1CisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9xdC9FdmVudFNlbmRlclF0LmNwcDoKKyAgICAgICAgKEV2ZW50U2VuZGVy
OjphZGRUb3VjaFBvaW50KTogRml4IGEgYnVnIHdoZXJlIHRvdWNoIHBvaW50cyB3ZXJlIG5vdCBi
ZWluZyBnaXZlbiB1bmlxdWUgaWRzLgorCiAyMDEwLTAyLTI0ICBKZXN1cyBTYW5jaGV6LVBhbGVu
Y2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwCShyZXZpc2lvbiA1NTIyNikKKysrIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yODksMTEgKzI4OSwxNSBAQCB2b2lkIEV2ZW50U2VuZGVyOjpzY2hlZHVsZUFzeW5j
aHJvbm91c0NsCiB2b2lkIEV2ZW50U2VuZGVyOjphZGRUb3VjaFBvaW50KGludCB4LCBpbnQgeSkK
IHsKICNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwgMCkKLSAgICBpbnQg
aWQgPSBtX3RvdWNoUG9pbnRzLmNvdW50KCk7CisgICAgLy8gVXNlIGluZGV4IHRvIHJlZmVyIHRv
IHRoZSBwb3NpdGlvbiBpbiB0aGUgdmVjdG9yIHRoYXQgdGhpcyB0b3VjaAorICAgIC8vIGlzIHN0
b3JlZC4gV2UgdGhlbiBjcmVhdGUgYSB1bmlxdWUgaWQgZm9yIHRoZSB0b3VjaCB0aGF0IHdpbGwg
YmUKKyAgICAvLyBwYXNzZWQgaW50byBXZWJDb3JlLgorICAgIGludCBpbmRleCA9IG1fdG91Y2hQ
b2ludHMuY291bnQoKTsKKyAgICBpbnQgaWQgPSBtX3RvdWNoUG9pbnRzLmlzRW1wdHkoKSA/IDAg
OiBtX3RvdWNoUG9pbnRzLmxhc3QoKS5pZCgpICsgMTsKICAgICBRVG91Y2hFdmVudDo6VG91Y2hQ
b2ludCBwb2ludChpZCk7CiAgICAgbV90b3VjaFBvaW50cy5hcHBlbmQocG9pbnQpOwotICAgIHVw
ZGF0ZVRvdWNoUG9pbnQoaWQsIHgsIHkpOwotICAgIG1fdG91Y2hQb2ludHNbaWRdLnNldFN0YXRl
KFF0OjpUb3VjaFBvaW50UHJlc3NlZCk7CisgICAgdXBkYXRlVG91Y2hQb2ludChpbmRleCwgeCwg
eSk7CisgICAgbV90b3VjaFBvaW50c1tpbmRleF0uc2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRQcmVz
c2VkKTsKICNlbmRpZgogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NTIyNikKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTAyLTI0
ICBCZW4gTXVyZG9jaCAgPGJlbm1AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgdGFyZ2V0IGVsZW1lbnQgb2YgYSBUb3VjaCBz
aG91bGQgYmUgdGhlIHRhcmdldCB3aGVyZSB0aGF0IHRvdWNoIG9yaWdpbmF0ZWQsIG5vdCB3aGVy
ZSBpdCBpcyBub3cuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNDU4NQorCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvYmFzaWMtc2luZ2xlLXRv
dWNoLWV2ZW50cy1leHBlY3RlZC50eHQ6IFVwZGF0ZSBleHBlY3RlZCB0YXJnZXQgZWxlbWVudC4K
KyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvYmFzaWMtc2luZ2xlLXRv
dWNoLWV2ZW50cy5qczogZGl0dG8uCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0
LXRlc3RzL3RvdWNoLXRhcmdldC5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91
Y2gvdG91Y2gtdGFyZ2V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVu
dHMvdG91Y2gvdG91Y2gtdGFyZ2V0Lmh0bWw6IEFkZGVkLgorCiAyMDEwLTAyLTI0ICBDaHJpcyBF
dmFucyAgPGNldmFuc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9iYXNpYy1zaW5nbGUt
dG91Y2gtZXZlbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9iYXNpYy1zaW5nbGUtdG91Y2gtZXZlbnRzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gNTUyMjYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9iYXNpYy1zaW5n
bGUtdG91Y2gtZXZlbnRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcs
NyBAQCBQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggaXMgCiBQQVNTIGxhc3RF
dmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAwCiBQQVNTIGxhc3RFdmVudC5wYWdlWCBpcyAw
CiBQQVNTIGxhc3RFdmVudC5wYWdlWSBpcyAwCi1QQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnRh
cmdldC50YWdOYW1lIGlzICJIVE1MIgorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS50YXJnZXQu
dGFnTmFtZSBpcyAiRElWIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNU
IENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJn
ZXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Rv
dWNoL3RvdWNoLXRhcmdldC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI1IEBACitUZXN0cyB0aGF0IHRoZSB0YXJnZXQgb2YgdG91Y2hlcyBtYXRj
aCB0aGUgZWxlbWVudCB3aGVyZSB0aGUgZXZlbnQgb3JpZ2luYXRlZCwgbm90IHdoZXJlIHRoZSB0
b3VjaCBpcyBjdXJyZW50bHkgb2NjdXJyaW5nLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworCitQQVNTIGV2ZW50LnR5cGUgaXMgInRvdWNoc3RhcnQiCitQQVNTIGV2ZW50LnRvdWNo
ZXNbMF0udGFyZ2V0LmlkIGlzICJ0YXJnZXRBIgorUEFTUyBldmVudC50b3VjaGVzWzFdLnRhcmdl
dC5pZCBpcyAidGFyZ2V0QiIKK1BBU1MgZXZlbnQudHlwZSBpcyAidG91Y2htb3ZlIgorUEFTUyBl
dmVudC50b3VjaGVzWzBdLnRhcmdldC5pZCBpcyAidGFyZ2V0QSIKK1BBU1MgZXZlbnQudG91Y2hl
c1sxXS50YXJnZXQuaWQgaXMgInRhcmdldEIiCitQQVNTIGV2ZW50LnR5cGUgaXMgInRvdWNobW92
ZSIKK1BBU1MgZXZlbnQudG91Y2hlc1swXS50YXJnZXQuaWQgaXMgInRhcmdldEEiCitQQVNTIGV2
ZW50LnRvdWNoZXNbMV0udGFyZ2V0LmlkIGlzICJ0YXJnZXRCIgorUEFTUyBldmVudC50eXBlIGlz
ICJ0b3VjaHN0YXJ0IgorUEFTUyBldmVudC50b3VjaGVzWzBdLnRhcmdldC5pZCBpcyAidGFyZ2V0
QiIKK1BBU1MgZXZlbnQudG91Y2hlc1sxXS50YXJnZXQuaWQgaXMgInRhcmdldEEiCitQQVNTIGV2
ZW50LnR5cGUgaXMgInRvdWNobW92ZSIKK1BBU1MgZXZlbnQudG91Y2hlc1swXS50YXJnZXQuaWQg
aXMgInRhcmdldEIiCitQQVNTIGV2ZW50LnRvdWNoZXNbMV0udGFyZ2V0LmlkIGlzICJ0YXJnZXRB
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXRhcmdldC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXRhcmdldC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtdGFy
Z2V0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9u
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJ0YXJnZXRzRGl2Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy90b3VjaC10YXJnZXQuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0
LXRlc3RzL2Jhc2ljLXNpbmdsZS10b3VjaC1ldmVudHMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL2Jhc2ljLXNpbmdsZS10b3VjaC1l
dmVudHMuanMJKHJldmlzaW9uIDU1MjI2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvc2NyaXB0LXRlc3RzL2Jhc2ljLXNpbmdsZS10b3VjaC1ldmVudHMuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTgwLDcgKzgwLDcgQEAgZnVuY3Rpb24gdmVyaWZ5VG91Y2god2hpY2gpIHsKICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgIHZlcmlmeVRvdWNoRXZlbnQo
InRvdWNobW92ZSIsIDEsIDEsIDApOwotICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJsYXN0RXZlbnQudG91Y2hlc1swXS50YXJnZXQudGFnTmFtZSIsICJIVE1MIik7CisgICAgICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxhc3RFdmVudC50b3VjaGVzWzBdLnRhcmdldC50
YWdOYW1lIiwgIkRJViIpOwogICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OiB0ZXN0
RmFpbGVkKCJXcm9uZyBudW1iZXIgb2YgdG91Y2ggZXZlbnRzISAoIiArIHdoaWNoICsgIikiKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC10
YXJnZXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2Ny
aXB0LXRlc3RzL3RvdWNoLXRhcmdldC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90b3VjaC10YXJnZXQuanMJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsOTcgQEAKK3ZhciBkaXYxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CitkaXYxLmlkID0gInRhcmdldEEiOworZGl2MS5zdHlsZS53aWR0aCA9ICIxMDBweCI7Citk
aXYxLnN0eWxlLmhlaWdodCA9ICIxMDBweCI7CitkaXYxLnN0eWxlLmJhY2tncm91bmRDb2xvciA9
ICJibHVlIjsKKwordmFyIGRpdjIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rp
djIuaWQgPSAidGFyZ2V0QiI7CitkaXYyLnN0eWxlLndpZHRoID0gIjEwMHB4IjsKK2RpdjIuc3R5
bGUuaGVpZ2h0ID0gIjEwMHB4IjsKK2RpdjIuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImdyZWVu
IjsKKwordmFyIHRvdWNoU3RhcnRDb3VudCA9IDA7Cit2YXIgdG91Y2hNb3ZlQ291bnQgPSAwOwor
Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0c0RpdicpLmFwcGVuZENoaWxkKGRpdjEp
OworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldHNEaXYnKS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdicicpKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJn
ZXRzRGl2JykuYXBwZW5kQ2hpbGQoZGl2Mik7CisKK2Z1bmN0aW9uIHRvdWNoU3RhcnRIYW5kbGVy
KCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnR5cGUnLCAndG91Y2hzdGFy
dCcpOworICAgIHN3aXRjaCAodG91Y2hTdGFydENvdW50KSB7CisgICAgICAgIGNhc2UgMDoKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXZlbnQudG91Y2hlc1swXS50YXJnZXQu
aWQnLCBkaXYxLmlkKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXZlbnQu
dG91Y2hlc1sxXS50YXJnZXQuaWQnLCBkaXYyLmlkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIDE6CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnRv
dWNoZXNbMF0udGFyZ2V0LmlkJywgZGl2Mi5pZCk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2V2ZW50LnRvdWNoZXNbMV0udGFyZ2V0LmlkJywgZGl2MS5pZCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICB0b3VjaFN0YXJ0Q291bnQrKzsKK30KKworZnVuY3Rp
b24gdG91Y2hNb3ZlSGFuZGxlcigpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVu
dC50eXBlJywgJ3RvdWNobW92ZScpOworICAgIHN3aXRjaCAodG91Y2hNb3ZlQ291bnQpIHsKKyAg
ICAgICAgY2FzZSAwOgorICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2V2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LmlkJywgZGl2MS5pZCk7CisgICAgICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnRvdWNoZXNbMV0udGFyZ2V0LmlkJywg
ZGl2Mi5pZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC50b3VjaGVzWzBdLnRhcmdldC5pZCcsIGRp
djIuaWQpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC50b3VjaGVz
WzFdLnRhcmdldC5pZCcsIGRpdjEuaWQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgaWYgKCsrdG91Y2hNb3ZlQ291bnQgPT0gMykKKyAgICB7CisgICAgICAgIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICB9Cit9CisKK2RpdjEuYWRk
RXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIHRvdWNoU3RhcnRIYW5kbGVyLCBmYWxzZSk7Citk
aXYxLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIHRvdWNoTW92ZUhhbmRsZXIsIGZhbHNl
KTsKKworZGl2Mi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgdG91Y2hTdGFydEhhbmRs
ZXIsIGZhbHNlKTsKK2RpdjIuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIiwgdG91Y2hNb3Zl
SGFuZGxlciwgZmFsc2UpOworCitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB0aGUgdGFyZ2V0IG9m
IHRvdWNoZXMgbWF0Y2ggdGhlIGVsZW1lbnQgd2hlcmUgdGhlIGV2ZW50IG9yaWdpbmF0ZWQsIG5v
dCB3aGVyZSB0aGUgdG91Y2ggaXMgY3VycmVudGx5IG9jY3VycmluZy4iKTsKKworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKK30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIGV2ZW50U2Vu
ZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50KDUw
LCAxNTApOworICAgIGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQoNTAsIDI1MCk7CisgICAgZXZl
bnRTZW5kZXIudG91Y2hTdGFydCgpOworCisgICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2lu
dCgwLCA1MCwgMjUwKTsKKyAgICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDEsIDUwLCAx
NTApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworCisgICAgZXZlbnRTZW5kZXIudXBk
YXRlVG91Y2hQb2ludCgwLCAxMDAwLCAxMDAwKTsKKyAgICBldmVudFNlbmRlci51cGRhdGVUb3Vj
aFBvaW50KDEsIDEwMDAsIDEwMDApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworCisg
ICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7CisgICAgZXZlbnRTZW5kZXIudG91
Y2hFbmQoKTsKKworICAgIGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQoNTAsMTUwKTsKKyAgICBl
dmVudFNlbmRlci50b3VjaFN0YXJ0KCk7CisKKyAgICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBv
aW50KDAsIDUwMCwgNTAwKTsKKyAgICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDEsIDUw
MCwgNTAwKTsKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKK30gZWxzZQorICAgIGRlYnVn
KCdUaGlzIHRlc3QgcmVxdWlyZXMgRFJULicpOworCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>