<?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>108473</bug_id>
          
          <creation_ts>2013-01-31 06:01:01 -0800</creation_ts>
          <short_desc>[Qt][WK2] Fold QtWebPageLoadClient into QQuickWebViewPrivate and move to C API.</short_desc>
          <delta_ts>2013-02-07 04:35:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>108471</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Brüning">michael.bruning</reporter>
          <assigned_to name="Michael Brüning">michael.bruning</assigned_to>
          <cc>abecsi</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kling</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>821454</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Brüning">michael.bruning</who>
    <bug_when>2013-01-31 06:01:01 -0800</bug_when>
    <thetext>SSIA, this is part of cleaning up the Qt classes to not use WK2 internals directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825311</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Brüning">michael.bruning</who>
    <bug_when>2013-02-05 02:38:08 -0800</bug_when>
    <thetext>This is blocked a bit at the moment by the strong dependency on QQuickWebView / QQuickWebViewPrivate, i.e., it needs to include files from the UIProcess/API/qt, but we remove those in WebKit2QML.pri...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825326</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-02-05 02:51:17 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; This is blocked a bit at the moment by the strong dependency on QQuickWebView / QQuickWebViewPrivate, i.e., it needs to include files from the UIProcess/API/qt, but we remove those in WebKit2QML.pri...

We may have to clean up qquickwebview_p.h/_p_p.h to allow for inclusion from there, i.e. use forward declarations, etc.

An alternate approach would be to fold things back, like in bug #108920.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825453</commentid>
    <comment_count>3</comment_count>
      <attachid>186619</attachid>
    <who name="Michael Brüning">michael.bruning</who>
    <bug_when>2013-02-05 07:07:27 -0800</bug_when>
    <thetext>Created attachment 186619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825455</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Brüning">michael.bruning</who>
    <bug_when>2013-02-05 07:08:23 -0800</bug_when>
    <thetext>Adding Benjamin and Andreas to check for WK2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825468</commentid>
    <comment_count>5</comment_count>
      <attachid>186619</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-02-05 07:30:39 -0800</bug_when>
    <thetext>Comment on attachment 186619
Patch

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

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:411
&gt; +void QQuickWebViewPrivate::didStartProvisionalLoadForFrame(WKPageRef, WKFrameRef frame, WKTypeRef, const void* clientInfo)
&gt; +{
&gt; +    if (!WKFrameIsMainFrame(frame))
&gt; +        return;
&gt; +
&gt; +    WKRetainPtr&lt;WKURLRef&gt; url  = adoptWK(WKFrameCopyProvisionalURL(frame));
&gt; +    toQQuickWebViewPrivate(clientInfo)-&gt;provisionalLoadDidStart(toWTFString(url.get()));
&gt; +}

I think the idea was to avoid the forwarding calls altogether and instead make the actual handling functions in QQuickWebViewPrivate static. Like in bug #108920</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825507</commentid>
    <comment_count>6</comment_count>
      <attachid>186633</attachid>
    <who name="Michael Brüning">michael.bruning</who>
    <bug_when>2013-02-05 08:53:34 -0800</bug_when>
    <thetext>Created attachment 186633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825518</commentid>
    <comment_count>7</comment_count>
      <attachid>186633</attachid>
    <who name="Michael Brüning">michael.bruning</who>
    <bug_when>2013-02-05 09:02:32 -0800</bug_when>
    <thetext>Comment on attachment 186633
Patch

Just noticed a cut and paste bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825520</commentid>
    <comment_count>8</comment_count>
      <attachid>186636</attachid>
    <who name="Michael Brüning">michael.bruning</who>
    <bug_when>2013-02-05 09:04:08 -0800</bug_when>
    <thetext>Created attachment 186636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825978</commentid>
    <comment_count>9</comment_count>
      <attachid>186636</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-05 18:00:00 -0800</bug_when>
    <thetext>Comment on attachment 186636
Patch

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

I sign off on this for WebKit2.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:317
&gt; -    pageFindClient.reset(new QtWebPageFindClient(webPage.get(), q_ptr));
&gt; -    pageLoadClient.reset(new QtWebPageLoadClient(webPage.get(), q_ptr));
&gt; +    registerPageLoadClient();
&gt; +    pageFindClient.reset(new QtWebPageFindClient(webPage.get(), q_ptr));    

Some extra spaces here.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:391
&gt; +    // We set the unreachable url unconditionally so that the current
&gt; +    // active url of the webview when the loadingChanged signal is
&gt; +    // emitted reflects the failed url, not the previously committed
&gt; +    // url. This also ensures that if the user does not do a loadHtml
&gt; +    // with an error page and and unreachable url as a reponse to the
&gt; +    // failed load, we can still detect the failed url for reloads.
&gt; +
&gt; +    // FIXME: Find a way to do this with the C API / add a function to do this to the C API
&gt; +    toImpl(frame)-&gt;setUnreachableURL(error.url());

I don&apos;t understand why any of this is needed :(

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:440
&gt; +    PageViewportController* pvc = webViewPrivate-&gt;viewportController();
&gt; +    if (pvc)
&gt; +        pvc-&gt;didCommitLoad();

Let&apos;s use a better variable name here: pageViewportController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826304</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Brüning">michael.bruning</who>
    <bug_when>2013-02-06 03:47:15 -0800</bug_when>
    <thetext>Thanks for the sign-off :).

(In reply to comment #9)
&gt; (From update of attachment 186636 [details])
[...]
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:391
&gt; &gt; +    // We set the unreachable url unconditionally so that the current
&gt; &gt; +    // active url of the webview when the loadingChanged signal is
&gt; &gt; +    // emitted reflects the failed url, not the previously committed
&gt; &gt; +    // url. This also ensures that if the user does not do a loadHtml
&gt; &gt; +    // with an error page and and unreachable url as a reponse to the
&gt; &gt; +    // failed load, we can still detect the failed url for reloads.
&gt; &gt; +
&gt; &gt; +    // FIXME: Find a way to do this with the C API / add a function to do this to the C API
&gt; &gt; +    toImpl(frame)-&gt;setUnreachableURL(error.url());
&gt; 
&gt; I don&apos;t understand why any of this is needed :(

It&apos;s used to return the URL that has failed to load to the QQuickWebView / it&apos;s clients. Since the load fails while it was still not committed, the url that we get from WebPageProxy::activeURL at the time this load fail is dispatched is still the previous one, unless we set the unreachableURL. I&apos;ll look into getting this solved so we can see if it can be solved a different way as we progress with the cleanup.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:440
&gt; &gt; +    PageViewportController* pvc = webViewPrivate-&gt;viewportController();
&gt; &gt; +    if (pvc)
&gt; &gt; +        pvc-&gt;didCommitLoad();
&gt; 
&gt; Let&apos;s use a better variable name here: pageViewportController
True :) I copied this from the old PageLoadClient, but better variable names never hurt anyone :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826308</commentid>
    <comment_count>11</comment_count>
      <attachid>186817</attachid>
    <who name="Michael Brüning">michael.bruning</who>
    <bug_when>2013-02-06 03:58:55 -0800</bug_when>
    <thetext>Created attachment 186817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826500</commentid>
    <comment_count>12</comment_count>
      <attachid>186817</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-02-06 09:26:10 -0800</bug_when>
    <thetext>Comment on attachment 186817
Patch

r=me

Looks like didFailLoadWithErrorForFrame, didFailProvisionalLoadWithErrorForFrame and dispatchLoadFailed could be merged into one static function though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826508</commentid>
    <comment_count>13</comment_count>
      <attachid>186817</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-02-06 09:38:21 -0800</bug_when>
    <thetext>Comment on attachment 186817
Patch

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

&gt; Source/WebKit2/ChangeLog:15
&gt; +        the current C API and adds FIXMEs to the places that need to be fixed in this part
&gt; +        of the API still.

I would use FIXMEs here since it would be pretty straightforward to just look for references to internal Web* types.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:316
&gt; +    registerPageLoadClient();

Please follow the same style as bug #108920, or convince Simon to use yours :)

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:397
&gt; +static QQuickWebViewPrivate* toQQuickWebViewPrivate(const void* clientInfo)

static inline please

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:436
&gt; +    QQuickWebViewPrivate* webViewPrivate = toQQuickWebViewPrivate(clientInfo);

This could be called &quot;d&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826509</commentid>
    <comment_count>14</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-02-06 09:38:52 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; I would use FIXMEs here since it would be pretty straightforward to just look for references to internal Web* types.
*wouldn&apos;t*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827114</commentid>
    <comment_count>15</comment_count>
      <attachid>186817</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-02-07 00:36:32 -0800</bug_when>
    <thetext>Comment on attachment 186817
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:397
&gt;&gt; +static QQuickWebViewPrivate* toQQuickWebViewPrivate(const void* clientInfo)
&gt; 
&gt; static inline please

Or remove the function altogether when landing because I just landed http://trac.webkit.org/changeset/142073 :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827231</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Brüning">michael.bruning</who>
    <bug_when>2013-02-07 02:57:35 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; I would use FIXMEs here since it would be pretty straightforward to just look for references to internal Web* types.
&gt; *wouldn&apos;t*

I can remove them of course, I just thought it would be a good reminder as in both cases we either need to add C API to keep the functionality and apart from those two, the classes are already cleaned up. But it&apos;s true that we can just as well grep the API for the remaining occurences of toImpl ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827286</commentid>
    <comment_count>17</comment_count>
      <attachid>187052</attachid>
    <who name="Michael Brüning">michael.bruning</who>
    <bug_when>2013-02-07 04:05:06 -0800</bug_when>
    <thetext>Created attachment 187052
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827318</commentid>
    <comment_count>18</comment_count>
    <who name="Michael Brüning">michael.bruning</who>
    <bug_when>2013-02-07 04:35:51 -0800</bug_when>
    <thetext>Committed r142095: &lt;http://trac.webkit.org/changeset/142095&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186619</attachid>
            <date>2013-02-05 07:07:27 -0800</date>
            <delta_ts>2013-02-05 08:53:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108473-20130205160405.patch</filename>
            <type>text/plain</type>
            <size>26795</size>
            <attacher name="Michael Brüning">michael.bruning</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWM5MzMxMjAxY2U3MjJl
OGQ4NDg4MjAyNDcxYzc2NmRmYzExOTE3OC4uYTY0YmFiODVkYjVkMTQ2ODUzMjZkMWRiOGFmY2M0
NzhmMTUwMTFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTAyLTA1ICBNaWNo
YWVsIEJyw7xuaW5nICA8bWljaGFlbC5icnVuaW5nQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRd
W1dLMl0gRm9sZCBRdFdlYlBhZ2VMb2FkQ2xpZW50IGludG8gUVF1aWNrV2ViVmlld1ByaXZhdGUg
YW5kIG1vdmUgdG8gQyBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDg0NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIFF0V2ViUGFnZUxvYWRDbGllbnQgYW5k
IG1vdmVzIHRoZSBmdW5jdGlvbmFsaXR5IGludG8gdGhlCisgICAgICAgIFFRdWlja1dlYlZpZXdQ
cml2YXRlIGFzIG1vc3QgY2FsbGJhY2sgbWV0aG9kcyBhcmUgY2FsbGluZyB0aGUgcHJpdmF0ZSB3
ZWJ2aWV3CisgICAgICAgIGluZGlyZWN0bHkgYW55d2F5LgorCisgICAgICAgIFRoZSBwYXRjaCBh
bHNvIG1vdmVzIGFzIG11Y2ggb2YgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIEMgQVBJIGFzIGlz
IHBvc3NpYmxlIHdpdGgKKyAgICAgICAgdGhlIGN1cnJlbnQgQyBBUEkgYW5kIGFkZHMgRklYTUVz
IHRvIHRoZSBwbGFjZXMgdGhhdCBuZWVkIHRvIGJlIGZpeGVkIGluIHRoaXMgcGFydAorICAgICAg
ICBvZiB0aGUgQVBJIHN0aWxsLgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1aWNrV2ViVmll
d1ByaXZhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OnJl
Z2lzdGVyUGFnZUxvYWRDbGllbnQpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRp
c3BhdGNoTG9hZEZhaWxlZCk6CisgICAgICAgICh0b1FRdWlja1dlYlZpZXdQcml2YXRlKToKKyAg
ICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAg
ICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAg
ICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAg
IChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6Cisg
ICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZv
ckZyYW1lKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRSZWNlaXZlVGl0bGVG
b3JGcmFtZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkU3RhcnRQcm9ncmVz
cyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlUHJvZ3Jlc3MpOgor
ICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmlzaFByb2dyZXNzKToKKyAgICAg
ICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpRdFdlYkVy
cm9yOjp1cmwpOgorICAgICAgICAoV2ViS2l0OjpRdFdlYkVycm9yOjppc0NhbmNlbGxhdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50Lmg6IFJlbW92ZWQu
CisKIDIwMTMtMDItMDUgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29t
PgogCiAgICAgICAgIFtRdF1bV0syXSBSZXBsYWNlIG1vcmUgdXNlcyBvZiBXZWJQYWdlUHJveHkg
d2l0aCBXS1BhZ2UgaW4gUVF1aWNrV2ViVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggYzZlMzE2MmZmOTg0
ZWUxNThiMzQ2M2RlYTM4NjNlNTU5ZDI1M2JjNi4uNzFiMjQ5MWQ1YmQ4OTllYTJlNmNmYjZhYjVj
MTgxNGU5NzllNDgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC03ODYsNyArNzg2LDYgQEAgaGF2ZT8oUVRR
VUlDSykgewogICAgICAgICBVSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaCBcCiAgICAg
ICAgIFVJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuaCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VGaW5kQ2xpZW50LmggXAotICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9h
ZENsaWVudC5oIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBvbGljeUNsaWVudC5o
IFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVNHTm9kZS5oIFwKICAgICAgICAgVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmggXApAQCAtODE0LDcgKzgxMyw2IEBAIGhhdmU/
KFFUUVVJQ0spIHsKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcCBc
CiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuY3BwIFwKICAgICAgICAgVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwIFwKLSAgICAgICAgVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZUxvYWRDbGllbnQuY3BwIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBv
bGljeUNsaWVudC5jcHAgXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlU0dOb2RlLmNw
cCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuY3BwIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmlu
ZGV4IGYxZjEzY2IyNzZlMjJjMDUwNzI0NGNjNzQwZDNiNWJjYjFhODQ0ZmYuLmFkM2ZiOGEwZDgz
Mjg4MWFjODkwY2E5ZjgyMmFjNWEyYTlkODQxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2lu
Y2x1ZGUgIlF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUXRXZWJQYWdlRXZl
bnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiUXRXZWJQYWdlRmluZENsaWVudC5oIgotI2luY2x1ZGUg
IlF0V2ViUGFnZUxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VQb2xpY3lDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJXZWJGaW5kT3B0
aW9ucy5oIgpAQCAtMzE0LDggKzMxMyw4IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6Omlu
aXRpYWxpemUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhCiAgICAg
UVF1aWNrV2ViUGFnZVByaXZhdGUqIGNvbnN0IHBhZ2VWaWV3UHJpdmF0ZSA9IHBhZ2VWaWV3LmRh
dGEoKS0+ZDsKICAgICBwYWdlVmlld1ByaXZhdGUtPmluaXRpYWxpemUod2ViUGFnZVByb3h5Lmdl
dCgpKTsKIAotICAgIHBhZ2VGaW5kQ2xpZW50LnJlc2V0KG5ldyBRdFdlYlBhZ2VGaW5kQ2xpZW50
KHdlYlBhZ2UuZ2V0KCksIHFfcHRyKSk7Ci0gICAgcGFnZUxvYWRDbGllbnQucmVzZXQobmV3IFF0
V2ViUGFnZUxvYWRDbGllbnQod2ViUGFnZS5nZXQoKSwgcV9wdHIpKTsKKyAgICByZWdpc3RlclBh
Z2VMb2FkQ2xpZW50KCk7CisgICAgcGFnZUZpbmRDbGllbnQucmVzZXQobmV3IFF0V2ViUGFnZUZp
bmRDbGllbnQod2ViUGFnZS5nZXQoKSwgcV9wdHIpKTsgICAgCiAgICAgcGFnZVBvbGljeUNsaWVu
dC5yZXNldChuZXcgUXRXZWJQYWdlUG9saWN5Q2xpZW50KHdlYlBhZ2UuZ2V0KCksIHFfcHRyKSk7
CiAgICAgcGFnZVVJQ2xpZW50LnJlc2V0KG5ldyBRdFdlYlBhZ2VVSUNsaWVudCh3ZWJQYWdlLmdl
dCgpLCBxX3B0cikpOwogICAgIG5hdmlnYXRpb25IaXN0b3J5ID0gYWRvcHRQdHIoUVdlYk5hdmln
YXRpb25IaXN0b3J5UHJpdmF0ZTo6Y3JlYXRlSGlzdG9yeSh3ZWJQYWdlLmdldCgpKSk7CkBAIC0z
NDEsNiArMzQwLDE1MiBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0aWFsaXplKFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYQogICAgIHFfcHRyLT5zZXRG
bGFnKFFRdWlja0l0ZW06Okl0ZW1BY2NlcHRzRHJvcHMsIHRydWUpOwogfQogCit2b2lkIFFRdWlj
a1dlYlZpZXdQcml2YXRlOjpyZWdpc3RlclBhZ2VMb2FkQ2xpZW50KCkKK3sKKyAgICBXS1BhZ2VM
b2FkZXJDbGllbnQgbG9hZENsaWVudDsKKyAgICBtZW1zZXQoJmxvYWRDbGllbnQsIDAsIHNpemVv
ZihXS1BhZ2VMb2FkZXJDbGllbnQpKTsKKyAgICBsb2FkQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdl
TG9hZGVyQ2xpZW50Q3VycmVudFZlcnNpb247CisgICAgbG9hZENsaWVudC5jbGllbnRJbmZvID0g
dGhpczsKKyAgICBsb2FkQ2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgPSBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOworICAgIGxvYWRDbGllbnQuZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgPSBkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKKyAgICBsb2FkQ2xpZW50LmRp
ZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSA9IGRpZEZhaWxQcm92aXNpb25h
bExvYWRXaXRoRXJyb3JGb3JGcmFtZTsKKyAgICBsb2FkQ2xpZW50LmRpZENvbW1pdExvYWRGb3JG
cmFtZSA9IGRpZENvbW1pdExvYWRGb3JGcmFtZTsKKyAgICBsb2FkQ2xpZW50LmRpZEZpbmlzaExv
YWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKKyAgICBsb2FkQ2xpZW50LmRpZEZh
aWxMb2FkV2l0aEVycm9yRm9yRnJhbWUgPSBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lOwor
ICAgIGxvYWRDbGllbnQuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lID0gZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOworICAgIGxvYWRDbGllbnQuZGlkUmVjZWl2ZVRp
dGxlRm9yRnJhbWUgPSBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZTsKKyAgICBsb2FkQ2xpZW50LmRp
ZFN0YXJ0UHJvZ3Jlc3MgPSBkaWRTdGFydFByb2dyZXNzOworICAgIGxvYWRDbGllbnQuZGlkQ2hh
bmdlUHJvZ3Jlc3MgPSBkaWRDaGFuZ2VQcm9ncmVzczsKKyAgICBsb2FkQ2xpZW50LmRpZEZpbmlz
aFByb2dyZXNzID0gZGlkRmluaXNoUHJvZ3Jlc3M7CisgICAgbG9hZENsaWVudC5kaWRDaGFuZ2VC
YWNrRm9yd2FyZExpc3QgPSBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3Q7CisgICAgV0tQYWdlU2V0
UGFnZUxvYWRlckNsaWVudCh3ZWJQYWdlLmdldCgpLCAmbG9hZENsaWVudCk7Cit9CisKK3ZvaWQg
UVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpc3BhdGNoTG9hZEZhaWxlZChXS0ZyYW1lUmVmIGZyYW1l
LCBjb25zdCBRdFdlYkVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAoZXJyb3IuaXNDYW5jZWxsYXRp
b24oKSkgeworICAgICAgICBsb2FkRGlkU3RvcCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgUV9RKFFRdWlja1dlYlZpZXcpOworICAgIGludCBlcnJvckNvZGUgPSBlcnJvci5lcnJv
ckNvZGUoKTsKKworICAgIGlmIChlcnJvckNvZGUgPT0ga1dLRXJyb3JDb2RlRnJhbWVMb2FkSW50
ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSB8fCBlcnJvckNvZGUgPT0ga1dLRXJyb3JDb2RlUGx1Z0lu
V2lsbEhhbmRsZUxvYWQpIHsKKyAgICAgICAgLy8gVGhlIGFjdGl2ZSB1cmwgbWlnaHQgaGF2ZSBj
aGFuZ2VkCisgICAgICAgIHEtPmVtaXRVcmxDaGFuZ2VJZk5lZWRlZCgpOworCisgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IExvYWRTdGFydGVkU3RhdHVzIGhhcyBhIGNvdW50ZXJwYXJ0IHdoZW4g
ZS5nLiByZXF1ZXN0aW5nIGEgZG93bmxvYWQuCisgICAgICAgIGxvYWREaWRTdWNjZWVkKCk7CisK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIHNldCB0aGUgdW5yZWFjaGFibGUg
dXJsIHVuY29uZGl0aW9uYWxseSBzbyB0aGF0IHRoZSBjdXJyZW50CisgICAgLy8gYWN0aXZlIHVy
bCBvZiB0aGUgd2VidmlldyB3aGVuIHRoZSBsb2FkaW5nQ2hhbmdlZCBzaWduYWwgaXMKKyAgICAv
LyBlbWl0dGVkIHJlZmxlY3RzIHRoZSBmYWlsZWQgdXJsLCBub3QgdGhlIHByZXZpb3VzbHkgY29t
bWl0dGVkCisgICAgLy8gdXJsLiBUaGlzIGFsc28gZW5zdXJlcyB0aGF0IGlmIHRoZSB1c2VyIGRv
ZXMgbm90IGRvIGEgbG9hZEh0bWwKKyAgICAvLyB3aXRoIGFuIGVycm9yIHBhZ2UgYW5kIGFuZCB1
bnJlYWNoYWJsZSB1cmwgYXMgYSByZXBvbnNlIHRvIHRoZQorICAgIC8vIGZhaWxlZCBsb2FkLCB3
ZSBjYW4gc3RpbGwgZGV0ZWN0IHRoZSBmYWlsZWQgdXJsIGZvciByZWxvYWRzLgorCisgICAgLy8g
RklYTUU6IEZpbmQgYSB3YXkgdG8gZG8gdGhpcyB3aXRoIHRoZSBDIEFQSSAvIGFkZCBhIGZ1bmN0
aW9uIHRvIGRvIHRoaXMgdG8gdGhlIEMgQVBJCisgICAgdG9JbXBsKGZyYW1lKS0+c2V0VW5yZWFj
aGFibGVVUkwoZXJyb3IudXJsKCkpOworICAgIHEtPmVtaXRVcmxDaGFuZ2VJZk5lZWRlZCgpOwor
CisgICAgbG9hZERpZEZhaWwoZXJyb3IpOworfQorCitzdGF0aWMgUVF1aWNrV2ViVmlld1ByaXZh
dGUqIHRvUVF1aWNrV2ViVmlld1ByaXZhdGUoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICBBU1NFUlQoY2xpZW50SW5mbyk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UVF1aWNr
V2ViVmlld1ByaXZhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Cit9CisKK3Zv
aWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCit7CisgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsICA9IGFkb3B0V0soV0tGcmFt
ZUNvcHlQcm92aXNpb25hbFVSTChmcmFtZSkpOworICAgIHRvUVF1aWNrV2ViVmlld1ByaXZhdGUo
Y2xpZW50SW5mbyktPnByb3Zpc2lvbmFsTG9hZERpZFN0YXJ0KHRvV1RGU3RyaW5nKHVybC5nZXQo
KSkpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBpZiAoIVdLRnJh
bWVJc01haW5GcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIFdLUmV0YWluUHRy
PFdLVVJMUmVmPiB1cmwgID0gYWRvcHRXSyhXS0ZyYW1lQ29weVByb3Zpc2lvbmFsVVJMKGZyYW1l
KSk7CisgICAgdG9RUXVpY2tXZWJWaWV3UHJpdmF0ZShjbGllbnRJbmZvKS0+ZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHRvV1RGU3RyaW5nKHVybC5nZXQoKSkpOwor
fQorCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0
aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0Vycm9yUmVmIGVy
cm9yLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgaWYgKCFXS0Zy
YW1lSXNNYWluRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm47CisgICAgdG9RUXVpY2tXZWJW
aWV3UHJpdmF0ZShjbGllbnRJbmZvKS0+ZGlzcGF0Y2hMb2FkRmFpbGVkKGZyYW1lLCBlcnJvcik7
Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZENvbW1pdExvYWRGb3JGcmFtZShX
S1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKK3sKKyAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisgICAgICAgIHJl
dHVybjsKKyAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZSogd2ViVmlld1ByaXZhdGUgPSB0b1FRdWlj
a1dlYlZpZXdQcml2YXRlKGNsaWVudEluZm8pOworCisgICAgUGFnZVZpZXdwb3J0Q29udHJvbGxl
ciogcHZjID0gd2ViVmlld1ByaXZhdGUtPnZpZXdwb3J0Q29udHJvbGxlcigpOworICAgIGlmIChw
dmMpCisgICAgICAgIHB2Yy0+ZGlkQ29tbWl0TG9hZCgpOworICAgIHdlYlZpZXdQcml2YXRlLT5s
b2FkRGlkQ29tbWl0KCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmlz
aExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFt
ZSkpCisgICAgICAgIHJldHVybjsKKyAgICB0b1FRdWlja1dlYlZpZXdQcml2YXRlKGNsaWVudElu
Zm8pLT5sb2FkRGlkU3VjY2VlZCgpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpk
aWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwg
V0tFcnJvclJlZiBlcnJvciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorewor
ICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworICAg
IHRvUVF1aWNrV2ViVmlld1ByaXZhdGUoY2xpZW50SW5mbyktPmRpc3BhdGNoTG9hZEZhaWxlZChm
cmFtZSwgZXJyb3IpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1Nh
bWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIHR5cGUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkp
CisgICAgICAgIHJldHVybjsKKyAgICB0b1FRdWlja1dlYlZpZXdQcml2YXRlKGNsaWVudEluZm8p
LT5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlld1By
aXZhdGU6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgdGl0
bGUsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
K3sKKyAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybjsK
KyAgICB0b1FRdWlja1dlYlZpZXdQcml2YXRlKGNsaWVudEluZm8pLT50aXRsZURpZENoYW5nZSgp
OworfQorCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRTdGFydFByb2dyZXNzKFdLUGFn
ZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB0b1FRdWlja1dlYlZpZXdQcml2
YXRlKGNsaWVudEluZm8pLT5sb2FkUHJvZ3Jlc3NEaWRDaGFuZ2UoMCk7Cit9CisKK3ZvaWQgUVF1
aWNrV2ViVmlld1ByaXZhdGU6OmRpZENoYW5nZVByb2dyZXNzKFdLUGFnZVJlZiBwYWdlLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHRvUVF1aWNrV2ViVmlld1ByaXZhdGUoY2xpZW50
SW5mbyktPmxvYWRQcm9ncmVzc0RpZENoYW5nZShXS1BhZ2VHZXRFc3RpbWF0ZWRQcm9ncmVzcyhw
YWdlKSAqIDEwMCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmlzaFBy
b2dyZXNzKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB0b1FRdWlj
a1dlYlZpZXdQcml2YXRlKGNsaWVudEluZm8pLT5sb2FkUHJvZ3Jlc3NEaWRDaGFuZ2UoMTAwKTsK
K30KKwordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0
KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLCBXS0FycmF5UmVmLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKQoreworICAgIHRvUVF1aWNrV2ViVmlld1ByaXZhdGUoY2xpZW50SW5m
byktPmJhY2tGb3J3YXJkTGlzdERpZENoYW5nZSgpOworfQorCiB2b2lkIFFRdWlja1dlYlZpZXdQ
cml2YXRlOjpsb2FkRGlkU3RvcCgpCiB7CiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgKaW5kZXgg
MzM4YTExMjJiZGZjZTgwMmYzZmM4NWM0ZWM3N2FhMzZlZGM2MTQzMi4uNDU3ZGU2NWUyNTI0OTdi
OGRjNjUyNjE4YjYxNGFlZWFmMzA5OTI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCkBAIC01MSw3ICs1MSw2IEBAIGNsYXNzIFBs
YXRmb3JtV2ViVmlldzsKIG5hbWVzcGFjZSBXZWJLaXQgewogc3RydWN0IFF0UmVmQ291bnRlZE5l
dHdvcmtSZXF1ZXN0RGF0YTsKIGNsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDsK
LWNsYXNzIFF0V2ViUGFnZUxvYWRDbGllbnQ7CiBjbGFzcyBRdFdlYlBhZ2VGaW5kQ2xpZW50Owog
Y2xhc3MgUXRXZWJQYWdlUG9saWN5Q2xpZW50OwogY2xhc3MgUXRXZWJQYWdlVUlDbGllbnQ7CkBA
IC0yMjEsNyArMjIwLDYgQEAgcHJpdmF0ZToKIAogICAgIGZyaWVuZCBjbGFzcyBRV2ViS2l0VGVz
dDsKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
UXQ7Ci0gICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6UXRXZWJQYWdlTG9hZENsaWVudDsKICAgICBm
cmllbmQgY2xhc3MgV2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OwogICAgIGZyaWVuZCBjbGFz
cyBXZWJLaXQ6OlF0V2ViUGFnZVBvbGljeUNsaWVudDsKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0
OjpRdFdlYlBhZ2VVSUNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaAppbmRleCAyMWVmZGFlNDAwZThlYzkxZDdiMzFhODUw
NDI5MDVjYmRiOTMyZGI0Li41MmUzMGMzNzFhYTZhNGE1YjJjNmYzMzU2MzFhYzZhZDM2MzAyYTA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZp
ZXdfcF9wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2
aWV3X3BfcC5oCkBAIC00NCw3ICs0NCw2IEBAIGNsYXNzIFF0RGlhbG9nUnVubmVyOwogY2xhc3Mg
UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OwogY2xhc3MgUXRXZWJDb250ZXh0OwogY2xh
c3MgUXRXZWJFcnJvcjsKLWNsYXNzIFF0V2ViUGFnZUxvYWRDbGllbnQ7CiBjbGFzcyBRdFdlYlBh
Z2VQb2xpY3lDbGllbnQ7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiB9CkBAIC0xNTksNiArMTU4LDIz
IEBAIHByb3RlY3RlZDoKICAgICAgICAgUVBvaW50RiBhZGp1c3QoY29uc3QgUVBvaW50RiYpOwog
ICAgIH07CiAKKyAgICB2b2lkIHJlZ2lzdGVyUGFnZUxvYWRDbGllbnQoKTsKKyAgICB2b2lkIGRp
c3BhdGNoTG9hZEZhaWxlZChXS0ZyYW1lUmVmLCBjb25zdCBXZWJLaXQ6OlF0V2ViRXJyb3ImKTsK
KworICAgIC8vIFdLUGFnZUxvYWRDbGllbnQgY2FsbGJhY2tzLgorICAgIHN0YXRpYyB2b2lkIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5
cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFn
ZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9y
RnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0Vycm9yUmVmLCBXS1R5cGVSZWYgdXNlckRh
dGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZENvbW1pdExv
YWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZy
YW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZy
YW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tFcnJvclJlZiwgV0tUeXBlUmVmIHVzZXJEYXRh
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1NhbWVEb2N1bWVu
dE5hdmlnYXRpb25UeXBlLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdLUGFnZVJlZiwg
V0tTdHJpbmdSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkU3RhcnRQcm9ncmVzcyhXS1BhZ2VSZWYs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVByb2dy
ZXNzKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQg
ZGlkRmluaXNoUHJvZ3Jlc3MoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoV0tQYWdlUmVmLCBXS0JhY2tG
b3J3YXJkTGlzdEl0ZW1SZWYsIFdLQXJyYXlSZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwor
CiAgICAgUVF1aWNrV2ViVmlld1ByaXZhdGUoUVF1aWNrV2ViVmlldyogdmlld3BvcnQpOwogICAg
IFJlZlB0cjxXZWJLaXQ6OlF0V2ViQ29udGV4dD4gY29udGV4dDsKICAgICBSZWZQdHI8V2ViS2l0
OjpXZWJQYWdlUHJveHk+IHdlYlBhZ2VQcm94eTsKQEAgLTE3MCw3ICsxODYsNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgT3duUHRyPFFXZWJOYXZpZ2F0aW9uSGlzdG9yeT4gbmF2aWdhdGlvbkhpc3Rvcnk7
CiAgICAgT3duUHRyPFFXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXM7CiAKLSAgICBRU2NvcGVk
UG9pbnRlcjxXZWJLaXQ6OlF0V2ViUGFnZUxvYWRDbGllbnQ+IHBhZ2VMb2FkQ2xpZW50OwogICAg
IFFTY29wZWRQb2ludGVyPFdlYktpdDo6UXRXZWJQYWdlRmluZENsaWVudD4gcGFnZUZpbmRDbGll
bnQ7CiAgICAgUVNjb3BlZFBvaW50ZXI8V2ViS2l0OjpRdFdlYlBhZ2VQb2xpY3lDbGllbnQ+IHBh
Z2VQb2xpY3lDbGllbnQ7CiAgICAgUVNjb3BlZFBvaW50ZXI8V2ViS2l0OjpRdFdlYlBhZ2VVSUNs
aWVudD4gcGFnZVVJQ2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViRXJyb3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJy
b3IuY3BwCmluZGV4IDc1ODg0ZjQ0MGNmMGE5YjUyYWMzNWI0MDU5Nzg1YzgyYmVhMmM3ZDAuLjQy
YTQ0OWRhNTY1NmM2OTE4MjgzNTZmYzFmOTg3OGUxYTdmOGQ4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJFcnJvci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgaW50IFF0V2Vi
RXJyb3I6OmVycm9yQ29kZSgpIGNvbnN0CiAKIFFTdHJpbmcgUXRXZWJFcnJvcjo6dXJsKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gdG9JbXBsKGVycm9yLmdldCgpKS0+ZmFpbGluZ1VSTCgpOworICAg
IHJldHVybiBXS1N0cmluZ0NvcHlRU3RyaW5nKFdLVVJMQ29weVN0cmluZyhXS0Vycm9yQ29weUZh
aWxpbmdVUkwoZXJyb3IuZ2V0KCkpKSk7CiB9CiAKIFFTdHJpbmcgUXRXZWJFcnJvcjo6ZGVzY3Jp
cHRpb24oKSBjb25zdApAQCAtNjcsNiArNjcsNyBAQCBRU3RyaW5nIFF0V2ViRXJyb3I6OmRlc2Ny
aXB0aW9uKCkgY29uc3QKIAogYm9vbCBRdFdlYkVycm9yOjppc0NhbmNlbGxhdGlvbigpIGNvbnN0
CiB7CisgICAgLy8gRklYTUU6IEFkZCBDIEFQSSB0byByZXR1cm4gdGhlIGNhbmNlbGxhdGlvbiBi
aXQgb3IgZmluZCBhIHdheSB0byBhY2Nlc3MgdGhlIHBsYXRmb3JtRXJyb3IgZnJvbSB0aGUgRXJy
b3JSZWYuCiAgICAgcmV0dXJuIHRvSW1wbChlcnJvci5nZXQoKSktPnBsYXRmb3JtRXJyb3IoKS5p
c0NhbmNlbGxhdGlvbigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRXZWJQYWdlTG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlTG9hZENsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGI4NzdjYThkZjc1ODFkYzk1ZTA4ODNmODI0Njk4YTgyMzllMjFmNzcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjE2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUXRX
ZWJQYWdlTG9hZENsaWVudC5oIgotCi0jaW5jbHVkZSAiUXRXZWJFcnJvci5oIgotI2luY2x1ZGUg
InFxdWlja3dlYnZpZXdfcF9wLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotUXRXZWJQYWdlTG9hZENsaWVudDo6UXRXZWJQYWdlTG9hZENsaWVu
dChXS1BhZ2VSZWYgcGFnZVJlZiwgUVF1aWNrV2ViVmlldyogd2ViVmlldykKLSAgICA6IG1fd2Vi
Vmlldyh3ZWJWaWV3KQotewotICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkQ2xpZW50OwotICAg
IG1lbXNldCgmbG9hZENsaWVudCwgMCwgc2l6ZW9mKFdLUGFnZUxvYWRlckNsaWVudCkpOwotICAg
IGxvYWRDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lvbjsK
LSAgICBsb2FkQ2xpZW50LmNsaWVudEluZm8gPSB0aGlzOwotICAgIGxvYWRDbGllbnQuZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSA9IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWU7Ci0gICAgbG9hZENsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWRGb3JGcmFtZSA9IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lOwotICAgIGxvYWRDbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJv
ckZvckZyYW1lID0gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lOwotICAg
IGxvYWRDbGllbnQuZGlkQ29tbWl0TG9hZEZvckZyYW1lID0gZGlkQ29tbWl0TG9hZEZvckZyYW1l
OwotICAgIGxvYWRDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZv
ckZyYW1lOwotICAgIGxvYWRDbGllbnQuZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSA9IGRp
ZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWU7Ci0gICAgbG9hZENsaWVudC5kaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uRm9yRnJhbWUgPSBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU7
Ci0gICAgbG9hZENsaWVudC5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSA9IGRpZFJlY2VpdmVUaXRs
ZUZvckZyYW1lOwotICAgIGxvYWRDbGllbnQuZGlkU3RhcnRQcm9ncmVzcyA9IGRpZFN0YXJ0UHJv
Z3Jlc3M7Ci0gICAgbG9hZENsaWVudC5kaWRDaGFuZ2VQcm9ncmVzcyA9IGRpZENoYW5nZVByb2dy
ZXNzOwotICAgIGxvYWRDbGllbnQuZGlkRmluaXNoUHJvZ3Jlc3MgPSBkaWRGaW5pc2hQcm9ncmVz
czsKLSAgICBsb2FkQ2xpZW50LmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCA9IGRpZENoYW5nZUJh
Y2tGb3J3YXJkTGlzdDsKLSAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2VSZWYsICZs
b2FkQ2xpZW50KTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZChjb25zdCBXVEY6OlN0cmluZyYgdXJsKQotewotICAgIG1fd2ViVmlldy0+ZF9m
dW5jKCktPnByb3Zpc2lvbmFsTG9hZERpZFN0YXJ0KHVybCk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdl
TG9hZENsaWVudDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNv
bnN0IFdURjo6U3RyaW5nJiB1cmwpCi17Ci0gICAgbV93ZWJWaWV3LT5kX2Z1bmMoKS0+ZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHVybCk7Ci19Ci0KLXZvaWQgUXRX
ZWJQYWdlTG9hZENsaWVudDo6ZGlkQ29tbWl0TG9hZCgpCi17Ci0gICAgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlciogcHZjID0gbV93ZWJWaWV3LT5kX2Z1bmMoKS0+dmlld3BvcnRDb250cm9sbGVyKCk7
Ci0gICAgaWYgKHB2YykKLSAgICAgICAgcHZjLT5kaWRDb21taXRMb2FkKCk7Ci0gICAgbV93ZWJW
aWV3LT5kX2Z1bmMoKS0+bG9hZERpZENvbW1pdCgpOwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRD
bGllbnQ6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24oKQotewotICAgIG1fd2ViVmlldy0+ZF9m
dW5jKCktPmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24oKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VM
b2FkQ2xpZW50OjpkaWRSZWNlaXZlVGl0bGUoKQotewotICAgIG1fd2ViVmlldy0+ZF9mdW5jKCkt
PnRpdGxlRGlkQ2hhbmdlKCk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkQ2hh
bmdlUHJvZ3Jlc3MoaW50IGxvYWRQcm9ncmVzcykKLXsKLSAgICBtX3dlYlZpZXctPmRfZnVuYygp
LT5sb2FkUHJvZ3Jlc3NEaWRDaGFuZ2UobG9hZFByb2dyZXNzKTsKLX0KLQotdm9pZCBRdFdlYlBh
Z2VMb2FkQ2xpZW50OjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoKQotewotICAgIG1fd2ViVmll
dy0+ZF9mdW5jKCktPmJhY2tGb3J3YXJkTGlzdERpZENoYW5nZSgpOwotfQotCi12b2lkIFF0V2Vi
UGFnZUxvYWRDbGllbnQ6OmRpc3BhdGNoTG9hZFN1Y2NlZWRlZCgpCi17Ci0gICAgbV93ZWJWaWV3
LT5kX2Z1bmMoKS0+bG9hZERpZFN1Y2NlZWQoKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xp
ZW50OjpkaXNwYXRjaExvYWRTdG9wcGVkKCkKLXsKLSAgICBtX3dlYlZpZXctPmRfZnVuYygpLT5s
b2FkRGlkU3RvcCgpOwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpc3BhdGNoTG9h
ZEZhaWxlZChXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUXRXZWJFcnJvciYgZXJyb3IpCi17
Ci0gICAgaWYgKGVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpIHsKLSAgICAgICAgZGlzcGF0Y2hMb2Fk
U3RvcHBlZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaW50IGVycm9yQ29kZSA9
IGVycm9yLmVycm9yQ29kZSgpOwotCi0gICAgaWYgKGVycm9yQ29kZSA9PSBrV0tFcnJvckNvZGVG
cmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlIHx8IGVycm9yQ29kZSA9PSBrV0tFcnJv
ckNvZGVQbHVnSW5XaWxsSGFuZGxlTG9hZCkgewotICAgICAgICAvLyBUaGUgYWN0aXZlIHVybCBt
aWdodCBoYXZlIGNoYW5nZWQKLSAgICAgICAgbV93ZWJWaWV3LT5lbWl0VXJsQ2hhbmdlSWZOZWVk
ZWQoKTsKLQotICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBMb2FkU3RhcnRlZFN0YXR1cyBoYXMg
YSBjb3VudGVycGFydCB3aGVuIGUuZy4gcmVxdWVzdGluZyBhIGRvd25sb2FkLgotICAgICAgICBk
aXNwYXRjaExvYWRTdWNjZWVkZWQoKTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Ly8gV2Ugc2V0IHRoZSB1bnJlYWNoYWJsZSB1cmwgdW5jb25kaXRpb25hbGx5IHNvIHRoYXQgdGhl
IGN1cnJlbnQKLSAgICAvLyBhY3RpdmUgdXJsIG9mIHRoZSB3ZWJ2aWV3IHdoZW4gdGhlIGxvYWRp
bmdDaGFuZ2VkIHNpZ25hbCBpcwotICAgIC8vIGVtaXR0ZWQgcmVmbGVjdHMgdGhlIGZhaWxlZCB1
cmwsIG5vdCB0aGUgcHJldmlvdXNseSBjb21taXR0ZWQKLSAgICAvLyB1cmwuIFRoaXMgYWxzbyBl
bnN1cmVzIHRoYXQgaWYgdGhlIHVzZXIgZG9lcyBub3QgZG8gYSBsb2FkSHRtbAotICAgIC8vIHdp
dGggYW4gZXJyb3IgcGFnZSBhbmQgYW5kIHVucmVhY2hhYmxlIHVybCBhcyBhIHJlcG9uc2UgdG8g
dGhlCi0gICAgLy8gZmFpbGVkIGxvYWQsIHdlIGNhbiBzdGlsbCBkZXRlY3QgdGhlIGZhaWxlZCB1
cmwgZm9yIHJlbG9hZHMuCi0gICAgZnJhbWUtPnNldFVucmVhY2hhYmxlVVJMKGVycm9yLnVybCgp
KTsKLSAgICBtX3dlYlZpZXctPmVtaXRVcmxDaGFuZ2VJZk5lZWRlZCgpOwotCi0gICAgbV93ZWJW
aWV3LT5kX2Z1bmMoKS0+bG9hZERpZEZhaWwoZXJyb3IpOwotfQotCi1zdGF0aWMgUXRXZWJQYWdl
TG9hZENsaWVudCogdG9RdFdlYlBhZ2VMb2FkQ2xpZW50KGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Ci17Ci0gICAgQVNTRVJUKGNsaWVudEluZm8pOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PFF0V2ViUGFnZUxvYWRDbGllbnQqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci19
Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKLXsKLSAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAg
ICAgIHJldHVybjsKLSAgICB0b1F0V2ViUGFnZUxvYWRDbGllbnQoY2xpZW50SW5mbyktPmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKHRvSW1wbChmcmFtZSktPnByb3Zpc2lvbmFsVVJMKCkpOwotfQot
Ci12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBl
UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIGlmICghV0tGcmFtZUlzTWFpbkZy
YW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViRnJhbWVQcm94eSogd2tmcmFt
ZSA9IHRvSW1wbChmcmFtZSk7Ci0gICAgdG9RdFdlYlBhZ2VMb2FkQ2xpZW50KGNsaWVudEluZm8p
LT5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQod2tmcmFtZS0+cHJv
dmlzaW9uYWxVUkwoKSk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFt
ZSwgV0tFcnJvclJlZiBlcnJvciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQot
ewotICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHRvUXRXZWJQYWdlTG9hZENsaWVudChjbGllbnRJbmZvKS0+ZGlzcGF0Y2hMb2FkRmFpbGVk
KHRvSW1wbChmcmFtZSksIGVycm9yKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50Ojpk
aWRDb21taXRMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVS
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJh
bWUoZnJhbWUpKQotICAgICAgICByZXR1cm47Ci0gICAgdG9RdFdlYlBhZ2VMb2FkQ2xpZW50KGNs
aWVudEluZm8pLT5kaWRDb21taXRMb2FkKCk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVu
dDo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tU
eXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIGlmICghV0tGcmFtZUlzTWFp
bkZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHRvUXRXZWJQYWdlTG9hZENsaWVu
dChjbGllbnRJbmZvKS0+ZGlzcGF0Y2hMb2FkU3VjY2VlZGVkKCk7Ci19Ci0KLXZvaWQgUXRXZWJQ
YWdlTG9hZENsaWVudDo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdL
RnJhbWVSZWYgZnJhbWUsIFdLRXJyb3JSZWYgZXJyb3IsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKLXsKLSAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAg
ICAgIHJldHVybjsKLSAgICB0b1F0V2ViUGFnZUxvYWRDbGllbnQoY2xpZW50SW5mbyktPmRpc3Bh
dGNoTG9hZEZhaWxlZCh0b0ltcGwoZnJhbWUpLCBlcnJvcik7Ci19Ci0KLXZvaWQgUXRXZWJQYWdl
TG9hZENsaWVudDo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLUGFnZVJlZiwg
V0tGcmFtZVJlZiBmcmFtZSwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSB0eXBlLCBXS1R5
cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgaWYgKCFXS0Zy
YW1lSXNNYWluRnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm47Ci0gICAgdG9RdFdlYlBhZ2VM
b2FkQ2xpZW50KGNsaWVudEluZm8pLT5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCk7Ci19Ci0K
LXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tQYWdl
UmVmLCBXS1N0cmluZ1JlZiB0aXRsZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1l
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIHRvUXRXZWJQYWdlTG9hZENsaWVudChjbGllbnRJbmZv
KS0+ZGlkUmVjZWl2ZVRpdGxlKCk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlk
U3RhcnRQcm9ncmVzcyhXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAg
dG9RdFdlYlBhZ2VMb2FkQ2xpZW50KGNsaWVudEluZm8pLT5kaWRDaGFuZ2VQcm9ncmVzcygwKTsK
LX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRDaGFuZ2VQcm9ncmVzcyhXS1BhZ2VS
ZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICB0b1F0V2ViUGFnZUxvYWRD
bGllbnQoY2xpZW50SW5mbyktPmRpZENoYW5nZVByb2dyZXNzKFdLUGFnZUdldEVzdGltYXRlZFBy
b2dyZXNzKHBhZ2UpICogMTAwKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRG
aW5pc2hQcm9ncmVzcyhXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAg
dG9RdFdlYlBhZ2VMb2FkQ2xpZW50KGNsaWVudEluZm8pLT5kaWRDaGFuZ2VQcm9ncmVzcygxMDAp
OwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlz
dChXS1BhZ2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiwgV0tBcnJheVJlZiwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbykKLXsKLSAgICB0b1F0V2ViUGFnZUxvYWRDbGllbnQoY2xpZW50SW5m
byktPmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJr
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VMb2Fk
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVu
dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjhiYWMxNjg4NTU5ZDhhZTBlNTg0
YzFkY2FjZDdjYTlmOGI0MzVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHBy
b2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lm
bmRlZiBRdFdlYlBhZ2VMb2FkQ2xpZW50X2gKLSNkZWZpbmUgUXRXZWJQYWdlTG9hZENsaWVudF9o
Ci0KLSNpbmNsdWRlIDxRdEdsb2JhbD4KLSNpbmNsdWRlIDxXZWJGcmFtZVByb3h5Lmg+Ci0jaW5j
bHVkZSA8V0tQYWdlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLVFUX0JF
R0lOX05BTUVTUEFDRQotY2xhc3MgUVVybDsKLVFUX0VORF9OQU1FU1BBQ0UKLQotY2xhc3MgUVF1
aWNrV2ViVmlldzsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFF0V2ViRXJyb3I7Ci0K
LWNsYXNzIFF0V2ViUGFnZUxvYWRDbGllbnQgewotcHVibGljOgotICAgIFF0V2ViUGFnZUxvYWRD
bGllbnQoV0tQYWdlUmVmLCBRUXVpY2tXZWJWaWV3Kik7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIHZvaWQgZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdURjo6U3RyaW5n
Jik7Ci0gICAgdm9pZCBkaWRDb21taXRMb2FkKCk7Ci0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uKCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlVGl0bGUoKTsKLSAgICB2b2lkIGRpZENo
YW5nZVByb2dyZXNzKGludCk7Ci0gICAgdm9pZCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoKTsK
LQotICAgIHZvaWQgZGlzcGF0Y2hMb2FkU3VjY2VlZGVkKCk7Ci0gICAgdm9pZCBkaXNwYXRjaExv
YWRTdG9wcGVkKCk7Ci0gICAgdm9pZCBkaXNwYXRjaExvYWRGYWlsZWQoV2ViRnJhbWVQcm94eSos
IGNvbnN0IFF0V2ViRXJyb3ImKTsKLQotCi0gICAgLy8gV0tQYWdlTG9hZENsaWVudCBjYWxsYmFj
a3MuCi0gICAgc3RhdGljIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1Bh
Z2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYgdXNlckRh
dGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxQcm92
aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLRXJy
b3JSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAg
c3RhdGljIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwg
V0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMg
dm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVS
ZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotICAgIHN0YXRpYyB2b2lkIGRp
ZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0Vycm9y
UmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotICAgIHN0
YXRpYyB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXS1BhZ2VSZWYsIFdL
RnJhbWVSZWYsIFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIFdLVHlwZVJlZiB1c2VyRGF0
YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVRp
dGxlRm9yRnJhbWUoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVm
IHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRT
dGFydFByb2dyZXNzKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgc3Rh
dGljIHZvaWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hQcm9ncmVzcyhXS1BhZ2VSZWYsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOwotICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJk
TGlzdChXS1BhZ2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiwgV0tBcnJheVJlZiwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci0KLSAgICBRUXVpY2tXZWJWaWV3KiBtX3dlYlZpZXc7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJraXQKLQotI2VuZGlmIC8vIFF0V2ViUGFnZUxvYWRDbGll
bnRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186633</attachid>
            <date>2013-02-05 08:53:34 -0800</date>
            <delta_ts>2013-02-05 09:04:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108473-20130205175012.patch</filename>
            <type>text/plain</type>
            <size>30640</size>
            <attacher name="Michael Brüning">michael.bruning</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWM5MzMxMjAxY2U3MjJl
OGQ4NDg4MjAyNDcxYzc2NmRmYzExOTE3OC4uODM5NGMxNjllNTNkZDQ0ZTkxMTkxOWIxMWI4MjI1
OTdjOTJhZGE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEzLTAyLTA1ICBNaWNo
YWVsIEJyw7xuaW5nICA8bWljaGFlbC5icnVuaW5nQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRd
W1dLMl0gRm9sZCBRdFdlYlBhZ2VMb2FkQ2xpZW50IGludG8gUVF1aWNrV2ViVmlld1ByaXZhdGUg
YW5kIG1vdmUgdG8gQyBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDg0NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIFF0V2ViUGFnZUxvYWRDbGllbnQgYW5k
IG1vdmVzIHRoZSBmdW5jdGlvbmFsaXR5IGludG8gdGhlCisgICAgICAgIFFRdWlja1dlYlZpZXdQ
cml2YXRlIGFzIG1vc3QgY2FsbGJhY2sgbWV0aG9kcyBhcmUgY2FsbGluZyB0aGUgcHJpdmF0ZSB3
ZWJ2aWV3CisgICAgICAgIGluZGlyZWN0bHkgYW55d2F5LgorCisgICAgICAgIFRoZSBwYXRjaCBh
bHNvIG1vdmVzIGFzIG11Y2ggb2YgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIEMgQVBJIGFzIGlz
IHBvc3NpYmxlIHdpdGgKKyAgICAgICAgdGhlIGN1cnJlbnQgQyBBUEkgYW5kIGFkZHMgRklYTUVz
IHRvIHRoZSBwbGFjZXMgdGhhdCBuZWVkIHRvIGJlIGZpeGVkIGluIHRoaXMgcGFydAorICAgICAg
ICBvZiB0aGUgQVBJIHN0aWxsLgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1aWNrV2ViVmll
d1ByaXZhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OnJl
Z2lzdGVyUGFnZUxvYWRDbGllbnQpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRp
c3BhdGNoTG9hZEZhaWxlZCk6CisgICAgICAgICh0b1FRdWlja1dlYlZpZXdQcml2YXRlKToKKyAg
ICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAg
ICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAg
ICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAg
IChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6Cisg
ICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZv
ckZyYW1lKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRSZWNlaXZlVGl0bGVG
b3JGcmFtZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkU3RhcnRQcm9ncmVz
cyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlUHJvZ3Jlc3MpOgor
ICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmlzaFByb2dyZXNzKToKKyAgICAg
ICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpOgorICAg
ICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCk6Cisg
ICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dHJhbnNwYXJlbnRCYWNrZ3JvdW5kKToKKyAg
ICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpsb2FkUHJvZ3Jlc3NEaWRDaGFuZ2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpRdFdlYkVy
cm9yOjp1cmwpOgorICAgICAgICAoV2ViS2l0OjpRdFdlYkVycm9yOjppc0NhbmNlbGxhdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50Lmg6IFJlbW92ZWQu
CisKIDIwMTMtMDItMDUgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29t
PgogCiAgICAgICAgIFtRdF1bV0syXSBSZXBsYWNlIG1vcmUgdXNlcyBvZiBXZWJQYWdlUHJveHkg
d2l0aCBXS1BhZ2UgaW4gUVF1aWNrV2ViVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggYzZlMzE2MmZmOTg0
ZWUxNThiMzQ2M2RlYTM4NjNlNTU5ZDI1M2JjNi4uNzFiMjQ5MWQ1YmQ4OTllYTJlNmNmYjZhYjVj
MTgxNGU5NzllNDgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC03ODYsNyArNzg2LDYgQEAgaGF2ZT8oUVRR
VUlDSykgewogICAgICAgICBVSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaCBcCiAgICAg
ICAgIFVJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuaCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VGaW5kQ2xpZW50LmggXAotICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9h
ZENsaWVudC5oIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBvbGljeUNsaWVudC5o
IFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVNHTm9kZS5oIFwKICAgICAgICAgVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmggXApAQCAtODE0LDcgKzgxMyw2IEBAIGhhdmU/
KFFUUVVJQ0spIHsKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcCBc
CiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuY3BwIFwKICAgICAgICAgVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwIFwKLSAgICAgICAgVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZUxvYWRDbGllbnQuY3BwIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBv
bGljeUNsaWVudC5jcHAgXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlU0dOb2RlLmNw
cCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuY3BwIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmlu
ZGV4IGYxZjEzY2IyNzZlMjJjMDUwNzI0NGNjNzQwZDNiNWJjYjFhODQ0ZmYuLjJjMzEzYTdkMmY3
YzRiNzdjNjUwZmY3Mzk5YTMzOTI1NjA3OTcwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2lu
Y2x1ZGUgIlF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUXRXZWJQYWdlRXZl
bnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiUXRXZWJQYWdlRmluZENsaWVudC5oIgotI2luY2x1ZGUg
IlF0V2ViUGFnZUxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VQb2xpY3lDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJXZWJGaW5kT3B0
aW9ucy5oIgpAQCAtMzE0LDggKzMxMyw4IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6Omlu
aXRpYWxpemUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhCiAgICAg
UVF1aWNrV2ViUGFnZVByaXZhdGUqIGNvbnN0IHBhZ2VWaWV3UHJpdmF0ZSA9IHBhZ2VWaWV3LmRh
dGEoKS0+ZDsKICAgICBwYWdlVmlld1ByaXZhdGUtPmluaXRpYWxpemUod2ViUGFnZVByb3h5Lmdl
dCgpKTsKIAotICAgIHBhZ2VGaW5kQ2xpZW50LnJlc2V0KG5ldyBRdFdlYlBhZ2VGaW5kQ2xpZW50
KHdlYlBhZ2UuZ2V0KCksIHFfcHRyKSk7Ci0gICAgcGFnZUxvYWRDbGllbnQucmVzZXQobmV3IFF0
V2ViUGFnZUxvYWRDbGllbnQod2ViUGFnZS5nZXQoKSwgcV9wdHIpKTsKKyAgICByZWdpc3RlclBh
Z2VMb2FkQ2xpZW50KCk7CisgICAgcGFnZUZpbmRDbGllbnQucmVzZXQobmV3IFF0V2ViUGFnZUZp
bmRDbGllbnQod2ViUGFnZS5nZXQoKSwgcV9wdHIpKTsgICAgCiAgICAgcGFnZVBvbGljeUNsaWVu
dC5yZXNldChuZXcgUXRXZWJQYWdlUG9saWN5Q2xpZW50KHdlYlBhZ2UuZ2V0KCksIHFfcHRyKSk7
CiAgICAgcGFnZVVJQ2xpZW50LnJlc2V0KG5ldyBRdFdlYlBhZ2VVSUNsaWVudCh3ZWJQYWdlLmdl
dCgpLCBxX3B0cikpOwogICAgIG5hdmlnYXRpb25IaXN0b3J5ID0gYWRvcHRQdHIoUVdlYk5hdmln
YXRpb25IaXN0b3J5UHJpdmF0ZTo6Y3JlYXRlSGlzdG9yeSh3ZWJQYWdlLmdldCgpKSk7CkBAIC0z
NDEsOTYgKzM0MCwxODMgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6aW5pdGlhbGl6ZShX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGEKICAgICBxX3B0ci0+c2V0
RmxhZyhRUXVpY2tJdGVtOjpJdGVtQWNjZXB0c0Ryb3BzLCB0cnVlKTsKIH0KIAotdm9pZCBRUXVp
Y2tXZWJWaWV3UHJpdmF0ZTo6bG9hZERpZFN0b3AoKQordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6cmVnaXN0ZXJQYWdlTG9hZENsaWVudCgpCit7CisgICAgV0tQYWdlTG9hZGVyQ2xpZW50IGxv
YWRDbGllbnQ7CisgICAgbWVtc2V0KCZsb2FkQ2xpZW50LCAwLCBzaXplb2YoV0tQYWdlTG9hZGVy
Q2xpZW50KSk7CisgICAgbG9hZENsaWVudC52ZXJzaW9uID0ga1dLUGFnZUxvYWRlckNsaWVudEN1
cnJlbnRWZXJzaW9uOworICAgIGxvYWRDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CisgICAgbG9h
ZENsaWVudC5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lID0gZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZTsKKyAgICBsb2FkQ2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lID0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU7CisgICAgbG9hZENsaWVudC5kaWRGYWlsUHJvdmlzaW9u
YWxMb2FkV2l0aEVycm9yRm9yRnJhbWUgPSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9y
Rm9yRnJhbWU7CisgICAgbG9hZENsaWVudC5kaWRDb21taXRMb2FkRm9yRnJhbWUgPSBkaWRDb21t
aXRMb2FkRm9yRnJhbWU7CisgICAgbG9hZENsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBk
aWRGaW5pc2hMb2FkRm9yRnJhbWU7CisgICAgbG9hZENsaWVudC5kaWRGYWlsTG9hZFdpdGhFcnJv
ckZvckZyYW1lID0gZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZTsKKyAgICBsb2FkQ2xpZW50
LmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSA9IGRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZTsKKyAgICBsb2FkQ2xpZW50LmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lID0g
ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWU7CisgICAgbG9hZENsaWVudC5kaWRTdGFydFByb2dyZXNz
ID0gZGlkU3RhcnRQcm9ncmVzczsKKyAgICBsb2FkQ2xpZW50LmRpZENoYW5nZVByb2dyZXNzID0g
ZGlkQ2hhbmdlUHJvZ3Jlc3M7CisgICAgbG9hZENsaWVudC5kaWRGaW5pc2hQcm9ncmVzcyA9IGRp
ZEZpbmlzaFByb2dyZXNzOworICAgIGxvYWRDbGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0
ID0gZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0OworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGll
bnQod2ViUGFnZS5nZXQoKSwgJmxvYWRDbGllbnQpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXdQ
cml2YXRlOjpkaXNwYXRjaExvYWRGYWlsZWQoV0tGcmFtZVJlZiBmcmFtZSwgY29uc3QgUXRXZWJF
cnJvciYgZXJyb3IpCiB7CiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwogICAgIEFTU0VSVCghcS0+
bG9hZGluZygpKTsKLSAgICBRV2ViTG9hZFJlcXVlc3QgbG9hZFJlcXVlc3QocS0+dXJsKCksIFFR
dWlja1dlYlZpZXc6OkxvYWRTdG9wcGVkU3RhdHVzKTsKKworICAgIGlmIChlcnJvci5pc0NhbmNl
bGxhdGlvbigpKSB7CisgICAgICAgIFFXZWJMb2FkUmVxdWVzdCBsb2FkUmVxdWVzdChxLT51cmwo
KSwgUVF1aWNrV2ViVmlldzo6TG9hZFN0b3BwZWRTdGF0dXMpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaW50IGVycm9yQ29kZSA9IGVycm9yLmVycm9yQ29kZSgpOworICAgIGlmIChl
cnJvckNvZGUgPT0ga1dLRXJyb3JDb2RlRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5n
ZSAmJiBlcnJvckNvZGUgPT0ga1dLRXJyb3JDb2RlUGx1Z0luV2lsbEhhbmRsZUxvYWQpIHsKKyAg
ICAgICAgUVdlYkxvYWRSZXF1ZXN0IGxvYWRSZXF1ZXN0KHEtPnVybCgpLCBRUXVpY2tXZWJWaWV3
OjpMb2FkU3VjY2VlZGVkU3RhdHVzKTsKKyAgICAgICAgcS0+ZW1pdFVybENoYW5nZUlmTmVlZGVk
KCk7CisgICAgICAgIGVtaXQgcS0+bG9hZGluZ0NoYW5nZWQoJmxvYWRSZXF1ZXN0KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIHNldCB0aGUgdW5yZWFjaGFibGUgdXJsIHVu
Y29uZGl0aW9uYWxseSBzbyB0aGF0IHRoZSBjdXJyZW50CisgICAgLy8gYWN0aXZlIHVybCBvZiB0
aGUgd2VidmlldyB3aGVuIHRoZSBsb2FkaW5nQ2hhbmdlZCBzaWduYWwgaXMKKyAgICAvLyBlbWl0
dGVkIHJlZmxlY3RzIHRoZSBmYWlsZWQgdXJsLCBub3QgdGhlIHByZXZpb3VzbHkgY29tbWl0dGVk
CisgICAgLy8gdXJsLiBUaGlzIGFsc28gZW5zdXJlcyB0aGF0IGlmIHRoZSB1c2VyIGRvZXMgbm90
IGRvIGEgbG9hZEh0bWwKKyAgICAvLyB3aXRoIGFuIGVycm9yIHBhZ2UgYW5kIGFuZCB1bnJlYWNo
YWJsZSB1cmwgYXMgYSByZXBvbnNlIHRvIHRoZQorICAgIC8vIGZhaWxlZCBsb2FkLCB3ZSBjYW4g
c3RpbGwgZGV0ZWN0IHRoZSBmYWlsZWQgdXJsIGZvciByZWxvYWRzLgorCisgICAgLy8gRklYTUU6
IEZpbmQgYSB3YXkgdG8gZG8gdGhpcyB3aXRoIHRoZSBDIEFQSSAvIGFkZCBhIGZ1bmN0aW9uIHRv
IGRvIHRoaXMgdG8gdGhlIEMgQVBJCisgICAgdG9JbXBsKGZyYW1lKS0+c2V0VW5yZWFjaGFibGVV
UkwoZXJyb3IudXJsKCkpOworICAgIHEtPmVtaXRVcmxDaGFuZ2VJZk5lZWRlZCgpOworICAgIFFX
ZWJMb2FkUmVxdWVzdCBsb2FkUmVxdWVzdChlcnJvci51cmwoKSwgUVF1aWNrV2ViVmlldzo6TG9h
ZEZhaWxlZFN0YXR1cywgZXJyb3IuZGVzY3JpcHRpb24oKSwgc3RhdGljX2Nhc3Q8UVF1aWNrV2Vi
Vmlldzo6RXJyb3JEb21haW4+KGVycm9yLnR5cGUoKSksIGVycm9yQ29kZSk7CiAgICAgZW1pdCBx
LT5sb2FkaW5nQ2hhbmdlZCgmbG9hZFJlcXVlc3QpOwogfQogCi12b2lkIFFRdWlja1dlYlZpZXdQ
cml2YXRlOjpzZXRUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCBlbmFibGUpCitzdGF0aWMgUVF1
aWNrV2ViVmlld1ByaXZhdGUqIHRvUVF1aWNrV2ViVmlld1ByaXZhdGUoY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKIHsKLSAgICB3ZWJQYWdlUHJveHktPnNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3Jv
dW5kKGVuYWJsZSk7CisgICAgQVNTRVJUKGNsaWVudEluZm8pOworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFFRdWlja1dlYlZpZXdQcml2YXRlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpOwogfQogCi1ib29sIFFRdWlja1dlYlZpZXdQcml2YXRlOjp0cmFuc3BhcmVudEJhY2tn
cm91bmQoKSBjb25zdAordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICByZXR1cm4gd2ViUGFnZVByb3h5LT5kcmF3
c1RyYW5zcGFyZW50QmFja2dyb3VuZCgpOwotfQorICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1l
KGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOwogCi12b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpw
cm92aXNpb25hbExvYWREaWRTdGFydChjb25zdCBXVEY6OlN0cmluZyYgdXJsKQotewotICAgIFFf
UShRUXVpY2tXZWJWaWV3KTsKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsICA9IGFkb3B0
V0soV0tGcmFtZUNvcHlQcm92aXNpb25hbFVSTChmcmFtZSkpOwogCi0gICAgcS0+ZW1pdFVybENo
YW5nZUlmTmVlZGVkKCk7CisgICAgUVF1aWNrV2ViVmlldyogY29uc3QgcSA9IHRvUVF1aWNrV2Vi
Vmlld1ByaXZhdGUoY2xpZW50SW5mbyktPnFfZnVuYygpOwogCi0gICAgUVdlYkxvYWRSZXF1ZXN0
IGxvYWRSZXF1ZXN0KFFTdHJpbmcodXJsKSwgUVF1aWNrV2ViVmlldzo6TG9hZFN0YXJ0ZWRTdGF0
dXMpOworICAgIHEtPmVtaXRVcmxDaGFuZ2VJZk5lZWRlZCgpOworICAgIFFXZWJMb2FkUmVxdWVz
dCBsb2FkUmVxdWVzdChXS1VSTENvcHlRVXJsKHVybC5nZXQoKSksIFFRdWlja1dlYlZpZXc6Okxv
YWRTdGFydGVkU3RhdHVzKTsKICAgICBlbWl0IHEtPmxvYWRpbmdDaGFuZ2VkKCZsb2FkUmVxdWVz
dCk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIFFRdWlja1dl
YlZpZXdQcml2YXRlOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKIHsKLSAgICBRX1EoUVF1aWNrV2ViVmlldyk7CisgICAgaWYgKCFXS0Zy
YW1lSXNNYWluRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm47CiAKLSAgICBxLT5lbWl0VXJs
Q2hhbmdlSWZOZWVkZWQoKTsKKyAgICB0b1FRdWlja1dlYlZpZXdQcml2YXRlKGNsaWVudEluZm8p
LT5xX2Z1bmMoKS0+ZW1pdFVybENoYW5nZUlmTmVlZGVkKCk7CiB9CiAKLXZvaWQgUVF1aWNrV2Vi
Vmlld1ByaXZhdGU6OmxvYWREaWRDb21taXQoKQordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiBmcmFtZSwgV0tFcnJvclJlZiBlcnJvciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQogewotICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKLSAgICBBU1NFUlQocS0+bG9hZGlu
ZygpKTsKKyAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVy
bjsKKyAgICB0b1FRdWlja1dlYlZpZXdQcml2YXRlKGNsaWVudEluZm8pLT5kaXNwYXRjaExvYWRG
YWlsZWQoZnJhbWUsIGVycm9yKTsKK30KIAotICAgIG1fYmV0d2VlbkxvYWRDb21taXRBbmRGaXJz
dEZyYW1lID0gdHJ1ZTsKK3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZENvbW1pdExvYWRG
b3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKK3sKKyAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisg
ICAgICAgIHJldHVybjsKKyAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZSogd2ViVmlld1ByaXZhdGUg
PSB0b1FRdWlja1dlYlZpZXdQcml2YXRlKGNsaWVudEluZm8pOworCisgICAgUGFnZVZpZXdwb3J0
Q29udHJvbGxlciogcHZjID0gd2ViVmlld1ByaXZhdGUtPnZpZXdwb3J0Q29udHJvbGxlcigpOwor
ICAgIGlmIChwdmMpCisgICAgICAgIHB2Yy0+ZGlkQ29tbWl0TG9hZCgpOworCisgICAgUVF1aWNr
V2ViVmlldyogY29uc3QgcSA9IHdlYlZpZXdQcml2YXRlLT5xX2Z1bmMoKTsKKyAgICBBU1NFUlQo
cS0+bG9hZGluZygpKTsKKyAgICB3ZWJWaWV3UHJpdmF0ZS0+bV9iZXR3ZWVuTG9hZENvbW1pdEFu
ZEZpcnN0RnJhbWUgPSB0cnVlOwogICAgIGVtaXQgcS0+bmF2aWdhdGlvbkhpc3RvcnlDaGFuZ2Vk
KCk7CiAgICAgZW1pdCBxLT50aXRsZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbigpCit2b2lkIFFRdWlja1dlYlZpZXdQ
cml2YXRlOjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1l
LCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgUV9RKFFRdWlja1dl
YlZpZXcpOworICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgUVF1aWNrV2ViVmlldyogY29uc3QgcSA9IHRvUVF1aWNrV2ViVmlld1ByaXZh
dGUoY2xpZW50SW5mbyktPnFfZnVuYygpOworICAgIEFTU0VSVCghcS0+bG9hZGluZygpKTsKIAor
ICAgIFFXZWJMb2FkUmVxdWVzdCBsb2FkUmVxdWVzdChxLT51cmwoKSwgUVF1aWNrV2ViVmlldzo6
TG9hZFN1Y2NlZWRlZFN0YXR1cyk7CisgICAgZW1pdCBxLT5sb2FkaW5nQ2hhbmdlZCgmbG9hZFJl
cXVlc3QpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRGYWlsTG9hZFdpdGhF
cnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tFcnJvclJlZiBlcnJv
ciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGlmICghV0tGcmFt
ZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworICAgIHRvUVF1aWNrV2ViVmll
d1ByaXZhdGUoY2xpZW50SW5mbyktPmRpc3BhdGNoTG9hZEZhaWxlZChmcmFtZSwgZXJyb3IpOwor
fQorCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
Rm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NhbWVEb2N1bWVudE5hdmln
YXRpb25UeXBlIHR5cGUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3sKKyAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVy
bjsKKyAgICBRUXVpY2tXZWJWaWV3KiBjb25zdCBxID0gdG9RUXVpY2tXZWJWaWV3UHJpdmF0ZShj
bGllbnRJbmZvKS0+cV9mdW5jKCk7CiAgICAgcS0+ZW1pdFVybENoYW5nZUlmTmVlZGVkKCk7CiAg
ICAgZW1pdCBxLT5uYXZpZ2F0aW9uSGlzdG9yeUNoYW5nZWQoKTsKIH0KIAotdm9pZCBRUXVpY2tX
ZWJWaWV3UHJpdmF0ZTo6dGl0bGVEaWRDaGFuZ2UoKQordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiB0aXRsZSwg
V0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewot
ICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKLQotICAgIGVtaXQgcS0+dGl0bGVDaGFuZ2VkKCk7Cisg
ICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm47CisgICAg
ZW1pdCB0b1FRdWlja1dlYlZpZXdQcml2YXRlKGNsaWVudEluZm8pLT5xX2Z1bmMoKS0+dGl0bGVD
aGFuZ2VkKCk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmxvYWRQcm9ncmVzc0Rp
ZENoYW5nZShpbnQgbG9hZFByb2dyZXNzKQordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlk
U3RhcnRQcm9ncmVzcyhXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAg
UV9RKFFRdWlja1dlYlZpZXcpOworICAgIHRvUVF1aWNrV2ViVmlld1ByaXZhdGUoY2xpZW50SW5m
byktPmxvYWRQcm9ncmVzc0RpZENoYW5nZSgwKTsKK30KIAotICAgIG1fbG9hZFByb2dyZXNzID0g
bG9hZFByb2dyZXNzOwordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlUHJvZ3Jl
c3MoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgdG9RUXVp
Y2tXZWJWaWV3UHJpdmF0ZShjbGllbnRJbmZvKS0+bG9hZFByb2dyZXNzRGlkQ2hhbmdlKFdLUGFn
ZUdldEVzdGltYXRlZFByb2dyZXNzKHBhZ2UpICogMTAwKTsKK30KIAotICAgIGVtaXQgcS0+bG9h
ZFByb2dyZXNzQ2hhbmdlZCgpOwordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmluaXNo
UHJvZ3Jlc3MoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHRvUVF1
aWNrV2ViVmlld1ByaXZhdGUoY2xpZW50SW5mbyktPmxvYWRQcm9ncmVzc0RpZENoYW5nZSgxMDAp
OwogfQogCi12b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpiYWNrRm9yd2FyZExpc3REaWRDaGFu
Z2UoKQordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0
KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLCBXS0FycmF5UmVmLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKQogewotICAgIG5hdmlnYXRpb25IaXN0b3J5LT5kLT5yZXNldCgpOwor
ICAgIHRvUVF1aWNrV2ViVmlld1ByaXZhdGUoY2xpZW50SW5mbyktPm5hdmlnYXRpb25IaXN0b3J5
LT5kLT5yZXNldCgpOwogfQogCi12b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpsb2FkRGlkU3Vj
Y2VlZCgpCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpzZXRUcmFuc3BhcmVudEJhY2tncm91
bmQoYm9vbCBlbmFibGUpCiB7Ci0gICAgUV9RKFFRdWlja1dlYlZpZXcpOwotICAgIEFTU0VSVCgh
cS0+bG9hZGluZygpKTsKKyAgICB3ZWJQYWdlUHJveHktPnNldERyYXdzVHJhbnNwYXJlbnRCYWNr
Z3JvdW5kKGVuYWJsZSk7Cit9CiAKLSAgICBRV2ViTG9hZFJlcXVlc3QgbG9hZFJlcXVlc3QocS0+
dXJsKCksIFFRdWlja1dlYlZpZXc6OkxvYWRTdWNjZWVkZWRTdGF0dXMpOwotICAgIGVtaXQgcS0+
bG9hZGluZ0NoYW5nZWQoJmxvYWRSZXF1ZXN0KTsKK2Jvb2wgUVF1aWNrV2ViVmlld1ByaXZhdGU6
OnRyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdlYlBhZ2VQcm94
eS0+ZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoKTsKIH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6bG9hZERpZEZhaWwoY29uc3QgUXRXZWJFcnJvciYgZXJyb3IpCit2b2lkIFFRdWlj
a1dlYlZpZXdQcml2YXRlOjpsb2FkUHJvZ3Jlc3NEaWRDaGFuZ2UoaW50IGxvYWRQcm9ncmVzcykK
IHsKICAgICBRX1EoUVF1aWNrV2ViVmlldyk7Ci0gICAgQVNTRVJUKCFxLT5sb2FkaW5nKCkpOwog
Ci0gICAgUVdlYkxvYWRSZXF1ZXN0IGxvYWRSZXF1ZXN0KGVycm9yLnVybCgpLCBRUXVpY2tXZWJW
aWV3OjpMb2FkRmFpbGVkU3RhdHVzLCBlcnJvci5kZXNjcmlwdGlvbigpLCBzdGF0aWNfY2FzdDxR
UXVpY2tXZWJWaWV3OjpFcnJvckRvbWFpbj4oZXJyb3IudHlwZSgpKSwgZXJyb3IuZXJyb3JDb2Rl
KCkpOwotICAgIGVtaXQgcS0+bG9hZGluZ0NoYW5nZWQoJmxvYWRSZXF1ZXN0KTsKKyAgICBtX2xv
YWRQcm9ncmVzcyA9IGxvYWRQcm9ncmVzczsKKworICAgIGVtaXQgcS0+bG9hZFByb2dyZXNzQ2hh
bmdlZCgpOwogfQogCiB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpoYW5kbGVNb3VzZUV2ZW50
KFFNb3VzZUV2ZW50KiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FxdWlja3dlYnZpZXdfcC5oCmluZGV4IDMzOGExMTIyYmRmY2U4MDJmM2ZjODVjNGVjNzdh
YTM2ZWRjNjE0MzIuLjQ1N2RlNjVlMjUyNDk3YjhkYzY1MjYxOGI2MTRhZWVhZjMwOTkyOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19w
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3Au
aApAQCAtNTEsNyArNTEsNiBAQCBjbGFzcyBQbGF0Zm9ybVdlYlZpZXc7CiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHN0cnVjdCBRdFJlZkNvdW50ZWROZXR3b3JrUmVxdWVzdERhdGE7CiBjbGFzcyBQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ7Ci1jbGFzcyBRdFdlYlBhZ2VMb2FkQ2xpZW50Owog
Y2xhc3MgUXRXZWJQYWdlRmluZENsaWVudDsKIGNsYXNzIFF0V2ViUGFnZVBvbGljeUNsaWVudDsK
IGNsYXNzIFF0V2ViUGFnZVVJQ2xpZW50OwpAQCAtMjIxLDcgKzIyMCw2IEBAIHByaXZhdGU6CiAK
ICAgICBmcmllbmQgY2xhc3MgUVdlYktpdFRlc3Q7CiAgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6
UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OwotICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6
OlF0V2ViUGFnZUxvYWRDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6UXRXZWJQYWdl
RmluZENsaWVudDsKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpRdFdlYlBhZ2VQb2xpY3lDbGll
bnQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6UXRXZWJQYWdlVUlDbGllbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKaW5k
ZXggMjFlZmRhZTQwMGU4ZWM5MWQ3YjMxYTg1MDQyOTA1Y2JkYjkzMmRiNC4uMzE4MzkyOWFhNWU3
OTAyM2Y5ZjNmN2EwODY3NzNlZmZlMjBlYTNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaApAQCAtNDQsNyArNDQsNiBAQCBj
bGFzcyBRdERpYWxvZ1J1bm5lcjsKIGNsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRR
dDsKIGNsYXNzIFF0V2ViQ29udGV4dDsKIGNsYXNzIFF0V2ViRXJyb3I7Ci1jbGFzcyBRdFdlYlBh
Z2VMb2FkQ2xpZW50OwogY2xhc3MgUXRXZWJQYWdlUG9saWN5Q2xpZW50OwogY2xhc3MgV2ViUGFn
ZVByb3h5OwogfQpAQCAtNzMsMTYgKzcyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IG9uQ29tcG9uZW50Q29tcGxldGUoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwcm92aXNpb25h
bExvYWREaWRTdGFydChjb25zdCBXVEY6OlN0cmluZyYgdXJsKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdURjo6U3Ry
aW5nJiB1cmwpOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkQ29tbWl0KCk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24oKTsKLSAgICB2aXJ0dWFsIHZvaWQgdGl0
bGVEaWRDaGFuZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFByb2dyZXNzRGlkQ2hhbmdlKGlu
dCBsb2FkUHJvZ3Jlc3MpOwotICAgIHZpcnR1YWwgdm9pZCBiYWNrRm9yd2FyZExpc3REaWRDaGFu
Z2UoKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZFN1Y2NlZWQoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgbG9hZERpZFN0b3AoKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZEZhaWwoY29uc3QgV2Vi
S2l0OjpRdFdlYkVycm9yJiBlcnJvcik7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZU1vdXNlRXZl
bnQoUU1vdXNlRXZlbnQqKTsKIAogICAgIHZvaWQgZGlkRmluZFN0cmluZyh1bnNpZ25lZCBtYXRj
aENvdW50KTsKQEAgLTE1OSw2ICsxNDksMjMgQEAgcHJvdGVjdGVkOgogICAgICAgICBRUG9pbnRG
IGFkanVzdChjb25zdCBRUG9pbnRGJik7CiAgICAgfTsKIAorICAgIHZvaWQgcmVnaXN0ZXJQYWdl
TG9hZENsaWVudCgpOworICAgIHZvaWQgZGlzcGF0Y2hMb2FkRmFpbGVkKFdLRnJhbWVSZWYsIGNv
bnN0IFdlYktpdDo6UXRXZWJFcnJvciYpOworCisgICAgLy8gV0tQYWdlTG9hZENsaWVudCBjYWxs
YmFja3MuCisgICAgc3RhdGljIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShX
S1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYgdXNl
ckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxQ
cm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdL
RXJyb3JSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cisg
ICAgc3RhdGljIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJl
ZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0
aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5
cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lk
IGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0Vy
cm9yUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAg
IHN0YXRpYyB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXS1BhZ2VSZWYs
IFdLRnJhbWVSZWYsIFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIFdLVHlwZVJlZiB1c2Vy
RGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZVRpdGxlRm9yRnJhbWUoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiwgV0tGcmFtZVJlZiwgV0tUeXBl
UmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRTdGFydFByb2dyZXNzKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAg
c3RhdGljIHZvaWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hQcm9ncmVzcyhXS1BhZ2VSZWYsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUJhY2tGb3J3
YXJkTGlzdChXS1BhZ2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiwgV0tBcnJheVJlZiwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CisKICAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZShRUXVp
Y2tXZWJWaWV3KiB2aWV3cG9ydCk7CiAgICAgUmVmUHRyPFdlYktpdDo6UXRXZWJDb250ZXh0PiBj
b250ZXh0OwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gd2ViUGFnZVByb3h5OwpA
QCAtMTcwLDcgKzE3Nyw2IEBAIHByb3RlY3RlZDoKICAgICBPd25QdHI8UVdlYk5hdmlnYXRpb25I
aXN0b3J5PiBuYXZpZ2F0aW9uSGlzdG9yeTsKICAgICBPd25QdHI8UVdlYlByZWZlcmVuY2VzPiBw
cmVmZXJlbmNlczsKIAotICAgIFFTY29wZWRQb2ludGVyPFdlYktpdDo6UXRXZWJQYWdlTG9hZENs
aWVudD4gcGFnZUxvYWRDbGllbnQ7CiAgICAgUVNjb3BlZFBvaW50ZXI8V2ViS2l0OjpRdFdlYlBh
Z2VGaW5kQ2xpZW50PiBwYWdlRmluZENsaWVudDsKICAgICBRU2NvcGVkUG9pbnRlcjxXZWJLaXQ6
OlF0V2ViUGFnZVBvbGljeUNsaWVudD4gcGFnZVBvbGljeUNsaWVudDsKICAgICBRU2NvcGVkUG9p
bnRlcjxXZWJLaXQ6OlF0V2ViUGFnZVVJQ2xpZW50PiBwYWdlVUlDbGllbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJFcnJvci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJFcnJvci5jcHAKaW5kZXggNzU4ODRmNDQwY2YwYTliNTJh
YzM1YjQwNTk3ODVjODJiZWEyYzdkMC4uNDJhNDQ5ZGE1NjU2YzY5MTgyODM1NmZjMWY5ODc4ZTFh
N2Y4ZDg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJy
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmNwcApA
QCAtNTcsNyArNTcsNyBAQCBpbnQgUXRXZWJFcnJvcjo6ZXJyb3JDb2RlKCkgY29uc3QKIAogUVN0
cmluZyBRdFdlYkVycm9yOjp1cmwoKSBjb25zdAogewotICAgIHJldHVybiB0b0ltcGwoZXJyb3Iu
Z2V0KCkpLT5mYWlsaW5nVVJMKCk7CisgICAgcmV0dXJuIFdLU3RyaW5nQ29weVFTdHJpbmcoV0tV
UkxDb3B5U3RyaW5nKFdLRXJyb3JDb3B5RmFpbGluZ1VSTChlcnJvci5nZXQoKSkpKTsKIH0KIAog
UVN0cmluZyBRdFdlYkVycm9yOjpkZXNjcmlwdGlvbigpIGNvbnN0CkBAIC02Nyw2ICs2Nyw3IEBA
IFFTdHJpbmcgUXRXZWJFcnJvcjo6ZGVzY3JpcHRpb24oKSBjb25zdAogCiBib29sIFF0V2ViRXJy
b3I6OmlzQ2FuY2VsbGF0aW9uKCkgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogQWRkIEMgQVBJIHRv
IHJldHVybiB0aGUgY2FuY2VsbGF0aW9uIGJpdCBvciBmaW5kIGEgd2F5IHRvIGFjY2VzcyB0aGUg
cGxhdGZvcm1FcnJvciBmcm9tIHRoZSBFcnJvclJlZi4KICAgICByZXR1cm4gdG9JbXBsKGVycm9y
LmdldCgpKS0+cGxhdGZvcm1FcnJvcigpLmlzQ2FuY2VsbGF0aW9uKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg3N2NhOGRmNzU4MWRjOTVlMDg4M2Y4MjQ2OThh
ODIzOWUyMWY3Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVudC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwyMTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJRdFdlYlBhZ2VMb2FkQ2xpZW50LmgiCi0KLSNpbmNsdWRl
ICJRdFdlYkVycm9yLmgiCi0jaW5jbHVkZSAicXF1aWNrd2Vidmlld19wX3AuaCIKLQotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1RdFdlYlBhZ2VMb2Fk
Q2xpZW50OjpRdFdlYlBhZ2VMb2FkQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBRUXVpY2tXZWJW
aWV3KiB3ZWJWaWV3KQotICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCi17Ci0gICAgV0tQYWdlTG9h
ZGVyQ2xpZW50IGxvYWRDbGllbnQ7Ci0gICAgbWVtc2V0KCZsb2FkQ2xpZW50LCAwLCBzaXplb2Yo
V0tQYWdlTG9hZGVyQ2xpZW50KSk7Ci0gICAgbG9hZENsaWVudC52ZXJzaW9uID0ga1dLUGFnZUxv
YWRlckNsaWVudEN1cnJlbnRWZXJzaW9uOwotICAgIGxvYWRDbGllbnQuY2xpZW50SW5mbyA9IHRo
aXM7Ci0gICAgbG9hZENsaWVudC5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lID0gZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKLSAgICBsb2FkQ2xpZW50LmRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lID0gZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZENsaWVudC5kaWRG
YWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUgPSBkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkV2l0aEVycm9yRm9yRnJhbWU7Ci0gICAgbG9hZENsaWVudC5kaWRDb21taXRMb2FkRm9yRnJh
bWUgPSBkaWRDb21taXRMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZENsaWVudC5kaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZENsaWVudC5kaWRGYWls
TG9hZFdpdGhFcnJvckZvckZyYW1lID0gZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZTsKLSAg
ICBsb2FkQ2xpZW50LmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSA9IGRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTsKLSAgICBsb2FkQ2xpZW50LmRpZFJlY2VpdmVUaXRs
ZUZvckZyYW1lID0gZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWU7Ci0gICAgbG9hZENsaWVudC5kaWRT
dGFydFByb2dyZXNzID0gZGlkU3RhcnRQcm9ncmVzczsKLSAgICBsb2FkQ2xpZW50LmRpZENoYW5n
ZVByb2dyZXNzID0gZGlkQ2hhbmdlUHJvZ3Jlc3M7Ci0gICAgbG9hZENsaWVudC5kaWRGaW5pc2hQ
cm9ncmVzcyA9IGRpZEZpbmlzaFByb2dyZXNzOwotICAgIGxvYWRDbGllbnQuZGlkQ2hhbmdlQmFj
a0ZvcndhcmRMaXN0ID0gZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0OwotICAgIFdLUGFnZVNldFBh
Z2VMb2FkZXJDbGllbnQocGFnZVJlZiwgJmxvYWRDbGllbnQpOwotfQotCi12b2lkIFF0V2ViUGFn
ZUxvYWRDbGllbnQ6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdURjo6U3RyaW5nJiB1
cmwpCi17Ci0gICAgbV93ZWJWaWV3LT5kX2Z1bmMoKS0+cHJvdmlzaW9uYWxMb2FkRGlkU3RhcnQo
dXJsKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgV1RGOjpTdHJpbmcmIHVybCkKLXsKLSAgICBt
X3dlYlZpZXctPmRfZnVuYygpLT5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWQodXJsKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRDb21taXRMb2Fk
KCkKLXsKLSAgICBQYWdlVmlld3BvcnRDb250cm9sbGVyKiBwdmMgPSBtX3dlYlZpZXctPmRfZnVu
YygpLT52aWV3cG9ydENvbnRyb2xsZXIoKTsKLSAgICBpZiAocHZjKQotICAgICAgICBwdmMtPmRp
ZENvbW1pdExvYWQoKTsKLSAgICBtX3dlYlZpZXctPmRfZnVuYygpLT5sb2FkRGlkQ29tbWl0KCk7
Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bigpCi17Ci0gICAgbV93ZWJWaWV3LT5kX2Z1bmMoKS0+ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bigpOwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZFJlY2VpdmVUaXRsZSgpCi17
Ci0gICAgbV93ZWJWaWV3LT5kX2Z1bmMoKS0+dGl0bGVEaWRDaGFuZ2UoKTsKLX0KLQotdm9pZCBR
dFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRDaGFuZ2VQcm9ncmVzcyhpbnQgbG9hZFByb2dyZXNzKQot
ewotICAgIG1fd2ViVmlldy0+ZF9mdW5jKCktPmxvYWRQcm9ncmVzc0RpZENoYW5nZShsb2FkUHJv
Z3Jlc3MpOwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZENoYW5nZUJhY2tGb3J3
YXJkTGlzdCgpCi17Ci0gICAgbV93ZWJWaWV3LT5kX2Z1bmMoKS0+YmFja0ZvcndhcmRMaXN0RGlk
Q2hhbmdlKCk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlzcGF0Y2hMb2FkU3Vj
Y2VlZGVkKCkKLXsKLSAgICBtX3dlYlZpZXctPmRfZnVuYygpLT5sb2FkRGlkU3VjY2VlZCgpOwot
fQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpc3BhdGNoTG9hZFN0b3BwZWQoKQotewot
ICAgIG1fd2ViVmlldy0+ZF9mdW5jKCktPmxvYWREaWRTdG9wKCk7Ci19Ci0KLXZvaWQgUXRXZWJQ
YWdlTG9hZENsaWVudDo6ZGlzcGF0Y2hMb2FkRmFpbGVkKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBj
b25zdCBRdFdlYkVycm9yJiBlcnJvcikKLXsKLSAgICBpZiAoZXJyb3IuaXNDYW5jZWxsYXRpb24o
KSkgewotICAgICAgICBkaXNwYXRjaExvYWRTdG9wcGVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpbnQgZXJyb3JDb2RlID0gZXJyb3IuZXJyb3JDb2RlKCk7Ci0KLSAgICBpZiAo
ZXJyb3JDb2RlID09IGtXS0Vycm9yQ29kZUZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFu
Z2UgfHwgZXJyb3JDb2RlID09IGtXS0Vycm9yQ29kZVBsdWdJbldpbGxIYW5kbGVMb2FkKSB7Ci0g
ICAgICAgIC8vIFRoZSBhY3RpdmUgdXJsIG1pZ2h0IGhhdmUgY2hhbmdlZAotICAgICAgICBtX3dl
YlZpZXctPmVtaXRVcmxDaGFuZ2VJZk5lZWRlZCgpOwotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB0
aGF0IExvYWRTdGFydGVkU3RhdHVzIGhhcyBhIGNvdW50ZXJwYXJ0IHdoZW4gZS5nLiByZXF1ZXN0
aW5nIGEgZG93bmxvYWQuCi0gICAgICAgIGRpc3BhdGNoTG9hZFN1Y2NlZWRlZCgpOwotCi0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBXZSBzZXQgdGhlIHVucmVhY2hhYmxlIHVybCB1
bmNvbmRpdGlvbmFsbHkgc28gdGhhdCB0aGUgY3VycmVudAotICAgIC8vIGFjdGl2ZSB1cmwgb2Yg
dGhlIHdlYnZpZXcgd2hlbiB0aGUgbG9hZGluZ0NoYW5nZWQgc2lnbmFsIGlzCi0gICAgLy8gZW1p
dHRlZCByZWZsZWN0cyB0aGUgZmFpbGVkIHVybCwgbm90IHRoZSBwcmV2aW91c2x5IGNvbW1pdHRl
ZAotICAgIC8vIHVybC4gVGhpcyBhbHNvIGVuc3VyZXMgdGhhdCBpZiB0aGUgdXNlciBkb2VzIG5v
dCBkbyBhIGxvYWRIdG1sCi0gICAgLy8gd2l0aCBhbiBlcnJvciBwYWdlIGFuZCBhbmQgdW5yZWFj
aGFibGUgdXJsIGFzIGEgcmVwb25zZSB0byB0aGUKLSAgICAvLyBmYWlsZWQgbG9hZCwgd2UgY2Fu
IHN0aWxsIGRldGVjdCB0aGUgZmFpbGVkIHVybCBmb3IgcmVsb2Fkcy4KLSAgICBmcmFtZS0+c2V0
VW5yZWFjaGFibGVVUkwoZXJyb3IudXJsKCkpOwotICAgIG1fd2ViVmlldy0+ZW1pdFVybENoYW5n
ZUlmTmVlZGVkKCk7Ci0KLSAgICBtX3dlYlZpZXctPmRfZnVuYygpLT5sb2FkRGlkRmFpbChlcnJv
cik7Ci19Ci0KLXN0YXRpYyBRdFdlYlBhZ2VMb2FkQ2xpZW50KiB0b1F0V2ViUGFnZUxvYWRDbGll
bnQoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBBU1NFUlQoY2xpZW50SW5mbyk7Ci0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UXRXZWJQYWdlTG9hZENsaWVudCo+KGNvbnN0X2Nh
c3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFt
ZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIGlmICghV0tGcmFt
ZUlzTWFpbkZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHRvUXRXZWJQYWdlTG9h
ZENsaWVudChjbGllbnRJbmZvKS0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWQodG9JbXBsKGZyYW1l
KS0+cHJvdmlzaW9uYWxVUkwoKSk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVm
LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17
Ci0gICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBXZWJGcmFtZVByb3h5KiB3a2ZyYW1lID0gdG9JbXBsKGZyYW1lKTsKLSAgICB0b1F0V2Vi
UGFnZUxvYWRDbGllbnQoY2xpZW50SW5mbyktPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZCh3a2ZyYW1lLT5wcm92aXNpb25hbFVSTCgpKTsKLX0KLQotdm9pZCBRdFdl
YlBhZ2VMb2FkQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVSZWYs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUo
ZnJhbWUpKQotICAgICAgICByZXR1cm47Ci0gICAgdG9RdFdlYlBhZ2VMb2FkQ2xpZW50KGNsaWVu
dEluZm8pLT5kaXNwYXRjaExvYWRGYWlsZWQodG9JbXBsKGZyYW1lKSwgZXJyb3IpOwotfQotCi12
b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYs
IFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsK
LSAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybjsKLSAg
ICB0b1F0V2ViUGFnZUxvYWRDbGllbnQoY2xpZW50SW5mbyktPmRpZENvbW1pdExvYWQoKTsKLX0K
LQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdl
UmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Ci17Ci0gICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm47
Ci0gICAgdG9RdFdlYlBhZ2VMb2FkQ2xpZW50KGNsaWVudEluZm8pLT5kaXNwYXRjaExvYWRTdWNj
ZWVkZWQoKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRGYWlsTG9hZFdpdGhF
cnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tFcnJvclJlZiBlcnJv
ciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIGlmICghV0tGcmFt
ZUlzTWFpbkZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHRvUXRXZWJQYWdlTG9h
ZENsaWVudChjbGllbnRJbmZvKS0+ZGlzcGF0Y2hMb2FkRmFpbGVkKHRvSW1wbChmcmFtZSksIGVy
cm9yKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NhbWVEb2N1bWVu
dE5hdmlnYXRpb25UeXBlIHR5cGUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKLXsKLSAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAgICAg
IHJldHVybjsKLSAgICB0b1F0V2ViUGFnZUxvYWRDbGllbnQoY2xpZW50SW5mbyktPmRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb24oKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlVGl0bGVGb3JGcmFtZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIHRpdGxlLCBXS0ZyYW1l
UmVmIGZyYW1lLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgaWYg
KCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm47Ci0gICAgdG9RdFdl
YlBhZ2VMb2FkQ2xpZW50KGNsaWVudEluZm8pLT5kaWRSZWNlaXZlVGl0bGUoKTsKLX0KLQotdm9p
ZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRTdGFydFByb2dyZXNzKFdLUGFnZVJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKLXsKLSAgICB0b1F0V2ViUGFnZUxvYWRDbGllbnQoY2xpZW50SW5m
byktPmRpZENoYW5nZVByb2dyZXNzKDApOwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6
OmRpZENoYW5nZVByb2dyZXNzKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQotewotICAgIHRvUXRXZWJQYWdlTG9hZENsaWVudChjbGllbnRJbmZvKS0+ZGlkQ2hhbmdlUHJv
Z3Jlc3MoV0tQYWdlR2V0RXN0aW1hdGVkUHJvZ3Jlc3MocGFnZSkgKiAxMDApOwotfQotCi12b2lk
IFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZEZpbmlzaFByb2dyZXNzKFdLUGFnZVJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKLXsKLSAgICB0b1F0V2ViUGFnZUxvYWRDbGllbnQoY2xpZW50SW5m
byktPmRpZENoYW5nZVByb2dyZXNzKDEwMCk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVu
dDo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJ
dGVtUmVmLCBXS0FycmF5UmVmLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQotewotICAgIHRvUXRX
ZWJQYWdlTG9hZENsaWVudChjbGllbnRJbmZvKS0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYmtpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDY2OGJhYzE2ODg1NTlkOGFlMGU1ODRjMWRjYWNkN2NhOWY4YjQzNWUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIFF0V2ViUGFnZUxvYWRDbGllbnRfaAotI2Rl
ZmluZSBRdFdlYlBhZ2VMb2FkQ2xpZW50X2gKLQotI2luY2x1ZGUgPFF0R2xvYmFsPgotI2luY2x1
ZGUgPFdlYkZyYW1lUHJveHkuaD4KLSNpbmNsdWRlIDxXS1BhZ2UuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLQotUVRfQkVHSU5fTkFNRVNQQUNFCi1jbGFzcyBRVXJsOwotUVRf
RU5EX05BTUVTUEFDRQotCi1jbGFzcyBRUXVpY2tXZWJWaWV3OwotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotY2xhc3MgUXRXZWJFcnJvcjsKLQotY2xhc3MgUXRXZWJQYWdlTG9hZENsaWVudCB7Ci1w
dWJsaWM6Ci0gICAgUXRXZWJQYWdlTG9hZENsaWVudChXS1BhZ2VSZWYsIFFRdWlja1dlYlZpZXcq
KTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdU
Rjo6U3RyaW5nJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWQoY29uc3QgV1RGOjpTdHJpbmcmKTsKLSAgICB2b2lkIGRpZENvbW1pdExvYWQoKTsK
LSAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24oKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVUaXRsZSgpOwotICAgIHZvaWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoaW50KTsKLSAgICB2b2lkIGRp
ZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgpOwotCi0gICAgdm9pZCBkaXNwYXRjaExvYWRTdWNjZWVk
ZWQoKTsKLSAgICB2b2lkIGRpc3BhdGNoTG9hZFN0b3BwZWQoKTsKLSAgICB2b2lkIGRpc3BhdGNo
TG9hZEZhaWxlZChXZWJGcmFtZVByb3h5KiwgY29uc3QgUXRXZWJFcnJvciYpOwotCi0KLSAgICAv
LyBXS1BhZ2VMb2FkQ2xpZW50IGNhbGxiYWNrcy4KLSAgICBzdGF0aWMgdm9pZCBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmIHVz
ZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdL
RnJhbWVSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0g
ICAgc3RhdGljIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdL
UGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tFcnJvclJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJh
bWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOwotICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1Bh
Z2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1Bh
Z2VSZWYsIFdLRnJhbWVSZWYsIFdLRXJyb3JSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7Ci0gICAgc3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdh
dGlvbkZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uVHlwZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXS1BhZ2VSZWYsIFdLU3RyaW5n
UmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOwotICAgIHN0YXRpYyB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3MoV0tQYWdlUmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhXS1Bh
Z2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aFByb2dyZXNzKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgc3RhdGlj
IHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExp
c3RJdGVtUmVmLCBXS0FycmF5UmVmLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLQotICAgIFFR
dWlja1dlYlZpZXcqIG1fd2ViVmlldzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYmtpdAotCi0j
ZW5kaWYgLy8gUXRXZWJQYWdlTG9hZENsaWVudF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186636</attachid>
            <date>2013-02-05 09:04:08 -0800</date>
            <delta_ts>2013-02-06 03:58:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108473-20130205180045.patch</filename>
            <type>text/plain</type>
            <size>30687</size>
            <attacher name="Michael Brüning">michael.bruning</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWM5MzMxMjAxY2U3MjJl
OGQ4NDg4MjAyNDcxYzc2NmRmYzExOTE3OC4uODM5NGMxNjllNTNkZDQ0ZTkxMTkxOWIxMWI4MjI1
OTdjOTJhZGE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEzLTAyLTA1ICBNaWNo
YWVsIEJyw7xuaW5nICA8bWljaGFlbC5icnVuaW5nQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRd
W1dLMl0gRm9sZCBRdFdlYlBhZ2VMb2FkQ2xpZW50IGludG8gUVF1aWNrV2ViVmlld1ByaXZhdGUg
YW5kIG1vdmUgdG8gQyBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDg0NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIFF0V2ViUGFnZUxvYWRDbGllbnQgYW5k
IG1vdmVzIHRoZSBmdW5jdGlvbmFsaXR5IGludG8gdGhlCisgICAgICAgIFFRdWlja1dlYlZpZXdQ
cml2YXRlIGFzIG1vc3QgY2FsbGJhY2sgbWV0aG9kcyBhcmUgY2FsbGluZyB0aGUgcHJpdmF0ZSB3
ZWJ2aWV3CisgICAgICAgIGluZGlyZWN0bHkgYW55d2F5LgorCisgICAgICAgIFRoZSBwYXRjaCBh
bHNvIG1vdmVzIGFzIG11Y2ggb2YgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIEMgQVBJIGFzIGlz
IHBvc3NpYmxlIHdpdGgKKyAgICAgICAgdGhlIGN1cnJlbnQgQyBBUEkgYW5kIGFkZHMgRklYTUVz
IHRvIHRoZSBwbGFjZXMgdGhhdCBuZWVkIHRvIGJlIGZpeGVkIGluIHRoaXMgcGFydAorICAgICAg
ICBvZiB0aGUgQVBJIHN0aWxsLgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1aWNrV2ViVmll
d1ByaXZhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OnJl
Z2lzdGVyUGFnZUxvYWRDbGllbnQpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRp
c3BhdGNoTG9hZEZhaWxlZCk6CisgICAgICAgICh0b1FRdWlja1dlYlZpZXdQcml2YXRlKToKKyAg
ICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAg
ICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAg
ICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAg
IChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6Cisg
ICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZv
ckZyYW1lKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRSZWNlaXZlVGl0bGVG
b3JGcmFtZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkU3RhcnRQcm9ncmVz
cyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlUHJvZ3Jlc3MpOgor
ICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmlzaFByb2dyZXNzKToKKyAgICAg
ICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpOgorICAg
ICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCk6Cisg
ICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dHJhbnNwYXJlbnRCYWNrZ3JvdW5kKToKKyAg
ICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpsb2FkUHJvZ3Jlc3NEaWRDaGFuZ2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpRdFdlYkVy
cm9yOjp1cmwpOgorICAgICAgICAoV2ViS2l0OjpRdFdlYkVycm9yOjppc0NhbmNlbGxhdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50Lmg6IFJlbW92ZWQu
CisKIDIwMTMtMDItMDUgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29t
PgogCiAgICAgICAgIFtRdF1bV0syXSBSZXBsYWNlIG1vcmUgdXNlcyBvZiBXZWJQYWdlUHJveHkg
d2l0aCBXS1BhZ2UgaW4gUVF1aWNrV2ViVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggYzZlMzE2MmZmOTg0
ZWUxNThiMzQ2M2RlYTM4NjNlNTU5ZDI1M2JjNi4uNzFiMjQ5MWQ1YmQ4OTllYTJlNmNmYjZhYjVj
MTgxNGU5NzllNDgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC03ODYsNyArNzg2LDYgQEAgaGF2ZT8oUVRR
VUlDSykgewogICAgICAgICBVSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaCBcCiAgICAg
ICAgIFVJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuaCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VGaW5kQ2xpZW50LmggXAotICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9h
ZENsaWVudC5oIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBvbGljeUNsaWVudC5o
IFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVNHTm9kZS5oIFwKICAgICAgICAgVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmggXApAQCAtODE0LDcgKzgxMyw2IEBAIGhhdmU/
KFFUUVVJQ0spIHsKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcCBc
CiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuY3BwIFwKICAgICAgICAgVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZUZpbmRDbGllbnQuY3BwIFwKLSAgICAgICAgVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZUxvYWRDbGllbnQuY3BwIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBv
bGljeUNsaWVudC5jcHAgXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlU0dOb2RlLmNw
cCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuY3BwIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmlu
ZGV4IGYxZjEzY2IyNzZlMjJjMDUwNzI0NGNjNzQwZDNiNWJjYjFhODQ0ZmYuLjg3ODBjMDk3N2Uy
MDA3ZGM2OWIyNWJiYzgxNzMwMWYzMjUwYmJhOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2lu
Y2x1ZGUgIlF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUXRXZWJQYWdlRXZl
bnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiUXRXZWJQYWdlRmluZENsaWVudC5oIgotI2luY2x1ZGUg
IlF0V2ViUGFnZUxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VQb2xpY3lDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJXZWJGaW5kT3B0
aW9ucy5oIgpAQCAtMzE0LDggKzMxMyw4IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6Omlu
aXRpYWxpemUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhCiAgICAg
UVF1aWNrV2ViUGFnZVByaXZhdGUqIGNvbnN0IHBhZ2VWaWV3UHJpdmF0ZSA9IHBhZ2VWaWV3LmRh
dGEoKS0+ZDsKICAgICBwYWdlVmlld1ByaXZhdGUtPmluaXRpYWxpemUod2ViUGFnZVByb3h5Lmdl
dCgpKTsKIAotICAgIHBhZ2VGaW5kQ2xpZW50LnJlc2V0KG5ldyBRdFdlYlBhZ2VGaW5kQ2xpZW50
KHdlYlBhZ2UuZ2V0KCksIHFfcHRyKSk7Ci0gICAgcGFnZUxvYWRDbGllbnQucmVzZXQobmV3IFF0
V2ViUGFnZUxvYWRDbGllbnQod2ViUGFnZS5nZXQoKSwgcV9wdHIpKTsKKyAgICByZWdpc3RlclBh
Z2VMb2FkQ2xpZW50KCk7CisgICAgcGFnZUZpbmRDbGllbnQucmVzZXQobmV3IFF0V2ViUGFnZUZp
bmRDbGllbnQod2ViUGFnZS5nZXQoKSwgcV9wdHIpKTsgICAgCiAgICAgcGFnZVBvbGljeUNsaWVu
dC5yZXNldChuZXcgUXRXZWJQYWdlUG9saWN5Q2xpZW50KHdlYlBhZ2UuZ2V0KCksIHFfcHRyKSk7
CiAgICAgcGFnZVVJQ2xpZW50LnJlc2V0KG5ldyBRdFdlYlBhZ2VVSUNsaWVudCh3ZWJQYWdlLmdl
dCgpLCBxX3B0cikpOwogICAgIG5hdmlnYXRpb25IaXN0b3J5ID0gYWRvcHRQdHIoUVdlYk5hdmln
YXRpb25IaXN0b3J5UHJpdmF0ZTo6Y3JlYXRlSGlzdG9yeSh3ZWJQYWdlLmdldCgpKSk7CkBAIC0z
NDEsOTYgKzM0MCwxODQgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6aW5pdGlhbGl6ZShX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGEKICAgICBxX3B0ci0+c2V0
RmxhZyhRUXVpY2tJdGVtOjpJdGVtQWNjZXB0c0Ryb3BzLCB0cnVlKTsKIH0KIAotdm9pZCBRUXVp
Y2tXZWJWaWV3UHJpdmF0ZTo6bG9hZERpZFN0b3AoKQordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6cmVnaXN0ZXJQYWdlTG9hZENsaWVudCgpCit7CisgICAgV0tQYWdlTG9hZGVyQ2xpZW50IGxv
YWRDbGllbnQ7CisgICAgbWVtc2V0KCZsb2FkQ2xpZW50LCAwLCBzaXplb2YoV0tQYWdlTG9hZGVy
Q2xpZW50KSk7CisgICAgbG9hZENsaWVudC52ZXJzaW9uID0ga1dLUGFnZUxvYWRlckNsaWVudEN1
cnJlbnRWZXJzaW9uOworICAgIGxvYWRDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CisgICAgbG9h
ZENsaWVudC5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lID0gZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZTsKKyAgICBsb2FkQ2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lID0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU7CisgICAgbG9hZENsaWVudC5kaWRGYWlsUHJvdmlzaW9u
YWxMb2FkV2l0aEVycm9yRm9yRnJhbWUgPSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9y
Rm9yRnJhbWU7CisgICAgbG9hZENsaWVudC5kaWRDb21taXRMb2FkRm9yRnJhbWUgPSBkaWRDb21t
aXRMb2FkRm9yRnJhbWU7CisgICAgbG9hZENsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBk
aWRGaW5pc2hMb2FkRm9yRnJhbWU7CisgICAgbG9hZENsaWVudC5kaWRGYWlsTG9hZFdpdGhFcnJv
ckZvckZyYW1lID0gZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZTsKKyAgICBsb2FkQ2xpZW50
LmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSA9IGRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZTsKKyAgICBsb2FkQ2xpZW50LmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lID0g
ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWU7CisgICAgbG9hZENsaWVudC5kaWRTdGFydFByb2dyZXNz
ID0gZGlkU3RhcnRQcm9ncmVzczsKKyAgICBsb2FkQ2xpZW50LmRpZENoYW5nZVByb2dyZXNzID0g
ZGlkQ2hhbmdlUHJvZ3Jlc3M7CisgICAgbG9hZENsaWVudC5kaWRGaW5pc2hQcm9ncmVzcyA9IGRp
ZEZpbmlzaFByb2dyZXNzOworICAgIGxvYWRDbGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0
ID0gZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0OworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGll
bnQod2ViUGFnZS5nZXQoKSwgJmxvYWRDbGllbnQpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXdQ
cml2YXRlOjpkaXNwYXRjaExvYWRGYWlsZWQoV0tGcmFtZVJlZiBmcmFtZSwgY29uc3QgUXRXZWJF
cnJvciYgZXJyb3IpCiB7CiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwogICAgIEFTU0VSVCghcS0+
bG9hZGluZygpKTsKLSAgICBRV2ViTG9hZFJlcXVlc3QgbG9hZFJlcXVlc3QocS0+dXJsKCksIFFR
dWlja1dlYlZpZXc6OkxvYWRTdG9wcGVkU3RhdHVzKTsKKworICAgIGlmIChlcnJvci5pc0NhbmNl
bGxhdGlvbigpKSB7CisgICAgICAgIFFXZWJMb2FkUmVxdWVzdCBsb2FkUmVxdWVzdChxLT51cmwo
KSwgUVF1aWNrV2ViVmlldzo6TG9hZFN0b3BwZWRTdGF0dXMpOworICAgICAgICBlbWl0IHEtPmxv
YWRpbmdDaGFuZ2VkKCZsb2FkUmVxdWVzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpbnQgZXJyb3JDb2RlID0gZXJyb3IuZXJyb3JDb2RlKCk7CisgICAgaWYgKGVycm9yQ29kZSA9
PSBrV0tFcnJvckNvZGVGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlICYmIGVycm9y
Q29kZSA9PSBrV0tFcnJvckNvZGVQbHVnSW5XaWxsSGFuZGxlTG9hZCkgeworICAgICAgICBRV2Vi
TG9hZFJlcXVlc3QgbG9hZFJlcXVlc3QocS0+dXJsKCksIFFRdWlja1dlYlZpZXc6OkxvYWRTdWNj
ZWVkZWRTdGF0dXMpOworICAgICAgICBxLT5lbWl0VXJsQ2hhbmdlSWZOZWVkZWQoKTsKKyAgICAg
ICAgZW1pdCBxLT5sb2FkaW5nQ2hhbmdlZCgmbG9hZFJlcXVlc3QpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gV2Ugc2V0IHRoZSB1bnJlYWNoYWJsZSB1cmwgdW5jb25kaXRpb25h
bGx5IHNvIHRoYXQgdGhlIGN1cnJlbnQKKyAgICAvLyBhY3RpdmUgdXJsIG9mIHRoZSB3ZWJ2aWV3
IHdoZW4gdGhlIGxvYWRpbmdDaGFuZ2VkIHNpZ25hbCBpcworICAgIC8vIGVtaXR0ZWQgcmVmbGVj
dHMgdGhlIGZhaWxlZCB1cmwsIG5vdCB0aGUgcHJldmlvdXNseSBjb21taXR0ZWQKKyAgICAvLyB1
cmwuIFRoaXMgYWxzbyBlbnN1cmVzIHRoYXQgaWYgdGhlIHVzZXIgZG9lcyBub3QgZG8gYSBsb2Fk
SHRtbAorICAgIC8vIHdpdGggYW4gZXJyb3IgcGFnZSBhbmQgYW5kIHVucmVhY2hhYmxlIHVybCBh
cyBhIHJlcG9uc2UgdG8gdGhlCisgICAgLy8gZmFpbGVkIGxvYWQsIHdlIGNhbiBzdGlsbCBkZXRl
Y3QgdGhlIGZhaWxlZCB1cmwgZm9yIHJlbG9hZHMuCisKKyAgICAvLyBGSVhNRTogRmluZCBhIHdh
eSB0byBkbyB0aGlzIHdpdGggdGhlIEMgQVBJIC8gYWRkIGEgZnVuY3Rpb24gdG8gZG8gdGhpcyB0
byB0aGUgQyBBUEkKKyAgICB0b0ltcGwoZnJhbWUpLT5zZXRVbnJlYWNoYWJsZVVSTChlcnJvci51
cmwoKSk7CisgICAgcS0+ZW1pdFVybENoYW5nZUlmTmVlZGVkKCk7CisgICAgUVdlYkxvYWRSZXF1
ZXN0IGxvYWRSZXF1ZXN0KGVycm9yLnVybCgpLCBRUXVpY2tXZWJWaWV3OjpMb2FkRmFpbGVkU3Rh
dHVzLCBlcnJvci5kZXNjcmlwdGlvbigpLCBzdGF0aWNfY2FzdDxRUXVpY2tXZWJWaWV3OjpFcnJv
ckRvbWFpbj4oZXJyb3IudHlwZSgpKSwgZXJyb3JDb2RlKTsKICAgICBlbWl0IHEtPmxvYWRpbmdD
aGFuZ2VkKCZsb2FkUmVxdWVzdCk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnNl
dFRyYW5zcGFyZW50QmFja2dyb3VuZChib29sIGVuYWJsZSkKK3N0YXRpYyBRUXVpY2tXZWJWaWV3
UHJpdmF0ZSogdG9RUXVpY2tXZWJWaWV3UHJpdmF0ZShjb25zdCB2b2lkKiBjbGllbnRJbmZvKQog
ewotICAgIHdlYlBhZ2VQcm94eS0+c2V0RHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoZW5hYmxl
KTsKKyAgICBBU1NFUlQoY2xpZW50SW5mbyk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
UVF1aWNrV2ViVmlld1ByaXZhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CiB9
CiAKLWJvb2wgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnRyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNv
bnN0Cit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQogewotICAgIHJldHVybiB3ZWJQYWdlUHJveHktPmRyYXdzVHJhbnNwYXJl
bnRCYWNrZ3JvdW5kKCk7Ci19CisgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQor
ICAgICAgICByZXR1cm47CiAKLXZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnByb3Zpc2lvbmFs
TG9hZERpZFN0YXJ0KGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpCi17Ci0gICAgUV9RKFFRdWlja1dl
YlZpZXcpOworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmwgID0gYWRvcHRXSyhXS0ZyYW1l
Q29weVByb3Zpc2lvbmFsVVJMKGZyYW1lKSk7CiAKLSAgICBxLT5lbWl0VXJsQ2hhbmdlSWZOZWVk
ZWQoKTsKKyAgICBRUXVpY2tXZWJWaWV3KiBjb25zdCBxID0gdG9RUXVpY2tXZWJWaWV3UHJpdmF0
ZShjbGllbnRJbmZvKS0+cV9mdW5jKCk7CiAKLSAgICBRV2ViTG9hZFJlcXVlc3QgbG9hZFJlcXVl
c3QoUVN0cmluZyh1cmwpLCBRUXVpY2tXZWJWaWV3OjpMb2FkU3RhcnRlZFN0YXR1cyk7CisgICAg
cS0+ZW1pdFVybENoYW5nZUlmTmVlZGVkKCk7CisgICAgUVdlYkxvYWRSZXF1ZXN0IGxvYWRSZXF1
ZXN0KFdLVVJMQ29weVFVcmwodXJsLmdldCgpKSwgUVF1aWNrV2ViVmlldzo6TG9hZFN0YXJ0ZWRT
dGF0dXMpOwogICAgIGVtaXQgcS0+bG9hZGluZ0NoYW5nZWQoJmxvYWRSZXF1ZXN0KTsKIH0KIAot
dm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkKGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZh
dGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdL
UGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQogewotICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKKyAgICBpZiAoIVdLRnJhbWVJc01haW5G
cmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybjsKIAotICAgIHEtPmVtaXRVcmxDaGFuZ2VJZk5l
ZWRlZCgpOworICAgIHRvUVF1aWNrV2ViVmlld1ByaXZhdGUoY2xpZW50SW5mbyktPnFfZnVuYygp
LT5lbWl0VXJsQ2hhbmdlSWZOZWVkZWQoKTsKIH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6bG9hZERpZENvbW1pdCgpCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1l
LCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7
Ci0gICAgUV9RKFFRdWlja1dlYlZpZXcpOwotICAgIEFTU0VSVChxLT5sb2FkaW5nKCkpOworICAg
IGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworICAgIHRv
UVF1aWNrV2ViVmlld1ByaXZhdGUoY2xpZW50SW5mbyktPmRpc3BhdGNoTG9hZEZhaWxlZChmcmFt
ZSwgZXJyb3IpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDb21taXRMb2Fk
Rm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit7CisgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQor
ICAgICAgICByZXR1cm47CisgICAgUVF1aWNrV2ViVmlld1ByaXZhdGUqIHdlYlZpZXdQcml2YXRl
ID0gdG9RUXVpY2tXZWJWaWV3UHJpdmF0ZShjbGllbnRJbmZvKTsKKworICAgIFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXIqIHB2YyA9IHdlYlZpZXdQcml2YXRlLT52aWV3cG9ydENvbnRyb2xsZXIoKTsK
KyAgICBpZiAocHZjKQorICAgICAgICBwdmMtPmRpZENvbW1pdExvYWQoKTsKIAotICAgIG1fYmV0
d2VlbkxvYWRDb21taXRBbmRGaXJzdEZyYW1lID0gdHJ1ZTsKKyAgICBRUXVpY2tXZWJWaWV3KiBj
b25zdCBxID0gd2ViVmlld1ByaXZhdGUtPnFfZnVuYygpOworICAgIEFTU0VSVChxLT5sb2FkaW5n
KCkpOworICAgIHdlYlZpZXdQcml2YXRlLT5tX2JldHdlZW5Mb2FkQ29tbWl0QW5kRmlyc3RGcmFt
ZSA9IHRydWU7CiAgICAgZW1pdCBxLT5uYXZpZ2F0aW9uSGlzdG9yeUNoYW5nZWQoKTsKICAgICBl
bWl0IHEtPnRpdGxlQ2hhbmdlZCgpOwogfQogCi12b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpk
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCkKK3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRp
ZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJl
ZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBRX1EoUVF1aWNrV2ViVmlldyk7Cisg
ICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBRUXVpY2tXZWJWaWV3KiBjb25zdCBxID0gdG9RUXVpY2tXZWJWaWV3UHJpdmF0ZShjbGllbnRJ
bmZvKS0+cV9mdW5jKCk7CisgICAgQVNTRVJUKCFxLT5sb2FkaW5nKCkpOworCisgICAgUVdlYkxv
YWRSZXF1ZXN0IGxvYWRSZXF1ZXN0KHEtPnVybCgpLCBRUXVpY2tXZWJWaWV3OjpMb2FkU3VjY2Vl
ZGVkU3RhdHVzKTsKKyAgICBlbWl0IHEtPmxvYWRpbmdDaGFuZ2VkKCZsb2FkUmVxdWVzdCk7Cit9
CiAKK3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJh
bWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVS
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJh
bWUoZnJhbWUpKQorICAgICAgICByZXR1cm47CisgICAgdG9RUXVpY2tXZWJWaWV3UHJpdmF0ZShj
bGllbnRJbmZvKS0+ZGlzcGF0Y2hMb2FkRmFpbGVkKGZyYW1lLCBlcnJvcik7Cit9CisKK3ZvaWQg
UVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShX
S1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUg
dHlwZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAg
IGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOworICAgIFFR
dWlja1dlYlZpZXcqIGNvbnN0IHEgPSB0b1FRdWlja1dlYlZpZXdQcml2YXRlKGNsaWVudEluZm8p
LT5xX2Z1bmMoKTsKICAgICBxLT5lbWl0VXJsQ2hhbmdlSWZOZWVkZWQoKTsKICAgICBlbWl0IHEt
Pm5hdmlnYXRpb25IaXN0b3J5Q2hhbmdlZCgpOwogfQogCi12b2lkIFFRdWlja1dlYlZpZXdQcml2
YXRlOjp0aXRsZURpZENoYW5nZSgpCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRSZWNl
aXZlVGl0bGVGb3JGcmFtZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIHRpdGxlLCBXS0ZyYW1lUmVm
IGZyYW1lLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgUV9RKFFR
dWlja1dlYlZpZXcpOwotCi0gICAgZW1pdCBxLT50aXRsZUNoYW5nZWQoKTsKKyAgICBpZiAoIVdL
RnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybjsKKyAgICBlbWl0IHRvUVF1
aWNrV2ViVmlld1ByaXZhdGUoY2xpZW50SW5mbyktPnFfZnVuYygpLT50aXRsZUNoYW5nZWQoKTsK
IH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6bG9hZFByb2dyZXNzRGlkQ2hhbmdlKGlu
dCBsb2FkUHJvZ3Jlc3MpCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRTdGFydFByb2dy
ZXNzKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBRX1EoUVF1aWNr
V2ViVmlldyk7CisgICAgdG9RUXVpY2tXZWJWaWV3UHJpdmF0ZShjbGllbnRJbmZvKS0+bG9hZFBy
b2dyZXNzRGlkQ2hhbmdlKDApOworfQogCi0gICAgbV9sb2FkUHJvZ3Jlc3MgPSBsb2FkUHJvZ3Jl
c3M7Cit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VQcm9ncmVzcyhXS1BhZ2VS
ZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB0b1FRdWlja1dlYlZpZXdQ
cml2YXRlKGNsaWVudEluZm8pLT5sb2FkUHJvZ3Jlc3NEaWRDaGFuZ2UoV0tQYWdlR2V0RXN0aW1h
dGVkUHJvZ3Jlc3MocGFnZSkgKiAxMDApOworfQogCi0gICAgZW1pdCBxLT5sb2FkUHJvZ3Jlc3ND
aGFuZ2VkKCk7Cit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRGaW5pc2hQcm9ncmVzcyhX
S1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgdG9RUXVpY2tXZWJWaWV3
UHJpdmF0ZShjbGllbnRJbmZvKS0+bG9hZFByb2dyZXNzRGlkQ2hhbmdlKDEwMCk7CiB9CiAKLXZv
aWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmJhY2tGb3J3YXJkTGlzdERpZENoYW5nZSgpCit2b2lk
IFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoV0tQYWdlUmVm
LCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYsIFdLQXJyYXlSZWYsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pCiB7Ci0gICAgbmF2aWdhdGlvbkhpc3RvcnktPmQtPnJlc2V0KCk7CisgICAgdG9RUXVp
Y2tXZWJWaWV3UHJpdmF0ZShjbGllbnRJbmZvKS0+bmF2aWdhdGlvbkhpc3RvcnktPmQtPnJlc2V0
KCk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmxvYWREaWRTdWNjZWVkKCkKK3Zv
aWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnNldFRyYW5zcGFyZW50QmFja2dyb3VuZChib29sIGVu
YWJsZSkKIHsKLSAgICBRX1EoUVF1aWNrV2ViVmlldyk7Ci0gICAgQVNTRVJUKCFxLT5sb2FkaW5n
KCkpOworICAgIHdlYlBhZ2VQcm94eS0+c2V0RHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoZW5h
YmxlKTsKK30KIAotICAgIFFXZWJMb2FkUmVxdWVzdCBsb2FkUmVxdWVzdChxLT51cmwoKSwgUVF1
aWNrV2ViVmlldzo6TG9hZFN1Y2NlZWRlZFN0YXR1cyk7Ci0gICAgZW1pdCBxLT5sb2FkaW5nQ2hh
bmdlZCgmbG9hZFJlcXVlc3QpOworYm9vbCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dHJhbnNwYXJl
bnRCYWNrZ3JvdW5kKCkgY29uc3QKK3sKKyAgICByZXR1cm4gd2ViUGFnZVByb3h5LT5kcmF3c1Ry
YW5zcGFyZW50QmFja2dyb3VuZCgpOwogfQogCi12b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjps
b2FkRGlkRmFpbChjb25zdCBRdFdlYkVycm9yJiBlcnJvcikKK3ZvaWQgUVF1aWNrV2ViVmlld1By
aXZhdGU6OmxvYWRQcm9ncmVzc0RpZENoYW5nZShpbnQgbG9hZFByb2dyZXNzKQogewogICAgIFFf
UShRUXVpY2tXZWJWaWV3KTsKLSAgICBBU1NFUlQoIXEtPmxvYWRpbmcoKSk7CiAKLSAgICBRV2Vi
TG9hZFJlcXVlc3QgbG9hZFJlcXVlc3QoZXJyb3IudXJsKCksIFFRdWlja1dlYlZpZXc6OkxvYWRG
YWlsZWRTdGF0dXMsIGVycm9yLmRlc2NyaXB0aW9uKCksIHN0YXRpY19jYXN0PFFRdWlja1dlYlZp
ZXc6OkVycm9yRG9tYWluPihlcnJvci50eXBlKCkpLCBlcnJvci5lcnJvckNvZGUoKSk7Ci0gICAg
ZW1pdCBxLT5sb2FkaW5nQ2hhbmdlZCgmbG9hZFJlcXVlc3QpOworICAgIG1fbG9hZFByb2dyZXNz
ID0gbG9hZFByb2dyZXNzOworCisgICAgZW1pdCBxLT5sb2FkUHJvZ3Jlc3NDaGFuZ2VkKCk7CiB9
CiAKIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmhhbmRsZU1vdXNlRXZlbnQoUU1vdXNlRXZl
bnQqIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlld19wLmgKaW5kZXggMzM4YTExMjJiZGZjZTgwMmYzZmM4NWM0ZWM3N2FhMzZlZGM2MTQz
Mi4uNDU3ZGU2NWUyNTI0OTdiOGRjNjUyNjE4YjYxNGFlZWFmMzA5OTI5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCkBAIC01MSw3
ICs1MSw2IEBAIGNsYXNzIFBsYXRmb3JtV2ViVmlldzsKIG5hbWVzcGFjZSBXZWJLaXQgewogc3Ry
dWN0IFF0UmVmQ291bnRlZE5ldHdvcmtSZXF1ZXN0RGF0YTsKIGNsYXNzIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRRdDsKLWNsYXNzIFF0V2ViUGFnZUxvYWRDbGllbnQ7CiBjbGFzcyBRdFdl
YlBhZ2VGaW5kQ2xpZW50OwogY2xhc3MgUXRXZWJQYWdlUG9saWN5Q2xpZW50OwogY2xhc3MgUXRX
ZWJQYWdlVUlDbGllbnQ7CkBAIC0yMjEsNyArMjIwLDYgQEAgcHJpdmF0ZToKIAogICAgIGZyaWVu
ZCBjbGFzcyBRV2ViS2l0VGVzdDsKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpQYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50UXQ7Ci0gICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6UXRXZWJQYWdl
TG9hZENsaWVudDsKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpRdFdlYlBhZ2VGaW5kQ2xpZW50
OwogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlF0V2ViUGFnZVBvbGljeUNsaWVudDsKICAgICBm
cmllbmQgY2xhc3MgV2ViS2l0OjpRdFdlYlBhZ2VVSUNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaAppbmRleCAyMWVmZGFl
NDAwZThlYzkxZDdiMzFhODUwNDI5MDVjYmRiOTMyZGI0Li4zMTgzOTI5YWE1ZTc5MDIzZjlmM2Y3
YTA4Njc3M2VmZmUyMGVhM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCkBAIC00NCw3ICs0NCw2IEBAIGNsYXNzIFF0RGlh
bG9nUnVubmVyOwogY2xhc3MgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OwogY2xhc3Mg
UXRXZWJDb250ZXh0OwogY2xhc3MgUXRXZWJFcnJvcjsKLWNsYXNzIFF0V2ViUGFnZUxvYWRDbGll
bnQ7CiBjbGFzcyBRdFdlYlBhZ2VQb2xpY3lDbGllbnQ7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiB9
CkBAIC03MywxNiArNzIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgb25Db21wb25l
bnRDb21wbGV0ZSgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHByb3Zpc2lvbmFsTG9hZERpZFN0
YXJ0KGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgV1RGOjpTdHJpbmcmIHVybCk7
Ci0gICAgdmlydHVhbCB2b2lkIGxvYWREaWRDb21taXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbigpOwotICAgIHZpcnR1YWwgdm9pZCB0aXRsZURpZENoYW5n
ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkUHJvZ3Jlc3NEaWRDaGFuZ2UoaW50IGxvYWRQcm9n
cmVzcyk7Ci0gICAgdmlydHVhbCB2b2lkIGJhY2tGb3J3YXJkTGlzdERpZENoYW5nZSgpOwotICAg
IHZpcnR1YWwgdm9pZCBsb2FkRGlkU3VjY2VlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlk
U3RvcCgpOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkRmFpbChjb25zdCBXZWJLaXQ6OlF0V2Vi
RXJyb3ImIGVycm9yKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91c2VFdmVudChRTW91c2VF
dmVudCopOwogCiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nKHVuc2lnbmVkIG1hdGNoQ291bnQpOwpA
QCAtMTU5LDYgKzE0OSwyMyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFFQb2ludEYgYWRqdXN0KGNv
bnN0IFFQb2ludEYmKTsKICAgICB9OwogCisgICAgdm9pZCByZWdpc3RlclBhZ2VMb2FkQ2xpZW50
KCk7CisgICAgdm9pZCBkaXNwYXRjaExvYWRGYWlsZWQoV0tGcmFtZVJlZiwgY29uc3QgV2ViS2l0
OjpRdFdlYkVycm9yJik7CisKKyAgICAvLyBXS1BhZ2VMb2FkQ2xpZW50IGNhbGxiYWNrcy4KKyAg
ICBzdGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwg
V0tGcmFtZVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
KyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tFcnJvclJlZiwg
V0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVS
ZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRp
ZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiB1c2Vy
RGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkRmFpbExv
YWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLRXJyb3JSZWYsIFdL
VHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZv
aWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJl
ZiwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGl0bGVGb3JG
cmFtZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYgdXNlckRh
dGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZFN0YXJ0UHJv
Z3Jlc3MoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaWRDaGFuZ2VQcm9ncmVzcyhXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwor
ICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFByb2dyZXNzKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdL
UGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLCBXS0FycmF5UmVmLCBjb25zdCB2b2lk
ICpjbGllbnRJbmZvKTsKKwogICAgIFFRdWlja1dlYlZpZXdQcml2YXRlKFFRdWlja1dlYlZpZXcq
IHZpZXdwb3J0KTsKICAgICBSZWZQdHI8V2ViS2l0OjpRdFdlYkNvbnRleHQ+IGNvbnRleHQ7CiAg
ICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiB3ZWJQYWdlUHJveHk7CkBAIC0xNzAsNyAr
MTc3LDYgQEAgcHJvdGVjdGVkOgogICAgIE93blB0cjxRV2ViTmF2aWdhdGlvbkhpc3Rvcnk+IG5h
dmlnYXRpb25IaXN0b3J5OwogICAgIE93blB0cjxRV2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2Vz
OwogCi0gICAgUVNjb3BlZFBvaW50ZXI8V2ViS2l0OjpRdFdlYlBhZ2VMb2FkQ2xpZW50PiBwYWdl
TG9hZENsaWVudDsKICAgICBRU2NvcGVkUG9pbnRlcjxXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGll
bnQ+IHBhZ2VGaW5kQ2xpZW50OwogICAgIFFTY29wZWRQb2ludGVyPFdlYktpdDo6UXRXZWJQYWdl
UG9saWN5Q2xpZW50PiBwYWdlUG9saWN5Q2xpZW50OwogICAgIFFTY29wZWRQb2ludGVyPFdlYktp
dDo6UXRXZWJQYWdlVUlDbGllbnQ+IHBhZ2VVSUNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYkVycm9yLmNwcAppbmRleCA3NTg4NGY0NDBjZjBhOWI1MmFjMzViNDA1OTc4
NWM4MmJlYTJjN2QwLi40MmE0NDlkYTU2NTZjNjkxODI4MzU2ZmMxZjk4NzhlMWE3ZjhkODdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJFcnJvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuY3BwCkBAIC01Nyw3ICs1
Nyw3IEBAIGludCBRdFdlYkVycm9yOjplcnJvckNvZGUoKSBjb25zdAogCiBRU3RyaW5nIFF0V2Vi
RXJyb3I6OnVybCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRvSW1wbChlcnJvci5nZXQoKSktPmZh
aWxpbmdVUkwoKTsKKyAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmluZyhXS1VSTENvcHlTdHJp
bmcoV0tFcnJvckNvcHlGYWlsaW5nVVJMKGVycm9yLmdldCgpKSkpOwogfQogCiBRU3RyaW5nIFF0
V2ViRXJyb3I6OmRlc2NyaXB0aW9uKCkgY29uc3QKQEAgLTY3LDYgKzY3LDcgQEAgUVN0cmluZyBR
dFdlYkVycm9yOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAKIGJvb2wgUXRXZWJFcnJvcjo6aXNDYW5j
ZWxsYXRpb24oKSBjb25zdAogeworICAgIC8vIEZJWE1FOiBBZGQgQyBBUEkgdG8gcmV0dXJuIHRo
ZSBjYW5jZWxsYXRpb24gYml0IG9yIGZpbmQgYSB3YXkgdG8gYWNjZXNzIHRoZSBwbGF0Zm9ybUVy
cm9yIGZyb20gdGhlIEVycm9yUmVmLgogICAgIHJldHVybiB0b0ltcGwoZXJyb3IuZ2V0KCkpLT5w
bGF0Zm9ybUVycm9yKCkuaXNDYW5jZWxsYXRpb24oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiODc3Y2E4ZGY3NTgxZGM5NWUwODgzZjgyNDY5OGE4MjM5ZTIxZjc3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50LmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDIxNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlF0V2ViUGFnZUxvYWRDbGllbnQuaCIKLQotI2luY2x1ZGUgIlF0V2ViRXJy
b3IuaCIKLSNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3BfcC5oIgotCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVF0V2ViUGFnZUxvYWRDbGllbnQ6OlF0
V2ViUGFnZUxvYWRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFFRdWlja1dlYlZpZXcqIHdlYlZp
ZXcpCi0gICAgOiBtX3dlYlZpZXcod2ViVmlldykKLXsKLSAgICBXS1BhZ2VMb2FkZXJDbGllbnQg
bG9hZENsaWVudDsKLSAgICBtZW1zZXQoJmxvYWRDbGllbnQsIDAsIHNpemVvZihXS1BhZ2VMb2Fk
ZXJDbGllbnQpKTsKLSAgICBsb2FkQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdlTG9hZGVyQ2xpZW50
Q3VycmVudFZlcnNpb247Ci0gICAgbG9hZENsaWVudC5jbGllbnRJbmZvID0gdGhpczsKLSAgICBs
b2FkQ2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgPSBkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lOwotICAgIGxvYWRDbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgPSBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKLSAgICBsb2FkQ2xpZW50LmRpZEZhaWxQcm92aXNp
b25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSA9IGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJy
b3JGb3JGcmFtZTsKLSAgICBsb2FkQ2xpZW50LmRpZENvbW1pdExvYWRGb3JGcmFtZSA9IGRpZENv
bW1pdExvYWRGb3JGcmFtZTsKLSAgICBsb2FkQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9
IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2FkQ2xpZW50LmRpZEZhaWxMb2FkV2l0aEVy
cm9yRm9yRnJhbWUgPSBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lOwotICAgIGxvYWRDbGll
bnQuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lID0gZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbkZvckZyYW1lOwotICAgIGxvYWRDbGllbnQuZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUg
PSBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZTsKLSAgICBsb2FkQ2xpZW50LmRpZFN0YXJ0UHJvZ3Jl
c3MgPSBkaWRTdGFydFByb2dyZXNzOwotICAgIGxvYWRDbGllbnQuZGlkQ2hhbmdlUHJvZ3Jlc3Mg
PSBkaWRDaGFuZ2VQcm9ncmVzczsKLSAgICBsb2FkQ2xpZW50LmRpZEZpbmlzaFByb2dyZXNzID0g
ZGlkRmluaXNoUHJvZ3Jlc3M7Ci0gICAgbG9hZENsaWVudC5kaWRDaGFuZ2VCYWNrRm9yd2FyZExp
c3QgPSBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3Q7Ci0gICAgV0tQYWdlU2V0UGFnZUxvYWRlckNs
aWVudChwYWdlUmVmLCAmbG9hZENsaWVudCk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVu
dDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV1RGOjpTdHJpbmcmIHVybCkKLXsKLSAg
ICBtX3dlYlZpZXctPmRfZnVuYygpLT5wcm92aXNpb25hbExvYWREaWRTdGFydCh1cmwpOwotfQot
Ci12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZChjb25zdCBXVEY6OlN0cmluZyYgdXJsKQotewotICAgIG1fd2ViVmlldy0+
ZF9mdW5jKCktPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCh1cmwp
OwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZENvbW1pdExvYWQoKQotewotICAg
IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIHB2YyA9IG1fd2ViVmlldy0+ZF9mdW5jKCktPnZpZXdw
b3J0Q29udHJvbGxlcigpOwotICAgIGlmIChwdmMpCi0gICAgICAgIHB2Yy0+ZGlkQ29tbWl0TG9h
ZCgpOwotICAgIG1fd2ViVmlldy0+ZF9mdW5jKCktPmxvYWREaWRDb21taXQoKTsKLX0KLQotdm9p
ZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCkKLXsKLSAg
ICBtX3dlYlZpZXctPmRfZnVuYygpLT5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCk7Ci19Ci0K
LXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkUmVjZWl2ZVRpdGxlKCkKLXsKLSAgICBtX3dl
YlZpZXctPmRfZnVuYygpLT50aXRsZURpZENoYW5nZSgpOwotfQotCi12b2lkIFF0V2ViUGFnZUxv
YWRDbGllbnQ6OmRpZENoYW5nZVByb2dyZXNzKGludCBsb2FkUHJvZ3Jlc3MpCi17Ci0gICAgbV93
ZWJWaWV3LT5kX2Z1bmMoKS0+bG9hZFByb2dyZXNzRGlkQ2hhbmdlKGxvYWRQcm9ncmVzcyk7Ci19
Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCkK
LXsKLSAgICBtX3dlYlZpZXctPmRfZnVuYygpLT5iYWNrRm9yd2FyZExpc3REaWRDaGFuZ2UoKTsK
LX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaXNwYXRjaExvYWRTdWNjZWVkZWQoKQot
ewotICAgIG1fd2ViVmlldy0+ZF9mdW5jKCktPmxvYWREaWRTdWNjZWVkKCk7Ci19Ci0KLXZvaWQg
UXRXZWJQYWdlTG9hZENsaWVudDo6ZGlzcGF0Y2hMb2FkU3RvcHBlZCgpCi17Ci0gICAgbV93ZWJW
aWV3LT5kX2Z1bmMoKS0+bG9hZERpZFN0b3AoKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xp
ZW50OjpkaXNwYXRjaExvYWRGYWlsZWQoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFF0V2Vi
RXJyb3ImIGVycm9yKQotewotICAgIGlmIChlcnJvci5pc0NhbmNlbGxhdGlvbigpKSB7Ci0gICAg
ICAgIGRpc3BhdGNoTG9hZFN0b3BwZWQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGludCBlcnJvckNvZGUgPSBlcnJvci5lcnJvckNvZGUoKTsKLQotICAgIGlmIChlcnJvckNvZGUg
PT0ga1dLRXJyb3JDb2RlRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSB8fCBlcnJv
ckNvZGUgPT0ga1dLRXJyb3JDb2RlUGx1Z0luV2lsbEhhbmRsZUxvYWQpIHsKLSAgICAgICAgLy8g
VGhlIGFjdGl2ZSB1cmwgbWlnaHQgaGF2ZSBjaGFuZ2VkCi0gICAgICAgIG1fd2ViVmlldy0+ZW1p
dFVybENoYW5nZUlmTmVlZGVkKCk7Ci0KLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgTG9hZFN0
YXJ0ZWRTdGF0dXMgaGFzIGEgY291bnRlcnBhcnQgd2hlbiBlLmcuIHJlcXVlc3RpbmcgYSBkb3du
bG9hZC4KLSAgICAgICAgZGlzcGF0Y2hMb2FkU3VjY2VlZGVkKCk7Ci0KLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIC8vIFdlIHNldCB0aGUgdW5yZWFjaGFibGUgdXJsIHVuY29uZGl0aW9u
YWxseSBzbyB0aGF0IHRoZSBjdXJyZW50Ci0gICAgLy8gYWN0aXZlIHVybCBvZiB0aGUgd2Vidmll
dyB3aGVuIHRoZSBsb2FkaW5nQ2hhbmdlZCBzaWduYWwgaXMKLSAgICAvLyBlbWl0dGVkIHJlZmxl
Y3RzIHRoZSBmYWlsZWQgdXJsLCBub3QgdGhlIHByZXZpb3VzbHkgY29tbWl0dGVkCi0gICAgLy8g
dXJsLiBUaGlzIGFsc28gZW5zdXJlcyB0aGF0IGlmIHRoZSB1c2VyIGRvZXMgbm90IGRvIGEgbG9h
ZEh0bWwKLSAgICAvLyB3aXRoIGFuIGVycm9yIHBhZ2UgYW5kIGFuZCB1bnJlYWNoYWJsZSB1cmwg
YXMgYSByZXBvbnNlIHRvIHRoZQotICAgIC8vIGZhaWxlZCBsb2FkLCB3ZSBjYW4gc3RpbGwgZGV0
ZWN0IHRoZSBmYWlsZWQgdXJsIGZvciByZWxvYWRzLgotICAgIGZyYW1lLT5zZXRVbnJlYWNoYWJs
ZVVSTChlcnJvci51cmwoKSk7Ci0gICAgbV93ZWJWaWV3LT5lbWl0VXJsQ2hhbmdlSWZOZWVkZWQo
KTsKLQotICAgIG1fd2ViVmlldy0+ZF9mdW5jKCktPmxvYWREaWRGYWlsKGVycm9yKTsKLX0KLQot
c3RhdGljIFF0V2ViUGFnZUxvYWRDbGllbnQqIHRvUXRXZWJQYWdlTG9hZENsaWVudChjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQotewotICAgIEFTU0VSVChjbGllbnRJbmZvKTsKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxRdFdlYlBhZ2VMb2FkQ2xpZW50Kj4oY29uc3RfY2FzdDx2b2lkKj4o
Y2xpZW50SW5mbykpOwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVS
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJh
bWUoZnJhbWUpKQotICAgICAgICByZXR1cm47Ci0gICAgdG9RdFdlYlBhZ2VMb2FkQ2xpZW50KGNs
aWVudEluZm8pLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZCh0b0ltcGwoZnJhbWUpLT5wcm92aXNp
b25hbFVSTCgpKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVS
ZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBpZiAo
IVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdlYkZy
YW1lUHJveHkqIHdrZnJhbWUgPSB0b0ltcGwoZnJhbWUpOwotICAgIHRvUXRXZWJQYWdlTG9hZENs
aWVudChjbGllbnRJbmZvKS0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkKHdrZnJhbWUtPnByb3Zpc2lvbmFsVVJMKCkpOwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRD
bGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYs
IFdLRnJhbWVSZWYgZnJhbWUsIFdLRXJyb3JSZWYgZXJyb3IsIFdLVHlwZVJlZiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKLXsKLSAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0g
ICAgICAgIHJldHVybjsKLSAgICB0b1F0V2ViUGFnZUxvYWRDbGllbnQoY2xpZW50SW5mbyktPmRp
c3BhdGNoTG9hZEZhaWxlZCh0b0ltcGwoZnJhbWUpLCBlcnJvcik7Ci19Ci0KLXZvaWQgUXRXZWJQ
YWdlTG9hZENsaWVudDo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJl
ZiBmcmFtZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIGlmICgh
V0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHRvUXRXZWJQ
YWdlTG9hZENsaWVudChjbGllbnRJbmZvKS0+ZGlkQ29tbWl0TG9hZCgpOwotfQotCi12b2lkIFF0
V2ViUGFnZUxvYWRDbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJh
bWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBp
ZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybjsKLSAgICB0b1F0
V2ViUGFnZUxvYWRDbGllbnQoY2xpZW50SW5mbyktPmRpc3BhdGNoTG9hZFN1Y2NlZWRlZCgpOwot
fQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJh
bWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVS
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJh
bWUoZnJhbWUpKQotICAgICAgICByZXR1cm47Ci0gICAgdG9RdFdlYlBhZ2VMb2FkQ2xpZW50KGNs
aWVudEluZm8pLT5kaXNwYXRjaExvYWRGYWlsZWQodG9JbXBsKGZyYW1lKSwgZXJyb3IpOwotfQot
Ci12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2FtZURvY3VtZW50TmF2aWdhdGlv
blR5cGUgdHlwZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQot
ewotICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHRvUXRXZWJQYWdlTG9hZENsaWVudChjbGllbnRJbmZvKS0+ZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbigpOwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZFJlY2VpdmVUaXRs
ZUZvckZyYW1lKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgdGl0bGUsIFdLRnJhbWVSZWYgZnJhbWUs
IFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBpZiAoIVdLRnJhbWVJ
c01haW5GcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybjsKLSAgICB0b1F0V2ViUGFnZUxvYWRD
bGllbnQoY2xpZW50SW5mbyktPmRpZFJlY2VpdmVUaXRsZSgpOwotfQotCi12b2lkIFF0V2ViUGFn
ZUxvYWRDbGllbnQ6OmRpZFN0YXJ0UHJvZ3Jlc3MoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQotewotICAgIHRvUXRXZWJQYWdlTG9hZENsaWVudChjbGllbnRJbmZvKS0+ZGlkQ2hh
bmdlUHJvZ3Jlc3MoMCk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkQ2hhbmdl
UHJvZ3Jlc3MoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAg
dG9RdFdlYlBhZ2VMb2FkQ2xpZW50KGNsaWVudEluZm8pLT5kaWRDaGFuZ2VQcm9ncmVzcyhXS1Bh
Z2VHZXRFc3RpbWF0ZWRQcm9ncmVzcyhwYWdlKSAqIDEwMCk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdl
TG9hZENsaWVudDo6ZGlkRmluaXNoUHJvZ3Jlc3MoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQotewotICAgIHRvUXRXZWJQYWdlTG9hZENsaWVudChjbGllbnRJbmZvKS0+ZGlkQ2hh
bmdlUHJvZ3Jlc3MoMTAwKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRDaGFu
Z2VCYWNrRm9yd2FyZExpc3QoV0tQYWdlUmVmLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYsIFdL
QXJyYXlSZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCi17Ci0gICAgdG9RdFdlYlBhZ2VMb2Fk
Q2xpZW50KGNsaWVudEluZm8pLT5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2Via2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZUxvYWRDbGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY4YmFj
MTY4ODU1OWQ4YWUwZTU4NGMxZGNhY2Q3Y2E5ZjhiNDM1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlTG9hZENsaWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICog
VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFs
b25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0gKgotICovCi0KLSNpZm5kZWYgUXRXZWJQYWdlTG9hZENsaWVudF9oCi0jZGVmaW5lIFF0V2Vi
UGFnZUxvYWRDbGllbnRfaAotCi0jaW5jbHVkZSA8UXRHbG9iYWw+Ci0jaW5jbHVkZSA8V2ViRnJh
bWVQcm94eS5oPgotI2luY2x1ZGUgPFdLUGFnZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgotCi1RVF9CRUdJTl9OQU1FU1BBQ0UKLWNsYXNzIFFVcmw7Ci1RVF9FTkRfTkFNRVNQ
QUNFCi0KLWNsYXNzIFFRdWlja1dlYlZpZXc7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFz
cyBRdFdlYkVycm9yOwotCi1jbGFzcyBRdFdlYlBhZ2VMb2FkQ2xpZW50IHsKLXB1YmxpYzoKLSAg
ICBRdFdlYlBhZ2VMb2FkQ2xpZW50KFdLUGFnZVJlZiwgUVF1aWNrV2ViVmlldyopOwotCi1wcml2
YXRlOgotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV1RGOjpTdHJpbmcm
KTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChj
b25zdCBXVEY6OlN0cmluZyYpOwotICAgIHZvaWQgZGlkQ29tbWl0TG9hZCgpOwotICAgIHZvaWQg
ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbigpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxlKCk7
Ci0gICAgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhpbnQpOwotICAgIHZvaWQgZGlkQ2hhbmdlQmFj
a0ZvcndhcmRMaXN0KCk7Ci0KLSAgICB2b2lkIGRpc3BhdGNoTG9hZFN1Y2NlZWRlZCgpOwotICAg
IHZvaWQgZGlzcGF0Y2hMb2FkU3RvcHBlZCgpOwotICAgIHZvaWQgZGlzcGF0Y2hMb2FkRmFpbGVk
KFdlYkZyYW1lUHJveHkqLCBjb25zdCBRdFdlYkVycm9yJik7Ci0KLQotICAgIC8vIFdLUGFnZUxv
YWRDbGllbnQgY2FsbGJhY2tzLgotICAgIHN0YXRpYyB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwg
V0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMg
dm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBX
S0ZyYW1lUmVmLCBXS0Vycm9yUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOwotICAgIHN0YXRpYyB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VS
ZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAg
ICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiwgV0tFcnJvclJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJh
bWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBX
S1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYsIFdLRnJh
bWVSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAg
c3RhdGljIHZvaWQgZGlkU3RhcnRQcm9ncmVzcyhXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwotICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVByb2dyZXNzKFdLUGFnZVJlZiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmluaXNoUHJvZ3Jlc3Mo
V0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRD
aGFuZ2VCYWNrRm9yd2FyZExpc3QoV0tQYWdlUmVmLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYs
IFdLQXJyYXlSZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotCi0gICAgUVF1aWNrV2ViVmll
dyogbV93ZWJWaWV3OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Via2l0Ci0KLSNlbmRpZiAvLyBR
dFdlYlBhZ2VMb2FkQ2xpZW50X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186817</attachid>
            <date>2013-02-06 03:58:55 -0800</date>
            <delta_ts>2013-02-07 04:05:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108473-20130206125531.patch</filename>
            <type>text/plain</type>
            <size>30708</size>
            <attacher name="Michael Brüning">michael.bruning</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODdiNmFlNGM1OGExN2E1
Mzk3OGRmNmY2NDAxNTNjYTgwMzEyOGFhMy4uMTBmNzUzMjBmNDViNDgyMmQxZGQ2NDNhZmMyZDQ1
Njk4ZjQ1ZGM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEzLTAyLTA2ICBNaWNo
YWVsIEJyw7xuaW5nICA8bWljaGFlbC5icnVuaW5nQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRd
W1dLMl0gRm9sZCBRdFdlYlBhZ2VMb2FkQ2xpZW50IGludG8gUVF1aWNrV2ViVmlld1ByaXZhdGUg
YW5kIG1vdmUgdG8gQyBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDg0NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KyAgICAgICAgU2lnbmVkIG9mZiBmb3IgV2ViS2l0MiBieSBCZW5qYW1pbiBQb3VsYWluLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgUXRXZWJQYWdlTG9hZENsaWVudCBhbmQgbW92
ZXMgdGhlIGZ1bmN0aW9uYWxpdHkgaW50byB0aGUKKyAgICAgICAgUVF1aWNrV2ViVmlld1ByaXZh
dGUgYXMgbW9zdCBjYWxsYmFjayBtZXRob2RzIGFyZSBjYWxsaW5nIHRoZSBwcml2YXRlIHdlYnZp
ZXcKKyAgICAgICAgaW5kaXJlY3RseSBhbnl3YXkuCisKKyAgICAgICAgVGhlIHBhdGNoIGFsc28g
bW92ZXMgYXMgbXVjaCBvZiB0aGUgZnVuY3Rpb25hbGl0eSB0byB0aGUgQyBBUEkgYXMgaXMgcG9z
c2libGUgd2l0aAorICAgICAgICB0aGUgY3VycmVudCBDIEFQSSBhbmQgYWRkcyBGSVhNRXMgdG8g
dGhlIHBsYWNlcyB0aGF0IG5lZWQgdG8gYmUgZml4ZWQgaW4gdGhpcyBwYXJ0CisgICAgICAgIG9m
IHRoZSBBUEkgc3RpbGwuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHA6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJp
dmF0ZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6cmVnaXN0
ZXJQYWdlTG9hZENsaWVudCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlzcGF0
Y2hMb2FkRmFpbGVkKToKKyAgICAgICAgKHRvUVF1aWNrV2ViVmlld1ByaXZhdGUpOgorICAgICAg
ICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUp
OgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2
YXRlOjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAo
UVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFFR
dWlja1dlYlZpZXdQcml2YXRlOjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAg
ICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJh
bWUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZFJlY2VpdmVUaXRsZUZvckZy
YW1lKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRTdGFydFByb2dyZXNzKToK
KyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VQcm9ncmVzcyk6CisgICAg
ICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmluaXNoUHJvZ3Jlc3MpOgorICAgICAgICAo
UVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAg
IChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6c2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKToKKyAgICAg
ICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjp0cmFuc3BhcmVudEJhY2tncm91bmQpOgorICAgICAg
ICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmxvYWRQcm9ncmVzc0RpZENoYW5nZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvcXQvUXRXZWJFcnJvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViRXJyb3I6
OnVybCk6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViRXJyb3I6OmlzQ2FuY2VsbGF0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVudC5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuaDogUmVtb3ZlZC4KKwog
MjAxMy0wMi0wNiAgTWFyamEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVGFrZSByZWZlcnJlciBwb2xpY3kgaW50byBhY2NvdW50IHdoZW4gY2xlYXJpbmcgdGhlIHJl
ZmVycmVyIGhlYWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1Nv
dXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggYzZlMzE2MmZmOTg0ZWUxNThiMzQ2M2RlYTM4
NjNlNTU5ZDI1M2JjNi4uNzFiMjQ5MWQ1YmQ4OTllYTJlNmNmYjZhYjVjMTgxNGU5NzllNDgyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9UYXJnZXQucHJpCkBAIC03ODYsNyArNzg2LDYgQEAgaGF2ZT8oUVRRVUlDSykgewogICAgICAg
ICBVSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaCBcCiAgICAgICAgIFVJUHJvY2Vzcy9x
dC9RdFBhZ2VDbGllbnQuaCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VGaW5kQ2xp
ZW50LmggXAotICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVudC5oIFwKICAg
ICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBvbGljeUNsaWVudC5oIFwKICAgICAgICAgVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVNHTm9kZS5oIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZVVJQ2xpZW50LmggXApAQCAtODE0LDcgKzgxMyw2IEBAIGhhdmU/KFFUUVVJQ0spIHsKICAg
ICAgICAgVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcCBcCiAgICAgICAgIFVJUHJv
Y2Vzcy9xdC9RdFBhZ2VDbGllbnQuY3BwIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZUZpbmRDbGllbnQuY3BwIFwKLSAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGll
bnQuY3BwIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBvbGljeUNsaWVudC5jcHAg
XAogICAgICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlU0dOb2RlLmNwcCBcCiAgICAgICAgIFVJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IGYxZjEzY2IyNzZl
MjJjMDUwNzI0NGNjNzQwZDNiNWJjYjFhODQ0ZmYuLjQ4NzJmYzljNDg2MmI1MWFhNjMyZTk3YjMx
YmIyYTk5NTZiMDc4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlF0V2ViSWNv
bkRhdGFiYXNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmgiCiAj
aW5jbHVkZSAiUXRXZWJQYWdlRmluZENsaWVudC5oIgotI2luY2x1ZGUgIlF0V2ViUGFnZUxvYWRD
bGllbnQuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VQb2xpY3lDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJXZWJGaW5kT3B0aW9ucy5oIgpAQCAtMzE0
LDggKzMxMyw4IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemUoV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhCiAgICAgUVF1aWNrV2ViUGFnZVBy
aXZhdGUqIGNvbnN0IHBhZ2VWaWV3UHJpdmF0ZSA9IHBhZ2VWaWV3LmRhdGEoKS0+ZDsKICAgICBw
YWdlVmlld1ByaXZhdGUtPmluaXRpYWxpemUod2ViUGFnZVByb3h5LmdldCgpKTsKIAorICAgIHJl
Z2lzdGVyUGFnZUxvYWRDbGllbnQoKTsKICAgICBwYWdlRmluZENsaWVudC5yZXNldChuZXcgUXRX
ZWJQYWdlRmluZENsaWVudCh3ZWJQYWdlLmdldCgpLCBxX3B0cikpOwotICAgIHBhZ2VMb2FkQ2xp
ZW50LnJlc2V0KG5ldyBRdFdlYlBhZ2VMb2FkQ2xpZW50KHdlYlBhZ2UuZ2V0KCksIHFfcHRyKSk7
CiAgICAgcGFnZVBvbGljeUNsaWVudC5yZXNldChuZXcgUXRXZWJQYWdlUG9saWN5Q2xpZW50KHdl
YlBhZ2UuZ2V0KCksIHFfcHRyKSk7CiAgICAgcGFnZVVJQ2xpZW50LnJlc2V0KG5ldyBRdFdlYlBh
Z2VVSUNsaWVudCh3ZWJQYWdlLmdldCgpLCBxX3B0cikpOwogICAgIG5hdmlnYXRpb25IaXN0b3J5
ID0gYWRvcHRQdHIoUVdlYk5hdmlnYXRpb25IaXN0b3J5UHJpdmF0ZTo6Y3JlYXRlSGlzdG9yeSh3
ZWJQYWdlLmdldCgpKSk7CkBAIC0zNDEsOTYgKzM0MCwxODQgQEAgdm9pZCBRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6aW5pdGlhbGl6ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBS
ZWYgcGEKICAgICBxX3B0ci0+c2V0RmxhZyhRUXVpY2tJdGVtOjpJdGVtQWNjZXB0c0Ryb3BzLCB0
cnVlKTsKIH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6bG9hZERpZFN0b3AoKQordm9p
ZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6cmVnaXN0ZXJQYWdlTG9hZENsaWVudCgpCit7CisgICAg
V0tQYWdlTG9hZGVyQ2xpZW50IGxvYWRDbGllbnQ7CisgICAgbWVtc2V0KCZsb2FkQ2xpZW50LCAw
LCBzaXplb2YoV0tQYWdlTG9hZGVyQ2xpZW50KSk7CisgICAgbG9hZENsaWVudC52ZXJzaW9uID0g
a1dLUGFnZUxvYWRlckNsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIGxvYWRDbGllbnQuY2xpZW50
SW5mbyA9IHRoaXM7CisgICAgbG9hZENsaWVudC5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lID0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKKyAgICBsb2FkQ2xpZW50LmRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lID0gZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU7CisgICAgbG9hZENs
aWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUgPSBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWU7CisgICAgbG9hZENsaWVudC5kaWRDb21taXRM
b2FkRm9yRnJhbWUgPSBkaWRDb21taXRMb2FkRm9yRnJhbWU7CisgICAgbG9hZENsaWVudC5kaWRG
aW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7CisgICAgbG9hZENsaWVu
dC5kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lID0gZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JG
cmFtZTsKKyAgICBsb2FkQ2xpZW50LmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSA9
IGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTsKKyAgICBsb2FkQ2xpZW50LmRpZFJl
Y2VpdmVUaXRsZUZvckZyYW1lID0gZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWU7CisgICAgbG9hZENs
aWVudC5kaWRTdGFydFByb2dyZXNzID0gZGlkU3RhcnRQcm9ncmVzczsKKyAgICBsb2FkQ2xpZW50
LmRpZENoYW5nZVByb2dyZXNzID0gZGlkQ2hhbmdlUHJvZ3Jlc3M7CisgICAgbG9hZENsaWVudC5k
aWRGaW5pc2hQcm9ncmVzcyA9IGRpZEZpbmlzaFByb2dyZXNzOworICAgIGxvYWRDbGllbnQuZGlk
Q2hhbmdlQmFja0ZvcndhcmRMaXN0ID0gZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0OworICAgIFdL
UGFnZVNldFBhZ2VMb2FkZXJDbGllbnQod2ViUGFnZS5nZXQoKSwgJmxvYWRDbGllbnQpOworfQor
Cit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaXNwYXRjaExvYWRGYWlsZWQoV0tGcmFtZVJl
ZiBmcmFtZSwgY29uc3QgUXRXZWJFcnJvciYgZXJyb3IpCiB7CiAgICAgUV9RKFFRdWlja1dlYlZp
ZXcpOwogICAgIEFTU0VSVCghcS0+bG9hZGluZygpKTsKLSAgICBRV2ViTG9hZFJlcXVlc3QgbG9h
ZFJlcXVlc3QocS0+dXJsKCksIFFRdWlja1dlYlZpZXc6OkxvYWRTdG9wcGVkU3RhdHVzKTsKKwor
ICAgIGlmIChlcnJvci5pc0NhbmNlbGxhdGlvbigpKSB7CisgICAgICAgIFFXZWJMb2FkUmVxdWVz
dCBsb2FkUmVxdWVzdChxLT51cmwoKSwgUVF1aWNrV2ViVmlldzo6TG9hZFN0b3BwZWRTdGF0dXMp
OworICAgICAgICBlbWl0IHEtPmxvYWRpbmdDaGFuZ2VkKCZsb2FkUmVxdWVzdCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgZXJyb3JDb2RlID0gZXJyb3IuZXJyb3JDb2RlKCk7
CisgICAgaWYgKGVycm9yQ29kZSA9PSBrV0tFcnJvckNvZGVGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5
UG9saWN5Q2hhbmdlICYmIGVycm9yQ29kZSA9PSBrV0tFcnJvckNvZGVQbHVnSW5XaWxsSGFuZGxl
TG9hZCkgeworICAgICAgICBRV2ViTG9hZFJlcXVlc3QgbG9hZFJlcXVlc3QocS0+dXJsKCksIFFR
dWlja1dlYlZpZXc6OkxvYWRTdWNjZWVkZWRTdGF0dXMpOworICAgICAgICBxLT5lbWl0VXJsQ2hh
bmdlSWZOZWVkZWQoKTsKKyAgICAgICAgZW1pdCBxLT5sb2FkaW5nQ2hhbmdlZCgmbG9hZFJlcXVl
c3QpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2Ugc2V0IHRoZSB1bnJlYWNo
YWJsZSB1cmwgdW5jb25kaXRpb25hbGx5IHNvIHRoYXQgdGhlIGN1cnJlbnQKKyAgICAvLyBhY3Rp
dmUgdXJsIG9mIHRoZSB3ZWJ2aWV3IHdoZW4gdGhlIGxvYWRpbmdDaGFuZ2VkIHNpZ25hbCBpcwor
ICAgIC8vIGVtaXR0ZWQgcmVmbGVjdHMgdGhlIGZhaWxlZCB1cmwsIG5vdCB0aGUgcHJldmlvdXNs
eSBjb21taXR0ZWQKKyAgICAvLyB1cmwuIFRoaXMgYWxzbyBlbnN1cmVzIHRoYXQgaWYgdGhlIHVz
ZXIgZG9lcyBub3QgZG8gYSBsb2FkSHRtbAorICAgIC8vIHdpdGggYW4gZXJyb3IgcGFnZSBhbmQg
YW5kIHVucmVhY2hhYmxlIHVybCBhcyBhIHJlcG9uc2UgdG8gdGhlCisgICAgLy8gZmFpbGVkIGxv
YWQsIHdlIGNhbiBzdGlsbCBkZXRlY3QgdGhlIGZhaWxlZCB1cmwgZm9yIHJlbG9hZHMuCisKKyAg
ICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBkbyB0aGlzIHdpdGggdGhlIEMgQVBJIC8gYWRkIGEg
ZnVuY3Rpb24gdG8gZG8gdGhpcyB0byB0aGUgQyBBUEkKKyAgICB0b0ltcGwoZnJhbWUpLT5zZXRV
bnJlYWNoYWJsZVVSTChlcnJvci51cmwoKSk7CisgICAgcS0+ZW1pdFVybENoYW5nZUlmTmVlZGVk
KCk7CisgICAgUVdlYkxvYWRSZXF1ZXN0IGxvYWRSZXF1ZXN0KGVycm9yLnVybCgpLCBRUXVpY2tX
ZWJWaWV3OjpMb2FkRmFpbGVkU3RhdHVzLCBlcnJvci5kZXNjcmlwdGlvbigpLCBzdGF0aWNfY2Fz
dDxRUXVpY2tXZWJWaWV3OjpFcnJvckRvbWFpbj4oZXJyb3IudHlwZSgpKSwgZXJyb3JDb2RlKTsK
ICAgICBlbWl0IHEtPmxvYWRpbmdDaGFuZ2VkKCZsb2FkUmVxdWVzdCk7CiB9CiAKLXZvaWQgUVF1
aWNrV2ViVmlld1ByaXZhdGU6OnNldFRyYW5zcGFyZW50QmFja2dyb3VuZChib29sIGVuYWJsZSkK
K3N0YXRpYyBRUXVpY2tXZWJWaWV3UHJpdmF0ZSogdG9RUXVpY2tXZWJWaWV3UHJpdmF0ZShjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHdlYlBhZ2VQcm94eS0+c2V0RHJhd3NUcmFuc3Bh
cmVudEJhY2tncm91bmQoZW5hYmxlKTsKKyAgICBBU1NFUlQoY2xpZW50SW5mbyk7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UVF1aWNrV2ViVmlld1ByaXZhdGUqPihjb25zdF9jYXN0PHZv
aWQqPihjbGllbnRJbmZvKSk7CiB9CiAKLWJvb2wgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnRyYW5z
cGFyZW50QmFja2dyb3VuZCgpIGNvbnN0Cit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwg
V0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHJldHVybiB3ZWJQYWdl
UHJveHktPmRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCk7Ci19CisgICAgaWYgKCFXS0ZyYW1l
SXNNYWluRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm47CiAKLXZvaWQgUVF1aWNrV2ViVmll
d1ByaXZhdGU6OnByb3Zpc2lvbmFsTG9hZERpZFN0YXJ0KGNvbnN0IFdURjo6U3RyaW5nJiB1cmwp
Ci17Ci0gICAgUV9RKFFRdWlja1dlYlZpZXcpOworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1
cmwgID0gYWRvcHRXSyhXS0ZyYW1lQ29weVByb3Zpc2lvbmFsVVJMKGZyYW1lKSk7CiAKLSAgICBx
LT5lbWl0VXJsQ2hhbmdlSWZOZWVkZWQoKTsKKyAgICBRUXVpY2tXZWJWaWV3KiBjb25zdCBxID0g
dG9RUXVpY2tXZWJWaWV3UHJpdmF0ZShjbGllbnRJbmZvKS0+cV9mdW5jKCk7CiAKLSAgICBRV2Vi
TG9hZFJlcXVlc3QgbG9hZFJlcXVlc3QoUVN0cmluZyh1cmwpLCBRUXVpY2tXZWJWaWV3OjpMb2Fk
U3RhcnRlZFN0YXR1cyk7CisgICAgcS0+ZW1pdFVybENoYW5nZUlmTmVlZGVkKCk7CisgICAgUVdl
YkxvYWRSZXF1ZXN0IGxvYWRSZXF1ZXN0KFdLVVJMQ29weVFVcmwodXJsLmdldCgpKSwgUVF1aWNr
V2ViVmlldzo6TG9hZFN0YXJ0ZWRTdGF0dXMpOwogICAgIGVtaXQgcS0+bG9hZGluZ0NoYW5nZWQo
JmxvYWRSZXF1ZXN0KTsKIH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdURjo6U3RyaW5nJikKK3Zv
aWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVm
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKKyAg
ICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybjsKIAotICAg
IHEtPmVtaXRVcmxDaGFuZ2VJZk5lZWRlZCgpOworICAgIHRvUVF1aWNrV2ViVmlld1ByaXZhdGUo
Y2xpZW50SW5mbyktPnFfZnVuYygpLT5lbWl0VXJsQ2hhbmdlSWZOZWVkZWQoKTsKIH0KIAotdm9p
ZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6bG9hZERpZENvbW1pdCgpCit2b2lkIFFRdWlja1dlYlZp
ZXdQcml2YXRlOjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdl
UmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVSZWYsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgUV9RKFFRdWlja1dlYlZpZXcpOwotICAgIEFTU0VS
VChxLT5sb2FkaW5nKCkpOworICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIHRvUVF1aWNrV2ViVmlld1ByaXZhdGUoY2xpZW50SW5mbyktPmRp
c3BhdGNoTG9hZEZhaWxlZChmcmFtZSwgZXJyb3IpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXdQ
cml2YXRlOjpkaWRDb21taXRMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1l
LCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgaWYgKCFXS0ZyYW1l
SXNNYWluRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm47CisgICAgUVF1aWNrV2ViVmlld1By
aXZhdGUqIHdlYlZpZXdQcml2YXRlID0gdG9RUXVpY2tXZWJWaWV3UHJpdmF0ZShjbGllbnRJbmZv
KTsKKworICAgIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIHBhZ2VWaWV3cG9ydENvbnRyb2xsZXIg
PSB3ZWJWaWV3UHJpdmF0ZS0+dmlld3BvcnRDb250cm9sbGVyKCk7CisgICAgaWYgKHBhZ2VWaWV3
cG9ydENvbnRyb2xsZXIpCisgICAgICAgIHBhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZENvbW1p
dExvYWQoKTsKIAotICAgIG1fYmV0d2VlbkxvYWRDb21taXRBbmRGaXJzdEZyYW1lID0gdHJ1ZTsK
KyAgICBRUXVpY2tXZWJWaWV3KiBjb25zdCBxID0gd2ViVmlld1ByaXZhdGUtPnFfZnVuYygpOwor
ICAgIEFTU0VSVChxLT5sb2FkaW5nKCkpOworICAgIHdlYlZpZXdQcml2YXRlLT5tX2JldHdlZW5M
b2FkQ29tbWl0QW5kRmlyc3RGcmFtZSA9IHRydWU7CiAgICAgZW1pdCBxLT5uYXZpZ2F0aW9uSGlz
dG9yeUNoYW5nZWQoKTsKICAgICBlbWl0IHEtPnRpdGxlQ2hhbmdlZCgpOwogfQogCi12b2lkIFFR
dWlja1dlYlZpZXdQcml2YXRlOjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCkKK3ZvaWQgUVF1
aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJh
bWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBR
X1EoUVF1aWNrV2ViVmlldyk7CisgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBRUXVpY2tXZWJWaWV3KiBjb25zdCBxID0gdG9RUXVpY2tX
ZWJWaWV3UHJpdmF0ZShjbGllbnRJbmZvKS0+cV9mdW5jKCk7CisgICAgQVNTRVJUKCFxLT5sb2Fk
aW5nKCkpOworCisgICAgUVdlYkxvYWRSZXF1ZXN0IGxvYWRSZXF1ZXN0KHEtPnVybCgpLCBRUXVp
Y2tXZWJWaWV3OjpMb2FkU3VjY2VlZGVkU3RhdHVzKTsKKyAgICBlbWl0IHEtPmxvYWRpbmdDaGFu
Z2VkKCZsb2FkUmVxdWVzdCk7Cit9CiAKK3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZh
aWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0Vy
cm9yUmVmIGVycm9yLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAg
aWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm47CisgICAgdG9R
UXVpY2tXZWJWaWV3UHJpdmF0ZShjbGllbnRJbmZvKS0+ZGlzcGF0Y2hMb2FkRmFpbGVkKGZyYW1l
LCBlcnJvcik7Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZFNhbWVEb2N1bWVu
dE5hdmlnYXRpb25Gb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2FtZURv
Y3VtZW50TmF2aWdhdGlvblR5cGUgdHlwZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIFFRdWlja1dlYlZpZXcqIGNvbnN0IHEgPSB0b1FRdWlja1dlYlZp
ZXdQcml2YXRlKGNsaWVudEluZm8pLT5xX2Z1bmMoKTsKICAgICBxLT5lbWl0VXJsQ2hhbmdlSWZO
ZWVkZWQoKTsKICAgICBlbWl0IHEtPm5hdmlnYXRpb25IaXN0b3J5Q2hhbmdlZCgpOwogfQogCi12
b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjp0aXRsZURpZENoYW5nZSgpCit2b2lkIFFRdWlja1dl
YlZpZXdQcml2YXRlOjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXS1BhZ2VSZWYsIFdLU3RyaW5n
UmVmIHRpdGxlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCiB7Ci0gICAgUV9RKFFRdWlja1dlYlZpZXcpOwotCi0gICAgZW1pdCBxLT50aXRsZUNo
YW5nZWQoKTsKKyAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisgICAgICAgIHJl
dHVybjsKKyAgICBlbWl0IHRvUVF1aWNrV2ViVmlld1ByaXZhdGUoY2xpZW50SW5mbyktPnFfZnVu
YygpLT50aXRsZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6bG9h
ZFByb2dyZXNzRGlkQ2hhbmdlKGludCBsb2FkUHJvZ3Jlc3MpCit2b2lkIFFRdWlja1dlYlZpZXdQ
cml2YXRlOjpkaWRTdGFydFByb2dyZXNzKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKIHsKLSAgICBRX1EoUVF1aWNrV2ViVmlldyk7CisgICAgdG9RUXVpY2tXZWJWaWV3UHJpdmF0
ZShjbGllbnRJbmZvKS0+bG9hZFByb2dyZXNzRGlkQ2hhbmdlKDApOworfQogCi0gICAgbV9sb2Fk
UHJvZ3Jlc3MgPSBsb2FkUHJvZ3Jlc3M7Cit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRD
aGFuZ2VQcm9ncmVzcyhXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sK
KyAgICB0b1FRdWlja1dlYlZpZXdQcml2YXRlKGNsaWVudEluZm8pLT5sb2FkUHJvZ3Jlc3NEaWRD
aGFuZ2UoV0tQYWdlR2V0RXN0aW1hdGVkUHJvZ3Jlc3MocGFnZSkgKiAxMDApOworfQogCi0gICAg
ZW1pdCBxLT5sb2FkUHJvZ3Jlc3NDaGFuZ2VkKCk7Cit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRl
OjpkaWRGaW5pc2hQcm9ncmVzcyhXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7
CisgICAgdG9RUXVpY2tXZWJWaWV3UHJpdmF0ZShjbGllbnRJbmZvKS0+bG9hZFByb2dyZXNzRGlk
Q2hhbmdlKDEwMCk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmJhY2tGb3J3YXJk
TGlzdERpZENoYW5nZSgpCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VCYWNr
Rm9yd2FyZExpc3QoV0tQYWdlUmVmLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYsIFdLQXJyYXlS
ZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7Ci0gICAgbmF2aWdhdGlvbkhpc3RvcnktPmQt
PnJlc2V0KCk7CisgICAgdG9RUXVpY2tXZWJWaWV3UHJpdmF0ZShjbGllbnRJbmZvKS0+bmF2aWdh
dGlvbkhpc3RvcnktPmQtPnJlc2V0KCk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6
OmxvYWREaWRTdWNjZWVkKCkKK3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnNldFRyYW5zcGFy
ZW50QmFja2dyb3VuZChib29sIGVuYWJsZSkKIHsKLSAgICBRX1EoUVF1aWNrV2ViVmlldyk7Ci0g
ICAgQVNTRVJUKCFxLT5sb2FkaW5nKCkpOworICAgIHdlYlBhZ2VQcm94eS0+c2V0RHJhd3NUcmFu
c3BhcmVudEJhY2tncm91bmQoZW5hYmxlKTsKK30KIAotICAgIFFXZWJMb2FkUmVxdWVzdCBsb2Fk
UmVxdWVzdChxLT51cmwoKSwgUVF1aWNrV2ViVmlldzo6TG9hZFN1Y2NlZWRlZFN0YXR1cyk7Ci0g
ICAgZW1pdCBxLT5sb2FkaW5nQ2hhbmdlZCgmbG9hZFJlcXVlc3QpOworYm9vbCBRUXVpY2tXZWJW
aWV3UHJpdmF0ZTo6dHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
d2ViUGFnZVByb3h5LT5kcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCgpOwogfQogCi12b2lkIFFR
dWlja1dlYlZpZXdQcml2YXRlOjpsb2FkRGlkRmFpbChjb25zdCBRdFdlYkVycm9yJiBlcnJvcikK
K3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmxvYWRQcm9ncmVzc0RpZENoYW5nZShpbnQgbG9h
ZFByb2dyZXNzKQogewogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKLSAgICBBU1NFUlQoIXEtPmxv
YWRpbmcoKSk7CiAKLSAgICBRV2ViTG9hZFJlcXVlc3QgbG9hZFJlcXVlc3QoZXJyb3IudXJsKCks
IFFRdWlja1dlYlZpZXc6OkxvYWRGYWlsZWRTdGF0dXMsIGVycm9yLmRlc2NyaXB0aW9uKCksIHN0
YXRpY19jYXN0PFFRdWlja1dlYlZpZXc6OkVycm9yRG9tYWluPihlcnJvci50eXBlKCkpLCBlcnJv
ci5lcnJvckNvZGUoKSk7Ci0gICAgZW1pdCBxLT5sb2FkaW5nQ2hhbmdlZCgmbG9hZFJlcXVlc3Qp
OworICAgIG1fbG9hZFByb2dyZXNzID0gbG9hZFByb2dyZXNzOworCisgICAgZW1pdCBxLT5sb2Fk
UHJvZ3Jlc3NDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmhhbmRs
ZU1vdXNlRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgKaW5kZXggMzM4YTExMjJiZGZjZTgwMmYz
ZmM4NWM0ZWM3N2FhMzZlZGM2MTQzMi4uNDU3ZGU2NWUyNTI0OTdiOGRjNjUyNjE4YjYxNGFlZWFm
MzA5OTI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVp
Y2t3ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlj
a3dlYnZpZXdfcC5oCkBAIC01MSw3ICs1MSw2IEBAIGNsYXNzIFBsYXRmb3JtV2ViVmlldzsKIG5h
bWVzcGFjZSBXZWJLaXQgewogc3RydWN0IFF0UmVmQ291bnRlZE5ldHdvcmtSZXF1ZXN0RGF0YTsK
IGNsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDsKLWNsYXNzIFF0V2ViUGFnZUxv
YWRDbGllbnQ7CiBjbGFzcyBRdFdlYlBhZ2VGaW5kQ2xpZW50OwogY2xhc3MgUXRXZWJQYWdlUG9s
aWN5Q2xpZW50OwogY2xhc3MgUXRXZWJQYWdlVUlDbGllbnQ7CkBAIC0yMjEsNyArMjIwLDYgQEAg
cHJpdmF0ZToKIAogICAgIGZyaWVuZCBjbGFzcyBRV2ViS2l0VGVzdDsKICAgICBmcmllbmQgY2xh
c3MgV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ7Ci0gICAgZnJpZW5kIGNs
YXNzIFdlYktpdDo6UXRXZWJQYWdlTG9hZENsaWVudDsKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0
OjpRdFdlYlBhZ2VGaW5kQ2xpZW50OwogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlF0V2ViUGFn
ZVBvbGljeUNsaWVudDsKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpRdFdlYlBhZ2VVSUNsaWVu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
dmlld19wX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
d19wX3AuaAppbmRleCAyMWVmZGFlNDAwZThlYzkxZDdiMzFhODUwNDI5MDVjYmRiOTMyZGI0Li4z
MTgzOTI5YWE1ZTc5MDIzZjlmM2Y3YTA4Njc3M2VmZmUyMGVhM2ZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCkBAIC00NCw3
ICs0NCw2IEBAIGNsYXNzIFF0RGlhbG9nUnVubmVyOwogY2xhc3MgUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudFF0OwogY2xhc3MgUXRXZWJDb250ZXh0OwogY2xhc3MgUXRXZWJFcnJvcjsKLWNs
YXNzIFF0V2ViUGFnZUxvYWRDbGllbnQ7CiBjbGFzcyBRdFdlYlBhZ2VQb2xpY3lDbGllbnQ7CiBj
bGFzcyBXZWJQYWdlUHJveHk7CiB9CkBAIC03MywxNiArNzIsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgb25Db21wb25lbnRDb21wbGV0ZSgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lk
IHByb3Zpc2lvbmFsTG9hZERpZFN0YXJ0KGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29u
c3QgV1RGOjpTdHJpbmcmIHVybCk7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWREaWRDb21taXQoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbigpOwotICAgIHZpcnR1
YWwgdm9pZCB0aXRsZURpZENoYW5nZSgpOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkUHJvZ3Jlc3NE
aWRDaGFuZ2UoaW50IGxvYWRQcm9ncmVzcyk7Ci0gICAgdmlydHVhbCB2b2lkIGJhY2tGb3J3YXJk
TGlzdERpZENoYW5nZSgpOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkU3VjY2VlZCgpOwotICAg
IHZpcnR1YWwgdm9pZCBsb2FkRGlkU3RvcCgpOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkRmFp
bChjb25zdCBXZWJLaXQ6OlF0V2ViRXJyb3ImIGVycm9yKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlTW91c2VFdmVudChRTW91c2VFdmVudCopOwogCiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nKHVu
c2lnbmVkIG1hdGNoQ291bnQpOwpAQCAtMTU5LDYgKzE0OSwyMyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIFFQb2ludEYgYWRqdXN0KGNvbnN0IFFQb2ludEYmKTsKICAgICB9OwogCisgICAgdm9pZCBy
ZWdpc3RlclBhZ2VMb2FkQ2xpZW50KCk7CisgICAgdm9pZCBkaXNwYXRjaExvYWRGYWlsZWQoV0tG
cmFtZVJlZiwgY29uc3QgV2ViS2l0OjpRdFdlYkVycm9yJik7CisKKyAgICAvLyBXS1BhZ2VMb2Fk
Q2xpZW50IGNhbGxiYWNrcy4KKyAgICBzdGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdL
VHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZv
aWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiwgV0tFcnJvclJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV0tQYWdlUmVm
LCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OworICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJh
bWVSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAg
c3RhdGljIHZvaWQgZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJh
bWVSZWYsIFdLRXJyb3JSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1l
KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgV0tU
eXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmLCBXS0ZyYW1l
UmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0
YXRpYyB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3MoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhXS1BhZ2VSZWYsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFByb2dyZXNzKFdL
UGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkQ2hh
bmdlQmFja0ZvcndhcmRMaXN0KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLCBX
S0FycmF5UmVmLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKKwogICAgIFFRdWlja1dlYlZpZXdQ
cml2YXRlKFFRdWlja1dlYlZpZXcqIHZpZXdwb3J0KTsKICAgICBSZWZQdHI8V2ViS2l0OjpRdFdl
YkNvbnRleHQ+IGNvbnRleHQ7CiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiB3ZWJQ
YWdlUHJveHk7CkBAIC0xNzAsNyArMTc3LDYgQEAgcHJvdGVjdGVkOgogICAgIE93blB0cjxRV2Vi
TmF2aWdhdGlvbkhpc3Rvcnk+IG5hdmlnYXRpb25IaXN0b3J5OwogICAgIE93blB0cjxRV2ViUHJl
ZmVyZW5jZXM+IHByZWZlcmVuY2VzOwogCi0gICAgUVNjb3BlZFBvaW50ZXI8V2ViS2l0OjpRdFdl
YlBhZ2VMb2FkQ2xpZW50PiBwYWdlTG9hZENsaWVudDsKICAgICBRU2NvcGVkUG9pbnRlcjxXZWJL
aXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ+IHBhZ2VGaW5kQ2xpZW50OwogICAgIFFTY29wZWRQb2lu
dGVyPFdlYktpdDo6UXRXZWJQYWdlUG9saWN5Q2xpZW50PiBwYWdlUG9saWN5Q2xpZW50OwogICAg
IFFTY29wZWRQb2ludGVyPFdlYktpdDo6UXRXZWJQYWdlVUlDbGllbnQ+IHBhZ2VVSUNsaWVudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmNwcAppbmRleCA3NTg4NGY0
NDBjZjBhOWI1MmFjMzViNDA1OTc4NWM4MmJlYTJjN2QwLi40MmE0NDlkYTU2NTZjNjkxODI4MzU2
ZmMxZjk4NzhlMWE3ZjhkODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2Vi
RXJyb3IuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGludCBRdFdlYkVycm9yOjplcnJvckNvZGUoKSBj
b25zdAogCiBRU3RyaW5nIFF0V2ViRXJyb3I6OnVybCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRv
SW1wbChlcnJvci5nZXQoKSktPmZhaWxpbmdVUkwoKTsKKyAgICByZXR1cm4gV0tTdHJpbmdDb3B5
UVN0cmluZyhXS1VSTENvcHlTdHJpbmcoV0tFcnJvckNvcHlGYWlsaW5nVVJMKGVycm9yLmdldCgp
KSkpOwogfQogCiBRU3RyaW5nIFF0V2ViRXJyb3I6OmRlc2NyaXB0aW9uKCkgY29uc3QKQEAgLTY3
LDYgKzY3LDcgQEAgUVN0cmluZyBRdFdlYkVycm9yOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAKIGJv
b2wgUXRXZWJFcnJvcjo6aXNDYW5jZWxsYXRpb24oKSBjb25zdAogeworICAgIC8vIEZJWE1FOiBB
ZGQgQyBBUEkgdG8gcmV0dXJuIHRoZSBjYW5jZWxsYXRpb24gYml0IG9yIGZpbmQgYSB3YXkgdG8g
YWNjZXNzIHRoZSBwbGF0Zm9ybUVycm9yIGZyb20gdGhlIEVycm9yUmVmLgogICAgIHJldHVybiB0
b0ltcGwoZXJyb3IuZ2V0KCkpLT5wbGF0Zm9ybUVycm9yKCkuaXNDYW5jZWxsYXRpb24oKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGll
bnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODc3Y2E4ZGY3NTgxZGM5NWUw
ODgzZjgyNDY5OGE4MjM5ZTIxZjc3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xp
ZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dy
YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0
aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlF0V2ViUGFnZUxvYWRDbGllbnQuaCIK
LQotI2luY2x1ZGUgIlF0V2ViRXJyb3IuaCIKLSNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3BfcC5o
IgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVF0
V2ViUGFnZUxvYWRDbGllbnQ6OlF0V2ViUGFnZUxvYWRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IFFRdWlja1dlYlZpZXcqIHdlYlZpZXcpCi0gICAgOiBtX3dlYlZpZXcod2ViVmlldykKLXsKLSAg
ICBXS1BhZ2VMb2FkZXJDbGllbnQgbG9hZENsaWVudDsKLSAgICBtZW1zZXQoJmxvYWRDbGllbnQs
IDAsIHNpemVvZihXS1BhZ2VMb2FkZXJDbGllbnQpKTsKLSAgICBsb2FkQ2xpZW50LnZlcnNpb24g
PSBrV0tQYWdlTG9hZGVyQ2xpZW50Q3VycmVudFZlcnNpb247Ci0gICAgbG9hZENsaWVudC5jbGll
bnRJbmZvID0gdGhpczsKLSAgICBsb2FkQ2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUgPSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOwotICAgIGxvYWRDbGllbnQu
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgPSBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKLSAgICBsb2Fk
Q2xpZW50LmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSA9IGRpZEZhaWxQ
cm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZTsKLSAgICBsb2FkQ2xpZW50LmRpZENvbW1p
dExvYWRGb3JGcmFtZSA9IGRpZENvbW1pdExvYWRGb3JGcmFtZTsKLSAgICBsb2FkQ2xpZW50LmRp
ZEZpbmlzaExvYWRGb3JGcmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKLSAgICBsb2FkQ2xp
ZW50LmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUgPSBkaWRGYWlsTG9hZFdpdGhFcnJvckZv
ckZyYW1lOwotICAgIGxvYWRDbGllbnQuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1l
ID0gZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOwotICAgIGxvYWRDbGllbnQuZGlk
UmVjZWl2ZVRpdGxlRm9yRnJhbWUgPSBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZTsKLSAgICBsb2Fk
Q2xpZW50LmRpZFN0YXJ0UHJvZ3Jlc3MgPSBkaWRTdGFydFByb2dyZXNzOwotICAgIGxvYWRDbGll
bnQuZGlkQ2hhbmdlUHJvZ3Jlc3MgPSBkaWRDaGFuZ2VQcm9ncmVzczsKLSAgICBsb2FkQ2xpZW50
LmRpZEZpbmlzaFByb2dyZXNzID0gZGlkRmluaXNoUHJvZ3Jlc3M7Ci0gICAgbG9hZENsaWVudC5k
aWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QgPSBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3Q7Ci0gICAg
V0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlUmVmLCAmbG9hZENsaWVudCk7Ci19Ci0KLXZv
aWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgV1RG
OjpTdHJpbmcmIHVybCkKLXsKLSAgICBtX3dlYlZpZXctPmRfZnVuYygpLT5wcm92aXNpb25hbExv
YWREaWRTdGFydCh1cmwpOwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBXVEY6OlN0cmluZyYgdXJs
KQotewotICAgIG1fd2ViVmlldy0+ZF9mdW5jKCktPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZCh1cmwpOwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRp
ZENvbW1pdExvYWQoKQotewotICAgIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIHB2YyA9IG1fd2Vi
Vmlldy0+ZF9mdW5jKCktPnZpZXdwb3J0Q29udHJvbGxlcigpOwotICAgIGlmIChwdmMpCi0gICAg
ICAgIHB2Yy0+ZGlkQ29tbWl0TG9hZCgpOwotICAgIG1fd2ViVmlldy0+ZF9mdW5jKCktPmxvYWRE
aWRDb21taXQoKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uKCkKLXsKLSAgICBtX3dlYlZpZXctPmRfZnVuYygpLT5kaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uKCk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkUmVjZWl2
ZVRpdGxlKCkKLXsKLSAgICBtX3dlYlZpZXctPmRfZnVuYygpLT50aXRsZURpZENoYW5nZSgpOwot
fQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZENoYW5nZVByb2dyZXNzKGludCBsb2Fk
UHJvZ3Jlc3MpCi17Ci0gICAgbV93ZWJWaWV3LT5kX2Z1bmMoKS0+bG9hZFByb2dyZXNzRGlkQ2hh
bmdlKGxvYWRQcm9ncmVzcyk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkQ2hh
bmdlQmFja0ZvcndhcmRMaXN0KCkKLXsKLSAgICBtX3dlYlZpZXctPmRfZnVuYygpLT5iYWNrRm9y
d2FyZExpc3REaWRDaGFuZ2UoKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaXNw
YXRjaExvYWRTdWNjZWVkZWQoKQotewotICAgIG1fd2ViVmlldy0+ZF9mdW5jKCktPmxvYWREaWRT
dWNjZWVkKCk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlzcGF0Y2hMb2FkU3Rv
cHBlZCgpCi17Ci0gICAgbV93ZWJWaWV3LT5kX2Z1bmMoKS0+bG9hZERpZFN0b3AoKTsKLX0KLQot
dm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaXNwYXRjaExvYWRGYWlsZWQoV2ViRnJhbWVQcm94
eSogZnJhbWUsIGNvbnN0IFF0V2ViRXJyb3ImIGVycm9yKQotewotICAgIGlmIChlcnJvci5pc0Nh
bmNlbGxhdGlvbigpKSB7Ci0gICAgICAgIGRpc3BhdGNoTG9hZFN0b3BwZWQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGludCBlcnJvckNvZGUgPSBlcnJvci5lcnJvckNvZGUoKTsK
LQotICAgIGlmIChlcnJvckNvZGUgPT0ga1dLRXJyb3JDb2RlRnJhbWVMb2FkSW50ZXJydXB0ZWRC
eVBvbGljeUNoYW5nZSB8fCBlcnJvckNvZGUgPT0ga1dLRXJyb3JDb2RlUGx1Z0luV2lsbEhhbmRs
ZUxvYWQpIHsKLSAgICAgICAgLy8gVGhlIGFjdGl2ZSB1cmwgbWlnaHQgaGF2ZSBjaGFuZ2VkCi0g
ICAgICAgIG1fd2ViVmlldy0+ZW1pdFVybENoYW5nZUlmTmVlZGVkKCk7Ci0KLSAgICAgICAgLy8g
TWFrZSBzdXJlIHRoYXQgTG9hZFN0YXJ0ZWRTdGF0dXMgaGFzIGEgY291bnRlcnBhcnQgd2hlbiBl
LmcuIHJlcXVlc3RpbmcgYSBkb3dubG9hZC4KLSAgICAgICAgZGlzcGF0Y2hMb2FkU3VjY2VlZGVk
KCk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFdlIHNldCB0aGUgdW5yZWFj
aGFibGUgdXJsIHVuY29uZGl0aW9uYWxseSBzbyB0aGF0IHRoZSBjdXJyZW50Ci0gICAgLy8gYWN0
aXZlIHVybCBvZiB0aGUgd2VidmlldyB3aGVuIHRoZSBsb2FkaW5nQ2hhbmdlZCBzaWduYWwgaXMK
LSAgICAvLyBlbWl0dGVkIHJlZmxlY3RzIHRoZSBmYWlsZWQgdXJsLCBub3QgdGhlIHByZXZpb3Vz
bHkgY29tbWl0dGVkCi0gICAgLy8gdXJsLiBUaGlzIGFsc28gZW5zdXJlcyB0aGF0IGlmIHRoZSB1
c2VyIGRvZXMgbm90IGRvIGEgbG9hZEh0bWwKLSAgICAvLyB3aXRoIGFuIGVycm9yIHBhZ2UgYW5k
IGFuZCB1bnJlYWNoYWJsZSB1cmwgYXMgYSByZXBvbnNlIHRvIHRoZQotICAgIC8vIGZhaWxlZCBs
b2FkLCB3ZSBjYW4gc3RpbGwgZGV0ZWN0IHRoZSBmYWlsZWQgdXJsIGZvciByZWxvYWRzLgotICAg
IGZyYW1lLT5zZXRVbnJlYWNoYWJsZVVSTChlcnJvci51cmwoKSk7Ci0gICAgbV93ZWJWaWV3LT5l
bWl0VXJsQ2hhbmdlSWZOZWVkZWQoKTsKLQotICAgIG1fd2ViVmlldy0+ZF9mdW5jKCktPmxvYWRE
aWRGYWlsKGVycm9yKTsKLX0KLQotc3RhdGljIFF0V2ViUGFnZUxvYWRDbGllbnQqIHRvUXRXZWJQ
YWdlTG9hZENsaWVudChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIEFTU0VSVChjbGll
bnRJbmZvKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxRdFdlYlBhZ2VMb2FkQ2xpZW50
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotfQotCi12b2lkIFF0V2ViUGFnZUxv
YWRDbGllbnQ6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAg
aWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm47Ci0gICAgdG9R
dFdlYlBhZ2VMb2FkQ2xpZW50KGNsaWVudEluZm8pLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZCh0
b0ltcGwoZnJhbWUpLT5wcm92aXNpb25hbFVSTCgpKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2Fk
Q2xpZW50OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKLXsKLSAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFdlYkZyYW1lUHJveHkqIHdrZnJhbWUgPSB0b0ltcGwoZnJhbWUpOwot
ICAgIHRvUXRXZWJQYWdlTG9hZENsaWVudChjbGllbnRJbmZvKS0+ZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHdrZnJhbWUtPnByb3Zpc2lvbmFsVVJMKCkpOwotfQot
Ci12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJy
b3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRXJyb3JSZWYgZXJyb3Is
IFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBpZiAoIVdLRnJhbWVJ
c01haW5GcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybjsKLSAgICB0b1F0V2ViUGFnZUxvYWRD
bGllbnQoY2xpZW50SW5mbyktPmRpc3BhdGNoTG9hZEZhaWxlZCh0b0ltcGwoZnJhbWUpLCBlcnJv
cik7Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkQ29tbWl0TG9hZEZvckZyYW1l
KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQotewotICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIHRvUXRXZWJQYWdlTG9hZENsaWVudChjbGllbnRJbmZvKS0+ZGlkQ29tbWl0
TG9hZCgpOwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JG
cmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKLXsKLSAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAg
ICAgIHJldHVybjsKLSAgICB0b1F0V2ViUGFnZUxvYWRDbGllbnQoY2xpZW50SW5mbyktPmRpc3Bh
dGNoTG9hZFN1Y2NlZWRlZCgpOwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZEZh
aWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0Vy
cm9yUmVmIGVycm9yLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAg
aWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm47Ci0gICAgdG9R
dFdlYlBhZ2VMb2FkQ2xpZW50KGNsaWVudEluZm8pLT5kaXNwYXRjaExvYWRGYWlsZWQodG9JbXBs
KGZyYW1lKSwgZXJyb3IpOwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdL
U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUgdHlwZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1l
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIHRvUXRXZWJQYWdlTG9hZENsaWVudChjbGllbnRJbmZv
KS0+ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbigpOwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRD
bGllbnQ6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgdGl0
bGUsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
LXsKLSAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybjsK
LSAgICB0b1F0V2ViUGFnZUxvYWRDbGllbnQoY2xpZW50SW5mbyktPmRpZFJlY2VpdmVUaXRsZSgp
OwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZFN0YXJ0UHJvZ3Jlc3MoV0tQYWdl
UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHRvUXRXZWJQYWdlTG9hZENsaWVu
dChjbGllbnRJbmZvKS0+ZGlkQ2hhbmdlUHJvZ3Jlc3MoMCk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdl
TG9hZENsaWVudDo6ZGlkQ2hhbmdlUHJvZ3Jlc3MoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCi17Ci0gICAgdG9RdFdlYlBhZ2VMb2FkQ2xpZW50KGNsaWVudEluZm8pLT5k
aWRDaGFuZ2VQcm9ncmVzcyhXS1BhZ2VHZXRFc3RpbWF0ZWRQcm9ncmVzcyhwYWdlKSAqIDEwMCk7
Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkRmluaXNoUHJvZ3Jlc3MoV0tQYWdl
UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHRvUXRXZWJQYWdlTG9hZENsaWVu
dChjbGllbnRJbmZvKS0+ZGlkQ2hhbmdlUHJvZ3Jlc3MoMTAwKTsKLX0KLQotdm9pZCBRdFdlYlBh
Z2VMb2FkQ2xpZW50OjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoV0tQYWdlUmVmLCBXS0JhY2tG
b3J3YXJkTGlzdEl0ZW1SZWYsIFdLQXJyYXlSZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCi17
Ci0gICAgdG9RdFdlYlBhZ2VMb2FkQ2xpZW50KGNsaWVudEluZm8pLT5kaWRDaGFuZ2VCYWNrRm9y
d2FyZExpc3QoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Via2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVudC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNjY4YmFjMTY4ODU1OWQ4YWUwZTU4NGMxZGNhY2Q3Y2E5ZjhiNDM1ZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVudC5oCisrKyAvZGV2L251bGwKQEAg
LTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgUXRXZWJQYWdlTG9hZENs
aWVudF9oCi0jZGVmaW5lIFF0V2ViUGFnZUxvYWRDbGllbnRfaAotCi0jaW5jbHVkZSA8UXRHbG9i
YWw+Ci0jaW5jbHVkZSA8V2ViRnJhbWVQcm94eS5oPgotI2luY2x1ZGUgPFdLUGFnZS5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1RVF9CRUdJTl9OQU1FU1BBQ0UKLWNsYXNz
IFFVcmw7Ci1RVF9FTkRfTkFNRVNQQUNFCi0KLWNsYXNzIFFRdWlja1dlYlZpZXc7Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1jbGFzcyBRdFdlYkVycm9yOwotCi1jbGFzcyBRdFdlYlBhZ2VMb2Fk
Q2xpZW50IHsKLXB1YmxpYzoKLSAgICBRdFdlYlBhZ2VMb2FkQ2xpZW50KFdLUGFnZVJlZiwgUVF1
aWNrV2ViVmlldyopOwotCi1wcml2YXRlOgotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExv
YWQoY29uc3QgV1RGOjpTdHJpbmcmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIHZvaWQgZGlkQ29t
bWl0TG9hZCgpOwotICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbigpOwotICAgIHZv
aWQgZGlkUmVjZWl2ZVRpdGxlKCk7Ci0gICAgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhpbnQpOwot
ICAgIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCk7Ci0KLSAgICB2b2lkIGRpc3BhdGNo
TG9hZFN1Y2NlZWRlZCgpOwotICAgIHZvaWQgZGlzcGF0Y2hMb2FkU3RvcHBlZCgpOwotICAgIHZv
aWQgZGlzcGF0Y2hMb2FkRmFpbGVkKFdlYkZyYW1lUHJveHkqLCBjb25zdCBRdFdlYkVycm9yJik7
Ci0KLQotICAgIC8vIFdLUGFnZUxvYWRDbGllbnQgY2FsbGJhY2tzLgotICAgIHN0YXRpYyB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBX
S1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdL
UGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9y
Rm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0Vycm9yUmVmLCBXS1R5cGVSZWYgdXNl
ckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotICAgIHN0YXRpYyB2b2lkIGRpZENvbW1p
dExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZv
ckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZFdpdGhFcnJvckZv
ckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tFcnJvclJlZiwgV0tUeXBlUmVmIHVzZXJE
YXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1NhbWVEb2N1
bWVudE5hdmlnYXRpb25UeXBlLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdLUGFnZVJl
ZiwgV0tTdHJpbmdSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7Ci0gICAgc3RhdGljIHZvaWQgZGlkU3RhcnRQcm9ncmVzcyhXS1BhZ2VS
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVBy
b2dyZXNzKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgc3RhdGljIHZv
aWQgZGlkRmluaXNoUHJvZ3Jlc3MoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
LSAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoV0tQYWdlUmVmLCBXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW1SZWYsIFdLQXJyYXlSZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
OwotCi0gICAgUVF1aWNrV2ViVmlldyogbV93ZWJWaWV3OwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2Via2l0Ci0KLSNlbmRpZiAvLyBRdFdlYlBhZ2VMb2FkQ2xpZW50X2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187052</attachid>
            <date>2013-02-07 04:05:06 -0800</date>
            <delta_ts>2013-02-07 04:05:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108473-20130207130142.patch</filename>
            <type>text/plain</type>
            <size>29086</size>
            <attacher name="Michael Brüning">michael.bruning</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmY2M2IyYTFmNmE1NDY1
ZDI2MTI1ODk1ZDQ5ZTFkZjZjNTRiNzkxMS4uYTczZTY0NGRmMmM4OTRjY2QzZmQ3MGNhOWRhNTE0
YmRjYTlmZTNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEzLTAyLTA3ICBNaWNo
YWVsIEJyw7xuaW5nICA8bWljaGFlbC5icnVuaW5nQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRd
W1dLMl0gRm9sZCBRdFdlYlBhZ2VMb2FkQ2xpZW50IGludG8gUVF1aWNrV2ViVmlld1ByaXZhdGUg
YW5kIG1vdmUgdG8gQyBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDg0NzMKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4K
KyAgICAgICAgU2lnbmVkIG9mZiBmb3IgV2ViS2l0MiBieSBCZW5qYW1pbiBQb3VsYWluLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgUXRXZWJQYWdlTG9hZENsaWVudCBhbmQgbW92
ZXMgdGhlIGZ1bmN0aW9uYWxpdHkgaW50byB0aGUKKyAgICAgICAgUVF1aWNrV2ViVmlld1ByaXZh
dGUgYXMgbW9zdCBjYWxsYmFjayBtZXRob2RzIGFyZSBjYWxsaW5nIHRoZSBwcml2YXRlIHdlYnZp
ZXcKKyAgICAgICAgaW5kaXJlY3RseSBhbnl3YXkuCisKKyAgICAgICAgVGhlIHBhdGNoIGFsc28g
bW92ZXMgYXMgbXVjaCBvZiB0aGUgZnVuY3Rpb25hbGl0eSB0byB0aGUgQyBBUEkgYXMgaXMgcG9z
c2libGUgd2l0aAorICAgICAgICB0aGUgY3VycmVudCBDIEFQSS4KKworICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAg
ICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0aWFsaXplKToKKyAgICAgICAgKFFRdWlj
a1dlYlZpZXdQcml2YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAg
ICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlk
RmFpbExvYWQpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZENvbW1pdExvYWRG
b3JGcmFtZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmluaXNoTG9hZEZv
ckZyYW1lKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uRm9yRnJhbWUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZFJl
Y2VpdmVUaXRsZUZvckZyYW1lKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRT
dGFydFByb2dyZXNzKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VQ
cm9ncmVzcyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmluaXNoUHJvZ3Jl
c3MpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZENoYW5nZUJhY2tGb3J3YXJk
TGlzdCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6c2V0VHJhbnNwYXJlbnRCYWNr
Z3JvdW5kKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjp0cmFuc3BhcmVudEJhY2tn
cm91bmQpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmxvYWRQcm9ncmVzc0RpZENo
YW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3
X3BfcC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJFcnJvci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlF0V2ViRXJyb3I6OnVybCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUxv
YWRDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VM
b2FkQ2xpZW50Lmg6IFJlbW92ZWQuCisKIDIwMTMtMDItMDUgIEV1bm1pIExlZSAgPGV1bm1pMTUu
bGVlQHNhbXN1bmcuY29tPiBhbmQgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFwaGFlbC5rdWJv
LmRhLmNvc3RhQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIFJlZmFjdG9yaW5nIGlu
aXRpYWxpemF0aW9uIGFuZCBzaHV0ZG93biBjb2RlcyBvZiBFRkwgbGlicmFyaWVzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5w
cmkKaW5kZXggNmE1NWY0ZjJlNzA1OWM0Yzg0M2ZjZTBlYTM2ZWY1OGI2NjhiMjBhOC4uYTIxYzY3
M2JlODc2OTVmZDM4ZjIyM2YzYjVmOGE4Y2RkNDdhNjM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC03ODUs
NyArNzg1LDYgQEAgaGF2ZT8oUVRRVUlDSykgewogICAgICAgICBVSVByb2Nlc3MvcXQvUXREaWFs
b2dSdW5uZXIuaCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5oIFwK
ICAgICAgICAgVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5oIFwKLSAgICAgICAgVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZUxvYWRDbGllbnQuaCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VQb2xpY3lDbGllbnQuaCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VTR05vZGUu
aCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5oIFwKQEAgLTgxMiw3
ICs4MTEsNiBAQCBoYXZlPyhRVFFVSUNLKSB7CiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdERpYWxv
Z1J1bm5lci5jcHAgXAogICAgICAgICBVSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuY3Bw
IFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5jcHAgXAotICAgICAgICBVSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVudC5jcHAgXAogICAgICAgICBVSVByb2Nlc3MvcXQv
UXRXZWJQYWdlUG9saWN5Q2xpZW50LmNwcCBcCiAgICAgICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VTR05vZGUuY3BwIFwKICAgICAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxl
ci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVp
Y2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
dmlldy5jcHAKaW5kZXggNzdlNWUyMzMxN2NjOTZkOTY2MWNlYzVkMzg1YzQ4ZWQxMDNiYTdjMS4u
M2E4MDEwYThiZDcyYjY4ZGE1NTNkYzU3NGYyMTUyYWQyMjliMGJjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC0zMiw3ICsz
Miw2IEBACiAjaW5jbHVkZSAiUXRXZWJFcnJvci5oIgogI2luY2x1ZGUgIlF0V2ViSWNvbkRhdGFi
YXNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmgiCi0jaW5jbHVk
ZSAiUXRXZWJQYWdlTG9hZENsaWVudC5oIgogI2luY2x1ZGUgIlF0V2ViUGFnZVBvbGljeUNsaWVu
dC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIldlYkZpbmRP
cHRpb25zLmgiCkBAIC0zMzAsNyArMzI5LDI2IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6
OmluaXRpYWxpemUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhCiAg
ICAgICAgIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KHdlYlBhZ2UuZ2V0KCksICZmaW5kQ2xpZW50
KTsKICAgICB9CiAKLSAgICBwYWdlTG9hZENsaWVudC5yZXNldChuZXcgUXRXZWJQYWdlTG9hZENs
aWVudCh3ZWJQYWdlLmdldCgpLCBxX3B0cikpOworICAgIHsKKyAgICAgICAgV0tQYWdlTG9hZGVy
Q2xpZW50IGxvYWRDbGllbnQ7CisgICAgICAgIG1lbXNldCgmbG9hZENsaWVudCwgMCwgc2l6ZW9m
KFdLUGFnZUxvYWRlckNsaWVudCkpOworICAgICAgICBsb2FkQ2xpZW50LnZlcnNpb24gPSBrV0tQ
YWdlTG9hZGVyQ2xpZW50Q3VycmVudFZlcnNpb247CisgICAgICAgIGxvYWRDbGllbnQuY2xpZW50
SW5mbyA9IHRoaXM7CisgICAgICAgIGxvYWRDbGllbnQuZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZSA9IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU7CisgICAgICAgIGxvYWRD
bGllbnQuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUg
PSBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKKyAg
ICAgICAgbG9hZENsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUg
PSBkaWRGYWlsTG9hZDsKKyAgICAgICAgbG9hZENsaWVudC5kaWRDb21taXRMb2FkRm9yRnJhbWUg
PSBkaWRDb21taXRMb2FkRm9yRnJhbWU7CisgICAgICAgIGxvYWRDbGllbnQuZGlkRmluaXNoTG9h
ZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOworICAgICAgICBsb2FkQ2xpZW50LmRp
ZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUgPSBkaWRGYWlsTG9hZDsKKyAgICAgICAgbG9hZENs
aWVudC5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUgPSBkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uRm9yRnJhbWU7CisgICAgICAgIGxvYWRDbGllbnQuZGlkUmVjZWl2ZVRpdGxlRm9y
RnJhbWUgPSBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZTsKKyAgICAgICAgbG9hZENsaWVudC5kaWRT
dGFydFByb2dyZXNzID0gZGlkU3RhcnRQcm9ncmVzczsKKyAgICAgICAgbG9hZENsaWVudC5kaWRD
aGFuZ2VQcm9ncmVzcyA9IGRpZENoYW5nZVByb2dyZXNzOworICAgICAgICBsb2FkQ2xpZW50LmRp
ZEZpbmlzaFByb2dyZXNzID0gZGlkRmluaXNoUHJvZ3Jlc3M7CisgICAgICAgIGxvYWRDbGllbnQu
ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0ID0gZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0OworICAg
ICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlBhZ2UuZ2V0KCksICZsb2FkQ2xpZW50
KTsKKyAgICB9CisKICAgICBwYWdlUG9saWN5Q2xpZW50LnJlc2V0KG5ldyBRdFdlYlBhZ2VQb2xp
Y3lDbGllbnQod2ViUGFnZS5nZXQoKSwgcV9wdHIpKTsKICAgICBwYWdlVUlDbGllbnQucmVzZXQo
bmV3IFF0V2ViUGFnZVVJQ2xpZW50KHdlYlBhZ2UuZ2V0KCksIHFfcHRyKSk7CiAgICAgbmF2aWdh
dGlvbkhpc3RvcnkgPSBhZG9wdFB0cihRV2ViTmF2aWdhdGlvbkhpc3RvcnlQcml2YXRlOjpjcmVh
dGVIaXN0b3J5KHdlYlBhZ2UuZ2V0KCkpKTsKQEAgLTM1Niw5NiArMzc0LDE0NyBAQCB2b2lkIFFR
dWlja1dlYlZpZXdQcml2YXRlOjppbml0aWFsaXplKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBX
S1BhZ2VHcm91cFJlZiBwYQogICAgIHFfcHRyLT5zZXRGbGFnKFFRdWlja0l0ZW06Okl0ZW1BY2Nl
cHRzRHJvcHMsIHRydWUpOwogfQogCi12b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpsb2FkRGlk
U3RvcCgpCit2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQogewotICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKLSAgICBBU1NFUlQo
IXEtPmxvYWRpbmcoKSk7Ci0gICAgUVdlYkxvYWRSZXF1ZXN0IGxvYWRSZXF1ZXN0KHEtPnVybCgp
LCBRUXVpY2tXZWJWaWV3OjpMb2FkU3RvcHBlZFN0YXR1cyk7CisgICAgaWYgKCFXS0ZyYW1lSXNN
YWluRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1JldGFpblB0cjxXS1VS
TFJlZj4gdXJsICA9IGFkb3B0V0soV0tGcmFtZUNvcHlQcm92aXNpb25hbFVSTChmcmFtZSkpOwor
CisgICAgUVF1aWNrV2ViVmlldyogY29uc3QgcSA9IHRvUVF1aWNrV2ViVmlld1ByaXZhdGUoY2xp
ZW50SW5mbyktPnFfZnVuYygpOworCisgICAgcS0+ZW1pdFVybENoYW5nZUlmTmVlZGVkKCk7Cisg
ICAgUVdlYkxvYWRSZXF1ZXN0IGxvYWRSZXF1ZXN0KFdLVVJMQ29weVFVcmwodXJsLmdldCgpKSwg
UVF1aWNrV2ViVmlldzo6TG9hZFN0YXJ0ZWRTdGF0dXMpOwogICAgIGVtaXQgcS0+bG9hZGluZ0No
YW5nZWQoJmxvYWRSZXF1ZXN0KTsKIH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6c2V0
VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGJvb2wgZW5hYmxlKQordm9pZCBRUXVpY2tXZWJWaWV3UHJp
dmF0ZTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCiB7Ci0gICAgd2ViUGFnZVByb3h5LT5zZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3Vu
ZChlbmFibGUpOwotfQorICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAg
ICAgcmV0dXJuOwogCi1ib29sIFFRdWlja1dlYlZpZXdQcml2YXRlOjp0cmFuc3BhcmVudEJhY2tn
cm91bmQoKSBjb25zdAotewotICAgIHJldHVybiB3ZWJQYWdlUHJveHktPmRyYXdzVHJhbnNwYXJl
bnRCYWNrZ3JvdW5kKCk7CisgICAgdG9RUXVpY2tXZWJWaWV3UHJpdmF0ZShjbGllbnRJbmZvKS0+
cV9mdW5jKCktPmVtaXRVcmxDaGFuZ2VJZk5lZWRlZCgpOwogfQogCi12b2lkIFFRdWlja1dlYlZp
ZXdQcml2YXRlOjpwcm92aXNpb25hbExvYWREaWRTdGFydChjb25zdCBXVEY6OlN0cmluZyYgdXJs
KQordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmFpbExvYWQoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS0Vycm9yUmVmIGVycm9yUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCiB7Ci0gICAgUV9RKFFRdWlja1dlYlZpZXcpOworICAgIGlmICghV0tGcmFt
ZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgcS0+ZW1pdFVybENo
YW5nZUlmTmVlZGVkKCk7CisgICAgUVF1aWNrV2ViVmlldyogY29uc3QgcSA9IHRvUVF1aWNrV2Vi
Vmlld1ByaXZhdGUoY2xpZW50SW5mbyktPnFfZnVuYygpOworICAgIEFTU0VSVCghcS0+bG9hZGlu
ZygpKTsKIAotICAgIFFXZWJMb2FkUmVxdWVzdCBsb2FkUmVxdWVzdChRU3RyaW5nKHVybCksIFFR
dWlja1dlYlZpZXc6OkxvYWRTdGFydGVkU3RhdHVzKTsKLSAgICBlbWl0IHEtPmxvYWRpbmdDaGFu
Z2VkKCZsb2FkUmVxdWVzdCk7Ci19CisgICAgUXRXZWJFcnJvciBlcnJvcihlcnJvclJlZik7Cisg
ICAgaWYgKGVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpIHsKKyAgICAgICAgUVdlYkxvYWRSZXF1ZXN0
IGxvYWRSZXF1ZXN0KHEtPnVybCgpLCBRUXVpY2tXZWJWaWV3OjpMb2FkU3RvcHBlZFN0YXR1cyk7
CisgICAgICAgIGVtaXQgcS0+bG9hZGluZ0NoYW5nZWQoJmxvYWRSZXF1ZXN0KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdURjo6U3RyaW5nJikKLXsKLSAg
ICBRX1EoUVF1aWNrV2ViVmlldyk7CisgICAgaW50IGVycm9yQ29kZSA9IGVycm9yLmVycm9yQ29k
ZSgpOworICAgIGlmIChlcnJvckNvZGUgPT0ga1dLRXJyb3JDb2RlRnJhbWVMb2FkSW50ZXJydXB0
ZWRCeVBvbGljeUNoYW5nZSAmJiBlcnJvckNvZGUgPT0ga1dLRXJyb3JDb2RlUGx1Z0luV2lsbEhh
bmRsZUxvYWQpIHsKKyAgICAgICAgUVdlYkxvYWRSZXF1ZXN0IGxvYWRSZXF1ZXN0KHEtPnVybCgp
LCBRUXVpY2tXZWJWaWV3OjpMb2FkU3VjY2VlZGVkU3RhdHVzKTsKKyAgICAgICAgcS0+ZW1pdFVy
bENoYW5nZUlmTmVlZGVkKCk7CisgICAgICAgIGVtaXQgcS0+bG9hZGluZ0NoYW5nZWQoJmxvYWRS
ZXF1ZXN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAorICAgIC8vIFdlIHNldCB0aGUgdW5y
ZWFjaGFibGUgdXJsIHVuY29uZGl0aW9uYWxseSBzbyB0aGF0IHRoZSBjdXJyZW50CisgICAgLy8g
YWN0aXZlIHVybCBvZiB0aGUgd2VidmlldyB3aGVuIHRoZSBsb2FkaW5nQ2hhbmdlZCBzaWduYWwg
aXMKKyAgICAvLyBlbWl0dGVkIHJlZmxlY3RzIHRoZSBmYWlsZWQgdXJsLCBub3QgdGhlIHByZXZp
b3VzbHkgY29tbWl0dGVkCisgICAgLy8gdXJsLiBUaGlzIGFsc28gZW5zdXJlcyB0aGF0IGlmIHRo
ZSB1c2VyIGRvZXMgbm90IGRvIGEgbG9hZEh0bWwKKyAgICAvLyB3aXRoIGFuIGVycm9yIHBhZ2Ug
YW5kIGFuZCB1bnJlYWNoYWJsZSB1cmwgYXMgYSByZXBvbnNlIHRvIHRoZQorICAgIC8vIGZhaWxl
ZCBsb2FkLCB3ZSBjYW4gc3RpbGwgZGV0ZWN0IHRoZSBmYWlsZWQgdXJsIGZvciByZWxvYWRzLgor
ICAgIC8vIFdlIG5lZWQgdG8gZmluZCBhIHdheSB0byBkbyB0aGlzIHZpYSB0aGUgQyBBUEkgb3Ig
ZmluZCBhbm90aGVyCisgICAgLy8gd2F5IHRvIGRvIHRoaXMuCisgICAgdG9JbXBsKGZyYW1lKS0+
c2V0VW5yZWFjaGFibGVVUkwoZXJyb3IudXJsKCkpOwogICAgIHEtPmVtaXRVcmxDaGFuZ2VJZk5l
ZWRlZCgpOworICAgIFFXZWJMb2FkUmVxdWVzdCBsb2FkUmVxdWVzdChlcnJvci51cmwoKSwgUVF1
aWNrV2ViVmlldzo6TG9hZEZhaWxlZFN0YXR1cywgZXJyb3IuZGVzY3JpcHRpb24oKSwgc3RhdGlj
X2Nhc3Q8UVF1aWNrV2ViVmlldzo6RXJyb3JEb21haW4+KGVycm9yLnR5cGUoKSksIGVycm9yQ29k
ZSk7CisgICAgZW1pdCBxLT5sb2FkaW5nQ2hhbmdlZCgmbG9hZFJlcXVlc3QpOwogfQogCi12b2lk
IFFRdWlja1dlYlZpZXdQcml2YXRlOjpsb2FkRGlkQ29tbWl0KCkKK3ZvaWQgUVF1aWNrV2ViVmll
d1ByaXZhdGU6OmRpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBRX1EoUVF1aWNr
V2ViVmlldyk7Ci0gICAgQVNTRVJUKHEtPmxvYWRpbmcoKSk7CisgICAgaWYgKCFXS0ZyYW1lSXNN
YWluRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm47CisgICAgUVF1aWNrV2ViVmlld1ByaXZh
dGUqIGQgPSB0b1FRdWlja1dlYlZpZXdQcml2YXRlKGNsaWVudEluZm8pOworCisgICAgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlciogcGFnZVZpZXdwb3J0Q29udHJvbGxlciA9IGQtPnZpZXdwb3J0Q29u
dHJvbGxlcigpOworICAgIGlmIChwYWdlVmlld3BvcnRDb250cm9sbGVyKQorICAgICAgICBwYWdl
Vmlld3BvcnRDb250cm9sbGVyLT5kaWRDb21taXRMb2FkKCk7CiAKLSAgICBtX2JldHdlZW5Mb2Fk
Q29tbWl0QW5kRmlyc3RGcmFtZSA9IHRydWU7CisgICAgUVF1aWNrV2ViVmlldyogY29uc3QgcSA9
IGQtPnFfZnVuYygpOworICAgIEFTU0VSVChxLT5sb2FkaW5nKCkpOworICAgIGQtPm1fYmV0d2Vl
bkxvYWRDb21taXRBbmRGaXJzdEZyYW1lID0gdHJ1ZTsKICAgICBlbWl0IHEtPm5hdmlnYXRpb25I
aXN0b3J5Q2hhbmdlZCgpOwogICAgIGVtaXQgcS0+dGl0bGVDaGFuZ2VkKCk7CiB9CiAKLXZvaWQg
UVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24oKQordm9pZCBR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAg
IFFfUShRUXVpY2tXZWJWaWV3KTsKKyAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkp
CisgICAgICAgIHJldHVybjsKKworICAgIFFRdWlja1dlYlZpZXcqIGNvbnN0IHEgPSB0b1FRdWlj
a1dlYlZpZXdQcml2YXRlKGNsaWVudEluZm8pLT5xX2Z1bmMoKTsKKyAgICBBU1NFUlQoIXEtPmxv
YWRpbmcoKSk7CisKKyAgICBRV2ViTG9hZFJlcXVlc3QgbG9hZFJlcXVlc3QocS0+dXJsKCksIFFR
dWlja1dlYlZpZXc6OkxvYWRTdWNjZWVkZWRTdGF0dXMpOworICAgIGVtaXQgcS0+bG9hZGluZ0No
YW5nZWQoJmxvYWRSZXF1ZXN0KTsKK30KIAordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFt
ZSwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSB0eXBlLCBXS1R5cGVSZWYgdXNlckRhdGEs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUo
ZnJhbWUpKQorICAgICAgICByZXR1cm47CisgICAgUVF1aWNrV2ViVmlldyogY29uc3QgcSA9IHRv
UVF1aWNrV2ViVmlld1ByaXZhdGUoY2xpZW50SW5mbyktPnFfZnVuYygpOwogICAgIHEtPmVtaXRV
cmxDaGFuZ2VJZk5lZWRlZCgpOwogICAgIGVtaXQgcS0+bmF2aWdhdGlvbkhpc3RvcnlDaGFuZ2Vk
KCk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnRpdGxlRGlkQ2hhbmdlKCkKK3Zv
aWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdLUGFnZVJl
ZiwgV0tTdHJpbmdSZWYgdGl0bGUsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBRX1EoUVF1aWNrV2ViVmlldyk7Ci0KLSAgICBlbWl0
IHEtPnRpdGxlQ2hhbmdlZCgpOworICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGVtaXQgdG9RUXVpY2tXZWJWaWV3UHJpdmF0ZShjbGllbnRJ
bmZvKS0+cV9mdW5jKCktPnRpdGxlQ2hhbmdlZCgpOwogfQogCi12b2lkIFFRdWlja1dlYlZpZXdQ
cml2YXRlOjpsb2FkUHJvZ3Jlc3NEaWRDaGFuZ2UoaW50IGxvYWRQcm9ncmVzcykKK3ZvaWQgUVF1
aWNrV2ViVmlld1ByaXZhdGU6OmRpZFN0YXJ0UHJvZ3Jlc3MoV0tQYWdlUmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQogewotICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKKyAgICB0b1FRdWlja1dl
YlZpZXdQcml2YXRlKGNsaWVudEluZm8pLT5sb2FkUHJvZ3Jlc3NEaWRDaGFuZ2UoMCk7Cit9CiAK
LSAgICBtX2xvYWRQcm9ncmVzcyA9IGxvYWRQcm9ncmVzczsKK3ZvaWQgUVF1aWNrV2ViVmlld1By
aXZhdGU6OmRpZENoYW5nZVByb2dyZXNzKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQoreworICAgIHRvUVF1aWNrV2ViVmlld1ByaXZhdGUoY2xpZW50SW5mbyktPmxvYWRQ
cm9ncmVzc0RpZENoYW5nZShXS1BhZ2VHZXRFc3RpbWF0ZWRQcm9ncmVzcyhwYWdlKSAqIDEwMCk7
Cit9CiAKLSAgICBlbWl0IHEtPmxvYWRQcm9ncmVzc0NoYW5nZWQoKTsKK3ZvaWQgUVF1aWNrV2Vi
Vmlld1ByaXZhdGU6OmRpZEZpbmlzaFByb2dyZXNzKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKK3sKKyAgICB0b1FRdWlja1dlYlZpZXdQcml2YXRlKGNsaWVudEluZm8pLT5sb2Fk
UHJvZ3Jlc3NEaWRDaGFuZ2UoMTAwKTsKIH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6
YmFja0ZvcndhcmRMaXN0RGlkQ2hhbmdlKCkKK3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRp
ZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXS1BhZ2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJl
ZiwgV0tBcnJheVJlZiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKLSAgICBuYXZpZ2F0aW9u
SGlzdG9yeS0+ZC0+cmVzZXQoKTsKKyAgICB0b1FRdWlja1dlYlZpZXdQcml2YXRlKGNsaWVudElu
Zm8pLT5uYXZpZ2F0aW9uSGlzdG9yeS0+ZC0+cmVzZXQoKTsKIH0KIAotdm9pZCBRUXVpY2tXZWJW
aWV3UHJpdmF0ZTo6bG9hZERpZFN1Y2NlZWQoKQordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6
c2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGJvb2wgZW5hYmxlKQogewotICAgIFFfUShRUXVpY2tX
ZWJWaWV3KTsKLSAgICBBU1NFUlQoIXEtPmxvYWRpbmcoKSk7CisgICAgd2ViUGFnZVByb3h5LT5z
ZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZChlbmFibGUpOworfQogCi0gICAgUVdlYkxvYWRS
ZXF1ZXN0IGxvYWRSZXF1ZXN0KHEtPnVybCgpLCBRUXVpY2tXZWJWaWV3OjpMb2FkU3VjY2VlZGVk
U3RhdHVzKTsKLSAgICBlbWl0IHEtPmxvYWRpbmdDaGFuZ2VkKCZsb2FkUmVxdWVzdCk7Citib29s
IFFRdWlja1dlYlZpZXdQcml2YXRlOjp0cmFuc3BhcmVudEJhY2tncm91bmQoKSBjb25zdAorewor
ICAgIHJldHVybiB3ZWJQYWdlUHJveHktPmRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCk7CiB9
CiAKLXZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmxvYWREaWRGYWlsKGNvbnN0IFF0V2ViRXJy
b3ImIGVycm9yKQordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6bG9hZFByb2dyZXNzRGlkQ2hh
bmdlKGludCBsb2FkUHJvZ3Jlc3MpCiB7CiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwotICAgIEFT
U0VSVCghcS0+bG9hZGluZygpKTsKIAotICAgIFFXZWJMb2FkUmVxdWVzdCBsb2FkUmVxdWVzdChl
cnJvci51cmwoKSwgUVF1aWNrV2ViVmlldzo6TG9hZEZhaWxlZFN0YXR1cywgZXJyb3IuZGVzY3Jp
cHRpb24oKSwgc3RhdGljX2Nhc3Q8UVF1aWNrV2ViVmlldzo6RXJyb3JEb21haW4+KGVycm9yLnR5
cGUoKSksIGVycm9yLmVycm9yQ29kZSgpKTsKLSAgICBlbWl0IHEtPmxvYWRpbmdDaGFuZ2VkKCZs
b2FkUmVxdWVzdCk7CisgICAgbV9sb2FkUHJvZ3Jlc3MgPSBsb2FkUHJvZ3Jlc3M7CisKKyAgICBl
bWl0IHEtPmxvYWRQcm9ncmVzc0NoYW5nZWQoKTsKIH0KIAogdm9pZCBRUXVpY2tXZWJWaWV3UHJp
dmF0ZTo6aGFuZGxlTW91c2VFdmVudChRTW91c2VFdmVudCogZXZlbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAppbmRleCAzMzhhMTEy
MmJkZmNlODAyZjNmYzg1YzRlYzc3YWEzNmVkYzYxNDMyLi40NTdkZTY1ZTI1MjQ5N2I4ZGM2NTI2
MThiNjE0YWVlYWYzMDk5MjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlld19wLmgKQEAgLTUxLDcgKzUxLDYgQEAgY2xhc3MgUGxhdGZvcm1X
ZWJWaWV3OwogbmFtZXNwYWNlIFdlYktpdCB7CiBzdHJ1Y3QgUXRSZWZDb3VudGVkTmV0d29ya1Jl
cXVlc3REYXRhOwogY2xhc3MgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OwotY2xhc3Mg
UXRXZWJQYWdlTG9hZENsaWVudDsKIGNsYXNzIFF0V2ViUGFnZUZpbmRDbGllbnQ7CiBjbGFzcyBR
dFdlYlBhZ2VQb2xpY3lDbGllbnQ7CiBjbGFzcyBRdFdlYlBhZ2VVSUNsaWVudDsKQEAgLTIyMSw3
ICsyMjAsNiBAQCBwcml2YXRlOgogCiAgICAgZnJpZW5kIGNsYXNzIFFXZWJLaXRUZXN0OwogICAg
IGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDsKLSAg
ICBmcmllbmQgY2xhc3MgV2ViS2l0OjpRdFdlYlBhZ2VMb2FkQ2xpZW50OwogICAgIGZyaWVuZCBj
bGFzcyBXZWJLaXQ6OlF0V2ViUGFnZUZpbmRDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYktp
dDo6UXRXZWJQYWdlUG9saWN5Q2xpZW50OwogICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlF0V2Vi
UGFnZVVJQ2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3X3BfcC5oCmluZGV4IGEzYzk0ZmE1NjQzNmRmMjQ0OGQzM2ViMzRlZDNlYjM0
ZWU1YzZjN2QuLmI5MTY2MTQwYWRkNzE0MTJmMTRhNTM5YzIyMGI5NmRhMTgyMTg5ODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3Au
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9w
LmgKQEAgLTQ0LDcgKzQ0LDYgQEAgY2xhc3MgUXREaWFsb2dSdW5uZXI7CiBjbGFzcyBQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50UXQ7CiBjbGFzcyBRdFdlYkNvbnRleHQ7CiBjbGFzcyBRdFdl
YkVycm9yOwotY2xhc3MgUXRXZWJQYWdlTG9hZENsaWVudDsKIGNsYXNzIFF0V2ViUGFnZVBvbGlj
eUNsaWVudDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIH0KQEAgLTczLDE2ICs3Miw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBvbkNvbXBvbmVudENvbXBsZXRlKCkgeyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcHJvdmlzaW9uYWxMb2FkRGlkU3RhcnQoY29uc3QgV1RGOjpTdHJpbmcmIHVy
bCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZChjb25zdCBXVEY6OlN0cmluZyYgdXJsKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZERp
ZENvbW1pdCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCk7
Ci0gICAgdmlydHVhbCB2b2lkIHRpdGxlRGlkQ2hhbmdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGxv
YWRQcm9ncmVzc0RpZENoYW5nZShpbnQgbG9hZFByb2dyZXNzKTsKLSAgICB2aXJ0dWFsIHZvaWQg
YmFja0ZvcndhcmRMaXN0RGlkQ2hhbmdlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWREaWRTdWNj
ZWVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWREaWRTdG9wKCk7Ci0gICAgdmlydHVhbCB2b2lk
IGxvYWREaWRGYWlsKGNvbnN0IFdlYktpdDo6UXRXZWJFcnJvciYgZXJyb3IpOwogICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVNb3VzZUV2ZW50KFFNb3VzZUV2ZW50Kik7CiAKICAgICBzdGF0aWMgdm9p
ZCBkaWRGaW5kU3RyaW5nKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBzdHJpbmcsIHVuc2ln
bmVkIG1hdGNoQ291bnQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpAQCAtMTYwLDYgKzE1MCwx
OSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFFQb2ludEYgYWRqdXN0KGNvbnN0IFFQb2ludEYmKTsK
ICAgICB9OwogCisgICAgLy8gV0tQYWdlTG9hZENsaWVudCBjYWxsYmFja3MuCisgICAgc3RhdGlj
IHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVS
ZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3Rh
dGljIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiwgV0tFcnJvclJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV0tQYWdlUmVm
LCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OworICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJh
bWVSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAg
c3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLUGFnZVJlZiwg
V0tGcmFtZVJlZiwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgV0tUeXBlUmVmIHVzZXJE
YXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
VGl0bGVGb3JGcmFtZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVS
ZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRp
ZFN0YXJ0UHJvZ3Jlc3MoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBz
dGF0aWMgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFByb2dyZXNzKFdLUGFnZVJlZiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlQmFja0Zvcndh
cmRMaXN0KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLCBXS0FycmF5UmVmLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKKwogICAgIFFRdWlja1dlYlZpZXdQcml2YXRlKFFRdWlj
a1dlYlZpZXcqIHZpZXdwb3J0KTsKICAgICBSZWZQdHI8V2ViS2l0OjpRdFdlYkNvbnRleHQ+IGNv
bnRleHQ7CiAgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiB3ZWJQYWdlUHJveHk7CkBA
IC0xNzEsNyArMTc0LDYgQEAgcHJvdGVjdGVkOgogICAgIE93blB0cjxRV2ViTmF2aWdhdGlvbkhp
c3Rvcnk+IG5hdmlnYXRpb25IaXN0b3J5OwogICAgIE93blB0cjxRV2ViUHJlZmVyZW5jZXM+IHBy
ZWZlcmVuY2VzOwogCi0gICAgUVNjb3BlZFBvaW50ZXI8V2ViS2l0OjpRdFdlYlBhZ2VMb2FkQ2xp
ZW50PiBwYWdlTG9hZENsaWVudDsKICAgICBRU2NvcGVkUG9pbnRlcjxXZWJLaXQ6OlF0V2ViUGFn
ZVBvbGljeUNsaWVudD4gcGFnZVBvbGljeUNsaWVudDsKICAgICBRU2NvcGVkUG9pbnRlcjxXZWJL
aXQ6OlF0V2ViUGFnZVVJQ2xpZW50PiBwYWdlVUlDbGllbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFdlYkVycm9yLmNwcAppbmRleCA3NTg4NGY0NDBjZjBhOWI1MmFjMzViNDA1
OTc4NWM4MmJlYTJjN2QwLi5iNTg5MTU5N2FmYzg5OTZjZDA5OWUwNmNhZmQ0NTI3NzY0NTQxMThh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJFcnJvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuY3BwCkBAIC01Nyw3
ICs1Nyw3IEBAIGludCBRdFdlYkVycm9yOjplcnJvckNvZGUoKSBjb25zdAogCiBRU3RyaW5nIFF0
V2ViRXJyb3I6OnVybCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRvSW1wbChlcnJvci5nZXQoKSkt
PmZhaWxpbmdVUkwoKTsKKyAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmluZyhXS1VSTENvcHlT
dHJpbmcoV0tFcnJvckNvcHlGYWlsaW5nVVJMKGVycm9yLmdldCgpKSkpOwogfQogCiBRU3RyaW5n
IFF0V2ViRXJyb3I6OmRlc2NyaXB0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VMb2FkQ2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYjg3N2NhOGRmNzU4MWRjOTVlMDg4M2Y4MjQ2OThhODIzOWUyMWY3Ny4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlTG9hZENsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwyMTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJRdFdlYlBhZ2VMb2FkQ2xpZW50LmgiCi0KLSNpbmNsdWRlICJRdFdlYkVycm9yLmgi
Ci0jaW5jbHVkZSAicXF1aWNrd2Vidmlld19wX3AuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1RdFdlYlBhZ2VMb2FkQ2xpZW50OjpRdFdlYlBh
Z2VMb2FkQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBRUXVpY2tXZWJWaWV3KiB3ZWJWaWV3KQot
ICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCi17Ci0gICAgV0tQYWdlTG9hZGVyQ2xpZW50IGxvYWRD
bGllbnQ7Ci0gICAgbWVtc2V0KCZsb2FkQ2xpZW50LCAwLCBzaXplb2YoV0tQYWdlTG9hZGVyQ2xp
ZW50KSk7Ci0gICAgbG9hZENsaWVudC52ZXJzaW9uID0ga1dLUGFnZUxvYWRlckNsaWVudEN1cnJl
bnRWZXJzaW9uOwotICAgIGxvYWRDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7Ci0gICAgbG9hZENs
aWVudC5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lID0gZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZTsKLSAgICBsb2FkQ2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZEZvckZyYW1lID0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZENsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxM
b2FkV2l0aEVycm9yRm9yRnJhbWUgPSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9y
RnJhbWU7Ci0gICAgbG9hZENsaWVudC5kaWRDb21taXRMb2FkRm9yRnJhbWUgPSBkaWRDb21taXRM
b2FkRm9yRnJhbWU7Ci0gICAgbG9hZENsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRG
aW5pc2hMb2FkRm9yRnJhbWU7Ci0gICAgbG9hZENsaWVudC5kaWRGYWlsTG9hZFdpdGhFcnJvckZv
ckZyYW1lID0gZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZTsKLSAgICBsb2FkQ2xpZW50LmRp
ZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSA9IGRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZTsKLSAgICBsb2FkQ2xpZW50LmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lID0gZGlk
UmVjZWl2ZVRpdGxlRm9yRnJhbWU7Ci0gICAgbG9hZENsaWVudC5kaWRTdGFydFByb2dyZXNzID0g
ZGlkU3RhcnRQcm9ncmVzczsKLSAgICBsb2FkQ2xpZW50LmRpZENoYW5nZVByb2dyZXNzID0gZGlk
Q2hhbmdlUHJvZ3Jlc3M7Ci0gICAgbG9hZENsaWVudC5kaWRGaW5pc2hQcm9ncmVzcyA9IGRpZEZp
bmlzaFByb2dyZXNzOwotICAgIGxvYWRDbGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0ID0g
ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0OwotICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQo
cGFnZVJlZiwgJmxvYWRDbGllbnQpOwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpCi17Ci0gICAgbV93
ZWJWaWV3LT5kX2Z1bmMoKS0+cHJvdmlzaW9uYWxMb2FkRGlkU3RhcnQodXJsKTsKLX0KLQotdm9p
ZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWQoY29uc3QgV1RGOjpTdHJpbmcmIHVybCkKLXsKLSAgICBtX3dlYlZpZXctPmRfZnVu
YygpLT5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQodXJsKTsKLX0K
LQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRDb21taXRMb2FkKCkKLXsKLSAgICBQYWdl
Vmlld3BvcnRDb250cm9sbGVyKiBwdmMgPSBtX3dlYlZpZXctPmRfZnVuYygpLT52aWV3cG9ydENv
bnRyb2xsZXIoKTsKLSAgICBpZiAocHZjKQotICAgICAgICBwdmMtPmRpZENvbW1pdExvYWQoKTsK
LSAgICBtX3dlYlZpZXctPmRfZnVuYygpLT5sb2FkRGlkQ29tbWl0KCk7Ci19Ci0KLXZvaWQgUXRX
ZWJQYWdlTG9hZENsaWVudDo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbigpCi17Ci0gICAgbV93
ZWJWaWV3LT5kX2Z1bmMoKS0+ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbigpOwotfQotCi12b2lk
IFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZFJlY2VpdmVUaXRsZSgpCi17Ci0gICAgbV93ZWJWaWV3
LT5kX2Z1bmMoKS0+dGl0bGVEaWRDaGFuZ2UoKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xp
ZW50OjpkaWRDaGFuZ2VQcm9ncmVzcyhpbnQgbG9hZFByb2dyZXNzKQotewotICAgIG1fd2ViVmll
dy0+ZF9mdW5jKCktPmxvYWRQcm9ncmVzc0RpZENoYW5nZShsb2FkUHJvZ3Jlc3MpOwotfQotCi12
b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgpCi17Ci0g
ICAgbV93ZWJWaWV3LT5kX2Z1bmMoKS0+YmFja0ZvcndhcmRMaXN0RGlkQ2hhbmdlKCk7Ci19Ci0K
LXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlzcGF0Y2hMb2FkU3VjY2VlZGVkKCkKLXsKLSAg
ICBtX3dlYlZpZXctPmRfZnVuYygpLT5sb2FkRGlkU3VjY2VlZCgpOwotfQotCi12b2lkIFF0V2Vi
UGFnZUxvYWRDbGllbnQ6OmRpc3BhdGNoTG9hZFN0b3BwZWQoKQotewotICAgIG1fd2ViVmlldy0+
ZF9mdW5jKCktPmxvYWREaWRTdG9wKCk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6
ZGlzcGF0Y2hMb2FkRmFpbGVkKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBRdFdlYkVycm9y
JiBlcnJvcikKLXsKLSAgICBpZiAoZXJyb3IuaXNDYW5jZWxsYXRpb24oKSkgewotICAgICAgICBk
aXNwYXRjaExvYWRTdG9wcGVkKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbnQg
ZXJyb3JDb2RlID0gZXJyb3IuZXJyb3JDb2RlKCk7Ci0KLSAgICBpZiAoZXJyb3JDb2RlID09IGtX
S0Vycm9yQ29kZUZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UgfHwgZXJyb3JDb2Rl
ID09IGtXS0Vycm9yQ29kZVBsdWdJbldpbGxIYW5kbGVMb2FkKSB7Ci0gICAgICAgIC8vIFRoZSBh
Y3RpdmUgdXJsIG1pZ2h0IGhhdmUgY2hhbmdlZAotICAgICAgICBtX3dlYlZpZXctPmVtaXRVcmxD
aGFuZ2VJZk5lZWRlZCgpOwotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IExvYWRTdGFydGVk
U3RhdHVzIGhhcyBhIGNvdW50ZXJwYXJ0IHdoZW4gZS5nLiByZXF1ZXN0aW5nIGEgZG93bmxvYWQu
Ci0gICAgICAgIGRpc3BhdGNoTG9hZFN1Y2NlZWRlZCgpOwotCi0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICAvLyBXZSBzZXQgdGhlIHVucmVhY2hhYmxlIHVybCB1bmNvbmRpdGlvbmFsbHkg
c28gdGhhdCB0aGUgY3VycmVudAotICAgIC8vIGFjdGl2ZSB1cmwgb2YgdGhlIHdlYnZpZXcgd2hl
biB0aGUgbG9hZGluZ0NoYW5nZWQgc2lnbmFsIGlzCi0gICAgLy8gZW1pdHRlZCByZWZsZWN0cyB0
aGUgZmFpbGVkIHVybCwgbm90IHRoZSBwcmV2aW91c2x5IGNvbW1pdHRlZAotICAgIC8vIHVybC4g
VGhpcyBhbHNvIGVuc3VyZXMgdGhhdCBpZiB0aGUgdXNlciBkb2VzIG5vdCBkbyBhIGxvYWRIdG1s
Ci0gICAgLy8gd2l0aCBhbiBlcnJvciBwYWdlIGFuZCBhbmQgdW5yZWFjaGFibGUgdXJsIGFzIGEg
cmVwb25zZSB0byB0aGUKLSAgICAvLyBmYWlsZWQgbG9hZCwgd2UgY2FuIHN0aWxsIGRldGVjdCB0
aGUgZmFpbGVkIHVybCBmb3IgcmVsb2Fkcy4KLSAgICBmcmFtZS0+c2V0VW5yZWFjaGFibGVVUkwo
ZXJyb3IudXJsKCkpOwotICAgIG1fd2ViVmlldy0+ZW1pdFVybENoYW5nZUlmTmVlZGVkKCk7Ci0K
LSAgICBtX3dlYlZpZXctPmRfZnVuYygpLT5sb2FkRGlkRmFpbChlcnJvcik7Ci19Ci0KLXN0YXRp
YyBRdFdlYlBhZ2VMb2FkQ2xpZW50KiB0b1F0V2ViUGFnZUxvYWRDbGllbnQoY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKLXsKLSAgICBBU1NFUlQoY2xpZW50SW5mbyk7Ci0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8UXRXZWJQYWdlTG9hZENsaWVudCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVu
dEluZm8pKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZy
YW1lKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHRvUXRXZWJQYWdlTG9hZENsaWVudChjbGllbnRJ
bmZvKS0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWQodG9JbXBsKGZyYW1lKS0+cHJvdmlzaW9uYWxV
UkwoKSk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgaWYgKCFXS0Zy
YW1lSXNNYWluRnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJGcmFtZVBy
b3h5KiB3a2ZyYW1lID0gdG9JbXBsKGZyYW1lKTsKLSAgICB0b1F0V2ViUGFnZUxvYWRDbGllbnQo
Y2xpZW50SW5mbyktPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCh3
a2ZyYW1lLT5wcm92aXNpb25hbFVSTCgpKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50
OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCi17Ci0gICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQotICAgICAg
ICByZXR1cm47Ci0gICAgdG9RdFdlYlBhZ2VMb2FkQ2xpZW50KGNsaWVudEluZm8pLT5kaXNwYXRj
aExvYWRGYWlsZWQodG9JbXBsKGZyYW1lKSwgZXJyb3IpOwotfQotCi12b2lkIFF0V2ViUGFnZUxv
YWRDbGllbnQ6OmRpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBpZiAoIVdLRnJh
bWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybjsKLSAgICB0b1F0V2ViUGFnZUxv
YWRDbGllbnQoY2xpZW50SW5mbyktPmRpZENvbW1pdExvYWQoKTsKLX0KLQotdm9pZCBRdFdlYlBh
Z2VMb2FkQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVm
IGZyYW1lLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgaWYgKCFX
S0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm47Ci0gICAgdG9RdFdlYlBh
Z2VMb2FkQ2xpZW50KGNsaWVudEluZm8pLT5kaXNwYXRjaExvYWRTdWNjZWVkZWQoKTsKLX0KLQot
dm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdL
UGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZSwgV0tFcnJvclJlZiBlcnJvciwgV0tUeXBlUmVmLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZy
YW1lKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHRvUXRXZWJQYWdlTG9hZENsaWVudChjbGllbnRJ
bmZvKS0+ZGlzcGF0Y2hMb2FkRmFpbGVkKHRvSW1wbChmcmFtZSksIGVycm9yKTsKLX0KLQotdm9p
ZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBl
IHR5cGUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAg
ICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybjsKLSAgICB0
b1F0V2ViUGFnZUxvYWRDbGllbnQoY2xpZW50SW5mbyktPmRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b24oKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2FkQ2xpZW50OjpkaWRSZWNlaXZlVGl0bGVGb3JG
cmFtZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIHRpdGxlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5
cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgaWYgKCFXS0ZyYW1lSXNNYWlu
RnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1cm47Ci0gICAgdG9RdFdlYlBhZ2VMb2FkQ2xpZW50
KGNsaWVudEluZm8pLT5kaWRSZWNlaXZlVGl0bGUoKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VMb2Fk
Q2xpZW50OjpkaWRTdGFydFByb2dyZXNzKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKLXsKLSAgICB0b1F0V2ViUGFnZUxvYWRDbGllbnQoY2xpZW50SW5mbyktPmRpZENoYW5nZVBy
b2dyZXNzKDApOwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRDbGllbnQ6OmRpZENoYW5nZVByb2dy
ZXNzKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHRvUXRX
ZWJQYWdlTG9hZENsaWVudChjbGllbnRJbmZvKS0+ZGlkQ2hhbmdlUHJvZ3Jlc3MoV0tQYWdlR2V0
RXN0aW1hdGVkUHJvZ3Jlc3MocGFnZSkgKiAxMDApOwotfQotCi12b2lkIFF0V2ViUGFnZUxvYWRD
bGllbnQ6OmRpZEZpbmlzaFByb2dyZXNzKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKLXsKLSAgICB0b1F0V2ViUGFnZUxvYWRDbGllbnQoY2xpZW50SW5mbyktPmRpZENoYW5nZVBy
b2dyZXNzKDEwMCk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdlTG9hZENsaWVudDo6ZGlkQ2hhbmdlQmFj
a0ZvcndhcmRMaXN0KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLCBXS0FycmF5
UmVmLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQotewotICAgIHRvUXRXZWJQYWdlTG9hZENsaWVu
dChjbGllbnRJbmZvKS0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYmtpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZUxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VMb2FkQ2xpZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2OGJhYzE2ODg1
NTlkOGFlMGU1ODRjMWRjYWNkN2NhOWY4YjQzNWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZUxvYWRDbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMg
cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3
aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoK
LSAqLwotCi0jaWZuZGVmIFF0V2ViUGFnZUxvYWRDbGllbnRfaAotI2RlZmluZSBRdFdlYlBhZ2VM
b2FkQ2xpZW50X2gKLQotI2luY2x1ZGUgPFF0R2xvYmFsPgotI2luY2x1ZGUgPFdlYkZyYW1lUHJv
eHkuaD4KLSNpbmNsdWRlIDxXS1BhZ2UuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotUVRfQkVHSU5fTkFNRVNQQUNFCi1jbGFzcyBRVXJsOwotUVRfRU5EX05BTUVTUEFDRQot
Ci1jbGFzcyBRUXVpY2tXZWJWaWV3OwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgUXRX
ZWJFcnJvcjsKLQotY2xhc3MgUXRXZWJQYWdlTG9hZENsaWVudCB7Ci1wdWJsaWM6Ci0gICAgUXRX
ZWJQYWdlTG9hZENsaWVudChXS1BhZ2VSZWYsIFFRdWlja1dlYlZpZXcqKTsKLQotcHJpdmF0ZToK
LSAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdURjo6U3RyaW5nJik7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3Qg
V1RGOjpTdHJpbmcmKTsKLSAgICB2b2lkIGRpZENvbW1pdExvYWQoKTsKLSAgICB2b2lkIGRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb24oKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVUaXRsZSgpOwotICAg
IHZvaWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoaW50KTsKLSAgICB2b2lkIGRpZENoYW5nZUJhY2tGb3J3
YXJkTGlzdCgpOwotCi0gICAgdm9pZCBkaXNwYXRjaExvYWRTdWNjZWVkZWQoKTsKLSAgICB2b2lk
IGRpc3BhdGNoTG9hZFN0b3BwZWQoKTsKLSAgICB2b2lkIGRpc3BhdGNoTG9hZEZhaWxlZChXZWJG
cmFtZVByb3h5KiwgY29uc3QgUXRXZWJFcnJvciYpOwotCi0KLSAgICAvLyBXS1BhZ2VMb2FkQ2xp
ZW50IGNhbGxiYWNrcy4KLSAgICBzdGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlw
ZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgc3RhdGljIHZvaWQg
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiwgV0tFcnJvclJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBX
S0ZyYW1lUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwot
ICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVS
ZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgc3Rh
dGljIHZvaWQgZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVS
ZWYsIFdLRXJyb3JSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7Ci0gICAgc3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdL
UGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgV0tUeXBl
UmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmLCBXS0ZyYW1lUmVm
LCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotICAgIHN0YXRp
YyB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3MoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhXS1BhZ2VSZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwotICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFByb2dyZXNzKFdLUGFn
ZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdl
QmFja0ZvcndhcmRMaXN0KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmLCBXS0Fy
cmF5UmVmLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLQotICAgIFFRdWlja1dlYlZpZXcqIG1f
d2ViVmlldzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYmtpdAotCi0jZW5kaWYgLy8gUXRXZWJQ
YWdlTG9hZENsaWVudF9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>