<?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>46016</bug_id>
          
          <creation_ts>2010-09-17 17:25:34 -0700</creation_ts>
          <short_desc>[chromium] There should be an API for showing an external popup that does not require creation of a WebWidget</short_desc>
          <delta_ts>2010-10-21 04:17:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jay Civelli">jcivelli</reporter>
          <assigned_to name="Jay Civelli">jcivelli</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>281013</commentid>
    <comment_count>0</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-09-17 17:25:34 -0700</bug_when>
    <thetext>WebViewClient has a method createPopupMenu(const WebPopupMenuInfo&amp;) that is used to create a popup menu (such as the select menu) externally.
However it still involves creating a WebWidget that is kept hidden.
We should instead have a clean API that does not require that WebWidget creation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282655</commentid>
    <comment_count>1</comment_count>
      <attachid>68310</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-09-21 17:02:33 -0700</bug_when>
    <thetext>Created attachment 68310
Initial patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282664</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-21 17:08:39 -0700</bug_when>
    <thetext>Attachment 68310 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/chromium/src/ExternalPopupMenu.h:53:  This { should be at the end of the previous line  [whitespace/braces] [4]
WebKit/chromium/src/ExternalPopupMenu.h:54:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/chromium/src/ExternalPopupMenu.h:57:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/chromium/src/ExternalPopupMenu.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/src/ExternalPopupMenu.cpp:97:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 5 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282671</commentid>
    <comment_count>3</comment_count>
      <attachid>68313</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-09-21 17:17:28 -0700</bug_when>
    <thetext>Created attachment 68313
Fixed style issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282677</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-21 17:21:11 -0700</bug_when>
    <thetext>Attachment 68313 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/chromium/src/ExternalPopupMenu.h:56:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282684</commentid>
    <comment_count>5</comment_count>
      <attachid>68316</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-09-21 17:24:44 -0700</bug_when>
    <thetext>Created attachment 68316
Fixing style take 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290445</commentid>
    <comment_count>6</comment_count>
      <attachid>68316</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-10-06 11:04:43 -0700</bug_when>
    <thetext>Comment on attachment 68316
Fixing style take 2

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

&gt; WebKit/chromium/public/WebExternalPopupMenu.h:38
&gt; +    virtual void showExternalPopupMenu() = 0;

nit: these method names can use shorter names like &quot;show&quot; and &quot;close&quot;
they are already defined within the context of WebExternalPopupMenu,
so there is no need to re-type that context.

&gt; WebKit/chromium/public/WebExternalPopupMenuClient.h:40
&gt; +    virtual void selectionChanged(int index) = 0;

style-nit:  selectionChanged -&gt; didChangeSelection

&gt; WebKit/chromium/public/WebExternalPopupMenuClient.h:45
&gt; +    virtual void acceptedIndex(int index) = 0;

style-nit:  acceptedIndex -&gt; didAcceptIndex

&gt; WebKit/chromium/public/WebExternalPopupMenuClient.h:51
&gt; +    virtual void canceled() = 0;

style-nit:  canceled -&gt; didCancel

&gt; WebKit/chromium/src/ChromeClientImpl.cpp:853
&gt; +#if defined(EXTERNAL_POPUP)

I don&apos;t see where this is defined.  Is this something you want to alter in the build
system to engage this new API?  An alternative way to accomplish this for migration
purposes is to call createExternalPopupMenu here, and if that returns non-null, then
pass the WebExternalPopupMenu instance to the ExternalPopupMenu constructor, etc.
Otherwise, create a PopupMenuChromium as the old code was doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291274</commentid>
    <comment_count>7</comment_count>
      <attachid>70156</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-10-07 14:59:08 -0700</bug_when>
    <thetext>Created attachment 70156
Applied fishd suggested changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291477</commentid>
    <comment_count>8</comment_count>
      <attachid>70156</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-10-08 00:00:07 -0700</bug_when>
    <thetext>Comment on attachment 70156
Applied fishd suggested changes

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

&gt; WebKit/chromium/public/WebExternalPopupMenuClient.h:49
&gt; +    // Note that it is not safe to access this WebExternalPopupClientMenu after

nit: WebExternalPopupClientMenu -&gt;  WebExternalPopupMenuClient

&gt; WebKit/chromium/public/WebViewClient.h:263
&gt; +    virtual bool shouldUseExternalPopups() { return false; }

is there a real good reason to make this a WebViewClient method?  isn&apos;t this
effectively a static / compile-time option?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292978</commentid>
    <comment_count>9</comment_count>
      <attachid>70538</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-10-12 09:55:46 -0700</bug_when>
    <thetext>Created attachment 70538
Adding an static method to WebView to set whether to use external popups or not.

@fishd: per our discussion, added a static method to WebView to set whether to use external popup menus, so that Chromium directly controls it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293276</commentid>
    <comment_count>10</comment_count>
      <attachid>70538</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-10-12 22:37:49 -0700</bug_when>
    <thetext>Comment on attachment 70538
Adding an static method to WebView to set whether to use external popups or not.

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

&gt; WebKit/chromium/public/WebView.h:311
&gt; +    // Popup menu ----------------------------------------------------------

nit: please preserve the two lines of whitespace above a section divider comment.

&gt; WebKit/chromium/src/ExternalPopupMenu.cpp:41
&gt; +

nit: I recommend adding a &apos;using namespace WebCore&apos; here.  then kill off the
WebCore:: prefixes down below.

otherwise, R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293603</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-13 12:25:39 -0700</bug_when>
    <thetext>Attachment 70538 was posted by a committer and has review+, assigning to Jay Civelli for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294785</commentid>
    <comment_count>12</comment_count>
      <attachid>70876</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-10-15 09:39:57 -0700</bug_when>
    <thetext>Created attachment 70876
Added the bounds where the popup should be shown to WebExternalPopup::show()

Sorry for the extra small new change on this CL.
In order to know where to show the popup, the WebExternalPopup needs to be passed bounds.
I added them as a parameter to the WebExternalPopup::show().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296194</commentid>
    <comment_count>13</comment_count>
      <attachid>70538</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-19 08:07:52 -0700</bug_when>
    <thetext>Comment on attachment 70538
Adding an static method to WebView to set whether to use external popups or not.

Cleared Darin Fisher&apos;s review+ from obsolete attachment 70538 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296655</commentid>
    <comment_count>14</comment_count>
      <attachid>70876</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-10-19 23:40:15 -0700</bug_when>
    <thetext>Comment on attachment 70876
Added the bounds where the popup should be shown to WebExternalPopup::show()

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

&gt; WebKit/chromium/src/ExternalPopupMenu.cpp:70
&gt; +    IntPoint location = v-&gt;contentsToWindow(rect.location());

nit: there is also a version of contentsToWindow that takes an IntRect,
and a WebRect can be implicitly created from an IntRect.  in other words,
you can rewrite this as:

  m_webExternalPopupMenu-&gt;show(v-&gt;contentsToWindow(rect));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296855</commentid>
    <comment_count>15</comment_count>
      <attachid>71304</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-10-20 10:18:13 -0700</bug_when>
    <thetext>Created attachment 71304
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296898</commentid>
    <comment_count>16</comment_count>
      <attachid>71304</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-20 11:55:38 -0700</bug_when>
    <thetext>Comment on attachment 71304
Patch for landing

Rejecting patch 71304 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;apply-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--quiet&apos;, 71304]&quot; exit_code: 2
Cleaning working directory
Updating working directory
Failed to run &quot;[&apos;WebKitTools/Scripts/update-webkit&apos;]&quot; exit_code: 2

Full output: http://queues.webkit.org/results/4545010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296903</commentid>
    <comment_count>17</comment_count>
      <attachid>71304</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-20 11:58:15 -0700</bug_when>
    <thetext>Comment on attachment 71304
Patch for landing

I think this was a false rejection from a run-away commit-node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297025</commentid>
    <comment_count>18</comment_count>
      <attachid>71304</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-20 14:28:31 -0700</bug_when>
    <thetext>Comment on attachment 71304
Patch for landing

Rejecting patch 71304 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;apply-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--quiet&apos;, 71304]&quot; exit_code: 2
Cleaning working directory
Updating working directory
Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=71304&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=46016&amp;ctype=xml
Processing 1 patch from 1 bug.
Processing patch 71304 from bug 46016.
Failed to run &quot;[u&apos;/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Darin Fisher&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/4696001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297048</commentid>
    <comment_count>19</comment_count>
      <attachid>71342</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-10-20 14:55:58 -0700</bug_when>
    <thetext>Created attachment 71342
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297331</commentid>
    <comment_count>20</comment_count>
      <attachid>71342</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-21 03:11:44 -0700</bug_when>
    <thetext>Comment on attachment 71342
Patch for landing

Clearing flags on attachment: 71342

Committed r70222: &lt;http://trac.webkit.org/changeset/70222&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297333</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-21 03:11:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297363</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-21 04:17:32 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/70222 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
mathml/presentation/fractions-vertical-alignment.xhtml
mathml/presentation/mo.xhtml
mathml/presentation/row-alignment.xhtml
mathml/presentation/row.xhtml</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68310</attachid>
            <date>2010-09-21 17:02:33 -0700</date>
            <delta_ts>2010-09-21 17:17:28 -0700</delta_ts>
            <desc>Initial patch</desc>
            <filename>external_popup.patch</filename>
            <type>text/plain</type>
            <size>17866</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjc5OTEpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDktMjEgIEpheSBD
aXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkaW5nIGFuIEFQSSAoYmVoaW5k
IGEgZmxhZykgdGhhdCBhbGxvd3MgZXh0ZXJuYWwKKyAgICAgICAgcG9wdXAgbWVudXMsIHdpdGhv
dXQgdGhlIHVzZSBvZiBXZWJDb3JlOjpQb3B1cE1lbnVDaHJvbWl1bS4KKyAgICAgICAgT25jZSB0
aGlzIGlzIGhvb2tlZCB1cCBpbiBDaHJvbWl1bSwgdGhlIHBsYW4gaXMgdG8gcmVtb3ZlCisgICAg
ICAgIGVudGlyZWx5IHRoZSBleHRlcm5hbCBjYXNlIGZyb20gUG9wdXBNZW51Q2hyb21pdW0uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjAxNgorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1l
bnUuaDogQWRkZWQuCisgICAgICAgICogcHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50
Lmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJNZW51SXRlbUluZm8uaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViTWVudUl0ZW1JbmZvOjpXZWJNZW51SXRlbUluZm8pOgorICAgICAgICAqIHB1
YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmNy
ZWF0ZUV4dGVybmFsUG9wdXBNZW51KToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudSk6
CisgICAgICAgICogc3JjL0V4dGVybmFsUG9wdXBNZW51LmNwcDogQWRkZWQuCisgICAgICAgICog
c3JjL0V4dGVybmFsUG9wdXBNZW51Lmg6IEFkZGVkLgorCiAyMDEwLTA5LTIxICBKZXJlbXkgT3Js
b3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hh
cGluLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDY3OTczKQorKysgV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsOCBAQAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViRHJhZ0RhdGEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJFZGl0aW5nQWN0aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRWxlbWVu
dC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51LmgnLAor
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24uaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlclBhcmFtcy5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkZpbGVFcnJvci5oJywKQEAgLTMyMCw2ICszMjIsOCBAQAogICAgICAg
ICAgICAgICAgICdzcmMvRWRpdG9yQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L0V2ZW50TGlzdGVuZXJXcmFwcGVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9FdmVudExp
c3RlbmVyV3JhcHBlci5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0V4dGVybmFsUG9wdXBNZW51
LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9FeHRlcm5hbFBvcHVwTWVudS5oJywKICAgICAg
ICAgICAgICAgICAnc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMv
RnJhbWVOZXR3b3JraW5nQ29udGV4dEltcGwuaCcsCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkV4dGVybmFsUG9wdXBNZW51LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudS5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJFeHRlcm5hbFBvcHVwTWVudV9oCisjZGVmaW5lIFdlYkV4dGVy
bmFsUG9wdXBNZW51X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkV4dGVybmFs
UG9wdXBNZW51IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0V4dGVybmFsUG9wdXBN
ZW51KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZUV4dGVybmFsUG9wdXBNZW51KCkgPSAw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJFeHRlcm5hbFBv
cHVwTWVudV9oCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsUG9wdXBN
ZW51Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFeHRl
cm5hbFBvcHVwTWVudUNsaWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudF9oCisjZGVmaW5lIFdlYkV4
dGVybmFsUG9wdXBNZW51Q2xpZW50X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YkV4dGVybmFsUG9wdXBNZW51Q2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBTaG91bGQgYmUgY2Fs
bGVkIHdoZW4gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtIGluIHRoZSBwb3B1cCBtZW51Cisg
ICAgLy8gY2hhbmdlZC4gQ2FuIGJlIC0xIGlmIHRoZXJlIGlzIG5vIHNlbGVjdGlvbi4KKyAgICB2
aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChpbnQgaW5kZXgpID0gMDsKKworICAgIC8vIFNo
b3VsZCBiZSBjYWxsZWQgd2hlbiBhbiBpbmRleCBoYXMgYmVlbiBhY2NlcHRlZC4KKyAgICAvLyBO
b3RlIHRoYXQgaXQgaXMgbm90IHNhZmUgdG8gYWNjZXNzIHRoaXMgV2ViRXh0ZXJuYWxQb3B1cENs
aWVudE1lbnUgYWZ0ZXIKKyAgICAvLyB0aGlzIGhhcyBiZWVuIGNhbGxlZCBhcyBpdCBtaWdodCBu
b3QgYmUgdmFsaWQgYW55bW9yZS4KKyAgICB2aXJ0dWFsIHZvaWQgYWNjZXB0ZWRJbmRleChpbnQg
aW5kZXgpID0gMDsKKworICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgcG9wdXAgbWVu
dSB3YXMgZGlzY2FyZGVkIChjbG9zZWQgd2l0aG91dCBhCisgICAgLy8gc2VsZWN0aW9uLgorICAg
IC8vIE5vdGUgdGhhdCBpdCBpcyBub3Qgc2FmZSB0byBhY2Nlc3MgdGhpcyBXZWJFeHRlcm5hbFBv
cHVwQ2xpZW50TWVudSBhZnRlcgorICAgIC8vIHRoaXMgaGFzIGJlZW4gY2FsbGVkIGFzIGl0IG1p
Z2h0IG5vdCBiZSB2YWxpZCBhbnltb3JlLgorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxlZCgpID0g
MDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRXh0ZXJuYWxQ
b3B1cE1lbnVDbGllbnRfaApJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZW51SXRl
bUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lbnVJdGVt
SW5mby5oCShyZXZpc2lvbiA2Nzk3MykKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVu
dUl0ZW1JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDE1IEBAIHN0cnVjdCBXZWJN
ZW51SXRlbUluZm8gewogICAgICAgICBHcm91cCwKICAgICAgICAgU2VwYXJhdG9yLAogICAgIH07
CisKKyAgICBXZWJNZW51SXRlbUluZm8oKSAKKyAgICAgICAgOiB0eXBlKE9wdGlvbikKKyAgICAg
ICAgLCBhY3Rpb24oMCkKKyAgICAgICAgLCBlbmFibGVkKGZhbHNlKQorICAgICAgICAsIGNoZWNr
ZWQoZmFsc2UpCisgICAgeworICAgIH0KKwogICAgIFdlYlN0cmluZyBsYWJlbDsKICAgICBUeXBl
IHR5cGU7CiAgICAgdW5zaWduZWQgYWN0aW9uOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWV3Q2xpZW50LmgJKHJldmlzaW9uIDY3OTczKQorKysgV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgY2xhc3Mg
V2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
OwogY2xhc3MgV2ViRHJhZ0RhdGE7CiBjbGFzcyBXZWJFbGVtZW50OworY2xhc3MgV2ViRXh0ZXJu
YWxQb3B1cE1lbnU7CitjbGFzcyBXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIFdl
YkZpbGVDaG9vc2VyQ29tcGxldGlvbjsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViR2VvbG9j
YXRpb25TZXJ2aWNlOwpAQCAtODcsNiArODksOCBAQCBwdWJsaWM6CiAgICAgLy8gcmVzcG9uc2li
bGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudHMgb2YgdGhlIHBvcHVwIG1lbnUuCiAgICAgdmly
dHVhbCBXZWJXaWRnZXQqIGNyZWF0ZVBvcHVwTWVudShXZWJQb3B1cFR5cGUpIHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIFdlYldpZGdldCogY3JlYXRlUG9wdXBNZW51KGNvbnN0IFdlYlBvcHVw
TWVudUluZm8mKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBXZWJFeHRlcm5hbFBvcHVwTWVu
dSogY3JlYXRlRXh0ZXJuYWxQb3B1cE1lbnUoCisgICAgICAgIGNvbnN0IFdlYlBvcHVwTWVudUlu
Zm8mLCBXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudCopIHsgcmV0dXJuIDA7IH0KIAogICAgIC8v
IENyZWF0ZSBhIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2Ugb2JqZWN0IGFzc29jaWF0ZWQgd2l0
aCB0aGlzIFdlYlZpZXcuCiAgICAgdmlydHVhbCBXZWJTdG9yYWdlTmFtZXNwYWNlKiBjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgeyByZXR1cm4gMDsgfQpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA2Nzk3
MykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVk
ZSAiRXh0ZXJuYWxQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKQEAgLTg0OSw3
ICs4NTAsMTEgQEAgYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpzZWxlY3RJdGVtV3JpdGluZwogCiBQ
YXNzUmVmUHRyPFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51KFBv
cHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAogeworI2lmIGRlZmluZWQoRVhURVJOQUxfUE9Q
VVApCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFeHRlcm5hbFBvcHVwTWVudShjbGllbnQsIG1f
d2ViVmlldy0+Y2xpZW50KCkpKTsKKyNlbHNlCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1
cE1lbnVDaHJvbWl1bShjbGllbnQpKTsKKyNlbmRpZgogfQogCiBQYXNzUmVmUHRyPFNlYXJjaFBv
cHVwTWVudT4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVu
dUNsaWVudCogY2xpZW50KSBjb25zdApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlcm5h
bFBvcHVwTWVudS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlcm5h
bFBvcHVwTWVudS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVy
bmFsUG9wdXBNZW51LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRXh0ZXJuYWxQb3B1cE1lbnUuaCIKKworI2luY2x1ZGUgIlBv
cHVwTWVudUNsaWVudC5oIgorI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKKyNpbmNsdWRlICJX
ZWJFeHRlcm5hbFBvcHVwTWVudS5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudUluZm8uaCIKKyNp
bmNsdWRlICJXZWJNZW51SXRlbUluZm8uaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKyNpbmNs
dWRlICJXZWJWaWV3Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitFeHRlcm5hbFBv
cHVwTWVudTo6RXh0ZXJuYWxQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBwb3B1
cE1lbnVDbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVmll
d0NsaWVudCogd2ViVmlld0NsaWVudCkKKyAgICA6IG1fcG9wdXBNZW51Q2xpZW50KHBvcHVwTWVu
dUNsaWVudCkKKyAgICAsIG1fd2ViVmlld0NsaWVudCh3ZWJWaWV3Q2xpZW50KQorICAgICwgbV93
ZWJFeHRlcm5hbFBvcHVwTWVudSgwKQoreworfQorCitFeHRlcm5hbFBvcHVwTWVudTo6fkV4dGVy
bmFsUG9wdXBNZW51KCkKK3sKK30KKwordm9pZCBFeHRlcm5hbFBvcHVwTWVudTo6c2hvdyhjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29y
ZTo6RnJhbWVWaWV3KiwgaW50IGluZGV4KSAKK3sKKyAgICAvLyBXZWJDb3JlIHJldXNlcyB0aGUg
UG9wdXBNZW51IG9mIGEgcGFnZS4KKyAgICAvLyBGb3Igc2ltcGxpY2l0eSwgd2UgZG8gcmVjcmVh
dGUgdGhlIGFjdHVhbCBleHRlcm5hbCBwb3B1cCBldmVyeXRpbWUuCisgICAgaWYgKG1fd2ViRXh0
ZXJuYWxQb3B1cE1lbnUpCisgICAgICAgIG1fd2ViRXh0ZXJuYWxQb3B1cE1lbnUtPmNsb3NlRXh0
ZXJuYWxQb3B1cE1lbnUoKTsKKyAgICBXZWJQb3B1cE1lbnVJbmZvIGluZm87CisgICAgZ2V0UG9w
dXBNZW51SW5mbygmaW5mbyk7CisgICAgbV93ZWJFeHRlcm5hbFBvcHVwTWVudSA9CisgICAgICAg
IG1fd2ViVmlld0NsaWVudC0+Y3JlYXRlRXh0ZXJuYWxQb3B1cE1lbnUoaW5mbywgdGhpcyk7Cisg
ICAgbV93ZWJFeHRlcm5hbFBvcHVwTWVudS0+c2hvd0V4dGVybmFsUG9wdXBNZW51KCk7Cit9CisK
K3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OmhpZGUoKQoreworICAgIG1fd2ViRXh0ZXJuYWxQb3B1
cE1lbnUtPmNsb3NlRXh0ZXJuYWxQb3B1cE1lbnUoKTsKKyAgICBtX3dlYkV4dGVybmFsUG9wdXBN
ZW51ID0gMDsKK30KKwordm9pZCBFeHRlcm5hbFBvcHVwTWVudTo6dXBkYXRlRnJvbUVsZW1lbnQo
KQoreworfQorCit2b2lkIEV4dGVybmFsUG9wdXBNZW51OjpkaXNjb25uZWN0Q2xpZW50KCkKK3sK
KyAgICBpZiAobV93ZWJFeHRlcm5hbFBvcHVwTWVudSkKKyAgICAgICAgbV93ZWJFeHRlcm5hbFBv
cHVwTWVudS0+Y2xvc2VFeHRlcm5hbFBvcHVwTWVudSgpOworICAgIG1fcG9wdXBNZW51Q2xpZW50
ID0gMDsgICAgCit9CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OnNlbGVjdGlvbkNoYW5nZWQo
aW50IGluZGV4KQoreworICAgIGlmIChtX3BvcHVwTWVudUNsaWVudCkKKyAgICAgICAgbV9wb3B1
cE1lbnVDbGllbnQtPnNlbGVjdGlvbkNoYW5nZWQoaW5kZXgpOworfQorCit2b2lkIEV4dGVybmFs
UG9wdXBNZW51OjphY2NlcHRlZEluZGV4KGludCBpbmRleCkKK3sKKyAgICBpZiAobV9wb3B1cE1l
bnVDbGllbnQpIHsKKyAgICAgICAgbV9wb3B1cE1lbnVDbGllbnQtPnZhbHVlQ2hhbmdlZChpbmRl
eCk7CisJbV9wb3B1cE1lbnVDbGllbnQtPnBvcHVwRGlkSGlkZSgpOworICAgIH0KK30KKwordm9p
ZCBFeHRlcm5hbFBvcHVwTWVudTo6Y2FuY2VsZWQoKQoreworICAgIGlmIChtX3BvcHVwTWVudUNs
aWVudCkKKyAgICAgICAgbV9wb3B1cE1lbnVDbGllbnQtPnBvcHVwRGlkSGlkZSgpOworfQorCit2
b2lkIEV4dGVybmFsUG9wdXBNZW51OjpnZXRQb3B1cE1lbnVJbmZvKFdlYlBvcHVwTWVudUluZm8q
IGluZm8pCit7CisgICAgaW50IGl0ZW1Db3VudCA9IG1fcG9wdXBNZW51Q2xpZW50LT5saXN0U2l6
ZSgpOworICAgIFdlYlZlY3RvcjxXZWJQb3B1cE1lbnVJbmZvOjpJdGVtPiBpdGVtcygKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8c2l6ZV90PihpdGVtQ291bnQpKTsKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IGl0ZW1Db3VudDsgKytpKSB7CisgICAgICAgIFdlYlBvcHVwTWVudUluZm86Okl0ZW0mIHBv
cHVwSXRlbSA9IGl0ZW1zW2ldOworICAgICAgICBwb3B1cEl0ZW0ubGFiZWwgPSBtX3BvcHVwTWVu
dUNsaWVudC0+aXRlbVRleHQoaSk7CisgICAgICAgIGlmIChtX3BvcHVwTWVudUNsaWVudC0+aXRl
bUlzU2VwYXJhdG9yKGkpKQorICAgICAgICAgICAgcG9wdXBJdGVtLnR5cGUgPSBXZWJNZW51SXRl
bUluZm86OlNlcGFyYXRvcjsKKyAgICAgICAgZWxzZSBpZiAobV9wb3B1cE1lbnVDbGllbnQtPml0
ZW1Jc0xhYmVsKGkpKQorICAgICAgICAgICAgcG9wdXBJdGVtLnR5cGUgPSBXZWJNZW51SXRlbUlu
Zm86Okdyb3VwOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwb3B1cEl0ZW0udHlwZSA9IFdl
Yk1lbnVJdGVtSW5mbzo6T3B0aW9uOworICAgICAgICBwb3B1cEl0ZW0uZW5hYmxlZCA9IG1fcG9w
dXBNZW51Q2xpZW50LT5pdGVtSXNFbmFibGVkKGkpOworICAgIH0KKworICAgIGluZm8tPml0ZW1I
ZWlnaHQgPSBtX3BvcHVwTWVudUNsaWVudC0+bWVudVN0eWxlKCkuZm9udCgpLmhlaWdodCgpOwor
ICAgIGluZm8tPml0ZW1Gb250U2l6ZSA9CisgICAgICAgIHN0YXRpY19jYXN0PGludD4obV9wb3B1
cE1lbnVDbGllbnQtPm1lbnVTdHlsZSgpLmZvbnQoKS5zaXplKCkpOworICAgIGluZm8tPnNlbGVj
dGVkSW5kZXggPSBtX3BvcHVwTWVudUNsaWVudC0+c2VsZWN0ZWRJbmRleCgpOworICAgIGluZm8t
PnJpZ2h0QWxpZ25lZCA9CisgICAgICAgIG1fcG9wdXBNZW51Q2xpZW50LT5tZW51U3R5bGUoKS50
ZXh0RGlyZWN0aW9uKCkgPT0gV2ViQ29yZTo6UlRMOworICAgIGluZm8tPml0ZW1zLnN3YXAoaXRl
bXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvRXh0ZXJuYWxQb3B1cE1lbnUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3Jj
L0V4dGVybmFsUG9wdXBNZW51LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3Jj
L0V4dGVybmFsUG9wdXBNZW51LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEV4dGVybmFsUG9wdXBNZW51X2gKKyNkZWZpbmUgRXh0ZXJuYWxQb3B1cE1lbnVfaAorCisjaW5j
bHVkZSAiUG9wdXBNZW51LmgiCisjaW5jbHVkZSAiV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRnJhbWVWaWV3OworY2xhc3MgSW50UmVj
dDsKK2NsYXNzIFBvcHVwTWVudUNsaWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkV4dGVybmFsUG9wdXBNZW51OworY2xhc3MgV2ViVmlld0NsaWVudDsKK3N0cnVjdCBX
ZWJQb3B1cE1lbnVJbmZvOworCisvLyBUaGUgRXh0ZXJuYWxQb3B1cE1lbnUgY29ubmVjdHMgdGhl
IGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgcG9wdXAgbWVudQorLy8gdG8gdGhlIFdlYkNv
cmUgcG9wdXAgbWVudS4KK2NsYXNzIEV4dGVybmFsUG9wdXBNZW51IDogcHVibGljIFdlYkNvcmU6
OlBvcHVwTWVudSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYkV4dGVybmFs
UG9wdXBNZW51Q2xpZW50Cit7CitwdWJsaWM6CQkJCQkJCSAgCisgICAgRXh0ZXJuYWxQb3B1cE1l
bnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiwgV2ViVmlld0NsaWVudCopOworICAgIHZpcnR1
YWwgfkV4dGVybmFsUG9wdXBNZW51KCk7CisJCQkJCQkJICAKK3ByaXZhdGU6CisgICAgLy8gV2Vi
Q29yZTo6UG9wdXBNZW51IG1ldGhvZHM6CisgICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OkZyYW1lVmlldyosIGludCBpbmRleCk7CisgICAgdmly
dHVhbCB2b2lkIGhpZGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdENsaWVudCgpOworCisgICAgLy8gV2ViRXh0ZXJu
YWxQb3B1cENsaWVudCBtZXRob2RzOgorICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rpb25DaGFuZ2Vk
KGludCBpbmRleCk7CisgICAgdmlydHVhbCB2b2lkIGFjY2VwdGVkSW5kZXgoaW50IGluZGV4KTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsZWQoKTsKKworICAgIC8vIEZpbGxzIHxpbmZvfCB3aXRo
IHRoZSBwb3B1cCBtZW51IGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGUKKyAgICAvLyBXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgRXh0ZXJuYWxQb3B1cE1l
bnUuCisgICAgdm9pZCBnZXRQb3B1cE1lbnVJbmZvKFdlYlBvcHVwTWVudUluZm8qIGluZm8pOwor
CisgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBtX3BvcHVwTWVudUNsaWVudDsKKyAgICBX
ZWJWaWV3Q2xpZW50KiBtX3dlYlZpZXdDbGllbnQ7CisKKyAgICAvLyBUaGUgYWN0dWFsIGltcGxl
bWVudG9yIG9mIHRoZSBzaG93IG1lbnUuCisgICAgV2ViRXh0ZXJuYWxQb3B1cE1lbnUqIG1fd2Vi
RXh0ZXJuYWxQb3B1cE1lbnU7Cit9OyAKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFeHRlcm5hbFBvcHVwTWVudV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68313</attachid>
            <date>2010-09-21 17:17:28 -0700</date>
            <delta_ts>2010-09-21 17:24:44 -0700</delta_ts>
            <desc>Fixed style issues</desc>
            <filename>external_popup.patch</filename>
            <type>text/plain</type>
            <size>17859</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjc5OTEpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDktMjEgIEpheSBD
aXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkaW5nIGFuIEFQSSAoYmVoaW5k
IGEgZmxhZykgdGhhdCBhbGxvd3MgZXh0ZXJuYWwKKyAgICAgICAgcG9wdXAgbWVudXMsIHdpdGhv
dXQgdGhlIHVzZSBvZiBXZWJDb3JlOjpQb3B1cE1lbnVDaHJvbWl1bS4KKyAgICAgICAgT25jZSB0
aGlzIGlzIGhvb2tlZCB1cCBpbiBDaHJvbWl1bSwgdGhlIHBsYW4gaXMgdG8gcmVtb3ZlCisgICAg
ICAgIGVudGlyZWx5IHRoZSBleHRlcm5hbCBjYXNlIGZyb20gUG9wdXBNZW51Q2hyb21pdW0uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjAxNgorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1l
bnUuaDogQWRkZWQuCisgICAgICAgICogcHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50
Lmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJNZW51SXRlbUluZm8uaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViTWVudUl0ZW1JbmZvOjpXZWJNZW51SXRlbUluZm8pOgorICAgICAgICAqIHB1
YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmNy
ZWF0ZUV4dGVybmFsUG9wdXBNZW51KToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudSk6
CisgICAgICAgICogc3JjL0V4dGVybmFsUG9wdXBNZW51LmNwcDogQWRkZWQuCisgICAgICAgICog
c3JjL0V4dGVybmFsUG9wdXBNZW51Lmg6IEFkZGVkLgorCiAyMDEwLTA5LTIxICBKZXJlbXkgT3Js
b3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hh
cGluLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDY3OTczKQorKysgV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsOCBAQAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViRHJhZ0RhdGEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJFZGl0aW5nQWN0aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRWxlbWVu
dC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51LmgnLAor
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24uaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlclBhcmFtcy5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkZpbGVFcnJvci5oJywKQEAgLTMyMCw2ICszMjIsOCBAQAogICAgICAg
ICAgICAgICAgICdzcmMvRWRpdG9yQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L0V2ZW50TGlzdGVuZXJXcmFwcGVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9FdmVudExp
c3RlbmVyV3JhcHBlci5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0V4dGVybmFsUG9wdXBNZW51
LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9FeHRlcm5hbFBvcHVwTWVudS5oJywKICAgICAg
ICAgICAgICAgICAnc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMv
RnJhbWVOZXR3b3JraW5nQ29udGV4dEltcGwuaCcsCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkV4dGVybmFsUG9wdXBNZW51LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudS5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJFeHRlcm5hbFBvcHVwTWVudV9oCisjZGVmaW5lIFdlYkV4dGVy
bmFsUG9wdXBNZW51X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkV4dGVybmFs
UG9wdXBNZW51IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0V4dGVybmFsUG9wdXBN
ZW51KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZUV4dGVybmFsUG9wdXBNZW51KCkgPSAw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJFeHRlcm5hbFBv
cHVwTWVudV9oCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsUG9wdXBN
ZW51Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFeHRl
cm5hbFBvcHVwTWVudUNsaWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudF9oCisjZGVmaW5lIFdlYkV4
dGVybmFsUG9wdXBNZW51Q2xpZW50X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YkV4dGVybmFsUG9wdXBNZW51Q2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBTaG91bGQgYmUgY2Fs
bGVkIHdoZW4gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtIGluIHRoZSBwb3B1cCBtZW51Cisg
ICAgLy8gY2hhbmdlZC4gQ2FuIGJlIC0xIGlmIHRoZXJlIGlzIG5vIHNlbGVjdGlvbi4KKyAgICB2
aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChpbnQgaW5kZXgpID0gMDsKKworICAgIC8vIFNo
b3VsZCBiZSBjYWxsZWQgd2hlbiBhbiBpbmRleCBoYXMgYmVlbiBhY2NlcHRlZC4KKyAgICAvLyBO
b3RlIHRoYXQgaXQgaXMgbm90IHNhZmUgdG8gYWNjZXNzIHRoaXMgV2ViRXh0ZXJuYWxQb3B1cENs
aWVudE1lbnUgYWZ0ZXIKKyAgICAvLyB0aGlzIGhhcyBiZWVuIGNhbGxlZCBhcyBpdCBtaWdodCBu
b3QgYmUgdmFsaWQgYW55bW9yZS4KKyAgICB2aXJ0dWFsIHZvaWQgYWNjZXB0ZWRJbmRleChpbnQg
aW5kZXgpID0gMDsKKworICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgcG9wdXAgbWVu
dSB3YXMgZGlzY2FyZGVkIChjbG9zZWQgd2l0aG91dCBhCisgICAgLy8gc2VsZWN0aW9uLgorICAg
IC8vIE5vdGUgdGhhdCBpdCBpcyBub3Qgc2FmZSB0byBhY2Nlc3MgdGhpcyBXZWJFeHRlcm5hbFBv
cHVwQ2xpZW50TWVudSBhZnRlcgorICAgIC8vIHRoaXMgaGFzIGJlZW4gY2FsbGVkIGFzIGl0IG1p
Z2h0IG5vdCBiZSB2YWxpZCBhbnltb3JlLgorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxlZCgpID0g
MDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRXh0ZXJuYWxQ
b3B1cE1lbnVDbGllbnRfaApJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZW51SXRl
bUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lbnVJdGVt
SW5mby5oCShyZXZpc2lvbiA2Nzk3MykKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVu
dUl0ZW1JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDE1IEBAIHN0cnVjdCBXZWJN
ZW51SXRlbUluZm8gewogICAgICAgICBHcm91cCwKICAgICAgICAgU2VwYXJhdG9yLAogICAgIH07
CisKKyAgICBXZWJNZW51SXRlbUluZm8oKSAKKyAgICAgICAgOiB0eXBlKE9wdGlvbikKKyAgICAg
ICAgLCBhY3Rpb24oMCkKKyAgICAgICAgLCBlbmFibGVkKGZhbHNlKQorICAgICAgICAsIGNoZWNr
ZWQoZmFsc2UpCisgICAgeworICAgIH0KKwogICAgIFdlYlN0cmluZyBsYWJlbDsKICAgICBUeXBl
IHR5cGU7CiAgICAgdW5zaWduZWQgYWN0aW9uOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWV3Q2xpZW50LmgJKHJldmlzaW9uIDY3OTczKQorKysgV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgY2xhc3Mg
V2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
OwogY2xhc3MgV2ViRHJhZ0RhdGE7CiBjbGFzcyBXZWJFbGVtZW50OworY2xhc3MgV2ViRXh0ZXJu
YWxQb3B1cE1lbnU7CitjbGFzcyBXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIFdl
YkZpbGVDaG9vc2VyQ29tcGxldGlvbjsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViR2VvbG9j
YXRpb25TZXJ2aWNlOwpAQCAtODcsNiArODksOCBAQCBwdWJsaWM6CiAgICAgLy8gcmVzcG9uc2li
bGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudHMgb2YgdGhlIHBvcHVwIG1lbnUuCiAgICAgdmly
dHVhbCBXZWJXaWRnZXQqIGNyZWF0ZVBvcHVwTWVudShXZWJQb3B1cFR5cGUpIHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIFdlYldpZGdldCogY3JlYXRlUG9wdXBNZW51KGNvbnN0IFdlYlBvcHVw
TWVudUluZm8mKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBXZWJFeHRlcm5hbFBvcHVwTWVu
dSogY3JlYXRlRXh0ZXJuYWxQb3B1cE1lbnUoCisgICAgICAgIGNvbnN0IFdlYlBvcHVwTWVudUlu
Zm8mLCBXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudCopIHsgcmV0dXJuIDA7IH0KIAogICAgIC8v
IENyZWF0ZSBhIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2Ugb2JqZWN0IGFzc29jaWF0ZWQgd2l0
aCB0aGlzIFdlYlZpZXcuCiAgICAgdmlydHVhbCBXZWJTdG9yYWdlTmFtZXNwYWNlKiBjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgeyByZXR1cm4gMDsgfQpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA2Nzk3
MykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVk
ZSAiRXh0ZXJuYWxQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKQEAgLTg0OSw3
ICs4NTAsMTEgQEAgYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpzZWxlY3RJdGVtV3JpdGluZwogCiBQ
YXNzUmVmUHRyPFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51KFBv
cHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAogeworI2lmIGRlZmluZWQoRVhURVJOQUxfUE9Q
VVApCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFeHRlcm5hbFBvcHVwTWVudShjbGllbnQsIG1f
d2ViVmlldy0+Y2xpZW50KCkpKTsKKyNlbHNlCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1
cE1lbnVDaHJvbWl1bShjbGllbnQpKTsKKyNlbmRpZgogfQogCiBQYXNzUmVmUHRyPFNlYXJjaFBv
cHVwTWVudT4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVu
dUNsaWVudCogY2xpZW50KSBjb25zdApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlcm5h
bFBvcHVwTWVudS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlcm5h
bFBvcHVwTWVudS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVy
bmFsUG9wdXBNZW51LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRXh0ZXJuYWxQb3B1cE1lbnUuaCIKKworI2luY2x1ZGUgIlBv
cHVwTWVudUNsaWVudC5oIgorI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKKyNpbmNsdWRlICJX
ZWJFeHRlcm5hbFBvcHVwTWVudS5oIgorI2luY2x1ZGUgIldlYk1lbnVJdGVtSW5mby5oIgorI2lu
Y2x1ZGUgIldlYlBvcHVwTWVudUluZm8uaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKyNpbmNs
dWRlICJXZWJWaWV3Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitFeHRlcm5hbFBv
cHVwTWVudTo6RXh0ZXJuYWxQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBwb3B1
cE1lbnVDbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVmll
d0NsaWVudCogd2ViVmlld0NsaWVudCkKKyAgICA6IG1fcG9wdXBNZW51Q2xpZW50KHBvcHVwTWVu
dUNsaWVudCkKKyAgICAsIG1fd2ViVmlld0NsaWVudCh3ZWJWaWV3Q2xpZW50KQorICAgICwgbV93
ZWJFeHRlcm5hbFBvcHVwTWVudSgwKQoreworfQorCitFeHRlcm5hbFBvcHVwTWVudTo6fkV4dGVy
bmFsUG9wdXBNZW51KCkKK3sKK30KKwordm9pZCBFeHRlcm5hbFBvcHVwTWVudTo6c2hvdyhjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29y
ZTo6RnJhbWVWaWV3KiwgaW50IGluZGV4KSAKK3sKKyAgICAvLyBXZWJDb3JlIHJldXNlcyB0aGUg
UG9wdXBNZW51IG9mIGEgcGFnZS4KKyAgICAvLyBGb3Igc2ltcGxpY2l0eSwgd2UgZG8gcmVjcmVh
dGUgdGhlIGFjdHVhbCBleHRlcm5hbCBwb3B1cCBldmVyeXRpbWUuCisgICAgaWYgKG1fd2ViRXh0
ZXJuYWxQb3B1cE1lbnUpCisgICAgICAgIG1fd2ViRXh0ZXJuYWxQb3B1cE1lbnUtPmNsb3NlRXh0
ZXJuYWxQb3B1cE1lbnUoKTsKKyAgICBXZWJQb3B1cE1lbnVJbmZvIGluZm87CisgICAgZ2V0UG9w
dXBNZW51SW5mbygmaW5mbyk7CisgICAgbV93ZWJFeHRlcm5hbFBvcHVwTWVudSA9CisgICAgICAg
IG1fd2ViVmlld0NsaWVudC0+Y3JlYXRlRXh0ZXJuYWxQb3B1cE1lbnUoaW5mbywgdGhpcyk7Cisg
ICAgbV93ZWJFeHRlcm5hbFBvcHVwTWVudS0+c2hvd0V4dGVybmFsUG9wdXBNZW51KCk7Cit9CisK
K3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OmhpZGUoKQoreworICAgIG1fd2ViRXh0ZXJuYWxQb3B1
cE1lbnUtPmNsb3NlRXh0ZXJuYWxQb3B1cE1lbnUoKTsKKyAgICBtX3dlYkV4dGVybmFsUG9wdXBN
ZW51ID0gMDsKK30KKwordm9pZCBFeHRlcm5hbFBvcHVwTWVudTo6dXBkYXRlRnJvbUVsZW1lbnQo
KQoreworfQorCit2b2lkIEV4dGVybmFsUG9wdXBNZW51OjpkaXNjb25uZWN0Q2xpZW50KCkKK3sK
KyAgICBpZiAobV93ZWJFeHRlcm5hbFBvcHVwTWVudSkKKyAgICAgICAgbV93ZWJFeHRlcm5hbFBv
cHVwTWVudS0+Y2xvc2VFeHRlcm5hbFBvcHVwTWVudSgpOworICAgIG1fcG9wdXBNZW51Q2xpZW50
ID0gMDsgICAgCit9CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OnNlbGVjdGlvbkNoYW5nZWQo
aW50IGluZGV4KQoreworICAgIGlmIChtX3BvcHVwTWVudUNsaWVudCkKKyAgICAgICAgbV9wb3B1
cE1lbnVDbGllbnQtPnNlbGVjdGlvbkNoYW5nZWQoaW5kZXgpOworfQorCit2b2lkIEV4dGVybmFs
UG9wdXBNZW51OjphY2NlcHRlZEluZGV4KGludCBpbmRleCkKK3sKKyAgICBpZiAobV9wb3B1cE1l
bnVDbGllbnQpIHsKKyAgICAgICAgbV9wb3B1cE1lbnVDbGllbnQtPnZhbHVlQ2hhbmdlZChpbmRl
eCk7CisgICAgICAgIG1fcG9wdXBNZW51Q2xpZW50LT5wb3B1cERpZEhpZGUoKTsKKyAgICB9Cit9
CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OmNhbmNlbGVkKCkKK3sKKyAgICBpZiAobV9wb3B1
cE1lbnVDbGllbnQpCisgICAgICAgIG1fcG9wdXBNZW51Q2xpZW50LT5wb3B1cERpZEhpZGUoKTsK
K30KKwordm9pZCBFeHRlcm5hbFBvcHVwTWVudTo6Z2V0UG9wdXBNZW51SW5mbyhXZWJQb3B1cE1l
bnVJbmZvKiBpbmZvKQoreworICAgIGludCBpdGVtQ291bnQgPSBtX3BvcHVwTWVudUNsaWVudC0+
bGlzdFNpemUoKTsKKyAgICBXZWJWZWN0b3I8V2ViUG9wdXBNZW51SW5mbzo6SXRlbT4gaXRlbXMo
CisgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4oaXRlbUNvdW50KSk7CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBpdGVtQ291bnQ7ICsraSkgeworICAgICAgICBXZWJQb3B1cE1lbnVJbmZvOjpJ
dGVtJiBwb3B1cEl0ZW0gPSBpdGVtc1tpXTsKKyAgICAgICAgcG9wdXBJdGVtLmxhYmVsID0gbV9w
b3B1cE1lbnVDbGllbnQtPml0ZW1UZXh0KGkpOworICAgICAgICBpZiAobV9wb3B1cE1lbnVDbGll
bnQtPml0ZW1Jc1NlcGFyYXRvcihpKSkKKyAgICAgICAgICAgIHBvcHVwSXRlbS50eXBlID0gV2Vi
TWVudUl0ZW1JbmZvOjpTZXBhcmF0b3I7CisgICAgICAgIGVsc2UgaWYgKG1fcG9wdXBNZW51Q2xp
ZW50LT5pdGVtSXNMYWJlbChpKSkKKyAgICAgICAgICAgIHBvcHVwSXRlbS50eXBlID0gV2ViTWVu
dUl0ZW1JbmZvOjpHcm91cDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcG9wdXBJdGVtLnR5
cGUgPSBXZWJNZW51SXRlbUluZm86Ok9wdGlvbjsKKyAgICAgICAgcG9wdXBJdGVtLmVuYWJsZWQg
PSBtX3BvcHVwTWVudUNsaWVudC0+aXRlbUlzRW5hYmxlZChpKTsKKyAgICB9CisKKyAgICBpbmZv
LT5pdGVtSGVpZ2h0ID0gbV9wb3B1cE1lbnVDbGllbnQtPm1lbnVTdHlsZSgpLmZvbnQoKS5oZWln
aHQoKTsKKyAgICBpbmZvLT5pdGVtRm9udFNpemUgPQorICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+
KG1fcG9wdXBNZW51Q2xpZW50LT5tZW51U3R5bGUoKS5mb250KCkuc2l6ZSgpKTsKKyAgICBpbmZv
LT5zZWxlY3RlZEluZGV4ID0gbV9wb3B1cE1lbnVDbGllbnQtPnNlbGVjdGVkSW5kZXgoKTsKKyAg
ICBpbmZvLT5yaWdodEFsaWduZWQgPQorICAgICAgICBtX3BvcHVwTWVudUNsaWVudC0+bWVudVN0
eWxlKCkudGV4dERpcmVjdGlvbigpID09IFdlYkNvcmU6OlJUTDsKKyAgICBpbmZvLT5pdGVtcy5z
d2FwKGl0ZW1zKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL0V4dGVybmFsUG9wdXBNZW51LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3NyYy9FeHRlcm5hbFBvcHVwTWVudS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9t
aXVtL3NyYy9FeHRlcm5hbFBvcHVwTWVudS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBFeHRlcm5hbFBvcHVwTWVudV9oCisjZGVmaW5lIEV4dGVybmFsUG9wdXBNZW51X2gK
KworI2luY2x1ZGUgIlBvcHVwTWVudS5oIgorI2luY2x1ZGUgIldlYkV4dGVybmFsUG9wdXBNZW51
Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZyYW1lVmlldzsKK2NsYXNz
IEludFJlY3Q7CitjbGFzcyBQb3B1cE1lbnVDbGllbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJFeHRlcm5hbFBvcHVwTWVudTsKK2NsYXNzIFdlYlZpZXdDbGllbnQ7Citz
dHJ1Y3QgV2ViUG9wdXBNZW51SW5mbzsKKworLy8gVGhlIEV4dGVybmFsUG9wdXBNZW51IGNvbm5l
Y3RzIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIHBvcHVwIG1lbnUKKy8vIHRvIHRo
ZSBXZWJDb3JlIHBvcHVwIG1lbnUuCitjbGFzcyBFeHRlcm5hbFBvcHVwTWVudSA6IHB1YmxpYyBX
ZWJDb3JlOjpQb3B1cE1lbnUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJF
eHRlcm5hbFBvcHVwTWVudUNsaWVudCB7CitwdWJsaWM6CisgICAgRXh0ZXJuYWxQb3B1cE1lbnUo
V2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiwgV2ViVmlld0NsaWVudCopOworICAgIHZpcnR1YWwg
fkV4dGVybmFsUG9wdXBNZW51KCk7CisJCQkgIAorcHJpdmF0ZToKKyAgICAvLyBXZWJDb3JlOjpQ
b3B1cE1lbnUgbWV0aG9kczoKKyAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgV2ViQ29yZTo6RnJhbWVWaWV3KiwgaW50IGluZGV4KTsKKyAgICB2aXJ0dWFsIHZv
aWQgaGlkZSgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpOworICAgIHZp
cnR1YWwgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7CisKKyAgICAvLyBXZWJFeHRlcm5hbFBvcHVw
Q2xpZW50IG1ldGhvZHM6CisgICAgdmlydHVhbCB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoaW50IGlu
ZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWNjZXB0ZWRJbmRleChpbnQgaW5kZXgpOworICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWxlZCgpOworCisgICAgLy8gRmlsbHMgfGluZm98IHdpdGggdGhlIHBv
cHVwIG1lbnUgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRoZQorICAgIC8vIFdlYkNvcmU6OlBv
cHVwTWVudUNsaWVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyBFeHRlcm5hbFBvcHVwTWVudS4KKyAg
ICB2b2lkIGdldFBvcHVwTWVudUluZm8oV2ViUG9wdXBNZW51SW5mbyogaW5mbyk7CisKKyAgICBX
ZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIG1fcG9wdXBNZW51Q2xpZW50OworICAgIFdlYlZpZXdD
bGllbnQqIG1fd2ViVmlld0NsaWVudDsKKworICAgIC8vIFRoZSBhY3R1YWwgaW1wbGVtZW50b3Ig
b2YgdGhlIHNob3cgbWVudS4KKyAgICBXZWJFeHRlcm5hbFBvcHVwTWVudSogbV93ZWJFeHRlcm5h
bFBvcHVwTWVudTsKK307IAorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEV4
dGVybmFsUG9wdXBNZW51X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68316</attachid>
            <date>2010-09-21 17:24:44 -0700</date>
            <delta_ts>2010-10-07 14:59:08 -0700</delta_ts>
            <desc>Fixing style take 2</desc>
            <filename>external_popup.patch</filename>
            <type>text/plain</type>
            <size>17854</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjc5OTEpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDktMjEgIEpheSBD
aXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkaW5nIGFuIEFQSSAoYmVoaW5k
IGEgZmxhZykgdGhhdCBhbGxvd3MgZXh0ZXJuYWwKKyAgICAgICAgcG9wdXAgbWVudXMsIHdpdGhv
dXQgdGhlIHVzZSBvZiBXZWJDb3JlOjpQb3B1cE1lbnVDaHJvbWl1bS4KKyAgICAgICAgT25jZSB0
aGlzIGlzIGhvb2tlZCB1cCBpbiBDaHJvbWl1bSwgdGhlIHBsYW4gaXMgdG8gcmVtb3ZlCisgICAg
ICAgIGVudGlyZWx5IHRoZSBleHRlcm5hbCBjYXNlIGZyb20gUG9wdXBNZW51Q2hyb21pdW0uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjAxNgorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1l
bnUuaDogQWRkZWQuCisgICAgICAgICogcHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50
Lmg6IEFkZGVkLgorICAgICAgICAqIHB1YmxpYy9XZWJNZW51SXRlbUluZm8uaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViTWVudUl0ZW1JbmZvOjpXZWJNZW51SXRlbUluZm8pOgorICAgICAgICAqIHB1
YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmNy
ZWF0ZUV4dGVybmFsUG9wdXBNZW51KToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudSk6
CisgICAgICAgICogc3JjL0V4dGVybmFsUG9wdXBNZW51LmNwcDogQWRkZWQuCisgICAgICAgICog
c3JjL0V4dGVybmFsUG9wdXBNZW51Lmg6IEFkZGVkLgorCiAyMDEwLTA5LTIxICBKZXJlbXkgT3Js
b3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hh
cGluLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDY3OTczKQorKysgV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsOCBAQAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViRHJhZ0RhdGEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJFZGl0aW5nQWN0aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRWxlbWVu
dC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51LmgnLAor
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24uaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlclBhcmFtcy5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkZpbGVFcnJvci5oJywKQEAgLTMyMCw2ICszMjIsOCBAQAogICAgICAg
ICAgICAgICAgICdzcmMvRWRpdG9yQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L0V2ZW50TGlzdGVuZXJXcmFwcGVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9FdmVudExp
c3RlbmVyV3JhcHBlci5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0V4dGVybmFsUG9wdXBNZW51
LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9FeHRlcm5hbFBvcHVwTWVudS5oJywKICAgICAg
ICAgICAgICAgICAnc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMv
RnJhbWVOZXR3b3JraW5nQ29udGV4dEltcGwuaCcsCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkV4dGVybmFsUG9wdXBNZW51LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudS5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJFeHRlcm5hbFBvcHVwTWVudV9oCisjZGVmaW5lIFdlYkV4dGVy
bmFsUG9wdXBNZW51X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkV4dGVybmFs
UG9wdXBNZW51IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0V4dGVybmFsUG9wdXBN
ZW51KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZUV4dGVybmFsUG9wdXBNZW51KCkgPSAw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJFeHRlcm5hbFBv
cHVwTWVudV9oCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsUG9wdXBN
ZW51Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFeHRl
cm5hbFBvcHVwTWVudUNsaWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudF9oCisjZGVmaW5lIFdlYkV4
dGVybmFsUG9wdXBNZW51Q2xpZW50X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YkV4dGVybmFsUG9wdXBNZW51Q2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBTaG91bGQgYmUgY2Fs
bGVkIHdoZW4gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtIGluIHRoZSBwb3B1cCBtZW51Cisg
ICAgLy8gY2hhbmdlZC4gQ2FuIGJlIC0xIGlmIHRoZXJlIGlzIG5vIHNlbGVjdGlvbi4KKyAgICB2
aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChpbnQgaW5kZXgpID0gMDsKKworICAgIC8vIFNo
b3VsZCBiZSBjYWxsZWQgd2hlbiBhbiBpbmRleCBoYXMgYmVlbiBhY2NlcHRlZC4KKyAgICAvLyBO
b3RlIHRoYXQgaXQgaXMgbm90IHNhZmUgdG8gYWNjZXNzIHRoaXMgV2ViRXh0ZXJuYWxQb3B1cENs
aWVudE1lbnUgYWZ0ZXIKKyAgICAvLyB0aGlzIGhhcyBiZWVuIGNhbGxlZCBhcyBpdCBtaWdodCBu
b3QgYmUgdmFsaWQgYW55bW9yZS4KKyAgICB2aXJ0dWFsIHZvaWQgYWNjZXB0ZWRJbmRleChpbnQg
aW5kZXgpID0gMDsKKworICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgcG9wdXAgbWVu
dSB3YXMgZGlzY2FyZGVkIChjbG9zZWQgd2l0aG91dCBhCisgICAgLy8gc2VsZWN0aW9uLgorICAg
IC8vIE5vdGUgdGhhdCBpdCBpcyBub3Qgc2FmZSB0byBhY2Nlc3MgdGhpcyBXZWJFeHRlcm5hbFBv
cHVwQ2xpZW50TWVudSBhZnRlcgorICAgIC8vIHRoaXMgaGFzIGJlZW4gY2FsbGVkIGFzIGl0IG1p
Z2h0IG5vdCBiZSB2YWxpZCBhbnltb3JlLgorICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxlZCgpID0g
MDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRXh0ZXJuYWxQ
b3B1cE1lbnVDbGllbnRfaApJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZW51SXRl
bUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lbnVJdGVt
SW5mby5oCShyZXZpc2lvbiA2Nzk3MykKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVu
dUl0ZW1JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDE1IEBAIHN0cnVjdCBXZWJN
ZW51SXRlbUluZm8gewogICAgICAgICBHcm91cCwKICAgICAgICAgU2VwYXJhdG9yLAogICAgIH07
CisKKyAgICBXZWJNZW51SXRlbUluZm8oKSAKKyAgICAgICAgOiB0eXBlKE9wdGlvbikKKyAgICAg
ICAgLCBhY3Rpb24oMCkKKyAgICAgICAgLCBlbmFibGVkKGZhbHNlKQorICAgICAgICAsIGNoZWNr
ZWQoZmFsc2UpCisgICAgeworICAgIH0KKwogICAgIFdlYlN0cmluZyBsYWJlbDsKICAgICBUeXBl
IHR5cGU7CiAgICAgdW5zaWduZWQgYWN0aW9uOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWV3Q2xpZW50LmgJKHJldmlzaW9uIDY3OTczKQorKysgV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgY2xhc3Mg
V2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
OwogY2xhc3MgV2ViRHJhZ0RhdGE7CiBjbGFzcyBXZWJFbGVtZW50OworY2xhc3MgV2ViRXh0ZXJu
YWxQb3B1cE1lbnU7CitjbGFzcyBXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIFdl
YkZpbGVDaG9vc2VyQ29tcGxldGlvbjsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViR2VvbG9j
YXRpb25TZXJ2aWNlOwpAQCAtODcsNiArODksOCBAQCBwdWJsaWM6CiAgICAgLy8gcmVzcG9uc2li
bGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudHMgb2YgdGhlIHBvcHVwIG1lbnUuCiAgICAgdmly
dHVhbCBXZWJXaWRnZXQqIGNyZWF0ZVBvcHVwTWVudShXZWJQb3B1cFR5cGUpIHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIFdlYldpZGdldCogY3JlYXRlUG9wdXBNZW51KGNvbnN0IFdlYlBvcHVw
TWVudUluZm8mKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBXZWJFeHRlcm5hbFBvcHVwTWVu
dSogY3JlYXRlRXh0ZXJuYWxQb3B1cE1lbnUoCisgICAgICAgIGNvbnN0IFdlYlBvcHVwTWVudUlu
Zm8mLCBXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudCopIHsgcmV0dXJuIDA7IH0KIAogICAgIC8v
IENyZWF0ZSBhIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2Ugb2JqZWN0IGFzc29jaWF0ZWQgd2l0
aCB0aGlzIFdlYlZpZXcuCiAgICAgdmlydHVhbCBXZWJTdG9yYWdlTmFtZXNwYWNlKiBjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgeyByZXR1cm4gMDsgfQpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA2Nzk3
MykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVk
ZSAiRXh0ZXJuYWxQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKQEAgLTg0OSw3
ICs4NTAsMTEgQEAgYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpzZWxlY3RJdGVtV3JpdGluZwogCiBQ
YXNzUmVmUHRyPFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51KFBv
cHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAogeworI2lmIGRlZmluZWQoRVhURVJOQUxfUE9Q
VVApCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFeHRlcm5hbFBvcHVwTWVudShjbGllbnQsIG1f
d2ViVmlldy0+Y2xpZW50KCkpKTsKKyNlbHNlCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1
cE1lbnVDaHJvbWl1bShjbGllbnQpKTsKKyNlbmRpZgogfQogCiBQYXNzUmVmUHRyPFNlYXJjaFBv
cHVwTWVudT4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVu
dUNsaWVudCogY2xpZW50KSBjb25zdApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlcm5h
bFBvcHVwTWVudS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlcm5h
bFBvcHVwTWVudS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVy
bmFsUG9wdXBNZW51LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRXh0ZXJuYWxQb3B1cE1lbnUuaCIKKworI2luY2x1ZGUgIlBv
cHVwTWVudUNsaWVudC5oIgorI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKKyNpbmNsdWRlICJX
ZWJFeHRlcm5hbFBvcHVwTWVudS5oIgorI2luY2x1ZGUgIldlYk1lbnVJdGVtSW5mby5oIgorI2lu
Y2x1ZGUgIldlYlBvcHVwTWVudUluZm8uaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKyNpbmNs
dWRlICJXZWJWaWV3Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitFeHRlcm5hbFBv
cHVwTWVudTo6RXh0ZXJuYWxQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBwb3B1
cE1lbnVDbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVmll
d0NsaWVudCogd2ViVmlld0NsaWVudCkKKyAgICA6IG1fcG9wdXBNZW51Q2xpZW50KHBvcHVwTWVu
dUNsaWVudCkKKyAgICAsIG1fd2ViVmlld0NsaWVudCh3ZWJWaWV3Q2xpZW50KQorICAgICwgbV93
ZWJFeHRlcm5hbFBvcHVwTWVudSgwKQoreworfQorCitFeHRlcm5hbFBvcHVwTWVudTo6fkV4dGVy
bmFsUG9wdXBNZW51KCkKK3sKK30KKwordm9pZCBFeHRlcm5hbFBvcHVwTWVudTo6c2hvdyhjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29y
ZTo6RnJhbWVWaWV3KiwgaW50IGluZGV4KSAKK3sKKyAgICAvLyBXZWJDb3JlIHJldXNlcyB0aGUg
UG9wdXBNZW51IG9mIGEgcGFnZS4KKyAgICAvLyBGb3Igc2ltcGxpY2l0eSwgd2UgZG8gcmVjcmVh
dGUgdGhlIGFjdHVhbCBleHRlcm5hbCBwb3B1cCBldmVyeXRpbWUuCisgICAgaWYgKG1fd2ViRXh0
ZXJuYWxQb3B1cE1lbnUpCisgICAgICAgIG1fd2ViRXh0ZXJuYWxQb3B1cE1lbnUtPmNsb3NlRXh0
ZXJuYWxQb3B1cE1lbnUoKTsKKyAgICBXZWJQb3B1cE1lbnVJbmZvIGluZm87CisgICAgZ2V0UG9w
dXBNZW51SW5mbygmaW5mbyk7CisgICAgbV93ZWJFeHRlcm5hbFBvcHVwTWVudSA9CisgICAgICAg
IG1fd2ViVmlld0NsaWVudC0+Y3JlYXRlRXh0ZXJuYWxQb3B1cE1lbnUoaW5mbywgdGhpcyk7Cisg
ICAgbV93ZWJFeHRlcm5hbFBvcHVwTWVudS0+c2hvd0V4dGVybmFsUG9wdXBNZW51KCk7Cit9CisK
K3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OmhpZGUoKQoreworICAgIG1fd2ViRXh0ZXJuYWxQb3B1
cE1lbnUtPmNsb3NlRXh0ZXJuYWxQb3B1cE1lbnUoKTsKKyAgICBtX3dlYkV4dGVybmFsUG9wdXBN
ZW51ID0gMDsKK30KKwordm9pZCBFeHRlcm5hbFBvcHVwTWVudTo6dXBkYXRlRnJvbUVsZW1lbnQo
KQoreworfQorCit2b2lkIEV4dGVybmFsUG9wdXBNZW51OjpkaXNjb25uZWN0Q2xpZW50KCkKK3sK
KyAgICBpZiAobV93ZWJFeHRlcm5hbFBvcHVwTWVudSkKKyAgICAgICAgbV93ZWJFeHRlcm5hbFBv
cHVwTWVudS0+Y2xvc2VFeHRlcm5hbFBvcHVwTWVudSgpOworICAgIG1fcG9wdXBNZW51Q2xpZW50
ID0gMDsgICAgCit9CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OnNlbGVjdGlvbkNoYW5nZWQo
aW50IGluZGV4KQoreworICAgIGlmIChtX3BvcHVwTWVudUNsaWVudCkKKyAgICAgICAgbV9wb3B1
cE1lbnVDbGllbnQtPnNlbGVjdGlvbkNoYW5nZWQoaW5kZXgpOworfQorCit2b2lkIEV4dGVybmFs
UG9wdXBNZW51OjphY2NlcHRlZEluZGV4KGludCBpbmRleCkKK3sKKyAgICBpZiAobV9wb3B1cE1l
bnVDbGllbnQpIHsKKyAgICAgICAgbV9wb3B1cE1lbnVDbGllbnQtPnZhbHVlQ2hhbmdlZChpbmRl
eCk7CisgICAgICAgIG1fcG9wdXBNZW51Q2xpZW50LT5wb3B1cERpZEhpZGUoKTsKKyAgICB9Cit9
CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OmNhbmNlbGVkKCkKK3sKKyAgICBpZiAobV9wb3B1
cE1lbnVDbGllbnQpCisgICAgICAgIG1fcG9wdXBNZW51Q2xpZW50LT5wb3B1cERpZEhpZGUoKTsK
K30KKwordm9pZCBFeHRlcm5hbFBvcHVwTWVudTo6Z2V0UG9wdXBNZW51SW5mbyhXZWJQb3B1cE1l
bnVJbmZvKiBpbmZvKQoreworICAgIGludCBpdGVtQ291bnQgPSBtX3BvcHVwTWVudUNsaWVudC0+
bGlzdFNpemUoKTsKKyAgICBXZWJWZWN0b3I8V2ViUG9wdXBNZW51SW5mbzo6SXRlbT4gaXRlbXMo
CisgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4oaXRlbUNvdW50KSk7CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBpdGVtQ291bnQ7ICsraSkgeworICAgICAgICBXZWJQb3B1cE1lbnVJbmZvOjpJ
dGVtJiBwb3B1cEl0ZW0gPSBpdGVtc1tpXTsKKyAgICAgICAgcG9wdXBJdGVtLmxhYmVsID0gbV9w
b3B1cE1lbnVDbGllbnQtPml0ZW1UZXh0KGkpOworICAgICAgICBpZiAobV9wb3B1cE1lbnVDbGll
bnQtPml0ZW1Jc1NlcGFyYXRvcihpKSkKKyAgICAgICAgICAgIHBvcHVwSXRlbS50eXBlID0gV2Vi
TWVudUl0ZW1JbmZvOjpTZXBhcmF0b3I7CisgICAgICAgIGVsc2UgaWYgKG1fcG9wdXBNZW51Q2xp
ZW50LT5pdGVtSXNMYWJlbChpKSkKKyAgICAgICAgICAgIHBvcHVwSXRlbS50eXBlID0gV2ViTWVu
dUl0ZW1JbmZvOjpHcm91cDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcG9wdXBJdGVtLnR5
cGUgPSBXZWJNZW51SXRlbUluZm86Ok9wdGlvbjsKKyAgICAgICAgcG9wdXBJdGVtLmVuYWJsZWQg
PSBtX3BvcHVwTWVudUNsaWVudC0+aXRlbUlzRW5hYmxlZChpKTsKKyAgICB9CisKKyAgICBpbmZv
LT5pdGVtSGVpZ2h0ID0gbV9wb3B1cE1lbnVDbGllbnQtPm1lbnVTdHlsZSgpLmZvbnQoKS5oZWln
aHQoKTsKKyAgICBpbmZvLT5pdGVtRm9udFNpemUgPQorICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+
KG1fcG9wdXBNZW51Q2xpZW50LT5tZW51U3R5bGUoKS5mb250KCkuc2l6ZSgpKTsKKyAgICBpbmZv
LT5zZWxlY3RlZEluZGV4ID0gbV9wb3B1cE1lbnVDbGllbnQtPnNlbGVjdGVkSW5kZXgoKTsKKyAg
ICBpbmZvLT5yaWdodEFsaWduZWQgPQorICAgICAgICBtX3BvcHVwTWVudUNsaWVudC0+bWVudVN0
eWxlKCkudGV4dERpcmVjdGlvbigpID09IFdlYkNvcmU6OlJUTDsKKyAgICBpbmZvLT5pdGVtcy5z
d2FwKGl0ZW1zKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL0V4dGVybmFsUG9wdXBNZW51LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3NyYy9FeHRlcm5hbFBvcHVwTWVudS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9t
aXVtL3NyYy9FeHRlcm5hbFBvcHVwTWVudS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBFeHRlcm5hbFBvcHVwTWVudV9oCisjZGVmaW5lIEV4dGVybmFsUG9wdXBNZW51X2gK
KworI2luY2x1ZGUgIlBvcHVwTWVudS5oIgorI2luY2x1ZGUgIldlYkV4dGVybmFsUG9wdXBNZW51
Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZyYW1lVmlldzsKK2NsYXNz
IEludFJlY3Q7CitjbGFzcyBQb3B1cE1lbnVDbGllbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJFeHRlcm5hbFBvcHVwTWVudTsKK2NsYXNzIFdlYlZpZXdDbGllbnQ7Citz
dHJ1Y3QgV2ViUG9wdXBNZW51SW5mbzsKKworLy8gVGhlIEV4dGVybmFsUG9wdXBNZW51IGNvbm5l
Y3RzIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIHBvcHVwIG1lbnUKKy8vIHRvIHRo
ZSBXZWJDb3JlIHBvcHVwIG1lbnUuCitjbGFzcyBFeHRlcm5hbFBvcHVwTWVudSA6IHB1YmxpYyBX
ZWJDb3JlOjpQb3B1cE1lbnUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJF
eHRlcm5hbFBvcHVwTWVudUNsaWVudCB7CitwdWJsaWM6CisgICAgRXh0ZXJuYWxQb3B1cE1lbnUo
V2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiwgV2ViVmlld0NsaWVudCopOworICAgIHZpcnR1YWwg
fkV4dGVybmFsUG9wdXBNZW51KCk7CisKK3ByaXZhdGU6CisgICAgLy8gV2ViQ29yZTo6UG9wdXBN
ZW51IG1ldGhvZHM6CisgICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIFdlYkNvcmU6OkZyYW1lVmlldyosIGludCBpbmRleCk7CisgICAgdmlydHVhbCB2b2lkIGhp
ZGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzY29ubmVjdENsaWVudCgpOworCisgICAgLy8gV2ViRXh0ZXJuYWxQb3B1cENsaWVu
dCBtZXRob2RzOgorICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKGludCBpbmRleCk7
CisgICAgdmlydHVhbCB2b2lkIGFjY2VwdGVkSW5kZXgoaW50IGluZGV4KTsKKyAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsZWQoKTsKKworICAgIC8vIEZpbGxzIHxpbmZvfCB3aXRoIHRoZSBwb3B1cCBt
ZW51IGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGUKKyAgICAvLyBXZWJDb3JlOjpQb3B1cE1l
bnVDbGllbnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgRXh0ZXJuYWxQb3B1cE1lbnUuCisgICAgdm9p
ZCBnZXRQb3B1cE1lbnVJbmZvKFdlYlBvcHVwTWVudUluZm8qIGluZm8pOworCisgICAgV2ViQ29y
ZTo6UG9wdXBNZW51Q2xpZW50KiBtX3BvcHVwTWVudUNsaWVudDsKKyAgICBXZWJWaWV3Q2xpZW50
KiBtX3dlYlZpZXdDbGllbnQ7CisKKyAgICAvLyBUaGUgYWN0dWFsIGltcGxlbWVudG9yIG9mIHRo
ZSBzaG93IG1lbnUuCisgICAgV2ViRXh0ZXJuYWxQb3B1cE1lbnUqIG1fd2ViRXh0ZXJuYWxQb3B1
cE1lbnU7Cit9OyAKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFeHRlcm5h
bFBvcHVwTWVudV9oCg==
</data>
<flag name="review"
          id="57825"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70156</attachid>
            <date>2010-10-07 14:59:08 -0700</date>
            <delta_ts>2010-10-12 09:55:46 -0700</delta_ts>
            <desc>Applied fishd suggested changes</desc>
            <filename>external_popup_v2.patch</filename>
            <type>text/plain</type>
            <size>18140</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2NzA4OSkKKysrIFdlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wOS0yMSAgSmF5
IENpdmVsbGkgIDxqY2l2ZWxsaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBBZGRpbmcgYW4gQVBJIChiZWhp
bmQgYSBmbGFnKSB0aGF0IGFsbG93cyBleHRlcm5hbAorICAgICAgICBwb3B1cCBtZW51cywgd2l0
aG91dCB0aGUgdXNlIG9mIFdlYkNvcmU6OlBvcHVwTWVudUNocm9taXVtLgorICAgICAgICBPbmNl
IHRoaXMgaXMgaG9va2VkIHVwIGluIENocm9taXVtLCB0aGUgcGxhbiBpcyB0byByZW1vdmUKKyAg
ICAgICAgZW50aXJlbHkgdGhlIGV4dGVybmFsIGNhc2UgZnJvbSBQb3B1cE1lbnVDaHJvbWl1bS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDE2CisK
KyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJFeHRlcm5hbFBvcHVw
TWVudS5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGll
bnQuaDogQWRkZWQuCisgICAgICAgICogcHVibGljL1dlYk1lbnVJdGVtSW5mby5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZW51SXRlbUluZm86OldlYk1lbnVJdGVtSW5mbyk6CisgICAgICAgICog
cHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6
Y3JlYXRlRXh0ZXJuYWxQb3B1cE1lbnUpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51
KToKKyAgICAgICAgKiBzcmMvRXh0ZXJuYWxQb3B1cE1lbnUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBzcmMvRXh0ZXJuYWxQb3B1cE1lbnUuaDogQWRkZWQuCisKIDIwMTAtMDktMDkgIENocmlzIEd1
aWxsb3J5ICA8Y2hyaXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBDaHJpcyBGbGVpemFjaC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDY5MzEyKQor
KysgV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw2ICsx
NTAsOCBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRHJhZ0RhdGEuaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJFZGl0aW5nQWN0aW9uLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViRWxlbWVudC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkV4dGVybmFs
UG9wdXBNZW51LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1l
bnVDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlckNvbXBs
ZXRpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlclBhcmFtcy5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVFcnJvci5oJywKQEAgLTMyNCw2ICsz
MjYsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvRWRpdG9yQ2xpZW50SW1wbC5oJywKICAgICAg
ICAgICAgICAgICAnc3JjL0V2ZW50TGlzdGVuZXJXcmFwcGVyLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9FdmVudExpc3RlbmVyV3JhcHBlci5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0V4
dGVybmFsUG9wdXBNZW51LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9FeHRlcm5hbFBvcHVw
TWVudS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgnLAogICAgICAg
ICAgICAgICAgICdzcmMvRnJhbWVOZXR3b3JraW5nQ29udGV4dEltcGwuaCcsCkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51LmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51LmgJKHJldmlzaW9u
IDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51LmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkV4dGVybmFsUG9wdXBNZW51X2gK
KyNkZWZpbmUgV2ViRXh0ZXJuYWxQb3B1cE1lbnVfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViRXh0ZXJuYWxQb3B1cE1lbnUgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBz
aG93KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRXh0ZXJuYWxQb3B1cE1lbnVfaApJbmRleDog
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudC5oDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudUNs
aWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5h
bFBvcHVwTWVudUNsaWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudF9oCisjZGVmaW5lIFdlYkV4dGVybmFsUG9wdXBNZW51
Q2xpZW50X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkV4dGVybmFsUG9wdXBN
ZW51Q2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGN1
cnJlbnRseSBzZWxlY3RlZCBpdGVtIGluIHRoZSBwb3B1cCBtZW51CisgICAgLy8gY2hhbmdlZC4g
Q2FuIGJlIC0xIGlmIHRoZXJlIGlzIG5vIHNlbGVjdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlU2VsZWN0aW9uKGludCBpbmRleCkgPSAwOworCisgICAgLy8gU2hvdWxkIGJlIGNhbGxl
ZCB3aGVuIGFuIGluZGV4IGhhcyBiZWVuIGFjY2VwdGVkLgorICAgIC8vIE5vdGUgdGhhdCBpdCBp
cyBub3Qgc2FmZSB0byBhY2Nlc3MgdGhpcyBXZWJFeHRlcm5hbFBvcHVwQ2xpZW50TWVudSBhZnRl
cgorICAgIC8vIHRoaXMgaGFzIGJlZW4gY2FsbGVkIGFzIGl0IG1pZ2h0IG5vdCBiZSB2YWxpZCBh
bnltb3JlLgorICAgIHZpcnR1YWwgdm9pZCBkaWRBY2NlcHRJbmRleChpbnQgaW5kZXgpID0gMDsK
KworICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgcG9wdXAgbWVudSB3YXMgZGlzY2Fy
ZGVkIChjbG9zZWQgd2l0aG91dCBhCisgICAgLy8gc2VsZWN0aW9uLgorICAgIC8vIE5vdGUgdGhh
dCBpdCBpcyBub3Qgc2FmZSB0byBhY2Nlc3MgdGhpcyBXZWJFeHRlcm5hbFBvcHVwQ2xpZW50TWVu
dSBhZnRlcgorICAgIC8vIHRoaXMgaGFzIGJlZW4gY2FsbGVkIGFzIGl0IG1pZ2h0IG5vdCBiZSB2
YWxpZCBhbnltb3JlLgorICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoKSA9IDA7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkV4dGVybmFsUG9wdXBNZW51Q2xp
ZW50X2gKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVudUl0ZW1JbmZvLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lbnVJdGVtSW5mby5oCShy
ZXZpc2lvbiA2OTMxMikKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVudUl0ZW1JbmZv
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDE1IEBAIHN0cnVjdCBXZWJNZW51SXRlbUlu
Zm8gewogICAgICAgICBHcm91cCwKICAgICAgICAgU2VwYXJhdG9yLAogICAgIH07CisKKyAgICBX
ZWJNZW51SXRlbUluZm8oKSAKKyAgICAgICAgOiB0eXBlKE9wdGlvbikKKyAgICAgICAgLCBhY3Rp
b24oMCkKKyAgICAgICAgLCBlbmFibGVkKGZhbHNlKQorICAgICAgICAsIGNoZWNrZWQoZmFsc2Up
CisgICAgeworICAgIH0KKwogICAgIFdlYlN0cmluZyBsYWJlbDsKICAgICBUeXBlIHR5cGU7CiAg
ICAgdW5zaWduZWQgYWN0aW9uOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3
Q2xpZW50LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdD
bGllbnQuaAkocmV2aXNpb24gNjkzMTIpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZp
ZXdDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQCBjbGFzcyBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CiBjbGFz
cyBXZWJEcmFnRGF0YTsKIGNsYXNzIFdlYkVsZW1lbnQ7CitjbGFzcyBXZWJFeHRlcm5hbFBvcHVw
TWVudTsKK2NsYXNzIFdlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgV2ViRmlsZUNo
b29zZXJDb21wbGV0aW9uOwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJHZW9sb2NhdGlvblNl
cnZpY2U7CkBAIC04Nyw2ICs4OSw4IEBAIHB1YmxpYzoKICAgICAvLyByZXNwb25zaWJsZSBmb3Ig
cmVuZGVyaW5nIHRoZSBjb250ZW50cyBvZiB0aGUgcG9wdXAgbWVudS4KICAgICB2aXJ0dWFsIFdl
YldpZGdldCogY3JlYXRlUG9wdXBNZW51KFdlYlBvcHVwVHlwZSkgeyByZXR1cm4gMDsgfQogICAg
IHZpcnR1YWwgV2ViV2lkZ2V0KiBjcmVhdGVQb3B1cE1lbnUoY29uc3QgV2ViUG9wdXBNZW51SW5m
byYpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdlYkV4dGVybmFsUG9wdXBNZW51KiBjcmVh
dGVFeHRlcm5hbFBvcHVwTWVudSgKKyAgICAgICAgY29uc3QgV2ViUG9wdXBNZW51SW5mbyYsIFdl
YkV4dGVybmFsUG9wdXBNZW51Q2xpZW50KikgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gQ3JlYXRl
IGEgc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMg
V2ViVmlldy4KICAgICB2aXJ0dWFsIFdlYlN0b3JhZ2VOYW1lc3BhY2UqIGNyZWF0ZVNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSB7IHJldHVybiAwOyB9CkBAIC0yNTMsNiAr
MjU3LDExIEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgd2hlbiBhIG5ldyBub2RlIGdldHMgZm9j
dXNlZC4KICAgICB2aXJ0dWFsIHZvaWQgZm9jdXNlZE5vZGVDaGFuZ2VkKGNvbnN0IFdlYk5vZGUm
KSB7IH0KIAorICAgIC8vIFdoZXRoZXIgcG9wdXBzIGFyZSBleHRlcm5hbCAocmVuZGVyZWQgYnkg
dGhlIGJyb3dzZXIpLgorICAgIC8vIElmIHRoaXMgcmV0dXJucyB0cnVlLCB0aGVuIGNyZWF0ZUV4
dGVybmFsUG9wdXBNZW51KCkgd2lsbCBiZSBjYWxsZWQgd2hlbgorICAgIC8vIGEgcG9wdXAgaXMg
Y3JlYXRlZC4KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlRXh0ZXJuYWxQb3B1cHMoKSB7IHJl
dHVybiBmYWxzZTsgfQorCiAKICAgICAvLyBTZXNzaW9uIGhpc3RvcnkgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApJbmRleDogV2ViS2l0L2No
cm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9j
aHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDY5MzEyKQorKysgV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJFeHRlcm5h
bFBvcHVwTWVudS5oIgogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgpAQCAtODI1LDYgKzgyNiwxMCBA
QCBib29sIENocm9tZUNsaWVudEltcGw6OnNlbGVjdEl0ZW1Xcml0aW5nCiAKIFBhc3NSZWZQdHI8
UG9wdXBNZW51PiBDaHJvbWVDbGllbnRJbXBsOjpjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xp
ZW50KiBjbGllbnQpIGNvbnN0CiB7CisgICAgV2ViVmlld0NsaWVudCogd2Vidmlld0NsaWVudCA9
IG1fd2ViVmlldy0+Y2xpZW50KCk7CisgICAgaWYgKHdlYnZpZXdDbGllbnQtPnNob3VsZFVzZUV4
dGVybmFsUG9wdXBzKCkpCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXh0ZXJuYWxQb3B1
cE1lbnUoY2xpZW50LCB3ZWJ2aWV3Q2xpZW50KSk7CisgICAgCiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBQb3B1cE1lbnVDaHJvbWl1bShjbGllbnQpKTsKIH0KIApJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9FeHRlcm5hbFBvcHVwTWVudS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hy
b21pdW0vc3JjL0V4dGVybmFsUG9wdXBNZW51LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9j
aHJvbWl1bS9zcmMvRXh0ZXJuYWxQb3B1cE1lbnUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFeHRlcm5hbFBvcHVwTWVudS5o
IgorCisjaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCisjaW5jbHVkZSAiVGV4dERpcmVjdGlv
bi5oIgorI2luY2x1ZGUgIldlYkV4dGVybmFsUG9wdXBNZW51LmgiCisjaW5jbHVkZSAiV2ViTWVu
dUl0ZW1JbmZvLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51SW5mby5oIgorI2luY2x1ZGUgIldl
YlZlY3Rvci5oIgorI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK0V4dGVybmFsUG9wdXBNZW51OjpFeHRlcm5hbFBvcHVwTWVudShXZWJDb3JlOjpQb3B1
cE1lbnVDbGllbnQqIHBvcHVwTWVudUNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJWaWV3Q2xpZW50KiB3ZWJWaWV3Q2xpZW50KQorICAgIDogbV9wb3B1cE1l
bnVDbGllbnQocG9wdXBNZW51Q2xpZW50KQorICAgICwgbV93ZWJWaWV3Q2xpZW50KHdlYlZpZXdD
bGllbnQpCisgICAgLCBtX3dlYkV4dGVybmFsUG9wdXBNZW51KDApCit7Cit9CisKK0V4dGVybmFs
UG9wdXBNZW51Ojp+RXh0ZXJuYWxQb3B1cE1lbnUoKQoreworfQorCit2b2lkIEV4dGVybmFsUG9w
dXBNZW51OjpzaG93KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJDb3JlOjpGcmFtZVZpZXcqLCBpbnQgaW5kZXgpIAoreworICAgIC8vIFdl
YkNvcmUgcmV1c2VzIHRoZSBQb3B1cE1lbnUgb2YgYSBwYWdlLgorICAgIC8vIEZvciBzaW1wbGlj
aXR5LCB3ZSBkbyByZWNyZWF0ZSB0aGUgYWN0dWFsIGV4dGVybmFsIHBvcHVwIGV2ZXJ5dGltZS4K
KyAgICBoaWRlKCk7CisKKyAgICBXZWJQb3B1cE1lbnVJbmZvIGluZm87CisgICAgZ2V0UG9wdXBN
ZW51SW5mbygmaW5mbyk7CisgICAgbV93ZWJFeHRlcm5hbFBvcHVwTWVudSA9CisgICAgICAgIG1f
d2ViVmlld0NsaWVudC0+Y3JlYXRlRXh0ZXJuYWxQb3B1cE1lbnUoaW5mbywgdGhpcyk7CisgICAg
bV93ZWJFeHRlcm5hbFBvcHVwTWVudS0+c2hvdygpOworfQorCit2b2lkIEV4dGVybmFsUG9wdXBN
ZW51OjpoaWRlKCkKK3sKKyAgICBpZiAobV93ZWJFeHRlcm5hbFBvcHVwTWVudSkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fd2ViRXh0ZXJuYWxQb3B1cE1lbnUtPmNsb3NlKCk7CisgICAgbV93ZWJF
eHRlcm5hbFBvcHVwTWVudSA9IDA7Cit9CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OnVwZGF0
ZUZyb21FbGVtZW50KCkKK3sKK30KKwordm9pZCBFeHRlcm5hbFBvcHVwTWVudTo6ZGlzY29ubmVj
dENsaWVudCgpCit7CisgICAgaGlkZSgpOworICAgIG1fcG9wdXBNZW51Q2xpZW50ID0gMDsgICAg
Cit9CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OmRpZENoYW5nZVNlbGVjdGlvbihpbnQgaW5k
ZXgpCit7CisgICAgaWYgKG1fcG9wdXBNZW51Q2xpZW50KQorICAgICAgICBtX3BvcHVwTWVudUNs
aWVudC0+c2VsZWN0aW9uQ2hhbmdlZChpbmRleCk7Cit9CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1l
bnU6OmRpZEFjY2VwdEluZGV4KGludCBpbmRleCkKK3sKKyAgICBpZiAobV9wb3B1cE1lbnVDbGll
bnQpIHsKKyAgICAgICAgbV9wb3B1cE1lbnVDbGllbnQtPnZhbHVlQ2hhbmdlZChpbmRleCk7Cisg
ICAgICAgIG1fcG9wdXBNZW51Q2xpZW50LT5wb3B1cERpZEhpZGUoKTsKKyAgICB9Cit9CisKK3Zv
aWQgRXh0ZXJuYWxQb3B1cE1lbnU6OmRpZENhbmNlbCgpCit7CisgICAgaWYgKG1fcG9wdXBNZW51
Q2xpZW50KQorICAgICAgICBtX3BvcHVwTWVudUNsaWVudC0+cG9wdXBEaWRIaWRlKCk7Cit9CisK
K3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OmdldFBvcHVwTWVudUluZm8oV2ViUG9wdXBNZW51SW5m
byogaW5mbykKK3sKKyAgICBpbnQgaXRlbUNvdW50ID0gbV9wb3B1cE1lbnVDbGllbnQtPmxpc3RT
aXplKCk7CisgICAgV2ViVmVjdG9yPFdlYlBvcHVwTWVudUluZm86Okl0ZW0+IGl0ZW1zKAorICAg
ICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KGl0ZW1Db3VudCkpOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgaXRlbUNvdW50OyArK2kpIHsKKyAgICAgICAgV2ViUG9wdXBNZW51SW5mbzo6SXRlbSYg
cG9wdXBJdGVtID0gaXRlbXNbaV07CisgICAgICAgIHBvcHVwSXRlbS5sYWJlbCA9IG1fcG9wdXBN
ZW51Q2xpZW50LT5pdGVtVGV4dChpKTsKKyAgICAgICAgaWYgKG1fcG9wdXBNZW51Q2xpZW50LT5p
dGVtSXNTZXBhcmF0b3IoaSkpCisgICAgICAgICAgICBwb3B1cEl0ZW0udHlwZSA9IFdlYk1lbnVJ
dGVtSW5mbzo6U2VwYXJhdG9yOworICAgICAgICBlbHNlIGlmIChtX3BvcHVwTWVudUNsaWVudC0+
aXRlbUlzTGFiZWwoaSkpCisgICAgICAgICAgICBwb3B1cEl0ZW0udHlwZSA9IFdlYk1lbnVJdGVt
SW5mbzo6R3JvdXA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBvcHVwSXRlbS50eXBlID0g
V2ViTWVudUl0ZW1JbmZvOjpPcHRpb247CisgICAgICAgIHBvcHVwSXRlbS5lbmFibGVkID0gbV9w
b3B1cE1lbnVDbGllbnQtPml0ZW1Jc0VuYWJsZWQoaSk7CisgICAgfQorCisgICAgaW5mby0+aXRl
bUhlaWdodCA9IG1fcG9wdXBNZW51Q2xpZW50LT5tZW51U3R5bGUoKS5mb250KCkuaGVpZ2h0KCk7
CisgICAgaW5mby0+aXRlbUZvbnRTaXplID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihtX3Bv
cHVwTWVudUNsaWVudC0+bWVudVN0eWxlKCkuZm9udCgpLnNpemUoKSk7CisgICAgaW5mby0+c2Vs
ZWN0ZWRJbmRleCA9IG1fcG9wdXBNZW51Q2xpZW50LT5zZWxlY3RlZEluZGV4KCk7CisgICAgaW5m
by0+cmlnaHRBbGlnbmVkID0KKyAgICAgICAgbV9wb3B1cE1lbnVDbGllbnQtPm1lbnVTdHlsZSgp
LnRleHREaXJlY3Rpb24oKSA9PSBXZWJDb3JlOjpSVEw7CisgICAgaW5mby0+aXRlbXMuc3dhcChp
dGVtcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0L2Nocm9taXVt
L3NyYy9FeHRlcm5hbFBvcHVwTWVudS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVt
L3NyYy9FeHRlcm5hbFBvcHVwTWVudS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVt
L3NyYy9FeHRlcm5hbFBvcHVwTWVudS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBFeHRlcm5hbFBvcHVwTWVudV9oCisjZGVmaW5lIEV4dGVybmFsUG9wdXBNZW51X2gKKwor
I2luY2x1ZGUgIlBvcHVwTWVudS5oIgorI2luY2x1ZGUgIldlYkV4dGVybmFsUG9wdXBNZW51Q2xp
ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZyYW1lVmlldzsKK2NsYXNzIElu
dFJlY3Q7CitjbGFzcyBQb3B1cE1lbnVDbGllbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJFeHRlcm5hbFBvcHVwTWVudTsKK2NsYXNzIFdlYlZpZXdDbGllbnQ7CitzdHJ1
Y3QgV2ViUG9wdXBNZW51SW5mbzsKKworLy8gVGhlIEV4dGVybmFsUG9wdXBNZW51IGNvbm5lY3Rz
IHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIHBvcHVwIG1lbnUKKy8vIHRvIHRoZSBX
ZWJDb3JlIHBvcHVwIG1lbnUuCitjbGFzcyBFeHRlcm5hbFBvcHVwTWVudSA6IHB1YmxpYyBXZWJD
b3JlOjpQb3B1cE1lbnUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJFeHRl
cm5hbFBvcHVwTWVudUNsaWVudCB7CitwdWJsaWM6CisgICAgRXh0ZXJuYWxQb3B1cE1lbnUoV2Vi
Q29yZTo6UG9wdXBNZW51Q2xpZW50KiwgV2ViVmlld0NsaWVudCopOworICAgIHZpcnR1YWwgfkV4
dGVybmFsUG9wdXBNZW51KCk7CisKK3ByaXZhdGU6CisgICAgLy8gV2ViQ29yZTo6UG9wdXBNZW51
IG1ldGhvZHM6CisgICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IFdlYkNvcmU6OkZyYW1lVmlldyosIGludCBpbmRleCk7CisgICAgdmlydHVhbCB2b2lkIGhpZGUo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlzY29ubmVjdENsaWVudCgpOworCisgICAgLy8gV2ViRXh0ZXJuYWxQb3B1cENsaWVudCBt
ZXRob2RzOgorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oaW50IGluZGV4KTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQWNjZXB0SW5kZXgoaW50IGluZGV4KTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2FuY2VsKCk7CisKKyAgICAvLyBGaWxscyB8aW5mb3wgd2l0aCB0aGUgcG9wdXAg
bWVudSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gdGhlCisgICAgLy8gV2ViQ29yZTo6UG9wdXBN
ZW51Q2xpZW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIEV4dGVybmFsUG9wdXBNZW51LgorICAgIHZv
aWQgZ2V0UG9wdXBNZW51SW5mbyhXZWJQb3B1cE1lbnVJbmZvKiBpbmZvKTsKKworICAgIFdlYkNv
cmU6OlBvcHVwTWVudUNsaWVudCogbV9wb3B1cE1lbnVDbGllbnQ7CisgICAgV2ViVmlld0NsaWVu
dCogbV93ZWJWaWV3Q2xpZW50OworCisgICAgLy8gVGhlIGFjdHVhbCBpbXBsZW1lbnRvciBvZiB0
aGUgc2hvdyBtZW51LgorICAgIFdlYkV4dGVybmFsUG9wdXBNZW51KiBtX3dlYkV4dGVybmFsUG9w
dXBNZW51OworfTsgCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRXh0ZXJu
YWxQb3B1cE1lbnVfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70538</attachid>
            <date>2010-10-12 09:55:46 -0700</date>
            <delta_ts>2010-10-19 08:07:51 -0700</delta_ts>
            <desc>Adding an static method to WebView to set whether to use external popups or not.</desc>
            <filename>external_popup_v3.patch</filename>
            <type>text/plain</type>
            <size>20384</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjk1ODUpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMTAtMTIgIEpheSBD
aXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkaW5nIGFuIEFQSSB0aGF0IGFs
bG93cyBleHRlcm5hbAorICAgICAgICBwb3B1cCBtZW51cywgd2l0aG91dCB0aGUgdXNlIG9mIFdl
YkNvcmU6OlBvcHVwTWVudUNocm9taXVtLgorICAgICAgICBPbmNlIHRoaXMgaXMgaG9va2VkIHVw
IGluIENocm9taXVtLCB0aGUgcGxhbiBpcyB0byByZW1vdmUKKyAgICAgICAgZW50aXJlbHkgdGhl
IGV4dGVybmFsIGNhc2UgZnJvbSBQb3B1cE1lbnVDaHJvbWl1bS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDE2CisKKyAgICAgICAgKiBXZWJLaXQu
Z3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQuaDogQWRkZWQuCisgICAg
ICAgICogcHVibGljL1dlYk1lbnVJdGVtSW5mby5oOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW51
SXRlbUluZm86OldlYk1lbnVJdGVtSW5mbyk6CisgICAgICAgICogcHVibGljL1dlYlZpZXcuaDoK
KyAgICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3Q2xpZW50OjpjcmVhdGVFeHRlcm5hbFBvcHVwTWVudSk6CisgICAgICAgICogc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpjcmVh
dGVQb3B1cE1lbnUpOgorICAgICAgICAqIHNyYy9FeHRlcm5hbFBvcHVwTWVudS5jcHA6IEFkZGVk
LgorICAgICAgICogc3JjL0V4dGVybmFsUG9wdXBNZW51Lmg6IEFkZGVkLgorICAgICAgICAqIHNy
Yy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnNldFVzZUV4dGVy
bmFsUG9wdXBNZW51cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp1c2VFeHRlcm5h
bFBvcHVwTWVudXMpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTEwLTEx
ICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFRvbnkgQ2hhbmcuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gNjk0NTIpCisrKyBX
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDYgKzE1MCw4
IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEcmFnRGF0YS5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkVkaXRpbmdBY3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJFbGVtZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRXh0ZXJuYWxQb3B1
cE1lbnUuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudUNs
aWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlv
bi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVDaG9vc2VyUGFyYW1zLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZUVycm9yLmgnLApAQCAtMzI0LDYgKzMyNiw4
IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9FZGl0b3JDbGllbnRJbXBsLmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvRXZlbnRMaXN0ZW5lcldyYXBwZXIuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL0V2ZW50TGlzdGVuZXJXcmFwcGVyLmgnLAorICAgICAgICAgICAgICAgICdzcmMvRXh0ZXJu
YWxQb3B1cE1lbnUuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL0V4dGVybmFsUG9wdXBNZW51
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9GcmFtZU5ldHdvcmtpbmdDb250ZXh0SW1wbC5oJywKSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1lbnUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51LmgJKHJldmlzaW9uIDApCisr
KyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51LmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkV4dGVybmFsUG9wdXBNZW51X2gKKyNkZWZp
bmUgV2ViRXh0ZXJuYWxQb3B1cE1lbnVfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViRXh0ZXJuYWxQb3B1cE1lbnUgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBzaG93KCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gV2ViRXh0ZXJuYWxQb3B1cE1lbnVfaApJbmRleDogV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQuaAko
cmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1l
bnVDbGllbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRXh0ZXJu
YWxQb3B1cE1lbnVDbGllbnRfaAorI2RlZmluZSBXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudF9o
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVu
dCB7CitwdWJsaWM6CisgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBjdXJyZW50bHkg
c2VsZWN0ZWQgaXRlbSBpbiB0aGUgcG9wdXAgbWVudQorICAgIC8vIGNoYW5nZWQuIENhbiBiZSAt
MSBpZiB0aGVyZSBpcyBubyBzZWxlY3Rpb24uCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNl
bGVjdGlvbihpbnQgaW5kZXgpID0gMDsKKworICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbiBh
biBpbmRleCBoYXMgYmVlbiBhY2NlcHRlZC4KKyAgICAvLyBOb3RlIHRoYXQgaXQgaXMgbm90IHNh
ZmUgdG8gYWNjZXNzIHRoaXMgV2ViRXh0ZXJuYWxQb3B1cENsaWVudE1lbnUgYWZ0ZXIKKyAgICAv
LyB0aGlzIGhhcyBiZWVuIGNhbGxlZCBhcyBpdCBtaWdodCBub3QgYmUgdmFsaWQgYW55bW9yZS4K
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQWNjZXB0SW5kZXgoaW50IGluZGV4KSA9IDA7CisKKyAgICAv
LyBTaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIHBvcHVwIG1lbnUgd2FzIGRpc2NhcmRlZCAoY2xv
c2VkIHdpdGhvdXQgYQorICAgIC8vIHNlbGVjdGlvbi4KKyAgICAvLyBOb3RlIHRoYXQgaXQgaXMg
bm90IHNhZmUgdG8gYWNjZXNzIHRoaXMgV2ViRXh0ZXJuYWxQb3B1cENsaWVudE1lbnUgYWZ0ZXIK
KyAgICAvLyB0aGlzIGhhcyBiZWVuIGNhbGxlZCBhcyBpdCBtaWdodCBub3QgYmUgdmFsaWQgYW55
bW9yZS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKCkgPSAwOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudF9oCklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lbnVJdGVtSW5mby5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVudUl0ZW1JbmZvLmgJKHJldmlzaW9uIDY5
NDUyKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZW51SXRlbUluZm8uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNiArNDQsMTUgQEAgc3RydWN0IFdlYk1lbnVJdGVtSW5mbyB7CiAgICAg
ICAgIEdyb3VwLAogICAgICAgICBTZXBhcmF0b3IsCiAgICAgfTsKKworICAgIFdlYk1lbnVJdGVt
SW5mbygpIAorICAgICAgICA6IHR5cGUoT3B0aW9uKQorICAgICAgICAsIGFjdGlvbigwKQorICAg
ICAgICAsIGVuYWJsZWQoZmFsc2UpCisgICAgICAgICwgY2hlY2tlZChmYWxzZSkKKyAgICB7Cisg
ICAgfQorCiAgICAgV2ViU3RyaW5nIGxhYmVsOwogICAgIFR5cGUgdHlwZTsKICAgICB1bnNpZ25l
ZCBhY3Rpb247CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAkocmV2aXNpb24gNjk0NTIp
CisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAt
MzA4LDYgKzMwOCwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybUN1c3Rv
bUNvbnRleHRNZW51QWN0aW9uKHVuc2lnbmVkIGFjdGlvbikgPSAwOwogCisgICAgLy8gUG9wdXAg
bWVudSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyAgICAvLyBTZXRzIHdoZXRoZXIgc2VsZWN0IHBvcHVwIG1lbnVzIHNob3VsZCBi
ZSByZW5kZXJlZCBieSB0aGUgYnJvd3Nlci4KKyAgICBXRUJLSVRfQVBJIHN0YXRpYyB2b2lkIHNl
dFVzZUV4dGVybmFsUG9wdXBNZW51cyhib29sKTsKKwogCiAgICAgLy8gVmlzaXRlZCBsaW5rIHN0
YXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCShyZXZpc2lvbiA2OTQ1
MikKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw2ICs0OCw4IEBAIGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFz
cyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIGNsYXNzIFdlYkRyYWdEYXRhOwogY2xhc3Mg
V2ViRWxlbWVudDsKK2NsYXNzIFdlYkV4dGVybmFsUG9wdXBNZW51OworY2xhc3MgV2ViRXh0ZXJu
YWxQb3B1cE1lbnVDbGllbnQ7CiBjbGFzcyBXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb247CiBjbGFz
cyBXZWJGcmFtZTsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uU2VydmljZTsKQEAgLTg3LDYgKzg5LDgg
QEAgcHVibGljOgogICAgIC8vIHJlc3BvbnNpYmxlIGZvciByZW5kZXJpbmcgdGhlIGNvbnRlbnRz
IG9mIHRoZSBwb3B1cCBtZW51LgogICAgIHZpcnR1YWwgV2ViV2lkZ2V0KiBjcmVhdGVQb3B1cE1l
bnUoV2ViUG9wdXBUeXBlKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBXZWJXaWRnZXQqIGNy
ZWF0ZVBvcHVwTWVudShjb25zdCBXZWJQb3B1cE1lbnVJbmZvJikgeyByZXR1cm4gMDsgfQorICAg
IHZpcnR1YWwgV2ViRXh0ZXJuYWxQb3B1cE1lbnUqIGNyZWF0ZUV4dGVybmFsUG9wdXBNZW51KAor
ICAgICAgICBjb25zdCBXZWJQb3B1cE1lbnVJbmZvJiwgV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGll
bnQqKSB7IHJldHVybiAwOyB9CiAKICAgICAvLyBDcmVhdGUgYSBzZXNzaW9uIHN0b3JhZ2UgbmFt
ZXNwYWNlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBXZWJWaWV3LgogICAgIHZpcnR1YWwg
V2ViU3RvcmFnZU5hbWVzcGFjZSogY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodW5zaWdu
ZWQgcXVvdGEpIHsgcmV0dXJuIDA7IH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmNwcAkocmV2aXNpb24gNjk0NTIpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9tZUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5j
bHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkV4dGVybmFsUG9wdXBNZW51LmgiCiAjaW5j
bHVkZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRSZXF1ZXN0LmgiCkBAIC04MjUsNiArODI2LDkgQEAgYm9vbCBDaHJvbWVDbGllbnRJ
bXBsOjpzZWxlY3RJdGVtV3JpdGluZwogCiBQYXNzUmVmUHRyPFBvcHVwTWVudT4gQ2hyb21lQ2xp
ZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xpZW50KSBjb25zdAog
eworICAgIGlmIChXZWJWaWV3SW1wbDo6dXNlRXh0ZXJuYWxQb3B1cE1lbnVzKCkpCisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRXh0ZXJuYWxQb3B1cE1lbnUoY2xpZW50LCBtX3dlYlZpZXct
PmNsaWVudCgpKSk7CisgICAgCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1cE1lbnVDaHJv
bWl1bShjbGllbnQpKTsKIH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlcm5hbFBv
cHVwTWVudS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlcm5hbFBv
cHVwTWVudS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVybmFs
UG9wdXBNZW51LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRXh0ZXJuYWxQb3B1cE1lbnUuaCIKKworI2luY2x1ZGUgIlBvcHVw
TWVudUNsaWVudC5oIgorI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJF
eHRlcm5hbFBvcHVwTWVudS5oIgorI2luY2x1ZGUgIldlYk1lbnVJdGVtSW5mby5oIgorI2luY2x1
ZGUgIldlYlBvcHVwTWVudUluZm8uaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKyNpbmNsdWRl
ICJXZWJWaWV3Q2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitFeHRlcm5hbFBvcHVw
TWVudTo6RXh0ZXJuYWxQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBwb3B1cE1l
bnVDbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVmlld0Ns
aWVudCogd2ViVmlld0NsaWVudCkKKyAgICA6IG1fcG9wdXBNZW51Q2xpZW50KHBvcHVwTWVudUNs
aWVudCkKKyAgICAsIG1fd2ViVmlld0NsaWVudCh3ZWJWaWV3Q2xpZW50KQorICAgICwgbV93ZWJF
eHRlcm5hbFBvcHVwTWVudSgwKQoreworfQorCitFeHRlcm5hbFBvcHVwTWVudTo6fkV4dGVybmFs
UG9wdXBNZW51KCkKK3sKK30KKwordm9pZCBFeHRlcm5hbFBvcHVwTWVudTo6c2hvdyhjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6
RnJhbWVWaWV3KiwgaW50IGluZGV4KSAKK3sKKyAgICAvLyBXZWJDb3JlIHJldXNlcyB0aGUgUG9w
dXBNZW51IG9mIGEgcGFnZS4KKyAgICAvLyBGb3Igc2ltcGxpY2l0eSwgd2UgZG8gcmVjcmVhdGUg
dGhlIGFjdHVhbCBleHRlcm5hbCBwb3B1cCBldmVyeXRpbWUuCisgICAgaGlkZSgpOworCisgICAg
V2ViUG9wdXBNZW51SW5mbyBpbmZvOworICAgIGdldFBvcHVwTWVudUluZm8oJmluZm8pOworICAg
IG1fd2ViRXh0ZXJuYWxQb3B1cE1lbnUgPQorICAgICAgICBtX3dlYlZpZXdDbGllbnQtPmNyZWF0
ZUV4dGVybmFsUG9wdXBNZW51KGluZm8sIHRoaXMpOworICAgIG1fd2ViRXh0ZXJuYWxQb3B1cE1l
bnUtPnNob3coKTsKK30KKwordm9pZCBFeHRlcm5hbFBvcHVwTWVudTo6aGlkZSgpCit7CisgICAg
aWYgKG1fd2ViRXh0ZXJuYWxQb3B1cE1lbnUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3dlYkV4
dGVybmFsUG9wdXBNZW51LT5jbG9zZSgpOworICAgIG1fd2ViRXh0ZXJuYWxQb3B1cE1lbnUgPSAw
OworfQorCit2b2lkIEV4dGVybmFsUG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCgpCit7Cit9
CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OmRpc2Nvbm5lY3RDbGllbnQoKQoreworICAgIGhp
ZGUoKTsKKyAgICBtX3BvcHVwTWVudUNsaWVudCA9IDA7ICAgIAorfQorCit2b2lkIEV4dGVybmFs
UG9wdXBNZW51OjpkaWRDaGFuZ2VTZWxlY3Rpb24oaW50IGluZGV4KQoreworICAgIGlmIChtX3Bv
cHVwTWVudUNsaWVudCkKKyAgICAgICAgbV9wb3B1cE1lbnVDbGllbnQtPnNlbGVjdGlvbkNoYW5n
ZWQoaW5kZXgpOworfQorCit2b2lkIEV4dGVybmFsUG9wdXBNZW51OjpkaWRBY2NlcHRJbmRleChp
bnQgaW5kZXgpCit7CisgICAgaWYgKG1fcG9wdXBNZW51Q2xpZW50KSB7CisgICAgICAgIG1fcG9w
dXBNZW51Q2xpZW50LT52YWx1ZUNoYW5nZWQoaW5kZXgpOworICAgICAgICBtX3BvcHVwTWVudUNs
aWVudC0+cG9wdXBEaWRIaWRlKCk7CisgICAgfQorfQorCit2b2lkIEV4dGVybmFsUG9wdXBNZW51
OjpkaWRDYW5jZWwoKQoreworICAgIGlmIChtX3BvcHVwTWVudUNsaWVudCkKKyAgICAgICAgbV9w
b3B1cE1lbnVDbGllbnQtPnBvcHVwRGlkSGlkZSgpOworfQorCit2b2lkIEV4dGVybmFsUG9wdXBN
ZW51OjpnZXRQb3B1cE1lbnVJbmZvKFdlYlBvcHVwTWVudUluZm8qIGluZm8pCit7CisgICAgaW50
IGl0ZW1Db3VudCA9IG1fcG9wdXBNZW51Q2xpZW50LT5saXN0U2l6ZSgpOworICAgIFdlYlZlY3Rv
cjxXZWJQb3B1cE1lbnVJbmZvOjpJdGVtPiBpdGVtcygKKyAgICAgICAgc3RhdGljX2Nhc3Q8c2l6
ZV90PihpdGVtQ291bnQpKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGl0ZW1Db3VudDsgKytp
KSB7CisgICAgICAgIFdlYlBvcHVwTWVudUluZm86Okl0ZW0mIHBvcHVwSXRlbSA9IGl0ZW1zW2ld
OworICAgICAgICBwb3B1cEl0ZW0ubGFiZWwgPSBtX3BvcHVwTWVudUNsaWVudC0+aXRlbVRleHQo
aSk7CisgICAgICAgIGlmIChtX3BvcHVwTWVudUNsaWVudC0+aXRlbUlzU2VwYXJhdG9yKGkpKQor
ICAgICAgICAgICAgcG9wdXBJdGVtLnR5cGUgPSBXZWJNZW51SXRlbUluZm86OlNlcGFyYXRvcjsK
KyAgICAgICAgZWxzZSBpZiAobV9wb3B1cE1lbnVDbGllbnQtPml0ZW1Jc0xhYmVsKGkpKQorICAg
ICAgICAgICAgcG9wdXBJdGVtLnR5cGUgPSBXZWJNZW51SXRlbUluZm86Okdyb3VwOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBwb3B1cEl0ZW0udHlwZSA9IFdlYk1lbnVJdGVtSW5mbzo6T3B0
aW9uOworICAgICAgICBwb3B1cEl0ZW0uZW5hYmxlZCA9IG1fcG9wdXBNZW51Q2xpZW50LT5pdGVt
SXNFbmFibGVkKGkpOworICAgIH0KKworICAgIGluZm8tPml0ZW1IZWlnaHQgPSBtX3BvcHVwTWVu
dUNsaWVudC0+bWVudVN0eWxlKCkuZm9udCgpLmhlaWdodCgpOworICAgIGluZm8tPml0ZW1Gb250
U2l6ZSA9CisgICAgICAgIHN0YXRpY19jYXN0PGludD4obV9wb3B1cE1lbnVDbGllbnQtPm1lbnVT
dHlsZSgpLmZvbnQoKS5zaXplKCkpOworICAgIGluZm8tPnNlbGVjdGVkSW5kZXggPSBtX3BvcHVw
TWVudUNsaWVudC0+c2VsZWN0ZWRJbmRleCgpOworICAgIGluZm8tPnJpZ2h0QWxpZ25lZCA9Cisg
ICAgICAgIG1fcG9wdXBNZW51Q2xpZW50LT5tZW51U3R5bGUoKS50ZXh0RGlyZWN0aW9uKCkgPT0g
V2ViQ29yZTo6UlRMOworICAgIGluZm8tPml0ZW1zLnN3YXAoaXRlbXMpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZXJuYWxQb3B1cE1l
bnUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVybmFsUG9wdXBNZW51
LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVybmFsUG9wdXBNZW51
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEV4dGVybmFsUG9wdXBNZW51
X2gKKyNkZWZpbmUgRXh0ZXJuYWxQb3B1cE1lbnVfaAorCisjaW5jbHVkZSAiUG9wdXBNZW51Lmgi
CisjaW5jbHVkZSAiV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgRnJhbWVWaWV3OworY2xhc3MgSW50UmVjdDsKK2NsYXNzIFBvcHVwTWVu
dUNsaWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkV4dGVybmFsUG9w
dXBNZW51OworY2xhc3MgV2ViVmlld0NsaWVudDsKK3N0cnVjdCBXZWJQb3B1cE1lbnVJbmZvOwor
CisvLyBUaGUgRXh0ZXJuYWxQb3B1cE1lbnUgY29ubmVjdHMgdGhlIGFjdHVhbCBpbXBsZW1lbnRh
dGlvbiBvZiB0aGUgcG9wdXAgbWVudQorLy8gdG8gdGhlIFdlYkNvcmUgcG9wdXAgbWVudS4KK2Ns
YXNzIEV4dGVybmFsUG9wdXBNZW51IDogcHVibGljIFdlYkNvcmU6OlBvcHVwTWVudSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50IHsK
K3B1YmxpYzoKKyAgICBFeHRlcm5hbFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQq
LCBXZWJWaWV3Q2xpZW50Kik7CisgICAgdmlydHVhbCB+RXh0ZXJuYWxQb3B1cE1lbnUoKTsKKwor
cHJpdmF0ZToKKyAgICAvLyBXZWJDb3JlOjpQb3B1cE1lbnUgbWV0aG9kczoKKyAgICB2aXJ0dWFs
IHZvaWQgc2hvdyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6RnJhbWVWaWV3Kiwg
aW50IGluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOworICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVGcm9tRWxlbWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCk7
CisKKyAgICAvLyBXZWJFeHRlcm5hbFBvcHVwQ2xpZW50IG1ldGhvZHM6CisgICAgdmlydHVhbCB2
b2lkIGRpZENoYW5nZVNlbGVjdGlvbihpbnQgaW5kZXgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRB
Y2NlcHRJbmRleChpbnQgaW5kZXgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoKTsKKwor
ICAgIC8vIEZpbGxzIHxpbmZvfCB3aXRoIHRoZSBwb3B1cCBtZW51IGluZm9ybWF0aW9uIGNvbnRh
aW5lZCBpbiB0aGUKKyAgICAvLyBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQgYXNzb2NpYXRlZCB3
aXRoIHRoaXMgRXh0ZXJuYWxQb3B1cE1lbnUuCisgICAgdm9pZCBnZXRQb3B1cE1lbnVJbmZvKFdl
YlBvcHVwTWVudUluZm8qIGluZm8pOworCisgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBt
X3BvcHVwTWVudUNsaWVudDsKKyAgICBXZWJWaWV3Q2xpZW50KiBtX3dlYlZpZXdDbGllbnQ7CisK
KyAgICAvLyBUaGUgYWN0dWFsIGltcGxlbWVudG9yIG9mIHRoZSBzaG93IG1lbnUuCisgICAgV2Vi
RXh0ZXJuYWxQb3B1cE1lbnUqIG1fd2ViRXh0ZXJuYWxQb3B1cE1lbnU7Cit9OyAKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFeHRlcm5hbFBvcHVwTWVudV9oCkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNpb24gNjk0NTIpCisrKyBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDYgKzE4
Miw4IEBAIHN0YXRpYyBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzIGF1dG8KICAgICBQb3B1
cENvbnRhaW5lclNldHRpbmdzOjpET01FbGVtZW50RGlyZWN0aW9uLAogfTsKIAorc3RhdGljIGJv
b2wgc2hvdWxkVXNlRXh0ZXJuYWxQb3B1cE1lbnVzID0gZmFsc2U7CisKIC8vIFdlYlZpZXcgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiBXZWJWaWV3KiBXZWJWaWV3OjpjcmVhdGUoV2ViVmlld0NsaWVudCogY2xpZW50LCBX
ZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29sc0NsaWVudCkKQEAgLTE5Myw2ICsxOTUsMTEg
QEAgV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlKFdlYlZpZXdDbGllbnQqIAogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViVmlld0ltcGwoY2xpZW50LCBkZXZUb29sc0NsaWVudCkpLmxlYWtSZWYo
KTsKIH0KIAordm9pZCBXZWJWaWV3OjpzZXRVc2VFeHRlcm5hbFBvcHVwTWVudXMoYm9vbCB1c2VF
eHRlcm5hbFBvcHVwTWVudXMpCit7CisgICAgc2hvdWxkVXNlRXh0ZXJuYWxQb3B1cE1lbnVzID0g
dXNlRXh0ZXJuYWxQb3B1cE1lbnVzOworfQorCiB2b2lkIFdlYlZpZXc6OnVwZGF0ZVZpc2l0ZWRM
aW5rU3RhdGUodW5zaWduZWQgbG9uZyBsb25nIGxpbmtIYXNoKQogewogICAgIFBhZ2U6OnZpc2l0
ZWRTdGF0ZUNoYW5nZWQoUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwTmFtZSksIGxpbmtI
YXNoKTsKQEAgLTIwODMsNiArMjA5MCwxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRDb21taXRM
b2FkKGJvb2wqIGlzCiAgICAgbV9vYnNlcnZlZE5ld05hdmlnYXRpb24gPSBmYWxzZTsKIH0KIAor
Ym9vbCBXZWJWaWV3SW1wbDo6dXNlRXh0ZXJuYWxQb3B1cE1lbnVzKCkKK3sKKyAgICByZXR1cm4g
c2hvdWxkVXNlRXh0ZXJuYWxQb3B1cE1lbnVzOworfQorCiBib29sIFdlYlZpZXdJbXBsOjpuYXZp
Z2F0aW9uUG9saWN5RnJvbU1vdXNlRXZlbnQodW5zaWduZWQgc2hvcnQgYnV0dG9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybCwgYm9v
bCBzaGlmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGFsdCwgYm9vbCBtZXRhLApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAko
cmV2aXNpb24gNjk0NTIpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2Nyw2ICsyNjcsMTAgQEAgcHVibGljOgogICAgIC8vIGxvYWQuCiAg
ICAgdm9pZCBkaWRDb21taXRMb2FkKGJvb2wqIGlzTmV3TmF2aWdhdGlvbik7CiAKKyAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgcG9wdXAgbWVudXMgc2hvdWxkIGJlIHJlbmRlcmVkIGJ5IHRoZSBicm93
c2VyLCBmYWxzZSBpZgorICAgIC8vIHRoZXkgc2hvdWxkIGJlIHJlbmRlcmVkIGJ5IFdlYktpdCAo
d2hpY2ggaXMgdGhlIGRlZmF1bHQpLgorICAgIHN0YXRpYyBib29sIHVzZUV4dGVybmFsUG9wdXBN
ZW51cygpOworCiAgICAgYm9vbCBjb250ZXh0TWVudUFsbG93ZWQoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fY29udGV4dE1lbnVBbGxvd2VkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70876</attachid>
            <date>2010-10-15 09:39:57 -0700</date>
            <delta_ts>2010-10-20 10:18:03 -0700</delta_ts>
            <desc>Added the bounds where the popup should be shown to WebExternalPopup::show()</desc>
            <filename>external_popup_v4.patch</filename>
            <type>text/plain</type>
            <size>21240</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjk1ODUpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMTAtMTIgIEpheSBD
aXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRkaW5nIGFuIEFQSSB0aGF0IGFs
bG93cyBleHRlcm5hbAorICAgICAgICBwb3B1cCBtZW51cywgd2l0aG91dCB0aGUgdXNlIG9mIFdl
YkNvcmU6OlBvcHVwTWVudUNocm9taXVtLgorICAgICAgICBPbmNlIHRoaXMgaXMgaG9va2VkIHVw
IGluIENocm9taXVtLCB0aGUgcGxhbiBpcyB0byByZW1vdmUKKyAgICAgICAgZW50aXJlbHkgdGhl
IGV4dGVybmFsIGNhc2UgZnJvbSBQb3B1cE1lbnVDaHJvbWl1bS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MDE2CisKKyAgICAgICAgKiBXZWJLaXQu
Z3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQuaDogQWRkZWQuCisgICAg
ICAgICogcHVibGljL1dlYk1lbnVJdGVtSW5mby5oOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW51
SXRlbUluZm86OldlYk1lbnVJdGVtSW5mbyk6CisgICAgICAgICogcHVibGljL1dlYlZpZXcuaDoK
KyAgICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3Q2xpZW50OjpjcmVhdGVFeHRlcm5hbFBvcHVwTWVudSk6CisgICAgICAgICogc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpjcmVh
dGVQb3B1cE1lbnUpOgorICAgICAgICAqIHNyYy9FeHRlcm5hbFBvcHVwTWVudS5jcHA6IEFkZGVk
LgorICAgICAgICogc3JjL0V4dGVybmFsUG9wdXBNZW51Lmg6IEFkZGVkLgorICAgICAgICAqIHNy
Yy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnNldFVzZUV4dGVy
bmFsUG9wdXBNZW51cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp1c2VFeHRlcm5h
bFBvcHVwTWVudXMpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTEwLTEx
ICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFRvbnkgQ2hhbmcuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gNjk0NTIpCisrKyBX
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDYgKzE1MCw4
IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEcmFnRGF0YS5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkVkaXRpbmdBY3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJFbGVtZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRXh0ZXJuYWxQb3B1
cE1lbnUuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudUNs
aWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlv
bi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVDaG9vc2VyUGFyYW1zLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZUVycm9yLmgnLApAQCAtMzI0LDYgKzMyNiw4
IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9FZGl0b3JDbGllbnRJbXBsLmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvRXZlbnRMaXN0ZW5lcldyYXBwZXIuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL0V2ZW50TGlzdGVuZXJXcmFwcGVyLmgnLAorICAgICAgICAgICAgICAgICdzcmMvRXh0ZXJu
YWxQb3B1cE1lbnUuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL0V4dGVybmFsUG9wdXBNZW51
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9GcmFtZU5ldHdvcmtpbmdDb250ZXh0SW1wbC5oJywKSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1lbnUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51LmgJKHJldmlzaW9uIDApCisr
KyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51LmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkV4dGVybmFsUG9wdXBNZW51X2gKKyNkZWZp
bmUgV2ViRXh0ZXJuYWxQb3B1cE1lbnVfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViUmVjdDsKKworY2xhc3MgV2ViRXh0ZXJuYWxQb3B1cE1lbnUgeworcHVibGljOgorICAgIHZp
cnR1YWwgdm9pZCBzaG93KGNvbnN0IFdlYlJlY3QmIGJvdW5kcykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBjbG9zZSgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gV2ViRXh0ZXJuYWxQb3B1cE1lbnVfaApJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQuaAkocmV2aXNpb24gMCkKKysrIFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnRf
aAorI2RlZmluZSBXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudCB7CitwdWJsaWM6CisgICAg
Ly8gU2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbSBpbiB0
aGUgcG9wdXAgbWVudQorICAgIC8vIGNoYW5nZWQuIENhbiBiZSAtMSBpZiB0aGVyZSBpcyBubyBz
ZWxlY3Rpb24uCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihpbnQgaW5kZXgp
ID0gMDsKKworICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbiBhbiBpbmRleCBoYXMgYmVlbiBh
Y2NlcHRlZC4KKyAgICAvLyBOb3RlIHRoYXQgaXQgaXMgbm90IHNhZmUgdG8gYWNjZXNzIHRoaXMg
V2ViRXh0ZXJuYWxQb3B1cENsaWVudE1lbnUgYWZ0ZXIKKyAgICAvLyB0aGlzIGhhcyBiZWVuIGNh
bGxlZCBhcyBpdCBtaWdodCBub3QgYmUgdmFsaWQgYW55bW9yZS4KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQWNjZXB0SW5kZXgoaW50IGluZGV4KSA9IDA7CisKKyAgICAvLyBTaG91bGQgYmUgY2FsbGVk
IHdoZW4gdGhlIHBvcHVwIG1lbnUgd2FzIGRpc2NhcmRlZCAoY2xvc2VkIHdpdGhvdXQgYQorICAg
IC8vIHNlbGVjdGlvbi4KKyAgICAvLyBOb3RlIHRoYXQgaXQgaXMgbm90IHNhZmUgdG8gYWNjZXNz
IHRoaXMgV2ViRXh0ZXJuYWxQb3B1cENsaWVudE1lbnUgYWZ0ZXIKKyAgICAvLyB0aGlzIGhhcyBi
ZWVuIGNhbGxlZCBhcyBpdCBtaWdodCBub3QgYmUgdmFsaWQgYW55bW9yZS4KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2FuY2VsKCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudF9oCkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYk1lbnVJdGVtSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViTWVudUl0ZW1JbmZvLmgJKHJldmlzaW9uIDY5NDUyKQorKysgV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJNZW51SXRlbUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiAr
NDQsMTUgQEAgc3RydWN0IFdlYk1lbnVJdGVtSW5mbyB7CiAgICAgICAgIEdyb3VwLAogICAgICAg
ICBTZXBhcmF0b3IsCiAgICAgfTsKKworICAgIFdlYk1lbnVJdGVtSW5mbygpIAorICAgICAgICA6
IHR5cGUoT3B0aW9uKQorICAgICAgICAsIGFjdGlvbigwKQorICAgICAgICAsIGVuYWJsZWQoZmFs
c2UpCisgICAgICAgICwgY2hlY2tlZChmYWxzZSkKKyAgICB7CisgICAgfQorCiAgICAgV2ViU3Ry
aW5nIGxhYmVsOwogICAgIFR5cGUgdHlwZTsKICAgICB1bnNpZ25lZCBhY3Rpb247CkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXcuaAkocmV2aXNpb24gNjk0NTIpCisrKyBXZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNjksMTMgKzY5LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgVXNlckNvbnRlbnRJbmplY3RJbkFsbEZyYW1lcywKICAgICAgICAgVXNl
ckNvbnRlbnRJbmplY3RJblRvcEZyYW1lT25seQogICAgIH07Ci0gICAgCisKICAgICAvLyBDb250
cm9scyB3aGljaCBkb2N1bWVudHMgdXNlciBzdHlsZXMgYXJlIGluamVjdGVkIGludG8uCiAgICAg
ZW51bSBVc2VyU3R5bGVJbmplY3Rpb25UaW1lIHsKICAgICAgICAgVXNlclN0eWxlSW5qZWN0SW5F
eGlzdGluZ0RvY3VtZW50cywKICAgICAgICAgVXNlclN0eWxlSW5qZWN0SW5TdWJzZXF1ZW50RG9j
dW1lbnRzCiAgICAgfTsKLSAgICAKKwogCiAgICAgLy8gSW5pdGlhbGl6YXRpb24gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTMwOSw2
ICszMDksMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtQ3VzdG9tQ29udGV4
dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0aW9uKSA9IDA7CiAKIAorICAgIC8vIFBvcHVwIG1lbnUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisgICAgLy8gU2V0cyB3aGV0aGVyIHNlbGVjdCBwb3B1cCBtZW51cyBzaG91bGQgYmUgcmVu
ZGVyZWQgYnkgdGhlIGJyb3dzZXIuCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBzZXRVc2VF
eHRlcm5hbFBvcHVwTWVudXMoYm9vbCk7CisKKwogICAgIC8vIFZpc2l0ZWQgbGluayBzdGF0ZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAg
Ly8gVGVsbHMgYWxsIFdlYlZpZXcgaW5zdGFuY2VzIHRvIHVwZGF0ZSB0aGUgdmlzaXRlZCBsaW5r
IHN0YXRlIGZvciB0aGUKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5o
CShyZXZpc2lvbiA2OTQ1MikKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw4IEBAIGNsYXNzIFdlYkFjY2Vzc2liaWxp
dHlPYmplY3Q7CiBjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIGNsYXNzIFdlYkRy
YWdEYXRhOwogY2xhc3MgV2ViRWxlbWVudDsKK2NsYXNzIFdlYkV4dGVybmFsUG9wdXBNZW51Owor
Y2xhc3MgV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQ7CiBjbGFzcyBXZWJGaWxlQ2hvb3NlckNv
bXBsZXRpb247CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uU2VydmljZTsK
QEAgLTg3LDYgKzg5LDggQEAgcHVibGljOgogICAgIC8vIHJlc3BvbnNpYmxlIGZvciByZW5kZXJp
bmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBwb3B1cCBtZW51LgogICAgIHZpcnR1YWwgV2ViV2lkZ2V0
KiBjcmVhdGVQb3B1cE1lbnUoV2ViUG9wdXBUeXBlKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVh
bCBXZWJXaWRnZXQqIGNyZWF0ZVBvcHVwTWVudShjb25zdCBXZWJQb3B1cE1lbnVJbmZvJikgeyBy
ZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgV2ViRXh0ZXJuYWxQb3B1cE1lbnUqIGNyZWF0ZUV4dGVy
bmFsUG9wdXBNZW51KAorICAgICAgICBjb25zdCBXZWJQb3B1cE1lbnVJbmZvJiwgV2ViRXh0ZXJu
YWxQb3B1cE1lbnVDbGllbnQqKSB7IHJldHVybiAwOyB9CiAKICAgICAvLyBDcmVhdGUgYSBzZXNz
aW9uIHN0b3JhZ2UgbmFtZXNwYWNlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBXZWJWaWV3
LgogICAgIHZpcnR1YWwgV2ViU3RvcmFnZU5hbWVzcGFjZSogY3JlYXRlU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIHsgcmV0dXJuIDA7IH0KSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gNjk0NTIpCisrKyBXZWJLaXQv
Y2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2
ICs0MCw3IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkV4dGVybmFsUG9w
dXBNZW51LmgiCiAjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCkBAIC04MjUsNiArODI2LDkgQEAgYm9v
bCBDaHJvbWVDbGllbnRJbXBsOjpzZWxlY3RJdGVtV3JpdGluZwogCiBQYXNzUmVmUHRyPFBvcHVw
TWVudT4gQ2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCog
Y2xpZW50KSBjb25zdAogeworICAgIGlmIChXZWJWaWV3SW1wbDo6dXNlRXh0ZXJuYWxQb3B1cE1l
bnVzKCkpCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXh0ZXJuYWxQb3B1cE1lbnUoY2xp
ZW50LCBtX3dlYlZpZXctPmNsaWVudCgpKSk7CisgICAgCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBQb3B1cE1lbnVDaHJvbWl1bShjbGllbnQpKTsKIH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVt
L3NyYy9FeHRlcm5hbFBvcHVwTWVudS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L3NyYy9FeHRlcm5hbFBvcHVwTWVudS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21p
dW0vc3JjL0V4dGVybmFsUG9wdXBNZW51LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXh0ZXJuYWxQb3B1cE1lbnUuaCIKKwor
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAi
UG9wdXBNZW51Q2xpZW50LmgiCisjaW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgorI2luY2x1ZGUg
IldlYkV4dGVybmFsUG9wdXBNZW51LmgiCisjaW5jbHVkZSAiV2ViTWVudUl0ZW1JbmZvLmgiCisj
aW5jbHVkZSAiV2ViUG9wdXBNZW51SW5mby5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorI2lu
Y2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitFeHRlcm5hbFBvcHVwTWVudTo6RXh0ZXJuYWxQb3B1cE1lbnUo
UG9wdXBNZW51Q2xpZW50KiBwb3B1cE1lbnVDbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViVmlld0NsaWVudCogd2ViVmlld0NsaWVudCkKKyAgICA6IG1fcG9w
dXBNZW51Q2xpZW50KHBvcHVwTWVudUNsaWVudCkKKyAgICAsIG1fd2ViVmlld0NsaWVudCh3ZWJW
aWV3Q2xpZW50KQorICAgICwgbV93ZWJFeHRlcm5hbFBvcHVwTWVudSgwKQoreworfQorCitFeHRl
cm5hbFBvcHVwTWVudTo6fkV4dGVybmFsUG9wdXBNZW51KCkKK3sKK30KKwordm9pZCBFeHRlcm5h
bFBvcHVwTWVudTo6c2hvdyhjb25zdCBJbnRSZWN0JiByZWN0LCBGcmFtZVZpZXcqIHYsIGludCBp
bmRleCkKK3sKKyAgICAvLyBXZWJDb3JlIHJldXNlcyB0aGUgUG9wdXBNZW51IG9mIGEgcGFnZS4K
KyAgICAvLyBGb3Igc2ltcGxpY2l0eSwgd2UgZG8gcmVjcmVhdGUgdGhlIGFjdHVhbCBleHRlcm5h
bCBwb3B1cCBldmVyeXRpbWUuCisgICAgaGlkZSgpOworCisgICAgV2ViUG9wdXBNZW51SW5mbyBp
bmZvOworICAgIGdldFBvcHVwTWVudUluZm8oJmluZm8pOworICAgIG1fd2ViRXh0ZXJuYWxQb3B1
cE1lbnUgPQorICAgICAgICBtX3dlYlZpZXdDbGllbnQtPmNyZWF0ZUV4dGVybmFsUG9wdXBNZW51
KGluZm8sIHRoaXMpOworICAgIEludFBvaW50IGxvY2F0aW9uID0gdi0+Y29udGVudHNUb1dpbmRv
dyhyZWN0LmxvY2F0aW9uKCkpOworICAgIG1fd2ViRXh0ZXJuYWxQb3B1cE1lbnUtPnNob3coV2Vi
UmVjdChsb2NhdGlvbi54KCksIGxvY2F0aW9uLnkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7Cit9CisKK3Zv
aWQgRXh0ZXJuYWxQb3B1cE1lbnU6OmhpZGUoKQoreworICAgIGlmIChtX3BvcHVwTWVudUNsaWVu
dCkKKyAgICAgICAgbV9wb3B1cE1lbnVDbGllbnQtPnBvcHVwRGlkSGlkZSgpOworICAgIGlmICgh
bV93ZWJFeHRlcm5hbFBvcHVwTWVudSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fd2ViRXh0ZXJu
YWxQb3B1cE1lbnUtPmNsb3NlKCk7CisgICAgbV93ZWJFeHRlcm5hbFBvcHVwTWVudSA9IDA7Cit9
CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OnVwZGF0ZUZyb21FbGVtZW50KCkKK3sKK30KKwor
dm9pZCBFeHRlcm5hbFBvcHVwTWVudTo6ZGlzY29ubmVjdENsaWVudCgpCit7CisgICAgaGlkZSgp
OworICAgIG1fcG9wdXBNZW51Q2xpZW50ID0gMDsKK30KKwordm9pZCBFeHRlcm5hbFBvcHVwTWVu
dTo6ZGlkQ2hhbmdlU2VsZWN0aW9uKGludCBpbmRleCkKK3sKKyAgICBpZiAobV9wb3B1cE1lbnVD
bGllbnQpCisgICAgICAgIG1fcG9wdXBNZW51Q2xpZW50LT5zZWxlY3Rpb25DaGFuZ2VkKGluZGV4
KTsKK30KKwordm9pZCBFeHRlcm5hbFBvcHVwTWVudTo6ZGlkQWNjZXB0SW5kZXgoaW50IGluZGV4
KQoreworICAgIGlmIChtX3BvcHVwTWVudUNsaWVudCkgeworICAgICAgICBtX3BvcHVwTWVudUNs
aWVudC0+dmFsdWVDaGFuZ2VkKGluZGV4KTsKKyAgICAgICAgbV9wb3B1cE1lbnVDbGllbnQtPnBv
cHVwRGlkSGlkZSgpOworICAgIH0KKyAgICBtX3dlYkV4dGVybmFsUG9wdXBNZW51ID0gMDsKK30K
Kwordm9pZCBFeHRlcm5hbFBvcHVwTWVudTo6ZGlkQ2FuY2VsKCkKK3sKKyAgICBpZiAobV9wb3B1
cE1lbnVDbGllbnQpCisgICAgICAgIG1fcG9wdXBNZW51Q2xpZW50LT5wb3B1cERpZEhpZGUoKTsK
KyAgICBtX3dlYkV4dGVybmFsUG9wdXBNZW51ID0gMDsKK30KKwordm9pZCBFeHRlcm5hbFBvcHVw
TWVudTo6Z2V0UG9wdXBNZW51SW5mbyhXZWJQb3B1cE1lbnVJbmZvKiBpbmZvKQoreworICAgIGlu
dCBpdGVtQ291bnQgPSBtX3BvcHVwTWVudUNsaWVudC0+bGlzdFNpemUoKTsKKyAgICBXZWJWZWN0
b3I8V2ViUG9wdXBNZW51SW5mbzo6SXRlbT4gaXRlbXMoCisgICAgICAgIHN0YXRpY19jYXN0PHNp
emVfdD4oaXRlbUNvdW50KSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVtQ291bnQ7ICsr
aSkgeworICAgICAgICBXZWJQb3B1cE1lbnVJbmZvOjpJdGVtJiBwb3B1cEl0ZW0gPSBpdGVtc1tp
XTsKKyAgICAgICAgcG9wdXBJdGVtLmxhYmVsID0gbV9wb3B1cE1lbnVDbGllbnQtPml0ZW1UZXh0
KGkpOworICAgICAgICBpZiAobV9wb3B1cE1lbnVDbGllbnQtPml0ZW1Jc1NlcGFyYXRvcihpKSkK
KyAgICAgICAgICAgIHBvcHVwSXRlbS50eXBlID0gV2ViTWVudUl0ZW1JbmZvOjpTZXBhcmF0b3I7
CisgICAgICAgIGVsc2UgaWYgKG1fcG9wdXBNZW51Q2xpZW50LT5pdGVtSXNMYWJlbChpKSkKKyAg
ICAgICAgICAgIHBvcHVwSXRlbS50eXBlID0gV2ViTWVudUl0ZW1JbmZvOjpHcm91cDsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcG9wdXBJdGVtLnR5cGUgPSBXZWJNZW51SXRlbUluZm86Ok9w
dGlvbjsKKyAgICAgICAgcG9wdXBJdGVtLmVuYWJsZWQgPSBtX3BvcHVwTWVudUNsaWVudC0+aXRl
bUlzRW5hYmxlZChpKTsKKyAgICB9CisKKyAgICBpbmZvLT5pdGVtSGVpZ2h0ID0gbV9wb3B1cE1l
bnVDbGllbnQtPm1lbnVTdHlsZSgpLmZvbnQoKS5oZWlnaHQoKTsKKyAgICBpbmZvLT5pdGVtRm9u
dFNpemUgPQorICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KG1fcG9wdXBNZW51Q2xpZW50LT5tZW51
U3R5bGUoKS5mb250KCkuc2l6ZSgpKTsKKyAgICBpbmZvLT5zZWxlY3RlZEluZGV4ID0gbV9wb3B1
cE1lbnVDbGllbnQtPnNlbGVjdGVkSW5kZXgoKTsKKyAgICBpbmZvLT5yaWdodEFsaWduZWQgPQor
ICAgICAgICBtX3BvcHVwTWVudUNsaWVudC0+bWVudVN0eWxlKCkudGV4dERpcmVjdGlvbigpID09
IFdlYkNvcmU6OlJUTDsKKyAgICBpbmZvLT5pdGVtcy5zd2FwKGl0ZW1zKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0V4dGVybmFsUG9wdXBN
ZW51LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlcm5hbFBvcHVwTWVu
dS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlcm5hbFBvcHVwTWVu
dS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFeHRlcm5hbFBvcHVwTWVu
dV9oCisjZGVmaW5lIEV4dGVybmFsUG9wdXBNZW51X2gKKworI2luY2x1ZGUgIlBvcHVwTWVudS5o
IgorI2luY2x1ZGUgIldlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEZyYW1lVmlldzsKK2NsYXNzIEludFJlY3Q7CitjbGFzcyBQb3B1cE1l
bnVDbGllbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJFeHRlcm5hbFBv
cHVwTWVudTsKK2NsYXNzIFdlYlZpZXdDbGllbnQ7CitzdHJ1Y3QgV2ViUG9wdXBNZW51SW5mbzsK
KworLy8gVGhlIEV4dGVybmFsUG9wdXBNZW51IGNvbm5lY3RzIHRoZSBhY3R1YWwgaW1wbGVtZW50
YXRpb24gb2YgdGhlIHBvcHVwIG1lbnUKKy8vIHRvIHRoZSBXZWJDb3JlIHBvcHVwIG1lbnUuCitj
bGFzcyBFeHRlcm5hbFBvcHVwTWVudSA6IHB1YmxpYyBXZWJDb3JlOjpQb3B1cE1lbnUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudCB7
CitwdWJsaWM6CisgICAgRXh0ZXJuYWxQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50
KiwgV2ViVmlld0NsaWVudCopOworICAgIHZpcnR1YWwgfkV4dGVybmFsUG9wdXBNZW51KCk7CisK
K3ByaXZhdGU6CisgICAgLy8gV2ViQ29yZTo6UG9wdXBNZW51IG1ldGhvZHM6CisgICAgdmlydHVh
bCB2b2lkIHNob3coY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OkZyYW1lVmlldyos
IGludCBpbmRleCk7CisgICAgdmlydHVhbCB2b2lkIGhpZGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdENsaWVudCgp
OworCisgICAgLy8gV2ViRXh0ZXJuYWxQb3B1cENsaWVudCBtZXRob2RzOgorICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oaW50IGluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
QWNjZXB0SW5kZXgoaW50IGluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKCk7CisK
KyAgICAvLyBGaWxscyB8aW5mb3wgd2l0aCB0aGUgcG9wdXAgbWVudSBpbmZvcm1hdGlvbiBjb250
YWluZWQgaW4gdGhlCisgICAgLy8gV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50IGFzc29jaWF0ZWQg
d2l0aCB0aGlzIEV4dGVybmFsUG9wdXBNZW51LgorICAgIHZvaWQgZ2V0UG9wdXBNZW51SW5mbyhX
ZWJQb3B1cE1lbnVJbmZvKiBpbmZvKTsKKworICAgIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCog
bV9wb3B1cE1lbnVDbGllbnQ7CisgICAgV2ViVmlld0NsaWVudCogbV93ZWJWaWV3Q2xpZW50Owor
CisgICAgLy8gVGhlIGFjdHVhbCBpbXBsZW1lbnRvciBvZiB0aGUgc2hvdyBtZW51LgorICAgIFdl
YkV4dGVybmFsUG9wdXBNZW51KiBtX3dlYkV4dGVybmFsUG9wdXBNZW51OworfTsgCisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRXh0ZXJuYWxQb3B1cE1lbnVfaApJbmRleDog
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDY5NDUyKQorKysgV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw2ICsx
ODIsOCBAQCBzdGF0aWMgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyBhdXRvCiAgICAgUG9w
dXBDb250YWluZXJTZXR0aW5nczo6RE9NRWxlbWVudERpcmVjdGlvbiwKIH07CiAKK3N0YXRpYyBi
b29sIHNob3VsZFVzZUV4dGVybmFsUG9wdXBNZW51cyA9IGZhbHNlOworCiAvLyBXZWJWaWV3IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlKFdlYlZpZXdDbGllbnQqIGNsaWVudCwg
V2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHNDbGllbnQpCkBAIC0xOTMsNiArMTk1LDEx
IEBAIFdlYlZpZXcqIFdlYlZpZXc6OmNyZWF0ZShXZWJWaWV3Q2xpZW50KiAKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYlZpZXdJbXBsKGNsaWVudCwgZGV2VG9vbHNDbGllbnQpKS5sZWFrUmVm
KCk7CiB9CiAKK3ZvaWQgV2ViVmlldzo6c2V0VXNlRXh0ZXJuYWxQb3B1cE1lbnVzKGJvb2wgdXNl
RXh0ZXJuYWxQb3B1cE1lbnVzKQoreworICAgIHNob3VsZFVzZUV4dGVybmFsUG9wdXBNZW51cyA9
IHVzZUV4dGVybmFsUG9wdXBNZW51czsKK30KKwogdm9pZCBXZWJWaWV3Ojp1cGRhdGVWaXNpdGVk
TGlua1N0YXRlKHVuc2lnbmVkIGxvbmcgbG9uZyBsaW5rSGFzaCkKIHsKICAgICBQYWdlOjp2aXNp
dGVkU3RhdGVDaGFuZ2VkKFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cE5hbWUpLCBsaW5r
SGFzaCk7CkBAIC0yMDgzLDYgKzIwOTAsMTEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZGlkQ29tbWl0
TG9hZChib29sKiBpcwogICAgIG1fb2JzZXJ2ZWROZXdOYXZpZ2F0aW9uID0gZmFsc2U7CiB9CiAK
K2Jvb2wgV2ViVmlld0ltcGw6OnVzZUV4dGVybmFsUG9wdXBNZW51cygpCit7CisgICAgcmV0dXJu
IHNob3VsZFVzZUV4dGVybmFsUG9wdXBNZW51czsKK30KKwogYm9vbCBXZWJWaWV3SW1wbDo6bmF2
aWdhdGlvblBvbGljeUZyb21Nb3VzZUV2ZW50KHVuc2lnbmVkIHNob3J0IGJ1dHRvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGN0cmwsIGJv
b2wgc2hpZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBhbHQsIGJvb2wgbWV0YSwKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgJ
KHJldmlzaW9uIDY5NDUyKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjcsNiArMjY3LDEwIEBAIHB1YmxpYzoKICAgICAvLyBsb2FkLgog
ICAgIHZvaWQgZGlkQ29tbWl0TG9hZChib29sKiBpc05ld05hdmlnYXRpb24pOwogCisgICAgLy8g
UmV0dXJucyB0cnVlIGlmIHBvcHVwIG1lbnVzIHNob3VsZCBiZSByZW5kZXJlZCBieSB0aGUgYnJv
d3NlciwgZmFsc2UgaWYKKyAgICAvLyB0aGV5IHNob3VsZCBiZSByZW5kZXJlZCBieSBXZWJLaXQg
KHdoaWNoIGlzIHRoZSBkZWZhdWx0KS4KKyAgICBzdGF0aWMgYm9vbCB1c2VFeHRlcm5hbFBvcHVw
TWVudXMoKTsKKwogICAgIGJvb2wgY29udGV4dE1lbnVBbGxvd2VkKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX2NvbnRleHRNZW51QWxsb3dlZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71304</attachid>
            <date>2010-10-20 10:18:13 -0700</date>
            <delta_ts>2010-10-20 14:55:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-46016-20101020101811.patch</filename>
            <type>text/plain</type>
            <size>21094</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjk1ODUpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMTAtMTIgIEpheSBD
aXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEZpc2hlci4KKworICAgICAgICBbQ2hyb21pdW1dIEFkZGluZyBhbiBBUEkgdGhhdCBhbGxv
d3MgZXh0ZXJuYWwKKyAgICAgICAgcG9wdXAgbWVudXMsIHdpdGhvdXQgdGhlIHVzZSBvZiBXZWJD
b3JlOjpQb3B1cE1lbnVDaHJvbWl1bS4KKyAgICAgICAgT25jZSB0aGlzIGlzIGhvb2tlZCB1cCBp
biBDaHJvbWl1bSwgdGhlIHBsYW4gaXMgdG8gcmVtb3ZlCisgICAgICAgIGVudGlyZWx5IHRoZSBl
eHRlcm5hbCBjYXNlIGZyb20gUG9wdXBNZW51Q2hyb21pdW0uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjAxNgorCisgICAgICAgICogV2ViS2l0Lmd5
cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1lbnUuaDogQWRkZWQuCisgICAg
ICAgICogcHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50Lmg6IEFkZGVkLgorICAgICAg
ICAqIHB1YmxpYy9XZWJNZW51SXRlbUluZm8uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVudUl0
ZW1JbmZvOjpXZWJNZW51SXRlbUluZm8pOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6Cisg
ICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0NsaWVudDo6Y3JlYXRlRXh0ZXJuYWxQb3B1cE1lbnUpOgorICAgICAgICAqIHNyYy9DaHJvbWVD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRl
UG9wdXBNZW51KToKKyAgICAgICAgKiBzcmMvRXh0ZXJuYWxQb3B1cE1lbnUuY3BwOiBBZGRlZC4K
KyAgICAgICAqIHNyYy9FeHRlcm5hbFBvcHVwTWVudS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpzZXRVc2VFeHRlcm5h
bFBvcHVwTWVudXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXNlRXh0ZXJuYWxQ
b3B1cE1lbnVzKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0xMC0xMSAg
RGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBUb255IENoYW5nLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDY5NDUyKQorKysgV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw2ICsxNTAsOCBA
QAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRHJhZ0RhdGEuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJFZGl0aW5nQWN0aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViRWxlbWVudC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkV4dGVybmFsUG9wdXBN
ZW51LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGll
bnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24u
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlQ2hvb3NlclBhcmFtcy5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVFcnJvci5oJywKQEAgLTMyNCw2ICszMjYsOCBA
QAogICAgICAgICAgICAgICAgICdzcmMvRWRpdG9yQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAg
ICAgICAnc3JjL0V2ZW50TGlzdGVuZXJXcmFwcGVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9FdmVudExpc3RlbmVyV3JhcHBlci5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0V4dGVybmFs
UG9wdXBNZW51LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9FeHRlcm5hbFBvcHVwTWVudS5o
JywKICAgICAgICAgICAgICAgICAnc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvRnJhbWVOZXR3b3JraW5nQ29udGV4dEltcGwuaCcsCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudS5oCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVudS5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJFeHRlcm5hbFBvcHVwTWVudV9oCisjZGVmaW5l
IFdlYkV4dGVybmFsUG9wdXBNZW51X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlJlY3Q7CisKK2NsYXNzIFdlYkV4dGVybmFsUG9wdXBNZW51IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIHZvaWQgc2hvdyhjb25zdCBXZWJSZWN0JiBib3VuZHMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgY2xvc2UoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFdlYkV4dGVybmFsUG9wdXBNZW51X2gKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50LmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50X2gK
KyNkZWZpbmUgV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnRfaAorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQgeworcHVibGljOgorICAgIC8v
IFNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW0gaW4gdGhl
IHBvcHVwIG1lbnUKKyAgICAvLyBjaGFuZ2VkLiBDYW4gYmUgLTEgaWYgdGhlcmUgaXMgbm8gc2Vs
ZWN0aW9uLgorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oaW50IGluZGV4KSA9
IDA7CisKKyAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHdoZW4gYW4gaW5kZXggaGFzIGJlZW4gYWNj
ZXB0ZWQuCisgICAgLy8gTm90ZSB0aGF0IGl0IGlzIG5vdCBzYWZlIHRvIGFjY2VzcyB0aGlzIFdl
YkV4dGVybmFsUG9wdXBDbGllbnRNZW51IGFmdGVyCisgICAgLy8gdGhpcyBoYXMgYmVlbiBjYWxs
ZWQgYXMgaXQgbWlnaHQgbm90IGJlIHZhbGlkIGFueW1vcmUuCisgICAgdmlydHVhbCB2b2lkIGRp
ZEFjY2VwdEluZGV4KGludCBpbmRleCkgPSAwOworCisgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCB3
aGVuIHRoZSBwb3B1cCBtZW51IHdhcyBkaXNjYXJkZWQgKGNsb3NlZCB3aXRob3V0IGEKKyAgICAv
LyBzZWxlY3Rpb24uCisgICAgLy8gTm90ZSB0aGF0IGl0IGlzIG5vdCBzYWZlIHRvIGFjY2VzcyB0
aGlzIFdlYkV4dGVybmFsUG9wdXBDbGllbnRNZW51IGFmdGVyCisgICAgLy8gdGhpcyBoYXMgYmVl
biBjYWxsZWQgYXMgaXQgbWlnaHQgbm90IGJlIHZhbGlkIGFueW1vcmUuCisgICAgdmlydHVhbCB2
b2lkIGRpZENhbmNlbCgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnRfaApJbmRleDogV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJNZW51SXRlbUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYk1lbnVJdGVtSW5mby5oCShyZXZpc2lvbiA2OTQ1MikKKysrIFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViTWVudUl0ZW1JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0
LDE1IEBAIHN0cnVjdCBXZWJNZW51SXRlbUluZm8gewogICAgICAgICBHcm91cCwKICAgICAgICAg
U2VwYXJhdG9yLAogICAgIH07CisKKyAgICBXZWJNZW51SXRlbUluZm8oKSAKKyAgICAgICAgOiB0
eXBlKE9wdGlvbikKKyAgICAgICAgLCBhY3Rpb24oMCkKKyAgICAgICAgLCBlbmFibGVkKGZhbHNl
KQorICAgICAgICAsIGNoZWNrZWQoZmFsc2UpCisgICAgeworICAgIH0KKwogICAgIFdlYlN0cmlu
ZyBsYWJlbDsKICAgICBUeXBlIHR5cGU7CiAgICAgdW5zaWduZWQgYWN0aW9uOwpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWV3LmgJKHJldmlzaW9uIDY5NDUyKQorKysgV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDEzICs2OSwxMyBAQCBwdWJs
aWM6CiAgICAgICAgIFVzZXJDb250ZW50SW5qZWN0SW5BbGxGcmFtZXMsCiAgICAgICAgIFVzZXJD
b250ZW50SW5qZWN0SW5Ub3BGcmFtZU9ubHkKICAgICB9OwotICAgIAorCiAgICAgLy8gQ29udHJv
bHMgd2hpY2ggZG9jdW1lbnRzIHVzZXIgc3R5bGVzIGFyZSBpbmplY3RlZCBpbnRvLgogICAgIGVu
dW0gVXNlclN0eWxlSW5qZWN0aW9uVGltZSB7CiAgICAgICAgIFVzZXJTdHlsZUluamVjdEluRXhp
c3RpbmdEb2N1bWVudHMsCiAgICAgICAgIFVzZXJTdHlsZUluamVjdEluU3Vic2VxdWVudERvY3Vt
ZW50cwogICAgIH07Ci0gICAgCisKIAogICAgIC8vIEluaXRpYWxpemF0aW9uIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0zMDksNiAr
MzA5LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybUN1c3RvbUNvbnRleHRN
ZW51QWN0aW9uKHVuc2lnbmVkIGFjdGlvbikgPSAwOwogCiAKKyAgICAvLyBQb3B1cCBtZW51IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworICAgIC8vIFNldHMgd2hldGhlciBzZWxlY3QgcG9wdXAgbWVudXMgc2hvdWxkIGJlIHJlbmRl
cmVkIGJ5IHRoZSBicm93c2VyLgorICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgc2V0VXNlRXh0
ZXJuYWxQb3B1cE1lbnVzKGJvb2wpOworCisKICAgICAvLyBWaXNpdGVkIGxpbmsgc3RhdGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8v
IFRlbGxzIGFsbCBXZWJWaWV3IGluc3RhbmNlcyB0byB1cGRhdGUgdGhlIHZpc2l0ZWQgbGluayBz
dGF0ZSBmb3IgdGhlCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAko
cmV2aXNpb24gNjk0NTIpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQCBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0OwogY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CiBjbGFzcyBXZWJEcmFn
RGF0YTsKIGNsYXNzIFdlYkVsZW1lbnQ7CitjbGFzcyBXZWJFeHRlcm5hbFBvcHVwTWVudTsKK2Ns
YXNzIFdlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgV2ViRmlsZUNob29zZXJDb21w
bGV0aW9uOwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJHZW9sb2NhdGlvblNlcnZpY2U7CkBA
IC04Nyw2ICs4OSw4IEBAIHB1YmxpYzoKICAgICAvLyByZXNwb25zaWJsZSBmb3IgcmVuZGVyaW5n
IHRoZSBjb250ZW50cyBvZiB0aGUgcG9wdXAgbWVudS4KICAgICB2aXJ0dWFsIFdlYldpZGdldCog
Y3JlYXRlUG9wdXBNZW51KFdlYlBvcHVwVHlwZSkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwg
V2ViV2lkZ2V0KiBjcmVhdGVQb3B1cE1lbnUoY29uc3QgV2ViUG9wdXBNZW51SW5mbyYpIHsgcmV0
dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdlYkV4dGVybmFsUG9wdXBNZW51KiBjcmVhdGVFeHRlcm5h
bFBvcHVwTWVudSgKKyAgICAgICAgY29uc3QgV2ViUG9wdXBNZW51SW5mbyYsIFdlYkV4dGVybmFs
UG9wdXBNZW51Q2xpZW50KikgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gQ3JlYXRlIGEgc2Vzc2lv
biBzdG9yYWdlIG5hbWVzcGFjZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgV2ViVmlldy4K
ICAgICB2aXJ0dWFsIFdlYlN0b3JhZ2VOYW1lc3BhY2UqIGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSB7IHJldHVybiAwOyB9CkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDY5NDUyKQorKysgV2ViS2l0L2No
cm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJFeHRlcm5hbFBvcHVw
TWVudS5oIgogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgpAQCAtODI1LDYgKzgyNiw5IEBAIGJvb2wg
Q2hyb21lQ2xpZW50SW1wbDo6c2VsZWN0SXRlbVdyaXRpbmcKIAogUGFzc1JlZlB0cjxQb3B1cE1l
bnU+IENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqIGNs
aWVudCkgY29uc3QKIHsKKyAgICBpZiAoV2ViVmlld0ltcGw6OnVzZUV4dGVybmFsUG9wdXBNZW51
cygpKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV4dGVybmFsUG9wdXBNZW51KGNsaWVu
dCwgbV93ZWJWaWV3LT5jbGllbnQoKSkpOworICAgIAogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UG9wdXBNZW51Q2hyb21pdW0oY2xpZW50KSk7CiB9CiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvRXh0ZXJuYWxQb3B1cE1lbnUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvRXh0ZXJuYWxQb3B1cE1lbnUuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVt
L3NyYy9FeHRlcm5hbFBvcHVwTWVudS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV4dGVybmFsUG9wdXBNZW51LmgiCisKKyNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIlBv
cHVwTWVudUNsaWVudC5oIgorI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKKyNpbmNsdWRlICJX
ZWJFeHRlcm5hbFBvcHVwTWVudS5oIgorI2luY2x1ZGUgIldlYk1lbnVJdGVtSW5mby5oIgorI2lu
Y2x1ZGUgIldlYlBvcHVwTWVudUluZm8uaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKyNpbmNs
dWRlICJXZWJWaWV3Q2xpZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworRXh0ZXJuYWxQb3B1cE1lbnU6OkV4dGVybmFsUG9wdXBNZW51KFBv
cHVwTWVudUNsaWVudCogcG9wdXBNZW51Q2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYlZpZXdDbGllbnQqIHdlYlZpZXdDbGllbnQpCisgICAgOiBtX3BvcHVw
TWVudUNsaWVudChwb3B1cE1lbnVDbGllbnQpCisgICAgLCBtX3dlYlZpZXdDbGllbnQod2ViVmll
d0NsaWVudCkKKyAgICAsIG1fd2ViRXh0ZXJuYWxQb3B1cE1lbnUoMCkKK3sKK30KKworRXh0ZXJu
YWxQb3B1cE1lbnU6On5FeHRlcm5hbFBvcHVwTWVudSgpCit7Cit9CisKK3ZvaWQgRXh0ZXJuYWxQ
b3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2LCBpbnQgaW5k
ZXgpCit7CisgICAgLy8gV2ViQ29yZSByZXVzZXMgdGhlIFBvcHVwTWVudSBvZiBhIHBhZ2UuCisg
ICAgLy8gRm9yIHNpbXBsaWNpdHksIHdlIGRvIHJlY3JlYXRlIHRoZSBhY3R1YWwgZXh0ZXJuYWwg
cG9wdXAgZXZlcnl0aW1lLgorICAgIGhpZGUoKTsKKworICAgIFdlYlBvcHVwTWVudUluZm8gaW5m
bzsKKyAgICBnZXRQb3B1cE1lbnVJbmZvKCZpbmZvKTsKKyAgICBtX3dlYkV4dGVybmFsUG9wdXBN
ZW51ID0KKyAgICAgICAgbV93ZWJWaWV3Q2xpZW50LT5jcmVhdGVFeHRlcm5hbFBvcHVwTWVudShp
bmZvLCB0aGlzKTsKKyAgICBtX3dlYkV4dGVybmFsUG9wdXBNZW51LT5zaG93KHYtPmNvbnRlbnRz
VG9XaW5kb3cocmVjdCkpOworfQorCit2b2lkIEV4dGVybmFsUG9wdXBNZW51OjpoaWRlKCkKK3sK
KyAgICBpZiAobV9wb3B1cE1lbnVDbGllbnQpCisgICAgICAgIG1fcG9wdXBNZW51Q2xpZW50LT5w
b3B1cERpZEhpZGUoKTsKKyAgICBpZiAoIW1fd2ViRXh0ZXJuYWxQb3B1cE1lbnUpCisgICAgICAg
IHJldHVybjsKKyAgICBtX3dlYkV4dGVybmFsUG9wdXBNZW51LT5jbG9zZSgpOworICAgIG1fd2Vi
RXh0ZXJuYWxQb3B1cE1lbnUgPSAwOworfQorCit2b2lkIEV4dGVybmFsUG9wdXBNZW51Ojp1cGRh
dGVGcm9tRWxlbWVudCgpCit7Cit9CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OmRpc2Nvbm5l
Y3RDbGllbnQoKQoreworICAgIGhpZGUoKTsKKyAgICBtX3BvcHVwTWVudUNsaWVudCA9IDA7Cit9
CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OmRpZENoYW5nZVNlbGVjdGlvbihpbnQgaW5kZXgp
Cit7CisgICAgaWYgKG1fcG9wdXBNZW51Q2xpZW50KQorICAgICAgICBtX3BvcHVwTWVudUNsaWVu
dC0+c2VsZWN0aW9uQ2hhbmdlZChpbmRleCk7Cit9CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6
OmRpZEFjY2VwdEluZGV4KGludCBpbmRleCkKK3sKKyAgICBpZiAobV9wb3B1cE1lbnVDbGllbnQp
IHsKKyAgICAgICAgbV9wb3B1cE1lbnVDbGllbnQtPnZhbHVlQ2hhbmdlZChpbmRleCk7CisgICAg
ICAgIG1fcG9wdXBNZW51Q2xpZW50LT5wb3B1cERpZEhpZGUoKTsKKyAgICB9CisgICAgbV93ZWJF
eHRlcm5hbFBvcHVwTWVudSA9IDA7Cit9CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OmRpZENh
bmNlbCgpCit7CisgICAgaWYgKG1fcG9wdXBNZW51Q2xpZW50KQorICAgICAgICBtX3BvcHVwTWVu
dUNsaWVudC0+cG9wdXBEaWRIaWRlKCk7CisgICAgbV93ZWJFeHRlcm5hbFBvcHVwTWVudSA9IDA7
Cit9CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OmdldFBvcHVwTWVudUluZm8oV2ViUG9wdXBN
ZW51SW5mbyogaW5mbykKK3sKKyAgICBpbnQgaXRlbUNvdW50ID0gbV9wb3B1cE1lbnVDbGllbnQt
Pmxpc3RTaXplKCk7CisgICAgV2ViVmVjdG9yPFdlYlBvcHVwTWVudUluZm86Okl0ZW0+IGl0ZW1z
KAorICAgICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KGl0ZW1Db3VudCkpOworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgaXRlbUNvdW50OyArK2kpIHsKKyAgICAgICAgV2ViUG9wdXBNZW51SW5mbzo6
SXRlbSYgcG9wdXBJdGVtID0gaXRlbXNbaV07CisgICAgICAgIHBvcHVwSXRlbS5sYWJlbCA9IG1f
cG9wdXBNZW51Q2xpZW50LT5pdGVtVGV4dChpKTsKKyAgICAgICAgaWYgKG1fcG9wdXBNZW51Q2xp
ZW50LT5pdGVtSXNTZXBhcmF0b3IoaSkpCisgICAgICAgICAgICBwb3B1cEl0ZW0udHlwZSA9IFdl
Yk1lbnVJdGVtSW5mbzo6U2VwYXJhdG9yOworICAgICAgICBlbHNlIGlmIChtX3BvcHVwTWVudUNs
aWVudC0+aXRlbUlzTGFiZWwoaSkpCisgICAgICAgICAgICBwb3B1cEl0ZW0udHlwZSA9IFdlYk1l
bnVJdGVtSW5mbzo6R3JvdXA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBvcHVwSXRlbS50
eXBlID0gV2ViTWVudUl0ZW1JbmZvOjpPcHRpb247CisgICAgICAgIHBvcHVwSXRlbS5lbmFibGVk
ID0gbV9wb3B1cE1lbnVDbGllbnQtPml0ZW1Jc0VuYWJsZWQoaSk7CisgICAgfQorCisgICAgaW5m
by0+aXRlbUhlaWdodCA9IG1fcG9wdXBNZW51Q2xpZW50LT5tZW51U3R5bGUoKS5mb250KCkuaGVp
Z2h0KCk7CisgICAgaW5mby0+aXRlbUZvbnRTaXplID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8aW50
PihtX3BvcHVwTWVudUNsaWVudC0+bWVudVN0eWxlKCkuZm9udCgpLnNpemUoKSk7CisgICAgaW5m
by0+c2VsZWN0ZWRJbmRleCA9IG1fcG9wdXBNZW51Q2xpZW50LT5zZWxlY3RlZEluZGV4KCk7Cisg
ICAgaW5mby0+cmlnaHRBbGlnbmVkID0KKyAgICAgICAgbV9wb3B1cE1lbnVDbGllbnQtPm1lbnVT
dHlsZSgpLnRleHREaXJlY3Rpb24oKSA9PSBXZWJDb3JlOjpSVEw7CisgICAgaW5mby0+aXRlbXMu
c3dhcChpdGVtcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0L2No
cm9taXVtL3NyYy9FeHRlcm5hbFBvcHVwTWVudS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJv
bWl1bS9zcmMvRXh0ZXJuYWxQb3B1cE1lbnUuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJv
bWl1bS9zcmMvRXh0ZXJuYWxQb3B1cE1lbnUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgRXh0ZXJuYWxQb3B1cE1lbnVfaAorI2RlZmluZSBFeHRlcm5hbFBvcHVwTWVudV9o
CisKKyNpbmNsdWRlICJQb3B1cE1lbnUuaCIKKyNpbmNsdWRlICJXZWJFeHRlcm5hbFBvcHVwTWVu
dUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGcmFtZVZpZXc7CitjbGFz
cyBJbnRSZWN0OworY2xhc3MgUG9wdXBNZW51Q2xpZW50OworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViRXh0ZXJuYWxQb3B1cE1lbnU7CitjbGFzcyBXZWJWaWV3Q2xpZW50Owor
c3RydWN0IFdlYlBvcHVwTWVudUluZm87CisKKy8vIFRoZSBFeHRlcm5hbFBvcHVwTWVudSBjb25u
ZWN0cyB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBwb3B1cCBtZW51CisvLyB0byB0
aGUgV2ViQ29yZSBwb3B1cCBtZW51LgorY2xhc3MgRXh0ZXJuYWxQb3B1cE1lbnUgOiBwdWJsaWMg
V2ViQ29yZTo6UG9wdXBNZW51LAorICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2Vi
RXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQgeworcHVibGljOgorICAgIEV4dGVybmFsUG9wdXBNZW51
KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCosIFdlYlZpZXdDbGllbnQqKTsKKyAgICB2aXJ0dWFs
IH5FeHRlcm5hbFBvcHVwTWVudSgpOworCitwcml2YXRlOgorICAgIC8vIFdlYkNvcmU6OlBvcHVw
TWVudSBtZXRob2RzOgorICAgIHZpcnR1YWwgdm9pZCBzaG93KGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCBXZWJDb3JlOjpGcmFtZVZpZXcqLCBpbnQgaW5kZXgpOworICAgIHZpcnR1YWwgdm9pZCBo
aWRlKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7CisgICAgdmlydHVh
bCB2b2lkIGRpc2Nvbm5lY3RDbGllbnQoKTsKKworICAgIC8vIFdlYkV4dGVybmFsUG9wdXBDbGll
bnQgbWV0aG9kczoKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKGludCBpbmRl
eCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEFjY2VwdEluZGV4KGludCBpbmRleCk7CisgICAgdmly
dHVhbCB2b2lkIGRpZENhbmNlbCgpOworCisgICAgLy8gRmlsbHMgfGluZm98IHdpdGggdGhlIHBv
cHVwIG1lbnUgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRoZQorICAgIC8vIFdlYkNvcmU6OlBv
cHVwTWVudUNsaWVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyBFeHRlcm5hbFBvcHVwTWVudS4KKyAg
ICB2b2lkIGdldFBvcHVwTWVudUluZm8oV2ViUG9wdXBNZW51SW5mbyogaW5mbyk7CisKKyAgICBX
ZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIG1fcG9wdXBNZW51Q2xpZW50OworICAgIFdlYlZpZXdD
bGllbnQqIG1fd2ViVmlld0NsaWVudDsKKworICAgIC8vIFRoZSBhY3R1YWwgaW1wbGVtZW50b3Ig
b2YgdGhlIHNob3cgbWVudS4KKyAgICBXZWJFeHRlcm5hbFBvcHVwTWVudSogbV93ZWJFeHRlcm5h
bFBvcHVwTWVudTsKK307IAorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEV4
dGVybmFsUG9wdXBNZW51X2gKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShy
ZXZpc2lvbiA2OTQ1MikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDggQEAgc3RhdGljIGNvbnN0IFBvcHVwQ29udGFp
bmVyU2V0dGluZ3MgYXV0bwogICAgIFBvcHVwQ29udGFpbmVyU2V0dGluZ3M6OkRPTUVsZW1lbnRE
aXJlY3Rpb24sCiB9OwogCitzdGF0aWMgYm9vbCBzaG91bGRVc2VFeHRlcm5hbFBvcHVwTWVudXMg
PSBmYWxzZTsKKwogLy8gV2ViVmlldyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFdlYlZpZXcqIFdlYlZpZXc6OmNyZWF0
ZShXZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xz
Q2xpZW50KQpAQCAtMTkzLDYgKzE5NSwxMSBAQCBXZWJWaWV3KiBXZWJWaWV3OjpjcmVhdGUoV2Vi
Vmlld0NsaWVudCogCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWV3SW1wbChjbGllbnQs
IGRldlRvb2xzQ2xpZW50KSkubGVha1JlZigpOwogfQogCit2b2lkIFdlYlZpZXc6OnNldFVzZUV4
dGVybmFsUG9wdXBNZW51cyhib29sIHVzZUV4dGVybmFsUG9wdXBNZW51cykKK3sKKyAgICBzaG91
bGRVc2VFeHRlcm5hbFBvcHVwTWVudXMgPSB1c2VFeHRlcm5hbFBvcHVwTWVudXM7Cit9CisKIHZv
aWQgV2ViVmlldzo6dXBkYXRlVmlzaXRlZExpbmtTdGF0ZSh1bnNpZ25lZCBsb25nIGxvbmcgbGlu
a0hhc2gpCiB7CiAgICAgUGFnZTo6dmlzaXRlZFN0YXRlQ2hhbmdlZChQYWdlR3JvdXA6OnBhZ2VH
cm91cChwYWdlR3JvdXBOYW1lKSwgbGlua0hhc2gpOwpAQCAtMjA4Myw2ICsyMDkwLDExIEBAIHZv
aWQgV2ViVmlld0ltcGw6OmRpZENvbW1pdExvYWQoYm9vbCogaXMKICAgICBtX29ic2VydmVkTmV3
TmF2aWdhdGlvbiA9IGZhbHNlOwogfQogCitib29sIFdlYlZpZXdJbXBsOjp1c2VFeHRlcm5hbFBv
cHVwTWVudXMoKQoreworICAgIHJldHVybiBzaG91bGRVc2VFeHRlcm5hbFBvcHVwTWVudXM7Cit9
CisKIGJvb2wgV2ViVmlld0ltcGw6Om5hdmlnYXRpb25Qb2xpY3lGcm9tTW91c2VFdmVudCh1bnNp
Z25lZCBzaG9ydCBidXR0b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBjdHJsLCBib29sIHNoaWZ0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWx0LCBib29sIG1ldGEsCkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCShyZXZpc2lvbiA2OTQ1MikKKysrIFdlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDYgKzI2NywxMCBA
QCBwdWJsaWM6CiAgICAgLy8gbG9hZC4KICAgICB2b2lkIGRpZENvbW1pdExvYWQoYm9vbCogaXNO
ZXdOYXZpZ2F0aW9uKTsKIAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBwb3B1cCBtZW51cyBzaG91
bGQgYmUgcmVuZGVyZWQgYnkgdGhlIGJyb3dzZXIsIGZhbHNlIGlmCisgICAgLy8gdGhleSBzaG91
bGQgYmUgcmVuZGVyZWQgYnkgV2ViS2l0ICh3aGljaCBpcyB0aGUgZGVmYXVsdCkuCisgICAgc3Rh
dGljIGJvb2wgdXNlRXh0ZXJuYWxQb3B1cE1lbnVzKCk7CisKICAgICBib29sIGNvbnRleHRNZW51
QWxsb3dlZCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9jb250ZXh0TWVudUFsbG93
ZWQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71342</attachid>
            <date>2010-10-20 14:55:58 -0700</date>
            <delta_ts>2010-10-21 03:11:44 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-46016-20101020145556.patch</filename>
            <type>text/plain</type>
            <size>21115</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNzAxODEpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMTAtMjAgIEpheSBD
aXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEZpc2hlci4KKworICAgICAgICBbQ2hyb21pdW1dIEFkZGluZyBhbiBBUEkgdGhhdCBhbGxv
d3MgZXh0ZXJuYWwKKyAgICAgICAgcG9wdXAgbWVudXMsIHdpdGhvdXQgdGhlIHVzZSBvZiBXZWJD
b3JlOjpQb3B1cE1lbnVDaHJvbWl1bS4KKyAgICAgICAgT25jZSB0aGlzIGlzIGhvb2tlZCB1cCBp
biBDaHJvbWl1bSwgdGhlIHBsYW4gaXMgdG8gcmVtb3ZlCisgICAgICAgIGVudGlyZWx5IHRoZSBl
eHRlcm5hbCBjYXNlIGZyb20gUG9wdXBNZW51Q2hyb21pdW0uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjAxNgorCisgICAgICAgICogV2ViS2l0Lmd5
cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1lbnUuaDogQWRkZWQuCisgICAg
ICAgICogcHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50Lmg6IEFkZGVkLgorICAgICAg
ICAqIHB1YmxpYy9XZWJNZW51SXRlbUluZm8uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVudUl0
ZW1JbmZvOjpXZWJNZW51SXRlbUluZm8pOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6Cisg
ICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0NsaWVudDo6Y3JlYXRlRXh0ZXJuYWxQb3B1cE1lbnUpOgorICAgICAgICAqIHNyYy9DaHJvbWVD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6Y3JlYXRl
UG9wdXBNZW51KToKKyAgICAgICAgKiBzcmMvRXh0ZXJuYWxQb3B1cE1lbnUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiBzcmMvRXh0ZXJuYWxQb3B1cE1lbnUuaDogQWRkZWQuCisgICAgICAgICogc3Jj
L1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2V0VXNlRXh0ZXJu
YWxQb3B1cE1lbnVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnVzZUV4dGVybmFs
UG9wdXBNZW51cyk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTAtMTAtMjAg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3MDE2NS4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lv
biA3MDE3MCkKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTAsNiArMTUwLDggQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkVkaXRpbmdBY3Rp
b24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJFbGVtZW50LmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViRXhjZXB0aW9uQ29kZS5oJywKKyAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkV4dGVybmFsUG9wdXBNZW51LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
RXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJG
aWxlQ2hvb3NlckNvbXBsZXRpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxl
Q2hvb3NlclBhcmFtcy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVFcnJvci5o
JywKQEAgLTMyNSw2ICszMjcsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvRWRpdG9yQ2xpZW50
SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0V2ZW50TGlzdGVuZXJXcmFwcGVyLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9FdmVudExpc3RlbmVyV3JhcHBlci5oJywKKyAgICAgICAg
ICAgICAgICAnc3JjL0V4dGVybmFsUG9wdXBNZW51LmNwcCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9FeHRlcm5hbFBvcHVwTWVudS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvRnJhbWVOZXR3b3JraW5nQ29udGV4dEltcGwu
aCcsCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFBvcHVwTWVu
dS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFBv
cHVwTWVudS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJFeHRlcm5h
bFBvcHVwTWVudV9oCisjZGVmaW5lIFdlYkV4dGVybmFsUG9wdXBNZW51X2gKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlJlY3Q7CisKK2NsYXNzIFdlYkV4dGVybmFsUG9wdXBNZW51
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBXZWJSZWN0JiBib3VuZHMp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkV4dGVybmFsUG9wdXBNZW51X2gKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50LmgJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsUG9wdXBN
ZW51Q2xpZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkV4dGVy
bmFsUG9wdXBNZW51Q2xpZW50X2gKKyNkZWZpbmUgV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnRf
aAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGll
bnQgeworcHVibGljOgorICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgY3VycmVudGx5
IHNlbGVjdGVkIGl0ZW0gaW4gdGhlIHBvcHVwIG1lbnUKKyAgICAvLyBjaGFuZ2VkLiBDYW4gYmUg
LTEgaWYgdGhlcmUgaXMgbm8gc2VsZWN0aW9uLgorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VT
ZWxlY3Rpb24oaW50IGluZGV4KSA9IDA7CisKKyAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHdoZW4g
YW4gaW5kZXggaGFzIGJlZW4gYWNjZXB0ZWQuCisgICAgLy8gTm90ZSB0aGF0IGl0IGlzIG5vdCBz
YWZlIHRvIGFjY2VzcyB0aGlzIFdlYkV4dGVybmFsUG9wdXBDbGllbnRNZW51IGFmdGVyCisgICAg
Ly8gdGhpcyBoYXMgYmVlbiBjYWxsZWQgYXMgaXQgbWlnaHQgbm90IGJlIHZhbGlkIGFueW1vcmUu
CisgICAgdmlydHVhbCB2b2lkIGRpZEFjY2VwdEluZGV4KGludCBpbmRleCkgPSAwOworCisgICAg
Ly8gU2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBwb3B1cCBtZW51IHdhcyBkaXNjYXJkZWQgKGNs
b3NlZCB3aXRob3V0IGEKKyAgICAvLyBzZWxlY3Rpb24uCisgICAgLy8gTm90ZSB0aGF0IGl0IGlz
IG5vdCBzYWZlIHRvIGFjY2VzcyB0aGlzIFdlYkV4dGVybmFsUG9wdXBDbGllbnRNZW51IGFmdGVy
CisgICAgLy8gdGhpcyBoYXMgYmVlbiBjYWxsZWQgYXMgaXQgbWlnaHQgbm90IGJlIHZhbGlkIGFu
eW1vcmUuCisgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbCgpID0gMDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnRfaApJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZW51SXRlbUluZm8uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lbnVJdGVtSW5mby5oCShyZXZpc2lvbiA3
MDE3MCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVudUl0ZW1JbmZvLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDYgKzQ0LDE1IEBAIHN0cnVjdCBXZWJNZW51SXRlbUluZm8gewogICAg
ICAgICBHcm91cCwKICAgICAgICAgU2VwYXJhdG9yLAogICAgIH07CisKKyAgICBXZWJNZW51SXRl
bUluZm8oKSAKKyAgICAgICAgOiB0eXBlKE9wdGlvbikKKyAgICAgICAgLCBhY3Rpb24oMCkKKyAg
ICAgICAgLCBlbmFibGVkKGZhbHNlKQorICAgICAgICAsIGNoZWNrZWQoZmFsc2UpCisgICAgewor
ICAgIH0KKwogICAgIFdlYlN0cmluZyBsYWJlbDsKICAgICBUeXBlIHR5cGU7CiAgICAgdW5zaWdu
ZWQgYWN0aW9uOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgJKHJldmlzaW9uIDcwMTcw
KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAg
LTY5LDEzICs2OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIFVzZXJDb250ZW50SW5qZWN0SW5BbGxG
cmFtZXMsCiAgICAgICAgIFVzZXJDb250ZW50SW5qZWN0SW5Ub3BGcmFtZU9ubHkKICAgICB9Owot
ICAgIAorCiAgICAgLy8gQ29udHJvbHMgd2hpY2ggZG9jdW1lbnRzIHVzZXIgc3R5bGVzIGFyZSBp
bmplY3RlZCBpbnRvLgogICAgIGVudW0gVXNlclN0eWxlSW5qZWN0aW9uVGltZSB7CiAgICAgICAg
IFVzZXJTdHlsZUluamVjdEluRXhpc3RpbmdEb2N1bWVudHMsCiAgICAgICAgIFVzZXJTdHlsZUlu
amVjdEluU3Vic2VxdWVudERvY3VtZW50cwogICAgIH07Ci0gICAgCisKIAogICAgIC8vIEluaXRp
YWxpemF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCkBAIC0zMTUsNiArMzE1LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cGVyZm9ybUN1c3RvbUNvbnRleHRNZW51QWN0aW9uKHVuc2lnbmVkIGFjdGlvbikgPSAwOwogCiAK
KyAgICAvLyBQb3B1cCBtZW51IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIFNldHMgd2hldGhlciBzZWxlY3QgcG9wdXAg
bWVudXMgc2hvdWxkIGJlIHJlbmRlcmVkIGJ5IHRoZSBicm93c2VyLgorICAgIFdFQktJVF9BUEkg
c3RhdGljIHZvaWQgc2V0VXNlRXh0ZXJuYWxQb3B1cE1lbnVzKGJvb2wpOworCisKICAgICAvLyBW
aXNpdGVkIGxpbmsgc3RhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogICAgIC8vIFRlbGxzIGFsbCBXZWJWaWV3IGluc3RhbmNlcyB0byB1cGRh
dGUgdGhlIHZpc2l0ZWQgbGluayBzdGF0ZSBmb3IgdGhlCkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlZpZXdDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXdDbGllbnQuaAkocmV2aXNpb24gNzAxNzApCisrKyBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlZpZXdDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQCBj
bGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnQ7CiBjbGFzcyBXZWJEcmFnRGF0YTsKIGNsYXNzIFdlYkVsZW1lbnQ7CitjbGFzcyBXZWJF
eHRlcm5hbFBvcHVwTWVudTsKK2NsYXNzIFdlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50OwogY2xh
c3MgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uOwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJH
ZW9sb2NhdGlvblNlcnZpY2U7CkBAIC04Nyw2ICs4OSw4IEBAIHB1YmxpYzoKICAgICAvLyByZXNw
b25zaWJsZSBmb3IgcmVuZGVyaW5nIHRoZSBjb250ZW50cyBvZiB0aGUgcG9wdXAgbWVudS4KICAg
ICB2aXJ0dWFsIFdlYldpZGdldCogY3JlYXRlUG9wdXBNZW51KFdlYlBvcHVwVHlwZSkgeyByZXR1
cm4gMDsgfQogICAgIHZpcnR1YWwgV2ViV2lkZ2V0KiBjcmVhdGVQb3B1cE1lbnUoY29uc3QgV2Vi
UG9wdXBNZW51SW5mbyYpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdlYkV4dGVybmFsUG9w
dXBNZW51KiBjcmVhdGVFeHRlcm5hbFBvcHVwTWVudSgKKyAgICAgICAgY29uc3QgV2ViUG9wdXBN
ZW51SW5mbyYsIFdlYkV4dGVybmFsUG9wdXBNZW51Q2xpZW50KikgeyByZXR1cm4gMDsgfQogCiAg
ICAgLy8gQ3JlYXRlIGEgc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZSBvYmplY3QgYXNzb2NpYXRl
ZCB3aXRoIHRoaXMgV2ViVmlldy4KICAgICB2aXJ0dWFsIFdlYlN0b3JhZ2VOYW1lc3BhY2UqIGNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhKSB7IHJldHVybiAwOyB9
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9u
IDcwMTcwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNp
bmNsdWRlICJFeHRlcm5hbFBvcHVwTWVudS5oIgogI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgpAQCAt
ODMzLDYgKzgzNCw5IEBAIGJvb2wgQ2hyb21lQ2xpZW50SW1wbDo6c2VsZWN0SXRlbVdyaXRpbmcK
IAogUGFzc1JlZlB0cjxQb3B1cE1lbnU+IENocm9tZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVu
dShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgY29uc3QKIHsKKyAgICBpZiAoV2ViVmlld0ltcGw6
OnVzZUV4dGVybmFsUG9wdXBNZW51cygpKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV4
dGVybmFsUG9wdXBNZW51KGNsaWVudCwgbV93ZWJWaWV3LT5jbGllbnQoKSkpOworICAgIAogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUG9wdXBNZW51Q2hyb21pdW0oY2xpZW50KSk7CiB9CiAKSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZXJuYWxQb3B1cE1lbnUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZXJuYWxQb3B1cE1lbnUuY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlcm5hbFBvcHVwTWVudS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV4dGVy
bmFsUG9wdXBNZW51LmgiCisKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJJbnRQ
b2ludC5oIgorI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgorI2luY2x1ZGUgIlRleHREaXJl
Y3Rpb24uaCIKKyNpbmNsdWRlICJXZWJFeHRlcm5hbFBvcHVwTWVudS5oIgorI2luY2x1ZGUgIldl
Yk1lbnVJdGVtSW5mby5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudUluZm8uaCIKKyNpbmNsdWRl
ICJXZWJWZWN0b3IuaCIKKyNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworRXh0ZXJuYWxQb3B1cE1lbnU6
OkV4dGVybmFsUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogcG9wdXBNZW51Q2xpZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlZpZXdDbGllbnQqIHdlYlZpZXdD
bGllbnQpCisgICAgOiBtX3BvcHVwTWVudUNsaWVudChwb3B1cE1lbnVDbGllbnQpCisgICAgLCBt
X3dlYlZpZXdDbGllbnQod2ViVmlld0NsaWVudCkKKyAgICAsIG1fd2ViRXh0ZXJuYWxQb3B1cE1l
bnUoMCkKK3sKK30KKworRXh0ZXJuYWxQb3B1cE1lbnU6On5FeHRlcm5hbFBvcHVwTWVudSgpCit7
Cit9CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwg
RnJhbWVWaWV3KiB2LCBpbnQgaW5kZXgpCit7CisgICAgLy8gV2ViQ29yZSByZXVzZXMgdGhlIFBv
cHVwTWVudSBvZiBhIHBhZ2UuCisgICAgLy8gRm9yIHNpbXBsaWNpdHksIHdlIGRvIHJlY3JlYXRl
IHRoZSBhY3R1YWwgZXh0ZXJuYWwgcG9wdXAgZXZlcnl0aW1lLgorICAgIGhpZGUoKTsKKworICAg
IFdlYlBvcHVwTWVudUluZm8gaW5mbzsKKyAgICBnZXRQb3B1cE1lbnVJbmZvKCZpbmZvKTsKKyAg
ICBtX3dlYkV4dGVybmFsUG9wdXBNZW51ID0KKyAgICAgICAgbV93ZWJWaWV3Q2xpZW50LT5jcmVh
dGVFeHRlcm5hbFBvcHVwTWVudShpbmZvLCB0aGlzKTsKKyAgICBtX3dlYkV4dGVybmFsUG9wdXBN
ZW51LT5zaG93KHYtPmNvbnRlbnRzVG9XaW5kb3cocmVjdCkpOworfQorCit2b2lkIEV4dGVybmFs
UG9wdXBNZW51OjpoaWRlKCkKK3sKKyAgICBpZiAobV9wb3B1cE1lbnVDbGllbnQpCisgICAgICAg
IG1fcG9wdXBNZW51Q2xpZW50LT5wb3B1cERpZEhpZGUoKTsKKyAgICBpZiAoIW1fd2ViRXh0ZXJu
YWxQb3B1cE1lbnUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3dlYkV4dGVybmFsUG9wdXBNZW51
LT5jbG9zZSgpOworICAgIG1fd2ViRXh0ZXJuYWxQb3B1cE1lbnUgPSAwOworfQorCit2b2lkIEV4
dGVybmFsUG9wdXBNZW51Ojp1cGRhdGVGcm9tRWxlbWVudCgpCit7Cit9CisKK3ZvaWQgRXh0ZXJu
YWxQb3B1cE1lbnU6OmRpc2Nvbm5lY3RDbGllbnQoKQoreworICAgIGhpZGUoKTsKKyAgICBtX3Bv
cHVwTWVudUNsaWVudCA9IDA7Cit9CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OmRpZENoYW5n
ZVNlbGVjdGlvbihpbnQgaW5kZXgpCit7CisgICAgaWYgKG1fcG9wdXBNZW51Q2xpZW50KQorICAg
ICAgICBtX3BvcHVwTWVudUNsaWVudC0+c2VsZWN0aW9uQ2hhbmdlZChpbmRleCk7Cit9CisKK3Zv
aWQgRXh0ZXJuYWxQb3B1cE1lbnU6OmRpZEFjY2VwdEluZGV4KGludCBpbmRleCkKK3sKKyAgICBp
ZiAobV9wb3B1cE1lbnVDbGllbnQpIHsKKyAgICAgICAgbV9wb3B1cE1lbnVDbGllbnQtPnZhbHVl
Q2hhbmdlZChpbmRleCk7CisgICAgICAgIG1fcG9wdXBNZW51Q2xpZW50LT5wb3B1cERpZEhpZGUo
KTsKKyAgICB9CisgICAgbV93ZWJFeHRlcm5hbFBvcHVwTWVudSA9IDA7Cit9CisKK3ZvaWQgRXh0
ZXJuYWxQb3B1cE1lbnU6OmRpZENhbmNlbCgpCit7CisgICAgaWYgKG1fcG9wdXBNZW51Q2xpZW50
KQorICAgICAgICBtX3BvcHVwTWVudUNsaWVudC0+cG9wdXBEaWRIaWRlKCk7CisgICAgbV93ZWJF
eHRlcm5hbFBvcHVwTWVudSA9IDA7Cit9CisKK3ZvaWQgRXh0ZXJuYWxQb3B1cE1lbnU6OmdldFBv
cHVwTWVudUluZm8oV2ViUG9wdXBNZW51SW5mbyogaW5mbykKK3sKKyAgICBpbnQgaXRlbUNvdW50
ID0gbV9wb3B1cE1lbnVDbGllbnQtPmxpc3RTaXplKCk7CisgICAgV2ViVmVjdG9yPFdlYlBvcHVw
TWVudUluZm86Okl0ZW0+IGl0ZW1zKAorICAgICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KGl0ZW1D
b3VudCkpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlbUNvdW50OyArK2kpIHsKKyAgICAg
ICAgV2ViUG9wdXBNZW51SW5mbzo6SXRlbSYgcG9wdXBJdGVtID0gaXRlbXNbaV07CisgICAgICAg
IHBvcHVwSXRlbS5sYWJlbCA9IG1fcG9wdXBNZW51Q2xpZW50LT5pdGVtVGV4dChpKTsKKyAgICAg
ICAgaWYgKG1fcG9wdXBNZW51Q2xpZW50LT5pdGVtSXNTZXBhcmF0b3IoaSkpCisgICAgICAgICAg
ICBwb3B1cEl0ZW0udHlwZSA9IFdlYk1lbnVJdGVtSW5mbzo6U2VwYXJhdG9yOworICAgICAgICBl
bHNlIGlmIChtX3BvcHVwTWVudUNsaWVudC0+aXRlbUlzTGFiZWwoaSkpCisgICAgICAgICAgICBw
b3B1cEl0ZW0udHlwZSA9IFdlYk1lbnVJdGVtSW5mbzo6R3JvdXA7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHBvcHVwSXRlbS50eXBlID0gV2ViTWVudUl0ZW1JbmZvOjpPcHRpb247CisgICAg
ICAgIHBvcHVwSXRlbS5lbmFibGVkID0gbV9wb3B1cE1lbnVDbGllbnQtPml0ZW1Jc0VuYWJsZWQo
aSk7CisgICAgfQorCisgICAgaW5mby0+aXRlbUhlaWdodCA9IG1fcG9wdXBNZW51Q2xpZW50LT5t
ZW51U3R5bGUoKS5mb250KCkuaGVpZ2h0KCk7CisgICAgaW5mby0+aXRlbUZvbnRTaXplID0KKyAg
ICAgICAgc3RhdGljX2Nhc3Q8aW50PihtX3BvcHVwTWVudUNsaWVudC0+bWVudVN0eWxlKCkuZm9u
dCgpLnNpemUoKSk7CisgICAgaW5mby0+c2VsZWN0ZWRJbmRleCA9IG1fcG9wdXBNZW51Q2xpZW50
LT5zZWxlY3RlZEluZGV4KCk7CisgICAgaW5mby0+cmlnaHRBbGlnbmVkID0KKyAgICAgICAgbV9w
b3B1cE1lbnVDbGllbnQtPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rpb24oKSA9PSBXZWJDb3JlOjpS
VEw7CisgICAgaW5mby0+aXRlbXMuc3dhcChpdGVtcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9FeHRlcm5hbFBvcHVwTWVudS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZXJuYWxQb3B1cE1lbnUuaAkocmV2aXNp
b24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRXh0ZXJuYWxQb3B1cE1lbnUuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRXh0ZXJuYWxQb3B1cE1lbnVfaAorI2RlZmlu
ZSBFeHRlcm5hbFBvcHVwTWVudV9oCisKKyNpbmNsdWRlICJQb3B1cE1lbnUuaCIKKyNpbmNsdWRl
ICJXZWJFeHRlcm5hbFBvcHVwTWVudUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBGcmFtZVZpZXc7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgUG9wdXBNZW51Q2xpZW50Owor
fQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRXh0ZXJuYWxQb3B1cE1lbnU7Citj
bGFzcyBXZWJWaWV3Q2xpZW50Oworc3RydWN0IFdlYlBvcHVwTWVudUluZm87CisKKy8vIFRoZSBF
eHRlcm5hbFBvcHVwTWVudSBjb25uZWN0cyB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIG9mIHRo
ZSBwb3B1cCBtZW51CisvLyB0byB0aGUgV2ViQ29yZSBwb3B1cCBtZW51LgorY2xhc3MgRXh0ZXJu
YWxQb3B1cE1lbnUgOiBwdWJsaWMgV2ViQ29yZTo6UG9wdXBNZW51LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQgeworcHVibGljOgor
ICAgIEV4dGVybmFsUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCosIFdlYlZpZXdD
bGllbnQqKTsKKyAgICB2aXJ0dWFsIH5FeHRlcm5hbFBvcHVwTWVudSgpOworCitwcml2YXRlOgor
ICAgIC8vIFdlYkNvcmU6OlBvcHVwTWVudSBtZXRob2RzOgorICAgIHZpcnR1YWwgdm9pZCBzaG93
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpGcmFtZVZpZXcqLCBpbnQgaW5kZXgp
OworICAgIHZpcnR1YWwgdm9pZCBoaWRlKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21F
bGVtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RDbGllbnQoKTsKKworICAgIC8v
IFdlYkV4dGVybmFsUG9wdXBDbGllbnQgbWV0aG9kczoKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlU2VsZWN0aW9uKGludCBpbmRleCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEFjY2VwdEluZGV4
KGludCBpbmRleCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbCgpOworCisgICAgLy8gRmls
bHMgfGluZm98IHdpdGggdGhlIHBvcHVwIG1lbnUgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRo
ZQorICAgIC8vIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyBF
eHRlcm5hbFBvcHVwTWVudS4KKyAgICB2b2lkIGdldFBvcHVwTWVudUluZm8oV2ViUG9wdXBNZW51
SW5mbyogaW5mbyk7CisKKyAgICBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIG1fcG9wdXBNZW51
Q2xpZW50OworICAgIFdlYlZpZXdDbGllbnQqIG1fd2ViVmlld0NsaWVudDsKKworICAgIC8vIFRo
ZSBhY3R1YWwgaW1wbGVtZW50b3Igb2YgdGhlIHNob3cgbWVudS4KKyAgICBXZWJFeHRlcm5hbFBv
cHVwTWVudSogbV93ZWJFeHRlcm5hbFBvcHVwTWVudTsKK307IAorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEV4dGVybmFsUG9wdXBNZW51X2gKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiA3MDE3MCkKKysrIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDggQEAgc3Rh
dGljIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MgYXV0bwogICAgIFBvcHVwQ29udGFpbmVy
U2V0dGluZ3M6OkRPTUVsZW1lbnREaXJlY3Rpb24sCiB9OwogCitzdGF0aWMgYm9vbCBzaG91bGRV
c2VFeHRlcm5hbFBvcHVwTWVudXMgPSBmYWxzZTsKKwogLy8gV2ViVmlldyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFdl
YlZpZXcqIFdlYlZpZXc6OmNyZWF0ZShXZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xz
QWdlbnRDbGllbnQqIGRldlRvb2xzQ2xpZW50KQpAQCAtMTkzLDYgKzE5NSwxMSBAQCBXZWJWaWV3
KiBXZWJWaWV3OjpjcmVhdGUoV2ViVmlld0NsaWVudCogCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJWaWV3SW1wbChjbGllbnQsIGRldlRvb2xzQ2xpZW50KSkubGVha1JlZigpOwogfQogCit2
b2lkIFdlYlZpZXc6OnNldFVzZUV4dGVybmFsUG9wdXBNZW51cyhib29sIHVzZUV4dGVybmFsUG9w
dXBNZW51cykKK3sKKyAgICBzaG91bGRVc2VFeHRlcm5hbFBvcHVwTWVudXMgPSB1c2VFeHRlcm5h
bFBvcHVwTWVudXM7Cit9CisKIHZvaWQgV2ViVmlldzo6dXBkYXRlVmlzaXRlZExpbmtTdGF0ZSh1
bnNpZ25lZCBsb25nIGxvbmcgbGlua0hhc2gpCiB7CiAgICAgUGFnZTo6dmlzaXRlZFN0YXRlQ2hh
bmdlZChQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXBOYW1lKSwgbGlua0hhc2gpOwpAQCAt
MjEwNyw2ICsyMTE0LDExIEBAIHZvaWQgV2ViVmlld0ltcGw6OmRpZENvbW1pdExvYWQoYm9vbCog
aXMKICAgICBtX29ic2VydmVkTmV3TmF2aWdhdGlvbiA9IGZhbHNlOwogfQogCitib29sIFdlYlZp
ZXdJbXBsOjp1c2VFeHRlcm5hbFBvcHVwTWVudXMoKQoreworICAgIHJldHVybiBzaG91bGRVc2VF
eHRlcm5hbFBvcHVwTWVudXM7Cit9CisKIGJvb2wgV2ViVmlld0ltcGw6Om5hdmlnYXRpb25Qb2xp
Y3lGcm9tTW91c2VFdmVudCh1bnNpZ25lZCBzaG9ydCBidXR0b24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjdHJsLCBib29sIHNoaWZ0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWx0
LCBib29sIG1ldGEsCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCShyZXZpc2lvbiA3
MDE3MCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5
KQpAQCAtMjczLDYgKzI3MywxMCBAQCBwdWJsaWM6CiAgICAgLy8gbG9hZC4KICAgICB2b2lkIGRp
ZENvbW1pdExvYWQoYm9vbCogaXNOZXdOYXZpZ2F0aW9uKTsKIAorICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiBwb3B1cCBtZW51cyBzaG91bGQgYmUgcmVuZGVyZWQgYnkgdGhlIGJyb3dzZXIsIGZhbHNl
IGlmCisgICAgLy8gdGhleSBzaG91bGQgYmUgcmVuZGVyZWQgYnkgV2ViS2l0ICh3aGljaCBpcyB0
aGUgZGVmYXVsdCkuCisgICAgc3RhdGljIGJvb2wgdXNlRXh0ZXJuYWxQb3B1cE1lbnVzKCk7CisK
ICAgICBib29sIGNvbnRleHRNZW51QWxsb3dlZCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbV9jb250ZXh0TWVudUFsbG93ZWQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>