<?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>72910</bug_id>
          
          <creation_ts>2011-11-21 13:43:01 -0800</creation_ts>
          <short_desc>[Qt] [WK2] Move PageUIClient related code to QtWebPageUIClient</short_desc>
          <delta_ts>2011-11-22 05:21:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>72928</blocked>
    
    <blocked>72943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Marcelo de Oliveira Filho">cmarcelo</reporter>
          <assigned_to name="Caio Marcelo de Oliveira Filho">cmarcelo</assigned_to>
          <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>507183</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-21 13:43:01 -0800</bug_when>
    <thetext>[Qt] [WK2] Move PageUIClient related code to QtWebPageUIClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507191</commentid>
    <comment_count>1</comment_count>
      <attachid>116129</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-21 13:52:58 -0800</bug_when>
    <thetext>Created attachment 116129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507222</commentid>
    <comment_count>2</comment_count>
      <attachid>116129</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-11-21 14:41:12 -0800</bug_when>
    <thetext>Comment on attachment 116129
Patch

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

Love it! r=me with some nitpicking.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h:115
&gt; +    // FIXME: Remove scoped pointer when possible.

When will this be possible?

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h:116
&gt; +    QScopedPointer&lt;QtWebPageUIClient&gt; m_pageUIClient;

Per Qt API style, this member should not have the &quot;m_&quot; prefix.

&gt; Source/WebKit2/UIProcess/qt/QtWebPageUIClient.cpp:95
&gt; +    if (!wkSelectedFileNames.isEmpty())

This check can be removed.

&gt; Source/WebKit2/UIProcess/qt/QtWebPageUIClient.cpp:96
&gt; +        for (unsigned i = 0; wkSelectedFileNames.size(); ++i)

Vector::size() returns size_t, not unsigned.

&gt; Source/WebKit2/UIProcess/qt/QtWebPageUIClient.h:39
&gt; +    // WKPageUIClient callbacks.

Let&apos;s make these private instead of public.

&gt; Source/WebKit2/UIProcess/qt/QtWebPageUIClient.h:43
&gt; +    static void setStatusText(WKPageRef, WKStringRef text, const void *clientInfo);

Nit: The &apos;text&apos; argument name is unnecessary.

&gt; Source/WebKit2/UIProcess/qt/QtWebPageUIClient.h:49
&gt; +    void runJavaScriptAlert(const QString&amp; alertText);
&gt; +    bool runJavaScriptConfirm(const QString&amp; message);
&gt; +    QString runJavaScriptPrompt(const QString&amp; message, const QString&amp; defaultValue, bool&amp; ok);

Nit: The &apos;alertText&apos; argument name should probably also be called &apos;message&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507232</commentid>
    <comment_count>3</comment_count>
      <attachid>116129</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2011-11-21 14:51:55 -0800</bug_when>
    <thetext>Comment on attachment 116129
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/qt/QtWebPageUIClient.cpp:96
&gt;&gt; +        for (unsigned i = 0; wkSelectedFileNames.size(); ++i)
&gt; 
&gt; Vector::size() returns size_t, not unsigned.

I don&apos;t get this line. This is an infinite loop isn&apos;t? Probably missing the for condition &quot;i &lt; wkSelectedFileNames.size()&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507401</commentid>
    <comment_count>4</comment_count>
      <attachid>116175</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-21 20:59:55 -0800</bug_when>
    <thetext>Created attachment 116175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507402</commentid>
    <comment_count>5</comment_count>
      <attachid>116129</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-21 21:06:14 -0800</bug_when>
    <thetext>Comment on attachment 116129
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h:115
&gt;&gt; +    // FIXME: Remove scoped pointer when possible.
&gt; 
&gt; When will this be possible?

I had the plan of making this object directly a member instead of (smart)pointer. For this to happen, we need to make sure we can create the QtWebPageProxy in the initalization list. But this is an unrelated change, let&apos;s not do it now.

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h:116
&gt;&gt; +    QScopedPointer&lt;QtWebPageUIClient&gt; m_pageUIClient;
&gt; 
&gt; Per Qt API style, this member should not have the &quot;m_&quot; prefix.

Fixed.

&gt;&gt; Source/WebKit2/UIProcess/qt/QtWebPageUIClient.cpp:95
&gt;&gt; +    if (!wkSelectedFileNames.isEmpty())
&gt; 
&gt; This check can be removed.

Fixed. Note that this and next comment refer to code in functions that were just moved from QtWebPageProxy. I fixed them anyway.

&gt;&gt;&gt; Source/WebKit2/UIProcess/qt/QtWebPageUIClient.cpp:96
&gt;&gt;&gt; +        for (unsigned i = 0; wkSelectedFileNames.size(); ++i)
&gt;&gt; 
&gt;&gt; Vector::size() returns size_t, not unsigned.
&gt; 
&gt; I don&apos;t get this line. This is an infinite loop isn&apos;t? Probably missing the for condition &quot;i &lt; wkSelectedFileNames.size()&quot;.

Fixed the size_t and the bug, nice catch Rafael :-)

&gt;&gt; Source/WebKit2/UIProcess/qt/QtWebPageUIClient.h:39
&gt;&gt; +    // WKPageUIClient callbacks.
&gt; 
&gt; Let&apos;s make these private instead of public.

Fixed.

&gt;&gt; Source/WebKit2/UIProcess/qt/QtWebPageUIClient.h:43
&gt;&gt; +    static void setStatusText(WKPageRef, WKStringRef text, const void *clientInfo);
&gt; 
&gt; Nit: The &apos;text&apos; argument name is unnecessary.

Fixed.

&gt;&gt; Source/WebKit2/UIProcess/qt/QtWebPageUIClient.h:49
&gt;&gt; +    QString runJavaScriptPrompt(const QString&amp; message, const QString&amp; defaultValue, bool&amp; ok);
&gt; 
&gt; Nit: The &apos;alertText&apos; argument name should probably also be called &apos;message&apos;.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507421</commentid>
    <comment_count>6</comment_count>
      <attachid>116181</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-21 23:28:52 -0800</bug_when>
    <thetext>Created attachment 116181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507491</commentid>
    <comment_count>7</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-11-22 03:33:50 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 116129 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116129&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/qt/QtWebPageUIClient.cpp:96
&gt; &gt;&gt; +        for (unsigned i = 0; wkSelectedFileNames.size(); ++i)
&gt; &gt; 
&gt; &gt; Vector::size() returns size_t, not unsigned.
&gt; 
&gt; I don&apos;t get this line. This is an infinite loop isn&apos;t? Probably missing the for condition &quot;i &lt; wkSelectedFileNames.size()&quot;.

I remembered you ran the API tests. We do have an awesome coverage :D. ahaha</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507499</commentid>
    <comment_count>8</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-22 04:03:38 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; I remembered you ran the API tests. We do have an awesome coverage :D. ahaha

This will be easier to test when we move to QML for the file selection dialog. Stay tuned ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507505</commentid>
    <comment_count>9</comment_count>
      <attachid>116181</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-11-22 04:14:13 -0800</bug_when>
    <thetext>Comment on attachment 116181
Patch

Woosh!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507537</commentid>
    <comment_count>10</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-22 05:21:58 -0800</bug_when>
    <thetext>Committed r100990: &lt;http://trac.webkit.org/changeset/100990&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116129</attachid>
            <date>2011-11-21 13:52:58 -0800</date>
            <delta_ts>2011-11-21 21:06:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72910-20111121185336.patch</filename>
            <type>text/plain</type>
            <size>23838</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTIzZGQ5Mzg4YmFkMTJi
ZmZjMTQxYWU2NDE1ZGM2YjkwZGI5YmZhMC4uNjdmN2FlMTZmZGJmM2IwZmVkOTM1MmY3NDExZjY5
OWM4ZTVhZmViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDExLTExLTIxICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XSBbV0syXSBNb3ZlIFBhZ2VVSUNsaWVudCByZWxhdGVkIGNvZGUgdG8g
UXRXZWJQYWdlVUlDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcyOTEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3BsaXQgUGFnZVVJQ2xpZW50IHJlbGF0ZWQgY29kZSBmcm9tIFF0V2ViUGFnZVBy
b3h5L0NsaWVudEltcGwuIFRoZSBuZXcKKyAgICAgICAgUXRXZWJQYWdlVUlDbGllbnQgcmVnaXN0
ZXJzIGl0c2VsZiB3aXRoIFdLUGFnZVJlZiBhbmQgaXQncyBvd25lZCBieSB0aGUKKyAgICAgICAg
UVF1aWNrV2ViVmlld1ByaXZhdGUuIFRoaXMgaXMgYSBtb3ZlIHRvIGNsZWFuIHVwIFF0V2ViUGFn
ZVByb3h5IG9iamVjdC4KKworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2
YXRlOjpRUXVpY2tXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6Y2hvb3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
d19wLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvcXQvQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6aW5pdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVVJQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChRdFdlYlBhZ2VVSUNsaWVudDo6UXRXZWJQ
YWdlVUlDbGllbnQpOgorICAgICAgICAodG9RdFdlYlBhZ2VVSUNsaWVudCk6CisgICAgICAgIChR
dFdlYlBhZ2VVSUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFF0V2ViUGFn
ZVVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChjcmVhdGVOdWxsV0tT
dHJpbmcpOgorICAgICAgICAoUXRXZWJQYWdlVUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQp
OgorICAgICAgICAoUXRXZWJQYWdlVUlDbGllbnQ6OnNldFN0YXR1c1RleHQpOgorICAgICAgICAo
UXRXZWJQYWdlVUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgIChRdFdlYlBhZ2VVSUNs
aWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VVSUNsaWVudC5oOiBBZGRlZC4KKwogMjAxMS0xMS0yMSAgQWxleGlzIE1lbmFyZCAg
PGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBbUXRdIFJlbW92ZSB1bm5l
Y2Vzc2FyeSBpbml0aWFsaXplIG1ldGhvZCBmcm9tIFFRdWlja1dlYlZpZXcuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpp
bmRleCA3YjI2ZGE4MzM1OGJmZDc5ZDNhNjE0NGI3MzQ5NTI0MzQwZTQ1ZWE0Li5iYWQ2OTAyNTcx
ZmQ1ZjIyN2Y3YWJhNjIyMzdlNTgwYTQ2NGRmOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTMyMSw2ICsz
MjEsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvUXREaWFsb2dSdW5uZXIuaCBc
CiAgICAgVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmggXAogICAgIFVJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VQcm94eS5oIFwKKyAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQu
aCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuaCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3
a2hpc3RvcnlfcC5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRTR1VwZGF0ZVF1ZXVlLmggXApAQCAt
NjI2LDYgKzYyNyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1
bm5lci5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdERvd25sb2FkTWFuYWdlci5jcHAgXAogICAg
IFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgXAorICAgIFVJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VVSUNsaWVudC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5LmNwcCBcCiAg
ICAgVUlQcm9jZXNzL3F0L1F0U0dVcGRhdGVRdWV1ZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9R
dFNHVGlsZU5vZGUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IDFhNDg2YWM2ZDQ1NzBhZjc4NTgyN2M2MjMyN2E5ZjZj
ZTdjODM4OTYuLmEzMTMwYmFkYTU1MmIzYWQwNTJjODE2YTY0NjQ1MjJiZjU2YWE1ZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApA
QCAtNTgsNiArNTgsOCBAQCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6UVF1aWNrV2ViVmlld1ByaXZh
dGUoUVF1aWNrV2ViVmlldyogdmlld3BvcnQsIFdLQ29udGV4dFJlZgogICAgIHBhZ2VQcm94eS0+
aW5pdCgpOwogCiAgICAgUU9iamVjdDo6Y29ubmVjdChwYWdlUHJveHkuZGF0YSgpLCBTSUdOQUwo
dXBkYXRlTmF2aWdhdGlvblN0YXRlKCkpLCBxX3B0ciwgU0lHTkFMKG5hdmlnYXRpb25TdGF0ZUNo
YW5nZWQoKSkpOworCisgICAgbV9wYWdlVUlDbGllbnQucmVzZXQobmV3IFF0V2ViUGFnZVVJQ2xp
ZW50KHBhZ2VQcm94eS0+cGFnZVJlZigpLCBxX3B0cikpOwogfQogCiB2b2lkIFFRdWlja1dlYlZp
ZXdQcml2YXRlOjplbmFibGVNb3VzZUV2ZW50cygpCkBAIC0yNzQsNyArMjc2LDcgQEAgUVN0cmlu
ZyBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6cnVuSmF2YVNjcmlwdFByb21wdChjb25zdCBRU3RyaW5n
JiBtZXNzYWdlLCBjb25zdAogICAgIHJldHVybiBkaWFsb2dSdW5uZXIucmVzdWx0KCk7CiB9CiAK
LXZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiBzZWxlY3RlZEZpbGVO
YW1lcywgUXRXZWJQYWdlUHJveHk6OkZpbGVDaG9vc2VyVHlwZSB0eXBlKQordm9pZCBRUXVpY2tX
ZWJWaWV3UHJpdmF0ZTo6Y2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBs
aXN0ZW5lclJlZiwgY29uc3QgUVN0cmluZ0xpc3QmIHNlbGVjdGVkRmlsZU5hbWVzLCBRdFdlYlBh
Z2VVSUNsaWVudDo6RmlsZUNob29zZXJUeXBlIHR5cGUpCiB7CiAjaWZuZGVmIFFUX05PX0ZJTEVE
SUFMT0cKICAgICBRX1EoUVF1aWNrV2ViVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAppbmRleCA1ZWFiNzVhZTllMDA3Y2NlYmVk
Y2JhMWE0MDAyNmQ0MzY4ZDNiZDkxLi5iNTVjYTQ4ZjEyOTBlY2ZjNjVlZGE5YzU2NDllNWRlNTEy
NjRhNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlj
a3dlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlld19wLmgKQEAgLTEzMyw2ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIFFRdWlja1dlYlZp
ZXdFeHBlcmltZW50YWwqIG1fZXhwZXJpbWVudGFsOwogCiAgICAgZnJpZW5kIGNsYXNzIFF0V2Vi
UGFnZVByb3h5OworICAgIGZyaWVuZCBjbGFzcyBRdFdlYlBhZ2VVSUNsaWVudDsKICAgICBmcmll
bmQgY2xhc3MgV1RSOjpQbGF0Zm9ybVdlYlZpZXc7CiAgICAgZnJpZW5kIGNsYXNzIFFRdWlja1dl
YlZpZXdFeHBlcmltZW50YWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCmluZGV4IDNhZTI1NjE5ZDU0MDg5NGViOThlMmU4
YjMxYzAxMWVkZjk4YWJhM2IuLmJhMDA2NWI2ZTUxN2NmMDJkM2VkMzNiMzAzNDFiZTJlODgxYjEy
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
dmlld19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dl
YnZpZXdfcF9wLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJRdFBvbGljeUludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oIgogI2luY2x1ZGUg
IlF0V2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiUXRXZWJQYWdlVUlDbGllbnQuaCIKIAogI2lu
Y2x1ZGUgInFxdWlja3dlYnZpZXdfcC5oIgogI2luY2x1ZGUgInFxdWlja3dlYnBhZ2VfcC5oIgpA
QCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogY2xhc3MgUXRXZWJQ
YWdlUHJveHk7CitjbGFzcyBRdFdlYlBhZ2VVSUNsaWVudDsKIAogUVRfQkVHSU5fTkFNRVNQQUNF
CiBjbGFzcyBRRGVjbGFyYXRpdmVDb21wb25lbnQ7CkBAIC03Miw3ICs3NCw3IEBAIHB1YmxpYzoK
ICAgICAvLyBRdFBvbGljeUludGVyZmFjZS4KICAgICB2aXJ0dWFsIFF0UG9saWN5SW50ZXJmYWNl
OjpQb2xpY3lBY3Rpb24gbmF2aWdhdGlvblBvbGljeUZvclVSTChjb25zdCBRVXJsJiwgUXQ6Ok1v
dXNlQnV0dG9uLCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMpOwogCi0gICAgdm9pZCBjaG9vc2VGaWxl
cyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0
ZWRGaWxlTmFtZXMsIFF0V2ViUGFnZVByb3h5OjpGaWxlQ2hvb3NlclR5cGUpOworICAgIHZvaWQg
Y2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiwgY29uc3QgUVN0cmluZ0xp
c3QmIHNlbGVjdGVkRmlsZU5hbWVzLCBRdFdlYlBhZ2VVSUNsaWVudDo6RmlsZUNob29zZXJUeXBl
KTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChjb25zdCBRU3RyaW5nJik7CiAgICAgYm9v
bCBydW5KYXZhU2NyaXB0Q29uZmlybShjb25zdCBRU3RyaW5nJik7CiAgICAgUVN0cmluZyBydW5K
YXZhU2NyaXB0UHJvbXB0KGNvbnN0IFFTdHJpbmcmLCBjb25zdCBRU3RyaW5nJiBkZWZhdWx0VmFs
dWUsIGJvb2wmIG9rKTsKQEAgLTExMCw2ICsxMTIsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBz
ZXRWaWV3SW5BdHRhY2hlZFByb3BlcnRpZXMoUU9iamVjdCopOwogCisgICAgLy8gRklYTUU6IFJl
bW92ZSBzY29wZWQgcG9pbnRlciB3aGVuIHBvc3NpYmxlLgorICAgIFFTY29wZWRQb2ludGVyPFF0
V2ViUGFnZVVJQ2xpZW50PiBtX3BhZ2VVSUNsaWVudDsKKwogICAgIFFTY29wZWRQb2ludGVyPFFR
dWlja1dlYlBhZ2U+IHBhZ2VWaWV3OwogICAgIFFTY29wZWRQb2ludGVyPFF0Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZT4gaW50ZXJhY3Rpb25FbmdpbmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9DbGllbnRJbXBsLmNwcAppbmRleCAxMDRkMzQyYmQxNWRhMzJiOTVjYTA4ZjM2M2E2
NWZlMmUyZDQxZTA4Li4wODYzZWM3NmNjMjYxOTZlNWQ0MzJkNDUzYmRjNjE3YWY3MmUwODJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCkBAIC0zMSw4ICsz
MSw2IEBACiAjaW5jbHVkZSA8V0tGcmFtZS5oPgogI2luY2x1ZGUgPFdLRnJhbWVQb2xpY3lMaXN0
ZW5lci5oPgogI2luY2x1ZGUgPFdLSGl0VGVzdFJlc3VsdC5oPgotI2luY2x1ZGUgPFdLT3BlblBh
bmVsUGFyYW1ldGVycy5oPgotI2luY2x1ZGUgPFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaD4K
ICNpbmNsdWRlIDxXS1BhZ2UuaD4KICNpbmNsdWRlIDxXS1N0cmluZy5oPgogI2luY2x1ZGUgPFdL
VHlwZS5oPgpAQCAtMTUyLDYxICsxNTAsNiBAQCBzdGF0aWMgdm9pZCBxdF93a19kaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZQogICAg
IHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPmRpZEZpbmlzaEZpcnN0Tm9uRW1wdHlMYXlv
dXQoKTsKIH0KIAotc3RhdGljIHZvaWQgcXRfd2tfcnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJl
ZiBwYWdlLCBXS1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCi17Ci0gICAgUVN0cmluZyBxQWxlcnRUZXh0ID0gV0tTdHJpbmdDb3B5
UVN0cmluZyhhbGVydFRleHQpOwotICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPnJ1
bkphdmFTY3JpcHRBbGVydChxQWxlcnRUZXh0KTsKLX0KLQotc3RhdGljIGJvb2wgcXRfd2tfcnVu
SmF2YVNjcmlwdENvbmZpcm0oV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0ZyYW1l
UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIFFTdHJpbmcgcU1lc3NhZ2UgPSBX
S1N0cmluZ0NvcHlRU3RyaW5nKG1lc3NhZ2UpOwotICAgIHJldHVybiB0b1F0V2ViUGFnZVByb3h5
KGNsaWVudEluZm8pLT5ydW5KYXZhU2NyaXB0Q29uZmlybShxTWVzc2FnZSk7Ci19Ci0KLXN0YXRp
YyBpbmxpbmUgV0tTdHJpbmdSZWYgY3JlYXRlTnVsbFdLU3RyaW5nKCkKLXsKLSAgICBSZWZQdHI8
V2ViU3RyaW5nPiB3ZWJTdHJpbmcgPSBXZWJTdHJpbmc6OmNyZWF0ZU51bGwoKTsKLSAgICByZXR1
cm4gdG9BUEkod2ViU3RyaW5nLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwotfQotCi1zdGF0aWMgV0tT
dHJpbmdSZWYgcXRfd2tfcnVuSmF2YVNjcmlwdFByb21wdChXS1BhZ2VSZWYsIFdLU3RyaW5nUmVm
IG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRlZmF1bHRWYWx1ZSwgV0tGcmFtZVJlZiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKLXsKLSAgICBRU3RyaW5nIHFNZXNzYWdlID0gV0tTdHJpbmdDb3B5UVN0
cmluZyhtZXNzYWdlKTsKLSAgICBRU3RyaW5nIHFEZWZhdWx0VmFsdWUgPSBXS1N0cmluZ0NvcHlR
U3RyaW5nKGRlZmF1bHRWYWx1ZSk7Ci0gICAgYm9vbCBvayA9IGZhbHNlOwotICAgIFFTdHJpbmcg
cmVzdWx0ID0gdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+cnVuSmF2YVNjcmlwdFByb21w
dChxTWVzc2FnZSwgcURlZmF1bHRWYWx1ZSwgb2spOwotICAgIGlmICghb2spCi0gICAgICAgIHJl
dHVybiBjcmVhdGVOdWxsV0tTdHJpbmcoKTsKLSAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRo
UVN0cmluZyhyZXN1bHQpOwotfQotCi1zdGF0aWMgdm9pZCBxdF93a19zZXRTdGF0dXNUZXh0KFdL
UGFnZVJlZiwgV0tTdHJpbmdSZWYgdGV4dCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKLXsKLSAg
ICBRU3RyaW5nIHFUZXh0ID0gV0tTdHJpbmdDb3B5UVN0cmluZyh0ZXh0KTsKLSAgICB0b1F0V2Vi
UGFnZVByb3h5KGNsaWVudEluZm8pLT5kaWRDaGFuZ2VTdGF0dXNUZXh0KHFUZXh0KTsKLX0KLQot
c3RhdGljIHZvaWQgcXRfd2tfcnVuT3BlblBhbmVsKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzUmVmIHBhcmFtZXRlcnMsIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgVmVjdG9yPFN0
cmluZz4gd2tTZWxlY3RlZEZpbGVOYW1lcyA9IHRvSW1wbChwYXJhbWV0ZXJzKS0+c2VsZWN0ZWRG
aWxlTmFtZXMoKTsKLQotICAgIFFTdHJpbmdMaXN0IHNlbGVjdGVkRmlsZU5hbWVzOwotICAgIGlm
ICghd2tTZWxlY3RlZEZpbGVOYW1lcy5pc0VtcHR5KCkpCi0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IHdrU2VsZWN0ZWRGaWxlTmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBzZWxl
Y3RlZEZpbGVOYW1lcyArPSB3a1NlbGVjdGVkRmlsZU5hbWVzLmF0KGkpOwotCi0gICAgUXRXZWJQ
YWdlUHJveHk6OkZpbGVDaG9vc2VyVHlwZSBhbGxvd011bHRpcGxlRmlsZXMgPSBXS09wZW5QYW5l
bFBhcmFtZXRlcnNHZXRBbGxvd3NNdWx0aXBsZUZpbGVzKHBhcmFtZXRlcnMpID8gUXRXZWJQYWdl
UHJveHk6Ok11bHRpcGxlRmlsZXNTZWxlY3Rpb24gOiBRdFdlYlBhZ2VQcm94eTo6U2luZ2xlRmls
ZVNlbGVjdGlvbjsKLSAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT5jaG9vc2VGaWxl
cyhsaXN0ZW5lciwgc2VsZWN0ZWRGaWxlTmFtZXMsIGFsbG93TXVsdGlwbGVGaWxlcyk7Ci19Ci0K
LXN0YXRpYyB2b2lkIHF0X3drX21vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdLUGFnZVJlZiBwYWdl
LCBXS0hpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdCwgV0tFdmVudE1vZGlmaWVycyBtb2Rp
ZmllcnMsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAg
ICBjb25zdCBRVXJsIGFic29sdXRlTGlua1VybCA9IFdLVVJMQ29weVFVcmwoV0tIaXRUZXN0UmVz
dWx0Q29weUFic29sdXRlTGlua1VSTChoaXRUZXN0UmVzdWx0KSk7Ci0gICAgY29uc3QgUVN0cmlu
ZyBsaW5rVGl0bGUgPSBXS1N0cmluZ0NvcHlRU3RyaW5nKFdLSGl0VGVzdFJlc3VsdENvcHlMaW5r
VGl0bGUoaGl0VGVzdFJlc3VsdCkpOwotICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbykt
PmRpZE1vdXNlTW92ZU92ZXJFbGVtZW50KGFic29sdXRlTGlua1VybCwgbGlua1RpdGxlKTsKLX0K
LQogc3RhdGljIFF0OjpNb3VzZUJ1dHRvbiB0b1F0TW91c2VCdXR0b24oV0tFdmVudE1vdXNlQnV0
dG9uIGJ1dHRvbikKIHsKICAgICBzd2l0Y2ggKGJ1dHRvbikgewpAQCAtMzIxLDIxICsyNjQsNiBA
QCB2b2lkIHNldHVwUGFnZUxvYWRlckNsaWVudChRdFdlYlBhZ2VQcm94eSogcXRXZWJQYWdlUHJv
eHksIFdlYlBhZ2VQcm94eSogd2ViUGFnZQogICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQo
cXRXZWJQYWdlUHJveHktPnBhZ2VSZWYoKSwgJmxvYWRDbGllbnQpOwogfQogCi12b2lkIHNldHVw
UGFnZVVpQ2xpZW50KFF0V2ViUGFnZVByb3h5KiBxdFdlYlBhZ2VQcm94eSwgV2ViUGFnZVByb3h5
KiB3ZWJQYWdlUHJveHkpCi17Ci0gICAgV0tQYWdlVUlDbGllbnQgdWlDbGllbnQ7Ci0gICAgbWVt
c2V0KCZ1aUNsaWVudCwgMCwgc2l6ZW9mKFdLUGFnZVVJQ2xpZW50KSk7Ci0gICAgdWlDbGllbnQu
dmVyc2lvbiA9IGtXS1BhZ2VVSUNsaWVudEN1cnJlbnRWZXJzaW9uOwotICAgIHVpQ2xpZW50LmNs
aWVudEluZm8gPSBxdFdlYlBhZ2VQcm94eTsKLSAgICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0QWxl
cnQgPSBxdF93a19ydW5KYXZhU2NyaXB0QWxlcnQ7Ci0gICAgdWlDbGllbnQucnVuSmF2YVNjcmlw
dENvbmZpcm0gPSBxdF93a19ydW5KYXZhU2NyaXB0Q29uZmlybTsKLSAgICB1aUNsaWVudC5ydW5K
YXZhU2NyaXB0UHJvbXB0ID0gcXRfd2tfcnVuSmF2YVNjcmlwdFByb21wdDsKLSAgICB1aUNsaWVu
dC5zZXRTdGF0dXNUZXh0ID0gcXRfd2tfc2V0U3RhdHVzVGV4dDsKLSAgICB1aUNsaWVudC5ydW5P
cGVuUGFuZWwgPSBxdF93a19ydW5PcGVuUGFuZWw7Ci0gICAgdWlDbGllbnQubW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnQgPSBxdF93a19tb3VzZURpZE1vdmVPdmVyRWxlbWVudDsKLSAgICBXS1BhZ2VT
ZXRQYWdlVUlDbGllbnQodG9BUEkod2ViUGFnZVByb3h5KSwgJnVpQ2xpZW50KTsKLX0KLQogdm9p
ZCBzZXR1cFBhZ2VQb2xpY3lDbGllbnQoUXRQb2xpY3lJbnRlcmZhY2UqIHBvbGljeUludGVyZmFj
ZSwgV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkpCiB7CiAgICAgV0tQYWdlUG9saWN5Q2xpZW50
IHBvbGljeUNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9D
bGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oCmlu
ZGV4IDRlZjg5NzVjZGY3Njg1ZmE4M2RkODlhMzYyMjY4YTlmYjU4NTk2MmQuLjg3NTkzNWVjYzIy
ODkxZjlhOWYzOTY3NDMwN2VlMzVlZjUyMTVmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L0NsaWVudEltcGwuaApAQCAtMjksNyArMjksNiBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiB9
CiAKIHZvaWQgc2V0dXBQYWdlTG9hZGVyQ2xpZW50KFF0V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpX
ZWJQYWdlUHJveHkqKTsKLXZvaWQgc2V0dXBQYWdlVWlDbGllbnQoUXRXZWJQYWdlUHJveHkqLCBX
ZWJLaXQ6OldlYlBhZ2VQcm94eSopOwogdm9pZCBzZXR1cFBhZ2VQb2xpY3lDbGllbnQoV2ViS2l0
OjpRdFBvbGljeUludGVyZmFjZSosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiAKIHZvaWQgc2V0
dXBDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCmluZGV4IDUzN2I1YTY5NDNk
YjI4MDExMTM4ZWQ2MWY5ZjllYTRkOGJhMjc0NWUuLmY0MTNjNTA2YmJiYjE0ZjliNzk0MjY5ZjQw
Yjg3YjE2YjQ4OTM5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZVByb3h5LmNwcApAQCAtMTU3LDcgKzE1Nyw2IEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6Omlu
aXQoKQogICAgIG1fd2ViUGFnZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgpOwogCiAgICAgc2V0
dXBQYWdlTG9hZGVyQ2xpZW50KHRoaXMsIG1fd2ViUGFnZVByb3h5LmdldCgpKTsKLSAgICBzZXR1
cFBhZ2VVaUNsaWVudCh0aGlzLCBtX3dlYlBhZ2VQcm94eS5nZXQoKSk7CiAKICAgICBpZiAobV9w
b2xpY3lJbnRlcmZhY2UpCiAgICAgICAgIHNldHVwUGFnZVBvbGljeUNsaWVudChtX3BvbGljeUlu
dGVyZmFjZSwgbV93ZWJQYWdlUHJveHkuZ2V0KCkpOwpAQCAtMzU1LDIwICszNTQsNiBAQCB2b2lk
IFF0V2ViUGFnZVByb3h5OjpoYW5kbGVEb3VibGVUYXBFdmVudChjb25zdCBRVG91Y2hFdmVudDo6
VG91Y2hQb2ludCYgcG9pbnQpCiAgICAgbV93ZWJQYWdlUHJveHktPmZpbmRab29tYWJsZUFyZWFG
b3JQb2ludChwb2ludC5wb3MoKS50b1BvaW50KCkpOwogfQogCi12b2lkIFF0V2ViUGFnZVByb3h5
OjpkaWRDaGFuZ2VTdGF0dXNUZXh0KGNvbnN0IFFTdHJpbmcmIG5ld01lc3NhZ2UpCi17Ci0gICAg
ZW1pdCBtX3FtbFdlYlZpZXctPnN0YXR1c0Jhck1lc3NhZ2VDaGFuZ2VkKG5ld01lc3NhZ2UpOwot
fQotCi12b2lkIFF0V2ViUGFnZVByb3h5OjpkaWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBR
VXJsJiBsaW5rVVJMLCBjb25zdCBRU3RyaW5nJiBsaW5rVGl0bGUpCi17Ci0gICAgaWYgKGxpbmtV
UkwgPT0gbGFzdEhvdmVyZWRVUkwgJiYgbGlua1RpdGxlID09IGxhc3RIb3ZlcmVkVGl0bGUpCi0g
ICAgICAgIHJldHVybjsKLSAgICBsYXN0SG92ZXJlZFVSTCA9IGxpbmtVUkw7Ci0gICAgbGFzdEhv
dmVyZWRUaXRsZSA9IGxpbmtUaXRsZTsKLSAgICBlbWl0IG1fcW1sV2ViVmlldy0+bGlua0hvdmVy
ZWQobGFzdEhvdmVyZWRVUkwsIGxhc3RIb3ZlcmVkVGl0bGUpOwotfQotCiB2b2lkIFF0V2ViUGFn
ZVByb3h5OjpzaG93Q29udGV4dE1lbnUoUVNoYXJlZFBvaW50ZXI8UU1lbnU+IG1lbnUpCiB7CiAg
ICAgLy8gUmVtb3ZlIHRoZSBhY3RpdmUgbWVudSBpbiBjYXNlIHRoaXMgZnVuY3Rpb24gaXMgY2Fs
bGVkIHR3aWNlLgpAQCAtNDAxLDI2ICszODYsNiBAQCB2b2lkIFF0V2ViUGFnZVByb3h5OjpoaWRl
Q29udGV4dE1lbnUoKQogICAgICAgICBhY3RpdmVNZW51LT5oaWRlKCk7CiB9CiAKLXZvaWQgUXRX
ZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydChjb25zdCBRU3RyaW5nJiBhbGVydFRleHQp
Ci17Ci0gICAgbV9xbWxXZWJWaWV3LT5kX2Z1bmMoKS0+cnVuSmF2YVNjcmlwdEFsZXJ0KGFsZXJ0
VGV4dCk7Ci19Ci0KLWJvb2wgUXRXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKGNv
bnN0IFFTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgcmV0dXJuIG1fcW1sV2ViVmlldy0+ZF9mdW5j
KCktPnJ1bkphdmFTY3JpcHRDb25maXJtKG1lc3NhZ2UpOwotfQotCi1RU3RyaW5nIFF0V2ViUGFn
ZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFFTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgYm9vbCYgb2spCi17Ci0gICAgcmV0dXJuIG1fcW1sV2Vi
Vmlldy0+ZF9mdW5jKCktPnJ1bkphdmFTY3JpcHRQcm9tcHQobWVzc2FnZSwgZGVmYXVsdFZhbHVl
LCBvayk7Ci19Ci0KLXZvaWQgUXRXZWJQYWdlUHJveHk6OmNob29zZUZpbGVzKFdLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiBzZWxlY3Rl
ZEZpbGVOYW1lcywgRmlsZUNob29zZXJUeXBlIHR5cGUpCi17Ci0gICAgbV9xbWxXZWJWaWV3LT5k
X2Z1bmMoKS0+Y2hvb3NlRmlsZXMobGlzdGVuZXJSZWYsIHNlbGVjdGVkRmlsZU5hbWVzLCB0eXBl
KTsKLX0KLQogdm9pZCBRdFdlYlBhZ2VQcm94eTo6dGltZXJFdmVudChRVGltZXJFdmVudCogZXYp
CiB7CiAgICAgaW50IHRpbWVySWQgPSBldi0+dGltZXJJZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAppbmRleCA2N2NkMDU1MzE2ZjM4N2FmOWFmNjUz
MzhmYmI2YzI5NjZkNDYwODQzLi5jMTgxMmU5MzJjYzc2ZmFlM2JhMzY5NDU4MTgyNTk4ZmZiNzRj
MjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaApA
QCAtNzQsMTEgKzc0LDYgQEAgcHVibGljOgogICAgICAgICBXZWJBY3Rpb25Db3VudAogICAgIH07
CiAKLSAgICBlbnVtIEZpbGVDaG9vc2VyVHlwZSB7Ci0gICAgICAgIFNpbmdsZUZpbGVTZWxlY3Rp
b24sCi0gICAgICAgIE11bHRpcGxlRmlsZXNTZWxlY3Rpb24KLSAgICB9OwotCiAgICAgUXRXZWJQ
YWdlUHJveHkoUVF1aWNrV2ViUGFnZSosIFFRdWlja1dlYlZpZXcqLCBXZWJLaXQ6OlF0Vmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZSogPSAwLCBXZWJLaXQ6OlF0UG9saWN5SW50ZXJmYWNlKiA9IDAs
IFdLQ29udGV4dFJlZiA9IDAsIFdLUGFnZUdyb3VwUmVmID0gMCk7CiAgICAgflF0V2ViUGFnZVBy
b3h5KCk7CiAKQEAgLTIxMCwxOSArMjA1LDkgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlU2lu
Z2xlVGFwRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmKTsKICAgICB2b2lkIGhh
bmRsZURvdWJsZVRhcEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50Jik7CiAKLSAg
ICB2b2lkIGRpZENoYW5nZVN0YXR1c1RleHQoY29uc3QgUVN0cmluZyYpOwotCiAgICAgdm9pZCBz
aG93Q29udGV4dE1lbnUoUVNoYXJlZFBvaW50ZXI8UU1lbnU+KTsKICAgICB2b2lkIGhpZGVDb250
ZXh0TWVudSgpOwogCi0gICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoY29uc3QgUVN0cmluZyYp
OwotICAgIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oY29uc3QgUVN0cmluZyYpOwotICAgIFFT
dHJpbmcgcnVuSmF2YVNjcmlwdFByb21wdChjb25zdCBRU3RyaW5nJiwgY29uc3QgUVN0cmluZyYg
ZGVmYXVsdFZhbHVlLCBib29sJiBvayk7Ci0KLSAgICB2b2lkIGNob29zZUZpbGVzKFdLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiBzZWxlY3RlZEZpbGVOYW1l
cywgRmlsZUNob29zZXJUeXBlKTsKLQotICAgIHZvaWQgZGlkTW91c2VNb3ZlT3ZlckVsZW1lbnQo
Y29uc3QgUVVybCYsIGNvbnN0IFFTdHJpbmcmKTsKLQogcHVibGljIFFfU0xPVFM6CiAgICAgdm9p
ZCBuYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkKCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRG93bmxvYWRS
ZXNwb25zZShRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0pOwpAQCAtMjg1LDggKzI3MCw2
IEBAIHByaXZhdGU6CiAgICAgUUJhc2ljVGltZXIgbV90cmlwbGVDbGlja1RpbWVyOwogCiAgICAg
UVNoYXJlZFBvaW50ZXI8UU1lbnU+IGFjdGl2ZU1lbnU7Ci0gICAgUVVybCBsYXN0SG92ZXJlZFVS
TDsKLSAgICBRU3RyaW5nIGxhc3RIb3ZlcmVkVGl0bGU7CiB9OwogCiAjZW5kaWYgLyogUXRXZWJQ
YWdlUHJveHlfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZVVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VVSUNsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThlOWMwZWQzMmUwMzg5ZjEyZWFjZDc1MDgxNDBj
Njk1MjcyZDYwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VVSUNsaWVudC5jcHAKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJv
Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXRXZWJQYWdlVUlDbGllbnQuaCIK
KworI2luY2x1ZGUgIldLU3RyaW5nUXQuaCIKKyNpbmNsdWRlICJXS1VSTFF0LmgiCisjaW5jbHVk
ZSAicXF1aWNrd2Vidmlld19wLmgiCisjaW5jbHVkZSAicXF1aWNrd2Vidmlld19wX3AuaCIKKyNp
bmNsdWRlIDxXS0FQSUNhc3QuaD4KKyNpbmNsdWRlIDxXS0hpdFRlc3RSZXN1bHQuaD4KKyNpbmNs
dWRlIDxXS09wZW5QYW5lbFBhcmFtZXRlcnMuaD4KKyNpbmNsdWRlIDxXS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmg+CisKK1F0V2ViUGFnZVVJQ2xpZW50OjpRdFdlYlBhZ2VVSUNsaWVudChXS1Bh
Z2VSZWYgcGFnZVJlZiwgUVF1aWNrV2ViVmlldyogd2ViVmlldykKKyAgICA6IG1fd2ViVmlldyh3
ZWJWaWV3KQoreworICAgIFdLUGFnZVVJQ2xpZW50IHVpQ2xpZW50OworICAgIG1lbXNldCgmdWlD
bGllbnQsIDAsIHNpemVvZihXS1BhZ2VVSUNsaWVudCkpOworICAgIHVpQ2xpZW50LnZlcnNpb24g
PSBrV0tQYWdlVUlDbGllbnRDdXJyZW50VmVyc2lvbjsKKyAgICB1aUNsaWVudC5jbGllbnRJbmZv
ID0gdGhpczsKKyAgICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQgPSBydW5KYXZhU2NyaXB0
QWxlcnQ7CisgICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm0gPSBydW5KYXZhU2NyaXB0
Q29uZmlybTsKKyAgICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0ID0gcnVuSmF2YVNjcmlw
dFByb21wdDsKKyAgICB1aUNsaWVudC5zZXRTdGF0dXNUZXh0ID0gc2V0U3RhdHVzVGV4dDsKKyAg
ICB1aUNsaWVudC5ydW5PcGVuUGFuZWwgPSBydW5PcGVuUGFuZWw7CisgICAgdWlDbGllbnQubW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnQgPSBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDsKKyAgICBXS1Bh
Z2VTZXRQYWdlVUlDbGllbnQocGFnZVJlZiwgJnVpQ2xpZW50KTsKK30KKworc3RhdGljIFF0V2Vi
UGFnZVVJQ2xpZW50KiB0b1F0V2ViUGFnZVVJQ2xpZW50KGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Cit7CisgICAgQVNTRVJUKGNsaWVudEluZm8pOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PFF0V2ViUGFnZVVJQ2xpZW50Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworfQor
Cit2b2lkIFF0V2ViUGFnZVVJQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQoV0tQYWdlUmVmLCBX
S1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Cit7CisgICAgUVN0cmluZyBxQWxlcnRUZXh0ID0gV0tTdHJpbmdDb3B5UVN0cmluZyhhbGVydFRl
eHQpOworICAgIHRvUXRXZWJQYWdlVUlDbGllbnQoY2xpZW50SW5mbyktPnJ1bkphdmFTY3JpcHRB
bGVydChxQWxlcnRUZXh0KTsKK30KKworYm9vbCBRdFdlYlBhZ2VVSUNsaWVudDo6cnVuSmF2YVNj
cmlwdENvbmZpcm0oV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0ZyYW1lUmVmLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIFFTdHJpbmcgcU1lc3NhZ2UgPSBXS1N0cmlu
Z0NvcHlRU3RyaW5nKG1lc3NhZ2UpOworICAgIHJldHVybiB0b1F0V2ViUGFnZVVJQ2xpZW50KGNs
aWVudEluZm8pLT5ydW5KYXZhU2NyaXB0Q29uZmlybShxTWVzc2FnZSk7Cit9CisKK3N0YXRpYyBp
bmxpbmUgV0tTdHJpbmdSZWYgY3JlYXRlTnVsbFdLU3RyaW5nKCkKK3sKKyAgICBSZWZQdHI8V2Vi
U3RyaW5nPiB3ZWJTdHJpbmcgPSBXZWJTdHJpbmc6OmNyZWF0ZU51bGwoKTsKKyAgICByZXR1cm4g
dG9BUEkod2ViU3RyaW5nLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworfQorCitXS1N0cmluZ1JlZiBR
dFdlYlBhZ2VVSUNsaWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChXS1BhZ2VSZWYsIFdLU3RyaW5n
UmVmIG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRlZmF1bHRWYWx1ZSwgV0tGcmFtZVJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBRU3RyaW5nIHFNZXNzYWdlID0gV0tTdHJpbmdDb3B5
UVN0cmluZyhtZXNzYWdlKTsKKyAgICBRU3RyaW5nIHFEZWZhdWx0VmFsdWUgPSBXS1N0cmluZ0Nv
cHlRU3RyaW5nKGRlZmF1bHRWYWx1ZSk7CisgICAgYm9vbCBvayA9IGZhbHNlOworICAgIFFTdHJp
bmcgcmVzdWx0ID0gdG9RdFdlYlBhZ2VVSUNsaWVudChjbGllbnRJbmZvKS0+cnVuSmF2YVNjcmlw
dFByb21wdChxTWVzc2FnZSwgcURlZmF1bHRWYWx1ZSwgb2spOworICAgIGlmICghb2spCisgICAg
ICAgIHJldHVybiBjcmVhdGVOdWxsV0tTdHJpbmcoKTsKKyAgICByZXR1cm4gV0tTdHJpbmdDcmVh
dGVXaXRoUVN0cmluZyhyZXN1bHQpOworfQorCit2b2lkIFF0V2ViUGFnZVVJQ2xpZW50OjpzZXRT
dGF0dXNUZXh0KFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgdGV4dCwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbykKK3sKKyAgICBRU3RyaW5nIHFUZXh0ID0gV0tTdHJpbmdDb3B5UVN0cmluZyh0ZXh0KTsK
KyAgICB0b1F0V2ViUGFnZVVJQ2xpZW50KGNsaWVudEluZm8pLT5zZXRTdGF0dXNUZXh0KHFUZXh0
KTsKK30KKwordm9pZCBRdFdlYlBhZ2VVSUNsaWVudDo6cnVuT3BlblBhbmVsKFdLUGFnZVJlZiwg
V0tGcmFtZVJlZiwgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmIHBhcmFtZXRlcnMsIFdLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7
CisgICAgVmVjdG9yPFN0cmluZz4gd2tTZWxlY3RlZEZpbGVOYW1lcyA9IHRvSW1wbChwYXJhbWV0
ZXJzKS0+c2VsZWN0ZWRGaWxlTmFtZXMoKTsKKworICAgIFFTdHJpbmdMaXN0IHNlbGVjdGVkRmls
ZU5hbWVzOworICAgIGlmICghd2tTZWxlY3RlZEZpbGVOYW1lcy5pc0VtcHR5KCkpCisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IHdrU2VsZWN0ZWRGaWxlTmFtZXMuc2l6ZSgpOyArK2kpCisg
ICAgICAgICAgICBzZWxlY3RlZEZpbGVOYW1lcyArPSB3a1NlbGVjdGVkRmlsZU5hbWVzLmF0KGkp
OworCisgICAgRmlsZUNob29zZXJUeXBlIGFsbG93TXVsdGlwbGVGaWxlcyA9IFdLT3BlblBhbmVs
UGFyYW1ldGVyc0dldEFsbG93c011bHRpcGxlRmlsZXMocGFyYW1ldGVycykgPyBNdWx0aXBsZUZp
bGVzU2VsZWN0aW9uIDogU2luZ2xlRmlsZVNlbGVjdGlvbjsKKyAgICB0b1F0V2ViUGFnZVVJQ2xp
ZW50KGNsaWVudEluZm8pLT5ydW5PcGVuUGFuZWwobGlzdGVuZXIsIHNlbGVjdGVkRmlsZU5hbWVz
LCBhbGxvd011bHRpcGxlRmlsZXMpOworfQorCit2b2lkIFF0V2ViUGFnZVVJQ2xpZW50Ojptb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudChXS1BhZ2VSZWYgcGFnZSwgV0tIaXRUZXN0UmVzdWx0UmVmIGhp
dFRlc3RSZXN1bHQsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXS1R5cGVSZWYgdXNlckRh
dGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgY29uc3QgUVVybCBhYnNvbHV0ZUxp
bmtVcmwgPSBXS1VSTENvcHlRVXJsKFdLSGl0VGVzdFJlc3VsdENvcHlBYnNvbHV0ZUxpbmtVUkwo
aGl0VGVzdFJlc3VsdCkpOworICAgIGNvbnN0IFFTdHJpbmcgbGlua1RpdGxlID0gV0tTdHJpbmdD
b3B5UVN0cmluZyhXS0hpdFRlc3RSZXN1bHRDb3B5TGlua1RpdGxlKGhpdFRlc3RSZXN1bHQpKTsK
KyAgICB0b1F0V2ViUGFnZVVJQ2xpZW50KGNsaWVudEluZm8pLT5tb3VzZURpZE1vdmVPdmVyRWxl
bWVudChhYnNvbHV0ZUxpbmtVcmwsIGxpbmtUaXRsZSk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlVUlD
bGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydChjb25zdCBRU3RyaW5nJiBhbGVydFRleHQpCit7Cisg
ICAgbV93ZWJWaWV3LT5kX2Z1bmMoKS0+cnVuSmF2YVNjcmlwdEFsZXJ0KGFsZXJ0VGV4dCk7Cit9
CisKK2Jvb2wgUXRXZWJQYWdlVUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRDb25maXJtKGNvbnN0IFFT
dHJpbmcmIG1lc3NhZ2UpCit7CisgICAgcmV0dXJuIG1fd2ViVmlldy0+ZF9mdW5jKCktPnJ1bkph
dmFTY3JpcHRDb25maXJtKG1lc3NhZ2UpOworfQorCitRU3RyaW5nIFF0V2ViUGFnZVVJQ2xpZW50
OjpydW5KYXZhU2NyaXB0UHJvbXB0KGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFFTdHJp
bmcmIGRlZmF1bHRWYWx1ZSwgYm9vbCYgb2spCit7CisgICAgcmV0dXJuIG1fd2ViVmlldy0+ZF9m
dW5jKCktPnJ1bkphdmFTY3JpcHRQcm9tcHQobWVzc2FnZSwgZGVmYXVsdFZhbHVlLCBvayk7Cit9
CisKK3ZvaWQgUXRXZWJQYWdlVUlDbGllbnQ6OnJ1bk9wZW5QYW5lbChXS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRGaWxl
TmFtZXMsIEZpbGVDaG9vc2VyVHlwZSB0eXBlKQoreworICAgIG1fd2ViVmlldy0+ZF9mdW5jKCkt
PmNob29zZUZpbGVzKGxpc3RlbmVyUmVmLCBzZWxlY3RlZEZpbGVOYW1lcywgdHlwZSk7Cit9CisK
K3ZvaWQgUXRXZWJQYWdlVUlDbGllbnQ6OnNldFN0YXR1c1RleHQoY29uc3QgUVN0cmluZyYgbmV3
TWVzc2FnZSkKK3sKKyAgICBlbWl0IG1fd2ViVmlldy0+c3RhdHVzQmFyTWVzc2FnZUNoYW5nZWQo
bmV3TWVzc2FnZSk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlVUlDbGllbnQ6Om1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50KGNvbnN0IFFVcmwmIGxpbmtVUkwsIGNvbnN0IFFTdHJpbmcmIGxpbmtUaXRsZSkK
K3sKKyAgICBpZiAobGlua1VSTCA9PSBtX2xhc3RIb3ZlcmVkVVJMICYmIGxpbmtUaXRsZSA9PSBt
X2xhc3RIb3ZlcmVkVGl0bGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX2xhc3RIb3ZlcmVkVVJM
ID0gbGlua1VSTDsKKyAgICBtX2xhc3RIb3ZlcmVkVGl0bGUgPSBsaW5rVGl0bGU7CisgICAgZW1p
dCBtX3dlYlZpZXctPmxpbmtIb3ZlcmVkKG1fbGFzdEhvdmVyZWRVUkwsIG1fbGFzdEhvdmVyZWRU
aXRsZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNs
aWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg2NjkwNjE2ZmM2NDk4ZGFlMjFjMDVlZmFmN2NmMDFhYzIzMzhj
M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlVUlDbGllbnQuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dy
YW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRl
ZiBRdFdlYlBhZ2VVSUNsaWVudF9oCisjZGVmaW5lIFF0V2ViUGFnZVVJQ2xpZW50X2gKKworI2lu
Y2x1ZGUgPFF0Q29yZS9RU3RyaW5nPgorI2luY2x1ZGUgPFF0Q29yZS9RVXJsPgorI2luY2x1ZGUg
PFdLUGFnZS5oPgorCitjbGFzcyBRUXVpY2tXZWJWaWV3OworCitjbGFzcyBRdFdlYlBhZ2VVSUNs
aWVudCB7CitwdWJsaWM6CisgICAgZW51bSBGaWxlQ2hvb3NlclR5cGUgeworICAgICAgICBTaW5n
bGVGaWxlU2VsZWN0aW9uLAorICAgICAgICBNdWx0aXBsZUZpbGVzU2VsZWN0aW9uCisgICAgfTsK
KworICAgIFF0V2ViUGFnZVVJQ2xpZW50KFdLUGFnZVJlZiwgUVF1aWNrV2ViVmlldyopOworCisg
ICAgLy8gV0tQYWdlVUlDbGllbnQgY2FsbGJhY2tzLgorICAgIHN0YXRpYyB2b2lkIHJ1bkphdmFT
Y3JpcHRBbGVydChXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIGFsZXJ0VGV4dCwgV0tGcmFtZVJlZiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIGJvb2wgcnVuSmF2YVNjcmlwdENv
bmZpcm0oV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0ZyYW1lUmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgV0tTdHJpbmdSZWYgcnVuSmF2YVNjcmlwdFBy
b21wdChXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRlZmF1bHRW
YWx1ZSwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZv
aWQgc2V0U3RhdHVzVGV4dChXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIHRleHQsIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIHJ1bk9wZW5QYW5lbChXS1BhZ2VSZWYsIFdL
RnJhbWVSZWYsIFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiwgV0tPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgbW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQoV0tQYWdlUmVmLCBXS0hpdFRlc3RSZXN1bHRSZWYsIFdLRXZlbnRN
b2RpZmllcnMsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisK
KyAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChjb25zdCBRU3RyaW5nJiBhbGVydFRleHQpOwor
ICAgIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oY29uc3QgUVN0cmluZyYgbWVzc2FnZSk7Cisg
ICAgUVN0cmluZyBydW5KYXZhU2NyaXB0UHJvbXB0KGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFFTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgYm9vbCYgb2spOworICAgIHZvaWQgc2V0U3RhdHVz
VGV4dChjb25zdCBRU3RyaW5nJik7CisgICAgdm9pZCBydW5PcGVuUGFuZWwoV0tPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclJlZiwgY29uc3QgUVN0cmluZ0xpc3QmIHNlbGVjdGVkRmlsZU5hbWVzLCBG
aWxlQ2hvb3NlclR5cGUpOworICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3Qg
UVVybCYgbGlua1VSTCwgY29uc3QgUVN0cmluZyYgbGlua1RpdGxlKTsKKworcHJpdmF0ZToKKyAg
ICBRUXVpY2tXZWJWaWV3KiBtX3dlYlZpZXc7CisgICAgUVVybCBtX2xhc3RIb3ZlcmVkVVJMOwor
ICAgIFFTdHJpbmcgbV9sYXN0SG92ZXJlZFRpdGxlOworfTsKKworI2VuZGlmIC8vIFF0V2ViUGFn
ZVVJQ2xpZW50X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116175</attachid>
            <date>2011-11-21 20:59:55 -0800</date>
            <delta_ts>2011-11-21 23:28:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72910-20111122015952.patch</filename>
            <type>text/plain</type>
            <size>23717</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGU5OGFhN2ZiMDMyYzM0
MWQ2NzU0MzRiMmY2NjIyZjc4ZjY2M2VkMi4uM2NmYzJjNDMwYzk5NDE5YzY0ZDFkNDZjZDBkZGJk
ZmJiYjkxMjA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDExLTExLTIxICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XSBbV0syXSBNb3ZlIFBhZ2VVSUNsaWVudCByZWxhdGVkIGNvZGUgdG8g
UXRXZWJQYWdlVUlDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcyOTEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3BsaXQgUGFnZVVJQ2xpZW50IHJlbGF0ZWQgY29kZSBmcm9tIFF0V2ViUGFnZVBy
b3h5L0NsaWVudEltcGwuIFRoZSBuZXcKKyAgICAgICAgUXRXZWJQYWdlVUlDbGllbnQgcmVnaXN0
ZXJzIGl0c2VsZiB3aXRoIFdLUGFnZVJlZiBhbmQgaXQncyBvd25lZCBieSB0aGUKKyAgICAgICAg
UVF1aWNrV2ViVmlld1ByaXZhdGUuIFRoaXMgaXMgYSBtb3ZlIHRvIGNsZWFuIHVwIFF0V2ViUGFn
ZVByb3h5IG9iamVjdC4KKworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2
YXRlOjpRUXVpY2tXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6Y2hvb3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
d19wLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvcXQvQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6aW5pdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVVJQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChRdFdlYlBhZ2VVSUNsaWVudDo6UXRXZWJQ
YWdlVUlDbGllbnQpOgorICAgICAgICAoUXRXZWJQYWdlVUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRB
bGVydCk6CisgICAgICAgIChRdFdlYlBhZ2VVSUNsaWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0p
OgorICAgICAgICAoUXRXZWJQYWdlVUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAg
ICAgICAoUXRXZWJQYWdlVUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgIChRdFdlYlBh
Z2VVSUNsaWVudDo6c2V0U3RhdHVzVGV4dCk6CisgICAgICAgIChRdFdlYlBhZ2VVSUNsaWVudDo6
bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAodG9RdFdlYlBhZ2VVSUNsaWVudCk6
CisgICAgICAgIChjcmVhdGVOdWxsV0tTdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VVSUNsaWVudC5oOiBBZGRlZC4KKwogMjAxMS0xMS0yMSAgQWxleGlzIE1lbmFyZCAg
PGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBbUXRdW1dLMl0gUkVHUkVT
U0lPTigxMDA0ODMpOiBJdCBtYWRlIDIgQVBJIHRlc3RzIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDAw
YjhkMGI4Y2IxM2U2YzFhNzM0MjM3MjI2ZGQwY2QyZjIxZGM0Y2UuLjkzNWQ5YzU3Y2VmNWZiNjYy
MDZkYTU2ZWZjNDU5Nzc0ZjZiZThmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Rhcmdl
dC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMzIzLDYgKzMyMyw3IEBA
IEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1bm5lci5oIFwKICAgICBV
SVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZVByb3h5LmggXAorICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5oIFwKICAg
ICBVSVByb2Nlc3MvcXQvcXdraGlzdG9yeS5oIFwKICAgICBVSVByb2Nlc3MvcXQvcXdraGlzdG9y
eV9wLmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFNHVXBkYXRlUXVldWUuaCBcCkBAIC02MjgsNiAr
NjI5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVyLmNw
cCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcCBcCiAgICAgVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcCBcCisgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJ
Q2xpZW50LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuY3BwIFwKICAgICBVSVBy
b2Nlc3MvcXQvUXRTR1VwZGF0ZVF1ZXVlLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0U0dUaWxl
Tm9kZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlldy5jcHAKaW5kZXggZjE0NmMyYjU5NTY3NWE4OGNlOTQ2NjU3NGZlMTc4NDY0YmVhMjhi
Zi4uYTZmNGZiN2RiZGFhN2E3MDdjMTVhZDllYjllMGY1NTU2NDFlZWI2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC01OCw2
ICs1OCw4IEBAIFFRdWlja1dlYlZpZXdQcml2YXRlOjpRUXVpY2tXZWJWaWV3UHJpdmF0ZShRUXVp
Y2tXZWJWaWV3KiB2aWV3cG9ydCwgV0tDb250ZXh0UmVmCiAgICAgcGFnZVByb3h5LT5pbml0KCk7
CiAKICAgICBRT2JqZWN0Ojpjb25uZWN0KHBhZ2VQcm94eS5kYXRhKCksIFNJR05BTCh1cGRhdGVO
YXZpZ2F0aW9uU3RhdGUoKSksIHFfcHRyLCBTSUdOQUwobmF2aWdhdGlvblN0YXRlQ2hhbmdlZCgp
KSk7CisKKyAgICBwYWdlVUlDbGllbnQucmVzZXQobmV3IFF0V2ViUGFnZVVJQ2xpZW50KHBhZ2VQ
cm94eS0+cGFnZVJlZigpLCBxX3B0cikpOwogfQogCiB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRl
OjplbmFibGVNb3VzZUV2ZW50cygpCkBAIC0yNzQsNyArMjc2LDcgQEAgUVN0cmluZyBRUXVpY2tX
ZWJWaWV3UHJpdmF0ZTo6cnVuSmF2YVNjcmlwdFByb21wdChjb25zdCBRU3RyaW5nJiBtZXNzYWdl
LCBjb25zdAogICAgIHJldHVybiBkaWFsb2dSdW5uZXIucmVzdWx0KCk7CiB9CiAKLXZvaWQgUVF1
aWNrV2ViVmlld1ByaXZhdGU6OmNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJS
ZWYgbGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiBzZWxlY3RlZEZpbGVOYW1lcywgUXRX
ZWJQYWdlUHJveHk6OkZpbGVDaG9vc2VyVHlwZSB0eXBlKQordm9pZCBRUXVpY2tXZWJWaWV3UHJp
dmF0ZTo6Y2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lclJl
ZiwgY29uc3QgUVN0cmluZ0xpc3QmIHNlbGVjdGVkRmlsZU5hbWVzLCBRdFdlYlBhZ2VVSUNsaWVu
dDo6RmlsZUNob29zZXJUeXBlIHR5cGUpCiB7CiAjaWZuZGVmIFFUX05PX0ZJTEVESUFMT0cKICAg
ICBRX1EoUVF1aWNrV2ViVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAppbmRleCA1YzhmMjM2MzkwOGRjMzlmMzAxZGVmZGJhOWIw
ZTE2M2IxNDk4ZjYzLi43Yzg4NDFhODQzOTYwZTZhMDgyOTUwMTRlMTAxYjhjNmU2OGY5ZGIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdf
cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19w
LmgKQEAgLTEzNSw2ICsxMzUsNyBAQCBwcml2YXRlOgogICAgIFFRdWlja1dlYlZpZXdFeHBlcmlt
ZW50YWwqIG1fZXhwZXJpbWVudGFsOwogCiAgICAgZnJpZW5kIGNsYXNzIFF0V2ViUGFnZVByb3h5
OworICAgIGZyaWVuZCBjbGFzcyBRdFdlYlBhZ2VVSUNsaWVudDsKICAgICBmcmllbmQgY2xhc3Mg
V1RSOjpQbGF0Zm9ybVdlYlZpZXc7CiAgICAgZnJpZW5kIGNsYXNzIFFRdWlja1dlYlZpZXdFeHBl
cmltZW50YWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3X3BfcC5oCmluZGV4IDNhZTI1NjE5ZDU0MDg5NGViOThlMmU4YjMxYzAxMWVk
Zjk4YWJhM2IuLmE4NmI2MGVlMDk5MzJlYzg5ZjA5MGYwNDEwMDFiYmVhYzFlZjVhMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3Au
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9w
LmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJRdFBvbGljeUludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oIgogI2luY2x1ZGUgIlF0V2ViUGFn
ZVByb3h5LmgiCisjaW5jbHVkZSAiUXRXZWJQYWdlVUlDbGllbnQuaCIKIAogI2luY2x1ZGUgInFx
dWlja3dlYnZpZXdfcC5oIgogI2luY2x1ZGUgInFxdWlja3dlYnBhZ2VfcC5oIgpAQCAtMzMsNiAr
MzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogY2xhc3MgUXRXZWJQYWdlUHJveHk7
CitjbGFzcyBRdFdlYlBhZ2VVSUNsaWVudDsKIAogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBR
RGVjbGFyYXRpdmVDb21wb25lbnQ7CkBAIC03Miw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICAvLyBR
dFBvbGljeUludGVyZmFjZS4KICAgICB2aXJ0dWFsIFF0UG9saWN5SW50ZXJmYWNlOjpQb2xpY3lB
Y3Rpb24gbmF2aWdhdGlvblBvbGljeUZvclVSTChjb25zdCBRVXJsJiwgUXQ6Ok1vdXNlQnV0dG9u
LCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMpOwogCi0gICAgdm9pZCBjaG9vc2VGaWxlcyhXS09wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRGaWxlTmFt
ZXMsIFF0V2ViUGFnZVByb3h5OjpGaWxlQ2hvb3NlclR5cGUpOworICAgIHZvaWQgY2hvb3NlRmls
ZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiwgY29uc3QgUVN0cmluZ0xpc3QmIHNlbGVj
dGVkRmlsZU5hbWVzLCBRdFdlYlBhZ2VVSUNsaWVudDo6RmlsZUNob29zZXJUeXBlKTsKICAgICB2
b2lkIHJ1bkphdmFTY3JpcHRBbGVydChjb25zdCBRU3RyaW5nJik7CiAgICAgYm9vbCBydW5KYXZh
U2NyaXB0Q29uZmlybShjb25zdCBRU3RyaW5nJik7CiAgICAgUVN0cmluZyBydW5KYXZhU2NyaXB0
UHJvbXB0KGNvbnN0IFFTdHJpbmcmLCBjb25zdCBRU3RyaW5nJiBkZWZhdWx0VmFsdWUsIGJvb2wm
IG9rKTsKQEAgLTExMCw2ICsxMTIsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRWaWV3SW5B
dHRhY2hlZFByb3BlcnRpZXMoUU9iamVjdCopOwogCisgICAgUVNjb3BlZFBvaW50ZXI8UXRXZWJQ
YWdlVUlDbGllbnQ+IHBhZ2VVSUNsaWVudDsKKwogICAgIFFTY29wZWRQb2ludGVyPFFRdWlja1dl
YlBhZ2U+IHBhZ2VWaWV3OwogICAgIFFTY29wZWRQb2ludGVyPFF0Vmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZT4gaW50ZXJhY3Rpb25FbmdpbmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9DbGllbnRJbXBsLmNwcAppbmRleCAxMDRkMzQyYmQxNWRhMzJiOTVjYTA4ZjM2M2E2NWZlMmUy
ZDQxZTA4Li4wODYzZWM3NmNjMjYxOTZlNWQ0MzJkNDUzYmRjNjE3YWY3MmUwODJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCkBAIC0zMSw4ICszMSw2IEBA
CiAjaW5jbHVkZSA8V0tGcmFtZS5oPgogI2luY2x1ZGUgPFdLRnJhbWVQb2xpY3lMaXN0ZW5lci5o
PgogI2luY2x1ZGUgPFdLSGl0VGVzdFJlc3VsdC5oPgotI2luY2x1ZGUgPFdLT3BlblBhbmVsUGFy
YW1ldGVycy5oPgotI2luY2x1ZGUgPFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaD4KICNpbmNs
dWRlIDxXS1BhZ2UuaD4KICNpbmNsdWRlIDxXS1N0cmluZy5oPgogI2luY2x1ZGUgPFdLVHlwZS5o
PgpAQCAtMTUyLDYxICsxNTAsNiBAQCBzdGF0aWMgdm9pZCBxdF93a19kaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZQogICAgIHRvUXRX
ZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPmRpZEZpbmlzaEZpcnN0Tm9uRW1wdHlMYXlvdXQoKTsK
IH0KIAotc3RhdGljIHZvaWQgcXRfd2tfcnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZiBwYWdl
LCBXS1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCi17Ci0gICAgUVN0cmluZyBxQWxlcnRUZXh0ID0gV0tTdHJpbmdDb3B5UVN0cmlu
ZyhhbGVydFRleHQpOwotICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPnJ1bkphdmFT
Y3JpcHRBbGVydChxQWxlcnRUZXh0KTsKLX0KLQotc3RhdGljIGJvb2wgcXRfd2tfcnVuSmF2YVNj
cmlwdENvbmZpcm0oV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0ZyYW1lUmVmLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIFFTdHJpbmcgcU1lc3NhZ2UgPSBXS1N0cmlu
Z0NvcHlRU3RyaW5nKG1lc3NhZ2UpOwotICAgIHJldHVybiB0b1F0V2ViUGFnZVByb3h5KGNsaWVu
dEluZm8pLT5ydW5KYXZhU2NyaXB0Q29uZmlybShxTWVzc2FnZSk7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgV0tTdHJpbmdSZWYgY3JlYXRlTnVsbFdLU3RyaW5nKCkKLXsKLSAgICBSZWZQdHI8V2ViU3Ry
aW5nPiB3ZWJTdHJpbmcgPSBXZWJTdHJpbmc6OmNyZWF0ZU51bGwoKTsKLSAgICByZXR1cm4gdG9B
UEkod2ViU3RyaW5nLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwotfQotCi1zdGF0aWMgV0tTdHJpbmdS
ZWYgcXRfd2tfcnVuSmF2YVNjcmlwdFByb21wdChXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3Nh
Z2UsIFdLU3RyaW5nUmVmIGRlZmF1bHRWYWx1ZSwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKLXsKLSAgICBRU3RyaW5nIHFNZXNzYWdlID0gV0tTdHJpbmdDb3B5UVN0cmluZyht
ZXNzYWdlKTsKLSAgICBRU3RyaW5nIHFEZWZhdWx0VmFsdWUgPSBXS1N0cmluZ0NvcHlRU3RyaW5n
KGRlZmF1bHRWYWx1ZSk7Ci0gICAgYm9vbCBvayA9IGZhbHNlOwotICAgIFFTdHJpbmcgcmVzdWx0
ID0gdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+cnVuSmF2YVNjcmlwdFByb21wdChxTWVz
c2FnZSwgcURlZmF1bHRWYWx1ZSwgb2spOwotICAgIGlmICghb2spCi0gICAgICAgIHJldHVybiBj
cmVhdGVOdWxsV0tTdHJpbmcoKTsKLSAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoUVN0cmlu
ZyhyZXN1bHQpOwotfQotCi1zdGF0aWMgdm9pZCBxdF93a19zZXRTdGF0dXNUZXh0KFdLUGFnZVJl
ZiwgV0tTdHJpbmdSZWYgdGV4dCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKLXsKLSAgICBRU3Ry
aW5nIHFUZXh0ID0gV0tTdHJpbmdDb3B5UVN0cmluZyh0ZXh0KTsKLSAgICB0b1F0V2ViUGFnZVBy
b3h5KGNsaWVudEluZm8pLT5kaWRDaGFuZ2VTdGF0dXNUZXh0KHFUZXh0KTsKLX0KLQotc3RhdGlj
IHZvaWQgcXRfd2tfcnVuT3BlblBhbmVsKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tPcGVuUGFu
ZWxQYXJhbWV0ZXJzUmVmIHBhcmFtZXRlcnMsIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYg
bGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgVmVjdG9yPFN0cmluZz4g
d2tTZWxlY3RlZEZpbGVOYW1lcyA9IHRvSW1wbChwYXJhbWV0ZXJzKS0+c2VsZWN0ZWRGaWxlTmFt
ZXMoKTsKLQotICAgIFFTdHJpbmdMaXN0IHNlbGVjdGVkRmlsZU5hbWVzOwotICAgIGlmICghd2tT
ZWxlY3RlZEZpbGVOYW1lcy5pc0VtcHR5KCkpCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IHdrU2VsZWN0ZWRGaWxlTmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBzZWxlY3RlZEZp
bGVOYW1lcyArPSB3a1NlbGVjdGVkRmlsZU5hbWVzLmF0KGkpOwotCi0gICAgUXRXZWJQYWdlUHJv
eHk6OkZpbGVDaG9vc2VyVHlwZSBhbGxvd011bHRpcGxlRmlsZXMgPSBXS09wZW5QYW5lbFBhcmFt
ZXRlcnNHZXRBbGxvd3NNdWx0aXBsZUZpbGVzKHBhcmFtZXRlcnMpID8gUXRXZWJQYWdlUHJveHk6
Ok11bHRpcGxlRmlsZXNTZWxlY3Rpb24gOiBRdFdlYlBhZ2VQcm94eTo6U2luZ2xlRmlsZVNlbGVj
dGlvbjsKLSAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT5jaG9vc2VGaWxlcyhsaXN0
ZW5lciwgc2VsZWN0ZWRGaWxlTmFtZXMsIGFsbG93TXVsdGlwbGVGaWxlcyk7Ci19Ci0KLXN0YXRp
YyB2b2lkIHF0X3drX21vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdLUGFnZVJlZiBwYWdlLCBXS0hp
dFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdCwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMs
IFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBjb25z
dCBRVXJsIGFic29sdXRlTGlua1VybCA9IFdLVVJMQ29weVFVcmwoV0tIaXRUZXN0UmVzdWx0Q29w
eUFic29sdXRlTGlua1VSTChoaXRUZXN0UmVzdWx0KSk7Ci0gICAgY29uc3QgUVN0cmluZyBsaW5r
VGl0bGUgPSBXS1N0cmluZ0NvcHlRU3RyaW5nKFdLSGl0VGVzdFJlc3VsdENvcHlMaW5rVGl0bGUo
aGl0VGVzdFJlc3VsdCkpOwotICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPmRpZE1v
dXNlTW92ZU92ZXJFbGVtZW50KGFic29sdXRlTGlua1VybCwgbGlua1RpdGxlKTsKLX0KLQogc3Rh
dGljIFF0OjpNb3VzZUJ1dHRvbiB0b1F0TW91c2VCdXR0b24oV0tFdmVudE1vdXNlQnV0dG9uIGJ1
dHRvbikKIHsKICAgICBzd2l0Y2ggKGJ1dHRvbikgewpAQCAtMzIxLDIxICsyNjQsNiBAQCB2b2lk
IHNldHVwUGFnZUxvYWRlckNsaWVudChRdFdlYlBhZ2VQcm94eSogcXRXZWJQYWdlUHJveHksIFdl
YlBhZ2VQcm94eSogd2ViUGFnZQogICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQocXRXZWJQ
YWdlUHJveHktPnBhZ2VSZWYoKSwgJmxvYWRDbGllbnQpOwogfQogCi12b2lkIHNldHVwUGFnZVVp
Q2xpZW50KFF0V2ViUGFnZVByb3h5KiBxdFdlYlBhZ2VQcm94eSwgV2ViUGFnZVByb3h5KiB3ZWJQ
YWdlUHJveHkpCi17Ci0gICAgV0tQYWdlVUlDbGllbnQgdWlDbGllbnQ7Ci0gICAgbWVtc2V0KCZ1
aUNsaWVudCwgMCwgc2l6ZW9mKFdLUGFnZVVJQ2xpZW50KSk7Ci0gICAgdWlDbGllbnQudmVyc2lv
biA9IGtXS1BhZ2VVSUNsaWVudEN1cnJlbnRWZXJzaW9uOwotICAgIHVpQ2xpZW50LmNsaWVudElu
Zm8gPSBxdFdlYlBhZ2VQcm94eTsKLSAgICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQgPSBx
dF93a19ydW5KYXZhU2NyaXB0QWxlcnQ7Ci0gICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdENvbmZp
cm0gPSBxdF93a19ydW5KYXZhU2NyaXB0Q29uZmlybTsKLSAgICB1aUNsaWVudC5ydW5KYXZhU2Ny
aXB0UHJvbXB0ID0gcXRfd2tfcnVuSmF2YVNjcmlwdFByb21wdDsKLSAgICB1aUNsaWVudC5zZXRT
dGF0dXNUZXh0ID0gcXRfd2tfc2V0U3RhdHVzVGV4dDsKLSAgICB1aUNsaWVudC5ydW5PcGVuUGFu
ZWwgPSBxdF93a19ydW5PcGVuUGFuZWw7Ci0gICAgdWlDbGllbnQubW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnQgPSBxdF93a19tb3VzZURpZE1vdmVPdmVyRWxlbWVudDsKLSAgICBXS1BhZ2VTZXRQYWdl
VUlDbGllbnQodG9BUEkod2ViUGFnZVByb3h5KSwgJnVpQ2xpZW50KTsKLX0KLQogdm9pZCBzZXR1
cFBhZ2VQb2xpY3lDbGllbnQoUXRQb2xpY3lJbnRlcmZhY2UqIHBvbGljeUludGVyZmFjZSwgV2Vi
UGFnZVByb3h5KiB3ZWJQYWdlUHJveHkpCiB7CiAgICAgV0tQYWdlUG9saWN5Q2xpZW50IHBvbGlj
eUNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oCmluZGV4IDRl
Zjg5NzVjZGY3Njg1ZmE4M2RkODlhMzYyMjY4YTlmYjU4NTk2MmQuLjg3NTkzNWVjYzIyODkxZjlh
OWYzOTY3NDMwN2VlMzVlZjUyMTVmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9DbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0Ns
aWVudEltcGwuaApAQCAtMjksNyArMjksNiBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiB9CiAKIHZv
aWQgc2V0dXBQYWdlTG9hZGVyQ2xpZW50KFF0V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJQYWdl
UHJveHkqKTsKLXZvaWQgc2V0dXBQYWdlVWlDbGllbnQoUXRXZWJQYWdlUHJveHkqLCBXZWJLaXQ6
OldlYlBhZ2VQcm94eSopOwogdm9pZCBzZXR1cFBhZ2VQb2xpY3lDbGllbnQoV2ViS2l0OjpRdFBv
bGljeUludGVyZmFjZSosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CiAKIHZvaWQgc2V0dXBDb250
ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCmluZGV4IDYzZGU0ZTJlNmNkMGQ0MmI0
NzVhZDcwZmZhZTZiMzFjZGQxMTdiNzkuLmY4ZDliYzZmN2U4NzRhM2JmZjUyNDk0MjlmNGYxMjNh
ZGM0MDU4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBy
b3h5LmNwcApAQCAtMTU3LDcgKzE1Nyw2IEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6OmluaXQoKQog
ICAgIG1fd2ViUGFnZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgpOwogCiAgICAgc2V0dXBQYWdl
TG9hZGVyQ2xpZW50KHRoaXMsIG1fd2ViUGFnZVByb3h5LmdldCgpKTsKLSAgICBzZXR1cFBhZ2VV
aUNsaWVudCh0aGlzLCBtX3dlYlBhZ2VQcm94eS5nZXQoKSk7CiAKICAgICBpZiAobV9wb2xpY3lJ
bnRlcmZhY2UpCiAgICAgICAgIHNldHVwUGFnZVBvbGljeUNsaWVudChtX3BvbGljeUludGVyZmFj
ZSwgbV93ZWJQYWdlUHJveHkuZ2V0KCkpOwpAQCAtMzU1LDIwICszNTQsNiBAQCB2b2lkIFF0V2Vi
UGFnZVByb3h5OjpoYW5kbGVEb3VibGVUYXBFdmVudChjb25zdCBRVG91Y2hFdmVudDo6VG91Y2hQ
b2ludCYgcG9pbnQpCiAgICAgbV93ZWJQYWdlUHJveHktPmZpbmRab29tYWJsZUFyZWFGb3JQb2lu
dChwb2ludC5wb3MoKS50b1BvaW50KCkpOwogfQogCi12b2lkIFF0V2ViUGFnZVByb3h5OjpkaWRD
aGFuZ2VTdGF0dXNUZXh0KGNvbnN0IFFTdHJpbmcmIG5ld01lc3NhZ2UpCi17Ci0gICAgZW1pdCBt
X3FtbFdlYlZpZXctPnN0YXR1c0Jhck1lc3NhZ2VDaGFuZ2VkKG5ld01lc3NhZ2UpOwotfQotCi12
b2lkIFF0V2ViUGFnZVByb3h5OjpkaWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBRVXJsJiBs
aW5rVVJMLCBjb25zdCBRU3RyaW5nJiBsaW5rVGl0bGUpCi17Ci0gICAgaWYgKGxpbmtVUkwgPT0g
bGFzdEhvdmVyZWRVUkwgJiYgbGlua1RpdGxlID09IGxhc3RIb3ZlcmVkVGl0bGUpCi0gICAgICAg
IHJldHVybjsKLSAgICBsYXN0SG92ZXJlZFVSTCA9IGxpbmtVUkw7Ci0gICAgbGFzdEhvdmVyZWRU
aXRsZSA9IGxpbmtUaXRsZTsKLSAgICBlbWl0IG1fcW1sV2ViVmlldy0+bGlua0hvdmVyZWQobGFz
dEhvdmVyZWRVUkwsIGxhc3RIb3ZlcmVkVGl0bGUpOwotfQotCiB2b2lkIFF0V2ViUGFnZVByb3h5
OjpzaG93Q29udGV4dE1lbnUoUVNoYXJlZFBvaW50ZXI8UU1lbnU+IG1lbnUpCiB7CiAgICAgLy8g
UmVtb3ZlIHRoZSBhY3RpdmUgbWVudSBpbiBjYXNlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHR3
aWNlLgpAQCAtNDAxLDI2ICszODYsNiBAQCB2b2lkIFF0V2ViUGFnZVByb3h5OjpoaWRlQ29udGV4
dE1lbnUoKQogICAgICAgICBhY3RpdmVNZW51LT5oaWRlKCk7CiB9CiAKLXZvaWQgUXRXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydChjb25zdCBRU3RyaW5nJiBhbGVydFRleHQpCi17Ci0g
ICAgbV9xbWxXZWJWaWV3LT5kX2Z1bmMoKS0+cnVuSmF2YVNjcmlwdEFsZXJ0KGFsZXJ0VGV4dCk7
Ci19Ci0KLWJvb2wgUXRXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKGNvbnN0IFFT
dHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgcmV0dXJuIG1fcW1sV2ViVmlldy0+ZF9mdW5jKCktPnJ1
bkphdmFTY3JpcHRDb25maXJtKG1lc3NhZ2UpOwotfQotCi1RU3RyaW5nIFF0V2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0UHJvbXB0KGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFFTdHJp
bmcmIGRlZmF1bHRWYWx1ZSwgYm9vbCYgb2spCi17Ci0gICAgcmV0dXJuIG1fcW1sV2ViVmlldy0+
ZF9mdW5jKCktPnJ1bkphdmFTY3JpcHRQcm9tcHQobWVzc2FnZSwgZGVmYXVsdFZhbHVlLCBvayk7
Ci19Ci0KLXZvaWQgUXRXZWJQYWdlUHJveHk6OmNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiBzZWxlY3RlZEZpbGVO
YW1lcywgRmlsZUNob29zZXJUeXBlIHR5cGUpCi17Ci0gICAgbV9xbWxXZWJWaWV3LT5kX2Z1bmMo
KS0+Y2hvb3NlRmlsZXMobGlzdGVuZXJSZWYsIHNlbGVjdGVkRmlsZU5hbWVzLCB0eXBlKTsKLX0K
LQogdm9pZCBRdFdlYlBhZ2VQcm94eTo6dGltZXJFdmVudChRVGltZXJFdmVudCogZXYpCiB7CiAg
ICAgaW50IHRpbWVySWQgPSBldi0+dGltZXJJZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRXZWJQYWdlUHJveHkuaAppbmRleCA2N2NkMDU1MzE2ZjM4N2FmOWFmNjUzMzhmYmI2
YzI5NjZkNDYwODQzLi5jMTgxMmU5MzJjYzc2ZmFlM2JhMzY5NDU4MTgyNTk4ZmZiNzRjMjU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaApAQCAtNzQs
MTEgKzc0LDYgQEAgcHVibGljOgogICAgICAgICBXZWJBY3Rpb25Db3VudAogICAgIH07CiAKLSAg
ICBlbnVtIEZpbGVDaG9vc2VyVHlwZSB7Ci0gICAgICAgIFNpbmdsZUZpbGVTZWxlY3Rpb24sCi0g
ICAgICAgIE11bHRpcGxlRmlsZXNTZWxlY3Rpb24KLSAgICB9OwotCiAgICAgUXRXZWJQYWdlUHJv
eHkoUVF1aWNrV2ViUGFnZSosIFFRdWlja1dlYlZpZXcqLCBXZWJLaXQ6OlF0Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZSogPSAwLCBXZWJLaXQ6OlF0UG9saWN5SW50ZXJmYWNlKiA9IDAsIFdLQ29u
dGV4dFJlZiA9IDAsIFdLUGFnZUdyb3VwUmVmID0gMCk7CiAgICAgflF0V2ViUGFnZVByb3h5KCk7
CiAKQEAgLTIxMCwxOSArMjA1LDkgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlU2luZ2xlVGFw
RXZlbnQoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmKTsKICAgICB2b2lkIGhhbmRsZURv
dWJsZVRhcEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50Jik7CiAKLSAgICB2b2lk
IGRpZENoYW5nZVN0YXR1c1RleHQoY29uc3QgUVN0cmluZyYpOwotCiAgICAgdm9pZCBzaG93Q29u
dGV4dE1lbnUoUVNoYXJlZFBvaW50ZXI8UU1lbnU+KTsKICAgICB2b2lkIGhpZGVDb250ZXh0TWVu
dSgpOwogCi0gICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoY29uc3QgUVN0cmluZyYpOwotICAg
IGJvb2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oY29uc3QgUVN0cmluZyYpOwotICAgIFFTdHJpbmcg
cnVuSmF2YVNjcmlwdFByb21wdChjb25zdCBRU3RyaW5nJiwgY29uc3QgUVN0cmluZyYgZGVmYXVs
dFZhbHVlLCBib29sJiBvayk7Ci0KLSAgICB2b2lkIGNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiBzZWxlY3RlZEZpbGVOYW1lcywgRmls
ZUNob29zZXJUeXBlKTsKLQotICAgIHZvaWQgZGlkTW91c2VNb3ZlT3ZlckVsZW1lbnQoY29uc3Qg
UVVybCYsIGNvbnN0IFFTdHJpbmcmKTsKLQogcHVibGljIFFfU0xPVFM6CiAgICAgdm9pZCBuYXZp
Z2F0aW9uU3RhdGVDaGFuZ2VkKCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRG93bmxvYWRSZXNwb25z
ZShRV2ViRG93bmxvYWRJdGVtKiBkb3dubG9hZEl0ZW0pOwpAQCAtMjg1LDggKzI3MCw2IEBAIHBy
aXZhdGU6CiAgICAgUUJhc2ljVGltZXIgbV90cmlwbGVDbGlja1RpbWVyOwogCiAgICAgUVNoYXJl
ZFBvaW50ZXI8UU1lbnU+IGFjdGl2ZU1lbnU7Ci0gICAgUVVybCBsYXN0SG92ZXJlZFVSTDsKLSAg
ICBRU3RyaW5nIGxhc3RIb3ZlcmVkVGl0bGU7CiB9OwogCiAjZW5kaWYgLyogUXRXZWJQYWdlUHJv
eHlfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNs
aWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM4M2ExZWVjMmYzODRmMzZhZWYyMmE3ZjljZjMwZTNlNjBl
MzQxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VVSUNsaWVudC5jcHAKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
cHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXRXZWJQYWdlVUlDbGllbnQuaCIKKworI2lu
Y2x1ZGUgIldLU3RyaW5nUXQuaCIKKyNpbmNsdWRlICJXS1VSTFF0LmgiCisjaW5jbHVkZSAicXF1
aWNrd2Vidmlld19wLmgiCisjaW5jbHVkZSAicXF1aWNrd2Vidmlld19wX3AuaCIKKyNpbmNsdWRl
IDxXS0FQSUNhc3QuaD4KKyNpbmNsdWRlIDxXS0hpdFRlc3RSZXN1bHQuaD4KKyNpbmNsdWRlIDxX
S09wZW5QYW5lbFBhcmFtZXRlcnMuaD4KKyNpbmNsdWRlIDxXS09wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLmg+CisKK1F0V2ViUGFnZVVJQ2xpZW50OjpRdFdlYlBhZ2VVSUNsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgUVF1aWNrV2ViVmlldyogd2ViVmlldykKKyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3
KQoreworICAgIFdLUGFnZVVJQ2xpZW50IHVpQ2xpZW50OworICAgIG1lbXNldCgmdWlDbGllbnQs
IDAsIHNpemVvZihXS1BhZ2VVSUNsaWVudCkpOworICAgIHVpQ2xpZW50LnZlcnNpb24gPSBrV0tQ
YWdlVUlDbGllbnRDdXJyZW50VmVyc2lvbjsKKyAgICB1aUNsaWVudC5jbGllbnRJbmZvID0gdGhp
czsKKyAgICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQgPSBydW5KYXZhU2NyaXB0QWxlcnQ7
CisgICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm0gPSBydW5KYXZhU2NyaXB0Q29uZmly
bTsKKyAgICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0ID0gcnVuSmF2YVNjcmlwdFByb21w
dDsKKyAgICB1aUNsaWVudC5zZXRTdGF0dXNUZXh0ID0gc2V0U3RhdHVzVGV4dDsKKyAgICB1aUNs
aWVudC5ydW5PcGVuUGFuZWwgPSBydW5PcGVuUGFuZWw7CisgICAgdWlDbGllbnQubW91c2VEaWRN
b3ZlT3ZlckVsZW1lbnQgPSBtb3VzZURpZE1vdmVPdmVyRWxlbWVudDsKKyAgICBXS1BhZ2VTZXRQ
YWdlVUlDbGllbnQocGFnZVJlZiwgJnVpQ2xpZW50KTsKK30KKwordm9pZCBRdFdlYlBhZ2VVSUNs
aWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAg
bV93ZWJWaWV3LT5kX2Z1bmMoKS0+cnVuSmF2YVNjcmlwdEFsZXJ0KG1lc3NhZ2UpOworfQorCiti
b29sIFF0V2ViUGFnZVVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybShjb25zdCBRU3RyaW5n
JiBtZXNzYWdlKQoreworICAgIHJldHVybiBtX3dlYlZpZXctPmRfZnVuYygpLT5ydW5KYXZhU2Ny
aXB0Q29uZmlybShtZXNzYWdlKTsKK30KKworUVN0cmluZyBRdFdlYlBhZ2VVSUNsaWVudDo6cnVu
SmF2YVNjcmlwdFByb21wdChjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBRU3RyaW5nJiBk
ZWZhdWx0VmFsdWUsIGJvb2wmIG9rKQoreworICAgIHJldHVybiBtX3dlYlZpZXctPmRfZnVuYygp
LT5ydW5KYXZhU2NyaXB0UHJvbXB0KG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgb2spOworfQorCit2
b2lkIFF0V2ViUGFnZVVJQ2xpZW50OjpydW5PcGVuUGFuZWwoV0tPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclJlZiBsaXN0ZW5lclJlZiwgY29uc3QgUVN0cmluZ0xpc3QmIHNlbGVjdGVkRmlsZU5hbWVz
LCBGaWxlQ2hvb3NlclR5cGUgdHlwZSkKK3sKKyAgICBtX3dlYlZpZXctPmRfZnVuYygpLT5jaG9v
c2VGaWxlcyhsaXN0ZW5lclJlZiwgc2VsZWN0ZWRGaWxlTmFtZXMsIHR5cGUpOworfQorCit2b2lk
IFF0V2ViUGFnZVVJQ2xpZW50OjpzZXRTdGF0dXNUZXh0KGNvbnN0IFFTdHJpbmcmIG5ld01lc3Nh
Z2UpCit7CisgICAgZW1pdCBtX3dlYlZpZXctPnN0YXR1c0Jhck1lc3NhZ2VDaGFuZ2VkKG5ld01l
c3NhZ2UpOworfQorCit2b2lkIFF0V2ViUGFnZVVJQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxl
bWVudChjb25zdCBRVXJsJiBsaW5rVVJMLCBjb25zdCBRU3RyaW5nJiBsaW5rVGl0bGUpCit7Cisg
ICAgaWYgKGxpbmtVUkwgPT0gbV9sYXN0SG92ZXJlZFVSTCAmJiBsaW5rVGl0bGUgPT0gbV9sYXN0
SG92ZXJlZFRpdGxlKQorICAgICAgICByZXR1cm47CisgICAgbV9sYXN0SG92ZXJlZFVSTCA9IGxp
bmtVUkw7CisgICAgbV9sYXN0SG92ZXJlZFRpdGxlID0gbGlua1RpdGxlOworICAgIGVtaXQgbV93
ZWJWaWV3LT5saW5rSG92ZXJlZChtX2xhc3RIb3ZlcmVkVVJMLCBtX2xhc3RIb3ZlcmVkVGl0bGUp
OworfQorCitzdGF0aWMgUXRXZWJQYWdlVUlDbGllbnQqIHRvUXRXZWJQYWdlVUlDbGllbnQoY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBBU1NFUlQoY2xpZW50SW5mbyk7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UXRXZWJQYWdlVUlDbGllbnQqPihjb25zdF9jYXN0PHZvaWQq
PihjbGllbnRJbmZvKSk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlVUlDbGllbnQ6OnJ1bkphdmFTY3Jp
cHRBbGVydChXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIGFsZXJ0VGV4dCwgV0tGcmFtZVJlZiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBRU3RyaW5nIHFBbGVydFRleHQgPSBXS1N0cmlu
Z0NvcHlRU3RyaW5nKGFsZXJ0VGV4dCk7CisgICAgdG9RdFdlYlBhZ2VVSUNsaWVudChjbGllbnRJ
bmZvKS0+cnVuSmF2YVNjcmlwdEFsZXJ0KHFBbGVydFRleHQpOworfQorCitib29sIFF0V2ViUGFn
ZVVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIG1l
c3NhZ2UsIFdLRnJhbWVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgUVN0cmlu
ZyBxTWVzc2FnZSA9IFdLU3RyaW5nQ29weVFTdHJpbmcobWVzc2FnZSk7CisgICAgcmV0dXJuIHRv
UXRXZWJQYWdlVUlDbGllbnQoY2xpZW50SW5mbyktPnJ1bkphdmFTY3JpcHRDb25maXJtKHFNZXNz
YWdlKTsKK30KKworc3RhdGljIGlubGluZSBXS1N0cmluZ1JlZiBjcmVhdGVOdWxsV0tTdHJpbmco
KQoreworICAgIFJlZlB0cjxXZWJTdHJpbmc+IHdlYlN0cmluZyA9IFdlYlN0cmluZzo6Y3JlYXRl
TnVsbCgpOworICAgIHJldHVybiB0b0FQSSh3ZWJTdHJpbmcucmVsZWFzZSgpLmxlYWtSZWYoKSk7
Cit9CisKK1dLU3RyaW5nUmVmIFF0V2ViUGFnZVVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0
KFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tTdHJpbmdSZWYgZGVmYXVsdFZhbHVl
LCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIFFTdHJpbmcgcU1l
c3NhZ2UgPSBXS1N0cmluZ0NvcHlRU3RyaW5nKG1lc3NhZ2UpOworICAgIFFTdHJpbmcgcURlZmF1
bHRWYWx1ZSA9IFdLU3RyaW5nQ29weVFTdHJpbmcoZGVmYXVsdFZhbHVlKTsKKyAgICBib29sIG9r
ID0gZmFsc2U7CisgICAgUVN0cmluZyByZXN1bHQgPSB0b1F0V2ViUGFnZVVJQ2xpZW50KGNsaWVu
dEluZm8pLT5ydW5KYXZhU2NyaXB0UHJvbXB0KHFNZXNzYWdlLCBxRGVmYXVsdFZhbHVlLCBvayk7
CisgICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bGxXS1N0cmluZygpOworICAg
IHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhRU3RyaW5nKHJlc3VsdCk7Cit9CisKK3ZvaWQgUXRX
ZWJQYWdlVUlDbGllbnQ6OnNldFN0YXR1c1RleHQoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiB0ZXh0
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIFFTdHJpbmcgcVRleHQgPSBXS1N0cmlu
Z0NvcHlRU3RyaW5nKHRleHQpOworICAgIHRvUXRXZWJQYWdlVUlDbGllbnQoY2xpZW50SW5mbykt
PnNldFN0YXR1c1RleHQocVRleHQpOworfQorCit2b2lkIFF0V2ViUGFnZVVJQ2xpZW50OjpydW5P
cGVuUGFuZWwoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYg
cGFyYW1ldGVycywgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB3a1NlbGVjdGVkRmlsZU5h
bWVzID0gdG9JbXBsKHBhcmFtZXRlcnMpLT5zZWxlY3RlZEZpbGVOYW1lcygpOworCisgICAgUVN0
cmluZ0xpc3Qgc2VsZWN0ZWRGaWxlTmFtZXM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3
a1NlbGVjdGVkRmlsZU5hbWVzLnNpemUoKTsgKytpKQorICAgICAgICBzZWxlY3RlZEZpbGVOYW1l
cyArPSB3a1NlbGVjdGVkRmlsZU5hbWVzLmF0KGkpOworCisgICAgRmlsZUNob29zZXJUeXBlIGFs
bG93TXVsdGlwbGVGaWxlcyA9IFdLT3BlblBhbmVsUGFyYW1ldGVyc0dldEFsbG93c011bHRpcGxl
RmlsZXMocGFyYW1ldGVycykgPyBNdWx0aXBsZUZpbGVzU2VsZWN0aW9uIDogU2luZ2xlRmlsZVNl
bGVjdGlvbjsKKyAgICB0b1F0V2ViUGFnZVVJQ2xpZW50KGNsaWVudEluZm8pLT5ydW5PcGVuUGFu
ZWwobGlzdGVuZXIsIHNlbGVjdGVkRmlsZU5hbWVzLCBhbGxvd011bHRpcGxlRmlsZXMpOworfQor
Cit2b2lkIFF0V2ViUGFnZVVJQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChXS1BhZ2VS
ZWYgcGFnZSwgV0tIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHQsIFdLRXZlbnRNb2RpZmll
cnMgbW9kaWZpZXJzLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Cit7CisgICAgY29uc3QgUVVybCBhYnNvbHV0ZUxpbmtVcmwgPSBXS1VSTENvcHlRVXJsKFdLSGl0
VGVzdFJlc3VsdENvcHlBYnNvbHV0ZUxpbmtVUkwoaGl0VGVzdFJlc3VsdCkpOworICAgIGNvbnN0
IFFTdHJpbmcgbGlua1RpdGxlID0gV0tTdHJpbmdDb3B5UVN0cmluZyhXS0hpdFRlc3RSZXN1bHRD
b3B5TGlua1RpdGxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICB0b1F0V2ViUGFnZVVJQ2xpZW50KGNs
aWVudEluZm8pLT5tb3VzZURpZE1vdmVPdmVyRWxlbWVudChhYnNvbHV0ZUxpbmtVcmwsIGxpbmtU
aXRsZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNs
aWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU3YTcwMmI0YzQ4NmJmY2M3ZDg1NmFhYzZjZjkyY2Y2ZjdlODNk
ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlVUlDbGllbnQuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dy
YW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRl
ZiBRdFdlYlBhZ2VVSUNsaWVudF9oCisjZGVmaW5lIFF0V2ViUGFnZVVJQ2xpZW50X2gKKworI2lu
Y2x1ZGUgPFF0Q29yZS9RU3RyaW5nPgorI2luY2x1ZGUgPFF0Q29yZS9RVXJsPgorI2luY2x1ZGUg
PFdLUGFnZS5oPgorCitjbGFzcyBRUXVpY2tXZWJWaWV3OworCitjbGFzcyBRdFdlYlBhZ2VVSUNs
aWVudCB7CitwdWJsaWM6CisgICAgZW51bSBGaWxlQ2hvb3NlclR5cGUgeworICAgICAgICBTaW5n
bGVGaWxlU2VsZWN0aW9uLAorICAgICAgICBNdWx0aXBsZUZpbGVzU2VsZWN0aW9uCisgICAgfTsK
KworICAgIFF0V2ViUGFnZVVJQ2xpZW50KFdLUGFnZVJlZiwgUVF1aWNrV2ViVmlldyopOworCisg
ICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoY29uc3QgUVN0cmluZyYgbWVzc2FnZSk7CisgICAg
Ym9vbCBydW5KYXZhU2NyaXB0Q29uZmlybShjb25zdCBRU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBR
U3RyaW5nIHJ1bkphdmFTY3JpcHRQcm9tcHQoY29uc3QgUVN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
UVN0cmluZyYgZGVmYXVsdFZhbHVlLCBib29sJiBvayk7CisgICAgdm9pZCBzZXRTdGF0dXNUZXh0
KGNvbnN0IFFTdHJpbmcmKTsKKyAgICB2b2lkIHJ1bk9wZW5QYW5lbChXS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRGaWxlTmFtZXMsIEZpbGVD
aG9vc2VyVHlwZSk7CisgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBRVXJs
JiBsaW5rVVJMLCBjb25zdCBRU3RyaW5nJiBsaW5rVGl0bGUpOworCitwcml2YXRlOgorICAgIC8v
IFdLUGFnZVVJQ2xpZW50IGNhbGxiYWNrcy4KKyAgICBzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0
QWxlcnQoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyBib29sIHJ1bkphdmFTY3JpcHRDb25maXJt
KFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CisgICAgc3RhdGljIFdLU3RyaW5nUmVmIHJ1bkphdmFTY3JpcHRQcm9tcHQo
V0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmluZ1JlZiBkZWZhdWx0VmFsdWUs
IFdLRnJhbWVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIHNl
dFN0YXR1c1RleHQoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7CisgICAgc3RhdGljIHZvaWQgcnVuT3BlblBhbmVsKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwg
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVy
RWxlbWVudChXS1BhZ2VSZWYsIFdLSGl0VGVzdFJlc3VsdFJlZiwgV0tFdmVudE1vZGlmaWVycywg
V0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKworICAgIFFRdWlj
a1dlYlZpZXcqIG1fd2ViVmlldzsKKyAgICBRVXJsIG1fbGFzdEhvdmVyZWRVUkw7CisgICAgUVN0
cmluZyBtX2xhc3RIb3ZlcmVkVGl0bGU7Cit9OworCisjZW5kaWYgLy8gUXRXZWJQYWdlVUlDbGll
bnRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116181</attachid>
            <date>2011-11-21 23:28:52 -0800</date>
            <delta_ts>2011-11-22 04:14:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72910-20111122042849.patch</filename>
            <type>text/plain</type>
            <size>23571</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGU5OGFhN2ZiMDMyYzM0
MWQ2NzU0MzRiMmY2NjIyZjc4ZjY2M2VkMi4uM2NmYzJjNDMwYzk5NDE5YzY0ZDFkNDZjZDBkZGJk
ZmJiYjkxMjA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDExLTExLTIxICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XSBbV0syXSBNb3ZlIFBhZ2VVSUNsaWVudCByZWxhdGVkIGNvZGUgdG8g
UXRXZWJQYWdlVUlDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcyOTEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3BsaXQgUGFnZVVJQ2xpZW50IHJlbGF0ZWQgY29kZSBmcm9tIFF0V2ViUGFnZVBy
b3h5L0NsaWVudEltcGwuIFRoZSBuZXcKKyAgICAgICAgUXRXZWJQYWdlVUlDbGllbnQgcmVnaXN0
ZXJzIGl0c2VsZiB3aXRoIFdLUGFnZVJlZiBhbmQgaXQncyBvd25lZCBieSB0aGUKKyAgICAgICAg
UVF1aWNrV2ViVmlld1ByaXZhdGUuIFRoaXMgaXMgYSBtb3ZlIHRvIGNsZWFuIHVwIFF0V2ViUGFn
ZVByb3h5IG9iamVjdC4KKworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2
YXRlOjpRUXVpY2tXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6Y2hvb3NlRmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
d19wLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvcXQvQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6aW5pdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVVJQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChRdFdlYlBhZ2VVSUNsaWVudDo6UXRXZWJQ
YWdlVUlDbGllbnQpOgorICAgICAgICAoUXRXZWJQYWdlVUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRB
bGVydCk6CisgICAgICAgIChRdFdlYlBhZ2VVSUNsaWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0p
OgorICAgICAgICAoUXRXZWJQYWdlVUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAg
ICAgICAoUXRXZWJQYWdlVUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgIChRdFdlYlBh
Z2VVSUNsaWVudDo6c2V0U3RhdHVzVGV4dCk6CisgICAgICAgIChRdFdlYlBhZ2VVSUNsaWVudDo6
bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAodG9RdFdlYlBhZ2VVSUNsaWVudCk6
CisgICAgICAgIChjcmVhdGVOdWxsV0tTdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VVSUNsaWVudC5oOiBBZGRlZC4KKwogMjAxMS0xMS0yMSAgQWxleGlzIE1lbmFyZCAg
PGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBbUXRdW1dLMl0gUkVHUkVT
U0lPTigxMDA0ODMpOiBJdCBtYWRlIDIgQVBJIHRlc3RzIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDAw
YjhkMGI4Y2IxM2U2YzFhNzM0MjM3MjI2ZGQwY2QyZjIxZGM0Y2UuLjkzNWQ5YzU3Y2VmNWZiNjYy
MDZkYTU2ZWZjNDU5Nzc0ZjZiZThmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Rhcmdl
dC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMzIzLDYgKzMyMyw3IEBA
IEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1bm5lci5oIFwKICAgICBV
SVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZVByb3h5LmggXAorICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5oIFwKICAg
ICBVSVByb2Nlc3MvcXQvcXdraGlzdG9yeS5oIFwKICAgICBVSVByb2Nlc3MvcXQvcXdraGlzdG9y
eV9wLmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFNHVXBkYXRlUXVldWUuaCBcCkBAIC02MjgsNiAr
NjI5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVyLmNw
cCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0RG93bmxvYWRNYW5hZ2VyLmNwcCBcCiAgICAgVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcCBcCisgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJ
Q2xpZW50LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuY3BwIFwKICAgICBVSVBy
b2Nlc3MvcXQvUXRTR1VwZGF0ZVF1ZXVlLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0U0dUaWxl
Tm9kZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlldy5jcHAKaW5kZXggZjE0NmMyYjU5NTY3NWE4OGNlOTQ2NjU3NGZlMTc4NDY0YmVhMjhi
Zi4uYTZmNGZiN2RiZGFhN2E3MDdjMTVhZDllYjllMGY1NTU2NDFlZWI2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC01OCw2
ICs1OCw4IEBAIFFRdWlja1dlYlZpZXdQcml2YXRlOjpRUXVpY2tXZWJWaWV3UHJpdmF0ZShRUXVp
Y2tXZWJWaWV3KiB2aWV3cG9ydCwgV0tDb250ZXh0UmVmCiAgICAgcGFnZVByb3h5LT5pbml0KCk7
CiAKICAgICBRT2JqZWN0Ojpjb25uZWN0KHBhZ2VQcm94eS5kYXRhKCksIFNJR05BTCh1cGRhdGVO
YXZpZ2F0aW9uU3RhdGUoKSksIHFfcHRyLCBTSUdOQUwobmF2aWdhdGlvblN0YXRlQ2hhbmdlZCgp
KSk7CisKKyAgICBwYWdlVUlDbGllbnQucmVzZXQobmV3IFF0V2ViUGFnZVVJQ2xpZW50KHBhZ2VQ
cm94eS0+cGFnZVJlZigpLCBxX3B0cikpOwogfQogCiB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRl
OjplbmFibGVNb3VzZUV2ZW50cygpCkBAIC0yNzQsNyArMjc2LDcgQEAgUVN0cmluZyBRUXVpY2tX
ZWJWaWV3UHJpdmF0ZTo6cnVuSmF2YVNjcmlwdFByb21wdChjb25zdCBRU3RyaW5nJiBtZXNzYWdl
LCBjb25zdAogICAgIHJldHVybiBkaWFsb2dSdW5uZXIucmVzdWx0KCk7CiB9CiAKLXZvaWQgUVF1
aWNrV2ViVmlld1ByaXZhdGU6OmNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJS
ZWYgbGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiBzZWxlY3RlZEZpbGVOYW1lcywgUXRX
ZWJQYWdlUHJveHk6OkZpbGVDaG9vc2VyVHlwZSB0eXBlKQordm9pZCBRUXVpY2tXZWJWaWV3UHJp
dmF0ZTo6Y2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lclJl
ZiwgY29uc3QgUVN0cmluZ0xpc3QmIHNlbGVjdGVkRmlsZU5hbWVzLCBRdFdlYlBhZ2VVSUNsaWVu
dDo6RmlsZUNob29zZXJUeXBlIHR5cGUpCiB7CiAjaWZuZGVmIFFUX05PX0ZJTEVESUFMT0cKICAg
ICBRX1EoUVF1aWNrV2ViVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAppbmRleCA1YzhmMjM2MzkwOGRjMzlmMzAxZGVmZGJhOWIw
ZTE2M2IxNDk4ZjYzLi43Yzg4NDFhODQzOTYwZTZhMDgyOTUwMTRlMTAxYjhjNmU2OGY5ZGIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdf
cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19w
LmgKQEAgLTEzNSw2ICsxMzUsNyBAQCBwcml2YXRlOgogICAgIFFRdWlja1dlYlZpZXdFeHBlcmlt
ZW50YWwqIG1fZXhwZXJpbWVudGFsOwogCiAgICAgZnJpZW5kIGNsYXNzIFF0V2ViUGFnZVByb3h5
OworICAgIGZyaWVuZCBjbGFzcyBRdFdlYlBhZ2VVSUNsaWVudDsKICAgICBmcmllbmQgY2xhc3Mg
V1RSOjpQbGF0Zm9ybVdlYlZpZXc7CiAgICAgZnJpZW5kIGNsYXNzIFFRdWlja1dlYlZpZXdFeHBl
cmltZW50YWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3X3BfcC5oCmluZGV4IDNhZTI1NjE5ZDU0MDg5NGViOThlMmU4YjMxYzAxMWVk
Zjk4YWJhM2IuLjUyOWUyNTNmNDhlZDljNzE2Njc3NzUyODI2YzhjYmNiNGM0NjIyY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3Au
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9w
LmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJRdFBvbGljeUludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oIgogI2luY2x1ZGUgIlF0V2ViUGFn
ZVByb3h5LmgiCisjaW5jbHVkZSAiUXRXZWJQYWdlVUlDbGllbnQuaCIKIAogI2luY2x1ZGUgInFx
dWlja3dlYnZpZXdfcC5oIgogI2luY2x1ZGUgInFxdWlja3dlYnBhZ2VfcC5oIgpAQCAtNzIsNyAr
NzMsNyBAQCBwdWJsaWM6CiAgICAgLy8gUXRQb2xpY3lJbnRlcmZhY2UuCiAgICAgdmlydHVhbCBR
dFBvbGljeUludGVyZmFjZTo6UG9saWN5QWN0aW9uIG5hdmlnYXRpb25Qb2xpY3lGb3JVUkwoY29u
c3QgUVVybCYsIFF0OjpNb3VzZUJ1dHRvbiwgUXQ6OktleWJvYXJkTW9kaWZpZXJzKTsKIAotICAg
IHZvaWQgY2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiwgY29uc3QgUVN0
cmluZ0xpc3QmIHNlbGVjdGVkRmlsZU5hbWVzLCBRdFdlYlBhZ2VQcm94eTo6RmlsZUNob29zZXJU
eXBlKTsKKyAgICB2b2lkIGNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYs
IGNvbnN0IFFTdHJpbmdMaXN0JiBzZWxlY3RlZEZpbGVOYW1lcywgUXRXZWJQYWdlVUlDbGllbnQ6
OkZpbGVDaG9vc2VyVHlwZSk7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoY29uc3QgUVN0
cmluZyYpOwogICAgIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oY29uc3QgUVN0cmluZyYpOwog
ICAgIFFTdHJpbmcgcnVuSmF2YVNjcmlwdFByb21wdChjb25zdCBRU3RyaW5nJiwgY29uc3QgUVN0
cmluZyYgZGVmYXVsdFZhbHVlLCBib29sJiBvayk7CkBAIC0xMTAsNiArMTExLDggQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgc2V0Vmlld0luQXR0YWNoZWRQcm9wZXJ0aWVzKFFPYmplY3QqKTsKIAor
ICAgIFFTY29wZWRQb2ludGVyPFF0V2ViUGFnZVVJQ2xpZW50PiBwYWdlVUlDbGllbnQ7CisKICAg
ICBRU2NvcGVkUG9pbnRlcjxRUXVpY2tXZWJQYWdlPiBwYWdlVmlldzsKICAgICBRU2NvcGVkUG9p
bnRlcjxRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU+IGludGVyYWN0aW9uRW5naW5lOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAKaW5kZXggMTA0ZDM0MmJk
MTVkYTMyYjk1Y2EwOGYzNjNhNjVmZTJlMmQ0MWUwOC4uMDg2M2VjNzZjYzI2MTk2ZTVkNDMyZDQ1
M2JkYzYxN2FmNzJlMDgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L0NsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJ
bXBsLmNwcApAQCAtMzEsOCArMzEsNiBAQAogI2luY2x1ZGUgPFdLRnJhbWUuaD4KICNpbmNsdWRl
IDxXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaD4KICNpbmNsdWRlIDxXS0hpdFRlc3RSZXN1bHQuaD4K
LSNpbmNsdWRlIDxXS09wZW5QYW5lbFBhcmFtZXRlcnMuaD4KLSNpbmNsdWRlIDxXS09wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLmg+CiAjaW5jbHVkZSA8V0tQYWdlLmg+CiAjaW5jbHVkZSA8V0tTdHJp
bmcuaD4KICNpbmNsdWRlIDxXS1R5cGUuaD4KQEAgLTE1Miw2MSArMTUwLDYgQEAgc3RhdGljIHZv
aWQgcXRfd2tfZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUoV0tQYWdlUmVm
IHBhZ2UsIFdLRnJhbWUKICAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT5kaWRGaW5p
c2hGaXJzdE5vbkVtcHR5TGF5b3V0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIHF0X3drX3J1bkphdmFT
Y3JpcHRBbGVydChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgYWxlcnRUZXh0LCBXS0ZyYW1l
UmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIFFTdHJpbmcgcUFsZXJ0
VGV4dCA9IFdLU3RyaW5nQ29weVFTdHJpbmcoYWxlcnRUZXh0KTsKLSAgICB0b1F0V2ViUGFnZVBy
b3h5KGNsaWVudEluZm8pLT5ydW5KYXZhU2NyaXB0QWxlcnQocUFsZXJ0VGV4dCk7Ci19Ci0KLXN0
YXRpYyBib29sIHF0X3drX3J1bkphdmFTY3JpcHRDb25maXJtKFdLUGFnZVJlZiwgV0tTdHJpbmdS
ZWYgbWVzc2FnZSwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBR
U3RyaW5nIHFNZXNzYWdlID0gV0tTdHJpbmdDb3B5UVN0cmluZyhtZXNzYWdlKTsKLSAgICByZXR1
cm4gdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+cnVuSmF2YVNjcmlwdENvbmZpcm0ocU1l
c3NhZ2UpOwotfQotCi1zdGF0aWMgaW5saW5lIFdLU3RyaW5nUmVmIGNyZWF0ZU51bGxXS1N0cmlu
ZygpCi17Ci0gICAgUmVmUHRyPFdlYlN0cmluZz4gd2ViU3RyaW5nID0gV2ViU3RyaW5nOjpjcmVh
dGVOdWxsKCk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYlN0cmluZy5yZWxlYXNlKCkubGVha1JlZigp
KTsKLX0KLQotc3RhdGljIFdLU3RyaW5nUmVmIHF0X3drX3J1bkphdmFTY3JpcHRQcm9tcHQoV0tQ
YWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmluZ1JlZiBkZWZhdWx0VmFsdWUsIFdL
RnJhbWVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgUVN0cmluZyBxTWVzc2Fn
ZSA9IFdLU3RyaW5nQ29weVFTdHJpbmcobWVzc2FnZSk7Ci0gICAgUVN0cmluZyBxRGVmYXVsdFZh
bHVlID0gV0tTdHJpbmdDb3B5UVN0cmluZyhkZWZhdWx0VmFsdWUpOwotICAgIGJvb2wgb2sgPSBm
YWxzZTsKLSAgICBRU3RyaW5nIHJlc3VsdCA9IHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbykt
PnJ1bkphdmFTY3JpcHRQcm9tcHQocU1lc3NhZ2UsIHFEZWZhdWx0VmFsdWUsIG9rKTsKLSAgICBp
ZiAoIW9rKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVsbFdLU3RyaW5nKCk7Ci0gICAgcmV0dXJu
IFdLU3RyaW5nQ3JlYXRlV2l0aFFTdHJpbmcocmVzdWx0KTsKLX0KLQotc3RhdGljIHZvaWQgcXRf
d2tfc2V0U3RhdHVzVGV4dChXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIHRleHQsIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pCi17Ci0gICAgUVN0cmluZyBxVGV4dCA9IFdLU3RyaW5nQ29weVFTdHJpbmco
dGV4dCk7Ci0gICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+ZGlkQ2hhbmdlU3RhdHVz
VGV4dChxVGV4dCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHF0X3drX3J1bk9wZW5QYW5lbChXS1BhZ2VS
ZWYsIFdLRnJhbWVSZWYsIFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzLCBXS09w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQotewotICAgIFZlY3RvcjxTdHJpbmc+IHdrU2VsZWN0ZWRGaWxlTmFtZXMgPSB0b0ltcGwocGFy
YW1ldGVycyktPnNlbGVjdGVkRmlsZU5hbWVzKCk7Ci0KLSAgICBRU3RyaW5nTGlzdCBzZWxlY3Rl
ZEZpbGVOYW1lczsKLSAgICBpZiAoIXdrU2VsZWN0ZWRGaWxlTmFtZXMuaXNFbXB0eSgpKQotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyB3a1NlbGVjdGVkRmlsZU5hbWVzLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgc2VsZWN0ZWRGaWxlTmFtZXMgKz0gd2tTZWxlY3RlZEZpbGVOYW1lcy5h
dChpKTsKLQotICAgIFF0V2ViUGFnZVByb3h5OjpGaWxlQ2hvb3NlclR5cGUgYWxsb3dNdWx0aXBs
ZUZpbGVzID0gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0QWxsb3dzTXVsdGlwbGVGaWxlcyhwYXJh
bWV0ZXJzKSA/IFF0V2ViUGFnZVByb3h5OjpNdWx0aXBsZUZpbGVzU2VsZWN0aW9uIDogUXRXZWJQ
YWdlUHJveHk6OlNpbmdsZUZpbGVTZWxlY3Rpb247Ci0gICAgdG9RdFdlYlBhZ2VQcm94eShjbGll
bnRJbmZvKS0+Y2hvb3NlRmlsZXMobGlzdGVuZXIsIHNlbGVjdGVkRmlsZU5hbWVzLCBhbGxvd011
bHRpcGxlRmlsZXMpOwotfQotCi1zdGF0aWMgdm9pZCBxdF93a19tb3VzZURpZE1vdmVPdmVyRWxl
bWVudChXS1BhZ2VSZWYgcGFnZSwgV0tIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHQsIFdL
RXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCi17Ci0gICAgY29uc3QgUVVybCBhYnNvbHV0ZUxpbmtVcmwgPSBXS1VSTENv
cHlRVXJsKFdLSGl0VGVzdFJlc3VsdENvcHlBYnNvbHV0ZUxpbmtVUkwoaGl0VGVzdFJlc3VsdCkp
OwotICAgIGNvbnN0IFFTdHJpbmcgbGlua1RpdGxlID0gV0tTdHJpbmdDb3B5UVN0cmluZyhXS0hp
dFRlc3RSZXN1bHRDb3B5TGlua1RpdGxlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICB0b1F0V2ViUGFn
ZVByb3h5KGNsaWVudEluZm8pLT5kaWRNb3VzZU1vdmVPdmVyRWxlbWVudChhYnNvbHV0ZUxpbmtV
cmwsIGxpbmtUaXRsZSk7Ci19Ci0KIHN0YXRpYyBRdDo6TW91c2VCdXR0b24gdG9RdE1vdXNlQnV0
dG9uKFdLRXZlbnRNb3VzZUJ1dHRvbiBidXR0b24pCiB7CiAgICAgc3dpdGNoIChidXR0b24pIHsK
QEAgLTMyMSwyMSArMjY0LDYgQEAgdm9pZCBzZXR1cFBhZ2VMb2FkZXJDbGllbnQoUXRXZWJQYWdl
UHJveHkqIHF0V2ViUGFnZVByb3h5LCBXZWJQYWdlUHJveHkqIHdlYlBhZ2UKICAgICBXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KHF0V2ViUGFnZVByb3h5LT5wYWdlUmVmKCksICZsb2FkQ2xpZW50
KTsKIH0KIAotdm9pZCBzZXR1cFBhZ2VVaUNsaWVudChRdFdlYlBhZ2VQcm94eSogcXRXZWJQYWdl
UHJveHksIFdlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5KQotewotICAgIFdLUGFnZVVJQ2xpZW50
IHVpQ2xpZW50OwotICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZihXS1BhZ2VVSUNsaWVu
dCkpOwotICAgIHVpQ2xpZW50LnZlcnNpb24gPSBrV0tQYWdlVUlDbGllbnRDdXJyZW50VmVyc2lv
bjsKLSAgICB1aUNsaWVudC5jbGllbnRJbmZvID0gcXRXZWJQYWdlUHJveHk7Ci0gICAgdWlDbGll
bnQucnVuSmF2YVNjcmlwdEFsZXJ0ID0gcXRfd2tfcnVuSmF2YVNjcmlwdEFsZXJ0OwotICAgIHVp
Q2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtID0gcXRfd2tfcnVuSmF2YVNjcmlwdENvbmZpcm07
Ci0gICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdFByb21wdCA9IHF0X3drX3J1bkphdmFTY3JpcHRQ
cm9tcHQ7Ci0gICAgdWlDbGllbnQuc2V0U3RhdHVzVGV4dCA9IHF0X3drX3NldFN0YXR1c1RleHQ7
Ci0gICAgdWlDbGllbnQucnVuT3BlblBhbmVsID0gcXRfd2tfcnVuT3BlblBhbmVsOwotICAgIHVp
Q2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50ID0gcXRfd2tfbW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnQ7Ci0gICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KHRvQVBJKHdlYlBhZ2VQcm94eSksICZ1
aUNsaWVudCk7Ci19Ci0KIHZvaWQgc2V0dXBQYWdlUG9saWN5Q2xpZW50KFF0UG9saWN5SW50ZXJm
YWNlKiBwb2xpY3lJbnRlcmZhY2UsIFdlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5KQogewogICAg
IFdLUGFnZVBvbGljeUNsaWVudCBwb2xpY3lDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L0NsaWVudEltcGwuaAppbmRleCA0ZWY4OTc1Y2RmNzY4NWZhODNkZDg5YTM2MjI2OGE5ZmI1
ODU5NjJkLi44NzU5MzVlY2MyMjg5MWY5YTlmMzk2NzQzMDdlZTM1ZWY1MjE1ZjE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmgKQEAgLTI5LDcgKzI5LDYgQEAgY2xh
c3MgV2ViUGFnZVByb3h5OwogfQogCiB2b2lkIHNldHVwUGFnZUxvYWRlckNsaWVudChRdFdlYlBh
Z2VQcm94eSosIFdlYktpdDo6V2ViUGFnZVByb3h5Kik7Ci12b2lkIHNldHVwUGFnZVVpQ2xpZW50
KFF0V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKIHZvaWQgc2V0dXBQYWdl
UG9saWN5Q2xpZW50KFdlYktpdDo6UXRQb2xpY3lJbnRlcmZhY2UqLCBXZWJLaXQ6OldlYlBhZ2VQ
cm94eSopOwogCiB2b2lkIHNldHVwQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4
dFJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNw
cAppbmRleCA2M2RlNGUyZTZjZDBkNDJiNDc1YWQ3MGZmYWU2YjMxY2RkMTE3Yjc5Li5mOGQ5YmM2
ZjdlODc0YTNiZmY1MjQ5NDI5ZjRmMTIzYWRjNDA1ODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKQEAgLTE1Nyw3ICsxNTcsNiBAQCB2b2lk
IFF0V2ViUGFnZVByb3h5Ojppbml0KCkKICAgICBtX3dlYlBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdl
YlBhZ2UoKTsKIAogICAgIHNldHVwUGFnZUxvYWRlckNsaWVudCh0aGlzLCBtX3dlYlBhZ2VQcm94
eS5nZXQoKSk7Ci0gICAgc2V0dXBQYWdlVWlDbGllbnQodGhpcywgbV93ZWJQYWdlUHJveHkuZ2V0
KCkpOwogCiAgICAgaWYgKG1fcG9saWN5SW50ZXJmYWNlKQogICAgICAgICBzZXR1cFBhZ2VQb2xp
Y3lDbGllbnQobV9wb2xpY3lJbnRlcmZhY2UsIG1fd2ViUGFnZVByb3h5LmdldCgpKTsKQEAgLTM1
NSwyMCArMzU0LDYgQEAgdm9pZCBRdFdlYlBhZ2VQcm94eTo6aGFuZGxlRG91YmxlVGFwRXZlbnQo
Y29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIHBvaW50KQogICAgIG1fd2ViUGFnZVByb3h5
LT5maW5kWm9vbWFibGVBcmVhRm9yUG9pbnQocG9pbnQucG9zKCkudG9Qb2ludCgpKTsKIH0KIAot
dm9pZCBRdFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlU3RhdHVzVGV4dChjb25zdCBRU3RyaW5nJiBu
ZXdNZXNzYWdlKQotewotICAgIGVtaXQgbV9xbWxXZWJWaWV3LT5zdGF0dXNCYXJNZXNzYWdlQ2hh
bmdlZChuZXdNZXNzYWdlKTsKLX0KLQotdm9pZCBRdFdlYlBhZ2VQcm94eTo6ZGlkTW91c2VNb3Zl
T3ZlckVsZW1lbnQoY29uc3QgUVVybCYgbGlua1VSTCwgY29uc3QgUVN0cmluZyYgbGlua1RpdGxl
KQotewotICAgIGlmIChsaW5rVVJMID09IGxhc3RIb3ZlcmVkVVJMICYmIGxpbmtUaXRsZSA9PSBs
YXN0SG92ZXJlZFRpdGxlKQotICAgICAgICByZXR1cm47Ci0gICAgbGFzdEhvdmVyZWRVUkwgPSBs
aW5rVVJMOwotICAgIGxhc3RIb3ZlcmVkVGl0bGUgPSBsaW5rVGl0bGU7Ci0gICAgZW1pdCBtX3Ft
bFdlYlZpZXctPmxpbmtIb3ZlcmVkKGxhc3RIb3ZlcmVkVVJMLCBsYXN0SG92ZXJlZFRpdGxlKTsK
LX0KLQogdm9pZCBRdFdlYlBhZ2VQcm94eTo6c2hvd0NvbnRleHRNZW51KFFTaGFyZWRQb2ludGVy
PFFNZW51PiBtZW51KQogewogICAgIC8vIFJlbW92ZSB0aGUgYWN0aXZlIG1lbnUgaW4gY2FzZSB0
aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0d2ljZS4KQEAgLTQwMSwyNiArMzg2LDYgQEAgdm9pZCBR
dFdlYlBhZ2VQcm94eTo6aGlkZUNvbnRleHRNZW51KCkKICAgICAgICAgYWN0aXZlTWVudS0+aGlk
ZSgpOwogfQogCi12b2lkIFF0V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQoY29uc3Qg
UVN0cmluZyYgYWxlcnRUZXh0KQotewotICAgIG1fcW1sV2ViVmlldy0+ZF9mdW5jKCktPnJ1bkph
dmFTY3JpcHRBbGVydChhbGVydFRleHQpOwotfQotCi1ib29sIFF0V2ViUGFnZVByb3h5OjpydW5K
YXZhU2NyaXB0Q29uZmlybShjb25zdCBRU3RyaW5nJiBtZXNzYWdlKQotewotICAgIHJldHVybiBt
X3FtbFdlYlZpZXctPmRfZnVuYygpLT5ydW5KYXZhU2NyaXB0Q29uZmlybShtZXNzYWdlKTsKLX0K
LQotUVN0cmluZyBRdFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdFByb21wdChjb25zdCBRU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBRU3RyaW5nJiBkZWZhdWx0VmFsdWUsIGJvb2wmIG9rKQotewot
ICAgIHJldHVybiBtX3FtbFdlYlZpZXctPmRfZnVuYygpLT5ydW5KYXZhU2NyaXB0UHJvbXB0KG1l
c3NhZ2UsIGRlZmF1bHRWYWx1ZSwgb2spOwotfQotCi12b2lkIFF0V2ViUGFnZVByb3h5OjpjaG9v
c2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBjb25zdCBR
U3RyaW5nTGlzdCYgc2VsZWN0ZWRGaWxlTmFtZXMsIEZpbGVDaG9vc2VyVHlwZSB0eXBlKQotewot
ICAgIG1fcW1sV2ViVmlldy0+ZF9mdW5jKCktPmNob29zZUZpbGVzKGxpc3RlbmVyUmVmLCBzZWxl
Y3RlZEZpbGVOYW1lcywgdHlwZSk7Ci19Ci0KIHZvaWQgUXRXZWJQYWdlUHJveHk6OnRpbWVyRXZl
bnQoUVRpbWVyRXZlbnQqIGV2KQogewogICAgIGludCB0aW1lcklkID0gZXYtPnRpbWVySWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKaW5kZXggNjdj
ZDA1NTMxNmYzODdhZjlhZjY1MzM4ZmJiNmMyOTY2ZDQ2MDg0My4uYzE4MTJlOTMyY2M3NmZhZTNi
YTM2OTQ1ODE4MjU5OGZmYjc0YzI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1F0V2ViUGFnZVByb3h5LmgKQEAgLTc0LDExICs3NCw2IEBAIHB1YmxpYzoKICAgICAgICAgV2Vi
QWN0aW9uQ291bnQKICAgICB9OwogCi0gICAgZW51bSBGaWxlQ2hvb3NlclR5cGUgewotICAgICAg
ICBTaW5nbGVGaWxlU2VsZWN0aW9uLAotICAgICAgICBNdWx0aXBsZUZpbGVzU2VsZWN0aW9uCi0g
ICAgfTsKLQogICAgIFF0V2ViUGFnZVByb3h5KFFRdWlja1dlYlBhZ2UqLCBRUXVpY2tXZWJWaWV3
KiwgV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqID0gMCwgV2ViS2l0OjpRdFBv
bGljeUludGVyZmFjZSogPSAwLCBXS0NvbnRleHRSZWYgPSAwLCBXS1BhZ2VHcm91cFJlZiA9IDAp
OwogICAgIH5RdFdlYlBhZ2VQcm94eSgpOwogCkBAIC0yMTAsMTkgKzIwNSw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGhhbmRsZVNpbmdsZVRhcEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBv
aW50Jik7CiAgICAgdm9pZCBoYW5kbGVEb3VibGVUYXBFdmVudChjb25zdCBRVG91Y2hFdmVudDo6
VG91Y2hQb2ludCYpOwogCi0gICAgdm9pZCBkaWRDaGFuZ2VTdGF0dXNUZXh0KGNvbnN0IFFTdHJp
bmcmKTsKLQogICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KFFTaGFyZWRQb2ludGVyPFFNZW51Pik7
CiAgICAgdm9pZCBoaWRlQ29udGV4dE1lbnUoKTsKIAotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFs
ZXJ0KGNvbnN0IFFTdHJpbmcmKTsKLSAgICBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKGNvbnN0
IFFTdHJpbmcmKTsKLSAgICBRU3RyaW5nIHJ1bkphdmFTY3JpcHRQcm9tcHQoY29uc3QgUVN0cmlu
ZyYsIGNvbnN0IFFTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgYm9vbCYgb2spOwotCi0gICAgdm9pZCBj
aG9vc2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlz
dCYgc2VsZWN0ZWRGaWxlTmFtZXMsIEZpbGVDaG9vc2VyVHlwZSk7Ci0KLSAgICB2b2lkIGRpZE1v
dXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmLCBjb25zdCBRU3RyaW5nJik7Ci0KIHB1Ymxp
YyBRX1NMT1RTOgogICAgIHZvaWQgbmF2aWdhdGlvblN0YXRlQ2hhbmdlZCgpOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZURvd25sb2FkUmVzcG9uc2UoUVdlYkRvd25sb2FkSXRlbSogZG93bmxvYWRJdGVt
KTsKQEAgLTI4NSw4ICsyNzAsNiBAQCBwcml2YXRlOgogICAgIFFCYXNpY1RpbWVyIG1fdHJpcGxl
Q2xpY2tUaW1lcjsKIAogICAgIFFTaGFyZWRQb2ludGVyPFFNZW51PiBhY3RpdmVNZW51OwotICAg
IFFVcmwgbGFzdEhvdmVyZWRVUkw7Ci0gICAgUVN0cmluZyBsYXN0SG92ZXJlZFRpdGxlOwogfTsK
IAogI2VuZGlmIC8qIFF0V2ViUGFnZVByb3h5X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjODNhMWVlYzJm
Mzg0ZjM2YWVmMjJhN2Y5Y2YzMGUzZTYwZTM0MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuY3BwCkBAIC0wLDAgKzEsMTQx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlF0
V2ViUGFnZVVJQ2xpZW50LmgiCisKKyNpbmNsdWRlICJXS1N0cmluZ1F0LmgiCisjaW5jbHVkZSAi
V0tVUkxRdC5oIgorI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcC5oIgorI2luY2x1ZGUgInFxdWlj
a3dlYnZpZXdfcF9wLmgiCisjaW5jbHVkZSA8V0tBUElDYXN0Lmg+CisjaW5jbHVkZSA8V0tIaXRU
ZXN0UmVzdWx0Lmg+CisjaW5jbHVkZSA8V0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmg+CisjaW5jbHVk
ZSA8V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oPgorCitRdFdlYlBhZ2VVSUNsaWVudDo6UXRX
ZWJQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFFRdWlja1dlYlZpZXcqIHdlYlZpZXcp
CisgICAgOiBtX3dlYlZpZXcod2ViVmlldykKK3sKKyAgICBXS1BhZ2VVSUNsaWVudCB1aUNsaWVu
dDsKKyAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YoV0tQYWdlVUlDbGllbnQpKTsKKyAg
ICB1aUNsaWVudC52ZXJzaW9uID0ga1dLUGFnZVVJQ2xpZW50Q3VycmVudFZlcnNpb247CisgICAg
dWlDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CisgICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdEFs
ZXJ0ID0gcnVuSmF2YVNjcmlwdEFsZXJ0OworICAgIHVpQ2xpZW50LnJ1bkphdmFTY3JpcHRDb25m
aXJtID0gcnVuSmF2YVNjcmlwdENvbmZpcm07CisgICAgdWlDbGllbnQucnVuSmF2YVNjcmlwdFBy
b21wdCA9IHJ1bkphdmFTY3JpcHRQcm9tcHQ7CisgICAgdWlDbGllbnQuc2V0U3RhdHVzVGV4dCA9
IHNldFN0YXR1c1RleHQ7CisgICAgdWlDbGllbnQucnVuT3BlblBhbmVsID0gcnVuT3BlblBhbmVs
OworICAgIHVpQ2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50ID0gbW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQ7CisgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KHBhZ2VSZWYsICZ1aUNsaWVudCk7
Cit9CisKK3ZvaWQgUXRXZWJQYWdlVUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydChjb25zdCBR
U3RyaW5nJiBtZXNzYWdlKQoreworICAgIG1fd2ViVmlldy0+ZF9mdW5jKCktPnJ1bkphdmFTY3Jp
cHRBbGVydChtZXNzYWdlKTsKK30KKworYm9vbCBRdFdlYlBhZ2VVSUNsaWVudDo6cnVuSmF2YVNj
cmlwdENvbmZpcm0oY29uc3QgUVN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gbV93ZWJW
aWV3LT5kX2Z1bmMoKS0+cnVuSmF2YVNjcmlwdENvbmZpcm0obWVzc2FnZSk7Cit9CisKK1FTdHJp
bmcgUXRXZWJQYWdlVUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQoY29uc3QgUVN0cmluZyYg
bWVzc2FnZSwgY29uc3QgUVN0cmluZyYgZGVmYXVsdFZhbHVlLCBib29sJiBvaykKK3sKKyAgICBy
ZXR1cm4gbV93ZWJWaWV3LT5kX2Z1bmMoKS0+cnVuSmF2YVNjcmlwdFByb21wdChtZXNzYWdlLCBk
ZWZhdWx0VmFsdWUsIG9rKTsKK30KKwordm9pZCBRdFdlYlBhZ2VVSUNsaWVudDo6cnVuT3BlblBh
bmVsKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJp
bmdMaXN0JiBzZWxlY3RlZEZpbGVOYW1lcywgRmlsZUNob29zZXJUeXBlIHR5cGUpCit7CisgICAg
bV93ZWJWaWV3LT5kX2Z1bmMoKS0+Y2hvb3NlRmlsZXMobGlzdGVuZXJSZWYsIHNlbGVjdGVkRmls
ZU5hbWVzLCB0eXBlKTsKK30KKwordm9pZCBRdFdlYlBhZ2VVSUNsaWVudDo6c2V0U3RhdHVzVGV4
dChjb25zdCBRU3RyaW5nJiBuZXdNZXNzYWdlKQoreworICAgIGVtaXQgbV93ZWJWaWV3LT5zdGF0
dXNCYXJNZXNzYWdlQ2hhbmdlZChuZXdNZXNzYWdlKTsKK30KKwordm9pZCBRdFdlYlBhZ2VVSUNs
aWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgUVVybCYgbGlua1VSTCwgY29uc3Qg
UVN0cmluZyYgbGlua1RpdGxlKQoreworICAgIGlmIChsaW5rVVJMID09IG1fbGFzdEhvdmVyZWRV
UkwgJiYgbGlua1RpdGxlID09IG1fbGFzdEhvdmVyZWRUaXRsZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fbGFzdEhvdmVyZWRVUkwgPSBsaW5rVVJMOworICAgIG1fbGFzdEhvdmVyZWRUaXRsZSA9
IGxpbmtUaXRsZTsKKyAgICBlbWl0IG1fd2ViVmlldy0+bGlua0hvdmVyZWQobV9sYXN0SG92ZXJl
ZFVSTCwgbV9sYXN0SG92ZXJlZFRpdGxlKTsKK30KKworc3RhdGljIFF0V2ViUGFnZVVJQ2xpZW50
KiB0b1F0V2ViUGFnZVVJQ2xpZW50KGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgQVNT
RVJUKGNsaWVudEluZm8pOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFF0V2ViUGFnZVVJ
Q2xpZW50Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworfQorCit2b2lkIFF0V2Vi
UGFnZVVJQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBh
bGVydFRleHQsIFdLRnJhbWVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgUVN0
cmluZyBxQWxlcnRUZXh0ID0gV0tTdHJpbmdDb3B5UVN0cmluZyhhbGVydFRleHQpOworICAgIHRv
UXRXZWJQYWdlVUlDbGllbnQoY2xpZW50SW5mbyktPnJ1bkphdmFTY3JpcHRBbGVydChxQWxlcnRU
ZXh0KTsKK30KKworYm9vbCBRdFdlYlBhZ2VVSUNsaWVudDo6cnVuSmF2YVNjcmlwdENvbmZpcm0o
V0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQoreworICAgIFFTdHJpbmcgcU1lc3NhZ2UgPSBXS1N0cmluZ0NvcHlRU3RyaW5n
KG1lc3NhZ2UpOworICAgIHJldHVybiB0b1F0V2ViUGFnZVVJQ2xpZW50KGNsaWVudEluZm8pLT5y
dW5KYXZhU2NyaXB0Q29uZmlybShxTWVzc2FnZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgV0tTdHJp
bmdSZWYgY3JlYXRlTnVsbFdLU3RyaW5nKCkKK3sKKyAgICBSZWZQdHI8V2ViU3RyaW5nPiB3ZWJT
dHJpbmcgPSBXZWJTdHJpbmc6OmNyZWF0ZU51bGwoKTsKKyAgICByZXR1cm4gdG9BUEkod2ViU3Ry
aW5nLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworfQorCitXS1N0cmluZ1JlZiBRdFdlYlBhZ2VVSUNs
aWVudDo6cnVuSmF2YVNjcmlwdFByb21wdChXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2Us
IFdLU3RyaW5nUmVmIGRlZmF1bHRWYWx1ZSwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKK3sKKyAgICBRU3RyaW5nIHFNZXNzYWdlID0gV0tTdHJpbmdDb3B5UVN0cmluZyhtZXNz
YWdlKTsKKyAgICBRU3RyaW5nIHFEZWZhdWx0VmFsdWUgPSBXS1N0cmluZ0NvcHlRU3RyaW5nKGRl
ZmF1bHRWYWx1ZSk7CisgICAgYm9vbCBvayA9IGZhbHNlOworICAgIFFTdHJpbmcgcmVzdWx0ID0g
dG9RdFdlYlBhZ2VVSUNsaWVudChjbGllbnRJbmZvKS0+cnVuSmF2YVNjcmlwdFByb21wdChxTWVz
c2FnZSwgcURlZmF1bHRWYWx1ZSwgb2spOworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBj
cmVhdGVOdWxsV0tTdHJpbmcoKTsKKyAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoUVN0cmlu
ZyhyZXN1bHQpOworfQorCit2b2lkIFF0V2ViUGFnZVVJQ2xpZW50OjpzZXRTdGF0dXNUZXh0KFdL
UGFnZVJlZiwgV0tTdHJpbmdSZWYgdGV4dCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAg
ICBRU3RyaW5nIHFUZXh0ID0gV0tTdHJpbmdDb3B5UVN0cmluZyh0ZXh0KTsKKyAgICB0b1F0V2Vi
UGFnZVVJQ2xpZW50KGNsaWVudEluZm8pLT5zZXRTdGF0dXNUZXh0KHFUZXh0KTsKK30KKwordm9p
ZCBRdFdlYlBhZ2VVSUNsaWVudDo6cnVuT3BlblBhbmVsKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwg
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmIHBhcmFtZXRlcnMsIFdLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgVmVjdG9y
PFN0cmluZz4gd2tTZWxlY3RlZEZpbGVOYW1lcyA9IHRvSW1wbChwYXJhbWV0ZXJzKS0+c2VsZWN0
ZWRGaWxlTmFtZXMoKTsKKworICAgIFFTdHJpbmdMaXN0IHNlbGVjdGVkRmlsZU5hbWVzOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2tTZWxlY3RlZEZpbGVOYW1lcy5zaXplKCk7ICsraSkK
KyAgICAgICAgc2VsZWN0ZWRGaWxlTmFtZXMgKz0gd2tTZWxlY3RlZEZpbGVOYW1lcy5hdChpKTsK
KworICAgIEZpbGVDaG9vc2VyVHlwZSBhbGxvd011bHRpcGxlRmlsZXMgPSBXS09wZW5QYW5lbFBh
cmFtZXRlcnNHZXRBbGxvd3NNdWx0aXBsZUZpbGVzKHBhcmFtZXRlcnMpID8gTXVsdGlwbGVGaWxl
c1NlbGVjdGlvbiA6IFNpbmdsZUZpbGVTZWxlY3Rpb247CisgICAgdG9RdFdlYlBhZ2VVSUNsaWVu
dChjbGllbnRJbmZvKS0+cnVuT3BlblBhbmVsKGxpc3RlbmVyLCBzZWxlY3RlZEZpbGVOYW1lcywg
YWxsb3dNdWx0aXBsZUZpbGVzKTsKK30KKwordm9pZCBRdFdlYlBhZ2VVSUNsaWVudDo6bW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQoV0tQYWdlUmVmIHBhZ2UsIFdLSGl0VGVzdFJlc3VsdFJlZiBoaXRU
ZXN0UmVzdWx0LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tUeXBlUmVmIHVzZXJEYXRh
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGNvbnN0IFFVcmwgYWJzb2x1dGVMaW5r
VXJsID0gV0tVUkxDb3B5UVVybChXS0hpdFRlc3RSZXN1bHRDb3B5QWJzb2x1dGVMaW5rVVJMKGhp
dFRlc3RSZXN1bHQpKTsKKyAgICBjb25zdCBRU3RyaW5nIGxpbmtUaXRsZSA9IFdLU3RyaW5nQ29w
eVFTdHJpbmcoV0tIaXRUZXN0UmVzdWx0Q29weUxpbmtUaXRsZShoaXRUZXN0UmVzdWx0KSk7Cisg
ICAgdG9RdFdlYlBhZ2VVSUNsaWVudChjbGllbnRJbmZvKS0+bW91c2VEaWRNb3ZlT3ZlckVsZW1l
bnQoYWJzb2x1dGVMaW5rVXJsLCBsaW5rVGl0bGUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlVUlDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzRhNGUxZTA3OWVm
YTg0NTc5MDYxOTIzMTEyZTE2NmI5ZTNlMjEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVVJQ2xpZW50LmgKQEAgLTAsMCArMSw2MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUXRXZWJQYWdlVUlDbGllbnRfaAorI2RlZmluZSBR
dFdlYlBhZ2VVSUNsaWVudF9oCisKKyNpbmNsdWRlIDxRdENvcmUvUVN0cmluZz4KKyNpbmNsdWRl
IDxRdENvcmUvUVVybD4KKyNpbmNsdWRlIDxXS1BhZ2UuaD4KKworY2xhc3MgUVF1aWNrV2ViVmll
dzsKKworY2xhc3MgUXRXZWJQYWdlVUlDbGllbnQgeworcHVibGljOgorICAgIGVudW0gRmlsZUNo
b29zZXJUeXBlIHsKKyAgICAgICAgU2luZ2xlRmlsZVNlbGVjdGlvbiwKKyAgICAgICAgTXVsdGlw
bGVGaWxlc1NlbGVjdGlvbgorICAgIH07CisKKyAgICBRdFdlYlBhZ2VVSUNsaWVudChXS1BhZ2VS
ZWYsIFFRdWlja1dlYlZpZXcqKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRB
bGVydChjb25zdCBRU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBib29sIHJ1bkphdmFTY3JpcHRDb25m
aXJtKGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpOworICAgIFFTdHJpbmcgcnVuSmF2YVNjcmlwdFBy
b21wdChjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBRU3RyaW5nJiBkZWZhdWx0VmFsdWUs
IGJvb2wmIG9rKTsKKyAgICB2b2lkIHNldFN0YXR1c1RleHQoY29uc3QgUVN0cmluZyYpOworICAg
IHZvaWQgcnVuT3BlblBhbmVsKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYsIGNvbnN0IFFT
dHJpbmdMaXN0JiBzZWxlY3RlZEZpbGVOYW1lcywgRmlsZUNob29zZXJUeXBlKTsKKyAgICB2b2lk
IG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmIGxpbmtVUkwsIGNvbnN0IFFTdHJp
bmcmIGxpbmtUaXRsZSk7CisKKyAgICAvLyBXS1BhZ2VVSUNsaWVudCBjYWxsYmFja3MuCisgICAg
c3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgYWxl
cnRUZXh0LCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMg
Ym9vbCBydW5KYXZhU2NyaXB0Q29uZmlybShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2Us
IFdLRnJhbWVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyBXS1N0cmlu
Z1JlZiBydW5KYXZhU2NyaXB0UHJvbXB0KFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZSwg
V0tTdHJpbmdSZWYgZGVmYXVsdFZhbHVlLCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRTdGF0dXNUZXh0KFdLUGFnZVJlZiwgV0tTdHJpbmdS
ZWYsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIHJ1bk9wZW5QYW5l
bChXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiwgV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3Rh
dGljIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV0tQYWdlUmVmLCBXS0hpdFRlc3RSZXN1
bHRSZWYsIFdLRXZlbnRNb2RpZmllcnMsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CisKKyAgICBRUXVpY2tXZWJWaWV3KiBtX3dlYlZpZXc7CisgICAgUVVybCBt
X2xhc3RIb3ZlcmVkVVJMOworICAgIFFTdHJpbmcgbV9sYXN0SG92ZXJlZFRpdGxlOworfTsKKwor
I2VuZGlmIC8vIFF0V2ViUGFnZVVJQ2xpZW50X2gK
</data>
<flag name="review"
          id="115298"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>