<?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>36539</bug_id>
          
          <creation_ts>2010-03-24 09:52:01 -0700</creation_ts>
          <short_desc>shift+home/end and cmd+shift+left/right don&apos;t extend the selection correctly</short_desc>
          <delta_ts>2010-09-19 18:58:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>41975</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>ap</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>203452</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-24 09:52:01 -0700</bug_when>
    <thetext>The correct Mac behavior is to extend the selection. The current behavior is to move the extent of the selection.

Given the following test:
This is the first line.
This is the second line.
This is the third line.
This is the fourth line.

1. Click on &quot;third&quot;.
2. shift + up
3. cmd+shift+left
4. cmd+shift+right
Expected result: The full second and third lines should be selected.
Actual result: The second half of the third line is selected.

1. Click on &quot;third&quot;.
2. shift + up
3. shift + home
4. shift + end
Expected result: All four lines should be selected.
Actual result: The second half of the third line and the whole fourth line is selected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204255</commentid>
    <comment_count>1</comment_count>
      <attachid>51683</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-25 15:26:15 -0700</bug_when>
    <thetext>Created attachment 51683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204644</commentid>
    <comment_count>2</comment_count>
      <attachid>51683</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-26 10:01:16 -0700</bug_when>
    <thetext>Comment on attachment 51683
Patch

&gt; +    Settings* settings = m_frame ? m_frame-&gt;settings() : 0;
&gt; +    // The trialSelectionController does not have access to an m_frame, so we need to get the editing behavior first.
&gt; +    isEditingMacBehavior = isEditingMacBehavior || settings &amp;&amp; settings-&gt;editingBehavior() == EditingMacBehavior;

Adding yet another parameter to the already complex modify function is annoying and available.

The use of &quot;||&quot; here seems a bit haphazard to me. There&apos;s no real need for an &quot;or&quot; here.

Instead it would be better to break the modify function into a public one with the same interface as today, and a private function, probably with a different name, that takes an additional argument. The cleanest type for the additional argument would be EditingBehavior, but you might not want to do all the work to separate out the EditingBehavior enum so it can be included in the SelectionController.h header file without pulling in all of Settings.h. So you the extra argument to the private function could be a Settings*.

&gt; +            // This matches NSTextView behavior. When extending a selection via LineBoundary, ParagraphBoundary or
&gt; +            // DocumentBoundary, the selection always grows instead of just moving the extent.
&gt; +            if (isEditingMacBehavior &amp;&amp; !m_selection.isCaret()
&gt; +                &amp;&amp; (granularity == LineBoundary || granularity == ParagraphBoundary || granularity == DocumentBoundary)
&gt; +                &amp;&amp; ((dir == FORWARD || dir == RIGHT) &amp;&amp; !m_selection.isBaseFirst()
&gt; +                    || (dir == LEFT || dir == BACKWARD) &amp;&amp; m_selection.isBaseFirst()))

This long expression with nested boolean logic is hard to read.

A couple helper functions might collapse this and make it readable, for example one tells if a granularity is one of the &quot;boundary&quot; styles instead of listing them all.

Another kind of helper function that could make the logic clearer would be setStart and setEnd functions that decide whether to modify the base or extent. Using them instead of having logic here with all that isBaseFirst stuff could make it a lot easier to see what the code is doing.

    if (!isEditingMacBehavior || m_selection.isCaret() || !isBoundary(granularity))
        setExtent(position, userTriggered);
    else {
        // Standard Mac behavior when extending to a boundary is grow the selection rather
        // than leaving the base in place and moving the extent. Matches NSTextView.
        if (direction == FORWARD || direction == RIGHT)
            setEnd(position, userTriggered);
        else
            setStart(position, userTriggered);
    }

I think the code I wrote above is easier to understand.

I&apos;m going to say review+, but I think both of my comments represent opportunities to make this code significantly clearer. Please consider my suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204740</commentid>
    <comment_count>3</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-26 13:08:43 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I&apos;m going to say review+, but I think both of my comments represent
&gt; opportunities to make this code significantly clearer. Please consider my
&gt; suggestions.

Thanks. I agree, your comments make the code much better. Will do and commit shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204747</commentid>
    <comment_count>4</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-26 13:19:24 -0700</bug_when>
    <thetext>Committed r56639: &lt;http://trac.webkit.org/changeset/56639&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51683</attachid>
            <date>2010-03-25 15:26:15 -0700</date>
            <delta_ts>2010-03-26 10:01:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36539-20100325152614.patch</filename>
            <type>text/plain</type>
            <size>23758</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNDg1ODI3Li5hNDk0NDMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTAtMDMt
MjUgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBzaGlmdCtob21lL2VuZCBhbmQgY21kK3NoaWZ0
K2xlZnQvcmlnaHQgZG9uJ3QgZXh0ZW5kIHRoZSBzZWxlY3Rpb24gY29ycmVjdGx5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUzOQorCisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWFmdGVyLW1vdXNlLXNlbGVjdGlvbi5odG1sOgor
ICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0
OgorICAgICAgICBFeHRlbmRpbmcgZm9yd2FyZCBieSBsaW5lYm91bmRhcnkgc2VsZWN0cyB0aGUg
d2hvbGUgbGluZS4gTm93IGV4dGVuZGluZyBiYWNrd2FyZHMKKyAgICAgICAgYnkgbGluZWJvdW5k
YXJ5IGFmdGVyIHRoZSB3aG9sZSBsaW5lIGlzIHNlbGVjdGVkIGlzIGEgbm9vcCBpbnN0ZWFkIG9m
IGNvbGxhcHNlZAorICAgICAgICB0aGUgc2VsZWN0aW9uIHRvIHRoZSBzdGFydC4KKyAgICAgICAg
KiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJlZ2luLWVuZC5odG1sOgorICAgICAgICBKdXN0IGNs
ZWFuZWQgdXAgdGhpcyB0ZXN0LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVj
dGlvbi9leHRlbmQtYWZ0ZXItbW91c2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dDoKKworMjAxMC0w
My0yNSAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhdmlkIExldmluLgogCiAgICAgICAgIG1vdXNlLWJhc2VkIHNlbGVjdGlvbnMgYXJlIGFs
d2F5cyBkaXJlY3Rpb25hbCBvbiBXaW5kb3cvTGludXgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1hZnRlci1tb3VzZS1zZWxlY3Rpb24uaHRtbCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1hZnRlci1tb3VzZS1zZWxlY3Rpb24u
aHRtbAppbmRleCA3OWM3OWZkLi4yMTM5MGY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9leHRlbmQtYWZ0ZXItbW91c2Utc2VsZWN0aW9uLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWFmdGVyLW1vdXNlLXNlbGVjdGlvbi5o
dG1sCkBAIC00OSwyMCArNDksMTYgQEAgZnVuY3Rpb24gZWRpdGluZ1Rlc3QoKSB7CiAKICAgICBl
eHRlbmRTZWxlY3Rpb25Gb3J3YXJkQnlMaW5lQm91bmRhcnlDb21tYW5kKCk7CiAKLSAgICBpZiAo
b25NYWNQbGF0Zm9ybSkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBlbmNvZGVzIHdoYXQgVGV4
dEVkaXQgZG9lcy4gQ3VycmVudGx5IFdlYktpdCBkb2VzIHRoZSB3cm9uZyB0aGluZy4KLSAgICAg
ICAgLy8gVGhlIHNlbGVjdGlvbiBzaG91bGQgZ28gZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHN0YXJ0
VGFyZ2V0IHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUgdGhhdCBlbmRUYXJnZXQgaXMgb24uCisgICAg
aWYgKG9uTWFjUGxhdGZvcm0pCiAgICAgICAgIGFzc2VydFNlbGVjdGlvbkF0KGVuZFRhcmdldC5u
ZXh0U2libGluZywgMSwgc3RhcnRUYXJnZXQuZmlyc3RDaGlsZCwgMCk7Ci0gICAgfSBlbHNlCisg
ICAgZWxzZQogICAgICAgICBhc3NlcnRTZWxlY3Rpb25BdChzdGFydFRhcmdldC5maXJzdENoaWxk
LCAwLCBlbmRUYXJnZXQubmV4dFNpYmxpbmcsIDEpOwogCiAgICAgZXh0ZW5kU2VsZWN0aW9uQmFj
a3dhcmRCeUxpbmVCb3VuZGFyeUNvbW1hbmQoKTsKIAotICAgIGlmIChvbk1hY1BsYXRmb3JtKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGVuY29kZXMgd2hhdCBUZXh0RWRpdCBkb2VzLiBDdXJy
ZW50bHkgV2ViS2l0IGRvZXMgdGhlIHdyb25nIHRoaW5nLgotICAgICAgICAvLyBUaGUgc2VsZWN0
aW9uIHNob3VsZCBjb250YWluIHRoZSBib3RoIGVudGlyZSBsaW5lcyB0aGF0IGVuZFRhcmdldCBh
bmQgc3RhcnRUYXJnZXQgYXJlIG9uLgorICAgIGlmIChvbk1hY1BsYXRmb3JtKQogICAgICAgICBh
c3NlcnRTZWxlY3Rpb25BdChlbmRUYXJnZXQubmV4dFNpYmxpbmcsIDEsIHN0YXJ0VGFyZ2V0LnBy
ZXZpb3VzU2libGluZywgMCk7Ci0gICAgfSBlbHNlCisgICAgZWxzZQogICAgICAgICBhc3NlcnRT
ZWxlY3Rpb25BdChzdGFydFRhcmdldC5maXJzdENoaWxkLCAwLCBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndGVzdCcpLCA0KTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dAppbmRleCAwYjMzY2Qy
Li5jZjNhZjU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRl
bmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9leHRlbmQtc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMzk1LDEzNCArMzk1LDEzNCBA
QCBUZXN0IDEsIExUUjoKIEV4dGVuZGluZyBieSBsaW5lQm91bmRhcnkKIFRlc3QgMSwgTFRSOgog
ICBFeHRlbmRpbmcgZm9yd2FyZDogIlxuYWJjIEFCQyB4eXogREVGIGRlZlxuIlsoMSwxKSwgKDEs
MjApXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG5hYmMgQUJDIHh5eiBERUYgZGVmXG4iWygx
LDIwKSwgKDEsMSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbmFiYyBBQkMgeHl6IERFRiBk
ZWZcbiJbKDEsMjApXQogVGVzdCAxLCBSVEw6CiAgIEV4dGVuZGluZyBmb3J3YXJkOiAiXG5hYmMg
QUJDIHh5eiBERUYgZGVmXG4iWygxLDEpLCAoMSwyMCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDog
ICJcbmFiYyBBQkMgeHl6IERFRiBkZWZcbiJbKDEsMjApLCAoMSwxKV0KKyAgRXh0ZW5kaW5nIGJh
Y2t3YXJkOiAgIlxuYWJjIEFCQyB4eXogREVGIGRlZlxuIlsoMSwyMCldCiBUZXN0IDIsIExUUjoK
ICAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbkFCQyB4eXogREVGIGRlZiBHSElcbiJbKDEsMSksICgx
LDIwKV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIlxuQUJDIHh5eiBERUYgZGVmIEdISVxuIlso
MSwyMCksICgxLDEpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG5BQkMgeHl6IERFRiBkZWYg
R0hJXG4iWygxLDIwKV0KIFRlc3QgMiwgUlRMOgogICBFeHRlbmRpbmcgZm9yd2FyZDogIlxuQUJD
IHh5eiBERUYgZGVmIEdISVxuIlsoMSwxKSwgKDEsMjApXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6
ICAiXG5BQkMgeHl6IERFRiBkZWYgR0hJXG4iWygxLDIwKSwgKDEsMSldCisgIEV4dGVuZGluZyBi
YWNrd2FyZDogICJcbkFCQyB4eXogREVGIGRlZiBHSElcbiJbKDEsMjApXQogVGVzdCAzLCBMVFI6
CiAgIEV4dGVuZGluZyBmb3J3YXJkOiAiXG5BQkMgREVGIEFCQ1xuIlsoMSwxKSwgKDEsMTIpXQot
ICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG5BQkMgREVGIEFCQ1xuIlsoMSwxMiksICgxLDEpXQor
ICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG5BQkMgREVGIEFCQ1xuIlsoMSwxMildCiBUZXN0IDMs
IFJUTDoKICAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbkFCQyBERUYgQUJDXG4iWygxLDEpLCAoMSwx
MildCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbkFCQyBERUYgQUJDXG4iWygxLDEyKSwgKDEs
MSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbkFCQyBERUYgQUJDXG4iWygxLDEyKV0KIFRl
c3QgNCwgTFRSOgogICBFeHRlbmRpbmcgZm9yd2FyZDogIlxuYWJjIGVmZCBkYWJlYlxuIlsoMSwx
KSwgKDEsMTQpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG5hYmMgZWZkIGRhYmViXG4iWygx
LDE0KSwgKDEsMSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbmFiYyBlZmQgZGFiZWJcbiJb
KDEsMTQpXQogVGVzdCA0LCBSVEw6CiAgIEV4dGVuZGluZyBmb3J3YXJkOiAiXG5hYmMgZWZkIGRh
YmViXG4iWygxLDEpLCAoMSwxNCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbmFiYyBlZmQg
ZGFiZWJcbiJbKDEsMTQpLCAoMSwxKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIlxuYWJjIGVm
ZCBkYWJlYlxuIlsoMSwxNCldCiBUZXN0IDUsIExUUjoKICAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJM
b3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBh
bWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiIGFt
ZXQiWygwLDUpXQogVGVzdCA1LCBSVEw6CiAgIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlso
MCwwKV0sICIgYW1ldCJbKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICIgYW1ldCJbKDAs
NSldLCAiTG9yZW0gIlsoMCwwKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1
KV0KIFRlc3QgNiwgTFRSOgogICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVtICJbKDAsMCldLCAi
IGFtZXQiWygwLDUpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiIGFtZXQiWygwLDUpXSwgIkxv
cmVtICJbKDAsMCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogICIgYW1ldCJbKDAsNSldCiBUZXN0
IDYsIFJUTDoKICAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0Ilso
MCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAiWygw
LDApXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiIGFtZXQiWygwLDUpXQogVGVzdCA3LCBMVFI6
CiAgIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCi0g
IEV4dGVuZGluZyBiYWNrd2FyZDogICIgYW1ldCJbKDAsNSldLCAiTG9yZW0gIlsoMCwwKV0KKyAg
RXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1KV0KIFRlc3QgNywgUlRMOgogICBFeHRl
bmRpbmcgZm9yd2FyZDogIkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygwLDUpXQotICBFeHRlbmRp
bmcgYmFja3dhcmQ6ICAiIGFtZXQiWygwLDUpXSwgIkxvcmVtICJbKDAsMCldCisgIEV4dGVuZGlu
ZyBiYWNrd2FyZDogICIgYW1ldCJbKDAsNSldCiBUZXN0IDgsIExUUjoKICAgRXh0ZW5kaW5nIGZv
cndhcmQ6ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3
YXJkOiAgIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQorICBFeHRlbmRpbmcgYmFja3dh
cmQ6ICAiIGFtZXQiWygwLDUpXQogVGVzdCA4LCBSVEw6CiAgIEV4dGVuZGluZyBmb3J3YXJkOiAi
TG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICIg
YW1ldCJbKDAsNSldLCAiTG9yZW0gIlsoMCwwKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBh
bWV0IlsoMCw1KV0KIFRlc3QgOSwgTFRSOgogICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVtICJb
KDAsMCksICgwLDUpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiTG9yZW0gIlsoMCw1KSwgKDAs
MCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogICJMb3JlbSAiWygwLDUpXQogVGVzdCA5LCBSVEw6
CiAgIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKSwgKDAsNSldCi0gIEV4dGVuZGlu
ZyBiYWNrd2FyZDogICJMb3JlbSAiWygwLDUpLCAoMCwwKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJk
OiAgIkxvcmVtICJbKDAsNSldCiBUZXN0IDEwLCBMVFI6CiAgIEV4dGVuZGluZyBmb3J3YXJkOiAi
TG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICIg
YW1ldCJbKDAsNSldLCAiTG9yZW0gIlsoMCwwKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBh
bWV0IlsoMCw1KV0KIFRlc3QgMTAsIFJUTDoKICAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAi
WygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0Ilso
MCw1KV0sICJMb3JlbSAiWygwLDApXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiIGFtZXQiWygw
LDUpXQogVGVzdCAxMSwgTFRSOgogICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVtICJbKDAsMCld
LCAiaXBzdW0gZG9sb3IiWygwLDExKV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgImlwc3VtIGRv
bG9yIlsoMCwxMSldLCAiTG9yZW0gIlsoMCwwKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgImlw
c3VtIGRvbG9yIlsoMCwxMSldCiBUZXN0IDExLCBSVEw6CiAgIEV4dGVuZGluZyBmb3J3YXJkOiAi
TG9yZW0gIlsoMCwwKV0sICJpcHN1bSBkb2xvciJbKDAsMTEpXQotICBFeHRlbmRpbmcgYmFja3dh
cmQ6ICAiaXBzdW0gZG9sb3IiWygwLDExKV0sICJMb3JlbSAiWygwLDApXQorICBFeHRlbmRpbmcg
YmFja3dhcmQ6ICAiaXBzdW0gZG9sb3IiWygwLDExKV0KIFRlc3QgMTIsIExUUjoKICAgRXh0ZW5k
aW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5n
IGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQorICBFeHRlbmRpbmcg
YmFja3dhcmQ6ICAiIGFtZXQiWygwLDUpXQogVGVzdCAxMiwgUlRMOgogICBFeHRlbmRpbmcgZm9y
d2FyZDogIkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygwLDUpXQotICBFeHRlbmRpbmcgYmFja3dh
cmQ6ICAiIGFtZXQiWygwLDUpXSwgIkxvcmVtICJbKDAsMCldCisgIEV4dGVuZGluZyBiYWNrd2Fy
ZDogICIgYW1ldCJbKDAsNSldCiBUZXN0IDEzLCBMVFI6CiAgIEV4dGVuZGluZyBmb3J3YXJkOiAi
TG9yZW0gIlsoMCwwKSwgKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJMb3JlbSAiWygw
LDUpLCAoMCwwKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIkxvcmVtICJbKDAsNSldCiBUZXN0
IDEzLCBSVEw6CiAgIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKSwgKDAsNSldCi0g
IEV4dGVuZGluZyBiYWNrd2FyZDogICJMb3JlbSAiWygwLDUpLCAoMCwwKV0KKyAgRXh0ZW5kaW5n
IGJhY2t3YXJkOiAgIkxvcmVtICJbKDAsNSldCiBUZXN0IDE0LCBMVFI6CiAgIEV4dGVuZGluZyBm
b3J3YXJkOiAiXG4gSnVzdFxuICJbKDIsMildLCAiXG4gQkZEWFxuIlsoMiw2KV0KLSAgRXh0ZW5k
aW5nIGJhY2t3YXJkOiAgIlxuIEJGRFhcbiJbKDIsNildLCAiXG4gSnVzdFxuICJbKDIsMildCisg
IEV4dGVuZGluZyBiYWNrd2FyZDogICJcbiBCRkRYXG4iWygyLDYpXQogVGVzdCAxNCwgUlRMOgog
ICBFeHRlbmRpbmcgZm9yd2FyZDogIlxuIEp1c3RcbiAiWygyLDIpXSwgIlxuIEJGRFhcbiJbKDIs
NildCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbiBCRkRYXG4iWygyLDYpXSwgIlxuIEp1c3Rc
biAiWygyLDIpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG4gQkZEWFxuIlsoMiw2KV0KIFRl
c3QgMTUsIExUUjoKICAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbiBKdXN0XG4gIlsoMiwyKV0sICJc
biBldmVyXG4iWygyLDYpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG4gZXZlclxuIlsoMiw2
KV0sICJcbiBKdXN0XG4gIlsoMiwyKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIlxuIGV2ZXJc
biJbKDIsNildCiBUZXN0IDE1LCBSVEw6CiAgIEV4dGVuZGluZyBmb3J3YXJkOiAiXG4gSnVzdFxu
ICJbKDIsMildLCAiXG4gZXZlclxuIlsoMiw2KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIlxu
IGV2ZXJcbiJbKDIsNildLCAiXG4gSnVzdFxuICJbKDIsMildCisgIEV4dGVuZGluZyBiYWNrd2Fy
ZDogICJcbiBldmVyXG4iWygyLDYpXQogVGVzdCAxNiwgTFRSOgogICBFeHRlbmRpbmcgZm9yd2Fy
ZDogImNhciBtZWFucyBBQkMuIlsoMCwwKSwgKDAsMTQpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6
ICAiY2FyIG1lYW5zIEFCQy4iWygwLDE0KSwgKDAsMCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDog
ICJjYXIgbWVhbnMgQUJDLiJbKDAsMTQpXQogVGVzdCAxNiwgUlRMOgogICBFeHRlbmRpbmcgZm9y
d2FyZDogImNhciBtZWFucyBBQkMuIlsoMCwwKSwgKDAsMTQpXQotICBFeHRlbmRpbmcgYmFja3dh
cmQ6ICAiY2FyIG1lYW5zIEFCQy4iWygwLDE0KSwgKDAsMCldCisgIEV4dGVuZGluZyBiYWNrd2Fy
ZDogICJjYXIgbWVhbnMgQUJDLiJbKDAsMTQpXQogVGVzdCAxNywgTFRSOgogICBFeHRlbmRpbmcg
Zm9yd2FyZDogIuGqnGNhciBERUYgQUJDLuGqnSJbKDEsMSksICgxLDEzKV0KLSAgRXh0ZW5kaW5n
IGJhY2t3YXJkOiAgIuGqnGNhciBERUYgQUJDLuGqnSJbKDEsMTMpLCAoMSwxKV0KKyAgRXh0ZW5k
aW5nIGJhY2t3YXJkOiAgIuGqnGNhciBERUYgQUJDLuGqnSJbKDEsMTMpXQogVGVzdCAxNywgUlRM
OgogICBFeHRlbmRpbmcgZm9yd2FyZDogIuGqnGNhciBERUYgQUJDLuGqnSJbKDEsMSksICgxLDEz
KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIuGqnGNhciBERUYgQUJDLuGqnSJbKDEsMTMpLCAo
MSwxKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIuGqnGNhciBERUYgQUJDLuGqnSJbKDEsMTMp
XQogVGVzdCAxOCwgTFRSOgogICBFeHRlbmRpbmcgZm9yd2FyZDogImhlIHNhaWQgIuGqnGNhciBE
RUYgQUJD4aqdLiIiWygwLDApLCAoMCwyNCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJoZSBz
YWlkICLhqpxjYXIgREVGIEFCQ+GqnS4iIlsoMCwyNCksICgwLDApXQorICBFeHRlbmRpbmcgYmFj
a3dhcmQ6ICAiaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0uIiJbKDAsMjQpXQogVGVzdCAxOCwg
UlRMOgogICBFeHRlbmRpbmcgZm9yd2FyZDogImhlIHNhaWQgIuGqnGNhciBERUYgQUJD4aqdLiIi
WygwLDApLCAoMCwyNCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJoZSBzYWlkICLhqpxjYXIg
REVGIEFCQ+GqnS4iIlsoMCwyNCksICgwLDApXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiaGUg
c2FpZCAi4aqcY2FyIERFRiBBQkPhqp0uIiJbKDAsMjQpXQogVGVzdCAxOSwgTFRSOgogICBFeHRl
bmRpbmcgZm9yd2FyZDogIkdISSBKS0wgTU5PICfhqptoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+Gq
nSLhqp0nPyJbKDAsMCksICgwLDQwKV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIkdISSBKS0wg
TU5PICfhqptoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnSLhqp0nPyJbKDAsNDApLCAoMCwwKV0K
KyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIkdISSBKS0wgTU5PICfhqptoZSBzYWlkICLhqpxjYXIg
REVGIEFCQ+GqnSLhqp0nPyJbKDAsNDApXQogVGVzdCAxOSwgUlRMOgogICBFeHRlbmRpbmcgZm9y
d2FyZDogIkdISSBKS0wgTU5PICfhqptoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnSLhqp0nPyJb
KDAsMCksICgwLDQwKV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIkdISSBKS0wgTU5PICfhqpto
ZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnSLhqp0nPyJbKDAsNDApLCAoMCwwKV0KKyAgRXh0ZW5k
aW5nIGJhY2t3YXJkOiAgIkdISSBKS0wgTU5PICfhqptoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+Gq
nSLhqp0nPyJbKDAsNDApXQogVGVzdCAyMCwgTFRSOgogICBFeHRlbmRpbmcgZm9yd2FyZDogIkFC
QyBhYmMgREVGIlsoMCwwKSwgKDAsMTEpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiQUJDIGFi
YyBERUYiWygwLDExKSwgKDAsMCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogICJBQkMgYWJjIERF
RiJbKDAsMTEpXQogVGVzdCAyMCwgUlRMOgogICBFeHRlbmRpbmcgZm9yd2FyZDogIkFCQyBhYmMg
REVGIlsoMCwwKSwgKDAsMTEpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiQUJDIGFiYyBERUYi
WygwLDExKSwgKDAsMCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogICJBQkMgYWJjIERFRiJbKDAs
MTEpXQogVGVzdCAyMSwgTFRSOgogICBFeHRlbmRpbmcgZm9yd2FyZDogImFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygwLDApLCAoMCw4KV0KLSAgRXh0
ZW5kaW5nIGJhY2t3YXJkOiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyAiWygwLDgpLCAoMCwwKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgImFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygwLDgpXQogVGVz
dCAyMSwgUlRMOgogICBFeHRlbmRpbmcgZm9yd2FyZDogImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygwLDApLCAoMCw3KV0KLSAgRXh0ZW5kaW5nIGJh
Y2t3YXJkOiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyAiWygwLDcpLCAoMCwwKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgImFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygwLDcpXQogVGVzdCAyMiwgTFRS
OgogICBFeHRlbmRpbmcgZm9yd2FyZDogImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyAiWygwLDApLCAoMCw4KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAg
ImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygwLDgp
LCAoMCwwKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygwLDgpXQogVGVzdCAyMiwgUlRMOgogICBFeHRl
bmRpbmcgZm9yd2FyZDogImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyAiWygwLDApLCAoMCw3KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgImFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygwLDcpLCAoMCwwKV0K
KyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyAiWygwLDcpXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9tb3ZlLWJlZ2luLWVuZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vbW92ZS1iZWdpbi1lbmQuaHRtbAppbmRleCBkNmI0ZjliLi44YjM0MDhiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJlZ2luLWVuZC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYmVnaW4tZW5kLmh0bWwK
QEAgLTEsNzkgKzEsODggQEAKLTxodG1sPgotICAgIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CiAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7Ci08
L3NjcmlwdD4KKyAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworfQorCit2
YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOworCitmdW5jdGlvbiBsb2dSZXN1bHQoc3Ry
KSB7CisgICAgaWYgKHN0ciAhPSAnU1VDQ0VTUycpCisgICAgICAgIHN0ciArPSAnIGJhc2VPZmZz
ZXQ6ICcgKyBzZWwuYmFzZU9mZnNldCArICcgZXh0ZW50T2Zmc2V0OiAnICsgc2VsLmV4dGVudE9m
ZnNldDsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0g
c3RyOworfQogCi0gICAgICAgIDxzY3JpcHQ+Ci0gICAgICAgICAgICBmdW5jdGlvbiBydW5UZXN0
KCkgewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbG9nKCdUaGlzIHRlc3Qg
bXVzdCBiZSBydW4gYnkgRHVtcFJlbmRlclRyZWUhJykgCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgICAgICB9CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICgh
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxvZygnVGhpcyB0ZXN0IG11
c3QgYmUgcnVuIGJ5IER1bXBSZW5kZXJUcmVlIScpIAorICAgICAgICByZXR1cm47CisgICAgfQog
Ci0gICAgICAgICAgICAgICAgdmFyIG9uTWFjUGxhdGZvcm0gPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5zZWFyY2goL1xiTWFjIE9TIFhcYi8pICE9IC0x
KQotICAgICAgICAgICAgICAgICAgICBvbk1hY1BsYXRmb3JtID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICB2YXIgYXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdhcmVhJyk7Ci0gICAgICAgICAgICAgICAgYXJlYS5mb2N1cygpOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Ci0gICAg
ICAgICAgICAgICAgLy8gUG9zaXRpb24gdGhlIGNhcmV0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhl
IHN0cmluZy4KLSAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJsZWZ0QXJyb3ci
KTsKKyAgICB2YXIgb25NYWNQbGF0Zm9ybSA9ICBuYXZpZ2F0b3IudXNlckFnZW50LnNlYXJjaCgv
XGJNYWMgT1MgWFxiLykgIT0gLTE7CisgICAgCisgICAgdmFyIGFyZWEgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYXJlYScpOworICAgIGFyZWEuZm9jdXMoKTsKKyAgICAKKyAgICAvLyBQb3Np
dGlvbiB0aGUgY2FyZXQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLgorICAgIGV2ZW50
U2VuZGVyLmtleURvd24oImxlZnRBcnJvdyIpOwogCi0gICAgICAgICAgICAgICAgLy8gTm93IG1v
dmUgdG8gdGhlIGVuZAotICAgICAgICAgICAgICAgIGlmIChvbk1hY1BsYXRmb3JtKQotICAgICAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJyaWdodEFycm93IiwgWyJtZXRhS2V5
Il0pOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIua2V5RG93bigiZW5kIik7CisgICAgLy8gTm93IG1vdmUgdG8gdGhlIGVuZAorICAgIGlmIChv
bk1hY1BsYXRmb3JtKQorICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJyaWdodEFycm93Iiwg
WyJtZXRhS2V5Il0pOworICAgIGVsc2UKKyAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZW5k
Iik7CiAKLSAgICAgICAgICAgICAgICBpZiAoc2VsLmJhc2VPZmZzZXQgIT0gOSB8fCBzZWwuZXh0
ZW50T2Zmc2V0ICE9IDkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAvLyBOb3cgbW92ZSBiYWNrIHRvIHRoZSBiZWdpbm5pbmcK
LSAgICAgICAgICAgICAgICBpZiAob25NYWNQbGF0Zm9ybSkKLSAgICAgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIua2V5RG93bigibGVmdEFycm93IiwgWyJtZXRhS2V5Il0pOwotICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiaG9t
ZSIpOworICAgIGlmIChzZWwuYmFzZU9mZnNldCAhPSA5IHx8IHNlbC5leHRlbnRPZmZzZXQgIT0g
OSkgeworICAgICAgICBsb2dSZXN1bHQoIlNlbGVjdGlvbiBzaG91bGQgYmUgYXQgdGhlIGVuZC4i
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICAvLyBOb3cgbW92ZSBiYWNrIHRv
IHRoZSBiZWdpbm5pbmcKKyAgICBpZiAob25NYWNQbGF0Zm9ybSkKKyAgICAgICAgZXZlbnRTZW5k
ZXIua2V5RG93bigibGVmdEFycm93IiwgWyJtZXRhS2V5Il0pOworICAgIGVsc2UKKyAgICAgICAg
ZXZlbnRTZW5kZXIua2V5RG93bigiaG9tZSIpOwogCi0gICAgICAgICAgICAgICAgaWYgKHNlbC5i
YXNlT2Zmc2V0ICE9IDAgfHwgc2VsLmV4dGVudE9mZnNldCAhPSAwKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgaWYgKHNlbC5iYXNlT2Zmc2V0ICE9IDAgfHwgc2VsLmV4dGVudE9m
ZnNldCAhPSAwKSB7CisgICAgICAgIGxvZ1Jlc3VsdCgiU2VsZWN0aW9uIHNob3VsZCBiZSBhdCB0
aGUgYmVnaW5uaW5nLiIpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgICAgICAgICAg
ICAgLy8gTm93IG1vdmUgdG8gdGhlIGVuZCwgc2VsZWN0aW5nCi0gICAgICAgICAgICAgICAgaWYg
KG9uTWFjUGxhdGZvcm0pCi0gICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24o
InJpZ2h0QXJyb3ciLCBbIm1ldGFLZXkiLCAic2hpZnRLZXkiXSk7Ci0gICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJlbmQiLFsic2hp
ZnRLZXkiXSk7CisgICAgLy8gTm93IG1vdmUgdG8gdGhlIGVuZCwgc2VsZWN0aW5nCisgICAgaWYg
KG9uTWFjUGxhdGZvcm0pCisgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oInJpZ2h0QXJyb3ci
LCBbIm1ldGFLZXkiLCAic2hpZnRLZXkiXSk7CisgICAgZWxzZQorICAgICAgICBldmVudFNlbmRl
ci5rZXlEb3duKCJlbmQiLFsic2hpZnRLZXkiXSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoc2Vs
LmJhc2VPZmZzZXQgIT0gMCB8fCBzZWwuZXh0ZW50T2Zmc2V0ICE9IDkpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoc2VsLmJhc2VPZmZzZXQgIT0gMCB8fCBzZWwuZXh0ZW50
T2Zmc2V0ICE9IDkpIHsKKyAgICAgICAgbG9nUmVzdWx0KCJTZWxlY3Rpb24gc2hvdWxkIGNvbnRh
aW4gdGhlIHdob2xlIGxpbmUgYW5kIGhhdmUgZm9yd2FyZCBkaXJlY3Rpb25hbGl0eS4iKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KIAotICAgICAgICAgICAgICAgIC8vIERlc2VsZWN0IGJ1dCBw
b3NpdGlvbiB0aGUgY2FyZXQgYXQgdGhlIGVuZAotICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmtleURvd24oInJpZ2h0QXJyb3ciKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBpZiAoc2VsLmJhc2VPZmZzZXQgIT0gOSB8fCBzZWwuZXh0ZW50T2Zmc2V0ICE9IDkpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAvLyBOb3cgbW92ZSB0byB0aGUgYmVnaW5uaW5nLCBzZWxlY3RpbmcKLSAgICAgICAgICAgICAg
ICBpZiAob25NYWNQbGF0Zm9ybSkKLSAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5
RG93bigibGVmdEFycm93IiwgWyJtZXRhS2V5IiwgInNoaWZ0S2V5Il0pOwotICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiaG9tZSIs
WyJzaGlmdEtleSJdKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoc2Vs
LmJhc2VPZmZzZXQgIT0gOSB8fCBzZWwuZXh0ZW50T2Zmc2V0ICE9IDApCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ1NVQ0NFU1MnCi0gICAgICAg
ICAgICB9Ci0gICAgICAgIDwvc2NyaXB0PgotICAgIDwvaGVhZD4KLSAgICA8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKTsiPgotICAgICAgICA8ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0iYXJlYSI+U29t
ZSB0ZXh0PC9kaXY+Ci0gICAgICAgIDxkaXY+VGhpcyB0ZXN0cyB0aGF0IG1vdmluZyB0aGUgY2Fy
ZXQgYW5kIHNlbGVjdGluZyB1c2luZyBDb21tYW5kK0xlZnQvUmlnaHQgYXJyb3dzIHdvcmsgY29y
cmVjdGx5LiBJZiB0aGlzIHRleHQgaXMgc3VjY2Vzc2Z1bCwgdGhlIHRleHQgIlNVQ0NFU1MiIHdp
bGwgYmUgc2hvd24gYmVsb3cuPC9kaXY+Ci0gICAgICAgIDxkaXYgaWQ9InJlc3VsdCI+RkFJTFVS
RTwvZGl2PgotICAgIDwvYm9keT4KLTwvaHRtbD4KKyAgICAvLyBEZXNlbGVjdCBidXQgcG9zaXRp
b24gdGhlIGNhcmV0IGF0IHRoZSBlbmQKKyAgICBldmVudFNlbmRlci5rZXlEb3duKCJyaWdodEFy
cm93Iik7CisgICAgCisgICAgaWYgKHNlbC5iYXNlT2Zmc2V0ICE9IDkgfHwgc2VsLmV4dGVudE9m
ZnNldCAhPSA5KSB7CisgICAgICAgIGxvZ1Jlc3VsdCgiU2VsZWN0aW9uIHNob3VsZCBiZSBhdCB0
aGUgZW5kLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gTm93IG1vdmUgdG8g
dGhlIGJlZ2lubmluZywgc2VsZWN0aW5nCisgICAgaWYgKG9uTWFjUGxhdGZvcm0pCisgICAgICAg
IGV2ZW50U2VuZGVyLmtleURvd24oImxlZnRBcnJvdyIsIFsibWV0YUtleSIsICJzaGlmdEtleSJd
KTsKKyAgICBlbHNlCisgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImhvbWUiLFsic2hpZnRL
ZXkiXSk7CisgICAgCisgICAgaWYgKHNlbC5iYXNlT2Zmc2V0ICE9IDkgfHwgc2VsLmV4dGVudE9m
ZnNldCAhPSAwKSB7CisgICAgICAgIGxvZ1Jlc3VsdCgiU2VsZWN0aW9uIHNob3VsZCBjb250YWlu
IHRoZSB3aG9sZSBsaW5lIGFuZCBoYXZlIGJhY2t3YXJkIGRpcmVjdGlvbmFsaXR5LiIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGxvZ1Jlc3VsdCgnU1VDQ0VTUycpOworfQor
PC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiPgorICAgIDxkaXYgY29udGVudGVk
aXRhYmxlIGlkPSJhcmVhIj5Tb21lIHRleHQ8L2Rpdj4KKyAgICA8ZGl2PlRoaXMgdGVzdHMgdGhh
dCBtb3ZpbmcgdGhlIGNhcmV0IGFuZCBzZWxlY3RpbmcgdXNpbmcgQ29tbWFuZCtMZWZ0L1JpZ2h0
IGFycm93cyB3b3JrIGNvcnJlY3RseS4gSWYgdGhpcyB0ZXh0IGlzIHN1Y2Nlc3NmdWwsIHRoZSB0
ZXh0ICJTVUNDRVNTIiB3aWxsIGJlIHNob3duIGJlbG93LjwvZGl2PgorICAgIDxkaXYgaWQ9InJl
c3VsdCI+RkFJTFVSRTwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1hZnRlci1tb3VzZS1zZWxlY3Rpb24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9u
L2V4dGVuZC1hZnRlci1tb3VzZS1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CmluZGV4IDJiNjRhMmIu
LmJkMjQ0ZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Nl
bGVjdGlvbi9leHRlbmQtYWZ0ZXItbW91c2Utc2VsZWN0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWFmdGVyLW1v
dXNlLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTQsOCArNCw4IEBAIGdoaQogUEFTUyBTZWxl
Y3Rpb24gaXMgW2FuY2hvck5vZGU6IFtvYmplY3QgVGV4dF0oYmMpIGFuY2hvck9mZnNldDogMCBm
b2N1c05vZGU6IFtvYmplY3QgVGV4dF0oZWYpIGZvY3VzT2Zmc2V0OiAyIGlzQ29sbGFwc2VkOiBm
YWxzZV0KIFBBU1MgU2VsZWN0aW9uIGlzIFthbmNob3JOb2RlOiBbb2JqZWN0IFRleHRdKGVmKSBh
bmNob3JPZmZzZXQ6IDIgZm9jdXNOb2RlOiBbb2JqZWN0IFRleHRdKGEgKSBmb2N1c09mZnNldDog
MSBpc0NvbGxhcHNlZDogZmFsc2VdCiBQQVNTIFNlbGVjdGlvbiBpcyBbYW5jaG9yTm9kZTogW29i
amVjdCBUZXh0XShlZikgYW5jaG9yT2Zmc2V0OiAyIGZvY3VzTm9kZTogW29iamVjdCBUZXh0XShi
YykgZm9jdXNPZmZzZXQ6IDAgaXNDb2xsYXBzZWQ6IGZhbHNlXQotRkFJTCBTZWxlY3Rpb24gaXMg
W2FuY2hvck5vZGU6IFtvYmplY3QgVGV4dF0oICkgYW5jaG9yT2Zmc2V0OiAwIGZvY3VzTm9kZTog
W29iamVjdCBUZXh0XSggKSBmb2N1c09mZnNldDogMSBpc0NvbGxhcHNlZDogZmFsc2VdIHNob3Vs
ZCBiZSBhdCBhbmNob3JOb2RlOiBbb2JqZWN0IFRleHRdIGFuY2hvck9mZnNldDogMSBmb2N1c05v
ZGU6IFtvYmplY3QgVGV4dF0gZm9jdXNPZmZzZXQ6IDAKLUZBSUwgU2VsZWN0aW9uIGlzIFthbmNo
b3JOb2RlOiBbb2JqZWN0IFRleHRdKGVmKSBhbmNob3JPZmZzZXQ6IDIgZm9jdXNOb2RlOiBbb2Jq
ZWN0IFRleHRdKGQgKSBmb2N1c09mZnNldDogMCBpc0NvbGxhcHNlZDogZmFsc2VdIHNob3VsZCBi
ZSBhdCBhbmNob3JOb2RlOiBbb2JqZWN0IFRleHRdIGFuY2hvck9mZnNldDogMSBmb2N1c05vZGU6
IFtvYmplY3QgVGV4dF0gZm9jdXNPZmZzZXQ6IDAKK1BBU1MgU2VsZWN0aW9uIGlzIFthbmNob3JO
b2RlOiBbb2JqZWN0IFRleHRdKCApIGFuY2hvck9mZnNldDogMSBmb2N1c05vZGU6IFtvYmplY3Qg
VGV4dF0oYmMpIGZvY3VzT2Zmc2V0OiAwIGlzQ29sbGFwc2VkOiBmYWxzZV0KK1BBU1MgU2VsZWN0
aW9uIGlzIFthbmNob3JOb2RlOiBbb2JqZWN0IFRleHRdKCApIGFuY2hvck9mZnNldDogMSBmb2N1
c05vZGU6IFtvYmplY3QgVGV4dF0oYSApIGZvY3VzT2Zmc2V0OiAwIGlzQ29sbGFwc2VkOiBmYWxz
ZV0KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYzQ1
NWNmLi40ZTU5MDAxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDEwLTAzLTI1ICBPamFuIFZhZmFpICA8b2ph
bkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgc2hpZnQraG9tZS9lbmQgYW5kIGNtZCtzaGlmdCtsZWZ0L3JpZ2h0IGRvbid0IGV4
dGVuZCB0aGUgc2VsZWN0aW9uIGNvcnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MzkKKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6
CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeSk6CisgICAgICAgICogZWRpdGluZy9T
ZWxlY3Rpb25Db250cm9sbGVyLmg6CisKKzIwMTAtMDMtMjUgIE9qYW4gVmFmYWkgIDxvamFuQGNo
cm9taXVtLm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KIAogICAgICAg
ICBtb3VzZS1iYXNlZCBzZWxlY3Rpb25zIGFyZSBhbHdheXMgZGlyZWN0aW9uYWwgb24gV2luZG93
cy9MaW51eApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwIGIvV2ViQ29yZS9X
ZWJDb3JlLmJhc2UuZXhwCmluZGV4IDNjYmFmZWIuLmVhYzgxZjkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS5iYXNlLmV4cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKQEAgLTQy
NSw3ICs0MjUsNyBAQCBfX1pON1dlYkNvcmUxOVNlbGVjdGlvbkNvbnRyb2xsZXIxMHNldEZvY3Vz
ZWRFYgogX19aTjdXZWJDb3JlMTlTZWxlY3Rpb25Db250cm9sbGVyMTJzZXRTZWxlY3Rpb25FUktO
U18xNlZpc2libGVTZWxlY3Rpb25FYmJiTlNfMTVUZXh0R3JhbnVsYXJpdHlFCiBfX1pON1dlYkNv
cmUxOVNlbGVjdGlvbkNvbnRyb2xsZXIxNnNldFNlbGVjdGVkUmFuZ2VFUE5TXzVSYW5nZUVOU185
RUFmZmluaXR5RWIKIF9fWk43V2ViQ29yZTE5U2VsZWN0aW9uQ29udHJvbGxlcjVjbGVhckV2Ci1f
X1pON1dlYkNvcmUxOVNlbGVjdGlvbkNvbnRyb2xsZXI2bW9kaWZ5RU5TMF8xMUVBbHRlcmF0aW9u
RU5TMF8xMEVEaXJlY3Rpb25FTlNfMTVUZXh0R3JhbnVsYXJpdHlFYgorX19aTjdXZWJDb3JlMTlT
ZWxlY3Rpb25Db250cm9sbGVyNm1vZGlmeUVOUzBfMTFFQWx0ZXJhdGlvbkVOUzBfMTBFRGlyZWN0
aW9uRU5TXzE1VGV4dEdyYW51bGFyaXR5RWJiCiBfX1pON1dlYkNvcmUxOVNlbGVjdGlvbkNvbnRy
b2xsZXI5c2VsZWN0QWxsRXYKIF9fWk43V2ViQ29yZTE5U2VsZWN0aW9uQ29udHJvbGxlckMxRVBO
U181RnJhbWVFYgogX19aTjdXZWJDb3JlMTlUZXh0UmVzb3VyY2VEZWNvZGVyNWZsdXNoRXYKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcCBiL1dlYkNv
cmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAppbmRleCAxZGQ4NDZkLi4zNWM5YzVl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKKysr
IGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC02MTAsMTMgKzYx
MCwxNyBAQCBWaXNpYmxlUG9zaXRpb24gU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5TW92aW5n
QmFja3dhcmQoVGV4dEdyYW51bGFyaXR5IGdyYW51bAogICAgIHJldHVybiBwb3M7CiB9CiAKLWJv
b2wgU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBFRGlyZWN0
aW9uIGRpciwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIHVzZXJUcmlnZ2VyZWQp
Citib29sIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeShFQWx0ZXJhdGlvbiBhbHRlciwgRURp
cmVjdGlvbiBkaXIsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCB1c2VyVHJpZ2dl
cmVkLCBib29sIGlzRWRpdGluZ01hY0JlaGF2aW9yKQogeworICAgIFNldHRpbmdzKiBzZXR0aW5n
cyA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5zZXR0aW5ncygpIDogMDsKKyAgICAvLyBUaGUgdHJpYWxT
ZWxlY3Rpb25Db250cm9sbGVyIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIGFuIG1fZnJhbWUsIHNv
IHdlIG5lZWQgdG8gZ2V0IHRoZSBlZGl0aW5nIGJlaGF2aW9yIGZpcnN0LgorICAgIGlzRWRpdGlu
Z01hY0JlaGF2aW9yID0gaXNFZGl0aW5nTWFjQmVoYXZpb3IgfHwgc2V0dGluZ3MgJiYgc2V0dGlu
Z3MtPmVkaXRpbmdCZWhhdmlvcigpID09IEVkaXRpbmdNYWNCZWhhdmlvcjsKKwogICAgIGlmICh1
c2VyVHJpZ2dlcmVkKSB7CiAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIgdHJpYWxTZWxlY3Rp
b25Db250cm9sbGVyOwogICAgICAgICB0cmlhbFNlbGVjdGlvbkNvbnRyb2xsZXIuc2V0U2VsZWN0
aW9uKG1fc2VsZWN0aW9uKTsKICAgICAgICAgdHJpYWxTZWxlY3Rpb25Db250cm9sbGVyLnNldElz
RGlyZWN0aW9uYWwobV9pc0RpcmVjdGlvbmFsKTsKLSAgICAgICAgdHJpYWxTZWxlY3Rpb25Db250
cm9sbGVyLm1vZGlmeShhbHRlciwgZGlyLCBncmFudWxhcml0eSwgZmFsc2UpOworICAgICAgICB0
cmlhbFNlbGVjdGlvbkNvbnRyb2xsZXIubW9kaWZ5KGFsdGVyLCBkaXIsIGdyYW51bGFyaXR5LCBm
YWxzZSwgaXNFZGl0aW5nTWFjQmVoYXZpb3IpOwogCiAgICAgICAgIGJvb2wgY2hhbmdlID0gbV9m
cmFtZS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKHRyaWFsU2VsZWN0aW9uQ29udHJvbGxlci5zZWxl
Y3Rpb24oKSk7CiAgICAgICAgIGlmICghY2hhbmdlKQpAQCAtNjY3LDcgKzY3MSwxNSBAQCBib29s
IFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZGlmeShFQWx0ZXJhdGlvbiBhbHRlciwgRURpcmVjdGlv
biBkaXIsIFRleHRHcmFudWxhcgogICAgICAgICAgICAgbW92ZVRvKHBvcywgdXNlclRyaWdnZXJl
ZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFWFRFTkQ6Ci0gICAgICAgICAg
ICBzZXRFeHRlbnQocG9zLCB1c2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgICAgIC8vIFRoaXMgbWF0
Y2hlcyBOU1RleHRWaWV3IGJlaGF2aW9yLiBXaGVuIGV4dGVuZGluZyBhIHNlbGVjdGlvbiB2aWEg
TGluZUJvdW5kYXJ5LCBQYXJhZ3JhcGhCb3VuZGFyeSBvcgorICAgICAgICAgICAgLy8gRG9jdW1l
bnRCb3VuZGFyeSwgdGhlIHNlbGVjdGlvbiBhbHdheXMgZ3Jvd3MgaW5zdGVhZCBvZiBqdXN0IG1v
dmluZyB0aGUgZXh0ZW50LgorICAgICAgICAgICAgaWYgKGlzRWRpdGluZ01hY0JlaGF2aW9yICYm
ICFtX3NlbGVjdGlvbi5pc0NhcmV0KCkKKyAgICAgICAgICAgICAgICAmJiAoZ3JhbnVsYXJpdHkg
PT0gTGluZUJvdW5kYXJ5IHx8IGdyYW51bGFyaXR5ID09IFBhcmFncmFwaEJvdW5kYXJ5IHx8IGdy
YW51bGFyaXR5ID09IERvY3VtZW50Qm91bmRhcnkpCisgICAgICAgICAgICAgICAgJiYgKChkaXIg
PT0gRk9SV0FSRCB8fCBkaXIgPT0gUklHSFQpICYmICFtX3NlbGVjdGlvbi5pc0Jhc2VGaXJzdCgp
CisgICAgICAgICAgICAgICAgICAgIHx8IChkaXIgPT0gTEVGVCB8fCBkaXIgPT0gQkFDS1dBUkQp
ICYmIG1fc2VsZWN0aW9uLmlzQmFzZUZpcnN0KCkpKQorICAgICAgICAgICAgICAgIHNldEJhc2Uo
cG9zLCB1c2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBz
ZXRFeHRlbnQocG9zLCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgg
Yi9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oCmluZGV4IDM3ZTdjMGQuLjUw
MjA1MDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgK
KysrIGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaApAQCAtNzQsNyArNzQs
NyBAQCBwdWJsaWM6CiAKICAgICBFQWZmaW5pdHkgYWZmaW5pdHkoKSBjb25zdCB7IHJldHVybiBt
X3NlbGVjdGlvbi5hZmZpbml0eSgpOyB9CiAKLSAgICBib29sIG1vZGlmeShFQWx0ZXJhdGlvbiwg
RURpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5LCBib29sIHVzZXJUcmlnZ2VyZWQgPSBmYWxzZSk7
CisgICAgYm9vbCBtb2RpZnkoRUFsdGVyYXRpb24sIEVEaXJlY3Rpb24sIFRleHRHcmFudWxhcml0
eSwgYm9vbCB1c2VyVHJpZ2dlcmVkID0gZmFsc2UsIGJvb2wgaXNFZGl0aW5nTWFjQmVoYXZpb3Ig
PSBmYWxzZSk7CiAgICAgYm9vbCBtb2RpZnkoRUFsdGVyYXRpb24sIGludCB2ZXJ0aWNhbERpc3Rh
bmNlLCBib29sIHVzZXJUcmlnZ2VyZWQgPSBmYWxzZSk7CiAgICAgVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5KCkgY29uc3QgeyByZXR1cm4gbV9ncmFudWxhcml0eTsgfQogCg==
</data>
<flag name="review"
          id="34997"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>