<?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>79119</bug_id>
          
          <creation_ts>2012-02-21 08:57:39 -0800</creation_ts>
          <short_desc>[Qt][WK2] Infinite loop on history navigation, when panning.</short_desc>
          <delta_ts>2012-03-06 08:19:05 -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>WebKit Qt</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>80029</dependson>
    
    <dependson>80425</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="Andras Becsi">abecsi</assigned_to>
          <cc>abecsi</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>560930</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-02-21 08:57:39 -0800</bug_when>
    <thetext>Looks like Minibrowser gets into an infinite loop, when panning while navigating in the back-forward history. It&apos;s not reproducable every time, but it happens within 10 attempts.
steps to reproduce:
load at least 2 pages (news.google.com, cnn.com)
navigate between them using back/forward arrows.
start panning right after, the history navigation kicks in.

Minibrowser ends up producing output like this:

MiniBrowser: Going backward in session history.
MiniBrowser: Going backward in session history.
MiniBrowser: Going backward in session history.
MiniBrowser: Going backward in session history.
MiniBrowser: Going backward in session history.

with the following backtrace:

#0  QQuickWebView::goBack (this=0x237f0e0) at ../../../../Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:1107
#1  0x00007fa39352f299 in QQuickWebView::qt_static_metacall (_o=0x237f0e0, _c=QMetaObject::InvokeMetaMethod, _id=13, _a=0x7fff0f4cb5f0) at moc/moc_qquickwebview_p.cpp:146
#2  0x00007fa39352f8a8 in QQuickWebView::qt_metacall (this=0x237f0e0, _c=QMetaObject::InvokeMetaMethod, _id=13, _a=0x7fff0f4cb5f0) at moc/moc_qquickwebview_p.cpp:292
#3  0x00007fa3911d9d16 in QDeclarativeProxyMetaObject::metaCall (this=0x2376db0, c=QMetaObject::InvokeMetaMethod, id=46, a=0x7fff0f4cb5f0) at qml/qdeclarativeproxymetaobject.cpp:121
#4  0x00007fa39010697c in QMetaObject::metacall (object=0x237f0e0, cl=QMetaObject::InvokeMetaMethod, idx=46, argv=0x7fff0f4cb5f0) at kernel/qmetaobject.cpp:246
#5  0x00007fa3912f4e07 in CallMethod (object=0x237f0e0, index=46, returnType=0, argCount=0, argTypes=0x0, engine=0x220b640, callArgs=...) at qml/v8/qv8qobjectwrapper.cpp:1495
#6  0x00007fa3912f58ff in CallPrecise (object=0x237f0e0, data=..., engine=0x220b640, callArgs=...) at qml/v8/qv8qobjectwrapper.cpp:1708
#7  0x00007fa3912f6941 in QV8QObjectWrapper::Invoke (args=...) at qml/v8/qv8qobjectwrapper.cpp:1910
#8  0x00007fa38c653bab in v8::internal::HandleApiCallHelper&lt;false&gt; (args=..., isolate=0x218d5e0) at ../3rdparty/v8/src/builtins.cc:1164
#9  0x00007fa38c64e669 in v8::internal::Builtin_Impl_HandleApiCall (args=..., isolate=0x218d5e0) at ../3rdparty/v8/src/builtins.cc:1181
#10 0x00007fa38c64e63a in v8::internal::Builtin_HandleApiCall (args=..., isolate=0x218d5e0) at ../3rdparty/v8/src/builtins.cc:1180
#11 0x0000150b9ec0428e in ?? ()
#12 0x0000150b9ec04201 in ?? ()
#13 0x00007fff0f4cbdc0 in ?? ()
#14 0x00007fff0f4cbe38 in ?? ()
#15 0x0000150b9ec28650 in ?? ()
#16 0x00002300f3d97531 in ?? ()
#17 0x00000dc171e2a259 in ?? ()
#18 0x0000000000000000 in ?? ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563042</commentid>
    <comment_count>1</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-02-23 05:17:06 -0800</bug_when>
    <thetext>The infinite loop happens due to MiniBrowser&apos;s touch mocking code also sending TouchBegin/TouchUpdate events for MouseButtonDblClick events, which do not get handled and end up as mouse events again in notify where the loop starts again.

I&apos;m currently working on changing the MiniBrowser touch mocking code that it only delivers touch events to the canvas, this way we do not end up in a mess of having both touch and mouse events when using the flickable web view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566648</commentid>
    <comment_count>2</comment_count>
      <attachid>129248</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-02-28 07:25:39 -0800</bug_when>
    <thetext>Created attachment 129248
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566654</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-28 07:28:48 -0800</bug_when>
    <thetext>Attachment 129248 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/qt/QtFlickProvider.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566659</commentid>
    <comment_count>4</comment_count>
      <attachid>129251</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-02-28 07:34:56 -0800</bug_when>
    <thetext>Created attachment 129251
proposed patch with corrected style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566663</commentid>
    <comment_count>5</comment_count>
      <attachid>129248</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-28 07:37:36 -0800</bug_when>
    <thetext>Comment on attachment 129248
proposed patch

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

&gt; Source/WebKit2/ChangeLog:9
&gt; +        Because the WebView item accepts all touch events it receives and sends
&gt; +        them to the web process before propagating them to the gesture recognizers

You don&apos;t say whether this is the right thing to do. Is it?

&gt; Source/WebKit2/UIProcess/qt/QtFlickProvider.cpp:124
&gt; +    // Do the touch to mouse event conversion for the Flickable here
&gt; +    // to prevent infinite loops between the WebView and this function.

Why not explain how that could happen instead?

&gt; Source/WebKit2/UIProcess/qt/QtFlickProvider.cpp:151
&gt; +    // to the Flickable. This makes sure that the Flickable grabbs

grabbs??? grabs? :-)

&gt; Tools/MiniBrowser/qt/BrowserWindow.cpp:78
&gt; -    return rootObject()-&gt;property(&quot;webview&quot;).value&lt;QQuickWebView*&gt;();
&gt; +    return m_webView.read(rootObject()).value&lt;QQuickWebView*&gt;();

Could you explain the difference?

&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.cpp:129
&gt; +        // If the event is not meant for the WebView send it directly to the target.

, after WebView?

the target -&gt; its target?

&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.cpp:134
&gt; +        if (QQuickWebView* webView = browserWindow-&gt;webView()) {
&gt; +            QRectF viewportRect = webView-&gt;mapRectToScene(webView-&gt;boundingRect());
&gt; +            if (viewportRect.isEmpty() || !viewportRect.contains(mouseEvent-&gt;localPos()))
&gt; +                return QGuiApplication::notify(target, event);
&gt; +        }

could it be covered by something else? why would this work in that case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566674</commentid>
    <comment_count>6</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-02-28 07:51:53 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 129248 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129248&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:9
&gt; &gt; +        Because the WebView item accepts all touch events it receives and sends
&gt; &gt; +        them to the web process before propagating them to the gesture recognizers
&gt; 
&gt; You don&apos;t say whether this is the right thing to do. Is it?
Yes, this is the right thing to do.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/QtFlickProvider.cpp:124
&gt; &gt; +    // Do the touch to mouse event conversion for the Flickable here
&gt; &gt; +    // to prevent infinite loops between the WebView and this function.
&gt; 
&gt; Why not explain how that could happen instead?
Will do.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/QtFlickProvider.cpp:151
&gt; &gt; +    // to the Flickable. This makes sure that the Flickable grabbs
&gt; 
&gt; grabbs??? grabs? :-)
d&apos;oh, thanks.

&gt; 
&gt; &gt; Tools/MiniBrowser/qt/BrowserWindow.cpp:78
&gt; &gt; -    return rootObject()-&gt;property(&quot;webview&quot;).value&lt;QQuickWebView*&gt;();
&gt; &gt; +    return m_webView.read(rootObject()).value&lt;QQuickWebView*&gt;();
&gt; 
&gt; Could you explain the difference?
Will add a comment about avoiding string look-ups

&gt; 
&gt; &gt; Tools/MiniBrowser/qt/MiniBrowserApplication.cpp:134
&gt; &gt; +        if (QQuickWebView* webView = browserWindow-&gt;webView()) {
&gt; &gt; +            QRectF viewportRect = webView-&gt;mapRectToScene(webView-&gt;boundingRect());
&gt; &gt; +            if (viewportRect.isEmpty() || !viewportRect.contains(mouseEvent-&gt;localPos()))
&gt; &gt; +                return QGuiApplication::notify(target, event);
&gt; &gt; +        }
&gt; 
&gt; could it be covered by something else? why would this work in that case?
This is a corner case of the desktop use-case an is needed because the WebView is the only item which suppors touch events natively.
Previously we always sent both, touch and mouse, which sometimes ended up in the described infinite loop.
I also tried doing touch mocking for every mouse event and let Qt convert the touch back to mouse if noone accepted it, but QGuiApplication cashes the global position and button state of the real (initial) mouse event and does not send it again when it was converted back from a touch event.
So this is the only solution I see for making the MiniBrowser multi-touch mocking work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566726</commentid>
    <comment_count>7</comment_count>
      <attachid>129264</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-02-28 08:43:54 -0800</bug_when>
    <thetext>Created attachment 129264
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566794</commentid>
    <comment_count>8</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-02-28 09:29:42 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; could it be covered by something else? why would this work in that case?
Sorry, I misunderstood the point of the question.

We need a mechanism to prevent touch events being accepted by the WebView in the case of dialogs for example, which depend on mouse events, because they would never be converted to mouse events on the device (and neither on the desktop).

As far as I know this issue was also present in grob and was solved with a boolean flag in the WebView, but I think this case would need a better solution in Qt which is out of scope for this change.
There are already ongoing discussions about the issues arising from QQuickItems not supporting touch events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567682</commentid>
    <comment_count>9</comment_count>
      <attachid>129264</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-02-29 09:32:52 -0800</bug_when>
    <thetext>Comment on attachment 129264
proposed patch

Remove from review queue until further discussions have a conclusion on whether or not to support multi-touch mocking in MiniBrowser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567831</commentid>
    <comment_count>10</comment_count>
      <attachid>129264</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-02-29 12:39:37 -0800</bug_when>
    <thetext>Comment on attachment 129264
proposed patch

If we create the touch events in MiniBrowserApplication and do not use QWindowSystemInterface to create them we can send the original mouse event in case the touch event was not accepted. I think this would be a better solution than the hit-testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568416</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-03-01 00:08:09 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 129264 [details])
&gt; If we create the touch events in MiniBrowserApplication and do not use QWindowSystemInterface to create them we can send the original mouse event in case the touch event was not accepted. I think this would be a better solution than the hit-testing.

I agree.

We do need a workaround for this for the time being (for us to be able to continue development), until QQ accepts touch and mouse events equally without intermediate synthetization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568690</commentid>
    <comment_count>12</comment_count>
      <attachid>129712</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-03-01 08:45:27 -0800</bug_when>
    <thetext>Created attachment 129712
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569541</commentid>
    <comment_count>13</comment_count>
      <attachid>129877</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-03-02 04:27:59 -0800</bug_when>
    <thetext>Created attachment 129877
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569605</commentid>
    <comment_count>14</comment_count>
      <attachid>129877</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-03-02 05:53:35 -0800</bug_when>
    <thetext>Comment on attachment 129877
updated patch

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

r=me with a few quirks :)

&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.cpp:41
&gt; +    static QRectF touchRect(0, 0, 40, 40);

I think the static keyboard should be removed. I doubt that there&apos;s a performance impact here, and IMO it makes the code harder to read (&quot;What does he mean with static here?&quot;)

&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.cpp:138
&gt; +        static QPointF lastPos;

Why not make this a member variable? IMHO that&apos;s cleaner.

&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.cpp:147
&gt; +        static QPointF lastScreenPos;

Same here.

&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.cpp:168
&gt; +                event-&gt;accept();

Perhaps a comment here (as well as below) would be good here, to explain why we _swallow_ the event instead of delivering it. (flickable mess...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569640</commentid>
    <comment_count>15</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-03-02 07:29:12 -0800</bug_when>
    <thetext>Committed r109575: &lt;http://trac.webkit.org/changeset/109575&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569642</commentid>
    <comment_count>16</comment_count>
      <attachid>129877</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-03-02 07:31:52 -0800</bug_when>
    <thetext>Comment on attachment 129877
updated patch

Clearing flags from attachment.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129248</attachid>
            <date>2012-02-28 07:25:39 -0800</date>
            <delta_ts>2012-02-28 07:37:47 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>0001-Event-Delivery.patch</filename>
            <type>text/plain</type>
            <size>10023</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSA5N2JiNTYzNWUxOTgzYjIwMzQzNmI4MDQ2MWE4NDc3ZjI0ZjI4ZmIyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+
CkRhdGU6IFR1ZSwgMjggRmViIDIwMTIgMTQ6NTk6MzYgKzAxMDAKU3ViamVjdDogW1BBVENIXSBF
dmVudCBEZWxpdmVyeQoKLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjIgKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRGbGlja1Byb3ZpZGVyLmNwcCAgICB8ICAgMzcgKysrKysrKysrKysrKysrKysrLQog
Li4uL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcCAgICAgICAgfCAgICAx
ICsKIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAxOCArKysrKysrKysKIFRvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwICAg
ICAgICAgICAgIHwgICAxMCArKysrKy0KIFRvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5k
b3cuaCAgICAgICAgICAgICAgIHwgICAgMiArCiBUb29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJv
d3NlckFwcGxpY2F0aW9uLmNwcCAgICB8ICAgMjAgKysrKysrKy0tLS0KIDcgZmlsZXMgY2hhbmdl
ZCwgMTAwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1ZDUy
Y2VkLi5kNjBhZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDItMjggIEFu
ZHJhcyBCZWNzaSAgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJd
IEluZmluaXRlIGxvb3Agb24gaGlzdG9yeSBuYXZpZ2F0aW9uLCB3aGVuIHBhbm5pbmcuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTExOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlY2F1c2UgdGhlIFdl
YlZpZXcgaXRlbSBhY2NlcHRzIGFsbCB0b3VjaCBldmVudHMgaXQgcmVjZWl2ZXMgYW5kIHNlbmRz
CisgICAgICAgIHRoZW0gdG8gdGhlIHdlYiBwcm9jZXNzIGJlZm9yZSBwcm9wYWdhdGluZyB0aGVt
IHRvIHRoZSBnZXN0dXJlIHJlY29nbml6ZXJzCisgICAgICAgIHdlIGNhbiBub3QgcmVseSBvbiB0
aGUgdG91Y2gtPm1vdXNlIGNvbnZlcnNpb24gb2YgUXQ1IHdoZW4gY29udHJvbGxpbmcKKyAgICAg
ICAgRmxpY2thYmxlLiBUaHVzIHdlIG5lZWQgdG8gY29udmVydCB0aGUgcmVjZWl2ZWQgdG91Y2gg
ZXZlbnRzIHRvIG1vdXNlCisgICAgICAgIGV2ZW50cyBpbiB0aGUgUXRGbGlja1Byb3ZpZGVyLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIGludGVy
bmFsIEZsaWNrYWJsZSBvbiB0aGUgTjkKKyAgICAgICAgYW5kICBtYWtlcyB0b3VjaCBtb2NraW5n
IG1vcmUgcm9idXN0IG9uIHRoZSBkZXNrdG9wIGJ5IG9ubHkgZ2VuZXJhdGluZworICAgICAgICB0
b3VjaCBtb2NrIGV2ZW50cyBmb3IgbW91c2UgZXZlbnRzIHRhcmdldGluZyB0aGUgV2ViVmlldy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdEZsaWNrUHJvdmlkZXIuY3BwOgorICAgICAgICAo
UXRGbGlja1Byb3ZpZGVyOjpoYW5kbGVUb3VjaEZsaWNrRXZlbnQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRQ
YW5HZXN0dXJlUmVjb2duaXplcjo6cmVjb2duaXplKToKKwogMjAxMi0wMi0yOCAgU2hpbnlhIEth
d2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRWxlbWVudCBzaG91bGQg
YmUgYWJsZSB0byBoYXZlIG11bHRpcGxlIHNoYWRvdyByb290cy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdEZsaWNrUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0RmxpY2tQcm92aWRlci5jcHAKaW5kZXggYzFhZmE0YS4uZDBjMmU4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RmxpY2tQcm92aWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RmxpY2tQcm92aWRlci5j
cHAKQEAgLTI3LDcgKzI3LDkgQEAKICNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgogI2luY2x1
ZGUgPFFEZWNsYXJhdGl2ZUVuZ2luZT4KICNpbmNsdWRlIDxRUG9pbnRGPgorI2luY2x1ZGUgPFFR
dWlja0NhbnZhcz4KICNpbmNsdWRlIDxRUXVpY2tJdGVtPgorI2luY2x1ZGUgPFFNb3VzZUV2ZW50
PgogI2luY2x1ZGUgPFFUb3VjaEV2ZW50PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAK
QEAgLTExNiw5ICsxMTgsNDAgQEAgUXRGbGlja1Byb3ZpZGVyOjpRdEZsaWNrUHJvdmlkZXIoUVF1
aWNrV2ViVmlldyogdmlld0l0ZW0sIFFRdWlja1dlYlBhZ2UqIHBhZ2VJdGUKICAgICBjb25uZWN0
KG1fZmxpY2thYmxlLCBTSUdOQUwoY29udGVudFlDaGFuZ2VkKCkpLCBTSUdOQUwoY29udGVudFlD
aGFuZ2VkKCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7CiB9CiAKLXZvaWQgUXRGbGlja1Byb3Zp
ZGVyOjpoYW5kbGVUb3VjaEZsaWNrRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KQordm9pZCBRdEZs
aWNrUHJvdmlkZXI6OmhhbmRsZVRvdWNoRmxpY2tFdmVudChRVG91Y2hFdmVudCogdG91Y2hFdmVu
dCkKIHsKLSAgICBRQ29yZUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQobV9mbGlja2FibGUsIGV2ZW50
KTsKKyAgICAvLyBEbyB0aGUgdG91Y2ggdG8gbW91c2UgZXZlbnQgY29udmVyc2lvbiBmb3IgdGhl
IEZsaWNrYWJsZSBoZXJlCisgICAgLy8gdG8gcHJldmVudCBpbmZpbml0ZSBsb29wcyBiZXR3ZWVu
IHRoZSBXZWJWaWV3IGFuZCB0aGlzIGZ1bmN0aW9uLgorICAgIFFFdmVudDo6VHlwZSBtb3VzZUV2
ZW50VHlwZSA9IFFFdmVudDo6Tm9uZTsKKyAgICBRdDo6TW91c2VCdXR0b24gbW91c2VCdXR0b24g
PSBRdDo6Tm9CdXR0b247CisKKyAgICBzd2l0Y2ggKHRvdWNoRXZlbnQtPnR5cGUoKSkgeworICAg
IGNhc2UgUUV2ZW50OjpUb3VjaEJlZ2luOgorICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFFFdmVu
dDo6TW91c2VCdXR0b25QcmVzczsKKworICAgICAgICAvLyBXZSBuZWVkIHRvIHNldCB0aGUgbW91
c2UgYnV0dG9uIHNvIHRoYXQgdGhlIEZsaWNrYWJsZQorICAgICAgICAvLyBpdGVtIHJlY2VpdmVz
IHRoZSBpbml0aWFsIG1vdXNlIHByZXNzIGV2ZW50LgorICAgICAgICBtb3VzZUJ1dHRvbiA9IFF0
OjpMZWZ0QnV0dG9uOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFFFdmVudDo6VG91Y2hVcGRh
dGU6CisgICAgICAgIG1vdXNlRXZlbnRUeXBlID0gUUV2ZW50OjpNb3VzZU1vdmU7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUUV2ZW50OjpUb3VjaEVuZDoKKyAgICAgICAgbW91c2VFdmVudFR5
cGUgPSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUmVsZWFzZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIFFQb2ludEYgdG91Y2hQb3NpdGlvbiA9IHRvdWNoRXZlbnQtPnRvdWNoUG9pbnRz
KCkubGFzdCgpLnBvcygpOworICAgIFFNb3VzZUV2ZW50IG1vdXNlRXZlbnQobW91c2VFdmVudFR5
cGUsIHRvdWNoUG9zaXRpb24sIG1vdXNlQnV0dG9uLCBtb3VzZUJ1dHRvbiwgUXQ6Ok5vTW9kaWZp
ZXIpOworCisgICAgLy8gU2VuZCB0aGUgZXZlbnQgdG8gdGhlIGNhbnZhcyBhbmQgbGV0IHRoZSBj
YW52YXMgcHJvcGFnYXRlIGl0CisgICAgLy8gdG8gdGhlIEZsaWNrYWJsZS4gVGhpcyBtYWtlcyBz
dXJlIHRoYXQgdGhlIEZsaWNrYWJsZSBncmFiYnMKKyAgICAvLyB0aGUgbW91c2Ugc28gdGhhdCBp
dCBhbHNvIHJlY2VpdmVzIHRoZSBldmVudHMgb2YgZ2VzdHVyZXMKKyAgICAvLyB3aGljaCBzdGFy
dGVkIGluc2lkZSB0aGUgdmlld3BvcnQgYnV0IGVuZGVkIG91dHNpZGUgb2YgaXQuCisgICAgUUNv
cmVBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1fZmxpY2thYmxlLT5jYW52YXMoKSwgJm1vdXNlRXZl
bnQpOwogfQogCiBRUXVpY2tJdGVtKiBRdEZsaWNrUHJvdmlkZXI6OmNvbnRlbnRJdGVtKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25p
emVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25p
emVyLmNwcAppbmRleCAxNzg3MzkxLi5iZTE3YWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVjb2duaXplci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuY3BwCkBAIC02Myw2ICs2
Myw3IEBAIGJvb2wgUXRQYW5HZXN0dXJlUmVjb2duaXplcjo6cmVjb2duaXplKGNvbnN0IFFUb3Vj
aEV2ZW50KiBldmVudCkKICAgICAgICAgbV9zdGF0ZSA9IEdlc3R1cmVSZWNvZ25pdGlvblN0YXJ0
ZWQ7CiAgICAgICAgIG1fZmlyc3RQb3NpdGlvbiA9IHRvdWNoUG9pbnQuc2NyZWVuUG9zKCk7CiAg
ICAgICAgIG1fdG91Y2hCZWdpbi5yZXNldChuZXcgUVRvdWNoRXZlbnQoKmV2ZW50KSk7CisgICAg
ICAgIGludGVyYWN0aW9uRW5naW5lKCktPnBhbkdlc3R1cmVDYW5jZWxsZWQoKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGNhc2UgUUV2ZW50OjpUb3VjaFVwZGF0ZTogewogICAgICAgICBB
U1NFUlQobV9zdGF0ZSAhPSBOb0dlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU3M2YzM2QuLjZmYTlhNjIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAx
Mi0wMi0yOCAgQW5kcmFzIEJlY3NpICA8YW5kcmFzLmJlY3NpQG5va2lhLmNvbT4KKworICAgICAg
ICBbUXRdW1dLMl0gSW5maW5pdGUgbG9vcCBvbiBoaXN0b3J5IG5hdmlnYXRpb24sIHdoZW4gcGFu
bmluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5
MTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSB0aGUgdG91Y2ggbW9ja2luZyBtb3JlIHJvYnVzdCBvbiB0aGUgZGVza3RvcCBieSBvbmx5IGdl
bmVyYXRpbmcKKyAgICAgICAgdG91Y2ggbW9jayBldmVudHMgZm9yIG1vdXNlIGV2ZW50cyB0YXJn
ZXRpbmcgdGhlIFdlYlZpZXcuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2lu
ZG93LmNwcDoKKyAgICAgICAgKEJyb3dzZXJXaW5kb3c6OkJyb3dzZXJXaW5kb3cpOiBSZXNvbHZl
IHRoZSBtZXRhIHByb3BlcnR5IG9mIHRoZSBXZWJWaWV3IGl0ZW0uCisgICAgICAgIChCcm93c2Vy
V2luZG93Ojp3ZWJWaWV3KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93
Lmg6CisgICAgICAgIChCcm93c2VyV2luZG93KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9N
aW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcDoKKyAgICAgICAgKE1pbmlCcm93c2VyQXBwbGljYXRp
b246Om5vdGlmeSk6CisKIDIwMTItMDItMjggIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVwZGF0ZSBhIHBhdHRlcm4gZm9yIGZvcm1zIGZpbGVzIG9mIHdhdGNo
bGlzdApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAg
Yi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcAppbmRleCA2MzljZDRmLi5k
MzFmMjdiIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNw
cAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcApAQCAtNjMsMTEg
KzYzLDE5IEBAIEJyb3dzZXJXaW5kb3c6OkJyb3dzZXJXaW5kb3coV2luZG93T3B0aW9ucyogb3B0
aW9ucykKICAgICAgICAgICAgIHJlc2l6ZShvcHRpb25zLT5yZXF1ZXN0ZWRXaW5kb3dTaXplKCkp
OwogICAgICAgICBzaG93KCk7CiAgICAgfQorCisgICAgY29uc3QgUU1ldGFPYmplY3QqIG1ldGFP
YmplY3QgPSByb290T2JqZWN0KCktPm1ldGFPYmplY3QoKTsKKyAgICBRX0FTU0VSVChtZXRhT2Jq
ZWN0KTsKKworICAgIGludCBwcm9wZXJ0eUluZGV4ID0gbWV0YU9iamVjdC0+aW5kZXhPZlByb3Bl
cnR5KCJ3ZWJ2aWV3Iik7CisgICAgUV9BU1NFUlQocHJvcGVydHlJbmRleCAhPSAtMSk7CisKKyAg
ICBtX3dlYlZpZXcgPSBtZXRhT2JqZWN0LT5wcm9wZXJ0eShwcm9wZXJ0eUluZGV4KTsKIH0KIAog
UVF1aWNrV2ViVmlldyogQnJvd3NlcldpbmRvdzo6d2ViVmlldygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHJvb3RPYmplY3QoKS0+cHJvcGVydHkoIndlYnZpZXciKS52YWx1ZTxRUXVpY2tXZWJWaWV3
Kj4oKTsKKyAgICByZXR1cm4gbV93ZWJWaWV3LnJlYWQocm9vdE9iamVjdCgpKS52YWx1ZTxRUXVp
Y2tXZWJWaWV3Kj4oKTsKIH0KIAogdm9pZCBCcm93c2VyV2luZG93Ojpsb2FkKGNvbnN0IFFTdHJp
bmcmIHVybCkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cu
aCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuaAppbmRleCBkNmNhMGE2Li40
MmU0MGZlIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmgK
KysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oCkBAIC01Niw2ICs1Niw4
IEBAIHByb3RlY3RlZCBzbG90czoKIAogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVVzZXJBZ2Vu
dExpc3QoKTsKKworICAgIFFNZXRhUHJvcGVydHkgbV93ZWJWaWV3OwogICAgIFdpbmRvd09wdGlv
bnMqIG1fd2luZG93T3B0aW9uczsKICAgICBRU3RyaW5nTGlzdCBtX3VzZXJBZ2VudExpc3Q7CiB9
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlv
bi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcApp
bmRleCAyZWM5NWFkLi5hMzM4NDMyIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9N
aW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5p
QnJvd3NlckFwcGxpY2F0aW9uLmNwcApAQCAtODAsMTEgKzgwLDYgQEAgTWluaUJyb3dzZXJBcHBs
aWNhdGlvbjo6TWluaUJyb3dzZXJBcHBsaWNhdGlvbihpbnQmIGFyZ2MsIGNoYXIqKiBhcmd2KQog
CiBib29sIE1pbmlCcm93c2VyQXBwbGljYXRpb246Om5vdGlmeShRT2JqZWN0KiB0YXJnZXQsIFFF
dmVudCogZXZlbnQpCiB7Ci0gICAgaWYoUUlucHV0RXZlbnQqIGllID0gc3RhdGljX2Nhc3Q8UUlu
cHV0RXZlbnQqPihldmVudCkpCi0gICAgICAgIG1faG9sZGluZ0NvbnRyb2wgPSBpZS0+bW9kaWZp
ZXJzKCkudGVzdEZsYWcoUXQ6OkNvbnRyb2xNb2RpZmllcik7Ci0gICAgZWxzZQotICAgICAgICBt
X2hvbGRpbmdDb250cm9sID0gZmFsc2U7Ci0KICAgICAvLyBXZSB0cnkgdG8gYmUgc21hcnQsIGlm
IHdlIHJlY2VpdmVkIHJlYWwgdG91Y2ggZXZlbnQsIHdlIGFyZSBwcm9iYWJseSBvbiBhIGRldmlj
ZQogICAgIC8vIHdpdGggdG91Y2ggc2NyZWVuLCBhbmQgd2Ugc2hvdWxkIG5vdCBoYXZlIHRvdWNo
IG1vY2tpbmcuCiAKQEAgLTEyMywxMSArMTE4LDIwIEBAIGJvb2wgTWluaUJyb3dzZXJBcHBsaWNh
dGlvbjo6bm90aWZ5KFFPYmplY3QqIHRhcmdldCwgUUV2ZW50KiBldmVudCkKICAgICAgICAgICAg
IGlmIChtX3RvdWNoUG9pbnRzLmNvbnRhaW5zKGlkKSkKICAgICAgICAgICAgICAgICBtX3RvdWNo
UG9pbnRzW2lkXS5zdGF0ZSA9IFF0OjpUb3VjaFBvaW50UmVsZWFzZWQ7CiAgICAgICAgIG1faGVs
ZFRvdWNoUG9pbnRzLmNsZWFyKCk7CisgICAgICAgIG1faG9sZGluZ0NvbnRyb2wgPSB0cnVlOwog
ICAgICAgICBzZW5kVG91Y2hFdmVudChicm93c2VyV2luZG93KTsKICAgICB9CiAKICAgICBpZiAo
aXNNb3VzZUV2ZW50KGV2ZW50KSkgewogICAgICAgICBjb25zdCBRTW91c2VFdmVudCogY29uc3Qg
bW91c2VFdmVudCA9IHN0YXRpY19jYXN0PFFNb3VzZUV2ZW50Kj4oZXZlbnQpOworICAgICAgICBt
X2hvbGRpbmdDb250cm9sID0gbW91c2VFdmVudC0+bW9kaWZpZXJzKCkudGVzdEZsYWcoUXQ6OkNv
bnRyb2xNb2RpZmllcik7CisKKyAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGlzIG5vdCBtZWFudCBm
b3IgdGhlIFdlYlZpZXcgc2VuZCBpdCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0LgorICAgICAgICBp
ZiAoUVF1aWNrV2ViVmlldyogd2ViVmlldyA9IGJyb3dzZXJXaW5kb3ctPndlYlZpZXcoKSkgewor
ICAgICAgICAgICAgUVJlY3RGIHZpZXdwb3J0UmVjdCA9IHdlYlZpZXctPm1hcFJlY3RUb1NjZW5l
KHdlYlZpZXctPmJvdW5kaW5nUmVjdCgpKTsKKyAgICAgICAgICAgIGlmICh2aWV3cG9ydFJlY3Qu
aXNFbXB0eSgpIHx8ICF2aWV3cG9ydFJlY3QuY29udGFpbnMobW91c2VFdmVudC0+bG9jYWxQb3Mo
KSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFFHdWlBcHBsaWNhdGlvbjo6bm90aWZ5KHRhcmdl
dCwgZXZlbnQpOworICAgICAgICB9CiAKICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6
VG91Y2hQb2ludCB0b3VjaFBvaW50OwogICAgICAgICB0b3VjaFBvaW50LmFyZWEgPSBRUmVjdEYo
bW91c2VFdmVudC0+Z2xvYmFsUG9zKCkgLSBRUG9pbnRGKDMwLCA0MCksIFFTaXplRig2MCwgODAp
KTsKQEAgLTE0NCw3ICsxNDgsOCBAQCBib29sIE1pbmlCcm93c2VyQXBwbGljYXRpb246Om5vdGlm
eShRT2JqZWN0KiB0YXJnZXQsIFFFdmVudCogZXZlbnQpCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlTW92ZToKICAgICAgICAgICAgIGlmICghbW91c2VFdmVu
dC0+YnV0dG9ucygpIHx8ICFtX3RvdWNoUG9pbnRzLmNvbnRhaW5zKG1vdXNlRXZlbnQtPmJ1dHRv
bnMoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFFHdWlBcHBsaWNhdGlvbjo6bm90aWZ5KHRh
cmdldCwgZXZlbnQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgICAgICAg
ICB0b3VjaFBvaW50LmlkID0gbW91c2VFdmVudC0+YnV0dG9ucygpOwogICAgICAgICAgICAgdG91
Y2hQb2ludC5zdGF0ZSA9IFF0OjpUb3VjaFBvaW50TW92ZWQ7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTE1Myw3ICsxNTgsNyBAQCBib29sIE1pbmlCcm93c2VyQXBwbGljYXRpb246Om5vdGlmeShR
T2JqZWN0KiB0YXJnZXQsIFFFdmVudCogZXZlbnQpCiAgICAgICAgICAgICB0b3VjaFBvaW50Lmlk
ID0gbW91c2VFdmVudC0+YnV0dG9uKCk7CiAgICAgICAgICAgICBpZiAobV9ob2xkaW5nQ29udHJv
bCkgewogICAgICAgICAgICAgICAgIG1faGVsZFRvdWNoUG9pbnRzLmluc2VydCh0b3VjaFBvaW50
LmlkKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gUUd1aUFwcGxpY2F0aW9uOjpub3RpZnkodGFy
Z2V0LCBldmVudCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTE3MCw2ICsxNzUsNyBA
QCBib29sIE1pbmlCcm93c2VyQXBwbGljYXRpb246Om5vdGlmeShRT2JqZWN0KiB0YXJnZXQsIFFF
dmVudCogZXZlbnQpCiAgICAgICAgIH0KIAogICAgICAgICBzZW5kVG91Y2hFdmVudChicm93c2Vy
V2luZG93KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIFFHdWlB
cHBsaWNhdGlvbjo6bm90aWZ5KHRhcmdldCwgZXZlbnQpOwotLSAKMS43LjkuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129251</attachid>
            <date>2012-02-28 07:34:56 -0800</date>
            <delta_ts>2012-02-28 08:43:54 -0800</delta_ts>
            <desc>proposed patch with corrected style</desc>
            <filename>0001-Event-Delivery.patch</filename>
            <type>text/plain</type>
            <size>10023</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSA3YTc4MTExOWI5NWJhOWVhNGVkOWE1YjYyMWY4NzUxYmMyNWY3ZjRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+
CkRhdGU6IFR1ZSwgMjggRmViIDIwMTIgMTQ6NTk6MzYgKzAxMDAKU3ViamVjdDogW1BBVENIXSBF
dmVudCBEZWxpdmVyeQoKLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjIgKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRGbGlja1Byb3ZpZGVyLmNwcCAgICB8ICAgMzcgKysrKysrKysrKysrKysrKysrLQog
Li4uL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcCAgICAgICAgfCAgICAx
ICsKIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAxOCArKysrKysrKysKIFRvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwICAg
ICAgICAgICAgIHwgICAxMCArKysrKy0KIFRvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5k
b3cuaCAgICAgICAgICAgICAgIHwgICAgMiArCiBUb29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJv
d3NlckFwcGxpY2F0aW9uLmNwcCAgICB8ICAgMjAgKysrKysrKy0tLS0KIDcgZmlsZXMgY2hhbmdl
ZCwgMTAwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1ZDUy
Y2VkLi5kNjBhZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDItMjggIEFu
ZHJhcyBCZWNzaSAgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJd
IEluZmluaXRlIGxvb3Agb24gaGlzdG9yeSBuYXZpZ2F0aW9uLCB3aGVuIHBhbm5pbmcuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTExOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlY2F1c2UgdGhlIFdl
YlZpZXcgaXRlbSBhY2NlcHRzIGFsbCB0b3VjaCBldmVudHMgaXQgcmVjZWl2ZXMgYW5kIHNlbmRz
CisgICAgICAgIHRoZW0gdG8gdGhlIHdlYiBwcm9jZXNzIGJlZm9yZSBwcm9wYWdhdGluZyB0aGVt
IHRvIHRoZSBnZXN0dXJlIHJlY29nbml6ZXJzCisgICAgICAgIHdlIGNhbiBub3QgcmVseSBvbiB0
aGUgdG91Y2gtPm1vdXNlIGNvbnZlcnNpb24gb2YgUXQ1IHdoZW4gY29udHJvbGxpbmcKKyAgICAg
ICAgRmxpY2thYmxlLiBUaHVzIHdlIG5lZWQgdG8gY29udmVydCB0aGUgcmVjZWl2ZWQgdG91Y2gg
ZXZlbnRzIHRvIG1vdXNlCisgICAgICAgIGV2ZW50cyBpbiB0aGUgUXRGbGlja1Byb3ZpZGVyLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIGludGVy
bmFsIEZsaWNrYWJsZSBvbiB0aGUgTjkKKyAgICAgICAgYW5kICBtYWtlcyB0b3VjaCBtb2NraW5n
IG1vcmUgcm9idXN0IG9uIHRoZSBkZXNrdG9wIGJ5IG9ubHkgZ2VuZXJhdGluZworICAgICAgICB0
b3VjaCBtb2NrIGV2ZW50cyBmb3IgbW91c2UgZXZlbnRzIHRhcmdldGluZyB0aGUgV2ViVmlldy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdEZsaWNrUHJvdmlkZXIuY3BwOgorICAgICAgICAo
UXRGbGlja1Byb3ZpZGVyOjpoYW5kbGVUb3VjaEZsaWNrRXZlbnQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRQ
YW5HZXN0dXJlUmVjb2duaXplcjo6cmVjb2duaXplKToKKwogMjAxMi0wMi0yOCAgU2hpbnlhIEth
d2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRWxlbWVudCBzaG91bGQg
YmUgYWJsZSB0byBoYXZlIG11bHRpcGxlIHNoYWRvdyByb290cy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdEZsaWNrUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0RmxpY2tQcm92aWRlci5jcHAKaW5kZXggYzFhZmE0YS4uYWU2Mjhk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RmxpY2tQcm92aWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RmxpY2tQcm92aWRlci5j
cHAKQEAgLTI2LDcgKzI2LDkgQEAKIAogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5j
bHVkZSA8UURlY2xhcmF0aXZlRW5naW5lPgorI2luY2x1ZGUgPFFNb3VzZUV2ZW50PgogI2luY2x1
ZGUgPFFQb2ludEY+CisjaW5jbHVkZSA8UVF1aWNrQ2FudmFzPgogI2luY2x1ZGUgPFFRdWlja0l0
ZW0+CiAjaW5jbHVkZSA8UVRvdWNoRXZlbnQ+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
QEAgLTExNiw5ICsxMTgsNDAgQEAgUXRGbGlja1Byb3ZpZGVyOjpRdEZsaWNrUHJvdmlkZXIoUVF1
aWNrV2ViVmlldyogdmlld0l0ZW0sIFFRdWlja1dlYlBhZ2UqIHBhZ2VJdGUKICAgICBjb25uZWN0
KG1fZmxpY2thYmxlLCBTSUdOQUwoY29udGVudFlDaGFuZ2VkKCkpLCBTSUdOQUwoY29udGVudFlD
aGFuZ2VkKCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7CiB9CiAKLXZvaWQgUXRGbGlja1Byb3Zp
ZGVyOjpoYW5kbGVUb3VjaEZsaWNrRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KQordm9pZCBRdEZs
aWNrUHJvdmlkZXI6OmhhbmRsZVRvdWNoRmxpY2tFdmVudChRVG91Y2hFdmVudCogdG91Y2hFdmVu
dCkKIHsKLSAgICBRQ29yZUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQobV9mbGlja2FibGUsIGV2ZW50
KTsKKyAgICAvLyBEbyB0aGUgdG91Y2ggdG8gbW91c2UgZXZlbnQgY29udmVyc2lvbiBmb3IgdGhl
IEZsaWNrYWJsZSBoZXJlCisgICAgLy8gdG8gcHJldmVudCBpbmZpbml0ZSBsb29wcyBiZXR3ZWVu
IHRoZSBXZWJWaWV3IGFuZCB0aGlzIGZ1bmN0aW9uLgorICAgIFFFdmVudDo6VHlwZSBtb3VzZUV2
ZW50VHlwZSA9IFFFdmVudDo6Tm9uZTsKKyAgICBRdDo6TW91c2VCdXR0b24gbW91c2VCdXR0b24g
PSBRdDo6Tm9CdXR0b247CisKKyAgICBzd2l0Y2ggKHRvdWNoRXZlbnQtPnR5cGUoKSkgeworICAg
IGNhc2UgUUV2ZW50OjpUb3VjaEJlZ2luOgorICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFFFdmVu
dDo6TW91c2VCdXR0b25QcmVzczsKKworICAgICAgICAvLyBXZSBuZWVkIHRvIHNldCB0aGUgbW91
c2UgYnV0dG9uIHNvIHRoYXQgdGhlIEZsaWNrYWJsZQorICAgICAgICAvLyBpdGVtIHJlY2VpdmVz
IHRoZSBpbml0aWFsIG1vdXNlIHByZXNzIGV2ZW50LgorICAgICAgICBtb3VzZUJ1dHRvbiA9IFF0
OjpMZWZ0QnV0dG9uOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFFFdmVudDo6VG91Y2hVcGRh
dGU6CisgICAgICAgIG1vdXNlRXZlbnRUeXBlID0gUUV2ZW50OjpNb3VzZU1vdmU7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUUV2ZW50OjpUb3VjaEVuZDoKKyAgICAgICAgbW91c2VFdmVudFR5
cGUgPSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUmVsZWFzZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIFFQb2ludEYgdG91Y2hQb3NpdGlvbiA9IHRvdWNoRXZlbnQtPnRvdWNoUG9pbnRz
KCkubGFzdCgpLnBvcygpOworICAgIFFNb3VzZUV2ZW50IG1vdXNlRXZlbnQobW91c2VFdmVudFR5
cGUsIHRvdWNoUG9zaXRpb24sIG1vdXNlQnV0dG9uLCBtb3VzZUJ1dHRvbiwgUXQ6Ok5vTW9kaWZp
ZXIpOworCisgICAgLy8gU2VuZCB0aGUgZXZlbnQgdG8gdGhlIGNhbnZhcyBhbmQgbGV0IHRoZSBj
YW52YXMgcHJvcGFnYXRlIGl0CisgICAgLy8gdG8gdGhlIEZsaWNrYWJsZS4gVGhpcyBtYWtlcyBz
dXJlIHRoYXQgdGhlIEZsaWNrYWJsZSBncmFiYnMKKyAgICAvLyB0aGUgbW91c2Ugc28gdGhhdCBp
dCBhbHNvIHJlY2VpdmVzIHRoZSBldmVudHMgb2YgZ2VzdHVyZXMKKyAgICAvLyB3aGljaCBzdGFy
dGVkIGluc2lkZSB0aGUgdmlld3BvcnQgYnV0IGVuZGVkIG91dHNpZGUgb2YgaXQuCisgICAgUUNv
cmVBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1fZmxpY2thYmxlLT5jYW52YXMoKSwgJm1vdXNlRXZl
bnQpOwogfQogCiBRUXVpY2tJdGVtKiBRdEZsaWNrUHJvdmlkZXI6OmNvbnRlbnRJdGVtKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25p
emVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25p
emVyLmNwcAppbmRleCAxNzg3MzkxLi5iZTE3YWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVjb2duaXplci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuY3BwCkBAIC02Myw2ICs2
Myw3IEBAIGJvb2wgUXRQYW5HZXN0dXJlUmVjb2duaXplcjo6cmVjb2duaXplKGNvbnN0IFFUb3Vj
aEV2ZW50KiBldmVudCkKICAgICAgICAgbV9zdGF0ZSA9IEdlc3R1cmVSZWNvZ25pdGlvblN0YXJ0
ZWQ7CiAgICAgICAgIG1fZmlyc3RQb3NpdGlvbiA9IHRvdWNoUG9pbnQuc2NyZWVuUG9zKCk7CiAg
ICAgICAgIG1fdG91Y2hCZWdpbi5yZXNldChuZXcgUVRvdWNoRXZlbnQoKmV2ZW50KSk7CisgICAg
ICAgIGludGVyYWN0aW9uRW5naW5lKCktPnBhbkdlc3R1cmVDYW5jZWxsZWQoKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGNhc2UgUUV2ZW50OjpUb3VjaFVwZGF0ZTogewogICAgICAgICBB
U1NFUlQobV9zdGF0ZSAhPSBOb0dlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU3M2YzM2QuLjZmYTlhNjIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAx
Mi0wMi0yOCAgQW5kcmFzIEJlY3NpICA8YW5kcmFzLmJlY3NpQG5va2lhLmNvbT4KKworICAgICAg
ICBbUXRdW1dLMl0gSW5maW5pdGUgbG9vcCBvbiBoaXN0b3J5IG5hdmlnYXRpb24sIHdoZW4gcGFu
bmluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5
MTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSB0aGUgdG91Y2ggbW9ja2luZyBtb3JlIHJvYnVzdCBvbiB0aGUgZGVza3RvcCBieSBvbmx5IGdl
bmVyYXRpbmcKKyAgICAgICAgdG91Y2ggbW9jayBldmVudHMgZm9yIG1vdXNlIGV2ZW50cyB0YXJn
ZXRpbmcgdGhlIFdlYlZpZXcuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2lu
ZG93LmNwcDoKKyAgICAgICAgKEJyb3dzZXJXaW5kb3c6OkJyb3dzZXJXaW5kb3cpOiBSZXNvbHZl
IHRoZSBtZXRhIHByb3BlcnR5IG9mIHRoZSBXZWJWaWV3IGl0ZW0uCisgICAgICAgIChCcm93c2Vy
V2luZG93Ojp3ZWJWaWV3KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93
Lmg6CisgICAgICAgIChCcm93c2VyV2luZG93KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9N
aW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcDoKKyAgICAgICAgKE1pbmlCcm93c2VyQXBwbGljYXRp
b246Om5vdGlmeSk6CisKIDIwMTItMDItMjggIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVwZGF0ZSBhIHBhdHRlcm4gZm9yIGZvcm1zIGZpbGVzIG9mIHdhdGNo
bGlzdApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAg
Yi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcAppbmRleCA2MzljZDRmLi5k
MzFmMjdiIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNw
cAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcApAQCAtNjMsMTEg
KzYzLDE5IEBAIEJyb3dzZXJXaW5kb3c6OkJyb3dzZXJXaW5kb3coV2luZG93T3B0aW9ucyogb3B0
aW9ucykKICAgICAgICAgICAgIHJlc2l6ZShvcHRpb25zLT5yZXF1ZXN0ZWRXaW5kb3dTaXplKCkp
OwogICAgICAgICBzaG93KCk7CiAgICAgfQorCisgICAgY29uc3QgUU1ldGFPYmplY3QqIG1ldGFP
YmplY3QgPSByb290T2JqZWN0KCktPm1ldGFPYmplY3QoKTsKKyAgICBRX0FTU0VSVChtZXRhT2Jq
ZWN0KTsKKworICAgIGludCBwcm9wZXJ0eUluZGV4ID0gbWV0YU9iamVjdC0+aW5kZXhPZlByb3Bl
cnR5KCJ3ZWJ2aWV3Iik7CisgICAgUV9BU1NFUlQocHJvcGVydHlJbmRleCAhPSAtMSk7CisKKyAg
ICBtX3dlYlZpZXcgPSBtZXRhT2JqZWN0LT5wcm9wZXJ0eShwcm9wZXJ0eUluZGV4KTsKIH0KIAog
UVF1aWNrV2ViVmlldyogQnJvd3NlcldpbmRvdzo6d2ViVmlldygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHJvb3RPYmplY3QoKS0+cHJvcGVydHkoIndlYnZpZXciKS52YWx1ZTxRUXVpY2tXZWJWaWV3
Kj4oKTsKKyAgICByZXR1cm4gbV93ZWJWaWV3LnJlYWQocm9vdE9iamVjdCgpKS52YWx1ZTxRUXVp
Y2tXZWJWaWV3Kj4oKTsKIH0KIAogdm9pZCBCcm93c2VyV2luZG93Ojpsb2FkKGNvbnN0IFFTdHJp
bmcmIHVybCkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cu
aCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuaAppbmRleCBkNmNhMGE2Li40
MmU0MGZlIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmgK
KysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oCkBAIC01Niw2ICs1Niw4
IEBAIHByb3RlY3RlZCBzbG90czoKIAogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVVzZXJBZ2Vu
dExpc3QoKTsKKworICAgIFFNZXRhUHJvcGVydHkgbV93ZWJWaWV3OwogICAgIFdpbmRvd09wdGlv
bnMqIG1fd2luZG93T3B0aW9uczsKICAgICBRU3RyaW5nTGlzdCBtX3VzZXJBZ2VudExpc3Q7CiB9
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlv
bi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcApp
bmRleCAyZWM5NWFkLi5hMzM4NDMyIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9N
aW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5p
QnJvd3NlckFwcGxpY2F0aW9uLmNwcApAQCAtODAsMTEgKzgwLDYgQEAgTWluaUJyb3dzZXJBcHBs
aWNhdGlvbjo6TWluaUJyb3dzZXJBcHBsaWNhdGlvbihpbnQmIGFyZ2MsIGNoYXIqKiBhcmd2KQog
CiBib29sIE1pbmlCcm93c2VyQXBwbGljYXRpb246Om5vdGlmeShRT2JqZWN0KiB0YXJnZXQsIFFF
dmVudCogZXZlbnQpCiB7Ci0gICAgaWYoUUlucHV0RXZlbnQqIGllID0gc3RhdGljX2Nhc3Q8UUlu
cHV0RXZlbnQqPihldmVudCkpCi0gICAgICAgIG1faG9sZGluZ0NvbnRyb2wgPSBpZS0+bW9kaWZp
ZXJzKCkudGVzdEZsYWcoUXQ6OkNvbnRyb2xNb2RpZmllcik7Ci0gICAgZWxzZQotICAgICAgICBt
X2hvbGRpbmdDb250cm9sID0gZmFsc2U7Ci0KICAgICAvLyBXZSB0cnkgdG8gYmUgc21hcnQsIGlm
IHdlIHJlY2VpdmVkIHJlYWwgdG91Y2ggZXZlbnQsIHdlIGFyZSBwcm9iYWJseSBvbiBhIGRldmlj
ZQogICAgIC8vIHdpdGggdG91Y2ggc2NyZWVuLCBhbmQgd2Ugc2hvdWxkIG5vdCBoYXZlIHRvdWNo
IG1vY2tpbmcuCiAKQEAgLTEyMywxMSArMTE4LDIwIEBAIGJvb2wgTWluaUJyb3dzZXJBcHBsaWNh
dGlvbjo6bm90aWZ5KFFPYmplY3QqIHRhcmdldCwgUUV2ZW50KiBldmVudCkKICAgICAgICAgICAg
IGlmIChtX3RvdWNoUG9pbnRzLmNvbnRhaW5zKGlkKSkKICAgICAgICAgICAgICAgICBtX3RvdWNo
UG9pbnRzW2lkXS5zdGF0ZSA9IFF0OjpUb3VjaFBvaW50UmVsZWFzZWQ7CiAgICAgICAgIG1faGVs
ZFRvdWNoUG9pbnRzLmNsZWFyKCk7CisgICAgICAgIG1faG9sZGluZ0NvbnRyb2wgPSB0cnVlOwog
ICAgICAgICBzZW5kVG91Y2hFdmVudChicm93c2VyV2luZG93KTsKICAgICB9CiAKICAgICBpZiAo
aXNNb3VzZUV2ZW50KGV2ZW50KSkgewogICAgICAgICBjb25zdCBRTW91c2VFdmVudCogY29uc3Qg
bW91c2VFdmVudCA9IHN0YXRpY19jYXN0PFFNb3VzZUV2ZW50Kj4oZXZlbnQpOworICAgICAgICBt
X2hvbGRpbmdDb250cm9sID0gbW91c2VFdmVudC0+bW9kaWZpZXJzKCkudGVzdEZsYWcoUXQ6OkNv
bnRyb2xNb2RpZmllcik7CisKKyAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGlzIG5vdCBtZWFudCBm
b3IgdGhlIFdlYlZpZXcgc2VuZCBpdCBkaXJlY3RseSB0byB0aGUgdGFyZ2V0LgorICAgICAgICBp
ZiAoUVF1aWNrV2ViVmlldyogd2ViVmlldyA9IGJyb3dzZXJXaW5kb3ctPndlYlZpZXcoKSkgewor
ICAgICAgICAgICAgUVJlY3RGIHZpZXdwb3J0UmVjdCA9IHdlYlZpZXctPm1hcFJlY3RUb1NjZW5l
KHdlYlZpZXctPmJvdW5kaW5nUmVjdCgpKTsKKyAgICAgICAgICAgIGlmICh2aWV3cG9ydFJlY3Qu
aXNFbXB0eSgpIHx8ICF2aWV3cG9ydFJlY3QuY29udGFpbnMobW91c2VFdmVudC0+bG9jYWxQb3Mo
KSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFFHdWlBcHBsaWNhdGlvbjo6bm90aWZ5KHRhcmdl
dCwgZXZlbnQpOworICAgICAgICB9CiAKICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6
VG91Y2hQb2ludCB0b3VjaFBvaW50OwogICAgICAgICB0b3VjaFBvaW50LmFyZWEgPSBRUmVjdEYo
bW91c2VFdmVudC0+Z2xvYmFsUG9zKCkgLSBRUG9pbnRGKDMwLCA0MCksIFFTaXplRig2MCwgODAp
KTsKQEAgLTE0NCw3ICsxNDgsOCBAQCBib29sIE1pbmlCcm93c2VyQXBwbGljYXRpb246Om5vdGlm
eShRT2JqZWN0KiB0YXJnZXQsIFFFdmVudCogZXZlbnQpCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlTW92ZToKICAgICAgICAgICAgIGlmICghbW91c2VFdmVu
dC0+YnV0dG9ucygpIHx8ICFtX3RvdWNoUG9pbnRzLmNvbnRhaW5zKG1vdXNlRXZlbnQtPmJ1dHRv
bnMoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFFHdWlBcHBsaWNhdGlvbjo6bm90aWZ5KHRh
cmdldCwgZXZlbnQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgICAgICAg
ICB0b3VjaFBvaW50LmlkID0gbW91c2VFdmVudC0+YnV0dG9ucygpOwogICAgICAgICAgICAgdG91
Y2hQb2ludC5zdGF0ZSA9IFF0OjpUb3VjaFBvaW50TW92ZWQ7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTE1Myw3ICsxNTgsNyBAQCBib29sIE1pbmlCcm93c2VyQXBwbGljYXRpb246Om5vdGlmeShR
T2JqZWN0KiB0YXJnZXQsIFFFdmVudCogZXZlbnQpCiAgICAgICAgICAgICB0b3VjaFBvaW50Lmlk
ID0gbW91c2VFdmVudC0+YnV0dG9uKCk7CiAgICAgICAgICAgICBpZiAobV9ob2xkaW5nQ29udHJv
bCkgewogICAgICAgICAgICAgICAgIG1faGVsZFRvdWNoUG9pbnRzLmluc2VydCh0b3VjaFBvaW50
LmlkKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gUUd1aUFwcGxpY2F0aW9uOjpub3RpZnkodGFy
Z2V0LCBldmVudCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTE3MCw2ICsxNzUsNyBA
QCBib29sIE1pbmlCcm93c2VyQXBwbGljYXRpb246Om5vdGlmeShRT2JqZWN0KiB0YXJnZXQsIFFF
dmVudCogZXZlbnQpCiAgICAgICAgIH0KIAogICAgICAgICBzZW5kVG91Y2hFdmVudChicm93c2Vy
V2luZG93KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIFFHdWlB
cHBsaWNhdGlvbjo6bm90aWZ5KHRhcmdldCwgZXZlbnQpOwotLSAKMS43LjkuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129264</attachid>
            <date>2012-02-28 08:43:54 -0800</date>
            <delta_ts>2012-02-29 12:39:37 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>0001-Event-Delivery.patch</filename>
            <type>text/plain</type>
            <size>10365</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSAxYzk2YWUzYzY2YjcyYmE2MmY0NDBlZjU5ZjBkNjA5YTU1MDI5ODNhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+
CkRhdGU6IFR1ZSwgMjggRmViIDIwMTIgMTQ6NTk6MzYgKzAxMDAKU3ViamVjdDogW1BBVENIXSBF
dmVudCBEZWxpdmVyeQoKLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjIgKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RdEZsaWNrUHJvdmlkZXIuY3BwICAgIHwgICAzOSArKysrKysrKysrKysrKysrKysrLQog
Li4uL1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcCAgICAgICAgfCAgICAx
ICsKIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAyMCArKysrKysrKysrCiBUb29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcCAg
ICAgICAgICAgICB8ICAgMTAgKysrKystCiBUb29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2lu
ZG93LmggICAgICAgICAgICAgICB8ICAgIDIgKwogVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJy
b3dzZXJBcHBsaWNhdGlvbi5jcHAgICAgfCAgIDIxICsrKysrKystLS0tCiA3IGZpbGVzIGNoYW5n
ZWQsIDEwNSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjk1
MWZjZC4uNjlhZjFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAyLTI4ICBB
bmRyYXMgQmVjc2kgIDxhbmRyYXMuYmVjc2lAbm9raWEuY29tPgorCisgICAgICAgIFtRdF1bV0sy
XSBJbmZpbml0ZSBsb29wIG9uIGhpc3RvcnkgbmF2aWdhdGlvbiwgd2hlbiBwYW5uaW5nLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxMTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWNhdXNlIHRoZSBX
ZWJWaWV3IGl0ZW0gYWNjZXB0cyBhbGwgdG91Y2ggZXZlbnRzIGl0IHJlY2VpdmVzIGFuZCBzZW5k
cworICAgICAgICB0aGVtIHRvIHRoZSB3ZWIgcHJvY2VzcyBiZWZvcmUgcHJvcGFnYXRpbmcgdGhl
bSB0byB0aGUgZ2VzdHVyZSByZWNvZ25pemVycywKKyAgICAgICAgd2hpY2ggaXMgY29ycmVjdCBi
ZWhhdmlvdXIsIHdlIGNhbiBub3QgcmVseSBvbiB0aGUgdG91Y2gtPm1vdXNlIGNvbnZlcnNpb24K
KyAgICAgICAgb2YgUXQ1IHdoZW4gY29udHJvbGxpbmcgRmxpY2thYmxlLiBIZW5jZSB3ZSBuZWVk
IHRvIGNvbnZlcnQgdGhlIHJlY2VpdmVkCisgICAgICAgIHRvdWNoIGV2ZW50cyB0byBtb3VzZSBl
dmVudHMgaW4gdGhlIFF0RmxpY2tQcm92aWRlci4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVz
IHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBpbnRlcm5hbCBGbGlja2FibGUgb24gdGhlIE45Cisg
ICAgICAgIGFuZCAgbWFrZXMgdG91Y2ggbW9ja2luZyBtb3JlIHJvYnVzdCBvbiB0aGUgZGVza3Rv
cCBieSBvbmx5IGdlbmVyYXRpbmcKKyAgICAgICAgdG91Y2ggbW9jayBldmVudHMgZm9yIG1vdXNl
IGV2ZW50cyB0YXJnZXRpbmcgdGhlIFdlYlZpZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQv
UXRGbGlja1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFF0RmxpY2tQcm92aWRlcjo6aGFuZGxlVG91
Y2hGbGlja0V2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVjb2du
aXplci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0UGFuR2VzdHVyZVJlY29nbml6ZXI6OnJlY29n
bml6ZSk6CisKIDIwMTItMDItMjcgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNh
aW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBbUXRdIEFQSSBjaGFuZ2VzIHRv
IFFXZWJOYXZpZ2F0aW9uUmVxdWVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0RmxpY2tQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRGbGlja1Byb3ZpZGVyLmNwcAppbmRleCBjMWFmYTRhLi5iMzRiYmE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRGbGlja1Byb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRGbGlja1Byb3ZpZGVyLmNwcApAQCAtMjYsNyArMjYs
OSBAQAogCiAjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRRGVjbGFyYXRp
dmVFbmdpbmU+CisjaW5jbHVkZSA8UU1vdXNlRXZlbnQ+CiAjaW5jbHVkZSA8UVBvaW50Rj4KKyNp
bmNsdWRlIDxRUXVpY2tDYW52YXM+CiAjaW5jbHVkZSA8UVF1aWNrSXRlbT4KICNpbmNsdWRlIDxR
VG91Y2hFdmVudD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtMTE2LDkgKzExOCw0
MiBAQCBRdEZsaWNrUHJvdmlkZXI6OlF0RmxpY2tQcm92aWRlcihRUXVpY2tXZWJWaWV3KiB2aWV3
SXRlbSwgUVF1aWNrV2ViUGFnZSogcGFnZUl0ZQogICAgIGNvbm5lY3QobV9mbGlja2FibGUsIFNJ
R05BTChjb250ZW50WUNoYW5nZWQoKSksIFNJR05BTChjb250ZW50WUNoYW5nZWQoKSksIFF0OjpE
aXJlY3RDb25uZWN0aW9uKTsKIH0KIAotdm9pZCBRdEZsaWNrUHJvdmlkZXI6OmhhbmRsZVRvdWNo
RmxpY2tFdmVudChRVG91Y2hFdmVudCogZXZlbnQpCit2b2lkIFF0RmxpY2tQcm92aWRlcjo6aGFu
ZGxlVG91Y2hGbGlja0V2ZW50KFFUb3VjaEV2ZW50KiB0b3VjaEV2ZW50KQogewotICAgIFFDb3Jl
QXBwbGljYXRpb246OnNlbmRFdmVudChtX2ZsaWNrYWJsZSwgZXZlbnQpOworICAgIC8vIFNpbmNl
IHRoZSBGbGlja2FibGUgZG9lcyBub3QgaGFuZGxlIHRvdWNoIGV2ZW50cyBkaXJlY3RseSB0aGUg
c2VudAorICAgIC8vIHRvdWNoIGV2ZW50IHdvdWxkIGVuZCB1cCBpbiB0aGUgV2ViVmlldyBhZ2Fp
biBhbmQgd291bGQgdGh1cyB0cmlnZ2VyCisgICAgLy8gYW4gaW5maW5pdGUgbG9vcC4KKyAgICAv
LyBIZW5jZSBkbyB0aGUgdG91Y2ggdG8gbW91c2UgZXZlbnQgY29udmVyc2lvbiBmb3IgdGhlIEZs
aWNrYWJsZSBoZXJlLgorICAgIFFFdmVudDo6VHlwZSBtb3VzZUV2ZW50VHlwZSA9IFFFdmVudDo6
Tm9uZTsKKyAgICBRdDo6TW91c2VCdXR0b24gbW91c2VCdXR0b24gPSBRdDo6Tm9CdXR0b247CisK
KyAgICBzd2l0Y2ggKHRvdWNoRXZlbnQtPnR5cGUoKSkgeworICAgIGNhc2UgUUV2ZW50OjpUb3Vj
aEJlZ2luOgorICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFFFdmVudDo6TW91c2VCdXR0b25QcmVz
czsKKworICAgICAgICAvLyBXZSBuZWVkIHRvIHNldCB0aGUgbW91c2UgYnV0dG9uIHNvIHRoYXQg
dGhlIEZsaWNrYWJsZQorICAgICAgICAvLyBpdGVtIHJlY2VpdmVzIHRoZSBpbml0aWFsIG1vdXNl
IHByZXNzIGV2ZW50LgorICAgICAgICBtb3VzZUJ1dHRvbiA9IFF0OjpMZWZ0QnV0dG9uOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFFFdmVudDo6VG91Y2hVcGRhdGU6CisgICAgICAgIG1vdXNl
RXZlbnRUeXBlID0gUUV2ZW50OjpNb3VzZU1vdmU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UUV2ZW50OjpUb3VjaEVuZDoKKyAgICAgICAgbW91c2VFdmVudFR5cGUgPSBRRXZlbnQ6Ok1vdXNl
QnV0dG9uUmVsZWFzZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIFFQb2ludEYg
dG91Y2hQb3NpdGlvbiA9IHRvdWNoRXZlbnQtPnRvdWNoUG9pbnRzKCkubGFzdCgpLnBvcygpOwor
ICAgIFFNb3VzZUV2ZW50IG1vdXNlRXZlbnQobW91c2VFdmVudFR5cGUsIHRvdWNoUG9zaXRpb24s
IG1vdXNlQnV0dG9uLCBtb3VzZUJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIpOworCisgICAgLy8gU2Vu
ZCB0aGUgZXZlbnQgdG8gdGhlIGNhbnZhcyBhbmQgbGV0IHRoZSBjYW52YXMgcHJvcGFnYXRlIGl0
CisgICAgLy8gdG8gdGhlIEZsaWNrYWJsZS4gVGhpcyBtYWtlcyBzdXJlIHRoYXQgdGhlIEZsaWNr
YWJsZSBncmFicworICAgIC8vIHRoZSBtb3VzZSBzbyB0aGF0IGl0IGFsc28gcmVjZWl2ZXMgdGhl
IGV2ZW50cyBvZiBnZXN0dXJlcworICAgIC8vIHdoaWNoIHN0YXJ0ZWQgaW5zaWRlIHRoZSB2aWV3
cG9ydCBidXQgZW5kZWQgb3V0c2lkZSBvZiBpdC4KKyAgICBRQ29yZUFwcGxpY2F0aW9uOjpzZW5k
RXZlbnQobV9mbGlja2FibGUtPmNhbnZhcygpLCAmbW91c2VFdmVudCk7CiB9CiAKIFFRdWlja0l0
ZW0qIFF0RmxpY2tQcm92aWRlcjo6Y29udGVudEl0ZW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuY3BwCmluZGV4IDE3ODcz
OTEuLmJlMTdhYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBh
bkdlc3R1cmVSZWNvZ25pemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRQYW5HZXN0dXJlUmVjb2duaXplci5jcHAKQEAgLTYzLDYgKzYzLDcgQEAgYm9vbCBRdFBhbkdl
c3R1cmVSZWNvZ25pemVyOjpyZWNvZ25pemUoY29uc3QgUVRvdWNoRXZlbnQqIGV2ZW50KQogICAg
ICAgICBtX3N0YXRlID0gR2VzdHVyZVJlY29nbml0aW9uU3RhcnRlZDsKICAgICAgICAgbV9maXJz
dFBvc2l0aW9uID0gdG91Y2hQb2ludC5zY3JlZW5Qb3MoKTsKICAgICAgICAgbV90b3VjaEJlZ2lu
LnJlc2V0KG5ldyBRVG91Y2hFdmVudCgqZXZlbnQpKTsKKyAgICAgICAgaW50ZXJhY3Rpb25Fbmdp
bmUoKS0+cGFuR2VzdHVyZUNhbmNlbGxlZCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Y2FzZSBRRXZlbnQ6OlRvdWNoVXBkYXRlOiB7CiAgICAgICAgIEFTU0VSVChtX3N0YXRlICE9IE5v
R2VzdHVyZSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNTgzMjM5NS4uZDk0MzFlYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAyLTI4ICBBbmRyYXMgQmVj
c2kgIDxhbmRyYXMuYmVjc2lAbm9raWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBJbmZpbml0
ZSBsb29wIG9uIGhpc3RvcnkgbmF2aWdhdGlvbiwgd2hlbiBwYW5uaW5nLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxMTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHRoZSB0b3VjaCBtb2NraW5n
IG1vcmUgcm9idXN0IG9uIHRoZSBkZXNrdG9wIGJ5IG9ubHkgZ2VuZXJhdGluZworICAgICAgICB0
b3VjaCBtb2NrIGV2ZW50cyBmb3IgbW91c2UgZXZlbnRzIHRhcmdldGluZyB0aGUgV2ViVmlldywg
YW5kIG5vdAorICAgICAgICBwcm9wYWdhdGluZyB0aGUgbW91c2UgZXZlbnRzLgorCisgICAgICAg
ICogTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHA6CisgICAgICAgIChCcm93c2VyV2lu
ZG93OjpCcm93c2VyV2luZG93KTogUmVzb2x2ZSB0aGUgbWV0YSBwcm9wZXJ0eSBvZgorICAgICAg
ICB0aGUgV2ViVmlldyBpdGVtIHRvIGF2b2lkIG5lZWRsZXNzIHN0cmluZyBsb29rLXVwcy4KKyAg
ICAgICAgKEJyb3dzZXJXaW5kb3c6OndlYlZpZXcpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0
L0Jyb3dzZXJXaW5kb3cuaDoKKyAgICAgICAgKEJyb3dzZXJXaW5kb3cpOgorICAgICAgICAqIE1p
bmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uY3BwOgorICAgICAgICAoTWluaUJy
b3dzZXJBcHBsaWNhdGlvbjo6bm90aWZ5KToKKwogMjAxMi0wMi0yOCAgSsOhbm9zIEJhZGljcyAg
PGRpY3NrYUBnbWFpbC5jb20+CiAKICAgICAgICAgW1F0XSBidWlsZC13ZWJraXQgZG9lcyBub3Qg
ZGV0ZWN0IHRoZSBudW1iZXIgb2YgQ1BVcwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIv
cXQvQnJvd3NlcldpbmRvdy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93
LmNwcAppbmRleCA2MzljZDRmLi5kMzFmMjdiIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9Ccm93c2VyV2luZG93LmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2Vy
V2luZG93LmNwcApAQCAtNjMsMTEgKzYzLDE5IEBAIEJyb3dzZXJXaW5kb3c6OkJyb3dzZXJXaW5k
b3coV2luZG93T3B0aW9ucyogb3B0aW9ucykKICAgICAgICAgICAgIHJlc2l6ZShvcHRpb25zLT5y
ZXF1ZXN0ZWRXaW5kb3dTaXplKCkpOwogICAgICAgICBzaG93KCk7CiAgICAgfQorCisgICAgY29u
c3QgUU1ldGFPYmplY3QqIG1ldGFPYmplY3QgPSByb290T2JqZWN0KCktPm1ldGFPYmplY3QoKTsK
KyAgICBRX0FTU0VSVChtZXRhT2JqZWN0KTsKKworICAgIGludCBwcm9wZXJ0eUluZGV4ID0gbWV0
YU9iamVjdC0+aW5kZXhPZlByb3BlcnR5KCJ3ZWJ2aWV3Iik7CisgICAgUV9BU1NFUlQocHJvcGVy
dHlJbmRleCAhPSAtMSk7CisKKyAgICBtX3dlYlZpZXcgPSBtZXRhT2JqZWN0LT5wcm9wZXJ0eShw
cm9wZXJ0eUluZGV4KTsKIH0KIAogUVF1aWNrV2ViVmlldyogQnJvd3NlcldpbmRvdzo6d2ViVmll
dygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJvb3RPYmplY3QoKS0+cHJvcGVydHkoIndlYnZpZXci
KS52YWx1ZTxRUXVpY2tXZWJWaWV3Kj4oKTsKKyAgICByZXR1cm4gbV93ZWJWaWV3LnJlYWQocm9v
dE9iamVjdCgpKS52YWx1ZTxRUXVpY2tXZWJWaWV3Kj4oKTsKIH0KIAogdm9pZCBCcm93c2VyV2lu
ZG93Ojpsb2FkKGNvbnN0IFFTdHJpbmcmIHVybCkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93
c2VyL3F0L0Jyb3dzZXJXaW5kb3cuaCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5k
b3cuaAppbmRleCBkNmNhMGE2Li40MmU0MGZlIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9Ccm93c2VyV2luZG93LmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3Nlcldp
bmRvdy5oCkBAIC01Niw2ICs1Niw4IEBAIHByb3RlY3RlZCBzbG90czoKIAogcHJpdmF0ZToKICAg
ICB2b2lkIHVwZGF0ZVVzZXJBZ2VudExpc3QoKTsKKworICAgIFFNZXRhUHJvcGVydHkgbV93ZWJW
aWV3OwogICAgIFdpbmRvd09wdGlvbnMqIG1fd2luZG93T3B0aW9uczsKICAgICBRU3RyaW5nTGlz
dCBtX3VzZXJBZ2VudExpc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQv
TWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJv
d3NlckFwcGxpY2F0aW9uLmNwcAppbmRleCAyZWM5NWFkLi5hMGU3MjgyIDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcAorKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcApAQCAtODAsMTEgKzgw
LDYgQEAgTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6TWluaUJyb3dzZXJBcHBsaWNhdGlvbihpbnQm
IGFyZ2MsIGNoYXIqKiBhcmd2KQogCiBib29sIE1pbmlCcm93c2VyQXBwbGljYXRpb246Om5vdGlm
eShRT2JqZWN0KiB0YXJnZXQsIFFFdmVudCogZXZlbnQpCiB7Ci0gICAgaWYoUUlucHV0RXZlbnQq
IGllID0gc3RhdGljX2Nhc3Q8UUlucHV0RXZlbnQqPihldmVudCkpCi0gICAgICAgIG1faG9sZGlu
Z0NvbnRyb2wgPSBpZS0+bW9kaWZpZXJzKCkudGVzdEZsYWcoUXQ6OkNvbnRyb2xNb2RpZmllcik7
Ci0gICAgZWxzZQotICAgICAgICBtX2hvbGRpbmdDb250cm9sID0gZmFsc2U7Ci0KICAgICAvLyBX
ZSB0cnkgdG8gYmUgc21hcnQsIGlmIHdlIHJlY2VpdmVkIHJlYWwgdG91Y2ggZXZlbnQsIHdlIGFy
ZSBwcm9iYWJseSBvbiBhIGRldmljZQogICAgIC8vIHdpdGggdG91Y2ggc2NyZWVuLCBhbmQgd2Ug
c2hvdWxkIG5vdCBoYXZlIHRvdWNoIG1vY2tpbmcuCiAKQEAgLTEyMywxMSArMTE4LDIxIEBAIGJv
b2wgTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6bm90aWZ5KFFPYmplY3QqIHRhcmdldCwgUUV2ZW50
KiBldmVudCkKICAgICAgICAgICAgIGlmIChtX3RvdWNoUG9pbnRzLmNvbnRhaW5zKGlkKSkKICAg
ICAgICAgICAgICAgICBtX3RvdWNoUG9pbnRzW2lkXS5zdGF0ZSA9IFF0OjpUb3VjaFBvaW50UmVs
ZWFzZWQ7CiAgICAgICAgIG1faGVsZFRvdWNoUG9pbnRzLmNsZWFyKCk7CisgICAgICAgIG1faG9s
ZGluZ0NvbnRyb2wgPSB0cnVlOwogICAgICAgICBzZW5kVG91Y2hFdmVudChicm93c2VyV2luZG93
KTsKICAgICB9CiAKICAgICBpZiAoaXNNb3VzZUV2ZW50KGV2ZW50KSkgewogICAgICAgICBjb25z
dCBRTW91c2VFdmVudCogY29uc3QgbW91c2VFdmVudCA9IHN0YXRpY19jYXN0PFFNb3VzZUV2ZW50
Kj4oZXZlbnQpOworICAgICAgICBtX2hvbGRpbmdDb250cm9sID0gbW91c2VFdmVudC0+bW9kaWZp
ZXJzKCkudGVzdEZsYWcoUXQ6OkNvbnRyb2xNb2RpZmllcik7CisKKyAgICAgICAgLy8gQ2hlY2sg
d2hldGhlciB0aGUgZXZlbnQgcG9zaXRpb24gaXMgd2l0aGluIHRoZSBib3VuZGluZyByZWN0IG9m
IHRoZSBXZWJWaWV3CisgICAgICAgIC8vIGFuZCBpZiB0aGUgZXZlbnQgaXMgbm90IG1lYW50IGZv
ciB0aGUgV2ViVmlldywgc2VuZCBpdCBkaXJlY3RseSB0byBpdHMgdGFyZ2V0LgorICAgICAgICBp
ZiAoUVF1aWNrV2ViVmlldyogd2ViVmlldyA9IGJyb3dzZXJXaW5kb3ctPndlYlZpZXcoKSkgewor
ICAgICAgICAgICAgUVJlY3RGIHZpZXdwb3J0UmVjdCA9IHdlYlZpZXctPm1hcFJlY3RUb1NjZW5l
KHdlYlZpZXctPmJvdW5kaW5nUmVjdCgpKTsKKyAgICAgICAgICAgIGlmICh2aWV3cG9ydFJlY3Qu
aXNFbXB0eSgpIHx8ICF2aWV3cG9ydFJlY3QuY29udGFpbnMobW91c2VFdmVudC0+bG9jYWxQb3Mo
KSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFFHdWlBcHBsaWNhdGlvbjo6bm90aWZ5KHRhcmdl
dCwgZXZlbnQpOworICAgICAgICB9CiAKICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6
VG91Y2hQb2ludCB0b3VjaFBvaW50OwogICAgICAgICB0b3VjaFBvaW50LmFyZWEgPSBRUmVjdEYo
bW91c2VFdmVudC0+Z2xvYmFsUG9zKCkgLSBRUG9pbnRGKDMwLCA0MCksIFFTaXplRig2MCwgODAp
KTsKQEAgLTE0NCw3ICsxNDksOCBAQCBib29sIE1pbmlCcm93c2VyQXBwbGljYXRpb246Om5vdGlm
eShRT2JqZWN0KiB0YXJnZXQsIFFFdmVudCogZXZlbnQpCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlTW92ZToKICAgICAgICAgICAgIGlmICghbW91c2VFdmVu
dC0+YnV0dG9ucygpIHx8ICFtX3RvdWNoUG9pbnRzLmNvbnRhaW5zKG1vdXNlRXZlbnQtPmJ1dHRv
bnMoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFFHdWlBcHBsaWNhdGlvbjo6bm90aWZ5KHRh
cmdldCwgZXZlbnQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgICAgICAg
ICB0b3VjaFBvaW50LmlkID0gbW91c2VFdmVudC0+YnV0dG9ucygpOwogICAgICAgICAgICAgdG91
Y2hQb2ludC5zdGF0ZSA9IFF0OjpUb3VjaFBvaW50TW92ZWQ7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTE1Myw3ICsxNTksNyBAQCBib29sIE1pbmlCcm93c2VyQXBwbGljYXRpb246Om5vdGlmeShR
T2JqZWN0KiB0YXJnZXQsIFFFdmVudCogZXZlbnQpCiAgICAgICAgICAgICB0b3VjaFBvaW50Lmlk
ID0gbW91c2VFdmVudC0+YnV0dG9uKCk7CiAgICAgICAgICAgICBpZiAobV9ob2xkaW5nQ29udHJv
bCkgewogICAgICAgICAgICAgICAgIG1faGVsZFRvdWNoUG9pbnRzLmluc2VydCh0b3VjaFBvaW50
LmlkKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gUUd1aUFwcGxpY2F0aW9uOjpub3RpZnkodGFy
Z2V0LCBldmVudCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTE3MCw2ICsxNzYsNyBA
QCBib29sIE1pbmlCcm93c2VyQXBwbGljYXRpb246Om5vdGlmeShRT2JqZWN0KiB0YXJnZXQsIFFF
dmVudCogZXZlbnQpCiAgICAgICAgIH0KIAogICAgICAgICBzZW5kVG91Y2hFdmVudChicm93c2Vy
V2luZG93KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIFFHdWlB
cHBsaWNhdGlvbjo6bm90aWZ5KHRhcmdldCwgZXZlbnQpOwotLSAKMS43LjkuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129712</attachid>
            <date>2012-03-01 08:45:27 -0800</date>
            <delta_ts>2012-03-02 04:27:59 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>0001-Qt-WK2-Infinite-loop.patch</filename>
            <type>text/plain</type>
            <size>13650</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSAxZTY3OTAwMjlkNTNiMjg0NmM5YjZiNDRjNGEzYzU1YjZmOTA5MTQyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+
CkRhdGU6IFRodSwgMSBNYXIgMjAxMiAxNzoyNTowMiArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIFtR
dF1bV0syXSBJbmZpbml0ZSBsb29wCgotLS0KIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAyNiArKysrKysKIFRvb2xzL01pbmlCcm93c2VyL3F0L0Jy
b3dzZXJXaW5kb3cuY3BwICAgICAgICAgIHwgICAyMyArKy0tLQogVG9vbHMvTWluaUJyb3dzZXIv
cXQvQnJvd3NlcldpbmRvdy5oICAgICAgICAgICAgfCAgICAyICstCiBUb29scy9NaW5pQnJvd3Nl
ci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcCB8ICAxMDkgKysrKysrKysrKysrKysrKy0t
LS0tLS0KIFRvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uaCAgIHwg
ICAgNCArLQogNSBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGQ5OGU0YmEuLmQwMmUzZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0wMy0wMSAgQW5kcmFzIEJlY3NpICA8
YW5kcmFzLmJlY3NpQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gSW5maW5pdGUgbG9v
cCBvbiBoaXN0b3J5IG5hdmlnYXRpb24sIHdoZW4gcGFubmluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxMTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHRoZSB0b3VjaCBtb2NraW5nIG1vcmUg
cm9idXN0IGJ5IGNyZWF0aW5nIHRvdWNoIGV2ZW50cworICAgICAgICBkaXJlY3RseSBhbmQgc2Vu
ZGluZyB0aGVtIHN5bmNocm9ub3VzbHkgdG8gdGhlIGJyb3dzZXIgd2luZG93LgorICAgICAgICBJ
ZiB0aGUgc2VudCB0b3VjaCBldmVudCB3YXMgbm90IGFjY2VwdGVkIHdlIHByb3BhZ2F0ZSB0aGUK
KyAgICAgICAgb3JpZ2luYWwgbW91c2UgZXZlbnQgdG8gaXRzIHRhcmdldC4KKyAgICAgICAgVGhp
cyB3YXkgd2UgbWFrZSBzdXJlIHdlIG9ubHkgc2VuZCBlaXRoZXIgYSB0b3VjaCBvciBhIG1vdXNl
CisgICAgICAgIGV2ZW50IGFuZCBkbyBub3QgZW5kIHVwIGluIGFuIGluZmluaXRlIGxvb3AgYmV0
d2VlbiBvdXIgbW9ja2luZworICAgICAgICBjb2RlIGFuZCB0aGUgUXQ1IGF1dG9tYXRpYyBtb3Vz
ZSBldmVudCBzeW50aGVzaXppbmcuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Ccm93c2Vy
V2luZG93LmNwcDoKKyAgICAgICAgKEJyb3dzZXJXaW5kb3c6OnVwZGF0ZVZpc3VhbE1vY2tUb3Vj
aFBvaW50cyk6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oOgorICAg
ICAgICAoQnJvd3NlcldpbmRvdyk6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvTWluaUJyb3dz
ZXJBcHBsaWNhdGlvbi5jcHA6CisgICAgICAgICh0b3VjaFJlY3RGb3JQb3NpdGlvbik6CisgICAg
ICAgIChNaW5pQnJvd3NlckFwcGxpY2F0aW9uOjpub3RpZnkpOgorICAgICAgICAoTWluaUJyb3dz
ZXJBcHBsaWNhdGlvbjo6c2VuZFRvdWNoRXZlbnQpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0
L01pbmlCcm93c2VyQXBwbGljYXRpb24uaDoKKyAgICAgICAgKE1pbmlCcm93c2VyQXBwbGljYXRp
b24pOgorCiAyMDEyLTAyLTI5ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4K
IAogICAgICAgICBbUXRdW1dLMl0gV2ViS2l0VGVzdFJ1bm5lciBzaG91bGQgdXNlIDQ4MHgzNjAg
c2l6ZWQgdmlldyBmb3IgVzNDIFNWRyB0ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dz
ZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2lu
ZG93LmNwcAppbmRleCA2MzljZDRmLi44OTc5MTY3IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJv
d3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93
c2VyV2luZG93LmNwcApAQCAtOTMsMzAgKzkzLDI3IEBAIEJyb3dzZXJXaW5kb3cqIEJyb3dzZXJX
aW5kb3c6Om5ld1dpbmRvdyhjb25zdCBRU3RyaW5nJiB1cmwpCiAgICAgcmV0dXJuIHdpbmRvdzsK
IH0KIAotdm9pZCBCcm93c2VyV2luZG93Ojp1cGRhdGVWaXN1YWxNb2NrVG91Y2hQb2ludHMoY29u
c3QgUUxpc3Q8UVdpbmRvd1N5c3RlbUludGVyZmFjZTo6VG91Y2hQb2ludD4mIHRvdWNoUG9pbnRz
KQordm9pZCBCcm93c2VyV2luZG93Ojp1cGRhdGVWaXN1YWxNb2NrVG91Y2hQb2ludHMoY29uc3Qg
UUxpc3Q8UVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQ+JiB0b3VjaFBvaW50cykKIHsKLSAgICBmb3Jl
YWNoIChjb25zdCBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpUb3VjaFBvaW50JiB0b3VjaFBvaW50
LCB0b3VjaFBvaW50cykgewotICAgICAgICBRU3RyaW5nIG1vY2tUb3VjaFBvaW50SWRlbnRpZmll
ciA9IFFTdHJpbmcoIm1vY2tUb3VjaFBvaW50JTEiKS5hcmcodG91Y2hQb2ludC5pZCk7CisgICAg
Zm9yZWFjaCAoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIHRvdWNo
UG9pbnRzKSB7CisgICAgICAgIFFTdHJpbmcgbW9ja1RvdWNoUG9pbnRJZGVudGlmaWVyID0gUVN0
cmluZygibW9ja1RvdWNoUG9pbnQlMSIpLmFyZyh0b3VjaFBvaW50LmlkKCkpOwogICAgICAgICBR
UXVpY2tJdGVtKiBtb2NrVG91Y2hQb2ludEl0ZW0gPSByb290T2JqZWN0KCktPmZpbmRDaGlsZDxR
UXVpY2tJdGVtKj4obW9ja1RvdWNoUG9pbnRJZGVudGlmaWVyLCBRdDo6RmluZERpcmVjdENoaWxk
cmVuT25seSk7CiAKICAgICAgICAgaWYgKCFtb2NrVG91Y2hQb2ludEl0ZW0pIHsKICAgICAgICAg
ICAgIFFEZWNsYXJhdGl2ZUNvbXBvbmVudCB0b3VjaE1vY2tQb2ludENvbXBvbmVudChlbmdpbmUo
KSwgUVVybCgicXJjOi9xbWwvTW9ja1RvdWNoUG9pbnQucW1sIikpOwogICAgICAgICAgICAgbW9j
a1RvdWNoUG9pbnRJdGVtID0gcW9iamVjdF9jYXN0PFFRdWlja0l0ZW0qPih0b3VjaE1vY2tQb2lu
dENvbXBvbmVudC5jcmVhdGUoKSk7CiAgICAgICAgICAgICBtb2NrVG91Y2hQb2ludEl0ZW0tPnNl
dE9iamVjdE5hbWUobW9ja1RvdWNoUG9pbnRJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIG1vY2tU
b3VjaFBvaW50SXRlbS0+c2V0UHJvcGVydHkoInBvaW50SWQiLCBRVmFyaWFudCh0b3VjaFBvaW50
LmlkKSk7CisgICAgICAgICAgICBtb2NrVG91Y2hQb2ludEl0ZW0tPnNldFByb3BlcnR5KCJwb2lu
dElkIiwgUVZhcmlhbnQodG91Y2hQb2ludC5pZCgpKSk7CiAgICAgICAgICAgICBtb2NrVG91Y2hQ
b2ludEl0ZW0tPnNldFBhcmVudChyb290T2JqZWN0KCkpOwogICAgICAgICAgICAgbW9ja1RvdWNo
UG9pbnRJdGVtLT5zZXRQYXJlbnRJdGVtKHJvb3RPYmplY3QoKSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBRUG9pbnRGIHBvc2l0aW9uID0gdG91Y2hQb2ludC5hcmVhLmNlbnRlcigpOwotICAgICAg
ICBwb3NpdGlvbi5yeCgpIC09IGdlb21ldHJ5KCkueCgpOwotICAgICAgICBwb3NpdGlvbi5yeSgp
IC09IGdlb21ldHJ5KCkueSgpOwotCi0gICAgICAgIG1vY2tUb3VjaFBvaW50SXRlbS0+c2V0WChw
b3NpdGlvbi54KCkpOwotICAgICAgICBtb2NrVG91Y2hQb2ludEl0ZW0tPnNldFkocG9zaXRpb24u
eSgpKTsKLSAgICAgICAgbW9ja1RvdWNoUG9pbnRJdGVtLT5zZXRXaWR0aCh0b3VjaFBvaW50LmFy
ZWEud2lkdGgoKSk7Ci0gICAgICAgIG1vY2tUb3VjaFBvaW50SXRlbS0+c2V0SGVpZ2h0KHRvdWNo
UG9pbnQuYXJlYS5oZWlnaHQoKSk7Ci0gICAgICAgIG1vY2tUb3VjaFBvaW50SXRlbS0+c2V0UHJv
cGVydHkoInByZXNzZWQiLCBRVmFyaWFudCh0b3VjaFBvaW50LnN0YXRlICE9IFF0OjpUb3VjaFBv
aW50UmVsZWFzZWQpKTsKKyAgICAgICAgUVJlY3RGIHRvdWNoUmVjdCA9IHRvdWNoUG9pbnQucmVj
dCgpOworICAgICAgICBtb2NrVG91Y2hQb2ludEl0ZW0tPnNldFgodG91Y2hSZWN0LmNlbnRlcigp
LngoKSk7CisgICAgICAgIG1vY2tUb3VjaFBvaW50SXRlbS0+c2V0WSh0b3VjaFJlY3QuY2VudGVy
KCkueSgpKTsKKyAgICAgICAgbW9ja1RvdWNoUG9pbnRJdGVtLT5zZXRXaWR0aCh0b3VjaFJlY3Qu
d2lkdGgoKSk7CisgICAgICAgIG1vY2tUb3VjaFBvaW50SXRlbS0+c2V0SGVpZ2h0KHRvdWNoUmVj
dC5oZWlnaHQoKSk7CisgICAgICAgIG1vY2tUb3VjaFBvaW50SXRlbS0+c2V0UHJvcGVydHkoInBy
ZXNzZWQiLCBRVmFyaWFudCh0b3VjaFBvaW50LnN0YXRlKCkgIT0gUXQ6OlRvdWNoUG9pbnRSZWxl
YXNlZCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJv
d3NlcldpbmRvdy5oIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oCmluZGV4
IGQ2Y2EwYTYuLjAxNTYxNjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dz
ZXJXaW5kb3cuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9jdXNBZGRyZXNzQmFyKCk7CiAgICAg
UVF1aWNrV2ViVmlldyogd2ViVmlldygpIGNvbnN0OwogCi0gICAgdm9pZCB1cGRhdGVWaXN1YWxN
b2NrVG91Y2hQb2ludHMoY29uc3QgUUxpc3Q8UVdpbmRvd1N5c3RlbUludGVyZmFjZTo6VG91Y2hQ
b2ludD4mIHRvdWNoUG9pbnRzKTsKKyAgICB2b2lkIHVwZGF0ZVZpc3VhbE1vY2tUb3VjaFBvaW50
cyhjb25zdCBRTGlzdDxRVG91Y2hFdmVudDo6VG91Y2hQb2ludD4mIHRvdWNoUG9pbnRzKTsKIAog
cHVibGljIHNsb3RzOgogICAgIEJyb3dzZXJXaW5kb3cqIG5ld1dpbmRvdyhjb25zdCBRU3RyaW5n
JiB1cmwgPSAiYWJvdXQ6YmxhbmsiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0
L01pbmlCcm93c2VyQXBwbGljYXRpb24uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJy
b3dzZXJBcHBsaWNhdGlvbi5jcHAKaW5kZXggMmVjOTVhZC4uMDM5YjdmNSAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAKKysrIGIvVG9v
bHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAKQEAgLTM2LDYgKzM2
LDEzIEBACiAjaW5jbHVkZSA8UU1vdXNlRXZlbnQ+CiAjaW5jbHVkZSA8UVRvdWNoRXZlbnQ+CiAK
K3N0YXRpYyBpbmxpbmUgY29uc3QgUVJlY3RGJiB0b3VjaFJlY3RGb3JQb3NpdGlvbihRUG9pbnRG
IGNlbnRlclBvaW50KQoreworICAgIHN0YXRpYyBRUmVjdEYgdG91Y2hSZWN0KDAsIDAsIDQwLCA0
MCk7CisgICAgdG91Y2hSZWN0Lm1vdmVDZW50ZXIoY2VudGVyUG9pbnQpOworICAgIHJldHVybiB0
b3VjaFJlY3Q7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1RvdWNoRXZlbnQoY29uc3QgUUV2
ZW50KiBldmVudCkKIHsKICAgICBzd2l0Y2ggKGV2ZW50LT50eXBlKCkpIHsKQEAgLTgwLDExICs4
Nyw2IEBAIE1pbmlCcm93c2VyQXBwbGljYXRpb246Ok1pbmlCcm93c2VyQXBwbGljYXRpb24oaW50
JiBhcmdjLCBjaGFyKiogYXJndikKIAogYm9vbCBNaW5pQnJvd3NlckFwcGxpY2F0aW9uOjpub3Rp
ZnkoUU9iamVjdCogdGFyZ2V0LCBRRXZlbnQqIGV2ZW50KQogewotICAgIGlmKFFJbnB1dEV2ZW50
KiBpZSA9IHN0YXRpY19jYXN0PFFJbnB1dEV2ZW50Kj4oZXZlbnQpKQotICAgICAgICBtX2hvbGRp
bmdDb250cm9sID0gaWUtPm1vZGlmaWVycygpLnRlc3RGbGFnKFF0OjpDb250cm9sTW9kaWZpZXIp
OwotICAgIGVsc2UKLSAgICAgICAgbV9ob2xkaW5nQ29udHJvbCA9IGZhbHNlOwotCiAgICAgLy8g
V2UgdHJ5IHRvIGJlIHNtYXJ0LCBpZiB3ZSByZWNlaXZlZCByZWFsIHRvdWNoIGV2ZW50LCB3ZSBh
cmUgcHJvYmFibHkgb24gYSBkZXZpY2UKICAgICAvLyB3aXRoIHRvdWNoIHNjcmVlbiwgYW5kIHdl
IHNob3VsZCBub3QgaGF2ZSB0b3VjaCBtb2NraW5nLgogCkBAIC0xMjEsMzkgKzEyMyw2NCBAQCBi
b29sIE1pbmlCcm93c2VyQXBwbGljYXRpb246Om5vdGlmeShRT2JqZWN0KiB0YXJnZXQsIFFFdmVu
dCogZXZlbnQpCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpLZXlSZWxlYXNlICYm
IHN0YXRpY19jYXN0PFFLZXlFdmVudCo+KGV2ZW50KS0+a2V5KCkgPT0gUXQ6OktleV9Db250cm9s
KSB7CiAgICAgICAgIGZvcmVhY2ggKGludCBpZCwgbV9oZWxkVG91Y2hQb2ludHMpCiAgICAgICAg
ICAgICBpZiAobV90b3VjaFBvaW50cy5jb250YWlucyhpZCkpCi0gICAgICAgICAgICAgICAgbV90
b3VjaFBvaW50c1tpZF0uc3RhdGUgPSBRdDo6VG91Y2hQb2ludFJlbGVhc2VkOworICAgICAgICAg
ICAgICAgIG1fdG91Y2hQb2ludHNbaWRdLnNldFN0YXRlKFF0OjpUb3VjaFBvaW50UmVsZWFzZWQp
OwogICAgICAgICBtX2hlbGRUb3VjaFBvaW50cy5jbGVhcigpOwotICAgICAgICBzZW5kVG91Y2hF
dmVudChicm93c2VyV2luZG93KTsKKyAgICAgICAgbV9ob2xkaW5nQ29udHJvbCA9IHRydWU7Cisg
ICAgICAgIGlmICghc2VuZFRvdWNoRXZlbnQoYnJvd3NlcldpbmRvdywgUUV2ZW50OjpUb3VjaEVu
ZCwgc3RhdGljX2Nhc3Q8UUtleUV2ZW50Kj4oZXZlbnQpLT50aW1lc3RhbXAoKSkpCisgICAgICAg
ICAgICByZXR1cm4gUUd1aUFwcGxpY2F0aW9uOjpub3RpZnkodGFyZ2V0LCBldmVudCk7CisKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgaWYgKGlzTW91c2VFdmVudChldmVudCkp
IHsKICAgICAgICAgY29uc3QgUU1vdXNlRXZlbnQqIGNvbnN0IG1vdXNlRXZlbnQgPSBzdGF0aWNf
Y2FzdDxRTW91c2VFdmVudCo+KGV2ZW50KTsKKyAgICAgICAgbV9ob2xkaW5nQ29udHJvbCA9IG1v
dXNlRXZlbnQtPm1vZGlmaWVycygpLnRlc3RGbGFnKFF0OjpDb250cm9sTW9kaWZpZXIpOworCisg
ICAgICAgIFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50IHRvdWNoUG9pbnQ7CisKKyAgICAgICAgdG91
Y2hQb2ludC5zZXRSZWN0KHRvdWNoUmVjdEZvclBvc2l0aW9uKG1vdXNlRXZlbnQtPmxvY2FsUG9z
KCkpKTsKKyAgICAgICAgc3RhdGljIFFQb2ludEYgbGFzdFBvczsKKyAgICAgICAgdG91Y2hQb2lu
dC5zZXRMYXN0UG9zKGxhc3RQb3MpOworICAgICAgICBsYXN0UG9zID0gbW91c2VFdmVudC0+cG9z
KCk7CisKKyAgICAgICAgLy8gR2VzdHVyZSByZWNvZ25pdGlvbiB1c2VzIHRoZSBzY3JlZW4gcG9z
aXRpb24gZm9yIHRoZSBpbml0aWFsIHRocmVzaG9sZAorICAgICAgICAvLyBidXQgc2luY2UgdGhl
IGNhbnZhcyB0cmFuc2xhdGVzIHRvdWNoIGV2ZW50cyB3ZSBhY3R1YWxseSBuZWVkIHRvIHNldAor
ICAgICAgICAvLyB0aGUgc2NlbmUgcmVjdCB0byBkZWxpdmVyIHRoZSBhcHByb3ByaWF0ZSBjb29y
ZGluYXRlcyB0byB0aGUgdGFyZ2V0LgorICAgICAgICB0b3VjaFBvaW50LnNldFNjZW5lUmVjdCh0
b3VjaFJlY3RGb3JQb3NpdGlvbihtb3VzZUV2ZW50LT5zY3JlZW5Qb3MoKSkpOworICAgICAgICBz
dGF0aWMgUVBvaW50RiBsYXN0U2NlbmVQb3M7CisgICAgICAgIHRvdWNoUG9pbnQuc2V0TGFzdFNj
ZW5lUG9zKGxhc3RTY2VuZVBvcyk7CisgICAgICAgIGxhc3RTY2VuZVBvcyA9IG1vdXNlRXZlbnQt
PnNjcmVlblBvcygpOworICAgICAgICB0b3VjaFBvaW50LnNldFByZXNzdXJlKDEpOworCisgICAg
ICAgIFFFdmVudDo6VHlwZSB0b3VjaFR5cGUgPSBRRXZlbnQ6Ok5vbmU7CiAKLSAgICAgICAgUVdp
bmRvd1N5c3RlbUludGVyZmFjZTo6VG91Y2hQb2ludCB0b3VjaFBvaW50OwotICAgICAgICB0b3Vj
aFBvaW50LmFyZWEgPSBRUmVjdEYobW91c2VFdmVudC0+Z2xvYmFsUG9zKCkgLSBRUG9pbnRGKDMw
LCA0MCksIFFTaXplRig2MCwgODApKTsKLSAgICAgICAgdG91Y2hQb2ludC5wcmVzc3VyZSA9IDE7
CiAKICAgICAgICAgc3dpdGNoIChtb3VzZUV2ZW50LT50eXBlKCkpIHsKICAgICAgICAgY2FzZSBR
RXZlbnQ6Ok1vdXNlQnV0dG9uUHJlc3M6CiAgICAgICAgIGNhc2UgUUV2ZW50OjpNb3VzZUJ1dHRv
bkRibENsaWNrOgotICAgICAgICAgICAgdG91Y2hQb2ludC5pZCA9IG1vdXNlRXZlbnQtPmJ1dHRv
bigpOwotICAgICAgICAgICAgaWYgKG1fdG91Y2hQb2ludHMuY29udGFpbnModG91Y2hQb2ludC5p
ZCkpCi0gICAgICAgICAgICAgICAgdG91Y2hQb2ludC5zdGF0ZSA9IFF0OjpUb3VjaFBvaW50TW92
ZWQ7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdG91Y2hQb2ludC5zdGF0ZSA9
IFF0OjpUb3VjaFBvaW50UHJlc3NlZDsKKyAgICAgICAgICAgIHRvdWNoUG9pbnQuc2V0SWQobW91
c2VFdmVudC0+YnV0dG9uKCkpOworICAgICAgICAgICAgaWYgKG1fdG91Y2hQb2ludHMuY29udGFp
bnModG91Y2hQb2ludC5pZCgpKSkgeworICAgICAgICAgICAgICAgIHRvdWNoUG9pbnQuc2V0U3Rh
dGUoUXQ6OlRvdWNoUG9pbnRNb3ZlZCk7CisgICAgICAgICAgICAgICAgdG91Y2hUeXBlID0gUUV2
ZW50OjpUb3VjaFVwZGF0ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
dG91Y2hQb2ludC5zZXRTdGF0ZShRdDo6VG91Y2hQb2ludFByZXNzZWQpOworICAgICAgICAgICAg
ICAgIHRvdWNoVHlwZSA9IFFFdmVudDo6VG91Y2hCZWdpbjsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFFFdmVudDo6TW91c2VNb3ZlOgorICAgICAgICAg
ICAgdG91Y2hUeXBlID0gUUV2ZW50OjpUb3VjaFVwZGF0ZTsKICAgICAgICAgICAgIGlmICghbW91
c2VFdmVudC0+YnV0dG9ucygpIHx8ICFtX3RvdWNoUG9pbnRzLmNvbnRhaW5zKG1vdXNlRXZlbnQt
PmJ1dHRvbnMoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFFHdWlBcHBsaWNhdGlvbjo6bm90
aWZ5KHRhcmdldCwgZXZlbnQpOwotICAgICAgICAgICAgdG91Y2hQb2ludC5pZCA9IG1vdXNlRXZl
bnQtPmJ1dHRvbnMoKTsKLSAgICAgICAgICAgIHRvdWNoUG9pbnQuc3RhdGUgPSBRdDo6VG91Y2hQ
b2ludE1vdmVkOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgdG91
Y2hQb2ludC5zZXRJZChtb3VzZUV2ZW50LT5idXR0b25zKCkpOworICAgICAgICAgICAgdG91Y2hQ
b2ludC5zZXRTdGF0ZShRdDo6VG91Y2hQb2ludE1vdmVkKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25SZWxlYXNlOgotICAgICAgICAgICAgdG91
Y2hQb2ludC5zdGF0ZSA9IFF0OjpUb3VjaFBvaW50UmVsZWFzZWQ7Ci0gICAgICAgICAgICB0b3Vj
aFBvaW50LmlkID0gbW91c2VFdmVudC0+YnV0dG9uKCk7CisgICAgICAgICAgICB0b3VjaFR5cGUg
PSBRRXZlbnQ6OlRvdWNoRW5kOworICAgICAgICAgICAgdG91Y2hQb2ludC5zZXRTdGF0ZShRdDo6
VG91Y2hQb2ludFJlbGVhc2VkKTsKKyAgICAgICAgICAgIHRvdWNoUG9pbnQuc2V0SWQobW91c2VF
dmVudC0+YnV0dG9uKCkpOwogICAgICAgICAgICAgaWYgKG1faG9sZGluZ0NvbnRyb2wpIHsKLSAg
ICAgICAgICAgICAgICBtX2hlbGRUb3VjaFBvaW50cy5pbnNlcnQodG91Y2hQb2ludC5pZCk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIFFHdWlBcHBsaWNhdGlvbjo6bm90aWZ5KHRhcmdldCwgZXZl
bnQpOworICAgICAgICAgICAgICAgIG1faGVsZFRvdWNoUG9pbnRzLmluc2VydCh0b3VjaFBvaW50
LmlkKCkpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xNjEsMjEgKzE4OCwyNCBAQCBi
b29sIE1pbmlCcm93c2VyQXBwbGljYXRpb246Om5vdGlmeShRT2JqZWN0KiB0YXJnZXQsIFFFdmVu
dCogZXZlbnQpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBVcGRhdGUgY3VycmVudCB0b3VjaC1w
b2ludAotICAgICAgICBtX3RvdWNoUG9pbnRzLmluc2VydCh0b3VjaFBvaW50LmlkLCB0b3VjaFBv
aW50KTsKKyAgICAgICAgbV90b3VjaFBvaW50cy5pbnNlcnQodG91Y2hQb2ludC5pZCgpLCB0b3Vj
aFBvaW50KTsKIAogICAgICAgICAvLyBVcGRhdGUgc3RhdGVzIGZvciBhbGwgb3RoZXIgdG91Y2gt
cG9pbnRzCi0gICAgICAgIGZvciAoUUhhc2g8aW50LCBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpU
b3VjaFBvaW50Pjo6aXRlcmF0b3IgaXQgPSBtX3RvdWNoUG9pbnRzLmJlZ2luKCksIGVuZCA9IG1f
dG91Y2hQb2ludHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKGl0
LnZhbHVlKCkuaWQgIT0gdG91Y2hQb2ludC5pZCkKLSAgICAgICAgICAgICAgICBpdC52YWx1ZSgp
LnN0YXRlID0gUXQ6OlRvdWNoUG9pbnRTdGF0aW9uYXJ5OworICAgICAgICBmb3IgKFFIYXNoPGlu
dCwgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQ+OjppdGVyYXRvciBpdCA9IG1fdG91Y2hQb2ludHMu
YmVnaW4oKSwgZW5kID0gbV90b3VjaFBvaW50cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Cisg
ICAgICAgICAgICBpZiAoaXQudmFsdWUoKS5pZCgpICE9IHRvdWNoUG9pbnQuaWQoKSkKKyAgICAg
ICAgICAgICAgICBpdC52YWx1ZSgpLnNldFN0YXRlKFF0OjpUb3VjaFBvaW50U3RhdGlvbmFyeSk7
CiAgICAgICAgIH0KIAotICAgICAgICBzZW5kVG91Y2hFdmVudChicm93c2VyV2luZG93KTsKKyAg
ICAgICAgaWYgKCFzZW5kVG91Y2hFdmVudChicm93c2VyV2luZG93LCB0b3VjaFR5cGUsIG1vdXNl
RXZlbnQtPnRpbWVzdGFtcCgpKSkKKyAgICAgICAgICAgIHJldHVybiBRR3VpQXBwbGljYXRpb246
Om5vdGlmeSh0YXJnZXQsIGV2ZW50KTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ICAgICByZXR1cm4gUUd1aUFwcGxpY2F0aW9uOjpub3RpZnkodGFyZ2V0LCBldmVudCk7CiB9CiAK
LXZvaWQgTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6c2VuZFRvdWNoRXZlbnQoQnJvd3NlcldpbmRv
dyogYnJvd3NlcldpbmRvdykKK2Jvb2wgTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6c2VuZFRvdWNo
RXZlbnQoQnJvd3NlcldpbmRvdyogYnJvd3NlcldpbmRvdywgUUV2ZW50OjpUeXBlIHR5cGUsIHVs
b25nIHRpbWVzdGFtcCkKIHsKICAgICBzdGF0aWMgUVRvdWNoRGV2aWNlKiBkZXZpY2UgPSAwOwog
ICAgIGlmICghZGV2aWNlKSB7CkBAIC0xODUsMTYgKzIxNSwyOSBAQCB2b2lkIE1pbmlCcm93c2Vy
QXBwbGljYXRpb246OnNlbmRUb3VjaEV2ZW50KEJyb3dzZXJXaW5kb3cqIGJyb3dzZXJXaW5kb3cp
CiAgICAgfQogCiAgICAgbV9wZW5kaW5nRmFrZVRvdWNoRXZlbnRDb3VudCsrOwotICAgIFFXaW5k
b3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVRvdWNoRXZlbnQoYnJvd3NlcldpbmRvdywgZGV2aWNl
LCBtX3RvdWNoUG9pbnRzLnZhbHVlcygpKTsKKworICAgIGNvbnN0IFFMaXN0PFFUb3VjaEV2ZW50
OjpUb3VjaFBvaW50PiYgY3VycmVudFRvdWNoUG9pbnRzID0gbV90b3VjaFBvaW50cy52YWx1ZXMo
KTsKKyAgICBRdDo6VG91Y2hQb2ludFN0YXRlcyB0b3VjaFBvaW50U3RhdGVzID0gMDsKKyAgICBm
b3JlYWNoIChjb25zdCBRVG91Y2hFdmVudDo6VG91Y2hQb2ludCYgdG91Y2hQb2ludCwgY3VycmVu
dFRvdWNoUG9pbnRzKQorICAgICAgICB0b3VjaFBvaW50U3RhdGVzIHw9IHRvdWNoUG9pbnQuc3Rh
dGUoKTsKKworICAgIFFUb3VjaEV2ZW50IGV2ZW50KHR5cGUsIGRldmljZSwgUXQ6Ok5vTW9kaWZp
ZXIsIHRvdWNoUG9pbnRTdGF0ZXMsIGN1cnJlbnRUb3VjaFBvaW50cyk7CisgICAgZXZlbnQuc2V0
VGltZXN0YW1wKHRpbWVzdGFtcCk7CisgICAgZXZlbnQuc2V0QWNjZXB0ZWQoZmFsc2UpOworCisg
ICAgUUd1aUFwcGxpY2F0aW9uOjpub3RpZnkoYnJvd3NlcldpbmRvdywgJmV2ZW50KTsKKyAgICBi
b29sIGFjY2VwdGVkID0gZXZlbnQuaXNBY2NlcHRlZCgpOwogCiAgICAgaWYgKFFRdWlja1dlYlZp
ZXdFeHBlcmltZW50YWw6OmZsaWNrYWJsZVZpZXdwb3J0RW5hYmxlZCgpKQotICAgICAgICBicm93
c2VyV2luZG93LT51cGRhdGVWaXN1YWxNb2NrVG91Y2hQb2ludHMobV9ob2xkaW5nQ29udHJvbCA/
IG1fdG91Y2hQb2ludHMudmFsdWVzKCkgOiBRTGlzdDxRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpU
b3VjaFBvaW50PigpKTsKKyAgICAgICAgYnJvd3NlcldpbmRvdy0+dXBkYXRlVmlzdWFsTW9ja1Rv
dWNoUG9pbnRzKG1faG9sZGluZ0NvbnRyb2wgPyBjdXJyZW50VG91Y2hQb2ludHMgOiBRTGlzdDxR
VG91Y2hFdmVudDo6VG91Y2hQb2ludD4oKSk7CiAKICAgICAvLyBHZXQgcmlkIG9mIHRvdWNoLXBv
aW50cyB0aGF0IGFyZSBubyBsb25nZXIgdmFsaWQKLSAgICBmb3JlYWNoIChjb25zdCBRV2luZG93
U3lzdGVtSW50ZXJmYWNlOjpUb3VjaFBvaW50JiB0b3VjaFBvaW50LCBtX3RvdWNoUG9pbnRzKSB7
Ci0gICAgICAgIGlmICh0b3VjaFBvaW50LnN0YXRlID09ICBRdDo6VG91Y2hQb2ludFJlbGVhc2Vk
KQotICAgICAgICAgICAgbV90b3VjaFBvaW50cy5yZW1vdmUodG91Y2hQb2ludC5pZCk7CisgICAg
Zm9yZWFjaCAoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIGN1cnJl
bnRUb3VjaFBvaW50cykgeworICAgICAgICBpZiAodG91Y2hQb2ludC5zdGF0ZSgpID09ICBRdDo6
VG91Y2hQb2ludFJlbGVhc2VkKQorICAgICAgICAgICAgbV90b3VjaFBvaW50cy5yZW1vdmUodG91
Y2hQb2ludC5pZCgpKTsKICAgICB9CisKKyAgICByZXR1cm4gYWNjZXB0ZWQ7CiB9CiAKIHN0YXRp
YyB2b2lkIHByaW50SGVscChjb25zdCBRU3RyaW5nJiBwcm9ncmFtTmFtZSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uaCBiL1Rvb2xzL01p
bmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uaAppbmRleCAwNDQxZmFkLi4xNTk4
ODk1IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0
aW9uLmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5o
CkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbm90aWZ5KFFPYmpl
Y3QqLCBRRXZlbnQqKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNlbmRUb3VjaEV2ZW50KEJyb3dz
ZXJXaW5kb3cqKTsKKyAgICBib29sIHNlbmRUb3VjaEV2ZW50KEJyb3dzZXJXaW5kb3cqLCBRRXZl
bnQ6OlR5cGUsIHVsb25nIHRpbWVzdGFtcCk7CiAgICAgdm9pZCBoYW5kbGVVc2VyT3B0aW9ucygp
OwogCiBwcml2YXRlOgpAQCAtMTA5LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fcm9i
b3RFeHRyYVRpbWVTZWNvbmRzOwogICAgIFFTdHJpbmdMaXN0IG1fdXJsczsKIAotICAgIFFIYXNo
PGludCwgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6VG91Y2hQb2ludD4gbV90b3VjaFBvaW50czsK
KyAgICBRSGFzaDxpbnQsIFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50PiBtX3RvdWNoUG9pbnRzOwog
ICAgIFFTZXQ8aW50PiBtX2hlbGRUb3VjaFBvaW50czsKIAogICAgIFdpbmRvd09wdGlvbnMgbV93
aW5kb3dPcHRpb25zOwotLSAKMS43LjkuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129877</attachid>
            <date>2012-03-02 04:27:59 -0800</date>
            <delta_ts>2012-03-02 07:31:52 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-Qt-WK2-Infinite-loop.patch</filename>
            <type>text/plain</type>
            <size>13767</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">RnJvbSA1NmY0Mzg2NDFkNWI4OTQ0ZGYwMGExOWNkYTA1OGExMTZmMWZjOTc2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyYXMgQmVjc2kgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+
CkRhdGU6IEZyaSwgMiBNYXIgMjAxMiAxMTo1MTo1NyArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIFtR
dF1bV0syXSBJbmZpbml0ZSBsb29wCgotLS0KIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAyNiArKysrKwogVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJv
d3NlcldpbmRvdy5jcHAgICAgICAgICAgfCAgIDIzICsrLS0tCiBUb29scy9NaW5pQnJvd3Nlci9x
dC9Ccm93c2VyV2luZG93LmggICAgICAgICAgICB8ICAgIDIgKy0KIFRvb2xzL01pbmlCcm93c2Vy
L3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uY3BwIHwgIDExMiArKysrKysrKysrKysrKysrLS0t
LS0tLQogVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oICAgfCAg
ICA0ICstCiA1IGZpbGVzIGNoYW5nZWQsIDExNyBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
ZGM2NGRiYi4uZTYzOTIxYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTAyICBBbmRyYXMgQmVjc2kgIDxh
bmRyYXMuYmVjc2lAbm9raWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBJbmZpbml0ZSBsb29w
IG9uIGhpc3RvcnkgbmF2aWdhdGlvbiwgd2hlbiBwYW5uaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTExOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgdGhlIHRvdWNoIG1vY2tpbmcgbW9yZSBy
b2J1c3QgYnkgY3JlYXRpbmcgdG91Y2ggZXZlbnRzCisgICAgICAgIGRpcmVjdGx5IGFuZCBzZW5k
aW5nIHRoZW0gc3luY2hyb25vdXNseSB0byB0aGUgYnJvd3NlciB3aW5kb3cuCisgICAgICAgIElm
IHRoZSBzZW50IHRvdWNoIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgd2UgcHJvcGFnYXRlIHRoZQor
ICAgICAgICBvcmlnaW5hbCBtb3VzZSBldmVudCB0byBpdHMgdGFyZ2V0LgorICAgICAgICBUaGlz
IHdheSB3ZSBtYWtlIHN1cmUgd2Ugb25seSBzZW5kIGVpdGhlciBhIHRvdWNoIG9yIGEgbW91c2UK
KyAgICAgICAgZXZlbnQgYW5kIGRvIG5vdCBlbmQgdXAgaW4gYW4gaW5maW5pdGUgbG9vcCBiZXR3
ZWVuIG91ciBtb2NraW5nCisgICAgICAgIGNvZGUgYW5kIHRoZSBRdDUgYXV0b21hdGljIG1vdXNl
IGV2ZW50IHN5bnRoZXNpemluZy4KKworICAgICAgICAqIE1pbmlCcm93c2VyL3F0L0Jyb3dzZXJX
aW5kb3cuY3BwOgorICAgICAgICAoQnJvd3NlcldpbmRvdzo6dXBkYXRlVmlzdWFsTW9ja1RvdWNo
UG9pbnRzKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93Lmg6CisgICAg
ICAgIChCcm93c2VyV2luZG93KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nl
ckFwcGxpY2F0aW9uLmNwcDoKKyAgICAgICAgKHRvdWNoUmVjdEZvclBvc2l0aW9uKToKKyAgICAg
ICAgKE1pbmlCcm93c2VyQXBwbGljYXRpb246Om5vdGlmeSk6CisgICAgICAgIChNaW5pQnJvd3Nl
ckFwcGxpY2F0aW9uOjpzZW5kVG91Y2hFdmVudCk6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQv
TWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oOgorICAgICAgICAoTWluaUJyb3dzZXJBcHBsaWNhdGlv
bik6CisKIDIwMTItMDMtMDIgIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVwZGF0ZWQgRXZlbnRTZW5kZXIgdG8gc2VuZCBjb21wbGV0ZSBnZXN0dXJl
IGV2ZW50cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cu
Y3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKaW5kZXggNjM5Y2Q0
Zi4uODk3OTE2NyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRv
dy5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKQEAgLTkz
LDMwICs5MywyNyBAQCBCcm93c2VyV2luZG93KiBCcm93c2VyV2luZG93OjpuZXdXaW5kb3coY29u
c3QgUVN0cmluZyYgdXJsKQogICAgIHJldHVybiB3aW5kb3c7CiB9CiAKLXZvaWQgQnJvd3Nlcldp
bmRvdzo6dXBkYXRlVmlzdWFsTW9ja1RvdWNoUG9pbnRzKGNvbnN0IFFMaXN0PFFXaW5kb3dTeXN0
ZW1JbnRlcmZhY2U6OlRvdWNoUG9pbnQ+JiB0b3VjaFBvaW50cykKK3ZvaWQgQnJvd3NlcldpbmRv
dzo6dXBkYXRlVmlzdWFsTW9ja1RvdWNoUG9pbnRzKGNvbnN0IFFMaXN0PFFUb3VjaEV2ZW50OjpU
b3VjaFBvaW50PiYgdG91Y2hQb2ludHMpCiB7Ci0gICAgZm9yZWFjaCAoY29uc3QgUVdpbmRvd1N5
c3RlbUludGVyZmFjZTo6VG91Y2hQb2ludCYgdG91Y2hQb2ludCwgdG91Y2hQb2ludHMpIHsKLSAg
ICAgICAgUVN0cmluZyBtb2NrVG91Y2hQb2ludElkZW50aWZpZXIgPSBRU3RyaW5nKCJtb2NrVG91
Y2hQb2ludCUxIikuYXJnKHRvdWNoUG9pbnQuaWQpOworICAgIGZvcmVhY2ggKGNvbnN0IFFUb3Vj
aEV2ZW50OjpUb3VjaFBvaW50JiB0b3VjaFBvaW50LCB0b3VjaFBvaW50cykgeworICAgICAgICBR
U3RyaW5nIG1vY2tUb3VjaFBvaW50SWRlbnRpZmllciA9IFFTdHJpbmcoIm1vY2tUb3VjaFBvaW50
JTEiKS5hcmcodG91Y2hQb2ludC5pZCgpKTsKICAgICAgICAgUVF1aWNrSXRlbSogbW9ja1RvdWNo
UG9pbnRJdGVtID0gcm9vdE9iamVjdCgpLT5maW5kQ2hpbGQ8UVF1aWNrSXRlbSo+KG1vY2tUb3Vj
aFBvaW50SWRlbnRpZmllciwgUXQ6OkZpbmREaXJlY3RDaGlsZHJlbk9ubHkpOwogCiAgICAgICAg
IGlmICghbW9ja1RvdWNoUG9pbnRJdGVtKSB7CiAgICAgICAgICAgICBRRGVjbGFyYXRpdmVDb21w
b25lbnQgdG91Y2hNb2NrUG9pbnRDb21wb25lbnQoZW5naW5lKCksIFFVcmwoInFyYzovcW1sL01v
Y2tUb3VjaFBvaW50LnFtbCIpKTsKICAgICAgICAgICAgIG1vY2tUb3VjaFBvaW50SXRlbSA9IHFv
YmplY3RfY2FzdDxRUXVpY2tJdGVtKj4odG91Y2hNb2NrUG9pbnRDb21wb25lbnQuY3JlYXRlKCkp
OwogICAgICAgICAgICAgbW9ja1RvdWNoUG9pbnRJdGVtLT5zZXRPYmplY3ROYW1lKG1vY2tUb3Vj
aFBvaW50SWRlbnRpZmllcik7Ci0gICAgICAgICAgICBtb2NrVG91Y2hQb2ludEl0ZW0tPnNldFBy
b3BlcnR5KCJwb2ludElkIiwgUVZhcmlhbnQodG91Y2hQb2ludC5pZCkpOworICAgICAgICAgICAg
bW9ja1RvdWNoUG9pbnRJdGVtLT5zZXRQcm9wZXJ0eSgicG9pbnRJZCIsIFFWYXJpYW50KHRvdWNo
UG9pbnQuaWQoKSkpOwogICAgICAgICAgICAgbW9ja1RvdWNoUG9pbnRJdGVtLT5zZXRQYXJlbnQo
cm9vdE9iamVjdCgpKTsKICAgICAgICAgICAgIG1vY2tUb3VjaFBvaW50SXRlbS0+c2V0UGFyZW50
SXRlbShyb290T2JqZWN0KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgUVBvaW50RiBwb3NpdGlv
biA9IHRvdWNoUG9pbnQuYXJlYS5jZW50ZXIoKTsKLSAgICAgICAgcG9zaXRpb24ucngoKSAtPSBn
ZW9tZXRyeSgpLngoKTsKLSAgICAgICAgcG9zaXRpb24ucnkoKSAtPSBnZW9tZXRyeSgpLnkoKTsK
LQotICAgICAgICBtb2NrVG91Y2hQb2ludEl0ZW0tPnNldFgocG9zaXRpb24ueCgpKTsKLSAgICAg
ICAgbW9ja1RvdWNoUG9pbnRJdGVtLT5zZXRZKHBvc2l0aW9uLnkoKSk7Ci0gICAgICAgIG1vY2tU
b3VjaFBvaW50SXRlbS0+c2V0V2lkdGgodG91Y2hQb2ludC5hcmVhLndpZHRoKCkpOwotICAgICAg
ICBtb2NrVG91Y2hQb2ludEl0ZW0tPnNldEhlaWdodCh0b3VjaFBvaW50LmFyZWEuaGVpZ2h0KCkp
OwotICAgICAgICBtb2NrVG91Y2hQb2ludEl0ZW0tPnNldFByb3BlcnR5KCJwcmVzc2VkIiwgUVZh
cmlhbnQodG91Y2hQb2ludC5zdGF0ZSAhPSBRdDo6VG91Y2hQb2ludFJlbGVhc2VkKSk7CisgICAg
ICAgIFFSZWN0RiB0b3VjaFJlY3QgPSB0b3VjaFBvaW50LnJlY3QoKTsKKyAgICAgICAgbW9ja1Rv
dWNoUG9pbnRJdGVtLT5zZXRYKHRvdWNoUmVjdC5jZW50ZXIoKS54KCkpOworICAgICAgICBtb2Nr
VG91Y2hQb2ludEl0ZW0tPnNldFkodG91Y2hSZWN0LmNlbnRlcigpLnkoKSk7CisgICAgICAgIG1v
Y2tUb3VjaFBvaW50SXRlbS0+c2V0V2lkdGgodG91Y2hSZWN0LndpZHRoKCkpOworICAgICAgICBt
b2NrVG91Y2hQb2ludEl0ZW0tPnNldEhlaWdodCh0b3VjaFJlY3QuaGVpZ2h0KCkpOworICAgICAg
ICBtb2NrVG91Y2hQb2ludEl0ZW0tPnNldFByb3BlcnR5KCJwcmVzc2VkIiwgUVZhcmlhbnQodG91
Y2hQb2ludC5zdGF0ZSgpICE9IFF0OjpUb3VjaFBvaW50UmVsZWFzZWQpKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuaCBiL1Rvb2xz
L01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuaAppbmRleCBkNmNhMGE2Li4wMTU2MTY3IDEw
MDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmgKKysrIGIvVG9v
bHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGZvY3VzQWRkcmVzc0JhcigpOwogICAgIFFRdWlja1dlYlZpZXcqIHdlYlZp
ZXcoKSBjb25zdDsKIAotICAgIHZvaWQgdXBkYXRlVmlzdWFsTW9ja1RvdWNoUG9pbnRzKGNvbnN0
IFFMaXN0PFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OlRvdWNoUG9pbnQ+JiB0b3VjaFBvaW50cyk7
CisgICAgdm9pZCB1cGRhdGVWaXN1YWxNb2NrVG91Y2hQb2ludHMoY29uc3QgUUxpc3Q8UVRvdWNo
RXZlbnQ6OlRvdWNoUG9pbnQ+JiB0b3VjaFBvaW50cyk7CiAKIHB1YmxpYyBzbG90czoKICAgICBC
cm93c2VyV2luZG93KiBuZXdXaW5kb3coY29uc3QgUVN0cmluZyYgdXJsID0gImFib3V0OmJsYW5r
Iik7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0
aW9uLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uY3Bw
CmluZGV4IDJlYzk1YWQuLmQxMWUzNWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0
L01pbmlCcm93c2VyQXBwbGljYXRpb24uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01p
bmlCcm93c2VyQXBwbGljYXRpb24uY3BwCkBAIC0zNiw2ICszNiwxMyBAQAogI2luY2x1ZGUgPFFN
b3VzZUV2ZW50PgogI2luY2x1ZGUgPFFUb3VjaEV2ZW50PgogCitzdGF0aWMgaW5saW5lIGNvbnN0
IFFSZWN0RiYgdG91Y2hSZWN0Rm9yUG9zaXRpb24oUVBvaW50RiBjZW50ZXJQb2ludCkKK3sKKyAg
ICBzdGF0aWMgUVJlY3RGIHRvdWNoUmVjdCgwLCAwLCA0MCwgNDApOworICAgIHRvdWNoUmVjdC5t
b3ZlQ2VudGVyKGNlbnRlclBvaW50KTsKKyAgICByZXR1cm4gdG91Y2hSZWN0OworfQorCiBzdGF0
aWMgaW5saW5lIGJvb2wgaXNUb3VjaEV2ZW50KGNvbnN0IFFFdmVudCogZXZlbnQpCiB7CiAgICAg
c3dpdGNoIChldmVudC0+dHlwZSgpKSB7CkBAIC04MCwxMSArODcsNiBAQCBNaW5pQnJvd3NlckFw
cGxpY2F0aW9uOjpNaW5pQnJvd3NlckFwcGxpY2F0aW9uKGludCYgYXJnYywgY2hhcioqIGFyZ3Yp
CiAKIGJvb2wgTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6bm90aWZ5KFFPYmplY3QqIHRhcmdldCwg
UUV2ZW50KiBldmVudCkKIHsKLSAgICBpZihRSW5wdXRFdmVudCogaWUgPSBzdGF0aWNfY2FzdDxR
SW5wdXRFdmVudCo+KGV2ZW50KSkKLSAgICAgICAgbV9ob2xkaW5nQ29udHJvbCA9IGllLT5tb2Rp
ZmllcnMoKS50ZXN0RmxhZyhRdDo6Q29udHJvbE1vZGlmaWVyKTsKLSAgICBlbHNlCi0gICAgICAg
IG1faG9sZGluZ0NvbnRyb2wgPSBmYWxzZTsKLQogICAgIC8vIFdlIHRyeSB0byBiZSBzbWFydCwg
aWYgd2UgcmVjZWl2ZWQgcmVhbCB0b3VjaCBldmVudCwgd2UgYXJlIHByb2JhYmx5IG9uIGEgZGV2
aWNlCiAgICAgLy8gd2l0aCB0b3VjaCBzY3JlZW4sIGFuZCB3ZSBzaG91bGQgbm90IGhhdmUgdG91
Y2ggbW9ja2luZy4KIApAQCAtMTIxLDM5ICsxMjMsNjMgQEAgYm9vbCBNaW5pQnJvd3NlckFwcGxp
Y2F0aW9uOjpub3RpZnkoUU9iamVjdCogdGFyZ2V0LCBRRXZlbnQqIGV2ZW50KQogICAgIGlmIChl
dmVudC0+dHlwZSgpID09IFFFdmVudDo6S2V5UmVsZWFzZSAmJiBzdGF0aWNfY2FzdDxRS2V5RXZl
bnQqPihldmVudCktPmtleSgpID09IFF0OjpLZXlfQ29udHJvbCkgewogICAgICAgICBmb3JlYWNo
IChpbnQgaWQsIG1faGVsZFRvdWNoUG9pbnRzKQogICAgICAgICAgICAgaWYgKG1fdG91Y2hQb2lu
dHMuY29udGFpbnMoaWQpKQotICAgICAgICAgICAgICAgIG1fdG91Y2hQb2ludHNbaWRdLnN0YXRl
ID0gUXQ6OlRvdWNoUG9pbnRSZWxlYXNlZDsKKyAgICAgICAgICAgICAgICBtX3RvdWNoUG9pbnRz
W2lkXS5zZXRTdGF0ZShRdDo6VG91Y2hQb2ludFJlbGVhc2VkKTsKICAgICAgICAgbV9oZWxkVG91
Y2hQb2ludHMuY2xlYXIoKTsKLSAgICAgICAgc2VuZFRvdWNoRXZlbnQoYnJvd3NlcldpbmRvdyk7
CisgICAgICAgIHNlbmRUb3VjaEV2ZW50KGJyb3dzZXJXaW5kb3csIFFFdmVudDo6VG91Y2hFbmQs
IHN0YXRpY19jYXN0PFFLZXlFdmVudCo+KGV2ZW50KS0+dGltZXN0YW1wKCkpOwogICAgIH0KIAog
ICAgIGlmIChpc01vdXNlRXZlbnQoZXZlbnQpKSB7CiAgICAgICAgIGNvbnN0IFFNb3VzZUV2ZW50
KiBjb25zdCBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8UU1vdXNlRXZlbnQqPihldmVudCk7Cisg
ICAgICAgIG1faG9sZGluZ0NvbnRyb2wgPSBtb3VzZUV2ZW50LT5tb2RpZmllcnMoKS50ZXN0Rmxh
ZyhRdDo6Q29udHJvbE1vZGlmaWVyKTsKIAotICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNl
OjpUb3VjaFBvaW50IHRvdWNoUG9pbnQ7Ci0gICAgICAgIHRvdWNoUG9pbnQuYXJlYSA9IFFSZWN0
Rihtb3VzZUV2ZW50LT5nbG9iYWxQb3MoKSAtIFFQb2ludEYoMzAsIDQwKSwgUVNpemVGKDYwLCA4
MCkpOwotICAgICAgICB0b3VjaFBvaW50LnByZXNzdXJlID0gMTsKKyAgICAgICAgUVRvdWNoRXZl
bnQ6OlRvdWNoUG9pbnQgdG91Y2hQb2ludDsKKworICAgICAgICB0b3VjaFBvaW50LnNldFJlY3Qo
dG91Y2hSZWN0Rm9yUG9zaXRpb24obW91c2VFdmVudC0+bG9jYWxQb3MoKSkpOworICAgICAgICBz
dGF0aWMgUVBvaW50RiBsYXN0UG9zOworICAgICAgICB0b3VjaFBvaW50LnNldExhc3RQb3MobGFz
dFBvcyk7CisgICAgICAgIGxhc3RQb3MgPSBtb3VzZUV2ZW50LT5wb3MoKTsKKworICAgICAgICAv
LyBHZXN0dXJlIHJlY29nbml0aW9uIHVzZXMgdGhlIHNjcmVlbiBwb3NpdGlvbiBmb3IgdGhlIGlu
aXRpYWwgdGhyZXNob2xkCisgICAgICAgIC8vIGJ1dCBzaW5jZSB0aGUgY2FudmFzIHRyYW5zbGF0
ZXMgdG91Y2ggZXZlbnRzIHdlIGFjdHVhbGx5IG5lZWQgdG8gcGFzcworICAgICAgICAvLyB0aGUg
c2NyZWVuIHBvc2l0aW9uIGFzIHRoZSBzY2VuZSBwb3NpdGlvbiB0byBkZWxpdmVyIHRoZSBhcHBy
b3ByaWF0ZQorICAgICAgICAvLyBjb29yZGluYXRlcyB0byB0aGUgdGFyZ2V0LgorICAgICAgICB0
b3VjaFBvaW50LnNldFNjZW5lUmVjdCh0b3VjaFJlY3RGb3JQb3NpdGlvbihtb3VzZUV2ZW50LT5z
Y3JlZW5Qb3MoKSkpOworICAgICAgICBzdGF0aWMgUVBvaW50RiBsYXN0U2NyZWVuUG9zOworICAg
ICAgICB0b3VjaFBvaW50LnNldExhc3RTY2VuZVBvcyhsYXN0U2NyZWVuUG9zKTsKKyAgICAgICAg
bGFzdFNjcmVlblBvcyA9IG1vdXNlRXZlbnQtPnNjcmVlblBvcygpOworICAgICAgICB0b3VjaFBv
aW50LnNldFByZXNzdXJlKDEpOworCisgICAgICAgIFFFdmVudDo6VHlwZSB0b3VjaFR5cGUgPSBR
RXZlbnQ6Ok5vbmU7CiAKICAgICAgICAgc3dpdGNoIChtb3VzZUV2ZW50LT50eXBlKCkpIHsKICAg
ICAgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUHJlc3M6CiAgICAgICAgIGNhc2UgUUV2ZW50
OjpNb3VzZUJ1dHRvbkRibENsaWNrOgotICAgICAgICAgICAgdG91Y2hQb2ludC5pZCA9IG1vdXNl
RXZlbnQtPmJ1dHRvbigpOwotICAgICAgICAgICAgaWYgKG1fdG91Y2hQb2ludHMuY29udGFpbnMo
dG91Y2hQb2ludC5pZCkpCi0gICAgICAgICAgICAgICAgdG91Y2hQb2ludC5zdGF0ZSA9IFF0OjpU
b3VjaFBvaW50TW92ZWQ7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdG91Y2hQ
b2ludC5zdGF0ZSA9IFF0OjpUb3VjaFBvaW50UHJlc3NlZDsKKyAgICAgICAgICAgIHRvdWNoUG9p
bnQuc2V0SWQobW91c2VFdmVudC0+YnV0dG9uKCkpOworICAgICAgICAgICAgaWYgKG1fdG91Y2hQ
b2ludHMuY29udGFpbnModG91Y2hQb2ludC5pZCgpKSkgeworICAgICAgICAgICAgICAgIHRvdWNo
UG9pbnQuc2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRNb3ZlZCk7CisgICAgICAgICAgICAgICAgdG91
Y2hUeXBlID0gUUV2ZW50OjpUb3VjaFVwZGF0ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgdG91Y2hQb2ludC5zZXRTdGF0ZShRdDo6VG91Y2hQb2ludFByZXNzZWQpOwor
ICAgICAgICAgICAgICAgIHRvdWNoVHlwZSA9IFFFdmVudDo6VG91Y2hCZWdpbjsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFFFdmVudDo6TW91c2VNb3Zl
OgotICAgICAgICAgICAgaWYgKCFtb3VzZUV2ZW50LT5idXR0b25zKCkgfHwgIW1fdG91Y2hQb2lu
dHMuY29udGFpbnMobW91c2VFdmVudC0+YnV0dG9ucygpKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gUUd1aUFwcGxpY2F0aW9uOjpub3RpZnkodGFyZ2V0LCBldmVudCk7Ci0gICAgICAgICAgICB0
b3VjaFBvaW50LmlkID0gbW91c2VFdmVudC0+YnV0dG9ucygpOwotICAgICAgICAgICAgdG91Y2hQ
b2ludC5zdGF0ZSA9IFF0OjpUb3VjaFBvaW50TW92ZWQ7CisgICAgICAgICAgICBpZiAoIW1vdXNl
RXZlbnQtPmJ1dHRvbnMoKSB8fCAhbV90b3VjaFBvaW50cy5jb250YWlucyhtb3VzZUV2ZW50LT5i
dXR0b25zKCkpKSB7CisgICAgICAgICAgICAgICAgZXZlbnQtPmFjY2VwdCgpOworICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdG91Y2hUeXBl
ID0gUUV2ZW50OjpUb3VjaFVwZGF0ZTsKKyAgICAgICAgICAgIHRvdWNoUG9pbnQuc2V0SWQobW91
c2VFdmVudC0+YnV0dG9ucygpKTsKKyAgICAgICAgICAgIHRvdWNoUG9pbnQuc2V0U3RhdGUoUXQ6
OlRvdWNoUG9pbnRNb3ZlZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBRRXZl
bnQ6Ok1vdXNlQnV0dG9uUmVsZWFzZToKLSAgICAgICAgICAgIHRvdWNoUG9pbnQuc3RhdGUgPSBR
dDo6VG91Y2hQb2ludFJlbGVhc2VkOwotICAgICAgICAgICAgdG91Y2hQb2ludC5pZCA9IG1vdXNl
RXZlbnQtPmJ1dHRvbigpOworICAgICAgICAgICAgdG91Y2hUeXBlID0gUUV2ZW50OjpUb3VjaEVu
ZDsKKyAgICAgICAgICAgIHRvdWNoUG9pbnQuc2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRSZWxlYXNl
ZCk7CisgICAgICAgICAgICB0b3VjaFBvaW50LnNldElkKG1vdXNlRXZlbnQtPmJ1dHRvbigpKTsK
ICAgICAgICAgICAgIGlmIChtX2hvbGRpbmdDb250cm9sKSB7Ci0gICAgICAgICAgICAgICAgbV9o
ZWxkVG91Y2hQb2ludHMuaW5zZXJ0KHRvdWNoUG9pbnQuaWQpOwotICAgICAgICAgICAgICAgIHJl
dHVybiBRR3VpQXBwbGljYXRpb246Om5vdGlmeSh0YXJnZXQsIGV2ZW50KTsKKyAgICAgICAgICAg
ICAgICBtX2hlbGRUb3VjaFBvaW50cy5pbnNlcnQodG91Y2hQb2ludC5pZCgpKTsKKyAgICAgICAg
ICAgICAgICBldmVudC0+YWNjZXB0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTE2
MSwyMSArMTg3LDI3IEBAIGJvb2wgTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6bm90aWZ5KFFPYmpl
Y3QqIHRhcmdldCwgUUV2ZW50KiBldmVudCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFVwZGF0
ZSBjdXJyZW50IHRvdWNoLXBvaW50Ci0gICAgICAgIG1fdG91Y2hQb2ludHMuaW5zZXJ0KHRvdWNo
UG9pbnQuaWQsIHRvdWNoUG9pbnQpOworICAgICAgICBtX3RvdWNoUG9pbnRzLmluc2VydCh0b3Vj
aFBvaW50LmlkKCksIHRvdWNoUG9pbnQpOwogCiAgICAgICAgIC8vIFVwZGF0ZSBzdGF0ZXMgZm9y
IGFsbCBvdGhlciB0b3VjaC1wb2ludHMKLSAgICAgICAgZm9yIChRSGFzaDxpbnQsIFFXaW5kb3dT
eXN0ZW1JbnRlcmZhY2U6OlRvdWNoUG9pbnQ+OjppdGVyYXRvciBpdCA9IG1fdG91Y2hQb2ludHMu
YmVnaW4oKSwgZW5kID0gbV90b3VjaFBvaW50cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgICAgICBpZiAoaXQudmFsdWUoKS5pZCAhPSB0b3VjaFBvaW50LmlkKQotICAgICAgICAg
ICAgICAgIGl0LnZhbHVlKCkuc3RhdGUgPSBRdDo6VG91Y2hQb2ludFN0YXRpb25hcnk7CisgICAg
ICAgIGZvciAoUUhhc2g8aW50LCBRVG91Y2hFdmVudDo6VG91Y2hQb2ludD46Oml0ZXJhdG9yIGl0
ID0gbV90b3VjaFBvaW50cy5iZWdpbigpLCBlbmQgPSBtX3RvdWNoUG9pbnRzLmVuZCgpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChpdC52YWx1ZSgpLmlkKCkgIT0gdG91Y2hQ
b2ludC5pZCgpKQorICAgICAgICAgICAgICAgIGl0LnZhbHVlKCkuc2V0U3RhdGUoUXQ6OlRvdWNo
UG9pbnRTdGF0aW9uYXJ5KTsKICAgICAgICAgfQogCi0gICAgICAgIHNlbmRUb3VjaEV2ZW50KGJy
b3dzZXJXaW5kb3cpOworICAgICAgICBRX0FTU0VSVCh0b3VjaFR5cGUgIT0gUUV2ZW50OjpOb25l
KTsKKworICAgICAgICBpZiAoIXNlbmRUb3VjaEV2ZW50KGJyb3dzZXJXaW5kb3csIHRvdWNoVHlw
ZSwgbW91c2VFdmVudC0+dGltZXN0YW1wKCkpKQorICAgICAgICAgICAgcmV0dXJuIFFHdWlBcHBs
aWNhdGlvbjo6bm90aWZ5KHRhcmdldCwgZXZlbnQpOworCisgICAgICAgIGV2ZW50LT5hY2NlcHQo
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIFFHdWlBcHBsaWNh
dGlvbjo6bm90aWZ5KHRhcmdldCwgZXZlbnQpOwogfQogCi12b2lkIE1pbmlCcm93c2VyQXBwbGlj
YXRpb246OnNlbmRUb3VjaEV2ZW50KEJyb3dzZXJXaW5kb3cqIGJyb3dzZXJXaW5kb3cpCitib29s
IE1pbmlCcm93c2VyQXBwbGljYXRpb246OnNlbmRUb3VjaEV2ZW50KEJyb3dzZXJXaW5kb3cqIGJy
b3dzZXJXaW5kb3csIFFFdmVudDo6VHlwZSB0eXBlLCB1bG9uZyB0aW1lc3RhbXApCiB7CiAgICAg
c3RhdGljIFFUb3VjaERldmljZSogZGV2aWNlID0gMDsKICAgICBpZiAoIWRldmljZSkgewpAQCAt
MTg1LDE2ICsyMTcsMjggQEAgdm9pZCBNaW5pQnJvd3NlckFwcGxpY2F0aW9uOjpzZW5kVG91Y2hF
dmVudChCcm93c2VyV2luZG93KiBicm93c2VyV2luZG93KQogICAgIH0KIAogICAgIG1fcGVuZGlu
Z0Zha2VUb3VjaEV2ZW50Q291bnQrKzsKLSAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5k
bGVUb3VjaEV2ZW50KGJyb3dzZXJXaW5kb3csIGRldmljZSwgbV90b3VjaFBvaW50cy52YWx1ZXMo
KSk7CisKKyAgICBjb25zdCBRTGlzdDxRVG91Y2hFdmVudDo6VG91Y2hQb2ludD4mIGN1cnJlbnRU
b3VjaFBvaW50cyA9IG1fdG91Y2hQb2ludHMudmFsdWVzKCk7CisgICAgUXQ6OlRvdWNoUG9pbnRT
dGF0ZXMgdG91Y2hQb2ludFN0YXRlcyA9IDA7CisgICAgZm9yZWFjaCAoY29uc3QgUVRvdWNoRXZl
bnQ6OlRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIGN1cnJlbnRUb3VjaFBvaW50cykKKyAgICAgICAg
dG91Y2hQb2ludFN0YXRlcyB8PSB0b3VjaFBvaW50LnN0YXRlKCk7CisKKyAgICBRVG91Y2hFdmVu
dCBldmVudCh0eXBlLCBkZXZpY2UsIFF0OjpOb01vZGlmaWVyLCB0b3VjaFBvaW50U3RhdGVzLCBj
dXJyZW50VG91Y2hQb2ludHMpOworICAgIGV2ZW50LnNldFRpbWVzdGFtcCh0aW1lc3RhbXApOwor
ICAgIGV2ZW50LnNldEFjY2VwdGVkKGZhbHNlKTsKKworICAgIFFHdWlBcHBsaWNhdGlvbjo6bm90
aWZ5KGJyb3dzZXJXaW5kb3csICZldmVudCk7CiAKICAgICBpZiAoUVF1aWNrV2ViVmlld0V4cGVy
aW1lbnRhbDo6ZmxpY2thYmxlVmlld3BvcnRFbmFibGVkKCkpCi0gICAgICAgIGJyb3dzZXJXaW5k
b3ctPnVwZGF0ZVZpc3VhbE1vY2tUb3VjaFBvaW50cyhtX2hvbGRpbmdDb250cm9sID8gbV90b3Vj
aFBvaW50cy52YWx1ZXMoKSA6IFFMaXN0PFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OlRvdWNoUG9p
bnQ+KCkpOworICAgICAgICBicm93c2VyV2luZG93LT51cGRhdGVWaXN1YWxNb2NrVG91Y2hQb2lu
dHMobV9ob2xkaW5nQ29udHJvbCA/IGN1cnJlbnRUb3VjaFBvaW50cyA6IFFMaXN0PFFUb3VjaEV2
ZW50OjpUb3VjaFBvaW50PigpKTsKIAogICAgIC8vIEdldCByaWQgb2YgdG91Y2gtcG9pbnRzIHRo
YXQgYXJlIG5vIGxvbmdlciB2YWxpZAotICAgIGZvcmVhY2ggKGNvbnN0IFFXaW5kb3dTeXN0ZW1J
bnRlcmZhY2U6OlRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIG1fdG91Y2hQb2ludHMpIHsKLSAgICAg
ICAgaWYgKHRvdWNoUG9pbnQuc3RhdGUgPT0gIFF0OjpUb3VjaFBvaW50UmVsZWFzZWQpCi0gICAg
ICAgICAgICBtX3RvdWNoUG9pbnRzLnJlbW92ZSh0b3VjaFBvaW50LmlkKTsKKyAgICBmb3JlYWNo
IChjb25zdCBRVG91Y2hFdmVudDo6VG91Y2hQb2ludCYgdG91Y2hQb2ludCwgY3VycmVudFRvdWNo
UG9pbnRzKSB7CisgICAgICAgIGlmICh0b3VjaFBvaW50LnN0YXRlKCkgPT0gIFF0OjpUb3VjaFBv
aW50UmVsZWFzZWQpCisgICAgICAgICAgICBtX3RvdWNoUG9pbnRzLnJlbW92ZSh0b3VjaFBvaW50
LmlkKCkpOwogICAgIH0KKworICAgIHJldHVybiBldmVudC5pc0FjY2VwdGVkKCk7CiB9CiAKIHN0
YXRpYyB2b2lkIHByaW50SGVscChjb25zdCBRU3RyaW5nJiBwcm9ncmFtTmFtZSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uaCBiL1Rvb2xz
L01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uaAppbmRleCAwNDQxZmFkLi4x
NTk4ODk1IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxp
Y2F0aW9uLmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlv
bi5oCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbm90aWZ5KFFP
YmplY3QqLCBRRXZlbnQqKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNlbmRUb3VjaEV2ZW50KEJy
b3dzZXJXaW5kb3cqKTsKKyAgICBib29sIHNlbmRUb3VjaEV2ZW50KEJyb3dzZXJXaW5kb3cqLCBR
RXZlbnQ6OlR5cGUsIHVsb25nIHRpbWVzdGFtcCk7CiAgICAgdm9pZCBoYW5kbGVVc2VyT3B0aW9u
cygpOwogCiBwcml2YXRlOgpAQCAtMTA5LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1f
cm9ib3RFeHRyYVRpbWVTZWNvbmRzOwogICAgIFFTdHJpbmdMaXN0IG1fdXJsczsKIAotICAgIFFI
YXNoPGludCwgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6VG91Y2hQb2ludD4gbV90b3VjaFBvaW50
czsKKyAgICBRSGFzaDxpbnQsIFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50PiBtX3RvdWNoUG9pbnRz
OwogICAgIFFTZXQ8aW50PiBtX2hlbGRUb3VjaFBvaW50czsKIAogICAgIFdpbmRvd09wdGlvbnMg
bV93aW5kb3dPcHRpb25zOwotLSAKMS43LjkuMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>