<?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>68556</bug_id>
          
          <creation_ts>2011-09-21 12:02:27 -0700</creation_ts>
          <short_desc>[WK2] [Qt] Implement MouseDown/MouseUp/MouseMoveTo functions for WebKit2 EventSender</short_desc>
          <delta_ts>2011-09-24 09:02:02 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>68108</dependson>
          <blocked>42194</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chang Shu">cshu</reporter>
          <assigned_to name="Chang Shu">cshu</assigned_to>
          <cc>alex</cc>
    
    <cc>kling</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>471012</commentid>
    <comment_count>0</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-21 12:02:27 -0700</bug_when>
    <thetext>The Qt port based on bug 68108</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472377</commentid>
    <comment_count>1</comment_count>
      <attachid>108502</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-23 11:45:56 -0700</bug_when>
    <thetext>Created attachment 108502
patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472409</commentid>
    <comment_count>2</comment_count>
      <attachid>108502</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-23 12:36:53 -0700</bug_when>
    <thetext>Comment on attachment 108502
patch 1

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1054
&gt; +    handled = false;

Another way to do this is to just write:

    handled = m_pageOverlay &amp;&amp; m_pageOverlay-&gt;mouseEvent(mouseEvent);

One reason I like that is that the code already relies on handled not being set before the m_pageOverlay check, because there is no &quot;if (!handled)&quot; around it.

&gt; Tools/WebKitTestRunner/EventSenderProxy.h:74
&gt; +inline bool operator==(const WKPoint&amp; a, const WKPoint&amp; b)
&gt; +{
&gt; +    return a.x == b.x &amp;&amp; a.y == b.y;
&gt; +}

This function is fine, but it is in the wrong file. OK for now, but I think it probably belongs in WebKit2 itself. Need to find a better header to put it in. One possibility is to have it in the public API file that has WKPoint itself, with #ifdef __cplusplus around it.

&gt; Tools/WebKitTestRunner/qt/EventSenderProxyQt.cpp:255
&gt; +void EventSenderProxy::updateClickCountForButton(int button)
&gt; +{
&gt; +    if (m_time - m_clickTime &lt; 1 &amp;&amp; m_position == m_clickPosition &amp;&amp; button == m_clickButton) {
&gt; +        ++m_clickCount;
&gt; +        m_clickTime = m_time;
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    m_clickCount = 1;
&gt; +    m_clickTime = m_time;
&gt; +    m_clickPosition = m_position;
&gt; +    m_clickButton = button;
&gt; +}

This seems like it might be platform-independent. The &quot;&lt; 1&quot; thing seems like it needs a “why” comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472460</commentid>
    <comment_count>3</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-23 13:28:04 -0700</bug_when>
    <thetext>&gt; &gt; Tools/WebKitTestRunner/qt/EventSenderProxyQt.cpp:255
&gt; &gt; +void EventSenderProxy::updateClickCountForButton(int button)
&gt; &gt; +{
&gt; &gt; +    if (m_time - m_clickTime &lt; 1 &amp;&amp; m_position == m_clickPosition &amp;&amp; button == m_clickButton) {
&gt; &gt; +        ++m_clickCount;
&gt; &gt; +        m_clickTime = m_time;
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    m_clickCount = 1;
&gt; &gt; +    m_clickTime = m_time;
&gt; &gt; +    m_clickPosition = m_position;
&gt; &gt; +    m_clickButton = button;
&gt; &gt; +}
&gt; 
&gt; This seems like it might be platform-independent. The &quot;&lt; 1&quot; thing seems like it needs a “why” comment.

Actually, it should be QApplication::doubleClickInterval()/1000.0 on Qt. Thanks for pointing this out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472466</commentid>
    <comment_count>4</comment_count>
      <attachid>108526</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-23 13:35:35 -0700</bug_when>
    <thetext>Created attachment 108526
patch 2: addressed review comments

moved operator== to WKGeometry.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472582</commentid>
    <comment_count>5</comment_count>
      <attachid>108526</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-23 16:01:07 -0700</bug_when>
    <thetext>Comment on attachment 108526
patch 2: addressed review comments

Clearing flags on attachment: 108526

Committed r95878: &lt;http://trac.webkit.org/changeset/95878&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472583</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-23 16:01:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472746</commentid>
    <comment_count>7</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-09-24 02:46:46 -0700</bug_when>
    <thetext>This patch broke GTK+ and Windows bots. Apparently the actually committed patch (#2?) didn&apos;t go through EWS for some reason...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472748</commentid>
    <comment_count>8</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2011-09-24 02:58:15 -0700</bug_when>
    <thetext>Trying to fix GTK compilation, operator== was copied but not removed from the original definition:

http://trac.webkit.org/changeset/95908</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472766</commentid>
    <comment_count>9</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-24 09:02:02 -0700</bug_when>
    <thetext>Sorry for the broken build and thanks for the fix. It&apos;s weird though the bot didn&apos;t detect the problem.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108502</attachid>
            <date>2011-09-23 11:45:56 -0700</date>
            <delta_ts>2011-09-23 13:35:35 -0700</delta_ts>
            <desc>patch 1</desc>
            <filename>68556_1.patch</filename>
            <type>text/plain</type>
            <size>20095</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1ODM3KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDktMjMgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBbV0syXSBbUXRdIEltcGxlbWVudCBNb3Vz
ZURvd24vTW91c2VVcC9Nb3VzZU1vdmVUbyBmdW5jdGlvbnMgZm9yIFdlYktpdDIgRXZlbnRTZW5k
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NTU2
CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBNb3VzZURvd24vTW91c2VVcC9Nb3VzZU1vdmVUbyBm
dW5jdGlvbnMgb24gUXQgcGxhdGZvcm0uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1vdXNlRXZlbnRTeW5jRm9yVGVzdGluZyk6IGluaXRpYWxp
emUgImhhbmRsZWQiCisKIDIwMTEtMDktMjMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgT1ZFUlJJREUgdG8gb3ZlcnJpZGVzIG9mIHZpcnR1YWwg
bWVtYmVyIGZ1bmN0aW9ucyBpbiBjbGllbnQgY2xhc3NlcwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gOTU2NjUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNTEsMTIgKzEwNTEsMTQgQEAgdm9pZCBXZWJQYWdlOjptb3VzZUV2ZW50KGNvbnN0
IFdlYk1vdXNlRQogCiB2b2lkIFdlYlBhZ2U6Om1vdXNlRXZlbnRTeW5jRm9yVGVzdGluZyhjb25z
dCBXZWJNb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBib29sJiBoYW5kbGVkKQogeworICAgIGhhbmRs
ZWQgPSBmYWxzZTsKKwogICAgIC8vIERvbid0IHRyeSB0byBoYW5kbGUgYW55IHBlbmRpbmcgbW91
c2UgZXZlbnRzIGlmIGEgY29udGV4dCBtZW51IGlzIHNob3dpbmcuCiAgICAgaWYgKG1faXNTaG93
aW5nQ29udGV4dE1lbnUpIHsKICAgICAgICAgaGFuZGxlZCA9IHRydWU7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgCisKICAgICBpZiAobV9wYWdlT3ZlcmxheSkgewogICAgICAgICAvLyBM
ZXQgdGhlIHBhZ2Ugb3ZlcmxheSBoYW5kbGUgdGhlIGV2ZW50LgogICAgICAgICBoYW5kbGVkID0g
bV9wYWdlT3ZlcmxheS0+bW91c2VFdmVudChtb3VzZUV2ZW50KTsKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1ODM3KQorKysg
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDkt
MjMgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBbV0syXSBbUXRdIElt
cGxlbWVudCBNb3VzZURvd24vTW91c2VVcC9Nb3VzZU1vdmVUbyBmdW5jdGlvbnMgZm9yIFdlYktp
dDIgRXZlbnRTZW5kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY4NTU2CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBNb3VzZURvd24vTW91c2VVcC9N
b3VzZU1vdmVUbyBmdW5jdGlvbnMgb24gUXQgcGxhdGZvcm0uCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2ZW50U2Vu
ZGVyUHJveHkuaDoKKyAgICAgICAgKFdUUjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tOgorICAgICAgICAoV1RSOjpFdmVu
dFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6bGVhcEZvcndhcmQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvcXQvRXZl
bnRTZW5kZXJQcm94eVF0LmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6RXZl
bnRTZW5kZXJQcm94eSk6CisgICAgICAgIChXVFI6OmdldE1vdXNlQnV0dG9uKToKKyAgICAgICAg
KFdUUjo6Z2V0TW9kaWZpZXJzKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dXBk
YXRlQ2xpY2tDb3VudEZvckJ1dHRvbik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6
OmNyZWF0ZUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6bW91c2VEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91
c2VVcCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKToKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bGVhcEZvcndhcmQpOgorICAgICAgICAoV1RS
OjpFdmVudFNlbmRlclByb3h5OjpzZW5kT3JRdWV1ZUV2ZW50KToKKyAgICAgICAgKFdUUjo6RXZl
bnRTZW5kZXJQcm94eTo6cmVwbGF5U2F2ZWRFdmVudHMpOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdl
YlZpZXc6OnBvc3RFdmVudCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9xdC9XZWJLaXRU
ZXN0UnVubmVyLnBybzoKKwogMjAxMS0wOS0yMyAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29t
PgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQuCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0V2ZW50U2VuZGVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0V2ZW50U2VuZGVyUHJveHkuaAkocmV2aXNpb24gOTU2NjUpCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMjMgKzMzLDEy
IEBAIGNsYXNzIFRlc3RDb250cm9sbGVyOwogCiBjbGFzcyBFdmVudFNlbmRlclByb3h5IHsKIHB1
YmxpYzoKLSAgICBFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKiB0ZXN0Q29udHJvbGxl
cikKLSAgICAgICAgOiBtX3Rlc3RDb250cm9sbGVyKHRlc3RDb250cm9sbGVyKQotICAgICAgICAs
IG1fdGltZSgwKQotICAgICAgICAsIG1fcG9zaXRpb24oKQotICAgICAgICAsIG1fbGVmdE1vdXNl
QnV0dG9uRG93bihmYWxzZSkKLSAgICAgICAgLCBtX2NsaWNrQ291bnQoMCkKLSAgICAgICAgLCBt
X2NsaWNrVGltZSgwKQotICAgICAgICAsIG1fY2xpY2tQb3NpdGlvbigpCi0gICAgICAgICwgbV9j
bGlja0J1dHRvbihrV0tFdmVudE1vdXNlQnV0dG9uTm9CdXR0b24pCi0gICAgICAgICwgZXZlbnRO
dW1iZXIoMCkKLSAgICB7Ci0gICAgfQorICAgIEV2ZW50U2VuZGVyUHJveHkoVGVzdENvbnRyb2xs
ZXIqKTsKIAogICAgIHZvaWQgbW91c2VEb3duKHVuc2lnbmVkIGJ1dHRvbiwgV0tFdmVudE1vZGlm
aWVycyk7CiAgICAgdm9pZCBtb3VzZVVwKHVuc2lnbmVkIGJ1dHRvbiwgV0tFdmVudE1vZGlmaWVy
cyk7CiAgICAgdm9pZCBtb3VzZU1vdmVUbyhkb3VibGUgeCwgZG91YmxlIHkpOwotICAgIHZvaWQg
bGVhcEZvcndhcmQoaW50IG1pbGxpc2Vjb25kcykgeyBtX3RpbWUgKz0gbWlsbGlzZWNvbmRzIC8g
MTAwMC4wOyB9CisgICAgdm9pZCBsZWFwRm9yd2FyZChpbnQgbWlsbGlzZWNvbmRzKTsKIAogICAg
IHZvaWQga2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMsIHVuc2lnbmVk
IGxvY2F0aW9uKTsKIApAQCAtNTksNiArNDgsMTIgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgY3Vy
cmVudEV2ZW50VGltZSgpIHsgcmV0dXJuIG1fdGltZTsgfQogICAgIHZvaWQgdXBkYXRlQ2xpY2tD
b3VudEZvckJ1dHRvbihpbnQgYnV0dG9uKTsKIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIHZvaWQg
c2VuZE9yUXVldWVFdmVudChRRXZlbnQqKTsKKyAgICB2b2lkIHJlcGxheVNhdmVkRXZlbnRzKCk7
CisgICAgUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBjcmVhdGVHcmFwaGljc1NjZW5lTW91c2VF
dmVudChRRXZlbnQ6OlR5cGUsIGNvbnN0IFFQb2ludCYgcG9zLCBjb25zdCBRUG9pbnQmIHNjcmVl
blBvcywgUXQ6Ok1vdXNlQnV0dG9uLCBRdDo6TW91c2VCdXR0b25zLCBRdDo6S2V5Ym9hcmRNb2Rp
ZmllcnMpOworI2VuZGlmCisKICAgICBkb3VibGUgbV90aW1lOwogICAgIFdLUG9pbnQgbV9wb3Np
dGlvbjsKICAgICBib29sIG1fbGVmdE1vdXNlQnV0dG9uRG93bjsKQEAgLTY2LDkgKzYxLDE4IEBA
IHByaXZhdGU6CiAgICAgZG91YmxlIG1fY2xpY2tUaW1lOwogICAgIFdLUG9pbnQgbV9jbGlja1Bv
c2l0aW9uOwogICAgIFdLRXZlbnRNb3VzZUJ1dHRvbiBtX2NsaWNrQnV0dG9uOworI2lmIFBMQVRG
T1JNKE1BQykKICAgICBpbnQgZXZlbnROdW1iZXI7CisjZWxpZiBQTEFURk9STShRVCkKKyAgICBR
dDo6TW91c2VCdXR0b25zIG1fbW91c2VCdXR0b25zOworI2VuZGlmCiB9OwogCitpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFdLUG9pbnQmIGEsIGNvbnN0IFdLUG9pbnQmIGIpCit7CisgICAg
cmV0dXJuIGEueCA9PSBiLnggJiYgYS55ID09IGIueTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RS
CiAKICNlbmRpZiAvLyBFdmVudFNlbmRlclByb3h5X2gKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAkocmV2aXNpb24gOTU2NjUpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3
IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKFFUKQogICAgIGJvb2wgc2VuZEV2ZW50KFFFdmVu
dCopOworICAgIHZvaWQgcG9zdEV2ZW50KFFFdmVudCopOwogI2VuZGlmCiAKICAgICBXS1JlY3Qg
d2luZG93RnJhbWUoKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCShyZXZpc2lv
biA5NTY2NSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5j
bHVkZSA8V2ViS2l0Mi9XS0dlb21ldHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
IAotI2lmICFQTEFURk9STShNQUMpCisjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFFU
KQogI2RlZmluZSBVU0VfV0VCUFJPQ0VTU19FVkVOVF9TSU1VTEFUSU9OCiAjZW5kaWYKIApJbmRl
eDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCShy
ZXZpc2lvbiA5NTY2NSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVy
UHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTk3LDkgKzk3LDE3IEBAIHN0YXRpYyBpbnQgYnVp
bGRNb2RpZmllckZsYWdzKFdLRXZlbnRNb2QKICAgICByZXR1cm4gZmxhZ3M7CiB9CiAKLXN0YXRp
YyBib29sIG9wZXJhdG9yPT0oY29uc3QgV0tQb2ludCYgYSwgY29uc3QgV0tQb2ludCYgYikKK0V2
ZW50U2VuZGVyUHJveHk6OkV2ZW50U2VuZGVyUHJveHkoVGVzdENvbnRyb2xsZXIqIHRlc3RDb250
cm9sbGVyKQorICAgIDogbV90ZXN0Q29udHJvbGxlcih0ZXN0Q29udHJvbGxlcikKKyAgICAsIG1f
dGltZSgwKQorICAgICwgbV9wb3NpdGlvbigpCisgICAgLCBtX2xlZnRNb3VzZUJ1dHRvbkRvd24o
ZmFsc2UpCisgICAgLCBtX2NsaWNrQ291bnQoMCkKKyAgICAsIG1fY2xpY2tUaW1lKDApCisgICAg
LCBtX2NsaWNrUG9zaXRpb24oKQorICAgICwgbV9jbGlja0J1dHRvbihrV0tFdmVudE1vdXNlQnV0
dG9uTm9CdXR0b24pCisgICAgLCBldmVudE51bWJlcigwKQogewotICAgIHJldHVybiBhLnggPT0g
Yi54ICYmIGEueSA9PSBiLnk7CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dXBkYXRlQ2xp
Y2tDb3VudEZvckJ1dHRvbihpbnQgYnV0dG9uKQpAQCAtMTgzLDYgKzE5MSwxMSBAQCB2b2lkIEV2
ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRvdWJsCiAgICAgICAgIFt0YXJnZXRWaWV3IG1v
dXNlTW92ZWQ6ZXZlbnRdOwogfQogCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmxlYXBGb3J3YXJk
KGludCBtaWxsaXNlY29uZHMpCit7CisgICAgbV90aW1lICs9IG1pbGxpc2Vjb25kcyAvIDEwMDAu
MDsKK30KKwogdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUmVmIGtleSwg
V0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQogewogICAg
IE5TU3RyaW5nKiBjaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6dG9TVEQo
a2V5KS5jX3N0cigpIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9FdmVudFNlbmRl
clByb3h5UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvRXZl
bnRTZW5kZXJQcm94eVF0LmNwcAkocmV2aXNpb24gOTU2NjUpCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL3F0L0V2ZW50U2VuZGVyUHJveHlRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcg
KzI5LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbmNsdWRlICJUZXN0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgPFFLZXlFdmVudD4KLSNpbmNsdWRlIDxXZWJDb3JlL05vdElt
cGxlbWVudGVkLmg+CisjaW5jbHVkZSA8UXRUZXN0L1F0VGVzdD4KICNpbmNsdWRlIDxXZWJLaXQy
L1dLUGFnZVByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLU3RyaW5nUXQuaD4KIApAQCAt
NDIsNyArNDIsNTYgQEAgbmFtZXNwYWNlIFdUUiB7CiAjZGVmaW5lIEtFWUNPREVfVVBBUlJPVyAg
ICAgMHhmNzAwCiAjZGVmaW5lIEtFWUNPREVfRE9XTkFSUk9XICAgMHhmNzAxCiAKLVF0OjpLZXli
b2FyZE1vZGlmaWVycyBnZXRNb2RpZmllcnMoV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnNSZWYp
CitzdHJ1Y3QgV1RSRXZlbnRRdWV1ZSB7CisgICAgUUV2ZW50KiBtX2V2ZW50OworICAgIGludCBt
X2RlbGF5OworfTsKKworc3RhdGljIFdUUkV2ZW50UXVldWUgZXZlbnRRdWV1ZVsxMDI0XTsKK3N0
YXRpYyB1bnNpZ25lZCBlbmRPZlF1ZXVlOworc3RhdGljIHVuc2lnbmVkIHN0YXJ0T2ZRdWV1ZTsK
KworRXZlbnRTZW5kZXJQcm94eTo6RXZlbnRTZW5kZXJQcm94eShUZXN0Q29udHJvbGxlciogdGVz
dENvbnRyb2xsZXIpCisgICAgOiBtX3Rlc3RDb250cm9sbGVyKHRlc3RDb250cm9sbGVyKQorICAg
ICwgbV90aW1lKDApCisgICAgLCBtX3Bvc2l0aW9uKCkKKyAgICAsIG1fbGVmdE1vdXNlQnV0dG9u
RG93bihmYWxzZSkKKyAgICAsIG1fY2xpY2tDb3VudCgwKQorICAgICwgbV9jbGlja1RpbWUoMCkK
KyAgICAsIG1fY2xpY2tQb3NpdGlvbigpCisgICAgLCBtX2NsaWNrQnV0dG9uKGtXS0V2ZW50TW91
c2VCdXR0b25Ob0J1dHRvbikKKyAgICAsIG1fbW91c2VCdXR0b25zKDApCit7CisgICAgbWVtc2V0
KGV2ZW50UXVldWUsIDAsIHNpemVvZihldmVudFF1ZXVlKSk7CisgICAgZW5kT2ZRdWV1ZSA9IDA7
CisgICAgc3RhcnRPZlF1ZXVlID0gMDsKK30KKworc3RhdGljIFF0OjpNb3VzZUJ1dHRvbiBnZXRN
b3VzZUJ1dHRvbih1bnNpZ25lZCBidXR0b24pCit7CisgICAgUXQ6Ok1vdXNlQnV0dG9uIG1vdXNl
QnV0dG9uOworICAgIHN3aXRjaCAoYnV0dG9uKSB7CisgICAgY2FzZSAwOgorICAgICAgICBtb3Vz
ZUJ1dHRvbiA9IFF0OjpMZWZ0QnV0dG9uOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE6Cisg
ICAgICAgIG1vdXNlQnV0dG9uID0gUXQ6Ok1pZEJ1dHRvbjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSAyOgorICAgICAgICBtb3VzZUJ1dHRvbiA9IFF0OjpSaWdodEJ1dHRvbjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSAzOgorICAgICAgICAvLyBmYXN0L2V2ZW50cy9tb3VzZS1jbGljay1l
dmVudHMgZXhwZWN0cyB0aGUgNHRoIGJ1dHRvbiB0byBiZSB0cmVhdGVkIGFzIHRoZSBtaWRkbGUg
YnV0dG9uCisgICAgICAgIG1vdXNlQnV0dG9uID0gUXQ6Ok1pZEJ1dHRvbjsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbW91c2VCdXR0b24gPSBRdDo6TGVmdEJ1dHRvbjsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBtb3VzZUJ1dHRvbjsKK30KKworc3Rh
dGljIFF0OjpLZXlib2FyZE1vZGlmaWVycyBnZXRNb2RpZmllcnMoV0tFdmVudE1vZGlmaWVycyBt
b2RpZmllcnNSZWYpCiB7CiAgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlmaWVycyA9IDA7
CiAKQEAgLTE5MSwxOSArMjQwLDEwNiBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24o
V0tTdHJpbmdSCiAgICAgbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+c2VuZEV2ZW50
KCZldmVudDIpOwogfQogCi12b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bih1bnNpZ25l
ZCwgV0tFdmVudE1vZGlmaWVycykKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6dXBkYXRlQ2xpY2tD
b3VudEZvckJ1dHRvbihpbnQgYnV0dG9uKQoreworICAgIGlmIChtX3RpbWUgLSBtX2NsaWNrVGlt
ZSA8IDEgJiYgbV9wb3NpdGlvbiA9PSBtX2NsaWNrUG9zaXRpb24gJiYgYnV0dG9uID09IG1fY2xp
Y2tCdXR0b24pIHsKKyAgICAgICAgKyttX2NsaWNrQ291bnQ7CisgICAgICAgIG1fY2xpY2tUaW1l
ID0gbV90aW1lOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jbGlja0NvdW50ID0g
MTsKKyAgICBtX2NsaWNrVGltZSA9IG1fdGltZTsKKyAgICBtX2NsaWNrUG9zaXRpb24gPSBtX3Bv
c2l0aW9uOworICAgIG1fY2xpY2tCdXR0b24gPSBidXR0b247Cit9CisKK1FHcmFwaGljc1NjZW5l
TW91c2VFdmVudCogRXZlbnRTZW5kZXJQcm94eTo6Y3JlYXRlR3JhcGhpY3NTY2VuZU1vdXNlRXZl
bnQoUUV2ZW50OjpUeXBlIHR5cGUsIGNvbnN0IFFQb2ludCYgcG9zLCBjb25zdCBRUG9pbnQmIHNj
cmVlblBvcywgUXQ6Ok1vdXNlQnV0dG9uIGJ1dHRvbiwgUXQ6Ok1vdXNlQnV0dG9ucyBidXR0b25z
LCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kaWZpZXJzKQoreworICAgIFFHcmFwaGljc1NjZW5l
TW91c2VFdmVudCogZXZlbnQ7CisgICAgZXZlbnQgPSBuZXcgUUdyYXBoaWNzU2NlbmVNb3VzZUV2
ZW50KHR5cGUpOworICAgIGV2ZW50LT5zZXRQb3MocG9zKTsKKyAgICBldmVudC0+c2V0U2NyZWVu
UG9zKHNjcmVlblBvcyk7CisgICAgZXZlbnQtPnNldEJ1dHRvbihidXR0b24pOworICAgIGV2ZW50
LT5zZXRCdXR0b25zKGJ1dHRvbnMpOworICAgIGV2ZW50LT5zZXRNb2RpZmllcnMobW9kaWZpZXJz
KTsKKworICAgIHJldHVybiBldmVudDsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3Vz
ZURvd24odW5zaWduZWQgYnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJzIHdrTW9kaWZpZXJzKQorewor
ICAgIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RpZmllcnMgPSBnZXRNb2RpZmllcnMod2tNb2Rp
ZmllcnMpOworICAgIFF0OjpNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiA9IGdldE1vdXNlQnV0dG9u
KGJ1dHRvbik7CisKKyAgICB1cGRhdGVDbGlja0NvdW50Rm9yQnV0dG9uKGJ1dHRvbik7CisKKyAg
ICBtX21vdXNlQnV0dG9ucyB8PSBtb3VzZUJ1dHRvbjsKKworICAgIFFQb2ludCBtb3VzZVBvcyht
X3Bvc2l0aW9uLngsIG1fcG9zaXRpb24ueSk7CisgICAgUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50
KiBldmVudCA9IGNyZWF0ZUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KChtX2NsaWNrQ291bnQgPT0g
MikgPyBRRXZlbnQ6OkdyYXBoaWNzU2NlbmVNb3VzZURvdWJsZUNsaWNrIDogUUV2ZW50OjpHcmFw
aGljc1NjZW5lTW91c2VQcmVzcywKKyAgICAgICAgbW91c2VQb3MsIG1vdXNlUG9zLCBtb3VzZUJ1
dHRvbiwgbV9tb3VzZUJ1dHRvbnMsIG1vZGlmaWVycyk7CisKKyAgICBzZW5kT3JRdWV1ZUV2ZW50
KGV2ZW50KTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1
dHRvbiwgV0tFdmVudE1vZGlmaWVycykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFF0
OjpNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiA9IGdldE1vdXNlQnV0dG9uKGJ1dHRvbik7CisgICAg
bV9tb3VzZUJ1dHRvbnMgJj0gfm1vdXNlQnV0dG9uOworCisgICAgUVBvaW50IG1vdXNlUG9zKG1f
cG9zaXRpb24ueCwgbV9wb3NpdGlvbi55KTsKKyAgICBRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQq
IGV2ZW50ID0gY3JlYXRlR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQoUUV2ZW50OjpHcmFwaGljc1Nj
ZW5lTW91c2VSZWxlYXNlLAorICAgICAgICBtb3VzZVBvcywgbW91c2VQb3MsIG1vdXNlQnV0dG9u
LCBtX21vdXNlQnV0dG9ucywgUXQ6Ok5vTW9kaWZpZXIpOworCisgICAgc2VuZE9yUXVldWVFdmVu
dChldmVudCk7CiB9CiAKLXZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VVcCh1bnNpZ25lZCwg
V0tFdmVudE1vZGlmaWVycykKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VNb3ZlVG8oZG91
YmxlIHgsIGRvdWJsZSB5KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9wb3NpdGlv
bi54ID0geDsKKyAgICBtX3Bvc2l0aW9uLnkgPSB5OworCisgICAgUVBvaW50IG1vdXNlUG9zKG1f
cG9zaXRpb24ueCwgbV9wb3NpdGlvbi55KTsKKyAgICBRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQq
IGV2ZW50ID0gY3JlYXRlR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQoUUV2ZW50OjpHcmFwaGljc1Nj
ZW5lTW91c2VNb3ZlLAorICAgICAgICBtb3VzZVBvcywgbW91c2VQb3MsIFF0OjpOb0J1dHRvbiwg
bV9tb3VzZUJ1dHRvbnMsIFF0OjpOb01vZGlmaWVyKTsKKworICAgIHNlbmRPclF1ZXVlRXZlbnQo
ZXZlbnQpOwogfQogCi12b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRvdWJsZSwg
ZG91YmxlKQordm9pZCBFdmVudFNlbmRlclByb3h5OjpsZWFwRm9yd2FyZChpbnQgbXMpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBldmVudFF1ZXVlW2VuZE9mUXVldWVdLm1fZGVsYXkg
PSBtczsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpzZW5kT3JRdWV1ZUV2ZW50KFFFdmVu
dCogZXZlbnQpCit7CisgICAgaWYgKGVuZE9mUXVldWUgPT0gc3RhcnRPZlF1ZXVlICYmICFldmVu
dFF1ZXVlW2VuZE9mUXVldWVdLm1fZGVsYXkpIHsKKyAgICAgICAgbV90ZXN0Q29udHJvbGxlci0+
bWFpbldlYlZpZXcoKS0+c2VuZEV2ZW50KGV2ZW50KTsKKyAgICAgICAgZGVsZXRlIGV2ZW50Owor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZXZlbnRRdWV1ZVtlbmRPZlF1ZXVlKytdLm1f
ZXZlbnQgPSBldmVudDsKKyAgICBldmVudFF1ZXVlW2VuZE9mUXVldWVdLm1fZGVsYXkgPSAwOwor
ICAgIHJlcGxheVNhdmVkRXZlbnRzKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmVw
bGF5U2F2ZWRFdmVudHMoKQoreworICAgIGlmIChzdGFydE9mUXVldWUgPCBlbmRPZlF1ZXVlKSB7
CisgICAgICAgIHdoaWxlICghZXZlbnRRdWV1ZVtzdGFydE9mUXVldWVdLm1fZGVsYXkgJiYgc3Rh
cnRPZlF1ZXVlIDwgZW5kT2ZRdWV1ZSkgeworICAgICAgICAgICAgUUV2ZW50KiBldiA9IGV2ZW50
UXVldWVbc3RhcnRPZlF1ZXVlKytdLm1fZXZlbnQ7CisgICAgICAgICAgICBtX3Rlc3RDb250cm9s
bGVyLT5tYWluV2ViVmlldygpLT5wb3N0RXZlbnQoZXYpOworICAgICAgICB9CisgICAgICAgIGlm
IChzdGFydE9mUXVldWUgPT0gZW5kT2ZRdWV1ZSkgeworICAgICAgICAgICAgc3RhcnRPZlF1ZXVl
ID0gMDsKKyAgICAgICAgICAgIGVuZE9mUXVldWUgPSAwOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgUVRlc3Q6OnFXYWl0KGV2ZW50UXVldWVbc3RhcnRPZlF1ZXVlXS5tX2RlbGF5KTsK
KyAgICAgICAgICAgIGV2ZW50UXVldWVbc3RhcnRPZlF1ZXVlXS5tX2RlbGF5ID0gMDsKKyAgICAg
ICAgfQorICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcAkocmV2aXNpb24gOTU2NjUp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA3LDQgKzEwNyw5IEBAIGJvb2wgUGxhdGZvcm1XZWJWaWV3OjpzZW5k
RXZlbnQoUUV2ZW50KiAKICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1f
dmlldy0+d2tWaWV3KCksIGV2ZW50KTsKIH0KIAordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnBvc3RF
dmVudChRRXZlbnQqIGV2ZW50KQoreworICAgIFFDb3JlQXBwbGljYXRpb246OnBvc3RFdmVudCht
X3ZpZXctPndrVmlldygpLCBldmVudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDog
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9XZWJLaXRUZXN0UnVubmVyLnBybwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1dlYktpdFRlc3RSdW5uZXIucHJvCShyZXZp
c2lvbiA5NTY2NSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvV2ViS2l0VGVzdFJ1bm5l
ci5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgdW5peDohbWFjOiFzeW1iaWFu
OiFlbWJlZGRlZCB7CiAgICAgUEtHQ09ORklHICs9IGZvbnRjb25maWcKIH0KIAotUVQgPSBjb3Jl
IGd1aSBuZXR3b3JrIGRlY2xhcmF0aXZlCitRVCA9IGNvcmUgZ3VpIG5ldHdvcmsgZGVjbGFyYXRp
dmUgdGVzdGxpYgogCiBIRUFERVJTID0gXAogICAgICQkQkFTRURJUi9FdmVudFNlbmRlclByb3h5
LmggXApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTU4MzcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wOS0yMyAgQ2hhbmcgU2h1ICA8
Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSzJdIFtRdF0gSW1wbGVtZW50IE1vdXNlRG93
bi9Nb3VzZVVwL01vdXNlTW92ZVRvIGZ1bmN0aW9ucyBmb3IgV2ViS2l0MiBFdmVudFNlbmRlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg1NTYKKwor
ICAgICAgICBJbXBsZW1lbnQgdGhlIE1vdXNlRG93bi9Nb3VzZVVwL01vdXNlTW92ZVRvIGZ1bmN0
aW9ucyBvbiBRdCBwbGF0Zm9ybS4KKworICAgICAgICBVbnNraXAgcGFzc2VkIHRlc3RzLgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0v
cXQtd2syL1NraXBwZWQ6CisKIDIwMTEtMDktMjMgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIE5vcm1hbGl6ZSB0ZXN0IG5hbWVz
LgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQJKHJldmlzaW9uIDk1NjY1KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAg
LTcwLDE5ICs3MCwxNSBAQCBjb21wb3NpdGluZy92aWRlby92aWRlby1wb3N0ZXIuaHRtbAogZWRp
dGluZy9kZWxldGluZy9kZWxldGUtYnktd29yZC0wMDEuaHRtbAogZWRpdGluZy9kZWxldGluZy9k
ZWxldGUtYnktd29yZC0wMDIuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlnYXR1cmUt
MDAyLmh0bWwKLWVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpZ2F0dXJlLTAwMy5odG1sCitlZGl0
aW5nL2RlbGV0aW5nL21lcmdlLXBhcmFncmFwaC1mcm9tLXAtd2l0aC1zdHlsZS5odG1sCiBlZGl0
aW5nL2RlbGV0aW5nL3NraXAtdmlyYW1hLTAwMS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL3NtYXJ0
LWRlbGV0ZS0wMDEuaHRtbAogZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDAyLmh0bWwK
LWVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sCi1lZGl0aW5nL2RlbGV0aW5n
L3NtYXJ0LWRlbGV0ZS0wMDQuaHRtbAotZWRpdGluZy9leGVjQ29tbWFuZC9maW5kU3RyaW5nLTIu
aHRtbAogZWRpdGluZy9pbnB1dC9lbWFjcy1jdHJsLW8uaHRtbAogZWRpdGluZy9pbnB1dC9vcHRp
b24tcGFnZS11cC1kb3duLmh0bWwKIGVkaXRpbmcvaW5wdXQvc2Nyb2xsLXZpZXdwb3J0LXBhZ2Ut
dXAtZG93bi5odG1sCiBlZGl0aW5nL2luc2VydGluZy90eXBpbmctdGFiLWRlc2lnbm1vZGUtZm9y
bXMuaHRtbAogZWRpdGluZy9pbnNlcnRpbmcvdHlwaW5nLXRhYi1kZXNpZ25tb2RlLmh0bWwKLWVk
aXRpbmcvcGFzdGVib2FyZC80OTQ0NzcwLTIuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHkt
c3RhbmRhbG9uZS1pbWFnZS1jcmFzaC5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZW1hY3MtY250
bC15LTAwMS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvc21hcnQtcGFzdGUtMDAxLmh0bWwKQEAg
LTkyLDEzICs4OCw5IEBAIGVkaXRpbmcvcGFzdGVib2FyZC9zbWFydC1wYXN0ZS0wMDQuaHRtbAog
ZWRpdGluZy9wYXN0ZWJvYXJkL3NtYXJ0LXBhc3RlLTAwNS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9h
cmQvc21hcnQtcGFzdGUtMDA3Lmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9zbWFydC1wYXN0ZS0w
MDguaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vMTQ5NzEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24v
NTM1NDQ1NS0xLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzUzNTQ0NTUtMi5odG1sCi1lZGl0aW5n
L3NlbGVjdGlvbi9hbmNob3ItZm9jdXMyLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2FuY2hvci1m
b2N1czMuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vYnV0dG9uLXJpZ2h0LWNsaWNrLmh0bWwKLWVk
aXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLWZvY3VzYWJsZS1saW5rLXNob3VsZC1ub3QtY2xlYXIt
c2VsZWN0aW9uLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRl
LWVkaXRhYmxlLWRpdi5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1wYWRkaW5nLXdp
dGgtbXVsdGlwbGUtbGluZS1ib3hlcy5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jb250ZXh0LW1l
bnUtb24tdGV4dC5odG1sCkBAIC0xMDYsNDAgKzk4LDI4IEBAIGVkaXRpbmcvc2VsZWN0aW9uL2Rv
dWJsZWNsaWNrLWNyYXNoLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRl
c3BhY2UtY3Jhc2guaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFj
ZS1pbWctY3Jhc2guaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFj
ZS5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9kcmFnLXNlbGVjdC0xLmh0bWwKLWVkaXRpbmcvc2Vs
ZWN0aW9uL2RyYWctc2VsZWN0LXJhcGlkbHkuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vZHJhZy1z
dGFydC1ldmVudC1jbGllbnQteC15Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2VtcHR5LWNlbGwt
cmlnaHQtY2xpY2suaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vZXhwYW5kaW5nLXNlbGVjdGlvbnMu
aHRtbAotZWRpdGluZy9zZWxlY3Rpb24vZXhwYW5kaW5nLXNlbGVjdGlvbnMyLmh0bWwKLWVkaXRp
bmcvc2VsZWN0aW9uL2Zha2UtZG91YmxlY2xpY2suaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vaW5s
aW5lLWNsb3Nlc3QtbGVhZi1jaGlsZC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9sYXN0LWVtcHR5
LWlubGluZS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJlZ2luLWVuZC5odG1sCi1lZGl0
aW5nL3NlbGVjdGlvbi9wYXJhZ3JhcGgtZ3JhbnVsYXJpdHkuaHRtbAogZWRpdGluZy9zZWxlY3Rp
b24vc2VsZWN0LW91dC1vZi1lZGl0YWJsZS5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Qt
b3V0LW9mLWZsb2F0ZWQtY29udGVudGVkaXRhYmxlLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3Nl
bGVjdC1vdXQtb2YtZmxvYXRlZC1pbnB1dC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Qt
b3V0LW9mLWZsb2F0ZWQtdGV4dGFyZWEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0aW9u
LWFjdGlvbnMuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vdXNlci1kcmFnLWVsZW1lbnQtYW5kLXVz
ZXItc2VsZWN0LW5vbmUuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vd29yZC1ncmFudWxhcml0eS5o
dG1sCi1lZGl0aW5nL3VuZG8vdW5kby1zbWFydC1kZWxldGUtcmV2ZXJzZWQtc2VsZWN0aW9uLmh0
bWwKLWVkaXRpbmcvdW5kby91bmRvLXNtYXJ0LWRlbGV0ZS13b3JkLmh0bWwKK2VkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LWx0ci1yaWdodC5odG1sCitlZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1ydGwt
Mi1sZWZ0Lmh0bWwKK2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlZm9yZS1hbmQtYWZ0ZXItdGFi
bGUuaHRtbAorZWRpdGluZy9zZWxlY3Rpb24vaW5saW5lLWNsb3Nlc3QtbGVhZi1jaGlsZC5odG1s
CiBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2hpdHRlc3Qtb24tcmVsYXRpdmUtcG9zaXRpb25lZC1j
aGlsZHJlbi5odG1sCiBmYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKIGZh
c3QvZHluYW1pYy9sYXllci1oaXQtdGVzdC1jcmFzaC5odG1sCiBmYXN0L2VuY29kaW5nL21haWx0
by1hbHdheXMtdXRmLTguaHRtbAogZmFzdC9ldmVudHMvYWNjZXNzLWtleS1zZWxmLWRlc3RydWN0
Lmh0bWwKLWZhc3QvZXZlbnRzL2F1dG9zY3JvbGwtaW4tdGV4dGZpZWxkLmh0bWwKLWZhc3QvZXZl
bnRzL2F1dG9zY3JvbGwtbm9uc2Nyb2xsYWJsZS1pZnJhbWUtaW4tc2Nyb2xsYWJsZS1kaXYuaHRt
bAotZmFzdC9ldmVudHMvYXV0b3Njcm9sbC13aXRoLW5vbi1zY3JvbGxhYmxlLXBhcmVudC5odG1s
CiBmYXN0L2V2ZW50cy9ib2d1cy1kcm9wRWZmZWN0LWVmZmVjdEFsbG93ZWQuaHRtbAogZmFzdC9l
dmVudHMvY29udGV4dC1uby1kZXNlbGVjdC5odG1sCiBmYXN0L2V2ZW50cy9jb250ZXh0LW9ubW91
c2Vkb3duLWV2ZW50Lmh0bWwKIGZhc3QvZXZlbnRzL2NvbnRleHRtZW51LXNjcm9sbGVkLXBhZ2Ut
d2l0aC1mcmFtZS5odG1sCiBmYXN0L2V2ZW50cy9jb250aW51b3VzLXBsYXRmb3JtLXdoZWVsZXZl
bnQtaW4tc2Nyb2xsaW5nLWRpdi5odG1sCi1mYXN0L2V2ZW50cy9kYmxjbGljay1hZGRFdmVudExp
c3RlbmVyLmh0bWwKK2Zhc3QvZXZlbnRzL2ZpcmUtbW91c2Vkb3duLXdoaWxlLXByZXNzaW5nLW1v
dXNlLWJ1dHRvbi5odG1sCiBmYXN0L2V2ZW50cy9pbnB1dFRleHQtbmV2ZXItZmlyZWQtb24ta2V5
ZG93bi1jYW5jZWwuaHRtbAogZmFzdC9ldmVudHMvbW91c2UtY2xpY2stZXZlbnRzLmh0bWwKIGZh
c3QvZXZlbnRzL21vdXNldXAtZnJvbS1idXR0b24yLmh0bWwKQEAgLTE1MywyMiArMTMzLDE5IEBA
IGZhc3QvZXZlbnRzL3Njcm9sbC1pbi1zY2FsZWQtcGFnZS13aXRoLW8KIGZhc3QvZXZlbnRzL3Nl
bGVjdHN0YXJ0LXByZXZlbnQtc2VsZWN0aW9uLW9uLXJpZ2h0LWNsaWNrLmh0bWwKIGZhc3QvZXZl
bnRzL3doZWVsZXZlbnQtaW4taG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKIGZhc3Qv
ZXZlbnRzL3doZWVsZXZlbnQtaW4tdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCi1mYXN0
L2V2ZW50cy96b29tLWRibGNsaWNrLmh0bWwKIGZhc3QvZm9ybXMvYWNjZXNzLWtleS5odG1sCiBm
YXN0L2Zvcm1zL2ZvY3VzLWNoYW5nZS1vbi1rZXlwcmVzcy5odG1sCiBmYXN0L2Zvcm1zL2ZvY3Vz
LXNlbGVjdGlvbi10ZXh0YXJlYS5odG1sCiBmYXN0L2Zvcm1zL2ltcGxpY2l0LXN1Ym1pc3Npb24u
aHRtbAotZmFzdC9mb3Jtcy9pbnB1dC10ZXh0LWRvdWJsZS1jbGljay5odG1sCitmYXN0L2Zvcm1z
L2ludGVyYWN0aXZlLXZhbGlkYXRpb24tYXR0YWNoLWFzc2VydGlvbi5odG1sCiBmYXN0L2Zvcm1z
L2xlZ2VuZC1hY2Nlc3Mta2V5Lmh0bWwKLWZhc3QvZm9ybXMvb25zZWxlY3QtdGV4dGZpZWxkLmh0
bWwKK2Zhc3QvZm9ybXMvc2VhcmNoLWNhbmNlbC1idXR0b24tbW91c2V1cC5odG1sCiBmYXN0L2Zv
cm1zL3NlbGVjdC1hY2Nlc3NrZXkuaHRtbAorZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS1kcmFnLmh0
bWwKIGZhc3QvbG9hZGVyL3BvbGljeS1kZWxlZ2F0ZS1hY3Rpb24taGl0LXRlc3Qtem9vbWVkLmh0
bWwKIGZhc3QvcmVwYWludC9zZWxlY3Rpb24tcmwuaHRtbAogZmFzdC90ZXh0L29mZnNldEZvclBv
c2l0aW9uLWNvbXBsZXgtZmFsbGJhY2suaHRtbAogZmFzdC90ZXh0L3Jlc2V0LWRyYWctb24tbW91
c2UtZG93bi5odG1sCi1mYXN0L3dyaXRpbmctbW9kZS9ob3Jpem9udGFsLWJ0LXJlcGxhY2VkLXNl
bGVjdGlvbi5odG1sCi1mYXN0L3dyaXRpbmctbW9kZS92ZXJ0aWNhbC1sci1yZXBsYWNlZC1zZWxl
Y3Rpb24uaHRtbAotZmFzdC93cml0aW5nLW1vZGUvdmVydGljYWwtcmwtcmVwbGFjZWQtc2VsZWN0
aW9uLmh0bWwKIHBsdWdpbnMva2V5Ym9hcmQtZXZlbnRzLmh0bWwKIHNjcm9sbGJhcnMvc2Nyb2xs
ZXZlbnQtaWZyYW1lLW5vLXNjcm9sbGluZy13aGVlbC5odG1sCiAKQEAgLTE3Nyw4ICsxNTQsNiBA
QCBmYXN0L2Zvcm1zL2Zvcm0tYXNzb2NpYXRlZC1lbGVtZW50LWNyYXNoCiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2lzb2xhdGVkV29ybGQvdXNlckdlc3R1cmVFdmVudHMuaHRtbAogcGx1Z2lucy9yZXNp
emUtZnJvbS1wbHVnaW4uaHRtbAogCi1zdmcvY3VzdG9tL2ZvcmVpZ25PYmplY3QtY3Jhc2gtb24t
aG92ZXIueG1sCi1zdmcvY3VzdG9tL21vdXNlLW1vdmUtb24tc3ZnLWNvbnRhaW5lci1zdGFuZGFs
b25lLnN2Zwogc3ZnL2N1c3RvbS9tb3VzZS1tb3ZlLW9uLXN2Zy1jb250YWluZXIueGh0bWwKIHN2
Zy9jdXN0b20vbW91c2UtbW92ZS1vbi1zdmctcm9vdC1zdGFuZGFsb25lLnN2Zwogc3ZnL2N1c3Rv
bS9tb3VzZS1tb3ZlLW9uLXN2Zy1yb290LnhodG1sCg==
</data>
<flag name="review"
          id="105486"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108526</attachid>
            <date>2011-09-23 13:35:35 -0700</date>
            <delta_ts>2011-09-23 16:01:07 -0700</delta_ts>
            <desc>patch 2: addressed review comments</desc>
            <filename>68556_2.patch</filename>
            <type>text/plain</type>
            <size>20434</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1ODU1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDktMjMgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBbV0syXSBbUXRdIEltcGxlbWVudCBNb3Vz
ZURvd24vTW91c2VVcC9Nb3VzZU1vdmVUbyBmdW5jdGlvbnMgZm9yIFdlYktpdDIgRXZlbnRTZW5k
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NTU2
CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBNb3VzZURvd24vTW91c2VVcC9Nb3VzZU1vdmVUbyBm
dW5jdGlvbnMgb24gUXQgcGxhdGZvcm0uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5oOgorICAgICAgICAob3Bl
cmF0b3I9PSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjptb3VzZUV2ZW50U3luY0ZvclRlc3RpbmcpOiBpbml0aWFs
aXplICJoYW5kbGVkIgorCiAyMDExLTA5LTIzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBXZWJIaXRUZXN0UmVzdWx0IGZpbGVzIHRvIFNoYXJl
ZC8gaW4gdGhlIFhjb2RlIHByb2plY3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS0dlb21ldHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLR2VvbWV0cnkuaAkocmV2aXNpb24gOTU2NjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tHZW9tZXRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxMSBAQCB0eXBl
ZGVmIHN0cnVjdCBXS1JlY3QgV0tSZWN0OwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KKworaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXS1BvaW50JiBhLCBjb25zdCBXS1BvaW50JiBiKQor
eworICAgIHJldHVybiBhLnggPT0gYi54ICYmIGEueSA9PSBiLnk7Cit9CiAjZW5kaWYKIAogI2Vu
ZGlmIC8qIFdLR2VvbWV0cnlfaCAqLwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gOTU2NjUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNTYs
MTEgKzEwNTYsOCBAQCB2b2lkIFdlYlBhZ2U6Om1vdXNlRXZlbnRTeW5jRm9yVGVzdGluZyhjCiAg
ICAgICAgIGhhbmRsZWQgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAg
IGlmIChtX3BhZ2VPdmVybGF5KSB7Ci0gICAgICAgIC8vIExldCB0aGUgcGFnZSBvdmVybGF5IGhh
bmRsZSB0aGUgZXZlbnQuCi0gICAgICAgIGhhbmRsZWQgPSBtX3BhZ2VPdmVybGF5LT5tb3VzZUV2
ZW50KG1vdXNlRXZlbnQpOwotICAgIH0KKworICAgIGhhbmRsZWQgPSBtX3BhZ2VPdmVybGF5ICYm
IG1fcGFnZU92ZXJsYXktPm1vdXNlRXZlbnQobW91c2VFdmVudCk7CiAKICAgICBpZiAoIWhhbmRs
ZWQpIHsKICAgICAgICAgQ3VycmVudEV2ZW50IGN1cnJlbnRFdmVudChtb3VzZUV2ZW50KTsKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDk1ODU1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MzQgQEAKKzIwMTEtMDktMjMgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAg
ICBbV0syXSBbUXRdIEltcGxlbWVudCBNb3VzZURvd24vTW91c2VVcC9Nb3VzZU1vdmVUbyBmdW5j
dGlvbnMgZm9yIFdlYktpdDIgRXZlbnRTZW5kZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NTU2CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBNb3Vz
ZURvd24vTW91c2VVcC9Nb3VzZU1vdmVUbyBmdW5jdGlvbnMgb24gUXQgcGxhdGZvcm0uCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0V2ZW50U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFj
L0V2ZW50U2VuZGVyUHJveHkubW06CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OkV2
ZW50U2VuZGVyUHJveHkpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpsZWFwRm9y
d2FyZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9xdC9FdmVudFNlbmRlclByb3h5UXQu
Y3BwOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KToK
KyAgICAgICAgKFdUUjo6Z2V0TW91c2VCdXR0b24pOgorICAgICAgICAoV1RSOjpnZXRNb2RpZmll
cnMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVDbGlja0NvdW50Rm9y
QnV0dG9uKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6Y3JlYXRlR3JhcGhpY3NT
Y2VuZU1vdXNlRXZlbnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZURv
d24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZVVwKToKKyAgICAgICAg
KFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VNb3ZlVG8pOgorICAgICAgICAoV1RSOjpFdmVu
dFNlbmRlclByb3h5OjpsZWFwRm9yd2FyZCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJv
eHk6OnNlbmRPclF1ZXVlRXZlbnQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojpy
ZXBsYXlTYXZlZEV2ZW50cyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9y
bVdlYlZpZXdRdC5jcHA6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6cG9zdEV2ZW50
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0L1dlYktpdFRlc3RSdW5uZXIucHJvOgor
CiAyMDExLTA5LTIzICBFbGxpb3QgUG9nZXIgIDxlcG9nZXJAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICB1cGRhdGUgbGF5b3V0X3Rlc3RzIHRvIGFjY291bnQgZm9yIG5ldyBkZWZhdWx0IG9mIHVzZV9z
a2lhPTEKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCShy
ZXZpc2lvbiA5NTY2NSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyMyArMzMsMTIgQEAgY2xhc3MgVGVzdENvbnRyb2xs
ZXI7CiAKIGNsYXNzIEV2ZW50U2VuZGVyUHJveHkgewogcHVibGljOgotICAgIEV2ZW50U2VuZGVy
UHJveHkoVGVzdENvbnRyb2xsZXIqIHRlc3RDb250cm9sbGVyKQotICAgICAgICA6IG1fdGVzdENv
bnRyb2xsZXIodGVzdENvbnRyb2xsZXIpCi0gICAgICAgICwgbV90aW1lKDApCi0gICAgICAgICwg
bV9wb3NpdGlvbigpCi0gICAgICAgICwgbV9sZWZ0TW91c2VCdXR0b25Eb3duKGZhbHNlKQotICAg
ICAgICAsIG1fY2xpY2tDb3VudCgwKQotICAgICAgICAsIG1fY2xpY2tUaW1lKDApCi0gICAgICAg
ICwgbV9jbGlja1Bvc2l0aW9uKCkKLSAgICAgICAgLCBtX2NsaWNrQnV0dG9uKGtXS0V2ZW50TW91
c2VCdXR0b25Ob0J1dHRvbikKLSAgICAgICAgLCBldmVudE51bWJlcigwKQotICAgIHsKLSAgICB9
CisgICAgRXZlbnRTZW5kZXJQcm94eShUZXN0Q29udHJvbGxlciopOwogCiAgICAgdm9pZCBtb3Vz
ZURvd24odW5zaWduZWQgYnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJzKTsKICAgICB2b2lkIG1vdXNl
VXAodW5zaWduZWQgYnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJzKTsKICAgICB2b2lkIG1vdXNlTW92
ZVRvKGRvdWJsZSB4LCBkb3VibGUgeSk7Ci0gICAgdm9pZCBsZWFwRm9yd2FyZChpbnQgbWlsbGlz
ZWNvbmRzKSB7IG1fdGltZSArPSBtaWxsaXNlY29uZHMgLyAxMDAwLjA7IH0KKyAgICB2b2lkIGxl
YXBGb3J3YXJkKGludCBtaWxsaXNlY29uZHMpOwogCiAgICAgdm9pZCBrZXlEb3duKFdLU3RyaW5n
UmVmIGtleSwgV0tFdmVudE1vZGlmaWVycywgdW5zaWduZWQgbG9jYXRpb24pOwogCkBAIC01OSw2
ICs0OCwxMiBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBjdXJyZW50RXZlbnRUaW1lKCkgeyByZXR1
cm4gbV90aW1lOyB9CiAgICAgdm9pZCB1cGRhdGVDbGlja0NvdW50Rm9yQnV0dG9uKGludCBidXR0
b24pOwogCisjaWYgUExBVEZPUk0oUVQpCisgICAgdm9pZCBzZW5kT3JRdWV1ZUV2ZW50KFFFdmVu
dCopOworICAgIHZvaWQgcmVwbGF5U2F2ZWRFdmVudHMoKTsKKyAgICBRR3JhcGhpY3NTY2VuZU1v
dXNlRXZlbnQqIGNyZWF0ZUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KFFFdmVudDo6VHlwZSwgY29u
c3QgUVBvaW50JiBwb3MsIGNvbnN0IFFQb2ludCYgc2NyZWVuUG9zLCBRdDo6TW91c2VCdXR0b24s
IFF0OjpNb3VzZUJ1dHRvbnMsIFF0OjpLZXlib2FyZE1vZGlmaWVycyk7CisjZW5kaWYKKwogICAg
IGRvdWJsZSBtX3RpbWU7CiAgICAgV0tQb2ludCBtX3Bvc2l0aW9uOwogICAgIGJvb2wgbV9sZWZ0
TW91c2VCdXR0b25Eb3duOwpAQCAtNjYsNyArNjEsMTEgQEAgcHJpdmF0ZToKICAgICBkb3VibGUg
bV9jbGlja1RpbWU7CiAgICAgV0tQb2ludCBtX2NsaWNrUG9zaXRpb247CiAgICAgV0tFdmVudE1v
dXNlQnV0dG9uIG1fY2xpY2tCdXR0b247CisjaWYgUExBVEZPUk0oTUFDKQogICAgIGludCBldmVu
dE51bWJlcjsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIFF0OjpNb3VzZUJ1dHRvbnMgbV9tb3Vz
ZUJ1dHRvbnM7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCShyZXZpc2lvbiA5NTY2NSkKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAg
LTY3LDYgKzY3LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgYm9vbCBzZW5k
RXZlbnQoUUV2ZW50Kik7CisgICAgdm9pZCBwb3N0RXZlbnQoUUV2ZW50Kik7CiAjZW5kaWYKIAog
ICAgIFdLUmVjdCB3aW5kb3dGcmFtZSgpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVy
LmgJKHJldmlzaW9uIDk1NjY1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMx
LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbWV0cnkuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogCi0jaWYgIVBMQVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oTUFDKSAmJiAh
UExBVEZPUk0oUVQpCiAjZGVmaW5lIFVTRV9XRUJQUk9DRVNTX0VWRU5UX1NJTVVMQVRJT04KICNl
bmRpZgogCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVy
UHJveHkubW0JKHJldmlzaW9uIDk1NjY1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMv
RXZlbnRTZW5kZXJQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtOTcsOSArOTcsMTcgQEAgc3Rh
dGljIGludCBidWlsZE1vZGlmaWVyRmxhZ3MoV0tFdmVudE1vZAogICAgIHJldHVybiBmbGFnczsK
IH0KIAotc3RhdGljIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXS1BvaW50JiBhLCBjb25zdCBXS1Bv
aW50JiBiKQorRXZlbnRTZW5kZXJQcm94eTo6RXZlbnRTZW5kZXJQcm94eShUZXN0Q29udHJvbGxl
ciogdGVzdENvbnRyb2xsZXIpCisgICAgOiBtX3Rlc3RDb250cm9sbGVyKHRlc3RDb250cm9sbGVy
KQorICAgICwgbV90aW1lKDApCisgICAgLCBtX3Bvc2l0aW9uKCkKKyAgICAsIG1fbGVmdE1vdXNl
QnV0dG9uRG93bihmYWxzZSkKKyAgICAsIG1fY2xpY2tDb3VudCgwKQorICAgICwgbV9jbGlja1Rp
bWUoMCkKKyAgICAsIG1fY2xpY2tQb3NpdGlvbigpCisgICAgLCBtX2NsaWNrQnV0dG9uKGtXS0V2
ZW50TW91c2VCdXR0b25Ob0J1dHRvbikKKyAgICAsIGV2ZW50TnVtYmVyKDApCiB7Ci0gICAgcmV0
dXJuIGEueCA9PSBiLnggJiYgYS55ID09IGIueTsKIH0KIAogdm9pZCBFdmVudFNlbmRlclByb3h5
Ojp1cGRhdGVDbGlja0NvdW50Rm9yQnV0dG9uKGludCBidXR0b24pCkBAIC0xODMsNiArMTkxLDEx
IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VNb3ZlVG8oZG91YmwKICAgICAgICAgW3Rh
cmdldFZpZXcgbW91c2VNb3ZlZDpldmVudF07CiB9CiAKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6
bGVhcEZvcndhcmQoaW50IG1pbGxpc2Vjb25kcykKK3sKKyAgICBtX3RpbWUgKz0gbWlsbGlzZWNv
bmRzIC8gMTAwMC4wOworfQorCiB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJp
bmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgdW5zaWduZWQga2V5TG9jYXRp
b24pCiB7CiAgICAgTlNTdHJpbmcqIGNoYXJhY3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0
cmluZzp0b1NURChrZXkpLmNfc3RyKCkgCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL3F0
L0V2ZW50U2VuZGVyUHJveHlRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9xdC9FdmVudFNlbmRlclByb3h5UXQuY3BwCShyZXZpc2lvbiA5NTY2NSkKKysrIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvcXQvRXZlbnRTZW5kZXJQcm94eVF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgogI2luY2x1
ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8UUtleUV2ZW50PgotI2luY2x1ZGUgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxRdFRlc3QvUXRUZXN0PgogI2luY2x1
ZGUgPFdlYktpdDIvV0tQYWdlUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tTdHJpbmdR
dC5oPgogCkBAIC00Miw3ICs0Miw1NiBAQCBuYW1lc3BhY2UgV1RSIHsKICNkZWZpbmUgS0VZQ09E
RV9VUEFSUk9XICAgICAweGY3MDAKICNkZWZpbmUgS0VZQ09ERV9ET1dOQVJST1cgICAweGY3MDEK
IAotUXQ6OktleWJvYXJkTW9kaWZpZXJzIGdldE1vZGlmaWVycyhXS0V2ZW50TW9kaWZpZXJzIG1v
ZGlmaWVyc1JlZikKK3N0cnVjdCBXVFJFdmVudFF1ZXVlIHsKKyAgICBRRXZlbnQqIG1fZXZlbnQ7
CisgICAgaW50IG1fZGVsYXk7Cit9OworCitzdGF0aWMgV1RSRXZlbnRRdWV1ZSBldmVudFF1ZXVl
WzEwMjRdOworc3RhdGljIHVuc2lnbmVkIGVuZE9mUXVldWU7CitzdGF0aWMgdW5zaWduZWQgc3Rh
cnRPZlF1ZXVlOworCitFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KFRlc3RDb250
cm9sbGVyKiB0ZXN0Q29udHJvbGxlcikKKyAgICA6IG1fdGVzdENvbnRyb2xsZXIodGVzdENvbnRy
b2xsZXIpCisgICAgLCBtX3RpbWUoMCkKKyAgICAsIG1fcG9zaXRpb24oKQorICAgICwgbV9sZWZ0
TW91c2VCdXR0b25Eb3duKGZhbHNlKQorICAgICwgbV9jbGlja0NvdW50KDApCisgICAgLCBtX2Ns
aWNrVGltZSgwKQorICAgICwgbV9jbGlja1Bvc2l0aW9uKCkKKyAgICAsIG1fY2xpY2tCdXR0b24o
a1dLRXZlbnRNb3VzZUJ1dHRvbk5vQnV0dG9uKQorICAgICwgbV9tb3VzZUJ1dHRvbnMoMCkKK3sK
KyAgICBtZW1zZXQoZXZlbnRRdWV1ZSwgMCwgc2l6ZW9mKGV2ZW50UXVldWUpKTsKKyAgICBlbmRP
ZlF1ZXVlID0gMDsKKyAgICBzdGFydE9mUXVldWUgPSAwOworfQorCitzdGF0aWMgUXQ6Ok1vdXNl
QnV0dG9uIGdldE1vdXNlQnV0dG9uKHVuc2lnbmVkIGJ1dHRvbikKK3sKKyAgICBRdDo6TW91c2VC
dXR0b24gbW91c2VCdXR0b247CisgICAgc3dpdGNoIChidXR0b24pIHsKKyAgICBjYXNlIDA6Cisg
ICAgICAgIG1vdXNlQnV0dG9uID0gUXQ6OkxlZnRCdXR0b247CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgMToKKyAgICAgICAgbW91c2VCdXR0b24gPSBRdDo6TWlkQnV0dG9uOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIG1vdXNlQnV0dG9uID0gUXQ6OlJpZ2h0QnV0dG9u
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIC8vIGZhc3QvZXZlbnRzL21v
dXNlLWNsaWNrLWV2ZW50cyBleHBlY3RzIHRoZSA0dGggYnV0dG9uIHRvIGJlIHRyZWF0ZWQgYXMg
dGhlIG1pZGRsZSBidXR0b24KKyAgICAgICAgbW91c2VCdXR0b24gPSBRdDo6TWlkQnV0dG9uOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBtb3VzZUJ1dHRvbiA9IFF0OjpM
ZWZ0QnV0dG9uOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIG1vdXNlQnV0dG9u
OworfQorCitzdGF0aWMgUXQ6OktleWJvYXJkTW9kaWZpZXJzIGdldE1vZGlmaWVycyhXS0V2ZW50
TW9kaWZpZXJzIG1vZGlmaWVyc1JlZikKIHsKICAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9k
aWZpZXJzID0gMDsKIApAQCAtMTkxLDE5ICsyNDAsMTA2IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6a2V5RG93bihXS1N0cmluZ1IKICAgICBtX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygp
LT5zZW5kRXZlbnQoJmV2ZW50Mik7CiB9CiAKLXZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VE
b3duKHVuc2lnbmVkLCBXS0V2ZW50TW9kaWZpZXJzKQordm9pZCBFdmVudFNlbmRlclByb3h5Ojp1
cGRhdGVDbGlja0NvdW50Rm9yQnV0dG9uKGludCBidXR0b24pCit7CisgICAgaWYgKG1fdGltZSAt
IG1fY2xpY2tUaW1lIDwgUUFwcGxpY2F0aW9uOjpkb3VibGVDbGlja0ludGVydmFsKCkgLyAxMDAw
LjAgJiYgbV9wb3NpdGlvbiA9PSBtX2NsaWNrUG9zaXRpb24gJiYgYnV0dG9uID09IG1fY2xpY2tC
dXR0b24pIHsKKyAgICAgICAgKyttX2NsaWNrQ291bnQ7CisgICAgICAgIG1fY2xpY2tUaW1lID0g
bV90aW1lOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jbGlja0NvdW50ID0gMTsK
KyAgICBtX2NsaWNrVGltZSA9IG1fdGltZTsKKyAgICBtX2NsaWNrUG9zaXRpb24gPSBtX3Bvc2l0
aW9uOworICAgIG1fY2xpY2tCdXR0b24gPSBidXR0b247Cit9CisKK1FHcmFwaGljc1NjZW5lTW91
c2VFdmVudCogRXZlbnRTZW5kZXJQcm94eTo6Y3JlYXRlR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQo
UUV2ZW50OjpUeXBlIHR5cGUsIGNvbnN0IFFQb2ludCYgcG9zLCBjb25zdCBRUG9pbnQmIHNjcmVl
blBvcywgUXQ6Ok1vdXNlQnV0dG9uIGJ1dHRvbiwgUXQ6Ok1vdXNlQnV0dG9ucyBidXR0b25zLCBR
dDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kaWZpZXJzKQoreworICAgIFFHcmFwaGljc1NjZW5lTW91
c2VFdmVudCogZXZlbnQ7CisgICAgZXZlbnQgPSBuZXcgUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50
KHR5cGUpOworICAgIGV2ZW50LT5zZXRQb3MocG9zKTsKKyAgICBldmVudC0+c2V0U2NyZWVuUG9z
KHNjcmVlblBvcyk7CisgICAgZXZlbnQtPnNldEJ1dHRvbihidXR0b24pOworICAgIGV2ZW50LT5z
ZXRCdXR0b25zKGJ1dHRvbnMpOworICAgIGV2ZW50LT5zZXRNb2RpZmllcnMobW9kaWZpZXJzKTsK
KworICAgIHJldHVybiBldmVudDsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZURv
d24odW5zaWduZWQgYnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJzIHdrTW9kaWZpZXJzKQoreworICAg
IFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RpZmllcnMgPSBnZXRNb2RpZmllcnMod2tNb2RpZmll
cnMpOworICAgIFF0OjpNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiA9IGdldE1vdXNlQnV0dG9uKGJ1
dHRvbik7CisKKyAgICB1cGRhdGVDbGlja0NvdW50Rm9yQnV0dG9uKGJ1dHRvbik7CisKKyAgICBt
X21vdXNlQnV0dG9ucyB8PSBtb3VzZUJ1dHRvbjsKKworICAgIFFQb2ludCBtb3VzZVBvcyhtX3Bv
c2l0aW9uLngsIG1fcG9zaXRpb24ueSk7CisgICAgUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBl
dmVudCA9IGNyZWF0ZUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KChtX2NsaWNrQ291bnQgPT0gMikg
PyBRRXZlbnQ6OkdyYXBoaWNzU2NlbmVNb3VzZURvdWJsZUNsaWNrIDogUUV2ZW50OjpHcmFwaGlj
c1NjZW5lTW91c2VQcmVzcywKKyAgICAgICAgbW91c2VQb3MsIG1vdXNlUG9zLCBtb3VzZUJ1dHRv
biwgbV9tb3VzZUJ1dHRvbnMsIG1vZGlmaWVycyk7CisKKyAgICBzZW5kT3JRdWV1ZUV2ZW50KGV2
ZW50KTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRv
biwgV0tFdmVudE1vZGlmaWVycykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFF0OjpN
b3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiA9IGdldE1vdXNlQnV0dG9uKGJ1dHRvbik7CisgICAgbV9t
b3VzZUJ1dHRvbnMgJj0gfm1vdXNlQnV0dG9uOworCisgICAgUVBvaW50IG1vdXNlUG9zKG1fcG9z
aXRpb24ueCwgbV9wb3NpdGlvbi55KTsKKyAgICBRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQqIGV2
ZW50ID0gY3JlYXRlR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQoUUV2ZW50OjpHcmFwaGljc1NjZW5l
TW91c2VSZWxlYXNlLAorICAgICAgICBtb3VzZVBvcywgbW91c2VQb3MsIG1vdXNlQnV0dG9uLCBt
X21vdXNlQnV0dG9ucywgUXQ6Ok5vTW9kaWZpZXIpOworCisgICAgc2VuZE9yUXVldWVFdmVudChl
dmVudCk7CiB9CiAKLXZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VVcCh1bnNpZ25lZCwgV0tF
dmVudE1vZGlmaWVycykKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VNb3ZlVG8oZG91Ymxl
IHgsIGRvdWJsZSB5KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9wb3NpdGlvbi54
ID0geDsKKyAgICBtX3Bvc2l0aW9uLnkgPSB5OworCisgICAgUVBvaW50IG1vdXNlUG9zKG1fcG9z
aXRpb24ueCwgbV9wb3NpdGlvbi55KTsKKyAgICBRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQqIGV2
ZW50ID0gY3JlYXRlR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQoUUV2ZW50OjpHcmFwaGljc1NjZW5l
TW91c2VNb3ZlLAorICAgICAgICBtb3VzZVBvcywgbW91c2VQb3MsIFF0OjpOb0J1dHRvbiwgbV9t
b3VzZUJ1dHRvbnMsIFF0OjpOb01vZGlmaWVyKTsKKworICAgIHNlbmRPclF1ZXVlRXZlbnQoZXZl
bnQpOwogfQogCi12b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRvdWJsZSwgZG91
YmxlKQordm9pZCBFdmVudFNlbmRlclByb3h5OjpsZWFwRm9yd2FyZChpbnQgbXMpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBldmVudFF1ZXVlW2VuZE9mUXVldWVdLm1fZGVsYXkgPSBt
czsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpzZW5kT3JRdWV1ZUV2ZW50KFFFdmVudCog
ZXZlbnQpCit7CisgICAgaWYgKGVuZE9mUXVldWUgPT0gc3RhcnRPZlF1ZXVlICYmICFldmVudFF1
ZXVlW2VuZE9mUXVldWVdLm1fZGVsYXkpIHsKKyAgICAgICAgbV90ZXN0Q29udHJvbGxlci0+bWFp
bldlYlZpZXcoKS0+c2VuZEV2ZW50KGV2ZW50KTsKKyAgICAgICAgZGVsZXRlIGV2ZW50OworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgZXZlbnRRdWV1ZVtlbmRPZlF1ZXVlKytdLm1fZXZl
bnQgPSBldmVudDsKKyAgICBldmVudFF1ZXVlW2VuZE9mUXVldWVdLm1fZGVsYXkgPSAwOworICAg
IHJlcGxheVNhdmVkRXZlbnRzKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6cmVwbGF5
U2F2ZWRFdmVudHMoKQoreworICAgIGlmIChzdGFydE9mUXVldWUgPCBlbmRPZlF1ZXVlKSB7Cisg
ICAgICAgIHdoaWxlICghZXZlbnRRdWV1ZVtzdGFydE9mUXVldWVdLm1fZGVsYXkgJiYgc3RhcnRP
ZlF1ZXVlIDwgZW5kT2ZRdWV1ZSkgeworICAgICAgICAgICAgUUV2ZW50KiBldiA9IGV2ZW50UXVl
dWVbc3RhcnRPZlF1ZXVlKytdLm1fZXZlbnQ7CisgICAgICAgICAgICBtX3Rlc3RDb250cm9sbGVy
LT5tYWluV2ViVmlldygpLT5wb3N0RXZlbnQoZXYpOworICAgICAgICB9CisgICAgICAgIGlmIChz
dGFydE9mUXVldWUgPT0gZW5kT2ZRdWV1ZSkgeworICAgICAgICAgICAgc3RhcnRPZlF1ZXVlID0g
MDsKKyAgICAgICAgICAgIGVuZE9mUXVldWUgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgUVRlc3Q6OnFXYWl0KGV2ZW50UXVldWVbc3RhcnRPZlF1ZXVlXS5tX2RlbGF5KTsKKyAg
ICAgICAgICAgIGV2ZW50UXVldWVbc3RhcnRPZlF1ZXVlXS5tX2RlbGF5ID0gMDsKKyAgICAgICAg
fQorICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcAkocmV2aXNpb24gOTU2NjUpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA3LDQgKzEwNyw5IEBAIGJvb2wgUGxhdGZvcm1XZWJWaWV3OjpzZW5kRXZl
bnQoUUV2ZW50KiAKICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1fdmll
dy0+d2tWaWV3KCksIGV2ZW50KTsKIH0KIAordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnBvc3RFdmVu
dChRRXZlbnQqIGV2ZW50KQoreworICAgIFFDb3JlQXBwbGljYXRpb246OnBvc3RFdmVudChtX3Zp
ZXctPndrVmlldygpLCBldmVudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9XZWJLaXRUZXN0UnVubmVyLnBybwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1dlYktpdFRlc3RSdW5uZXIucHJvCShyZXZpc2lv
biA5NTY2NSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvV2ViS2l0VGVzdFJ1bm5lci5w
cm8JKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgdW5peDohbWFjOiFzeW1iaWFuOiFl
bWJlZGRlZCB7CiAgICAgUEtHQ09ORklHICs9IGZvbnRjb25maWcKIH0KIAotUVQgPSBjb3JlIGd1
aSBuZXR3b3JrIGRlY2xhcmF0aXZlCitRVCA9IGNvcmUgZ3VpIG5ldHdvcmsgZGVjbGFyYXRpdmUg
dGVzdGxpYgogCiBIRUFERVJTID0gXAogICAgICQkQkFTRURJUi9FdmVudFNlbmRlclByb3h5Lmgg
XApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gOTU4NTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wOS0yMyAgQ2hhbmcgU2h1ICA8Y3No
dUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSzJdIFtRdF0gSW1wbGVtZW50IE1vdXNlRG93bi9N
b3VzZVVwL01vdXNlTW92ZVRvIGZ1bmN0aW9ucyBmb3IgV2ViS2l0MiBFdmVudFNlbmRlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg1NTYKKworICAg
ICAgICBJbXBsZW1lbnQgdGhlIE1vdXNlRG93bi9Nb3VzZVVwL01vdXNlTW92ZVRvIGZ1bmN0aW9u
cyBvbiBRdCBwbGF0Zm9ybS4KKworICAgICAgICBVbnNraXAgcGFzc2VkIHRlc3RzLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogcGxhdGZvcm0vcXQtd2sy
L1NraXBwZWQ6CisKIDIwMTEtMDktMjMgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgog
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODcxOQpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQJKHJldmlzaW9uIDk1NjY1KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDE5ICs3MCwxNSBAQCBjb21wb3NpdGluZy92aWRlby92aWRlby1wb3N0ZXIuaHRtbAogZWRpdGlu
Zy9kZWxldGluZy9kZWxldGUtYnktd29yZC0wMDEuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxl
dGUtYnktd29yZC0wMDIuaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlnYXR1cmUtMDAy
Lmh0bWwKLWVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpZ2F0dXJlLTAwMy5odG1sCitlZGl0aW5n
L2RlbGV0aW5nL21lcmdlLXBhcmFncmFwaC1mcm9tLXAtd2l0aC1zdHlsZS5odG1sCiBlZGl0aW5n
L2RlbGV0aW5nL3NraXAtdmlyYW1hLTAwMS5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRl
bGV0ZS0wMDEuaHRtbAogZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDAyLmh0bWwKLWVk
aXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sCi1lZGl0aW5nL2RlbGV0aW5nL3Nt
YXJ0LWRlbGV0ZS0wMDQuaHRtbAotZWRpdGluZy9leGVjQ29tbWFuZC9maW5kU3RyaW5nLTIuaHRt
bAogZWRpdGluZy9pbnB1dC9lbWFjcy1jdHJsLW8uaHRtbAogZWRpdGluZy9pbnB1dC9vcHRpb24t
cGFnZS11cC1kb3duLmh0bWwKIGVkaXRpbmcvaW5wdXQvc2Nyb2xsLXZpZXdwb3J0LXBhZ2UtdXAt
ZG93bi5odG1sCiBlZGl0aW5nL2luc2VydGluZy90eXBpbmctdGFiLWRlc2lnbm1vZGUtZm9ybXMu
aHRtbAogZWRpdGluZy9pbnNlcnRpbmcvdHlwaW5nLXRhYi1kZXNpZ25tb2RlLmh0bWwKLWVkaXRp
bmcvcGFzdGVib2FyZC80OTQ0NzcwLTIuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktc3Rh
bmRhbG9uZS1pbWFnZS1jcmFzaC5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZW1hY3MtY250bC15
LTAwMS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvc21hcnQtcGFzdGUtMDAxLmh0bWwKQEAgLTky
LDEzICs4OCw5IEBAIGVkaXRpbmcvcGFzdGVib2FyZC9zbWFydC1wYXN0ZS0wMDQuaHRtbAogZWRp
dGluZy9wYXN0ZWJvYXJkL3NtYXJ0LXBhc3RlLTAwNS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQv
c21hcnQtcGFzdGUtMDA3Lmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9zbWFydC1wYXN0ZS0wMDgu
aHRtbAotZWRpdGluZy9zZWxlY3Rpb24vMTQ5NzEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vNTM1
NDQ1NS0xLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzUzNTQ0NTUtMi5odG1sCi1lZGl0aW5nL3Nl
bGVjdGlvbi9hbmNob3ItZm9jdXMyLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2FuY2hvci1mb2N1
czMuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vYnV0dG9uLXJpZ2h0LWNsaWNrLmh0bWwKLWVkaXRp
bmcvc2VsZWN0aW9uL2NsaWNrLWluLWZvY3VzYWJsZS1saW5rLXNob3VsZC1ub3QtY2xlYXItc2Vs
ZWN0aW9uLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVk
aXRhYmxlLWRpdi5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1wYWRkaW5nLXdpdGgt
bXVsdGlwbGUtbGluZS1ib3hlcy5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jb250ZXh0LW1lbnUt
b24tdGV4dC5odG1sCkBAIC0xMDYsNDAgKzk4LDI4IEBAIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJs
ZWNsaWNrLWNyYXNoLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3Bh
Y2UtY3Jhc2guaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1p
bWctY3Jhc2guaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS5o
dG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9kcmFnLXNlbGVjdC0xLmh0bWwKLWVkaXRpbmcvc2VsZWN0
aW9uL2RyYWctc2VsZWN0LXJhcGlkbHkuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vZHJhZy1zdGFy
dC1ldmVudC1jbGllbnQteC15Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2VtcHR5LWNlbGwtcmln
aHQtY2xpY2suaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vZXhwYW5kaW5nLXNlbGVjdGlvbnMuaHRt
bAotZWRpdGluZy9zZWxlY3Rpb24vZXhwYW5kaW5nLXNlbGVjdGlvbnMyLmh0bWwKLWVkaXRpbmcv
c2VsZWN0aW9uL2Zha2UtZG91YmxlY2xpY2suaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vaW5saW5l
LWNsb3Nlc3QtbGVhZi1jaGlsZC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9sYXN0LWVtcHR5LWlu
bGluZS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJlZ2luLWVuZC5odG1sCi1lZGl0aW5n
L3NlbGVjdGlvbi9wYXJhZ3JhcGgtZ3JhbnVsYXJpdHkuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24v
c2VsZWN0LW91dC1vZi1lZGl0YWJsZS5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Qtb3V0
LW9mLWZsb2F0ZWQtY29udGVudGVkaXRhYmxlLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVj
dC1vdXQtb2YtZmxvYXRlZC1pbnB1dC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Qtb3V0
LW9mLWZsb2F0ZWQtdGV4dGFyZWEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0aW9uLWFj
dGlvbnMuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vdXNlci1kcmFnLWVsZW1lbnQtYW5kLXVzZXIt
c2VsZWN0LW5vbmUuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vd29yZC1ncmFudWxhcml0eS5odG1s
Ci1lZGl0aW5nL3VuZG8vdW5kby1zbWFydC1kZWxldGUtcmV2ZXJzZWQtc2VsZWN0aW9uLmh0bWwK
LWVkaXRpbmcvdW5kby91bmRvLXNtYXJ0LWRlbGV0ZS13b3JkLmh0bWwKK2VkaXRpbmcvc2VsZWN0
aW9uL2NhcmV0LWx0ci1yaWdodC5odG1sCitlZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1ydGwtMi1s
ZWZ0Lmh0bWwKK2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlZm9yZS1hbmQtYWZ0ZXItdGFibGUu
aHRtbAorZWRpdGluZy9zZWxlY3Rpb24vaW5saW5lLWNsb3Nlc3QtbGVhZi1jaGlsZC5odG1sCiBm
YXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2hpdHRlc3Qtb24tcmVsYXRpdmUtcG9zaXRpb25lZC1jaGls
ZHJlbi5odG1sCiBmYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKIGZhc3Qv
ZHluYW1pYy9sYXllci1oaXQtdGVzdC1jcmFzaC5odG1sCiBmYXN0L2VuY29kaW5nL21haWx0by1h
bHdheXMtdXRmLTguaHRtbAogZmFzdC9ldmVudHMvYWNjZXNzLWtleS1zZWxmLWRlc3RydWN0Lmh0
bWwKLWZhc3QvZXZlbnRzL2F1dG9zY3JvbGwtaW4tdGV4dGZpZWxkLmh0bWwKLWZhc3QvZXZlbnRz
L2F1dG9zY3JvbGwtbm9uc2Nyb2xsYWJsZS1pZnJhbWUtaW4tc2Nyb2xsYWJsZS1kaXYuaHRtbAot
ZmFzdC9ldmVudHMvYXV0b3Njcm9sbC13aXRoLW5vbi1zY3JvbGxhYmxlLXBhcmVudC5odG1sCiBm
YXN0L2V2ZW50cy9ib2d1cy1kcm9wRWZmZWN0LWVmZmVjdEFsbG93ZWQuaHRtbAogZmFzdC9ldmVu
dHMvY29udGV4dC1uby1kZXNlbGVjdC5odG1sCiBmYXN0L2V2ZW50cy9jb250ZXh0LW9ubW91c2Vk
b3duLWV2ZW50Lmh0bWwKIGZhc3QvZXZlbnRzL2NvbnRleHRtZW51LXNjcm9sbGVkLXBhZ2Utd2l0
aC1mcmFtZS5odG1sCiBmYXN0L2V2ZW50cy9jb250aW51b3VzLXBsYXRmb3JtLXdoZWVsZXZlbnQt
aW4tc2Nyb2xsaW5nLWRpdi5odG1sCi1mYXN0L2V2ZW50cy9kYmxjbGljay1hZGRFdmVudExpc3Rl
bmVyLmh0bWwKK2Zhc3QvZXZlbnRzL2ZpcmUtbW91c2Vkb3duLXdoaWxlLXByZXNzaW5nLW1vdXNl
LWJ1dHRvbi5odG1sCiBmYXN0L2V2ZW50cy9pbnB1dFRleHQtbmV2ZXItZmlyZWQtb24ta2V5ZG93
bi1jYW5jZWwuaHRtbAogZmFzdC9ldmVudHMvbW91c2UtY2xpY2stZXZlbnRzLmh0bWwKIGZhc3Qv
ZXZlbnRzL21vdXNldXAtZnJvbS1idXR0b24yLmh0bWwKQEAgLTE1MywyMiArMTMzLDE5IEBAIGZh
c3QvZXZlbnRzL3Njcm9sbC1pbi1zY2FsZWQtcGFnZS13aXRoLW8KIGZhc3QvZXZlbnRzL3NlbGVj
dHN0YXJ0LXByZXZlbnQtc2VsZWN0aW9uLW9uLXJpZ2h0LWNsaWNrLmh0bWwKIGZhc3QvZXZlbnRz
L3doZWVsZXZlbnQtaW4taG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKIGZhc3QvZXZl
bnRzL3doZWVsZXZlbnQtaW4tdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCi1mYXN0L2V2
ZW50cy96b29tLWRibGNsaWNrLmh0bWwKIGZhc3QvZm9ybXMvYWNjZXNzLWtleS5odG1sCiBmYXN0
L2Zvcm1zL2ZvY3VzLWNoYW5nZS1vbi1rZXlwcmVzcy5odG1sCiBmYXN0L2Zvcm1zL2ZvY3VzLXNl
bGVjdGlvbi10ZXh0YXJlYS5odG1sCiBmYXN0L2Zvcm1zL2ltcGxpY2l0LXN1Ym1pc3Npb24uaHRt
bAotZmFzdC9mb3Jtcy9pbnB1dC10ZXh0LWRvdWJsZS1jbGljay5odG1sCitmYXN0L2Zvcm1zL2lu
dGVyYWN0aXZlLXZhbGlkYXRpb24tYXR0YWNoLWFzc2VydGlvbi5odG1sCiBmYXN0L2Zvcm1zL2xl
Z2VuZC1hY2Nlc3Mta2V5Lmh0bWwKLWZhc3QvZm9ybXMvb25zZWxlY3QtdGV4dGZpZWxkLmh0bWwK
K2Zhc3QvZm9ybXMvc2VhcmNoLWNhbmNlbC1idXR0b24tbW91c2V1cC5odG1sCiBmYXN0L2Zvcm1z
L3NlbGVjdC1hY2Nlc3NrZXkuaHRtbAorZmFzdC9mb3Jtcy9yYW5nZS9yYW5nZS1kcmFnLmh0bWwK
IGZhc3QvbG9hZGVyL3BvbGljeS1kZWxlZ2F0ZS1hY3Rpb24taGl0LXRlc3Qtem9vbWVkLmh0bWwK
IGZhc3QvcmVwYWludC9zZWxlY3Rpb24tcmwuaHRtbAogZmFzdC90ZXh0L29mZnNldEZvclBvc2l0
aW9uLWNvbXBsZXgtZmFsbGJhY2suaHRtbAogZmFzdC90ZXh0L3Jlc2V0LWRyYWctb24tbW91c2Ut
ZG93bi5odG1sCi1mYXN0L3dyaXRpbmctbW9kZS9ob3Jpem9udGFsLWJ0LXJlcGxhY2VkLXNlbGVj
dGlvbi5odG1sCi1mYXN0L3dyaXRpbmctbW9kZS92ZXJ0aWNhbC1sci1yZXBsYWNlZC1zZWxlY3Rp
b24uaHRtbAotZmFzdC93cml0aW5nLW1vZGUvdmVydGljYWwtcmwtcmVwbGFjZWQtc2VsZWN0aW9u
Lmh0bWwKIHBsdWdpbnMva2V5Ym9hcmQtZXZlbnRzLmh0bWwKIHNjcm9sbGJhcnMvc2Nyb2xsZXZl
bnQtaWZyYW1lLW5vLXNjcm9sbGluZy13aGVlbC5odG1sCiAKQEAgLTE3Nyw4ICsxNTQsNiBAQCBm
YXN0L2Zvcm1zL2Zvcm0tYXNzb2NpYXRlZC1lbGVtZW50LWNyYXNoCiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2lzb2xhdGVkV29ybGQvdXNlckdlc3R1cmVFdmVudHMuaHRtbAogcGx1Z2lucy9yZXNpemUt
ZnJvbS1wbHVnaW4uaHRtbAogCi1zdmcvY3VzdG9tL2ZvcmVpZ25PYmplY3QtY3Jhc2gtb24taG92
ZXIueG1sCi1zdmcvY3VzdG9tL21vdXNlLW1vdmUtb24tc3ZnLWNvbnRhaW5lci1zdGFuZGFsb25l
LnN2Zwogc3ZnL2N1c3RvbS9tb3VzZS1tb3ZlLW9uLXN2Zy1jb250YWluZXIueGh0bWwKIHN2Zy9j
dXN0b20vbW91c2UtbW92ZS1vbi1zdmctcm9vdC1zdGFuZGFsb25lLnN2Zwogc3ZnL2N1c3RvbS9t
b3VzZS1tb3ZlLW9uLXN2Zy1yb290LnhodG1sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>