<?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>151227</bug_id>
          
          <creation_ts>2015-11-12 15:54:51 -0800</creation_ts>
          <short_desc>Hardware keyboard spacebar scrolls too far on iOS</short_desc>
          <delta_ts>2015-11-13 10:12:51 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>enrica</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1141673</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-11-12 15:54:51 -0800</bug_when>
    <thetext>Hardware keyboard spacebar scrolls too far on iOS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141675</commentid>
    <comment_count>1</comment_count>
      <attachid>265445</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-11-12 15:56:02 -0800</bug_when>
    <thetext>Created attachment 265445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141688</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-12 16:27:38 -0800</bug_when>
    <thetext>This should be testable with the new stuff. Please make a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141689</commentid>
    <comment_count>3</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-11-12 16:28:33 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; This should be testable with the new stuff. Please make a test.

Yup, Tim&apos;s working on one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141713</commentid>
    <comment_count>4</comment_count>
      <attachid>265457</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-11-12 17:25:06 -0800</bug_when>
    <thetext>Created attachment 265457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141722</commentid>
    <comment_count>5</comment_count>
      <attachid>265457</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-12 17:45:47 -0800</bug_when>
    <thetext>Comment on attachment 265457
Patch

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

&gt; Source/WebKit2/ChangeLog:43
&gt; +        If we&apos;re in the middle of resending an event we didn&apos;t handle the first
&gt; +        time, just ignore it.

Why does this happen? Would be nice to have an explanation in a comment.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:89
&gt; +    [_uiEvent release];

Doesn&apos;t RetainPtr take care of this for you?

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2808
&gt; +    else

Would prefer a return instead of an else.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2815
&gt; +    if (event == _uiEventBeingResent)
&gt; +        return;

Rather confusing.

&gt; LayoutTests/fast/events/ios/keyboard-scrolling-distance.html:10
&gt; +            // Need to tap to focus so that key events go through (seems wrong!).

Please file a bug on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141737</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-11-12 19:29:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/23500681&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141738</commentid>
    <comment_count>7</comment_count>
      <attachid>265457</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-11-12 19:45:00 -0800</bug_when>
    <thetext>Comment on attachment 265457
Patch

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

&gt;&gt; Source/WebKit2/ChangeLog:43
&gt;&gt; +        time, just ignore it.
&gt; 
&gt; Why does this happen? Would be nice to have an explanation in a comment.

See below.

&gt;&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:89
&gt;&gt; +    [_uiEvent release];
&gt; 
&gt; Doesn&apos;t RetainPtr take care of this for you?

It&apos;s just a property, no RetainPtr. We could, but that would be wordier.

&gt;&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2808
&gt;&gt; +    else
&gt; 
&gt; Would prefer a return instead of an else.

Seems reasonable.

&gt;&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2815
&gt;&gt; +        return;
&gt; 
&gt; Rather confusing.

Which part? We want to ignore it if we&apos;ve already had a crack at the event and didn&apos;t want to handle it, and instead let it bubble further up the chain. This is very similar to what happens on Mac. On Mac, there is a comment near the member:
    // We keep here the event when resending it to
    // the application to distinguish the case of a new event from one
    // that has been already sent to WebCore.
Do you want something like that here?
Or maybe like the one in performKeyEquivalent:
        // WebCore has already seen the event, no need for custom processing.

&gt;&gt; LayoutTests/fast/events/ios/keyboard-scrolling-distance.html:10
&gt;&gt; +            // Need to tap to focus so that key events go through (seems wrong!).
&gt; 
&gt; Please file a bug on this.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141864</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-11-13 10:12:29 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/192432</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141865</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-11-13 10:12:51 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt;&gt; LayoutTests/fast/events/ios/keyboard-scrolling-distance.html:10
&gt; &gt;&gt; +            // Need to tap to focus so that key events go through (seems wrong!).
&gt; &gt; 
&gt; &gt; Please file a bug on this.
&gt; 
&gt; Will do.

Filed https://bugs.webkit.org/show_bug.cgi?id=151264</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265445</attachid>
            <date>2015-11-12 15:56:02 -0800</date>
            <delta_ts>2015-11-12 17:25:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151227-20151112155556.patch</filename>
            <type>text/plain</type>
            <size>13867</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTI1MmRjN2VjOTM1NzM2
ODNmZDJiYjA2YjZhZjU5ODQ5NzU4MjUxYi4uNjhjYzk5MmRlYzZiZDJkMjM0OWRjN2ZlYzlhZmJm
YmUxYTEyNDQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE1LTExLTEyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEhhcmR3YXJlIGtl
eWJvYXJkIHNwYWNlYmFyIHNjcm9sbHMgdG9vIGZhciBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTIyNworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjM1MDA2ODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlcmUgd2VyZSB0d28gYnVncyBjb25zcGlyaW5nIGhlcmUgdG8gbWFrZSBzcGFj
ZWJhciBzY3JvbGxpbmcgdmVyeSB3cm9uZyBvbiBpT1M6CisKKyAgICAgICAgMSkgSW5jb21pbmcg
a2V5IGV2ZW50cyB3ZXJlIGJlaW5nIGhhbmRsZWQgdHdpY2UKKyAgICAgICAgICAgIC0gZml4IHRo
aXMgYnkgb25seSBwcm9wYWdhdGluZyB0aGUgZXZlbnQgdG8gc3VwZXIgaWYgd2UgZG9uJ3QKKyAg
ICAgICAgICAgIGVuZCB1cCBoYW5kbGluZyB0aGUgZXZlbnQgb3Vyc2VsdmVzCisKKyAgICAgICAg
MikgX3Njcm9sbEJ5T2Zmc2V0IHdhcyBub3QgY29udmVydGluZyB0aGUgb2Zmc2V0IGRlbHRhIG91
dCBvZiBjb250ZW50IGNvb3JkaW5hdGVzCisgICAgICAgICAgICAtIGZpeCB0aGlzIGJ5IGRvaW5n
IHRoZSByZWxldmFudCBjb252ZXJzaW9uIGFuZCByZW5hbWluZyB0aGUgZnVuY3Rpb24KKyAgICAg
ICAgICAgIHRvIG1ha2UgaXQgbW9yZSBjbGVhciBleGFjdGx5IHdoYXQgaXQgZG9lcworCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfc2Nyb2xsQnlDb250ZW50T2Zmc2V0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Nj
cm9sbEJ5T2Zmc2V0Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgUmVuYW1lIHRvIF9zY3JvbGxCeUNvbnRlbnRP
ZmZzZXQgdG8gbWFrZSBpdCBjbGVhciB0aGF0IHRoaXMgaXMKKyAgICAgICAgaW4gY29udGVudCBj
b29yZGluYXRlcywgYW5kIGRvIHRoZSBjb252ZXJzaW9uIGZyb20gY29udGVudCBjb29yZGluYXRl
cworICAgICAgICAoYXBwbHkgdGhlIHNjYWxlKSBzbyB0aGF0IHdlIHNjcm9sbCBieSB0aGUgcmln
aHQgYW1vdW50LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRvbmVXaXRoS2V5RXZlbnQpOgor
ICAgICAgICBQYXNzIHdoZXRoZXIgdGhlIGV2ZW50IHdhcyBoYW5kbGVkIHRocm91Z2ggdG8gV0tD
b250ZW50Vmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW06CisgICAgICAgICgtW1dLV2ViRXZlbnQgZGVhbGxvY10pOgorICAgICAgICBBZGQgV0tX
ZWJFdmVudCwgd2hpY2ggaXMgYSBXZWJFdmVudCBhbmQgcmV0YWlucyBhIHJlZmVyZW5jZSB0byB0
aGUgVUlFdmVudAorICAgICAgICBmcm9tIHdoaWNoIGl0IGNhbWUuCisKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfaGFuZGxlS2V5VUlFdmVudDpdKToKKyAgICAgICAgT25seSBwYXNzIHRoZSBl
dmVudCB0byBzdXBlciBpbW1lZGlhdGVseSBpZiB3ZSBkb24ndCB0cnkgdG8gaGFuZGxlIGl0Lgor
ICAgICAgICBXZSdsbCByZS1zZW5kIGl0IHRvIHN1cGVyIGFzeW5jaHJvbm91c2x5IGlmIHdlIGRl
Y2lkZSBub3QgdG8gaGFuZGxlIGl0LgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaGFuZGxl
S2V5RXZlbnQ6XSk6CisgICAgICAgIElmIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgcmVzZW5kaW5n
IGFuIGV2ZW50IHdlIGRpZG4ndCBoYW5kbGUgdGhlIGZpcnN0CisgICAgICAgIHRpbWUsIGp1c3Qg
aWdub3JlIGl0LgorCisgICAgICAgIE1ha2UgYSBXS1dlYkV2ZW50IGFuZCBzdG9yZSB0aGUgVUlF
dmVudCBvbiBpdC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRIYW5kbGVLZXlFdmVu
dDpldmVudFdhc0hhbmRsZWQ6XSk6CisgICAgICAgIElmIHRoZSBldmVudCB3YXNuJ3QgaGFuZGxl
ZCwgYW5kIGlzIG9uZSBvZiBvdXIgc3BlY2lhbCBldmVudHMgd2l0aCBhCisgICAgICAgIHdyYXBw
ZWQgVUlFdmVudCwgcmVzZW5kIGl0IHRvIHN1cGVyLiBXZSdsbCBpZ25vcmUgaXQgYXMgbm90ZWQg
YWJvdmUuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaW50ZXJwcmV0S2V5RXZlbnQ6aXND
aGFyRXZlbnQ6XSk6CisgICAgICAgIEZhY3RvciBvdXQgdW5vYnNjdXJlZCBjb250ZW50IHJlY3Qg
cmV0cmlldmFsLgorICAgICAgICBNYWtlIHVzZSBvZiBTY3JvbGxiYXI6OnBhZ2VTdGVwIHRvIG1h
dGNoIHRoZSBNYWMgYmVoYXZpb3Igb2Ygbm90CisgICAgICAgIHNjcm9sbGluZyBxdWl0ZSBhIHdo
b2xlIHBhZ2Ugd2hlbiBzY3JvbGxpbmcgd2l0aCB0aGUgc3BhY2ViYXIuCisKIDIwMTUtMTEtMTEg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBfV0tSZW1v
dGVPYmplY3RJbnRlcmZhY2Ugc2hvdWxkIGhhbmRsZSBzcGVjaWZ5aW5nIGFsbG93ZWQgY2xhc3Nl
cyBmb3IgcmVwbHkgYmxvY2sgYXJndW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGVmYzM1ZGE2NTVmMWJiMzU1NmJlOTk1Y2Qx
ODkyZGViZWYzY2RiY2EuLmU0ZTRkZjFjMTkwNzY1ZDdiYzVmNzA1OWJiM2YyODQzZmRiMjE0ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CkBAIC0xMzA5LDEyICsxMzA5LDE1IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGNvbnN0
cmFpbkNvbnRlbnRPZmZzZXQoV2ViQ29yZTo6RmxvYXRQb2ludCBjb250ZW50T2ZmCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLS0gKHZvaWQpX3Njcm9sbEJ5T2Zmc2V0OihXZWJDb3JlOjpGbG9hdFBv
aW50KW9mZnNldAorLSAodm9pZClfc2Nyb2xsQnlDb250ZW50T2Zmc2V0OihXZWJDb3JlOjpGbG9h
dFBvaW50KWNvbnRlbnRPZmZzZXREZWx0YQogewotICAgIENHUG9pbnQgY3VycmVudE9mZnNldCA9
IChbX3Njcm9sbFZpZXcgX2lzQW5pbWF0aW5nU2Nyb2xsXSkgPyBbX3Njcm9sbFZpZXcgX2FuaW1h
dGVkVGFyZ2V0T2Zmc2V0XSA6IFtfc2Nyb2xsVmlldyBjb250ZW50T2Zmc2V0XTsKKyAgICBXZWJD
b3JlOjpGbG9hdFBvaW50IHNjYWxlZE9mZnNldERlbHRhID0gY29udGVudE9mZnNldERlbHRhOwor
ICAgIENHRmxvYXQgem9vbVNjYWxlID0gY29udGVudFpvb21TY2FsZShzZWxmKTsKKyAgICBzY2Fs
ZWRPZmZzZXREZWx0YS5zY2FsZSh6b29tU2NhbGUsIHpvb21TY2FsZSk7CisKKyAgICBDR1BvaW50
IGN1cnJlbnRPZmZzZXQgPSBbX3Njcm9sbFZpZXcgX2lzQW5pbWF0aW5nU2Nyb2xsXSA/IFtfc2Ny
b2xsVmlldyBfYW5pbWF0ZWRUYXJnZXRPZmZzZXRdIDogW19zY3JvbGxWaWV3IGNvbnRlbnRPZmZz
ZXRdOworICAgIENHUG9pbnQgYm91bmRlZE9mZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVkSW5W
YWxpZFJhbmdlKF9zY3JvbGxWaWV3LmdldCgpLCBjdXJyZW50T2Zmc2V0ICsgc2NhbGVkT2Zmc2V0
RGVsdGEpOwogCi0gICAgQ0dQb2ludCBib3VuZGVkT2Zmc2V0ID0gY29udGVudE9mZnNldEJvdW5k
ZWRJblZhbGlkUmFuZ2UoX3Njcm9sbFZpZXcuZ2V0KCksIGN1cnJlbnRPZmZzZXQgKyBvZmZzZXQp
OwotICAgIAogICAgIGlmIChDR1BvaW50RXF1YWxUb1BvaW50KGJvdW5kZWRPZmZzZXQsIGN1cnJl
bnRPZmZzZXQpKQogICAgICAgICByZXR1cm47CiAgICAgW19jb250ZW50VmlldyB3aWxsU3RhcnRa
b29tT3JTY3JvbGxdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IGNiMjU5MTk5ZmNkOGYxNzI3MmU5ZjFiYzRi
ZjM5MzM5ODBjYzM2MDcuLjk1MDdkYzkzMzdmNjE1NDZhNjM0OTJjY2JkMjgxMjZjNDMzOTY3YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0ludGVybmFsLmgKQEAgLTgzLDcgKzgzLDcgQEAgc3RydWN0IFByaW50SW5mbzsKIAogLSAo
dm9pZClfc2Nyb2xsVG9Db250ZW50T2Zmc2V0OihXZWJDb3JlOjpGbG9hdFBvaW50KWNvbnRlbnRP
ZmZzZXQgc2Nyb2xsT3JpZ2luOihXZWJDb3JlOjpJbnRQb2ludClzY3JvbGxPcmlnaW47CiAtIChC
T09MKV9zY3JvbGxUb1JlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRSZWN0IG9yaWdpbjoo
V2ViQ29yZTo6RmxvYXRQb2ludClvcmlnaW4gbWluaW11bVNjcm9sbERpc3RhbmNlOihmbG9hdClt
aW5pbXVtU2Nyb2xsRGlzdGFuY2U7Ci0tICh2b2lkKV9zY3JvbGxCeU9mZnNldDooV2ViQ29yZTo6
RmxvYXRQb2ludClvZmZzZXQ7CistICh2b2lkKV9zY3JvbGxCeUNvbnRlbnRPZmZzZXQ6KFdlYkNv
cmU6OkZsb2F0UG9pbnQpb2Zmc2V0OwogLSAodm9pZClfem9vbVRvRm9jdXNSZWN0OihXZWJDb3Jl
OjpGbG9hdFJlY3QpZm9jdXNlZEVsZW1lbnRSZWN0IHNlbGVjdGlvblJlY3Q6KFdlYkNvcmU6OkZs
b2F0UmVjdClzZWxlY3Rpb25SZWN0SW5Eb2N1bWVudENvb3JkaW5hdGVzIGZvbnRTaXplOihmbG9h
dClmb250U2l6ZSBtaW5pbXVtU2NhbGU6KGRvdWJsZSltaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxl
Oihkb3VibGUpbWF4aW11bVNjYWxlIGFsbG93U2NhbGluZzooQk9PTClhbGxvd1NjYWxpbmcgZm9y
Y2VTY3JvbGw6KEJPT0wpZm9yY2VTY3JvbGw7CiAtIChCT09MKV96b29tVG9SZWN0OihXZWJDb3Jl
OjpGbG9hdFJlY3QpdGFyZ2V0UmVjdCB3aXRoT3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9y
aWdpbiBmaXRFbnRpcmVSZWN0OihCT09MKWZpdEVudGlyZVJlY3QgbWluaW11bVNjYWxlOihkb3Vi
bGUpbWluaW11bVNjYWxlIG1heGltdW1TY2FsZTooZG91YmxlKW1heGltdW1TY2FsZSBtaW5pbXVt
U2Nyb2xsRGlzdGFuY2U6KGZsb2F0KW1pbmltdW1TY3JvbGxEaXN0YW5jZTsKIC0gKHZvaWQpX3pv
b21PdXRXaXRoT3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbiBhbmltYXRlZDooQk9P
TClhbmltYXRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLm1tCmluZGV4IDYzNzI4ZjAzMWNjZGJmMTAxMWJjYzkyNmU3MGViZDk2OTNiZDQy
N2UuLjUzZmY1ZjM5ZjYwYjM2MGRhNzMwZDc4ZDAwZjEwNDNkZDcxN2U5ZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNDIx
LDkgKzQyMSw5IEBAIEludFJlY3QgUGFnZUNsaWVudEltcGw6OnJvb3RWaWV3VG9BY2Nlc3NpYmls
aXR5U2NyZWVuKGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJl
Y3Qocm9vdFZpZXdSZWN0KTsKIH0KICAgICAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRo
S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGJvb2wpCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjpkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQmIGV2ZW50LCBib29sIGV2ZW50V2FzSGFuZGxlZCkKIHsKLSAgICBbbV9jb250ZW50Vmll
dyBfZGlkSGFuZGxlS2V5RXZlbnQ6ZXZlbnQubmF0aXZlRXZlbnQoKV07CisgICAgW21fY29udGVu
dFZpZXcgX2RpZEhhbmRsZUtleUV2ZW50OmV2ZW50Lm5hdGl2ZUV2ZW50KCkgZXZlbnRXYXNIYW5k
bGVkOmV2ZW50V2FzSGFuZGxlZF07CiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgKaW5kZXggYzY1ZjBkYWFlNGNhYTU0MTIzNzlmZDk3MGZlNTE5YmUzNjdjNTUwZC4u
NWI0ZTEzMjdmYjNlYzM1MDY3ODkwNTlmNjRjMDQ0ZDFiMWFlYTMyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5o
CkBAIC0xNDEsNiArMTQxLDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBX
ZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIF9wb3NpdGlvbkluZm9ybWF0
aW9uOwogICAgIFdlYktpdDo6QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24gX2Fzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uOwogICAgIFJldGFpblB0cjxOU09iamVjdDxXS0Zvcm1QZXJpcGhlcmFsPj4gX2lu
cHV0UGVyaXBoZXJhbDsKKyAgICBSZXRhaW5QdHI8VUlFdmVudD4gX3VpRXZlbnRCZWluZ1Jlc2Vu
dDsKIAogICAgIENHUG9pbnQgX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uOwogCkBAIC0yMDIsNyAr
MjAzLDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIC0gKHZvaWQpX3Nob3dQbGF5
YmFja1RhcmdldFBpY2tlcjooQk9PTCloYXNWaWRlbyBmcm9tUmVjdDooY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpZWxlbWVudFJlY3Q7CiAtICh2b2lkKV9zaG93UnVuT3BlblBhbmVsOihXZWJLaXQ6
OldlYk9wZW5QYW5lbFBhcmFtZXRlcnMqKXBhcmFtZXRlcnMgcmVzdWx0TGlzdGVuZXI6KFdlYktp
dDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopbGlzdGVuZXI7CiAtICh2b2lkKWFj
Y2Vzc29yeURvbmU7Ci0tICh2b2lkKV9kaWRIYW5kbGVLZXlFdmVudDooV2ViSU9TRXZlbnQgKill
dmVudDsKKy0gKHZvaWQpX2RpZEhhbmRsZUtleUV2ZW50OihXZWJJT1NFdmVudCAqKWV2ZW50IGV2
ZW50V2FzSGFuZGxlZDooQk9PTClldmVudFdhc0hhbmRsZWQ7CiAtIChWZWN0b3I8V2ViS2l0OjpP
cHRpb25JdGVtPiYpIGFzc2lzdGVkTm9kZVNlbGVjdE9wdGlvbnM7CiAtICh2b2lkKV9lbmFibGVJ
bnNwZWN0b3JOb2RlU2VhcmNoOwogLSAodm9pZClfZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2g7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCmluZGV4IGM0M2VmM2ExZTE3NTMzNzVlOTRiZTZkMTMxYmJjNzcwZDFm
Yjc5YzkuLjVjMWNjZWVkOTM5YzQ2OTFlYmNmZmRjOThjMjMxYjVhZTdiNjMyMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCkBAIC03OCw2ICs3OCwyMCBAQAogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2ln
bikgVUlLZXlib2FyZElucHV0RmxhZ3MgX2lucHV0RmxhZ3M7CiBAZW5kCiAKK0BpbnRlcmZhY2Ug
V0tXZWJFdmVudCA6IFdlYkV2ZW50CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBVSUV2
ZW50ICp1aUV2ZW50OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tXZWJFdmVudAorCistICh2
b2lkKWRlYWxsb2MKK3sKKyAgICBbX3VpRXZlbnQgcmVsZWFzZV07CisgICAgW3N1cGVyIGRlYWxs
b2NdOworfQorCitAZW5kCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIApAQCAtMjc5MSwxMyArMjgwNSwxNiBAQCBzdGF0aWMgVUlUZXh0QXV0b2Nh
cGl0YWxpemF0aW9uVHlwZSB0b1VJVGV4dEF1dG9jYXBpdGFsaXplKFdlYkF1dG9jYXBpdGFsaXpl
VHlwZQogICAgIC8vIGZpcnN0IHJlc3BvbmRlciBhbmQgd2UgYXJlIG5vdCBpbnRlcmFjdGluZyB3
aXRoIGVkaXRhYmxlIGNvbnRlbnQuCiAgICAgaWYgKFtzZWxmIGlzRmlyc3RSZXNwb25kZXJdICYm
IGV2ZW50Ll9oaWRFdmVudCAmJiAhX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFi
bGUpCiAgICAgICAgIFtzZWxmIGhhbmRsZUtleUV2ZW50OmV2ZW50XTsKLQotICAgIFtzdXBlciBf
aGFuZGxlS2V5VUlFdmVudDpldmVudF07CisgICAgZWxzZQorICAgICAgICBbc3VwZXIgX2hhbmRs
ZUtleVVJRXZlbnQ6ZXZlbnRdOwogfQogCiAtICh2b2lkKWhhbmRsZUtleUV2ZW50Oig6OlVJRXZl
bnQgKilldmVudAogewotICAgIDo6V2ViRXZlbnQgKndlYkV2ZW50ID0gW1tbOjpXZWJFdmVudCBh
bGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6KGV2ZW50Ll9pc0tleURvd24pID8gV2ViRXZlbnRL
ZXlEb3duIDogV2ViRXZlbnRLZXlVcAorICAgIGlmIChldmVudCA9PSBfdWlFdmVudEJlaW5nUmVz
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBXS1dlYkV2ZW50ICp3ZWJFdmVudCA9IFtbW1dL
V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOihldmVudC5faXNLZXlEb3duKSA/
IFdlYkV2ZW50S2V5RG93biA6IFdlYkV2ZW50S2V5VXAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZVN0YW1wOmV2ZW50LnRpbWVz
dGFtcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXJhY3RlcnM6ZXZlbnQuX21vZGlmaWVkSW5wdXQKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmV2ZW50
Ll91bm1vZGlmaWVkSW5wdXQKQEAgLTI4MDcsNiArMjgyNCw3IEBAIHN0YXRpYyBVSVRleHRBdXRv
Y2FwaXRhbGl6YXRpb25UeXBlIHRvVUlUZXh0QXV0b2NhcGl0YWxpemUoV2ViQXV0b2NhcGl0YWxp
emVUeXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga2V5Q29kZTowCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RhYktleTpbZXZlbnQuX21vZGlmaWVkSW5wdXQg
aXNFcXVhbFRvU3RyaW5nOkAiXHQiXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJTZXQ6V2ViRXZlbnRDaGFyYWN0ZXJTZXRV
bmljb2RlXSBhdXRvcmVsZWFzZV07CisgICAgd2ViRXZlbnQudWlFdmVudCA9IGV2ZW50OwogICAg
IAogICAgIFtzZWxmIGhhbmRsZUtleVdlYkV2ZW50OndlYkV2ZW50XTsgICAgCiB9CkBAIC0yODE2
LDcgKzI4MzQsNyBAQCBzdGF0aWMgVUlUZXh0QXV0b2NhcGl0YWxpemF0aW9uVHlwZSB0b1VJVGV4
dEF1dG9jYXBpdGFsaXplKFdlYkF1dG9jYXBpdGFsaXplVHlwZQogICAgIF9wYWdlLT5oYW5kbGVL
ZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQodGhlRXZlbnQpKTsKIH0KIAotLSAo
dm9pZClfZGlkSGFuZGxlS2V5RXZlbnQ6KFdlYklPU0V2ZW50ICopZXZlbnQKKy0gKHZvaWQpX2Rp
ZEhhbmRsZUtleUV2ZW50OihXZWJJT1NFdmVudCAqKWV2ZW50IGV2ZW50V2FzSGFuZGxlZDooQk9P
TClldmVudFdhc0hhbmRsZWQKIHsKICAgICBpZiAoZXZlbnQudHlwZSA9PSBXZWJFdmVudEtleURv
d24pIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb25seSBmb3Igc3RhZ2luZyBwdXJwb3Nl
cy4KQEAgLTI4MjUsNiArMjg0MywyMCBAQCBzdGF0aWMgVUlUZXh0QXV0b2NhcGl0YWxpemF0aW9u
VHlwZSB0b1VJVGV4dEF1dG9jYXBpdGFsaXplKFdlYkF1dG9jYXBpdGFsaXplVHlwZQogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBbW1VJS2V5Ym9hcmRJbXBsIHNoYXJlZEluc3RhbmNlXSBkaWRI
YW5kbGVXZWJLZXlFdmVudF07CiAgICAgfQorCisgICAgaWYgKGV2ZW50V2FzSGFuZGxlZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKCFbZXZlbnQgaXNLaW5kT2ZDbGFzczpbV0tXZWJFdmVu
dCBjbGFzc11dKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBSZXNlbmRpbmcgdGhlIGV2ZW50
IG1heSBkZXN0cm95IHRoaXMgV0tDb250ZW50Vmlldy4KKyAgICBSZXRhaW5QdHI8V0tDb250ZW50
Vmlldz4gcHJvdGVjdG9yKHNlbGYpOworCisgICAgQVNTRVJUKCFfdWlFdmVudEJlaW5nUmVzZW50
KTsKKyAgICBfdWlFdmVudEJlaW5nUmVzZW50ID0gWyhXS1dlYkV2ZW50ICopZXZlbnQgdWlFdmVu
dF07CisgICAgW3N1cGVyIF9oYW5kbGVLZXlVSUV2ZW50Ol91aUV2ZW50QmVpbmdSZXNlbnQuZ2V0
KCldOworICAgIF91aUV2ZW50QmVpbmdSZXNlbnQgPSBuaWw7CiB9CiAKIC0gKEJPT0wpX2ludGVy
cHJldEtleUV2ZW50OihXZWJJT1NFdmVudCAqKWV2ZW50IGlzQ2hhckV2ZW50OihCT09MKWlzQ2hh
ckV2ZW50CkBAIC0yODM3LDYgKzI4NjksNyBAQCBzdGF0aWMgVUlUZXh0QXV0b2NhcGl0YWxpemF0
aW9uVHlwZSB0b1VJVGV4dEF1dG9jYXBpdGFsaXplKFdlYkF1dG9jYXBpdGFsaXplVHlwZQogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrV2ViU3BhY2VLZXkgPSAweDIwOwogCiAgICAgQk9PTCBj
b250ZW50RWRpdGFibGUgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRFZGl0YWJsZTsK
KyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0ID0gX3BhZ2UtPnVu
b2JzY3VyZWRDb250ZW50UmVjdCgpOwogCiAgICAgaWYgKCFjb250ZW50RWRpdGFibGUgJiYgZXZl
bnQuaXNUYWJLZXkpCiAgICAgICAgIHJldHVybiBOTzsKQEAgLTI4NTIsMjkgKzI4ODUsMjkgQEAg
c3RhdGljIFVJVGV4dEF1dG9jYXBpdGFsaXphdGlvblR5cGUgdG9VSVRleHRBdXRvY2FwaXRhbGl6
ZShXZWJBdXRvY2FwaXRhbGl6ZVR5cGUKICAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFgoLVNjcm9s
bGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CiAgICAgZWxzZSBpZiAoW2NoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVycyBpc0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1dFVwQXJyb3ddKSB7CiAgICAg
ICAgIGlmIChvcHRpb24pCi0gICAgICAgICAgICBzY3JvbGxPZmZzZXQuc2V0WSgtX3BhZ2UtPnVu
b2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdodCgpKTsKKyAgICAgICAgICAgIHNjcm9sbE9mZnNl
dC5zZXRZKC11bm9ic2N1cmVkQ29udGVudFJlY3QuaGVpZ2h0KCkpOwogICAgICAgICBlbHNlIGlm
IChjb21tYW5kKQotICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkoLVtzZWxmIGJvdW5kc10u
c2l6ZS5oZWlnaHQpOworICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkoLXNlbGYuYm91bmRz
LnNpemUuaGVpZ2h0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0LnNl
dFkoLVNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CiAgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0cmluZzpVSUtleUlucHV0UmlnaHRB
cnJvd10pCiAgICAgICAgICAgICBzY3JvbGxPZmZzZXQuc2V0WChTY3JvbGxiYXI6OnBpeGVsc1Bl
ckxpbmVTdGVwKCkpOwogICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMg
aXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXREb3duQXJyb3ddKSB7CiAgICAgICAgIGlmIChvcHRp
b24pCi0gICAgICAgICAgICBzY3JvbGxPZmZzZXQuc2V0WShfcGFnZS0+dW5vYnNjdXJlZENvbnRl
bnRSZWN0KCkuaGVpZ2h0KCkpOworICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkodW5vYnNj
dXJlZENvbnRlbnRSZWN0LmhlaWdodCgpKTsKICAgICAgICAgZWxzZSBpZiAoY29tbWFuZCkKLSAg
ICAgICAgICAgIHNjcm9sbE9mZnNldC5zZXRZKFtzZWxmIGJvdW5kc10uc2l6ZS5oZWlnaHQpOwor
ICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkoc2VsZi5ib3VuZHMuc2l6ZS5oZWlnaHQpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBzY3JvbGxPZmZzZXQuc2V0WShTY3JvbGxiYXI6OnBp
eGVsc1BlckxpbmVTdGVwKCkpOwogICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVycyBpc0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1dFBhZ2VEb3duXSkKLSAgICAgICAgc2Ny
b2xsT2Zmc2V0LnNldFkoX3BhZ2UtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdodCgpKTsK
KyAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkodW5vYnNjdXJlZENvbnRlbnRSZWN0LmhlaWdodCgp
KTsKICAgICBlbHNlIGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0
cmluZzpVSUtleUlucHV0UGFnZVVwXSkKLSAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkoLV9wYWdl
LT51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5oZWlnaHQoKSk7CisgICAgICAgIHNjcm9sbE9mZnNl
dC5zZXRZKC11bm9ic2N1cmVkQ29udGVudFJlY3QuaGVpZ2h0KCkpOwogICAgIGVsc2UKICAgICAg
ICAgc2hvdWxkU2Nyb2xsID0gTk87CiAKICAgICBpZiAoc2hvdWxkU2Nyb2xsKSB7Ci0gICAgICAg
IFtfd2ViVmlldyBfc2Nyb2xsQnlPZmZzZXQ6c2Nyb2xsT2Zmc2V0XTsKKyAgICAgICAgW193ZWJW
aWV3IF9zY3JvbGxCeUNvbnRlbnRPZmZzZXQ6c2Nyb2xsT2Zmc2V0XTsKICAgICAgICAgcmV0dXJu
IFlFUzsKICAgICB9CiAKQEAgLTI4OTksNyArMjkzMiw4IEBAIHN0YXRpYyBVSVRleHRBdXRvY2Fw
aXRhbGl6YXRpb25UeXBlIHRvVUlUZXh0QXV0b2NhcGl0YWxpemUoV2ViQXV0b2NhcGl0YWxpemVU
eXBlCiAKICAgICBjYXNlIGtXZWJTcGFjZUtleToKICAgICAgICAgaWYgKCFjb250ZW50RWRpdGFi
bGUpIHsKLSAgICAgICAgICAgIFtfd2ViVmlldyBfc2Nyb2xsQnlPZmZzZXQ6RmxvYXRQb2ludCgw
LCBzaGlmdCA/IC1fcGFnZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkuaGVpZ2h0KCkgOiBfcGFn
ZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkuaGVpZ2h0KCkpXTsKKyAgICAgICAgICAgIGludCBw
YWdlU3RlcCA9IFNjcm9sbGJhcjo6cGFnZVN0ZXAodW5vYnNjdXJlZENvbnRlbnRSZWN0LmhlaWdo
dCgpLCBzZWxmLmJvdW5kcy5zaXplLmhlaWdodCk7CisgICAgICAgICAgICBbX3dlYlZpZXcgX3Nj
cm9sbEJ5Q29udGVudE9mZnNldDpGbG9hdFBvaW50KDAsIHNoaWZ0ID8gLXBhZ2VTdGVwIDogcGFn
ZVN0ZXApXTsKICAgICAgICAgICAgIHJldHVybiBZRVM7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGlzQ2hhckV2ZW50KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265457</attachid>
            <date>2015-11-12 17:25:06 -0800</date>
            <delta_ts>2015-11-12 17:45:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151227-20151112172500.patch</filename>
            <type>text/plain</type>
            <size>25487</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTI1MmRjN2VjOTM1NzM2
ODNmZDJiYjA2YjZhZjU5ODQ5NzU4MjUxYi4uNjhjYzk5MmRlYzZiZDJkMjM0OWRjN2ZlYzlhZmJm
YmUxYTEyNDQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE1LTExLTEyICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEhhcmR3YXJlIGtl
eWJvYXJkIHNwYWNlYmFyIHNjcm9sbHMgdG9vIGZhciBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTIyNworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjM1MDA2ODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlcmUgd2VyZSB0d28gYnVncyBjb25zcGlyaW5nIGhlcmUgdG8gbWFrZSBzcGFj
ZWJhciBzY3JvbGxpbmcgdmVyeSB3cm9uZyBvbiBpT1M6CisKKyAgICAgICAgMSkgSW5jb21pbmcg
a2V5IGV2ZW50cyB3ZXJlIGJlaW5nIGhhbmRsZWQgdHdpY2UKKyAgICAgICAgICAgIC0gZml4IHRo
aXMgYnkgb25seSBwcm9wYWdhdGluZyB0aGUgZXZlbnQgdG8gc3VwZXIgaWYgd2UgZG9uJ3QKKyAg
ICAgICAgICAgIGVuZCB1cCBoYW5kbGluZyB0aGUgZXZlbnQgb3Vyc2VsdmVzCisKKyAgICAgICAg
MikgX3Njcm9sbEJ5T2Zmc2V0IHdhcyBub3QgY29udmVydGluZyB0aGUgb2Zmc2V0IGRlbHRhIG91
dCBvZiBjb250ZW50IGNvb3JkaW5hdGVzCisgICAgICAgICAgICAtIGZpeCB0aGlzIGJ5IGRvaW5n
IHRoZSByZWxldmFudCBjb252ZXJzaW9uIGFuZCByZW5hbWluZyB0aGUgZnVuY3Rpb24KKyAgICAg
ICAgICAgIHRvIG1ha2UgaXQgbW9yZSBjbGVhciBleGFjdGx5IHdoYXQgaXQgZG9lcworCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfc2Nyb2xsQnlDb250ZW50T2Zmc2V0Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Nj
cm9sbEJ5T2Zmc2V0Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgUmVuYW1lIHRvIF9zY3JvbGxCeUNvbnRlbnRP
ZmZzZXQgdG8gbWFrZSBpdCBjbGVhciB0aGF0IHRoaXMgaXMKKyAgICAgICAgaW4gY29udGVudCBj
b29yZGluYXRlcywgYW5kIGRvIHRoZSBjb252ZXJzaW9uIGZyb20gY29udGVudCBjb29yZGluYXRl
cworICAgICAgICAoYXBwbHkgdGhlIHNjYWxlKSBzbyB0aGF0IHdlIHNjcm9sbCBieSB0aGUgcmln
aHQgYW1vdW50LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRvbmVXaXRoS2V5RXZlbnQpOgor
ICAgICAgICBQYXNzIHdoZXRoZXIgdGhlIGV2ZW50IHdhcyBoYW5kbGVkIHRocm91Z2ggdG8gV0tD
b250ZW50Vmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW06CisgICAgICAgICgtW1dLV2ViRXZlbnQgZGVhbGxvY10pOgorICAgICAgICBBZGQgV0tX
ZWJFdmVudCwgd2hpY2ggaXMgYSBXZWJFdmVudCBhbmQgcmV0YWlucyBhIHJlZmVyZW5jZSB0byB0
aGUgVUlFdmVudAorICAgICAgICBmcm9tIHdoaWNoIGl0IGNhbWUuCisKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfaGFuZGxlS2V5VUlFdmVudDpdKToKKyAgICAgICAgT25seSBwYXNzIHRoZSBl
dmVudCB0byBzdXBlciBpbW1lZGlhdGVseSBpZiB3ZSBkb24ndCB0cnkgdG8gaGFuZGxlIGl0Lgor
ICAgICAgICBXZSdsbCByZS1zZW5kIGl0IHRvIHN1cGVyIGFzeW5jaHJvbm91c2x5IGlmIHdlIGRl
Y2lkZSBub3QgdG8gaGFuZGxlIGl0LgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaGFuZGxl
S2V5RXZlbnQ6XSk6CisgICAgICAgIElmIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgcmVzZW5kaW5n
IGFuIGV2ZW50IHdlIGRpZG4ndCBoYW5kbGUgdGhlIGZpcnN0CisgICAgICAgIHRpbWUsIGp1c3Qg
aWdub3JlIGl0LgorCisgICAgICAgIE1ha2UgYSBXS1dlYkV2ZW50IGFuZCBzdG9yZSB0aGUgVUlF
dmVudCBvbiBpdC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRIYW5kbGVLZXlFdmVu
dDpldmVudFdhc0hhbmRsZWQ6XSk6CisgICAgICAgIElmIHRoZSBldmVudCB3YXNuJ3QgaGFuZGxl
ZCwgYW5kIGlzIG9uZSBvZiBvdXIgc3BlY2lhbCBldmVudHMgd2l0aCBhCisgICAgICAgIHdyYXBw
ZWQgVUlFdmVudCwgcmVzZW5kIGl0IHRvIHN1cGVyLiBXZSdsbCBpZ25vcmUgaXQgYXMgbm90ZWQg
YWJvdmUuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaW50ZXJwcmV0S2V5RXZlbnQ6aXND
aGFyRXZlbnQ6XSk6CisgICAgICAgIEZhY3RvciBvdXQgdW5vYnNjdXJlZCBjb250ZW50IHJlY3Qg
cmV0cmlldmFsLgorICAgICAgICBNYWtlIHVzZSBvZiBTY3JvbGxiYXI6OnBhZ2VTdGVwIHRvIG1h
dGNoIHRoZSBNYWMgYmVoYXZpb3Igb2Ygbm90CisgICAgICAgIHNjcm9sbGluZyBxdWl0ZSBhIHdo
b2xlIHBhZ2Ugd2hlbiBzY3JvbGxpbmcgd2l0aCB0aGUgc3BhY2ViYXIuCisKIDIwMTUtMTEtMTEg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBfV0tSZW1v
dGVPYmplY3RJbnRlcmZhY2Ugc2hvdWxkIGhhbmRsZSBzcGVjaWZ5aW5nIGFsbG93ZWQgY2xhc3Nl
cyBmb3IgcmVwbHkgYmxvY2sgYXJndW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGVmYzM1ZGE2NTVmMWJiMzU1NmJlOTk1Y2Qx
ODkyZGViZWYzY2RiY2EuLmU0ZTRkZjFjMTkwNzY1ZDdiYzVmNzA1OWJiM2YyODQzZmRiMjE0ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CkBAIC0xMzA5LDEyICsxMzA5LDE1IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGNvbnN0
cmFpbkNvbnRlbnRPZmZzZXQoV2ViQ29yZTo6RmxvYXRQb2ludCBjb250ZW50T2ZmCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLS0gKHZvaWQpX3Njcm9sbEJ5T2Zmc2V0OihXZWJDb3JlOjpGbG9hdFBv
aW50KW9mZnNldAorLSAodm9pZClfc2Nyb2xsQnlDb250ZW50T2Zmc2V0OihXZWJDb3JlOjpGbG9h
dFBvaW50KWNvbnRlbnRPZmZzZXREZWx0YQogewotICAgIENHUG9pbnQgY3VycmVudE9mZnNldCA9
IChbX3Njcm9sbFZpZXcgX2lzQW5pbWF0aW5nU2Nyb2xsXSkgPyBbX3Njcm9sbFZpZXcgX2FuaW1h
dGVkVGFyZ2V0T2Zmc2V0XSA6IFtfc2Nyb2xsVmlldyBjb250ZW50T2Zmc2V0XTsKKyAgICBXZWJD
b3JlOjpGbG9hdFBvaW50IHNjYWxlZE9mZnNldERlbHRhID0gY29udGVudE9mZnNldERlbHRhOwor
ICAgIENHRmxvYXQgem9vbVNjYWxlID0gY29udGVudFpvb21TY2FsZShzZWxmKTsKKyAgICBzY2Fs
ZWRPZmZzZXREZWx0YS5zY2FsZSh6b29tU2NhbGUsIHpvb21TY2FsZSk7CisKKyAgICBDR1BvaW50
IGN1cnJlbnRPZmZzZXQgPSBbX3Njcm9sbFZpZXcgX2lzQW5pbWF0aW5nU2Nyb2xsXSA/IFtfc2Ny
b2xsVmlldyBfYW5pbWF0ZWRUYXJnZXRPZmZzZXRdIDogW19zY3JvbGxWaWV3IGNvbnRlbnRPZmZz
ZXRdOworICAgIENHUG9pbnQgYm91bmRlZE9mZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVkSW5W
YWxpZFJhbmdlKF9zY3JvbGxWaWV3LmdldCgpLCBjdXJyZW50T2Zmc2V0ICsgc2NhbGVkT2Zmc2V0
RGVsdGEpOwogCi0gICAgQ0dQb2ludCBib3VuZGVkT2Zmc2V0ID0gY29udGVudE9mZnNldEJvdW5k
ZWRJblZhbGlkUmFuZ2UoX3Njcm9sbFZpZXcuZ2V0KCksIGN1cnJlbnRPZmZzZXQgKyBvZmZzZXQp
OwotICAgIAogICAgIGlmIChDR1BvaW50RXF1YWxUb1BvaW50KGJvdW5kZWRPZmZzZXQsIGN1cnJl
bnRPZmZzZXQpKQogICAgICAgICByZXR1cm47CiAgICAgW19jb250ZW50VmlldyB3aWxsU3RhcnRa
b29tT3JTY3JvbGxdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IGNiMjU5MTk5ZmNkOGYxNzI3MmU5ZjFiYzRi
ZjM5MzM5ODBjYzM2MDcuLjk1MDdkYzkzMzdmNjE1NDZhNjM0OTJjY2JkMjgxMjZjNDMzOTY3YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0ludGVybmFsLmgKQEAgLTgzLDcgKzgzLDcgQEAgc3RydWN0IFByaW50SW5mbzsKIAogLSAo
dm9pZClfc2Nyb2xsVG9Db250ZW50T2Zmc2V0OihXZWJDb3JlOjpGbG9hdFBvaW50KWNvbnRlbnRP
ZmZzZXQgc2Nyb2xsT3JpZ2luOihXZWJDb3JlOjpJbnRQb2ludClzY3JvbGxPcmlnaW47CiAtIChC
T09MKV9zY3JvbGxUb1JlY3Q6KFdlYkNvcmU6OkZsb2F0UmVjdCl0YXJnZXRSZWN0IG9yaWdpbjoo
V2ViQ29yZTo6RmxvYXRQb2ludClvcmlnaW4gbWluaW11bVNjcm9sbERpc3RhbmNlOihmbG9hdClt
aW5pbXVtU2Nyb2xsRGlzdGFuY2U7Ci0tICh2b2lkKV9zY3JvbGxCeU9mZnNldDooV2ViQ29yZTo6
RmxvYXRQb2ludClvZmZzZXQ7CistICh2b2lkKV9zY3JvbGxCeUNvbnRlbnRPZmZzZXQ6KFdlYkNv
cmU6OkZsb2F0UG9pbnQpb2Zmc2V0OwogLSAodm9pZClfem9vbVRvRm9jdXNSZWN0OihXZWJDb3Jl
OjpGbG9hdFJlY3QpZm9jdXNlZEVsZW1lbnRSZWN0IHNlbGVjdGlvblJlY3Q6KFdlYkNvcmU6OkZs
b2F0UmVjdClzZWxlY3Rpb25SZWN0SW5Eb2N1bWVudENvb3JkaW5hdGVzIGZvbnRTaXplOihmbG9h
dClmb250U2l6ZSBtaW5pbXVtU2NhbGU6KGRvdWJsZSltaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxl
Oihkb3VibGUpbWF4aW11bVNjYWxlIGFsbG93U2NhbGluZzooQk9PTClhbGxvd1NjYWxpbmcgZm9y
Y2VTY3JvbGw6KEJPT0wpZm9yY2VTY3JvbGw7CiAtIChCT09MKV96b29tVG9SZWN0OihXZWJDb3Jl
OjpGbG9hdFJlY3QpdGFyZ2V0UmVjdCB3aXRoT3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9y
aWdpbiBmaXRFbnRpcmVSZWN0OihCT09MKWZpdEVudGlyZVJlY3QgbWluaW11bVNjYWxlOihkb3Vi
bGUpbWluaW11bVNjYWxlIG1heGltdW1TY2FsZTooZG91YmxlKW1heGltdW1TY2FsZSBtaW5pbXVt
U2Nyb2xsRGlzdGFuY2U6KGZsb2F0KW1pbmltdW1TY3JvbGxEaXN0YW5jZTsKIC0gKHZvaWQpX3pv
b21PdXRXaXRoT3JpZ2luOihXZWJDb3JlOjpGbG9hdFBvaW50KW9yaWdpbiBhbmltYXRlZDooQk9P
TClhbmltYXRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLm1tCmluZGV4IDYzNzI4ZjAzMWNjZGJmMTAxMWJjYzkyNmU3MGViZDk2OTNiZDQy
N2UuLjUzZmY1ZjM5ZjYwYjM2MGRhNzMwZDc4ZDAwZjEwNDNkZDcxN2U5ZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNDIx
LDkgKzQyMSw5IEBAIEludFJlY3QgUGFnZUNsaWVudEltcGw6OnJvb3RWaWV3VG9BY2Nlc3NpYmls
aXR5U2NyZWVuKGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJl
Y3Qocm9vdFZpZXdSZWN0KTsKIH0KICAgICAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRo
S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGJvb2wpCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjpkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQmIGV2ZW50LCBib29sIGV2ZW50V2FzSGFuZGxlZCkKIHsKLSAgICBbbV9jb250ZW50Vmll
dyBfZGlkSGFuZGxlS2V5RXZlbnQ6ZXZlbnQubmF0aXZlRXZlbnQoKV07CisgICAgW21fY29udGVu
dFZpZXcgX2RpZEhhbmRsZUtleUV2ZW50OmV2ZW50Lm5hdGl2ZUV2ZW50KCkgZXZlbnRXYXNIYW5k
bGVkOmV2ZW50V2FzSGFuZGxlZF07CiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgKaW5kZXggYzY1ZjBkYWFlNGNhYTU0MTIzNzlmZDk3MGZlNTE5YmUzNjdjNTUwZC4u
NWI0ZTEzMjdmYjNlYzM1MDY3ODkwNTlmNjRjMDQ0ZDFiMWFlYTMyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5o
CkBAIC0xNDEsNiArMTQxLDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBX
ZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIF9wb3NpdGlvbkluZm9ybWF0
aW9uOwogICAgIFdlYktpdDo6QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24gX2Fzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uOwogICAgIFJldGFpblB0cjxOU09iamVjdDxXS0Zvcm1QZXJpcGhlcmFsPj4gX2lu
cHV0UGVyaXBoZXJhbDsKKyAgICBSZXRhaW5QdHI8VUlFdmVudD4gX3VpRXZlbnRCZWluZ1Jlc2Vu
dDsKIAogICAgIENHUG9pbnQgX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uOwogCkBAIC0yMDIsNyAr
MjAzLDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIC0gKHZvaWQpX3Nob3dQbGF5
YmFja1RhcmdldFBpY2tlcjooQk9PTCloYXNWaWRlbyBmcm9tUmVjdDooY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpZWxlbWVudFJlY3Q7CiAtICh2b2lkKV9zaG93UnVuT3BlblBhbmVsOihXZWJLaXQ6
OldlYk9wZW5QYW5lbFBhcmFtZXRlcnMqKXBhcmFtZXRlcnMgcmVzdWx0TGlzdGVuZXI6KFdlYktp
dDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopbGlzdGVuZXI7CiAtICh2b2lkKWFj
Y2Vzc29yeURvbmU7Ci0tICh2b2lkKV9kaWRIYW5kbGVLZXlFdmVudDooV2ViSU9TRXZlbnQgKill
dmVudDsKKy0gKHZvaWQpX2RpZEhhbmRsZUtleUV2ZW50OihXZWJJT1NFdmVudCAqKWV2ZW50IGV2
ZW50V2FzSGFuZGxlZDooQk9PTClldmVudFdhc0hhbmRsZWQ7CiAtIChWZWN0b3I8V2ViS2l0OjpP
cHRpb25JdGVtPiYpIGFzc2lzdGVkTm9kZVNlbGVjdE9wdGlvbnM7CiAtICh2b2lkKV9lbmFibGVJ
bnNwZWN0b3JOb2RlU2VhcmNoOwogLSAodm9pZClfZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2g7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCmluZGV4IGM0M2VmM2ExZTE3NTMzNzVlOTRiZTZkMTMxYmJjNzcwZDFm
Yjc5YzkuLjVjMWNjZWVkOTM5YzQ2OTFlYmNmZmRjOThjMjMxYjVhZTdiNjMyMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCkBAIC03OCw2ICs3OCwyMCBAQAogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2ln
bikgVUlLZXlib2FyZElucHV0RmxhZ3MgX2lucHV0RmxhZ3M7CiBAZW5kCiAKK0BpbnRlcmZhY2Ug
V0tXZWJFdmVudCA6IFdlYkV2ZW50CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBVSUV2
ZW50ICp1aUV2ZW50OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tXZWJFdmVudAorCistICh2
b2lkKWRlYWxsb2MKK3sKKyAgICBbX3VpRXZlbnQgcmVsZWFzZV07CisgICAgW3N1cGVyIGRlYWxs
b2NdOworfQorCitAZW5kCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIApAQCAtMjc5MSwxMyArMjgwNSwxNiBAQCBzdGF0aWMgVUlUZXh0QXV0b2Nh
cGl0YWxpemF0aW9uVHlwZSB0b1VJVGV4dEF1dG9jYXBpdGFsaXplKFdlYkF1dG9jYXBpdGFsaXpl
VHlwZQogICAgIC8vIGZpcnN0IHJlc3BvbmRlciBhbmQgd2UgYXJlIG5vdCBpbnRlcmFjdGluZyB3
aXRoIGVkaXRhYmxlIGNvbnRlbnQuCiAgICAgaWYgKFtzZWxmIGlzRmlyc3RSZXNwb25kZXJdICYm
IGV2ZW50Ll9oaWRFdmVudCAmJiAhX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFi
bGUpCiAgICAgICAgIFtzZWxmIGhhbmRsZUtleUV2ZW50OmV2ZW50XTsKLQotICAgIFtzdXBlciBf
aGFuZGxlS2V5VUlFdmVudDpldmVudF07CisgICAgZWxzZQorICAgICAgICBbc3VwZXIgX2hhbmRs
ZUtleVVJRXZlbnQ6ZXZlbnRdOwogfQogCiAtICh2b2lkKWhhbmRsZUtleUV2ZW50Oig6OlVJRXZl
bnQgKilldmVudAogewotICAgIDo6V2ViRXZlbnQgKndlYkV2ZW50ID0gW1tbOjpXZWJFdmVudCBh
bGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6KGV2ZW50Ll9pc0tleURvd24pID8gV2ViRXZlbnRL
ZXlEb3duIDogV2ViRXZlbnRLZXlVcAorICAgIGlmIChldmVudCA9PSBfdWlFdmVudEJlaW5nUmVz
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBXS1dlYkV2ZW50ICp3ZWJFdmVudCA9IFtbW1dL
V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOihldmVudC5faXNLZXlEb3duKSA/
IFdlYkV2ZW50S2V5RG93biA6IFdlYkV2ZW50S2V5VXAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZVN0YW1wOmV2ZW50LnRpbWVz
dGFtcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXJhY3RlcnM6ZXZlbnQuX21vZGlmaWVkSW5wdXQKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmV2ZW50
Ll91bm1vZGlmaWVkSW5wdXQKQEAgLTI4MDcsNiArMjgyNCw3IEBAIHN0YXRpYyBVSVRleHRBdXRv
Y2FwaXRhbGl6YXRpb25UeXBlIHRvVUlUZXh0QXV0b2NhcGl0YWxpemUoV2ViQXV0b2NhcGl0YWxp
emVUeXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga2V5Q29kZTowCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpc1RhYktleTpbZXZlbnQuX21vZGlmaWVkSW5wdXQg
aXNFcXVhbFRvU3RyaW5nOkAiXHQiXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJTZXQ6V2ViRXZlbnRDaGFyYWN0ZXJTZXRV
bmljb2RlXSBhdXRvcmVsZWFzZV07CisgICAgd2ViRXZlbnQudWlFdmVudCA9IGV2ZW50OwogICAg
IAogICAgIFtzZWxmIGhhbmRsZUtleVdlYkV2ZW50OndlYkV2ZW50XTsgICAgCiB9CkBAIC0yODE2
LDcgKzI4MzQsNyBAQCBzdGF0aWMgVUlUZXh0QXV0b2NhcGl0YWxpemF0aW9uVHlwZSB0b1VJVGV4
dEF1dG9jYXBpdGFsaXplKFdlYkF1dG9jYXBpdGFsaXplVHlwZQogICAgIF9wYWdlLT5oYW5kbGVL
ZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQodGhlRXZlbnQpKTsKIH0KIAotLSAo
dm9pZClfZGlkSGFuZGxlS2V5RXZlbnQ6KFdlYklPU0V2ZW50ICopZXZlbnQKKy0gKHZvaWQpX2Rp
ZEhhbmRsZUtleUV2ZW50OihXZWJJT1NFdmVudCAqKWV2ZW50IGV2ZW50V2FzSGFuZGxlZDooQk9P
TClldmVudFdhc0hhbmRsZWQKIHsKICAgICBpZiAoZXZlbnQudHlwZSA9PSBXZWJFdmVudEtleURv
d24pIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb25seSBmb3Igc3RhZ2luZyBwdXJwb3Nl
cy4KQEAgLTI4MjUsNiArMjg0MywyMCBAQCBzdGF0aWMgVUlUZXh0QXV0b2NhcGl0YWxpemF0aW9u
VHlwZSB0b1VJVGV4dEF1dG9jYXBpdGFsaXplKFdlYkF1dG9jYXBpdGFsaXplVHlwZQogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBbW1VJS2V5Ym9hcmRJbXBsIHNoYXJlZEluc3RhbmNlXSBkaWRI
YW5kbGVXZWJLZXlFdmVudF07CiAgICAgfQorCisgICAgaWYgKGV2ZW50V2FzSGFuZGxlZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKCFbZXZlbnQgaXNLaW5kT2ZDbGFzczpbV0tXZWJFdmVu
dCBjbGFzc11dKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBSZXNlbmRpbmcgdGhlIGV2ZW50
IG1heSBkZXN0cm95IHRoaXMgV0tDb250ZW50Vmlldy4KKyAgICBSZXRhaW5QdHI8V0tDb250ZW50
Vmlldz4gcHJvdGVjdG9yKHNlbGYpOworCisgICAgQVNTRVJUKCFfdWlFdmVudEJlaW5nUmVzZW50
KTsKKyAgICBfdWlFdmVudEJlaW5nUmVzZW50ID0gWyhXS1dlYkV2ZW50ICopZXZlbnQgdWlFdmVu
dF07CisgICAgW3N1cGVyIF9oYW5kbGVLZXlVSUV2ZW50Ol91aUV2ZW50QmVpbmdSZXNlbnQuZ2V0
KCldOworICAgIF91aUV2ZW50QmVpbmdSZXNlbnQgPSBuaWw7CiB9CiAKIC0gKEJPT0wpX2ludGVy
cHJldEtleUV2ZW50OihXZWJJT1NFdmVudCAqKWV2ZW50IGlzQ2hhckV2ZW50OihCT09MKWlzQ2hh
ckV2ZW50CkBAIC0yODM3LDYgKzI4NjksNyBAQCBzdGF0aWMgVUlUZXh0QXV0b2NhcGl0YWxpemF0
aW9uVHlwZSB0b1VJVGV4dEF1dG9jYXBpdGFsaXplKFdlYkF1dG9jYXBpdGFsaXplVHlwZQogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrV2ViU3BhY2VLZXkgPSAweDIwOwogCiAgICAgQk9PTCBj
b250ZW50RWRpdGFibGUgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRFZGl0YWJsZTsK
KyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0ID0gX3BhZ2UtPnVu
b2JzY3VyZWRDb250ZW50UmVjdCgpOwogCiAgICAgaWYgKCFjb250ZW50RWRpdGFibGUgJiYgZXZl
bnQuaXNUYWJLZXkpCiAgICAgICAgIHJldHVybiBOTzsKQEAgLTI4NTIsMjkgKzI4ODUsMjkgQEAg
c3RhdGljIFVJVGV4dEF1dG9jYXBpdGFsaXphdGlvblR5cGUgdG9VSVRleHRBdXRvY2FwaXRhbGl6
ZShXZWJBdXRvY2FwaXRhbGl6ZVR5cGUKICAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFgoLVNjcm9s
bGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CiAgICAgZWxzZSBpZiAoW2NoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVycyBpc0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1dFVwQXJyb3ddKSB7CiAgICAg
ICAgIGlmIChvcHRpb24pCi0gICAgICAgICAgICBzY3JvbGxPZmZzZXQuc2V0WSgtX3BhZ2UtPnVu
b2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdodCgpKTsKKyAgICAgICAgICAgIHNjcm9sbE9mZnNl
dC5zZXRZKC11bm9ic2N1cmVkQ29udGVudFJlY3QuaGVpZ2h0KCkpOwogICAgICAgICBlbHNlIGlm
IChjb21tYW5kKQotICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkoLVtzZWxmIGJvdW5kc10u
c2l6ZS5oZWlnaHQpOworICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkoLXNlbGYuYm91bmRz
LnNpemUuaGVpZ2h0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0LnNl
dFkoLVNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CiAgICAgfSBlbHNlIGlmIChbY2hh
cmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0cmluZzpVSUtleUlucHV0UmlnaHRB
cnJvd10pCiAgICAgICAgICAgICBzY3JvbGxPZmZzZXQuc2V0WChTY3JvbGxiYXI6OnBpeGVsc1Bl
ckxpbmVTdGVwKCkpOwogICAgIGVsc2UgaWYgKFtjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMg
aXNFcXVhbFRvU3RyaW5nOlVJS2V5SW5wdXREb3duQXJyb3ddKSB7CiAgICAgICAgIGlmIChvcHRp
b24pCi0gICAgICAgICAgICBzY3JvbGxPZmZzZXQuc2V0WShfcGFnZS0+dW5vYnNjdXJlZENvbnRl
bnRSZWN0KCkuaGVpZ2h0KCkpOworICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkodW5vYnNj
dXJlZENvbnRlbnRSZWN0LmhlaWdodCgpKTsKICAgICAgICAgZWxzZSBpZiAoY29tbWFuZCkKLSAg
ICAgICAgICAgIHNjcm9sbE9mZnNldC5zZXRZKFtzZWxmIGJvdW5kc10uc2l6ZS5oZWlnaHQpOwor
ICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkoc2VsZi5ib3VuZHMuc2l6ZS5oZWlnaHQpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBzY3JvbGxPZmZzZXQuc2V0WShTY3JvbGxiYXI6OnBp
eGVsc1BlckxpbmVTdGVwKCkpOwogICAgIH0gZWxzZSBpZiAoW2NoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVycyBpc0VxdWFsVG9TdHJpbmc6VUlLZXlJbnB1dFBhZ2VEb3duXSkKLSAgICAgICAgc2Ny
b2xsT2Zmc2V0LnNldFkoX3BhZ2UtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpLmhlaWdodCgpKTsK
KyAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkodW5vYnNjdXJlZENvbnRlbnRSZWN0LmhlaWdodCgp
KTsKICAgICBlbHNlIGlmIChbY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIGlzRXF1YWxUb1N0
cmluZzpVSUtleUlucHV0UGFnZVVwXSkKLSAgICAgICAgc2Nyb2xsT2Zmc2V0LnNldFkoLV9wYWdl
LT51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5oZWlnaHQoKSk7CisgICAgICAgIHNjcm9sbE9mZnNl
dC5zZXRZKC11bm9ic2N1cmVkQ29udGVudFJlY3QuaGVpZ2h0KCkpOwogICAgIGVsc2UKICAgICAg
ICAgc2hvdWxkU2Nyb2xsID0gTk87CiAKICAgICBpZiAoc2hvdWxkU2Nyb2xsKSB7Ci0gICAgICAg
IFtfd2ViVmlldyBfc2Nyb2xsQnlPZmZzZXQ6c2Nyb2xsT2Zmc2V0XTsKKyAgICAgICAgW193ZWJW
aWV3IF9zY3JvbGxCeUNvbnRlbnRPZmZzZXQ6c2Nyb2xsT2Zmc2V0XTsKICAgICAgICAgcmV0dXJu
IFlFUzsKICAgICB9CiAKQEAgLTI4OTksNyArMjkzMiw4IEBAIHN0YXRpYyBVSVRleHRBdXRvY2Fw
aXRhbGl6YXRpb25UeXBlIHRvVUlUZXh0QXV0b2NhcGl0YWxpemUoV2ViQXV0b2NhcGl0YWxpemVU
eXBlCiAKICAgICBjYXNlIGtXZWJTcGFjZUtleToKICAgICAgICAgaWYgKCFjb250ZW50RWRpdGFi
bGUpIHsKLSAgICAgICAgICAgIFtfd2ViVmlldyBfc2Nyb2xsQnlPZmZzZXQ6RmxvYXRQb2ludCgw
LCBzaGlmdCA/IC1fcGFnZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkuaGVpZ2h0KCkgOiBfcGFn
ZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkuaGVpZ2h0KCkpXTsKKyAgICAgICAgICAgIGludCBw
YWdlU3RlcCA9IFNjcm9sbGJhcjo6cGFnZVN0ZXAodW5vYnNjdXJlZENvbnRlbnRSZWN0LmhlaWdo
dCgpLCBzZWxmLmJvdW5kcy5zaXplLmhlaWdodCk7CisgICAgICAgICAgICBbX3dlYlZpZXcgX3Nj
cm9sbEJ5Q29udGVudE9mZnNldDpGbG9hdFBvaW50KDAsIHNoaWZ0ID8gLXBhZ2VTdGVwIDogcGFn
ZVN0ZXApXTsKICAgICAgICAgICAgIHJldHVybiBZRVM7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGlzQ2hhckV2ZW50KSB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggY2Y4MDgwMzE0NDE2N2EwYmJmZmYxZDU5NDY3YzliNjU5ZDM5NGIzNy4uODg0
ZmZlM2YxOTJjNTM2NmUxNGI4ODVkYzE4YWI2NzQ5MWU2Y2YwMyAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE1LTEx
LTEyICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEhh
cmR3YXJlIGtleWJvYXJkIHNwYWNlYmFyIHNjcm9sbHMgdG9vIGZhciBvbiBpT1MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTIyNworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjM1MDA2ODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1VJU2NyaXB0Q29udGV4dC9CaW5k
aW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
VUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
VFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6c2V0RGlkRW5kU2Nyb2xsaW5nQ2FsbGJhY2spOgorICAg
ICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmRpZEVuZFNjcm9sbGluZ0NhbGxiYWNrKToK
KyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpwbGF0Zm9ybVNldERpZEVuZFNjcm9s
bGluZ0NhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1VJU2NyaXB0Q29udGV4
dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29h
L1Rlc3RSdW5uZXJXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29h
L1Rlc3RSdW5uZXJXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcg
ZGVhbGxvY10pOgorICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IF9kaWRGaW5pc2hTY3Jv
bGxpbmddKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xs
ZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6cGxhdGZvcm1TZXRE
aWRFbmRTY3JvbGxpbmdDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxl
cjo6cGxhdGZvcm1DbGVhckFsbENhbGxiYWNrcyk6CisgICAgICAgIEV4cG9zZSBfZGlkRmluaXNo
U2Nyb2xsaW5nIG9uIFdLV2ViVmlldyB0byB0aGUgVUlTY3JpcHRDb250cm9sbGVyLgorCiAyMDE1
LTExLTExICBBa29zIEtpc3MgIDxha2lzc0BpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgYWRkIG15c2VsZiB0byB0aGUgY29tbWl0dGVycyBsaXN0LgpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRD
b250cm9sbGVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVUlTY3JpcHRDb250ZXh0L0Jp
bmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKaW5kZXggZjEzMDlmNjJlOTI1MWQ1NjdiNTkx
NDZmNGZkMWY2OTY3MzUwZGVmZS4uMDczZDdmZDlmMmE4OWFiYzQ3NTE1NzJmNDEzNGRjYWZmYTA5
NzdhZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9VSVNjcmlwdENvbnRleHQv
QmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCkBAIC00
Myw2ICs0Myw4IEBAIGludGVyZmFjZSBVSVNjcmlwdENvbnRyb2xsZXIgewogICAgIGF0dHJpYnV0
ZSBvYmplY3Qgd2lsbEJlZ2luWm9vbWluZ0NhbGxiYWNrOwogICAgIGF0dHJpYnV0ZSBvYmplY3Qg
ZGlkRW5kWm9vbWluZ0NhbGxiYWNrOwogCisgICAgYXR0cmlidXRlIG9iamVjdCBkaWRFbmRTY3Jv
bGxpbmdDYWxsYmFjazsKKwogICAgIC8vIFZpZXcgc3RhdGUKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgZG91YmxlIHpvb21TY2FsZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIG1pbmlt
dW1ab29tU2NhbGU7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1VJU2NyaXB0
Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oCmluZGV4IDNjYTdjOGJjNTMzMWJiN2QxYjhmNGQ0
ZDJmNWVkMjBjMWVjNmExMWQuLjFmZTMyMDdkODJmOTg4NjZhYTE1ZTZmNTRjNTkyNDUxNTc1MzNm
ODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVUlTY3JpcHRDb250ZXh0L1VJ
U2NyaXB0Q29udGV4dC5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVUlTY3JpcHRDb250
ZXh0L1VJU2NyaXB0Q29udGV4dC5oCkBAIC00Niw2ICs0Niw3IEBAIHR5cGVkZWYgZW51bSAgewog
ICAgIENhbGxiYWNrVHlwZURpZEVuZFpvb21pbmcsCiAgICAgQ2FsbGJhY2tUeXBlRGlkU2hvd0tl
eWJvYXJkLAogICAgIENhbGxiYWNrVHlwZURpZEhpZGVLZXlib2FyZCwKKyAgICBDYWxsYmFja1R5
cGVEaWRFbmRTY3JvbGxpbmcsCiAgICAgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCA9IGZpcnN0
Tm9uUGVyc2lzdGVudENhbGxiYWNrSUQKIH0gQ2FsbGJhY2tUeXBlOwogCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250
cm9sbGVyLmNwcAppbmRleCBhZjc2MjdiOThiOTgyODkwODFkZDY5Y2IyMzMwNjk2Mzc5ZjhkODU0
Li5lYTM5MGMyNTlkY2NjMDI5NGFlMmVjZjVkMWZiYWQ4ZTU5YWUzMDMyIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0
Q29udHJvbGxlci5jcHAKQEAgLTc1LDYgKzc1LDE3IEBAIEpTVmFsdWVSZWYgVUlTY3JpcHRDb250
cm9sbGVyOjpkaWRFbmRab29taW5nQ2FsbGJhY2soKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRl
eHQuY2FsbGJhY2tXaXRoSUQoQ2FsbGJhY2tUeXBlRGlkRW5kWm9vbWluZyk7CiB9CiAKK3ZvaWQg
VUlTY3JpcHRDb250cm9sbGVyOjpzZXREaWRFbmRTY3JvbGxpbmdDYWxsYmFjayhKU1ZhbHVlUmVm
IGNhbGxiYWNrKQoreworICAgIG1fY29udGV4dC5yZWdpc3RlckNhbGxiYWNrKGNhbGxiYWNrLCBD
YWxsYmFja1R5cGVEaWRFbmRTY3JvbGxpbmcpOworICAgIHBsYXRmb3JtU2V0RGlkRW5kU2Nyb2xs
aW5nQ2FsbGJhY2soKTsKK30KKworSlNWYWx1ZVJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OmRpZEVu
ZFNjcm9sbGluZ0NhbGxiYWNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0LmNhbGxi
YWNrV2l0aElEKENhbGxiYWNrVHlwZURpZEVuZFNjcm9sbGluZyk7Cit9CisKIHZvaWQgVUlTY3Jp
cHRDb250cm9sbGVyOjpzZXREaWRTaG93S2V5Ym9hcmRDYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxi
YWNrKQogewogICAgIG1fY29udGV4dC5yZWdpc3RlckNhbGxiYWNrKGNhbGxiYWNrLCBDYWxsYmFj
a1R5cGVEaWRTaG93S2V5Ym9hcmQpOwpAQCAtMTQyLDYgKzE1MywxMCBAQCB2b2lkIFVJU2NyaXB0
Q29udHJvbGxlcjo6cGxhdGZvcm1TZXREaWRFbmRab29taW5nQ2FsbGJhY2soKQogewogfQogCit2
b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6cGxhdGZvcm1TZXREaWRFbmRTY3JvbGxpbmdDYWxsYmFj
aygpCit7Cit9CisKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpwbGF0Zm9ybVNldERpZFNob3dL
ZXlib2FyZENhbGxiYWNrKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggM2RlOTAw
MTRjYjYyNzU1ZmJiNDUxYTUyNTJkZWIyMWVlMTk1MzM2Yy4uZjQxMGFlZWY4NmUyODQ0MmE5ZTJl
ODM5YmE5ZWJiZWQ4NGRjOGM0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9V
SVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKQEAgLTYyLDYgKzYy
LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGlkSGlkZUtleWJvYXJkQ2FsbGJhY2soSlNWYWx1
ZVJlZik7CiAgICAgSlNWYWx1ZVJlZiBkaWRIaWRlS2V5Ym9hcmRDYWxsYmFjaygpIGNvbnN0Owog
CisgICAgdm9pZCBzZXREaWRFbmRTY3JvbGxpbmdDYWxsYmFjayhKU1ZhbHVlUmVmKTsKKyAgICBK
U1ZhbHVlUmVmIGRpZEVuZFNjcm9sbGluZ0NhbGxiYWNrKCkgY29uc3Q7CisKICAgICBkb3VibGUg
em9vbVNjYWxlKCkgY29uc3Q7CiAgICAgZG91YmxlIG1pbmltdW1ab29tU2NhbGUoKSBjb25zdDsK
ICAgICBkb3VibGUgbWF4aW11bVpvb21TY2FsZSgpIGNvbnN0OwpAQCAtNzcsNiArODAsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1TZXREaWRFbmRab29taW5nQ2FsbGJhY2soKTsKICAg
ICB2b2lkIHBsYXRmb3JtU2V0RGlkU2hvd0tleWJvYXJkQ2FsbGJhY2soKTsKICAgICB2b2lkIHBs
YXRmb3JtU2V0RGlkSGlkZUtleWJvYXJkQ2FsbGJhY2soKTsKKyAgICB2b2lkIHBsYXRmb3JtU2V0
RGlkRW5kU2Nyb2xsaW5nQ2FsbGJhY2soKTsKICAgICB2b2lkIHBsYXRmb3JtQ2xlYXJBbGxDYWxs
YmFja3MoKTsKIAogICAgIHZpcnR1YWwgSlNDbGFzc1JlZiB3cmFwcGVyQ2xhc3MoKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldL
V2ViVmlldy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJW
aWV3LmgKaW5kZXggZjMxYjE0NTkzNjZiNzRjN2U2NjMxMmYxNGRjMjZkMGU3NTM0ZmJmMC4uMjc2
Y2M2OTgwOTYyNmVmMzRmMGU4MTBhOTk1ZmVhN2IwMzllZWQ0NyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3LmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3LmgKQEAgLTM1LDYgKzM1
LDcgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkRW5kWm9vbWluZ0Nh
bGxiYWNrKSh2b2lkKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkU2hv
d0tleWJvYXJkQ2FsbGJhY2spKHZvaWQpOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZv
aWQgKF5kaWRIaWRlS2V5Ym9hcmRDYWxsYmFjaykodm9pZCk7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXmRpZEVuZFNjcm9sbGluZ0NhbGxiYWNrKSh2b2lkKTsKIAogLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dl
YlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbjsKIC0gKHZvaWQpZGVhbGxvYzsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmll
dy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5t
bQppbmRleCA3NmNmZTBjNTMxMjBjYTg5MGU4ZDMwNDI4NzM2YTUyMjRlYWI5MzU0Li4yOTUwOTEw
YWU0MDRkZDAzNjJkZjYwNmI5ZjFkYjdiNzE3MjliYWIyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tCkBAIC0zNiw2ICszNiw3
IEBACiAvLyBGSVhNRTogbW92ZSB0aGVzZSB0byBXS1dlYlZpZXdfUHJpdmF0ZS5oCiAtICh2b2lk
KXNjcm9sbFZpZXdXaWxsQmVnaW5ab29taW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdp
dGhWaWV3OihVSVZpZXcgKil2aWV3OwogLSAodm9pZClzY3JvbGxWaWV3RGlkRW5kWm9vbWluZzoo
VUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyB3aXRoVmlldzooVUlWaWV3ICopdmlldyBhdFNjYWxl
OihDR0Zsb2F0KXNjYWxlOworLSAodm9pZClfZGlkRmluaXNoU2Nyb2xsaW5nOwogCiBAZW5kCiAj
ZW5kaWYKQEAgLTc2LDYgKzc3LDcgQEAKICAgICBzZWxmLmRpZEVuZFpvb21pbmdDYWxsYmFjayA9
IG5pbDsKICAgICBzZWxmLmRpZFNob3dLZXlib2FyZENhbGxiYWNrID0gbmlsOwogICAgIHNlbGYu
ZGlkSGlkZUtleWJvYXJkQ2FsbGJhY2sgPSBuaWw7CisgICAgc2VsZi5kaWRFbmRTY3JvbGxpbmdD
YWxsYmFjayA9IG5pbDsKIAogICAgIHNlbGYuem9vbVRvU2NhbGVDb21wbGV0aW9uSGFuZGxlciA9
IG5pbDsKICAgICBzZWxmLnNob3dLZXlib2FyZENvbXBsZXRpb25IYW5kbGVyID0gbmlsOwpAQCAt
MTIzLDYgKzEyNSwxNCBAQAogICAgICAgICBzZWxmLnpvb21Ub1NjYWxlQ29tcGxldGlvbkhhbmRs
ZXIgPSBudWxscHRyOwogICAgIH0KIH0KKworLSAodm9pZClfZGlkRmluaXNoU2Nyb2xsaW5nCit7
CisgICAgW3N1cGVyIF9kaWRGaW5pc2hTY3JvbGxpbmddOworCisgICAgaWYgKHNlbGYuZGlkRW5k
U2Nyb2xsaW5nQ2FsbGJhY2spCisgICAgICAgIHNlbGYuZGlkRW5kU2Nyb2xsaW5nQ2FsbGJhY2so
KTsKK30KICNlbmRpZgogCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lv
cy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggMjYyMTNkZDJiZjU0ZWJkNTMxNjBmYmZl
OTdkMzI5MGY3ODNlM2FhNS4uZDEzMzc4NzQ1ZTQzMDVmZGY1YzA2ZTExNDcyOGViNTU3MDgxYzM0
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9s
bGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJv
bGxlcklPUy5tbQpAQCAtMTU3LDYgKzE1NywxNCBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6
cGxhdGZvcm1TZXREaWRIaWRlS2V5Ym9hcmRDYWxsYmFjaygpCiAgICAgfTsKIH0KIAordm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OnBsYXRmb3JtU2V0RGlkRW5kU2Nyb2xsaW5nQ2FsbGJhY2soKQor
eworICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2lu
Z2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgd2ViVmlldy5kaWRF
bmRTY3JvbGxpbmdDYWxsYmFjayA9IF57CisgICAgICAgIG1fY29udGV4dC5maXJlQ2FsbGJhY2so
Q2FsbGJhY2tUeXBlRGlkRW5kU2Nyb2xsaW5nKTsKKyAgICB9OworfQorCiB2b2lkIFVJU2NyaXB0
Q29udHJvbGxlcjo6cGxhdGZvcm1DbGVhckFsbENhbGxiYWNrcygpCiB7CiAgICAgVGVzdFJ1bm5l
cldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2Vi
VmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKQEAgLTE2NCw2ICsxNzIsNyBAQCB2b2lkIFVJU2NyaXB0
Q29udHJvbGxlcjo6cGxhdGZvcm1DbGVhckFsbENhbGxiYWNrcygpCiAgICAgd2ViVmlldy53aWxs
QmVnaW5ab29taW5nQ2FsbGJhY2sgPSBuaWw7CiAgICAgd2ViVmlldy5kaWRIaWRlS2V5Ym9hcmRD
YWxsYmFjayA9IG5pbDsKICAgICB3ZWJWaWV3LmRpZFNob3dLZXlib2FyZENhbGxiYWNrID0gbmls
OworICAgIHdlYlZpZXcuZGlkRW5kU2Nyb2xsaW5nQ2FsbGJhY2sgPSBuaWw7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAzNmRkYWI4YTk1MzJiOGMxMzEwZGZkYzkyYzVmM2E4NDllNzU3M2M1Li4xNzdlMzc4NTVi
NzY1MjY3ZjAyNGExZTM5ZDU0YjVhNjVjNzZhOTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTUtMTEtMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgSGFyZHdhcmUga2V5Ym9hcmQgc3BhY2ViYXIgc2Nyb2xscyB0b28gZmFyIG9uIGlPUworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMjI3CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8yMzUwMDY4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2lvcy9rZXlib2FyZC1zY3JvbGxp
bmctZGlzdGFuY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9p
b3Mva2V5Ym9hcmQtc2Nyb2xsaW5nLWRpc3RhbmNlLmh0bWw6IEFkZGVkLgorICAgICAgICBBZGQg
YSB0ZXN0IHRoYXQgcmVjb3JkcyBob3cgbXVjaCB3ZSBzY3JvbGwgd2hlbiBwcmVzc2luZyB0aGUg
c3BhY2ViYXIuCisgICAgICAgIFRoZSB0ZXN0IGlzIGF0IGEgZml4ZWQgc2NhbGUgb2YgMS41IHRv
IGV4cG9zZSB0aGUgYnVnIGZpeGVkIGJ5IHRoaXMgcGF0Y2guCisKIDIwMTUtMTEtMTAgIEtlaXRo
IE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbihy
MTkxODE1KTogNS4zJSByZWdyZXNzaW9uIG9uIERyb21hZW8gSlMgTGlicmFyeSBCZW5jaG1hcmsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9rZXlib2FyZC1zY3JvbGxp
bmctZGlzdGFuY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2tl
eWJvYXJkLXNjcm9sbGluZy1kaXN0YW5jZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE1MzEx
MWM4ZGUyY2E1MWFkZjYxODA3Y2VmNDkzMzJlNDU1YjVmNAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9rZXlib2FyZC1zY3JvbGxpbmctZGlzdGFuY2UtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCitCZWZvcmUgcHJlc3NpbmcgdGhlIHNwYWNlYmFyLCB3aW5kb3cu
c2Nyb2xsWSA9IDAKK0FmdGVyIHByZXNzaW5nIHRoZSBzcGFjZWJhciwgd2luZG93LnNjcm9sbFkg
PSAyNTUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2tleWJvYXJk
LXNjcm9sbGluZy1kaXN0YW5jZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2tl
eWJvYXJkLXNjcm9sbGluZy1kaXN0YW5jZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyYjk1YTQ0M2MzZTE1
MmZlMDA3ODlhNDI3ZDY1YTdjNTRiNGIxM2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9pb3Mva2V5Ym9hcmQtc2Nyb2xsaW5nLWRpc3RhbmNlLmh0bWwKQEAgLTAs
MCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNl
RmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+CisKKzxodG1sPgorCis8aGVhZD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAg
ICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjUsIHVzZXIt
c2NhbGFibGU9bm8iPgorICAgIDxzY3JpcHQgaWQ9InVpLXNjcmlwdCIgdHlwZT0idGV4dC9wbGFp
biI+CisgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8vIE5lZWQgdG8gdGFwIHRv
IGZvY3VzIHNvIHRoYXQga2V5IGV2ZW50cyBnbyB0aHJvdWdoIChzZWVtcyB3cm9uZyEpLgorICAg
ICAgICAgICAgdWlDb250cm9sbGVyLnNpbmdsZVRhcEF0UG9pbnQoNTAsIDI1LCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudHlwZUNoYXJhY3RlclVzaW5nSGFyZHdh
cmVLZXlib2FyZCgiICIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHVpQ29udHJvbGxl
ci5kaWRFbmRTY3JvbGxpbmdDYWxsYmFjayA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
ICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpOworICAgICAgICAgICAgICAgIH07
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KSgpOworICAgIDwv
c2NyaXB0PgorCisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZ2V0
VUlTY3JpcHQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInVpLXNjcmlwdCIpLnRleHQ7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5l
ciB8fCAhdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIGRlYnVnKCJCZWZvcmUgcHJlc3NpbmcgdGhlIHNwYWNlYmFyLCB3aW5kb3cu
c2Nyb2xsWSA9ICIgKyB3aW5kb3cuc2Nyb2xsWSk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1
blVJU2NyaXB0KGdldFVJU2NyaXB0KCksIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAg
ICAgIGRlYnVnKCJBZnRlciBwcmVzc2luZyB0aGUgc3BhY2ViYXIsIHdpbmRvdy5zY3JvbGxZID0g
IiArIHdpbmRvdy5zY3JvbGxZKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHN0
eWxlPgorICAgICNwbGFjZWhvbGRlciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAg
aGVpZ2h0OiA1MDAwcHg7CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5IHN0
eWxlPSJtYXJnaW46IDA7IiBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPGRpdiBpZD0icGxhY2Vo
b2xkZXIiPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKwor
PC9odG1sPgo=
</data>
<flag name="review"
          id="290501"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>