<?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>36062</bug_id>
          
          <creation_ts>2010-03-12 09:48:41 -0800</creation_ts>
          <short_desc>Chromium should not lose activation to select popups</short_desc>
          <delta_ts>2010-10-16 07:50:21 -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>Windows XP</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>1</everconfirmed>
          <reporter name="Jay Campan">jcampan</reporter>
          <assigned_to name="Jay Campan">jcampan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fishd</cc>
    
    <cc>inferno</cc>
    
    <cc>japhet</cc>
    
    <cc>progame+wk</cc>
    
    <cc>victorw</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>199101</commentid>
    <comment_count>0</comment_count>
    <who name="Jay Campan">jcampan</who>
    <bug_when>2010-03-12 09:48:41 -0800</bug_when>
    <thetext>When a select popup is opened in Chromium, it steals activation from the browser, causing spurious blur/focus events to be sent on the page.
The WebKit Chromium API should support making the select popup not activable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199111</commentid>
    <comment_count>1</comment_count>
      <attachid>50605</attachid>
    <who name="Jay Campan">jcampan</who>
    <bug_when>2010-03-12 10:08:01 -0800</bug_when>
    <thetext>Created attachment 50605
Make the select popup non-activated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199113</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-12 10:12:06 -0800</bug_when>
    <thetext>Attachment 50605 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/chromium/PopupMenuChromium.h:119:  One space before end of line comments  [whitespace/comments] [5]
WebKit/chromium/src/WebViewImpl.cpp:844:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 in 10 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>199115</commentid>
    <comment_count>3</comment_count>
      <attachid>50606</attachid>
    <who name="Jay Campan">jcampan</who>
    <bug_when>2010-03-12 10:15:49 -0800</bug_when>
    <thetext>Created attachment 50606
Fixed style issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199830</commentid>
    <comment_count>4</comment_count>
      <attachid>50739</attachid>
    <who name="Jay Campan">jcampan</who>
    <bug_when>2010-03-15 14:23:17 -0700</bug_when>
    <thetext>Created attachment 50739
Keeping the old WebViewClient method so not break the Chromium build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199858</commentid>
    <comment_count>5</comment_count>
      <attachid>50739</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-15 15:19:20 -0700</bug_when>
    <thetext>Comment on attachment 50739
Keeping the old WebViewClient method so not break the Chromium build.

Extra space:
 315 PopupContainer::~PopupContainer() 

Would appear we desparately need a convenience method for at least part of this:
static_cast&lt;ChromeClientChromium*&gt;(
 390         m_frameView-&gt;frame()-&gt;page()-&gt;chrome()-&gt;client())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201880</commentid>
    <comment_count>6</comment_count>
      <attachid>51159</attachid>
    <who name="Jay Campan">jcampan</who>
    <bug_when>2010-03-19 09:15:33 -0700</bug_when>
    <thetext>Created attachment 51159
Applied changes suggested by Eric</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201884</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-19 09:21:03 -0700</bug_when>
    <thetext>Attachment 51159 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/chromium/PopupMenuChromium.h:42:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 10 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>202404</commentid>
    <comment_count>8</comment_count>
      <attachid>51159</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-03-21 23:17:15 -0700</bug_when>
    <thetext>Comment on attachment 51159
Applied changes suggested by Eric

&gt; Index: WebCore/page/chromium/ChromeClientChromium.h
...
&gt; +    // Notifies the client a popup was closed.
&gt; +    virtual void popupClosed(WebCore::PopupContainer* popupContainer) = 0;

nit: ^^^ no need for WebCore:: prefix when already within the WebCore namespace.


&gt; Index: WebCore/platform/chromium/PopupMenuChromium.h
...
&gt; +        // Convenience method that returns the ChromeClient of the frame view this
&gt; +        // popup is associated with.
&gt; +        ChromeClientChromium* chromeClientChromium();

nit:
           // Returns the ChromeClientChromium of the page this popup is associated with.


&gt; Index: WebKit/chromium/src/WebViewImpl.cpp
...
&gt; +bool WebViewImpl::selectPopupHandleKeyEvent(const WebKeyboardEvent&amp; event)
&gt; +{
&gt; +    if (!m_selectPopup)
&gt; +      return false;

nit: ^^^ indentation


It turns out that the rule for indentation within a namespace changed, and
the guidance is to revise the indentation of files as we modify them.  So,
in this case, PopupContainer.h should have its style fixed.

Otherwise, R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202555</commentid>
    <comment_count>9</comment_count>
      <attachid>51297</attachid>
    <who name="Jay Campan">jcampan</who>
    <bug_when>2010-03-22 09:54:56 -0700</bug_when>
    <thetext>Created attachment 51297
Fixing more style issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202557</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-22 09:56:53 -0700</bug_when>
    <thetext>Attachment 51297 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/chromium/PopupMenuChromium.h:63:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1 in 10 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>202560</commentid>
    <comment_count>11</comment_count>
      <attachid>51298</attachid>
    <who name="Jay Campan">jcampan</who>
    <bug_when>2010-03-22 10:00:53 -0700</bug_when>
    <thetext>Created attachment 51298
One more style issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202902</commentid>
    <comment_count>12</comment_count>
      <attachid>51298</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-22 20:02:04 -0700</bug_when>
    <thetext>Comment on attachment 51298
One more style issue

Clearing flags on attachment: 51298

Committed r56376: &lt;http://trac.webkit.org/changeset/56376&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202903</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-22 20:02:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203216</commentid>
    <comment_count>14</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-03-23 14:32:34 -0700</bug_when>
    <thetext>This patch was reverted in http://trac.webkit.org/changeset/56416 due to consistent crashes in two tests on chromium linux ( fast/forms/select-empty-list.html and fast/forms/slider-delete-while-dragging-thumb.html ).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203300</commentid>
    <comment_count>15</comment_count>
      <attachid>51469</attachid>
    <who name="Jay Campan">jcampan</who>
    <bug_when>2010-03-23 18:10:27 -0700</bug_when>
    <thetext>Created attachment 51469
Fix a crasher on LayoutTests

There was a crasher that could happen when a select popup is opened and a page navigates.
The cause is that the PopupMenuContainer still exists but the PopupMenuClient has been deleted, and then when hidden the popup would try to access the PopupMenuClient, causing the crasher.
We now clear the reference to the PopupMenuClient when the popup is deleted and we don&apos;t access it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203517</commentid>
    <comment_count>16</comment_count>
      <attachid>51469</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-24 11:41:46 -0700</bug_when>
    <thetext>Comment on attachment 51469
Fix a crasher on LayoutTests

Clearing flags on attachment: 51469

Committed r56449: &lt;http://trac.webkit.org/changeset/56449&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203518</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-24 11:41:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211751</commentid>
    <comment_count>18</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2010-04-12 16:23:56 -0700</bug_when>
    <thetext>*** Bug 37423 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295133</commentid>
    <comment_count>19</comment_count>
    <who name="Yair Yogev">progame+wk</who>
    <bug_when>2010-10-16 07:50:21 -0700</bug_when>
    <thetext>This fix may have caused Bug 47769</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50605</attachid>
            <date>2010-03-12 10:08:01 -0800</date>
            <delta_ts>2010-03-12 10:15:49 -0800</delta_ts>
            <desc>Make the select popup non-activated</desc>
            <filename>select.patch</filename>
            <type>text/plain</type>
            <size>17389</size>
            <attacher name="Jay Campan">jcampan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU1OTEwKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNiBAQAorMjAxMC0wMy0xMiAgSmF5IENhbXBhbiAgPGpjYW1wYW5AZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtpbmcgQ2hyb21pdW0gc2VsZWN0IHBvcHVwcyBub3Qgc3RlYWwgYWN0aXZhdGlvbiBmcm9tIHRo
ZSBicm93c2VyLgorICAgICAgICBTZWxlY3QgcG9wdXBzIGFyZSBub3cgbGlrZSBhdXRvY29tcGxl
dGUgcG9wdXBzLCBzaG93biBpbiBub24tYWN0aXZhdGVkCisgICAgICAgIHdpbmRvd3MuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjA2MgorCisgICAg
ICAgICogcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Oik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjpQb3B1cENvbnRhaW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cENvbnRhaW5lcjo6flBvcHVwQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwQ29udGFpbmVyOjpzaG93UG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250
YWluZXI6OnNob3dFeHRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6
aGlkZVBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2hvdyk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvcHVwQ29udGFpbmVyOjopOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250YWluZXI6
OnBvcHVwVHlwZSk6CisKIDIwMTAtMDMtMTIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvcGFn
ZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9wYWdlL2Nocm9taXVtL0Nocm9tZUNsaWVudENocm9taXVtLmgJKHJldmlzaW9uIDU1OTA2KQor
KysgV2ViQ29yZS9wYWdlL2Nocm9taXVtL0Nocm9tZUNsaWVudENocm9taXVtLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDcgKzQ4LDEwIEBAIHB1YmxpYzoKICAgICAvLyBJZiBoYW5kbGVFeHRlcm5h
bCBpcyB0cnVlLCB0aGVuIGRyYXdpbmcgYW5kIGlucHV0IGhhbmRsaW5nIGZvciB0aGUKICAgICAv
LyBwb3B1cCB3aWxsIGJlIGhhbmRsZWQgYnkgdGhlIGV4dGVybmFsIGVtYmVkZGVyLgogICAgIHZp
cnR1YWwgdm9pZCBwb3B1cE9wZW5lZChQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIsIGNv
bnN0IEludFJlY3QmIGJvdW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBm
b2N1c09uU2hvdywgYm9vbCBoYW5kbGVFeHRlcm5hbCkgPSAwOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGhhbmRsZUV4dGVybmFsKSA9IDA7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAorICAgIC8vIE5vdGlmaWVzIHRoZSBjbGllbnQgYSBwb3B1cCB3YXMgY2xvc2Vk
LgorICAgIHZpcnR1YWwgdm9pZCBwb3B1cENsb3NlZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciog
cG9wdXBDb250YWluZXIpID0gMDsKIAogICAgIC8vIE5vdGlmaWVzIGVtYmVkZGVyIHRoYXQgdGhl
IHN0YXRlIG9mIGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGhhcyBjaGFuZ2VkLgogICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0U3RhdGUoQWNjZXNzaWJpbGl0eU9i
amVjdCopID0gMDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hy
b21pdW0uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1
cE1lbnVDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDU1OTA2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0
LDYgQEAgc3RhdGljIGNvbnN0IFRpbWVTdGFtcCBrVHlwZUFoZWFkVGltZW91dAogLy8gVGhlIHNl
dHRpbmdzIHVzZWQgZm9yIHRoZSBkcm9wIGRvd24gbWVudS4KIC8vIFRoaXMgaXMgdGhlIGRlbGVn
YXRlIHVzZWQgaWYgbm9uZSBpcyBwcm92aWRlZC4KIHN0YXRpYyBjb25zdCBQb3B1cENvbnRhaW5l
clNldHRpbmdzIGRyb3BEb3duU2V0dGluZ3MgPSB7Ci0gICAgdHJ1ZSwgICAvLyBmb2N1c09uU2hv
dwogICAgIHRydWUsICAgLy8gc2V0VGV4dE9uSW5kZXhDaGFuZ2UKICAgICB0cnVlLCAgIC8vIGFj
Y2VwdE9uQWJhbmRvbgogICAgIGZhbHNlLCAgLy8gbG9vcFNlbGVjdGlvbk5hdmlnYXRpb24KQEAg
LTI5NywyMCArMjk2LDIzIEBAICAgICBJbnRQb2ludCBwb3MgPSBwYXJlbnQtPmNvbnZlcnRTZWxm
VG8KIAogLy8gc3RhdGljCiBQYXNzUmVmUHRyPFBvcHVwQ29udGFpbmVyPiBQb3B1cENvbnRhaW5l
cjo6Y3JlYXRlKFBvcHVwTWVudUNsaWVudCogY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3B1cFR5cGUgcG9wdXBUeXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb3B1cENv
bnRhaW5lclNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBv
cHVwQ29udGFpbmVyKGNsaWVudCwgc2V0dGluZ3MpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFBvcHVwQ29udGFpbmVyKGNsaWVudCwgcG9wdXBUeXBlLCBzZXR0aW5ncykpOwogfQogCiBQb3B1
cENvbnRhaW5lcjo6UG9wdXBDb250YWluZXIoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9wdXBUeXBlIHBvcHVwVHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzJiBzZXR0
aW5ncykKICAgICA6IG1fbGlzdEJveChQb3B1cExpc3RCb3g6OmNyZWF0ZShjbGllbnQsIHNldHRp
bmdzKSkKKyAgICAsIG1fcG9wdXBUeXBlKHBvcHVwVHlwZSkgIAogICAgICwgbV9zZXR0aW5ncyhz
ZXR0aW5ncykKIHsKICAgICBzZXRTY3JvbGxiYXJNb2RlcyhTY3JvbGxiYXJBbHdheXNPZmYsIFNj
cm9sbGJhckFsd2F5c09mZik7CiB9CiAKLVBvcHVwQ29udGFpbmVyOjp+UG9wdXBDb250YWluZXIo
KQorUG9wdXBDb250YWluZXI6On5Qb3B1cENvbnRhaW5lcigpIAogewogICAgIGlmIChtX2xpc3RC
b3ggJiYgbV9saXN0Qm94LT5wYXJlbnQoKSkKICAgICAgICAgcmVtb3ZlQ2hpbGQobV9saXN0Qm94
LmdldCgpKTsKQEAgLTMyNSw2ICszMjcsNyBAQCAgICAgLy8gUHJlLWxheW91dCwgb3VyIHNpemUg
bWF0Y2hlcyB0aGUgCiAgICAgLy8gV2lkZ2V0Q2xpZW50IGFib3V0IGl0LiAgSXQgc2hvdWxkIGFz
c2lnbiB1cyBhIGNsaWVudC4KICAgICBsYXlvdXQoKTsKIAorICAgIG1fZnJhbWVWaWV3ID0gdmll
dzsKICAgICBDaHJvbWVDbGllbnRDaHJvbWl1bSogY2hyb21lQ2xpZW50ID0gc3RhdGljX2Nhc3Q8
Q2hyb21lQ2xpZW50Q2hyb21pdW0qPigKICAgICAgICAgdmlldy0+ZnJhbWUoKS0+cGFnZSgpLT5j
aHJvbWUoKS0+Y2xpZW50KCkpOwogICAgIGlmIChjaHJvbWVDbGllbnQpIHsKQEAgLTMzNSw3ICsz
MzgsNyBAQCAgICAgICAgIEludFJlY3Qgd2lkZ2V0UmVjdCA9IGNocm9tZUNsaWVuCiAgICAgICAg
IGlmICh3aWRnZXRSZWN0LmJvdHRvbSgpID4gc3RhdGljX2Nhc3Q8aW50PihzY3JlZW4uYm90dG9t
KCkpKQogICAgICAgICAgICAgd2lkZ2V0UmVjdC5tb3ZlKDAsIC0od2lkZ2V0UmVjdC5oZWlnaHQo
KSArIHNlbGVjdEhlaWdodCkpOwogCi0gICAgICAgIGNocm9tZUNsaWVudC0+cG9wdXBPcGVuZWQo
dGhpcywgd2lkZ2V0UmVjdCwgbV9zZXR0aW5ncy5mb2N1c09uU2hvdywgZmFsc2UpOworICAgICAg
ICBjaHJvbWVDbGllbnQtPnBvcHVwT3BlbmVkKHRoaXMsIHdpZGdldFJlY3QsIGZhbHNlKTsKICAg
ICB9CiAKICAgICBpZiAoIW1fbGlzdEJveC0+cGFyZW50KCkpCkBAIC0zNjgsOSArMzcxLDEwIEBA
ICAgICBJbnRQb2ludCBsb2NhdGlvbiA9IHYtPmNvbnRlbnRzVG9XaW4KICAgICBJbnRSZWN0IHBv
cHVwUmVjdChsb2NhdGlvbiwgcmVjdC5zaXplKCkpOwogCiAgICAgLy8gR2V0IHRoZSBDaHJvbWVD
bGllbnQgYW5kIHBhc3MgaXQgdGhlIHBvcHVwIG1lbnUncyBsaXN0Ym94IGRhdGEuCisgICAgbV9m
cmFtZVZpZXcgPSB2OwogICAgIENocm9tZUNsaWVudENocm9taXVtKiBjbGllbnQgPSBzdGF0aWNf
Y2FzdDxDaHJvbWVDbGllbnRDaHJvbWl1bSo+KAogICAgICAgICAgdi0+ZnJhbWUoKS0+cGFnZSgp
LT5jaHJvbWUoKS0+Y2xpZW50KCkpOwotICAgIGNsaWVudC0+cG9wdXBPcGVuZWQodGhpcywgcG9w
dXBSZWN0LCB0cnVlLCB0cnVlKTsKKyAgICBjbGllbnQtPnBvcHVwT3BlbmVkKHRoaXMsIHBvcHVw
UmVjdCwgdHJ1ZSk7CiAKICAgICAvLyBUaGUgcG9wdXAgc2VuZHMgaXRzICJjbG9zZWQiIG5vdGlm
aWNhdGlvbiB0aHJvdWdoIGl0cyBwYXJlbnQuIFNldCB0aGUKICAgICAvLyBwYXJlbnQsIGV2ZW4g
dGhvdWdoIGV4dGVybmFsIHBvcHVwcyBoYXZlIG5vIHJlYWwgb24tc2NyZWVuIHdpZGdldCBidXQg
YQpAQCAtMzgyLDYgKzM4Niw4IEBAICAgICBpZiAoIW1fbGlzdEJveC0+cGFyZW50KCkpCiB2b2lk
IFBvcHVwQ29udGFpbmVyOjpoaWRlUG9wdXAoKQogewogICAgIGxpc3RCb3goKS0+aGlkZVBvcHVw
KCk7CisgICAgc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50Q2hyb21pdW0qPigKKyAgICAgICAgbV9m
cmFtZVZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpKS0+cG9wdXBDbG9z
ZWQodGhpcyk7CiB9CiAKIHZvaWQgUG9wdXBDb250YWluZXI6OmxheW91dCgpCkBAIC0xMjMxLDcg
KzEyMzcsNyBAQCBQb3B1cE1lbnU6On5Qb3B1cE1lbnUoKQogdm9pZCBQb3B1cE1lbnU6OnNob3co
Y29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2LCBpbnQgaW5kZXgpCiB7CiAgICAgaWYgKCFw
LnBvcHVwKQotICAgICAgICBwLnBvcHVwID0gUG9wdXBDb250YWluZXI6OmNyZWF0ZShjbGllbnQo
KSwgZHJvcERvd25TZXR0aW5ncyk7CisgICAgICAgIHAucG9wdXAgPSBQb3B1cENvbnRhaW5lcjo6
Y3JlYXRlKGNsaWVudCgpLCBQb3B1cENvbnRhaW5lcjo6U2VsZWN0LCBkcm9wRG93blNldHRpbmdz
KTsKICNpZiBPUyhEQVJXSU4pCiAgICAgcC5wb3B1cC0+c2hvd0V4dGVybmFsKHIsIHYsIGluZGV4
KTsKICNlbHNlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9t
aXVtLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVu
dUNocm9taXVtLmgJKHJldmlzaW9uIDU1OTA2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cE1lbnVDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDEyIEBA
ICAgICAgICAgICAgIC8vIFVzZSB0aGUgaXRlbSB0ZXh0J3MgZmlyc3QKIAogICAgIGNsYXNzIFBv
cHVwQ29udGFpbmVyIDogcHVibGljIEZyYW1lbGVzc1Njcm9sbFZpZXcgewogICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UG9wdXBDb250YWluZXI+IGNyZWF0ZShQb3B1cE1l
bnVDbGllbnQqLAorICAgICAgICBlbnVtIFBvcHVwVHlwZSB7CisgICAgICAgICAgICBTZWxlY3Qs
ICAgICAvLyBIVE1MIHNlbGVjdCBwb3B1cC4KKyAgICAgICAgICAgIFN1Z2dlc3Rpb24sIC8vIEF1
dG9jb21wbGV0ZS9hdXRvZmlsbCBwb3B1cC4KKyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQb3B1cENvbnRhaW5lcj4gY3JlYXRlKFBvcHVwTWVudUNsaWVudCosIFBvcHVw
VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzJik7CiAKICAgICAgICAgLy8gV2hldGhlciBhIGtl
eSBldmVudCBzaG91bGQgYmUgc2VudCB0byB0aGlzIHBvcHVwLgpAQCAtMTY5LDE4ICsxNzQsMjIg
QEAgICAgICAgICAvLyBUaGUgbWVudSBwZXItaXRlbSBkYXRhLgogICAgICAgICAvLyBUaGUgc2l6
ZSBvZiB0aGUgZm9udCBiZWluZyB1c2VkLgogICAgICAgICBpbnQgbWVudUl0ZW1Gb250U2l6ZSgp
IGNvbnN0OwogCisgICAgICAgIFBvcHVwVHlwZSBwb3B1cFR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3BvcHVwVHlwZTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFdURjo6
UmVmQ291bnRlZDxQb3B1cENvbnRhaW5lcj47CiAKLSAgICAgICAgUG9wdXBDb250YWluZXIoUG9w
dXBNZW51Q2xpZW50KiwgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyYpOworICAgICAgICBQ
b3B1cENvbnRhaW5lcihQb3B1cE1lbnVDbGllbnQqLCBQb3B1cFR5cGUgcG9wdXBUeXBlLCBjb25z
dCBQb3B1cENvbnRhaW5lclNldHRpbmdzJik7CiAgICAgICAgIH5Qb3B1cENvbnRhaW5lcigpOwog
CiAgICAgICAgIC8vIFBhaW50IHRoZSBib3JkZXIuCiAgICAgICAgIHZvaWQgcGFpbnRCb3JkZXIo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgICAgIFJlZlB0cjxQb3B1
cExpc3RCb3g+IG1fbGlzdEJveDsKKyAgICAgICAgUmVmUHRyPEZyYW1lVmlldz4gbV9mcmFtZVZp
ZXc7CiAKICAgICAgICAgUG9wdXBDb250YWluZXJTZXR0aW5ncyBtX3NldHRpbmdzOworICAgICAg
ICBQb3B1cFR5cGUgbV9wb3B1cFR5cGU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU1OTEwKQorKysgV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEwLTAzLTEyICBK
YXkgQ2FtcGFuICA8amNhbXBhbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2luZyBDaHJvbWl1bSBzZWxlY3QgcG9wdXBzIG5v
dCBzdGVhbCBhY3RpdmF0aW9uIGZyb20gdGhlIGJyb3dzZXIuCisgICAgICAgIFNlbGVjdCBwb3B1
cHMgYXJlIG5vdyBsaWtlIGF1dG9jb21wbGV0ZSBwb3B1cHMsIHNob3duIGluIG5vbi1hY3RpdmF0
ZWQKKyAgICAgICAgd2luZG93cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM2MDYyCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpjcmVhdGVQb3B1cE1lbnUpOgorICAgICAg
ICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xp
ZW50SW1wbDo6cG9wdXBPcGVuZWQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBs
Ojpwb3B1cENsb3NlZCk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAgICAg
ICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjopOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6bW91c2VEb3duKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OmtleUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNlbGVjdFBv
cHVwSGFuZGxlS2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGlkZVNl
bGVjdFBvcHVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnBvcHVwT3BlbmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnBvcHVwQ2xvc2VkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OnNldEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OmFwcGx5QXV0b0ZpbGxTdWdnZXN0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjphcHBseUF1dG9jb21wbGV0ZVN1Z2dlc3Rpb25zKToKKyAgICAgICAgKiBzcmMvV2ViVmll
d0ltcGwuaDoKKwogMjAxMC0wMy0xMiAgTmljb2xhcyBXZWJlciAgPHRoYWtpc0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCShyZXZpc2lvbiA1NTkwNikKKysrIFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3
Myw3IEBAICAgICAvLyBGYWN0b3J5IG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8v
IENyZWF0ZSBhIG5ldyBXZWJQb3B1cE1lbnUuICBJbiB0aGUgc2Vjb25kIGZvcm0sIHRoZSBjbGll
bnQgaXMKICAgICAvLyByZXNwb25zaWJsZSBmb3IgcmVuZGVyaW5nIHRoZSBjb250ZW50cyBvZiB0
aGUgcG9wdXAgbWVudS4KLSAgICB2aXJ0dWFsIFdlYldpZGdldCogY3JlYXRlUG9wdXBNZW51KGJv
b2wgYWN0aXZhdGFibGUpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdlYldpZGdldCogY3Jl
YXRlUG9wdXBNZW51KCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgV2ViV2lkZ2V0KiBjcmVh
dGVQb3B1cE1lbnUoY29uc3QgV2ViUG9wdXBNZW51SW5mbyYpIHsgcmV0dXJuIDA7IH0KIAogICAg
IC8vIENyZWF0ZSBhIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2Ugb2JqZWN0IGFzc29jaWF0ZWQg
d2l0aCB0aGlzIFdlYlZpZXcuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVu
dEltcGwuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcAkocmV2aXNpb24gNTU5MDYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTQsNyArNTk0LDYgQEAgdm9pZCBD
aHJvbWVDbGllbnRJbXBsOjppY29uRm9yRmlsZXMoY29ucwogCiB2b2lkIENocm9tZUNsaWVudElt
cGw6OnBvcHVwT3BlbmVkKFBvcHVwQ29udGFpbmVyKiBwb3B1cENvbnRhaW5lciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgYm91bmRzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFjdGl2YXRhYmxlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhhbmRsZUV4dGVybmFsbHkpCiB7CiAgICAg
aWYgKCFtX3dlYlZpZXctPmNsaWVudCgpKQpAQCAtNjA2LDExICs2MDUsMTYgQEAgICAgIGlmICgh
bV93ZWJWaWV3LT5jbGllbnQoKSkKICAgICAgICAgZ2V0UG9wdXBNZW51SW5mbyhwb3B1cENvbnRh
aW5lciwgJnBvcHVwSW5mbyk7CiAgICAgICAgIHdlYndpZGdldCA9IG1fd2ViVmlldy0+Y2xpZW50
KCktPmNyZWF0ZVBvcHVwTWVudShwb3B1cEluZm8pOwogICAgIH0gZWxzZQotICAgICAgICB3ZWJ3
aWRnZXQgPSBtX3dlYlZpZXctPmNsaWVudCgpLT5jcmVhdGVQb3B1cE1lbnUoYWN0aXZhdGFibGUp
OwotCisgICAgICAgIHdlYndpZGdldCA9IG1fd2ViVmlldy0+Y2xpZW50KCktPmNyZWF0ZVBvcHVw
TWVudSgpOworICAgIG1fd2ViVmlldy0+cG9wdXBPcGVuZWQocG9wdXBDb250YWluZXIpOwogICAg
IHN0YXRpY19jYXN0PFdlYlBvcHVwTWVudUltcGwqPih3ZWJ3aWRnZXQpLT5Jbml0KHBvcHVwQ29u
dGFpbmVyLCBib3VuZHMpOwogfQogCit2b2lkIENocm9tZUNsaWVudEltcGw6OnBvcHVwQ2xvc2Vk
KFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBwb3B1cENvbnRhaW5lcikKK3sKKyAgICBtX3dlYlZp
ZXctPnBvcHVwQ2xvc2VkKHBvcHVwQ29udGFpbmVyKTsKK30KKwogdm9pZCBDaHJvbWVDbGllbnRJ
bXBsOjpzZXRDdXJzb3IoY29uc3QgV2ViQ3Vyc29ySW5mbyYgY3Vyc29yKQogewogICAgIGlmICht
X2lnbm9yZU5leHRTZXRDdXJzb3IpIHsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmgJKHJldmlzaW9uIDU1OTA2KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw4ICsxMzYsOCBAQCBwdWJsaWM6
CiAgICAgLy8gQ2hyb21lQ2xpZW50Q2hyb21pdW0gbWV0aG9kczoKICAgICB2aXJ0dWFsIHZvaWQg
cG9wdXBPcGVuZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBib3VuZHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWN0aXZhdGFibGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFuZGxlRXh0ZXJuYWxseSk7CisgICAgdmlydHVh
bCB2b2lkIHBvcHVwQ2xvc2VkKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBwb3B1cENvbnRhaW5l
cik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUFjY2Vzc2liaWxpdHlPYmplY3RTdGF0ZShX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAKICAgICAvLyBDaHJvbWVDbGllbnRJbXBs
OgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHANCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNpb24gNTU5MDYp
CisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ5LDExICsxNDksNyBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKERyYWdPcGVy
YXRpCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKERyYWdPcGVyYXRpb25EZWxldGUpOwog
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShEcmFnT3BlcmF0aW9uRXZlcnkpOwogCi0vLyBO
b3RlIHRoYXQgZm9jdXNPblNob3cgaXMgZmFsc2Ugc28gdGhhdCB0aGUgc3VnZ2VzdGlvbnMgcG9w
dXAgaXMgc2hvd24gbm90Ci0vLyBhY3RpdmF0ZWQuICBXZSBuZWVkIHRoZSBwYWdlIHRvIHN0aWxs
IGhhdmUgZm9jdXMgc28gdGhlIHVzZXIgY2FuIGtlZXAgdHlwaW5nCi0vLyB3aGlsZSB0aGUgcG9w
dXAgaXMgc2hvd2luZy4KIHN0YXRpYyBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzIHN1Z2dl
c3Rpb25zUG9wdXBTZXR0aW5ncyA9IHsKLSAgICBmYWxzZSwgIC8vIGZvY3VzT25TaG93CiAgICAg
ZmFsc2UsICAvLyBzZXRUZXh0T25JbmRleENoYW5nZQogICAgIGZhbHNlLCAgLy8gYWNjZXB0T25B
YmFuZG9uCiAgICAgdHJ1ZSwgICAvLyBsb29wU2VsZWN0aW9uTmF2aWdhdGlvbgpAQCAtMzI3LDYg
KzMyMywxMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjptb3VzZURvd24oY29uc3QgV2ViTW91CiAgICAg
aWYgKCFtYWluRnJhbWVJbXBsKCkgfHwgIW1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCkpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIC8vIElmIHRoZXJlIGlzIGEgc2VsZWN0IHBvcHVwIG9wZW5l
ZCwgY2xvc2UgaXQgYXMgdGhlIHVzZXIgaXMgY2xpY2tpbmcgb24KKyAgICAvLyB0aGUgcGFnZSAo
b3V0c2lkZSBvZiB0aGUgcG9wdXApLgorICAgIGhpZGVTZWxlY3RQb3B1cCgpOworCiAgICAgbV9s
YXN0TW91c2VEb3duUG9pbnQgPSBXZWJQb2ludChldmVudC54LCBldmVudC55KTsKICAgICBtX2hh
dmVNb3VzZUNhcHR1cmUgPSB0cnVlOwogCkBAIC00NzQsNiArNDc0LDEwIEBAIGJvb2wgV2ViVmll
d0ltcGw6OmtleUV2ZW50KGNvbnN0IFdlYktleWIKICAgICAvLyBldmVudC4KICAgICBtX3N1cHBy
ZXNzTmV4dEtleXByZXNzRXZlbnQgPSBmYWxzZTsKIAorICAgIC8vIEdpdmUgYW55IHNlbGVjdCBw
b3B1cCBhIGNoYW5jZSBhdCBjb25zdW1pbmcgdGhlIGtleSBldmVudC4KKyAgICBpZiAoc2VsZWN0
UG9wdXBIYW5kbGVLZXlFdmVudChldmVudCkpCisgICAgICAgIHJldHVybiB0cnVlOworCiAgICAg
Ly8gR2l2ZSBBdXRvY29tcGxldGUgYSBjaGFuY2UgdG8gY29uc3VtZSB0aGUga2V5IGV2ZW50cyBp
dCBpcyBpbnRlcmVzdGVkIGluLgogICAgIGlmIChhdXRvY29tcGxldGVIYW5kbGVLZXlFdmVudChl
dmVudCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTIzLDYgKzUyNywxNCBAQCAgICAgICAg
ICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPnJlbmRlcmVyCiAgICAgcmV0dXJuIGtleUV2ZW50RGVm
YXVsdChldmVudCk7CiB9CiAKK2Jvb2wgV2ViVmlld0ltcGw6OnNlbGVjdFBvcHVwSGFuZGxlS2V5
RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCit7CisgICAgaWYgKCFtX3NlbGVj
dFBvcHVwKQorICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBtX3NlbGVjdFBv
cHVwLT5oYW5kbGVLZXlFdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGV2ZW50KSk7
Cit9CisKIGJvb2wgV2ViVmlld0ltcGw6OmF1dG9jb21wbGV0ZUhhbmRsZUtleUV2ZW50KGNvbnN0
IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAgIGlmICghbV9zdWdnZXN0aW9uc1BvcHVw
U2hvd2luZwpAQCAtNzkzLDYgKzgwNSwxMiBAQCBib29sIFdlYlZpZXdJbXBsOjpzY3JvbGxWaWV3
V2l0aEtleWJvYXJkCiAgICAgcmV0dXJuIHByb3BhZ2F0ZVNjcm9sbChzY3JvbGxEaXJlY3Rpb24s
IHNjcm9sbEdyYW51bGFyaXR5KTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6aGlkZVNlbGVjdFBv
cHVwKCkKK3sKKyAgICBpZiAobV9zZWxlY3RQb3B1cC5nZXQoKSkKKyAgICAgICAgbV9zZWxlY3RQ
b3B1cC0+aGlkZVBvcHVwKCk7Cit9CisKIGJvb2wgV2ViVmlld0ltcGw6OnByb3BhZ2F0ZVNjcm9s
bChTY3JvbGxEaXJlY3Rpb24gc2Nyb2xsRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNjcm9sbEdyYW51bGFyaXR5IHNjcm9sbEdyYW51bGFyaXR5KQogewpAQCAt
ODEyLDYgKzgzMCwyMiBAQCAgICAgICAgIGN1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZS0+dHJl
CiAgICAgcmV0dXJuIHNjcm9sbEhhbmRsZWQ7CiB9CiAKK3ZvaWQgIFdlYlZpZXdJbXBsOjpwb3B1
cE9wZW5lZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpCit7CisgICAg
aWYgKHBvcHVwQ29udGFpbmVyLT5wb3B1cFR5cGUoKSA9PSBXZWJDb3JlOjpQb3B1cENvbnRhaW5l
cjo6U2VsZWN0KSB7CisgICAgICAgIEFTU0VSVCghbV9zZWxlY3RQb3B1cCk7CisgICAgICAgIG1f
c2VsZWN0UG9wdXAgPSBwb3B1cENvbnRhaW5lcjsKKyAgICB9Cit9CisKK3ZvaWQgIFdlYlZpZXdJ
bXBsOjpwb3B1cENsb3NlZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIp
Cit7CisgICAgaWYgKHBvcHVwQ29udGFpbmVyLT5wb3B1cFR5cGUoKSA9PSBXZWJDb3JlOjpQb3B1
cENvbnRhaW5lcjo6U2VsZWN0KSB7CisgICAgICAgIEFTU0VSVChtX3NlbGVjdFBvcHVwICE9IDAp
OworICAgICAgICBtX3NlbGVjdFBvcHVwID0gMDsKKyAgICB9Cit9CisKIEZyYW1lKiBXZWJWaWV3
SW1wbDo6Zm9jdXNlZFdlYkNvcmVGcmFtZSgpCiB7CiAgICAgcmV0dXJuIG1fcGFnZS5nZXQoKSA/
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpIDogMDsKQEAg
LTEwNDMsNiArMTA3Nyw3IEBAICAgICAgICAgICAgICAgICAgICAgZm9jdXNlZEZyYW1lLT5zZWxl
Y3QKICAgICAgICAgbV9pbWVBY2NlcHRFdmVudHMgPSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGhpZGVTdWdnZXN0aW9uc1BvcHVwKCk7CisgICAgICAgIGhpZGVTZWxlY3RQb3B1cCgpOwog
CiAgICAgICAgIC8vIENsZWFyIGZvY3VzIG9uIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBmcmFtZSBp
ZiBhbnkuCiAgICAgICAgIGlmICghbV9wYWdlLmdldCgpKQpAQCAtMTY2OCw2ICsxNzAzLDcgQEAg
ICAgIG1fYXV0b0ZpbGxQb3B1cENsaWVudC0+aW5pdGlhbGl6ZShpbgogCiAgICAgaWYgKCFtX2F1
dG9GaWxsUG9wdXAuZ2V0KCkpIHsKICAgICAgICAgbV9hdXRvRmlsbFBvcHVwID0gUG9wdXBDb250
YWluZXI6OmNyZWF0ZShtX3N1Z2dlc3Rpb25zUG9wdXBDbGllbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9wdXBDb250YWluZXI6OlN1Z2dlc3Rp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vn
Z2VzdGlvbnNQb3B1cFNldHRpbmdzKTsKICAgICB9CiAKQEAgLTE3MjMsNiArMTc1OSw3IEBAICAg
ICBtX2F1dG9jb21wbGV0ZVBvcHVwQ2xpZW50LT5pbml0aWFsaXoKIAogICAgIGlmICghbV9hdXRv
Y29tcGxldGVQb3B1cC5nZXQoKSkgewogICAgICAgICBtX2F1dG9jb21wbGV0ZVBvcHVwID0gUG9w
dXBDb250YWluZXI6OmNyZWF0ZShtX3N1Z2dlc3Rpb25zUG9wdXBDbGllbnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcHVwQ29udGFpbmVy
OjpTdWdnZXN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdWdnZXN0aW9uc1BvcHVwU2V0dGluZ3MpOwogICAgIH0KIApJbmRleDogV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCShyZXZpc2lvbiA1NTkwNikKKysrIFdlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCwxMCBA
QCAgICAgLy8gaW5jbHVkZSB0aGUgVktfQVBQUyB2aXJ0dWFsIGtleSBhCiAgICAgLy8gd2FzIHNj
cm9sbGVkLgogICAgIGJvb2wgcHJvcGFnYXRlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlv
biwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwogCisgICAgLy8gTm90aWZpY2F0aW9uIHRo
YXQgYSBwb3B1cCB3YXMgb3BlbmVkL2Nsb3NlZC4KKyAgICB2b2lkIHBvcHVwT3BlbmVkKFdlYkNv
cmU6OlBvcHVwQ29udGFpbmVyKiBwb3B1cENvbnRhaW5lcik7CisgICAgdm9pZCBwb3B1cENsb3Nl
ZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpOworCiAgICAgLy8gSEFD
SzogY3VycmVudElucHV0RXZlbnQoKSBpcyBmb3IgQ2hyb21lQ2xpZW50SW1wbDo6c2hvdygpLCB1
bnRpbCB3ZSBjYW4KICAgICAvLyBmaXggV2ViS2l0IHRvIHBhc3MgZW5vdWdoIGluZm9ybWF0aW9u
IHVwIGludG8gQ2hyb21lQ2xpZW50OjpzaG93KCkgc28gd2UKICAgICAvLyBjYW4gZGVjaWRlIGlm
IHRoZSB3aW5kb3cub3BlbiBldmVudCB3YXMgY2F1c2VkIGJ5IGEgbWlkZGxlLW1vdXNlIGNsaWNr
CkBAIC0zMDgsNiArMzEyLDkgQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IGV2ZW50IHdhcyBhY3R1YWxseSBwcm9jZXNzZWQuCiAgICAgYm9vbCBrZXlFdmVudERlZmF1bHQo
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBz
ZWxlY3QgcG9wdXAgaGFzIGNvbnN1bWVkIHRoZSBldmVudC4KKyAgICBib29sIHNlbGVjdFBvcHVw
SGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOworCiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBhdXRvY29tcGxlIGhhcyBjb25zdW1lZCB0aGUgZXZlbnQuCiAgICAgYm9v
bCBhdXRvY29tcGxldGVIYW5kbGVLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAK
QEAgLTMxOSw2ICszMjYsOSBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUg
dmlldyB3YXMgc2Nyb2xsZWQuCiAgICAgYm9vbCBzY3JvbGxWaWV3V2l0aEtleWJvYXJkKGludCBr
ZXlDb2RlLCBpbnQgbW9kaWZpZXJzKTsKIAorICAgIC8vIEhpZGVzIHRoZSBzZWxlY3QgcG9wdXAg
aWYgb25lIGlzIG9wZW5lZC4KKyAgICB2b2lkIGhpZGVTZWxlY3RQb3B1cCgpOworCiAgICAgLy8g
Q29udmVydHMgfHBvc3wgZnJvbSB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gY29udGVudHMgY29vcmRp
bmF0ZXMgYW5kIGdldHMKICAgICAvLyB0aGUgSGl0VGVzdFJlc3VsdCBmb3IgaXQuCiAgICAgV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0Rm9yV2luZG93UG9zKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50Jik7CkBAIC00MjYsNiArNDM2LDkgQEAgICAgICAgICBEcm9wRWZmZWN0RGVm
YXVsdCA9IC0xLAogICAgIC8vIEEgcG9pbnRlciB0byB0aGUgY3VycmVudCBzdWdnZXN0aW9ucyBw
b3B1cC4gIFdlIGRvIG5vdCBvd24gdGhpcyBwb2ludGVyLgogICAgIFdlYkNvcmU6OlBvcHVwQ29u
dGFpbmVyKiBtX3N1Z2dlc3Rpb25zUG9wdXA7CiAKKyAgICAvLyBUaGUgcG9wdXAgYXNzb2NpYXRl
ZCB3aXRoIGEgc2VsZWN0IGVsZW1lbnQuCisgICAgUmVmUHRyPFdlYkNvcmU6OlBvcHVwQ29udGFp
bmVyPiBtX3NlbGVjdFBvcHVwOworCiAgICAgLy8gVGhlIEF1dG9GaWxsIHN1Z2dlc3Rpb25zIHBv
cHVwLgogICAgIFJlZlB0cjxXZWJDb3JlOjpQb3B1cENvbnRhaW5lcj4gbV9hdXRvRmlsbFBvcHVw
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50606</attachid>
            <date>2010-03-12 10:15:49 -0800</date>
            <delta_ts>2010-03-15 14:23:17 -0700</delta_ts>
            <desc>Fixed style issues</desc>
            <filename>select.patch</filename>
            <type>text/plain</type>
            <size>17386</size>
            <attacher name="Jay Campan">jcampan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU1OTEwKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNiBAQAorMjAxMC0wMy0xMiAgSmF5IENhbXBhbiAgPGpjYW1wYW5AZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtpbmcgQ2hyb21pdW0gc2VsZWN0IHBvcHVwcyBub3Qgc3RlYWwgYWN0aXZhdGlvbiBmcm9tIHRo
ZSBicm93c2VyLgorICAgICAgICBTZWxlY3QgcG9wdXBzIGFyZSBub3cgbGlrZSBhdXRvY29tcGxl
dGUgcG9wdXBzLCBzaG93biBpbiBub24tYWN0aXZhdGVkCisgICAgICAgIHdpbmRvd3MuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjA2MgorCisgICAg
ICAgICogcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Oik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjpQb3B1cENvbnRhaW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cENvbnRhaW5lcjo6flBvcHVwQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwQ29udGFpbmVyOjpzaG93UG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250
YWluZXI6OnNob3dFeHRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6
aGlkZVBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2hvdyk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvcHVwQ29udGFpbmVyOjopOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250YWluZXI6
OnBvcHVwVHlwZSk6CisKIDIwMTAtMDMtMTIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvcGFn
ZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9wYWdlL2Nocm9taXVtL0Nocm9tZUNsaWVudENocm9taXVtLmgJKHJldmlzaW9uIDU1OTA2KQor
KysgV2ViQ29yZS9wYWdlL2Nocm9taXVtL0Nocm9tZUNsaWVudENocm9taXVtLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDcgKzQ4LDEwIEBAIHB1YmxpYzoKICAgICAvLyBJZiBoYW5kbGVFeHRlcm5h
bCBpcyB0cnVlLCB0aGVuIGRyYXdpbmcgYW5kIGlucHV0IGhhbmRsaW5nIGZvciB0aGUKICAgICAv
LyBwb3B1cCB3aWxsIGJlIGhhbmRsZWQgYnkgdGhlIGV4dGVybmFsIGVtYmVkZGVyLgogICAgIHZp
cnR1YWwgdm9pZCBwb3B1cE9wZW5lZChQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIsIGNv
bnN0IEludFJlY3QmIGJvdW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBm
b2N1c09uU2hvdywgYm9vbCBoYW5kbGVFeHRlcm5hbCkgPSAwOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGhhbmRsZUV4dGVybmFsKSA9IDA7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAorICAgIC8vIE5vdGlmaWVzIHRoZSBjbGllbnQgYSBwb3B1cCB3YXMgY2xvc2Vk
LgorICAgIHZpcnR1YWwgdm9pZCBwb3B1cENsb3NlZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciog
cG9wdXBDb250YWluZXIpID0gMDsKIAogICAgIC8vIE5vdGlmaWVzIGVtYmVkZGVyIHRoYXQgdGhl
IHN0YXRlIG9mIGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGhhcyBjaGFuZ2VkLgogICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0U3RhdGUoQWNjZXNzaWJpbGl0eU9i
amVjdCopID0gMDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hy
b21pdW0uY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1
cE1lbnVDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDU1OTA2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0
LDYgQEAgc3RhdGljIGNvbnN0IFRpbWVTdGFtcCBrVHlwZUFoZWFkVGltZW91dAogLy8gVGhlIHNl
dHRpbmdzIHVzZWQgZm9yIHRoZSBkcm9wIGRvd24gbWVudS4KIC8vIFRoaXMgaXMgdGhlIGRlbGVn
YXRlIHVzZWQgaWYgbm9uZSBpcyBwcm92aWRlZC4KIHN0YXRpYyBjb25zdCBQb3B1cENvbnRhaW5l
clNldHRpbmdzIGRyb3BEb3duU2V0dGluZ3MgPSB7Ci0gICAgdHJ1ZSwgICAvLyBmb2N1c09uU2hv
dwogICAgIHRydWUsICAgLy8gc2V0VGV4dE9uSW5kZXhDaGFuZ2UKICAgICB0cnVlLCAgIC8vIGFj
Y2VwdE9uQWJhbmRvbgogICAgIGZhbHNlLCAgLy8gbG9vcFNlbGVjdGlvbk5hdmlnYXRpb24KQEAg
LTI5NywyMCArMjk2LDIzIEBAICAgICBJbnRQb2ludCBwb3MgPSBwYXJlbnQtPmNvbnZlcnRTZWxm
VG8KIAogLy8gc3RhdGljCiBQYXNzUmVmUHRyPFBvcHVwQ29udGFpbmVyPiBQb3B1cENvbnRhaW5l
cjo6Y3JlYXRlKFBvcHVwTWVudUNsaWVudCogY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3B1cFR5cGUgcG9wdXBUeXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb3B1cENv
bnRhaW5lclNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBv
cHVwQ29udGFpbmVyKGNsaWVudCwgc2V0dGluZ3MpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFBvcHVwQ29udGFpbmVyKGNsaWVudCwgcG9wdXBUeXBlLCBzZXR0aW5ncykpOwogfQogCiBQb3B1
cENvbnRhaW5lcjo6UG9wdXBDb250YWluZXIoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9wdXBUeXBlIHBvcHVwVHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzJiBzZXR0
aW5ncykKICAgICA6IG1fbGlzdEJveChQb3B1cExpc3RCb3g6OmNyZWF0ZShjbGllbnQsIHNldHRp
bmdzKSkKKyAgICAsIG1fcG9wdXBUeXBlKHBvcHVwVHlwZSkgIAogICAgICwgbV9zZXR0aW5ncyhz
ZXR0aW5ncykKIHsKICAgICBzZXRTY3JvbGxiYXJNb2RlcyhTY3JvbGxiYXJBbHdheXNPZmYsIFNj
cm9sbGJhckFsd2F5c09mZik7CiB9CiAKLVBvcHVwQ29udGFpbmVyOjp+UG9wdXBDb250YWluZXIo
KQorUG9wdXBDb250YWluZXI6On5Qb3B1cENvbnRhaW5lcigpIAogewogICAgIGlmIChtX2xpc3RC
b3ggJiYgbV9saXN0Qm94LT5wYXJlbnQoKSkKICAgICAgICAgcmVtb3ZlQ2hpbGQobV9saXN0Qm94
LmdldCgpKTsKQEAgLTMyNSw2ICszMjcsNyBAQCAgICAgLy8gUHJlLWxheW91dCwgb3VyIHNpemUg
bWF0Y2hlcyB0aGUgCiAgICAgLy8gV2lkZ2V0Q2xpZW50IGFib3V0IGl0LiAgSXQgc2hvdWxkIGFz
c2lnbiB1cyBhIGNsaWVudC4KICAgICBsYXlvdXQoKTsKIAorICAgIG1fZnJhbWVWaWV3ID0gdmll
dzsKICAgICBDaHJvbWVDbGllbnRDaHJvbWl1bSogY2hyb21lQ2xpZW50ID0gc3RhdGljX2Nhc3Q8
Q2hyb21lQ2xpZW50Q2hyb21pdW0qPigKICAgICAgICAgdmlldy0+ZnJhbWUoKS0+cGFnZSgpLT5j
aHJvbWUoKS0+Y2xpZW50KCkpOwogICAgIGlmIChjaHJvbWVDbGllbnQpIHsKQEAgLTMzNSw3ICsz
MzgsNyBAQCAgICAgICAgIEludFJlY3Qgd2lkZ2V0UmVjdCA9IGNocm9tZUNsaWVuCiAgICAgICAg
IGlmICh3aWRnZXRSZWN0LmJvdHRvbSgpID4gc3RhdGljX2Nhc3Q8aW50PihzY3JlZW4uYm90dG9t
KCkpKQogICAgICAgICAgICAgd2lkZ2V0UmVjdC5tb3ZlKDAsIC0od2lkZ2V0UmVjdC5oZWlnaHQo
KSArIHNlbGVjdEhlaWdodCkpOwogCi0gICAgICAgIGNocm9tZUNsaWVudC0+cG9wdXBPcGVuZWQo
dGhpcywgd2lkZ2V0UmVjdCwgbV9zZXR0aW5ncy5mb2N1c09uU2hvdywgZmFsc2UpOworICAgICAg
ICBjaHJvbWVDbGllbnQtPnBvcHVwT3BlbmVkKHRoaXMsIHdpZGdldFJlY3QsIGZhbHNlKTsKICAg
ICB9CiAKICAgICBpZiAoIW1fbGlzdEJveC0+cGFyZW50KCkpCkBAIC0zNjgsOSArMzcxLDEwIEBA
ICAgICBJbnRQb2ludCBsb2NhdGlvbiA9IHYtPmNvbnRlbnRzVG9XaW4KICAgICBJbnRSZWN0IHBv
cHVwUmVjdChsb2NhdGlvbiwgcmVjdC5zaXplKCkpOwogCiAgICAgLy8gR2V0IHRoZSBDaHJvbWVD
bGllbnQgYW5kIHBhc3MgaXQgdGhlIHBvcHVwIG1lbnUncyBsaXN0Ym94IGRhdGEuCisgICAgbV9m
cmFtZVZpZXcgPSB2OwogICAgIENocm9tZUNsaWVudENocm9taXVtKiBjbGllbnQgPSBzdGF0aWNf
Y2FzdDxDaHJvbWVDbGllbnRDaHJvbWl1bSo+KAogICAgICAgICAgdi0+ZnJhbWUoKS0+cGFnZSgp
LT5jaHJvbWUoKS0+Y2xpZW50KCkpOwotICAgIGNsaWVudC0+cG9wdXBPcGVuZWQodGhpcywgcG9w
dXBSZWN0LCB0cnVlLCB0cnVlKTsKKyAgICBjbGllbnQtPnBvcHVwT3BlbmVkKHRoaXMsIHBvcHVw
UmVjdCwgdHJ1ZSk7CiAKICAgICAvLyBUaGUgcG9wdXAgc2VuZHMgaXRzICJjbG9zZWQiIG5vdGlm
aWNhdGlvbiB0aHJvdWdoIGl0cyBwYXJlbnQuIFNldCB0aGUKICAgICAvLyBwYXJlbnQsIGV2ZW4g
dGhvdWdoIGV4dGVybmFsIHBvcHVwcyBoYXZlIG5vIHJlYWwgb24tc2NyZWVuIHdpZGdldCBidXQg
YQpAQCAtMzgyLDYgKzM4Niw4IEBAICAgICBpZiAoIW1fbGlzdEJveC0+cGFyZW50KCkpCiB2b2lk
IFBvcHVwQ29udGFpbmVyOjpoaWRlUG9wdXAoKQogewogICAgIGxpc3RCb3goKS0+aGlkZVBvcHVw
KCk7CisgICAgc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50Q2hyb21pdW0qPigKKyAgICAgICAgbV9m
cmFtZVZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpKS0+cG9wdXBDbG9z
ZWQodGhpcyk7CiB9CiAKIHZvaWQgUG9wdXBDb250YWluZXI6OmxheW91dCgpCkBAIC0xMjMxLDcg
KzEyMzcsNyBAQCBQb3B1cE1lbnU6On5Qb3B1cE1lbnUoKQogdm9pZCBQb3B1cE1lbnU6OnNob3co
Y29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2LCBpbnQgaW5kZXgpCiB7CiAgICAgaWYgKCFw
LnBvcHVwKQotICAgICAgICBwLnBvcHVwID0gUG9wdXBDb250YWluZXI6OmNyZWF0ZShjbGllbnQo
KSwgZHJvcERvd25TZXR0aW5ncyk7CisgICAgICAgIHAucG9wdXAgPSBQb3B1cENvbnRhaW5lcjo6
Y3JlYXRlKGNsaWVudCgpLCBQb3B1cENvbnRhaW5lcjo6U2VsZWN0LCBkcm9wRG93blNldHRpbmdz
KTsKICNpZiBPUyhEQVJXSU4pCiAgICAgcC5wb3B1cC0+c2hvd0V4dGVybmFsKHIsIHYsIGluZGV4
KTsKICNlbHNlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9t
aXVtLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVu
dUNocm9taXVtLmgJKHJldmlzaW9uIDU1OTA2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cE1lbnVDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDEyIEBA
ICAgICAgICAgICAgIC8vIFVzZSB0aGUgaXRlbSB0ZXh0J3MgZmlyc3QKIAogICAgIGNsYXNzIFBv
cHVwQ29udGFpbmVyIDogcHVibGljIEZyYW1lbGVzc1Njcm9sbFZpZXcgewogICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UG9wdXBDb250YWluZXI+IGNyZWF0ZShQb3B1cE1l
bnVDbGllbnQqLAorICAgICAgICBlbnVtIFBvcHVwVHlwZSB7CisgICAgICAgICAgICBTZWxlY3Qs
IC8vIEhUTUwgc2VsZWN0IHBvcHVwLgorICAgICAgICAgICAgU3VnZ2VzdGlvbiwgLy8gQXV0b2Nv
bXBsZXRlL2F1dG9maWxsIHBvcHVwLgorICAgICAgICB9OworCisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFBvcHVwQ29udGFpbmVyPiBjcmVhdGUoUG9wdXBNZW51Q2xpZW50KiwgUG9wdXBUeXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MmKTsKIAogICAgICAgICAvLyBXaGV0aGVyIGEga2V5IGV2
ZW50IHNob3VsZCBiZSBzZW50IHRvIHRoaXMgcG9wdXAuCkBAIC0xNjksMTggKzE3NCwyMiBAQCAg
ICAgICAgIC8vIFRoZSBtZW51IHBlci1pdGVtIGRhdGEuCiAgICAgICAgIC8vIFRoZSBzaXplIG9m
IHRoZSBmb250IGJlaW5nIHVzZWQuCiAgICAgICAgIGludCBtZW51SXRlbUZvbnRTaXplKCkgY29u
c3Q7CiAKKyAgICAgICAgUG9wdXBUeXBlIHBvcHVwVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9w
dXBUeXBlOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZD
b3VudGVkPFBvcHVwQ29udGFpbmVyPjsKIAotICAgICAgICBQb3B1cENvbnRhaW5lcihQb3B1cE1l
bnVDbGllbnQqLCBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzJik7CisgICAgICAgIFBvcHVw
Q29udGFpbmVyKFBvcHVwTWVudUNsaWVudCosIFBvcHVwVHlwZSBwb3B1cFR5cGUsIGNvbnN0IFBv
cHVwQ29udGFpbmVyU2V0dGluZ3MmKTsKICAgICAgICAgflBvcHVwQ29udGFpbmVyKCk7CiAKICAg
ICAgICAgLy8gUGFpbnQgdGhlIGJvcmRlci4KICAgICAgICAgdm9pZCBwYWludEJvcmRlcihHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICAgICAgUmVmUHRyPFBvcHVwTGlz
dEJveD4gbV9saXN0Qm94OworICAgICAgICBSZWZQdHI8RnJhbWVWaWV3PiBtX2ZyYW1lVmlldzsK
IAogICAgICAgICBQb3B1cENvbnRhaW5lclNldHRpbmdzIG1fc2V0dGluZ3M7CisgICAgICAgIFBv
cHVwVHlwZSBtX3BvcHVwVHlwZTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTU5MTApCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDMtMTIgIEpheSBD
YW1wYW4gIDxqY2FtcGFuQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTWFraW5nIENocm9taXVtIHNlbGVjdCBwb3B1cHMgbm90IHN0
ZWFsIGFjdGl2YXRpb24gZnJvbSB0aGUgYnJvd3Nlci4KKyAgICAgICAgU2VsZWN0IHBvcHVwcyBh
cmUgbm93IGxpa2UgYXV0b2NvbXBsZXRlIHBvcHVwcywgc2hvd24gaW4gbm9uLWFjdGl2YXRlZAor
ICAgICAgICB3aW5kb3dzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzYwNjIKKworICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudSk6CisgICAgICAgICog
c3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJ
bXBsOjpwb3B1cE9wZW5lZCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnBv
cHVwQ2xvc2VkKToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oik6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjptb3VzZURvd24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6a2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2VsZWN0UG9wdXBI
YW5kbGVLZXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpoaWRlU2VsZWN0
UG9wdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cG9wdXBPcGVuZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cG9wdXBDbG9zZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6c2V0Rm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
YXBwbHlBdXRvRmlsbFN1Z2dlc3Rpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OmFwcGx5QXV0b2NvbXBsZXRlU3VnZ2VzdGlvbnMpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1w
bC5oOgorCiAyMDEwLTAzLTEyICBOaWNvbGFzIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgJKHJldmlzaW9uIDU1OTA2KQorKysgV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcg
QEAgICAgIC8vIEZhY3RvcnkgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gQ3Jl
YXRlIGEgbmV3IFdlYlBvcHVwTWVudS4gIEluIHRoZSBzZWNvbmQgZm9ybSwgdGhlIGNsaWVudCBp
cwogICAgIC8vIHJlc3BvbnNpYmxlIGZvciByZW5kZXJpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBw
b3B1cCBtZW51LgotICAgIHZpcnR1YWwgV2ViV2lkZ2V0KiBjcmVhdGVQb3B1cE1lbnUoYm9vbCBh
Y3RpdmF0YWJsZSkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgV2ViV2lkZ2V0KiBjcmVhdGVQ
b3B1cE1lbnUoKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBXZWJXaWRnZXQqIGNyZWF0ZVBv
cHVwTWVudShjb25zdCBXZWJQb3B1cE1lbnVJbmZvJikgeyByZXR1cm4gMDsgfQogCiAgICAgLy8g
Q3JlYXRlIGEgc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRo
IHRoaXMgV2ViVmlldy4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1w
bC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudElt
cGwuY3BwCShyZXZpc2lvbiA1NTkwNikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5NCw3ICs1OTQsNiBAQCB2b2lkIENocm9t
ZUNsaWVudEltcGw6Omljb25Gb3JGaWxlcyhjb25zCiAKIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6
cG9wdXBPcGVuZWQoUG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBib3VuZHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWN0aXZhdGFibGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFuZGxlRXh0ZXJuYWxseSkKIHsKICAgICBpZiAo
IW1fd2ViVmlldy0+Y2xpZW50KCkpCkBAIC02MDYsMTEgKzYwNSwxNiBAQCAgICAgaWYgKCFtX3dl
YlZpZXctPmNsaWVudCgpKQogICAgICAgICBnZXRQb3B1cE1lbnVJbmZvKHBvcHVwQ29udGFpbmVy
LCAmcG9wdXBJbmZvKTsKICAgICAgICAgd2Vid2lkZ2V0ID0gbV93ZWJWaWV3LT5jbGllbnQoKS0+
Y3JlYXRlUG9wdXBNZW51KHBvcHVwSW5mbyk7CiAgICAgfSBlbHNlCi0gICAgICAgIHdlYndpZGdl
dCA9IG1fd2ViVmlldy0+Y2xpZW50KCktPmNyZWF0ZVBvcHVwTWVudShhY3RpdmF0YWJsZSk7Ci0K
KyAgICAgICAgd2Vid2lkZ2V0ID0gbV93ZWJWaWV3LT5jbGllbnQoKS0+Y3JlYXRlUG9wdXBNZW51
KCk7CisgICAgbV93ZWJWaWV3LT5wb3B1cE9wZW5lZChwb3B1cENvbnRhaW5lcik7CiAgICAgc3Rh
dGljX2Nhc3Q8V2ViUG9wdXBNZW51SW1wbCo+KHdlYndpZGdldCktPkluaXQocG9wdXBDb250YWlu
ZXIsIGJvdW5kcyk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cG9wdXBDbG9zZWQoV2Vi
Q29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyKQoreworICAgIG1fd2ViVmlldy0+
cG9wdXBDbG9zZWQocG9wdXBDb250YWluZXIpOworfQorCiB2b2lkIENocm9tZUNsaWVudEltcGw6
OnNldEN1cnNvcihjb25zdCBXZWJDdXJzb3JJbmZvJiBjdXJzb3IpCiB7CiAgICAgaWYgKG1faWdu
b3JlTmV4dFNldEN1cnNvcikgewpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVu
dEltcGwuaAkocmV2aXNpb24gNTU5MDYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDggKzEzNiw4IEBAIHB1YmxpYzoKICAg
ICAvLyBDaHJvbWVDbGllbnRDaHJvbWl1bSBtZXRob2RzOgogICAgIHZpcnR1YWwgdm9pZCBwb3B1
cE9wZW5lZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGJvdW5kcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhY3RpdmF0YWJsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBoYW5kbGVFeHRlcm5hbGx5KTsKKyAgICB2aXJ0dWFsIHZv
aWQgcG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdFN0YXRlKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqKTsKIAogICAgIC8vIENocm9tZUNsaWVudEltcGw6Cklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiA1NTkwNikKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDksMTEgKzE0OSw3IEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRHJhZ09wZXJhdGkK
IENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRHJhZ09wZXJhdGlvbkRlbGV0ZSk7CiBDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKERyYWdPcGVyYXRpb25FdmVyeSk7CiAKLS8vIE5vdGUg
dGhhdCBmb2N1c09uU2hvdyBpcyBmYWxzZSBzbyB0aGF0IHRoZSBzdWdnZXN0aW9ucyBwb3B1cCBp
cyBzaG93biBub3QKLS8vIGFjdGl2YXRlZC4gIFdlIG5lZWQgdGhlIHBhZ2UgdG8gc3RpbGwgaGF2
ZSBmb2N1cyBzbyB0aGUgdXNlciBjYW4ga2VlcCB0eXBpbmcKLS8vIHdoaWxlIHRoZSBwb3B1cCBp
cyBzaG93aW5nLgogc3RhdGljIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3Mgc3VnZ2VzdGlv
bnNQb3B1cFNldHRpbmdzID0gewotICAgIGZhbHNlLCAgLy8gZm9jdXNPblNob3cKICAgICBmYWxz
ZSwgIC8vIHNldFRleHRPbkluZGV4Q2hhbmdlCiAgICAgZmFsc2UsICAvLyBhY2NlcHRPbkFiYW5k
b24KICAgICB0cnVlLCAgIC8vIGxvb3BTZWxlY3Rpb25OYXZpZ2F0aW9uCkBAIC0zMjcsNiArMzIz
LDEwIEBAIHZvaWQgV2ViVmlld0ltcGw6Om1vdXNlRG93bihjb25zdCBXZWJNb3UKICAgICBpZiAo
IW1haW5GcmFtZUltcGwoKSB8fCAhbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgLy8gSWYgdGhlcmUgaXMgYSBzZWxlY3QgcG9wdXAgb3BlbmVkLCBj
bG9zZSBpdCBhcyB0aGUgdXNlciBpcyBjbGlja2luZyBvbgorICAgIC8vIHRoZSBwYWdlIChvdXRz
aWRlIG9mIHRoZSBwb3B1cCkuCisgICAgaGlkZVNlbGVjdFBvcHVwKCk7CisKICAgICBtX2xhc3RN
b3VzZURvd25Qb2ludCA9IFdlYlBvaW50KGV2ZW50LngsIGV2ZW50LnkpOwogICAgIG1faGF2ZU1v
dXNlQ2FwdHVyZSA9IHRydWU7CiAKQEAgLTQ3NCw2ICs0NzQsMTAgQEAgYm9vbCBXZWJWaWV3SW1w
bDo6a2V5RXZlbnQoY29uc3QgV2ViS2V5YgogICAgIC8vIGV2ZW50LgogICAgIG1fc3VwcHJlc3NO
ZXh0S2V5cHJlc3NFdmVudCA9IGZhbHNlOwogCisgICAgLy8gR2l2ZSBhbnkgc2VsZWN0IHBvcHVw
IGEgY2hhbmNlIGF0IGNvbnN1bWluZyB0aGUga2V5IGV2ZW50LgorICAgIGlmIChzZWxlY3RQb3B1
cEhhbmRsZUtleUV2ZW50KGV2ZW50KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICAvLyBH
aXZlIEF1dG9jb21wbGV0ZSBhIGNoYW5jZSB0byBjb25zdW1lIHRoZSBrZXkgZXZlbnRzIGl0IGlz
IGludGVyZXN0ZWQgaW4uCiAgICAgaWYgKGF1dG9jb21wbGV0ZUhhbmRsZUtleUV2ZW50KGV2ZW50
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01MjMsNiArNTI3LDE0IEBAICAgICAgICAgICAg
IGlmICghbm9kZSB8fCAhbm9kZS0+cmVuZGVyZXIKICAgICByZXR1cm4ga2V5RXZlbnREZWZhdWx0
KGV2ZW50KTsKIH0KIAorYm9vbCBXZWJWaWV3SW1wbDo6c2VsZWN0UG9wdXBIYW5kbGVLZXlFdmVu
dChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAoIW1fc2VsZWN0UG9w
dXApCisgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIG1fc2VsZWN0UG9wdXAt
PmhhbmRsZUtleUV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIoZXZlbnQpKTsKK30K
KwogYm9vbCBXZWJWaWV3SW1wbDo6YXV0b2NvbXBsZXRlSGFuZGxlS2V5RXZlbnQoY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKCFtX3N1Z2dlc3Rpb25zUG9wdXBTaG93
aW5nCkBAIC03OTMsNiArODA1LDEyIEBAIGJvb2wgV2ViVmlld0ltcGw6OnNjcm9sbFZpZXdXaXRo
S2V5Ym9hcmQKICAgICByZXR1cm4gcHJvcGFnYXRlU2Nyb2xsKHNjcm9sbERpcmVjdGlvbiwgc2Ny
b2xsR3JhbnVsYXJpdHkpOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpoaWRlU2VsZWN0UG9wdXAo
KQoreworICAgIGlmIChtX3NlbGVjdFBvcHVwLmdldCgpKQorICAgICAgICBtX3NlbGVjdFBvcHVw
LT5oaWRlUG9wdXAoKTsKK30KKwogYm9vbCBXZWJWaWV3SW1wbDo6cHJvcGFnYXRlU2Nyb2xsKFNj
cm9sbERpcmVjdGlvbiBzY3JvbGxEaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJpdHkpCiB7CkBAIC04MTIs
NiArODMwLDIyIEBAICAgICAgICAgY3VycmVudEZyYW1lID0gY3VycmVudEZyYW1lLT50cmUKICAg
ICByZXR1cm4gc2Nyb2xsSGFuZGxlZDsKIH0KIAordm9pZCAgV2ViVmlld0ltcGw6OnBvcHVwT3Bl
bmVkKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBwb3B1cENvbnRhaW5lcikKK3sKKyAgICBpZiAo
cG9wdXBDb250YWluZXItPnBvcHVwVHlwZSgpID09IFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjpT
ZWxlY3QpIHsKKyAgICAgICAgQVNTRVJUKCFtX3NlbGVjdFBvcHVwKTsKKyAgICAgICAgbV9zZWxl
Y3RQb3B1cCA9IHBvcHVwQ29udGFpbmVyOworICAgIH0KK30KKwordm9pZCAgV2ViVmlld0ltcGw6
OnBvcHVwQ2xvc2VkKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBwb3B1cENvbnRhaW5lcikKK3sK
KyAgICBpZiAocG9wdXBDb250YWluZXItPnBvcHVwVHlwZSgpID09IFdlYkNvcmU6OlBvcHVwQ29u
dGFpbmVyOjpTZWxlY3QpIHsKKyAgICAgICAgQVNTRVJUKG1fc2VsZWN0UG9wdXAuZ2V0KCkpOwor
ICAgICAgICBtX3NlbGVjdFBvcHVwID0gMDsKKyAgICB9Cit9CisKIEZyYW1lKiBXZWJWaWV3SW1w
bDo6Zm9jdXNlZFdlYkNvcmVGcmFtZSgpCiB7CiAgICAgcmV0dXJuIG1fcGFnZS5nZXQoKSA/IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpIDogMDsKQEAgLTEw
NDMsNiArMTA3Nyw3IEBAICAgICAgICAgICAgICAgICAgICAgZm9jdXNlZEZyYW1lLT5zZWxlY3QK
ICAgICAgICAgbV9pbWVBY2NlcHRFdmVudHMgPSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGhpZGVTdWdnZXN0aW9uc1BvcHVwKCk7CisgICAgICAgIGhpZGVTZWxlY3RQb3B1cCgpOwogCiAg
ICAgICAgIC8vIENsZWFyIGZvY3VzIG9uIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBmcmFtZSBpZiBh
bnkuCiAgICAgICAgIGlmICghbV9wYWdlLmdldCgpKQpAQCAtMTY2OCw2ICsxNzAzLDcgQEAgICAg
IG1fYXV0b0ZpbGxQb3B1cENsaWVudC0+aW5pdGlhbGl6ZShpbgogCiAgICAgaWYgKCFtX2F1dG9G
aWxsUG9wdXAuZ2V0KCkpIHsKICAgICAgICAgbV9hdXRvRmlsbFBvcHVwID0gUG9wdXBDb250YWlu
ZXI6OmNyZWF0ZShtX3N1Z2dlc3Rpb25zUG9wdXBDbGllbnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9wdXBDb250YWluZXI6OlN1Z2dlc3Rpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VnZ2Vz
dGlvbnNQb3B1cFNldHRpbmdzKTsKICAgICB9CiAKQEAgLTE3MjMsNiArMTc1OSw3IEBAICAgICBt
X2F1dG9jb21wbGV0ZVBvcHVwQ2xpZW50LT5pbml0aWFsaXoKIAogICAgIGlmICghbV9hdXRvY29t
cGxldGVQb3B1cC5nZXQoKSkgewogICAgICAgICBtX2F1dG9jb21wbGV0ZVBvcHVwID0gUG9wdXBD
b250YWluZXI6OmNyZWF0ZShtX3N1Z2dlc3Rpb25zUG9wdXBDbGllbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcHVwQ29udGFpbmVyOjpT
dWdnZXN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdWdnZXN0aW9uc1BvcHVwU2V0dGluZ3MpOwogICAgIH0KIApJbmRleDogV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCShyZXZpc2lvbiA1NTkwNikKKysrIFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCwxMCBAQCAg
ICAgLy8gaW5jbHVkZSB0aGUgVktfQVBQUyB2aXJ0dWFsIGtleSBhCiAgICAgLy8gd2FzIHNjcm9s
bGVkLgogICAgIGJvb2wgcHJvcGFnYXRlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwg
V2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwogCisgICAgLy8gTm90aWZpY2F0aW9uIHRoYXQg
YSBwb3B1cCB3YXMgb3BlbmVkL2Nsb3NlZC4KKyAgICB2b2lkIHBvcHVwT3BlbmVkKFdlYkNvcmU6
OlBvcHVwQ29udGFpbmVyKiBwb3B1cENvbnRhaW5lcik7CisgICAgdm9pZCBwb3B1cENsb3NlZChX
ZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpOworCiAgICAgLy8gSEFDSzog
Y3VycmVudElucHV0RXZlbnQoKSBpcyBmb3IgQ2hyb21lQ2xpZW50SW1wbDo6c2hvdygpLCB1bnRp
bCB3ZSBjYW4KICAgICAvLyBmaXggV2ViS2l0IHRvIHBhc3MgZW5vdWdoIGluZm9ybWF0aW9uIHVw
IGludG8gQ2hyb21lQ2xpZW50OjpzaG93KCkgc28gd2UKICAgICAvLyBjYW4gZGVjaWRlIGlmIHRo
ZSB3aW5kb3cub3BlbiBldmVudCB3YXMgY2F1c2VkIGJ5IGEgbWlkZGxlLW1vdXNlIGNsaWNrCkBA
IC0zMDgsNiArMzEyLDkgQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGV2
ZW50IHdhcyBhY3R1YWxseSBwcm9jZXNzZWQuCiAgICAgYm9vbCBrZXlFdmVudERlZmF1bHQoY29u
c3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzZWxl
Y3QgcG9wdXAgaGFzIGNvbnN1bWVkIHRoZSBldmVudC4KKyAgICBib29sIHNlbGVjdFBvcHVwSGFu
ZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOworCiAgICAgLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSBhdXRvY29tcGxlIGhhcyBjb25zdW1lZCB0aGUgZXZlbnQuCiAgICAgYm9vbCBh
dXRvY29tcGxldGVIYW5kbGVLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAKQEAg
LTMxOSw2ICszMjYsOSBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgdmll
dyB3YXMgc2Nyb2xsZWQuCiAgICAgYm9vbCBzY3JvbGxWaWV3V2l0aEtleWJvYXJkKGludCBrZXlD
b2RlLCBpbnQgbW9kaWZpZXJzKTsKIAorICAgIC8vIEhpZGVzIHRoZSBzZWxlY3QgcG9wdXAgaWYg
b25lIGlzIG9wZW5lZC4KKyAgICB2b2lkIGhpZGVTZWxlY3RQb3B1cCgpOworCiAgICAgLy8gQ29u
dmVydHMgfHBvc3wgZnJvbSB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gY29udGVudHMgY29vcmRpbmF0
ZXMgYW5kIGdldHMKICAgICAvLyB0aGUgSGl0VGVzdFJlc3VsdCBmb3IgaXQuCiAgICAgV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0Rm9yV2luZG93UG9zKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50Jik7CkBAIC00MjYsNiArNDM2LDkgQEAgICAgICAgICBEcm9wRWZmZWN0RGVmYXVs
dCA9IC0xLAogICAgIC8vIEEgcG9pbnRlciB0byB0aGUgY3VycmVudCBzdWdnZXN0aW9ucyBwb3B1
cC4gIFdlIGRvIG5vdCBvd24gdGhpcyBwb2ludGVyLgogICAgIFdlYkNvcmU6OlBvcHVwQ29udGFp
bmVyKiBtX3N1Z2dlc3Rpb25zUG9wdXA7CiAKKyAgICAvLyBUaGUgcG9wdXAgYXNzb2NpYXRlZCB3
aXRoIGEgc2VsZWN0IGVsZW1lbnQuCisgICAgUmVmUHRyPFdlYkNvcmU6OlBvcHVwQ29udGFpbmVy
PiBtX3NlbGVjdFBvcHVwOworCiAgICAgLy8gVGhlIEF1dG9GaWxsIHN1Z2dlc3Rpb25zIHBvcHVw
LgogICAgIFJlZlB0cjxXZWJDb3JlOjpQb3B1cENvbnRhaW5lcj4gbV9hdXRvRmlsbFBvcHVwOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50739</attachid>
            <date>2010-03-15 14:23:17 -0700</date>
            <delta_ts>2010-03-19 09:15:33 -0700</delta_ts>
            <desc>Keeping the old WebViewClient method so not break the Chromium build.</desc>
            <filename>select.patch</filename>
            <type>text/plain</type>
            <size>17679</size>
            <attacher name="Jay Campan">jcampan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU2MDE0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNiBAQAorMjAxMC0wMy0xNSAgSmF5IENhbXBhbiAgPGpjYW1wYW5AZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtpbmcgQ2hyb21pdW0gc2VsZWN0IHBvcHVwcyBub3Qgc3RlYWwgYWN0aXZhdGlvbiBmcm9tIHRo
ZSBicm93c2VyLgorICAgICAgICBTZWxlY3QgcG9wdXBzIGFyZSBub3cgbGlrZSBhdXRvY29tcGxl
dGUgcG9wdXBzLCBzaG93biBpbiBub24tYWN0aXZhdGVkCisgICAgICAgIHdpbmRvd3MuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjA2MgorCisgICAg
ICAgICogcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Oik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjpQb3B1cENvbnRhaW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cENvbnRhaW5lcjo6flBvcHVwQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwQ29udGFpbmVyOjpzaG93UG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250
YWluZXI6OnNob3dFeHRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6
aGlkZVBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2hvdyk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvcHVwQ29udGFpbmVyOjopOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250YWluZXI6
OnBvcHVwVHlwZSk6CisKIDIwMTAtMDMtMTUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNv
cmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oCShyZXZpc2lvbiA1NjAxMikK
KysrIFdlYkNvcmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gSWYgaGFuZGxlRXh0ZXJu
YWwgaXMgdHJ1ZSwgdGhlbiBkcmF3aW5nIGFuZCBpbnB1dCBoYW5kbGluZyBmb3IgdGhlCiAgICAg
Ly8gcG9wdXAgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBleHRlcm5hbCBlbWJlZGRlci4KICAgICB2
aXJ0dWFsIHZvaWQgcG9wdXBPcGVuZWQoUG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyLCBj
b25zdCBJbnRSZWN0JiBib3VuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
Zm9jdXNPblNob3csIGJvb2wgaGFuZGxlRXh0ZXJuYWwpID0gMDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBoYW5kbGVFeHRlcm5hbCkgPSAwOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKKyAgICAvLyBOb3RpZmllcyB0aGUgY2xpZW50IGEgcG9wdXAgd2FzIGNsb3Nl
ZC4KKyAgICB2aXJ0dWFsIHZvaWQgcG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIq
IHBvcHVwQ29udGFpbmVyKSA9IDA7CiAKICAgICAvLyBOb3RpZmllcyBlbWJlZGRlciB0aGF0IHRo
ZSBzdGF0ZSBvZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBoYXMgY2hhbmdlZC4KICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdFN0YXRlKEFjY2Vzc2liaWxpdHlP
YmplY3QqKSA9IDA7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNo
cm9taXVtLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9w
dXBNZW51Q2hyb21pdW0uY3BwCShyZXZpc2lvbiA1NjAxMikKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3
NCw2IEBAIHN0YXRpYyBjb25zdCBUaW1lU3RhbXAga1R5cGVBaGVhZFRpbWVvdXQKIC8vIFRoZSBz
ZXR0aW5ncyB1c2VkIGZvciB0aGUgZHJvcCBkb3duIG1lbnUuCiAvLyBUaGlzIGlzIHRoZSBkZWxl
Z2F0ZSB1c2VkIGlmIG5vbmUgaXMgcHJvdmlkZWQuCiBzdGF0aWMgY29uc3QgUG9wdXBDb250YWlu
ZXJTZXR0aW5ncyBkcm9wRG93blNldHRpbmdzID0gewotICAgIHRydWUsICAgLy8gZm9jdXNPblNo
b3cKICAgICB0cnVlLCAgIC8vIHNldFRleHRPbkluZGV4Q2hhbmdlCiAgICAgdHJ1ZSwgICAvLyBh
Y2NlcHRPbkFiYW5kb24KICAgICBmYWxzZSwgIC8vIGxvb3BTZWxlY3Rpb25OYXZpZ2F0aW9uCkBA
IC0yOTcsMjAgKzI5NiwyMyBAQCBzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50IGNvbnN0cnVjdFJl
bGF0CiAKIC8vIHN0YXRpYwogUGFzc1JlZlB0cjxQb3B1cENvbnRhaW5lcj4gUG9wdXBDb250YWlu
ZXI6OmNyZWF0ZShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9wdXBUeXBlIHBvcHVwVHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUG9wdXBD
b250YWluZXJTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQ
b3B1cENvbnRhaW5lcihjbGllbnQsIHNldHRpbmdzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBQb3B1cENvbnRhaW5lcihjbGllbnQsIHBvcHVwVHlwZSwgc2V0dGluZ3MpKTsKIH0KIAogUG9w
dXBDb250YWluZXI6OlBvcHVwQ29udGFpbmVyKFBvcHVwTWVudUNsaWVudCogY2xpZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcHVwVHlwZSBwb3B1cFR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyYgc2V0
dGluZ3MpCiAgICAgOiBtX2xpc3RCb3goUG9wdXBMaXN0Qm94OjpjcmVhdGUoY2xpZW50LCBzZXR0
aW5ncykpCisgICAgLCBtX3BvcHVwVHlwZShwb3B1cFR5cGUpICAKICAgICAsIG1fc2V0dGluZ3Mo
c2V0dGluZ3MpCiB7CiAgICAgc2V0U2Nyb2xsYmFyTW9kZXMoU2Nyb2xsYmFyQWx3YXlzT2ZmLCBT
Y3JvbGxiYXJBbHdheXNPZmYpOwogfQogCi1Qb3B1cENvbnRhaW5lcjo6flBvcHVwQ29udGFpbmVy
KCkKK1BvcHVwQ29udGFpbmVyOjp+UG9wdXBDb250YWluZXIoKSAKIHsKICAgICBpZiAobV9saXN0
Qm94ICYmIG1fbGlzdEJveC0+cGFyZW50KCkpCiAgICAgICAgIHJlbW92ZUNoaWxkKG1fbGlzdEJv
eC5nZXQoKSk7CkBAIC0zMjUsNiArMzI3LDcgQEAgdm9pZCBQb3B1cENvbnRhaW5lcjo6c2hvd1Bv
cHVwKEZyYW1lVmlldwogICAgIC8vIFdpZGdldENsaWVudCBhYm91dCBpdC4gIEl0IHNob3VsZCBh
c3NpZ24gdXMgYSBjbGllbnQuCiAgICAgbGF5b3V0KCk7CiAKKyAgICBtX2ZyYW1lVmlldyA9IHZp
ZXc7CiAgICAgQ2hyb21lQ2xpZW50Q2hyb21pdW0qIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0
PENocm9tZUNsaWVudENocm9taXVtKj4oCiAgICAgICAgIHZpZXctPmZyYW1lKCktPnBhZ2UoKS0+
Y2hyb21lKCktPmNsaWVudCgpKTsKICAgICBpZiAoY2hyb21lQ2xpZW50KSB7CkBAIC0zMzUsNyAr
MzM4LDcgQEAgdm9pZCBQb3B1cENvbnRhaW5lcjo6c2hvd1BvcHVwKEZyYW1lVmlldwogICAgICAg
ICBpZiAod2lkZ2V0UmVjdC5ib3R0b20oKSA+IHN0YXRpY19jYXN0PGludD4oc2NyZWVuLmJvdHRv
bSgpKSkKICAgICAgICAgICAgIHdpZGdldFJlY3QubW92ZSgwLCAtKHdpZGdldFJlY3QuaGVpZ2h0
KCkgKyBzZWxlY3RIZWlnaHQpKTsKIAotICAgICAgICBjaHJvbWVDbGllbnQtPnBvcHVwT3BlbmVk
KHRoaXMsIHdpZGdldFJlY3QsIG1fc2V0dGluZ3MuZm9jdXNPblNob3csIGZhbHNlKTsKKyAgICAg
ICAgY2hyb21lQ2xpZW50LT5wb3B1cE9wZW5lZCh0aGlzLCB3aWRnZXRSZWN0LCBmYWxzZSk7CiAg
ICAgfQogCiAgICAgaWYgKCFtX2xpc3RCb3gtPnBhcmVudCgpKQpAQCAtMzY4LDkgKzM3MSwxMCBA
QCB2b2lkIFBvcHVwQ29udGFpbmVyOjpzaG93RXh0ZXJuYWwoY29uc3QgCiAgICAgSW50UmVjdCBw
b3B1cFJlY3QobG9jYXRpb24sIHJlY3Quc2l6ZSgpKTsKIAogICAgIC8vIEdldCB0aGUgQ2hyb21l
Q2xpZW50IGFuZCBwYXNzIGl0IHRoZSBwb3B1cCBtZW51J3MgbGlzdGJveCBkYXRhLgorICAgIG1f
ZnJhbWVWaWV3ID0gdjsKICAgICBDaHJvbWVDbGllbnRDaHJvbWl1bSogY2xpZW50ID0gc3RhdGlj
X2Nhc3Q8Q2hyb21lQ2xpZW50Q2hyb21pdW0qPigKICAgICAgICAgIHYtPmZyYW1lKCktPnBhZ2Uo
KS0+Y2hyb21lKCktPmNsaWVudCgpKTsKLSAgICBjbGllbnQtPnBvcHVwT3BlbmVkKHRoaXMsIHBv
cHVwUmVjdCwgdHJ1ZSwgdHJ1ZSk7CisgICAgY2xpZW50LT5wb3B1cE9wZW5lZCh0aGlzLCBwb3B1
cFJlY3QsIHRydWUpOwogCiAgICAgLy8gVGhlIHBvcHVwIHNlbmRzIGl0cyAiY2xvc2VkIiBub3Rp
ZmljYXRpb24gdGhyb3VnaCBpdHMgcGFyZW50LiBTZXQgdGhlCiAgICAgLy8gcGFyZW50LCBldmVu
IHRob3VnaCBleHRlcm5hbCBwb3B1cHMgaGF2ZSBubyByZWFsIG9uLXNjcmVlbiB3aWRnZXQgYnV0
IGEKQEAgLTM4Miw2ICszODYsOCBAQCB2b2lkIFBvcHVwQ29udGFpbmVyOjpzaG93RXh0ZXJuYWwo
Y29uc3QgCiB2b2lkIFBvcHVwQ29udGFpbmVyOjpoaWRlUG9wdXAoKQogewogICAgIGxpc3RCb3go
KS0+aGlkZVBvcHVwKCk7CisgICAgc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50Q2hyb21pdW0qPigK
KyAgICAgICAgbV9mcmFtZVZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgp
KS0+cG9wdXBDbG9zZWQodGhpcyk7CiB9CiAKIHZvaWQgUG9wdXBDb250YWluZXI6OmxheW91dCgp
CkBAIC0xMjMxLDcgKzEyMzcsNyBAQCBQb3B1cE1lbnU6On5Qb3B1cE1lbnUoKQogdm9pZCBQb3B1
cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2LCBpbnQgaW5kZXgpCiB7
CiAgICAgaWYgKCFwLnBvcHVwKQotICAgICAgICBwLnBvcHVwID0gUG9wdXBDb250YWluZXI6OmNy
ZWF0ZShjbGllbnQoKSwgZHJvcERvd25TZXR0aW5ncyk7CisgICAgICAgIHAucG9wdXAgPSBQb3B1
cENvbnRhaW5lcjo6Y3JlYXRlKGNsaWVudCgpLCBQb3B1cENvbnRhaW5lcjo6U2VsZWN0LCBkcm9w
RG93blNldHRpbmdzKTsKICNpZiBPUyhEQVJXSU4pCiAgICAgcC5wb3B1cC0+c2hvd0V4dGVybmFs
KHIsIHYsIGluZGV4KTsKICNlbHNlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bv
cHVwTWVudUNocm9taXVtLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BvcHVwTWVudUNocm9taXVtLmgJKHJldmlzaW9uIDU2MDEyKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUs
NyArMTE1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFBvcHVwQ29udGFp
bmVyIDogcHVibGljIEZyYW1lbGVzc1Njcm9sbFZpZXcgewogICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8UG9wdXBDb250YWluZXI+IGNyZWF0ZShQb3B1cE1lbnVDbGllbnQq
LAorICAgICAgICBlbnVtIFBvcHVwVHlwZSB7CisgICAgICAgICAgICBTZWxlY3QsIC8vIEhUTUwg
c2VsZWN0IHBvcHVwLgorICAgICAgICAgICAgU3VnZ2VzdGlvbiwgLy8gQXV0b2NvbXBsZXRlL2F1
dG9maWxsIHBvcHVwLgorICAgICAgICB9OworCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBv
cHVwQ29udGFpbmVyPiBjcmVhdGUoUG9wdXBNZW51Q2xpZW50KiwgUG9wdXBUeXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBvcHVwQ29u
dGFpbmVyU2V0dGluZ3MmKTsKIAogICAgICAgICAvLyBXaGV0aGVyIGEga2V5IGV2ZW50IHNob3Vs
ZCBiZSBzZW50IHRvIHRoaXMgcG9wdXAuCkBAIC0xNjksMTggKzE3NCwyMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIC8vIFRoZSBzaXplIG9mIHRoZSBmb250IGJlaW5nIHVzZWQuCiAg
ICAgICAgIGludCBtZW51SXRlbUZvbnRTaXplKCkgY29uc3Q7CiAKKyAgICAgICAgUG9wdXBUeXBl
IHBvcHVwVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9wdXBUeXBlOyB9CisKICAgICBwcml2YXRl
OgogICAgICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFBvcHVwQ29udGFpbmVyPjsK
IAotICAgICAgICBQb3B1cENvbnRhaW5lcihQb3B1cE1lbnVDbGllbnQqLCBjb25zdCBQb3B1cENv
bnRhaW5lclNldHRpbmdzJik7CisgICAgICAgIFBvcHVwQ29udGFpbmVyKFBvcHVwTWVudUNsaWVu
dCosIFBvcHVwVHlwZSBwb3B1cFR5cGUsIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MmKTsK
ICAgICAgICAgflBvcHVwQ29udGFpbmVyKCk7CiAKICAgICAgICAgLy8gUGFpbnQgdGhlIGJvcmRl
ci4KICAgICAgICAgdm9pZCBwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRS
ZWN0Jik7CiAKICAgICAgICAgUmVmUHRyPFBvcHVwTGlzdEJveD4gbV9saXN0Qm94OworICAgICAg
ICBSZWZQdHI8RnJhbWVWaWV3PiBtX2ZyYW1lVmlldzsKIAogICAgICAgICBQb3B1cENvbnRhaW5l
clNldHRpbmdzIG1fc2V0dGluZ3M7CisgICAgICAgIFBvcHVwVHlwZSBtX3BvcHVwVHlwZTsKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNp
b24gNTYwMTQpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDMtMTUgIEpheSBDYW1wYW4gIDxqY2FtcGFuQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
aW5nIENocm9taXVtIHNlbGVjdCBwb3B1cHMgbm90IHN0ZWFsIGFjdGl2YXRpb24gZnJvbSB0aGUg
YnJvd3Nlci4KKyAgICAgICAgU2VsZWN0IHBvcHVwcyBhcmUgbm93IGxpa2UgYXV0b2NvbXBsZXRl
IHBvcHVwcywgc2hvd24gaW4gbm9uLWFjdGl2YXRlZAorICAgICAgICB3aW5kb3dzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYwNjIKKworICAgICAg
ICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGll
bnQ6OmNyZWF0ZVBvcHVwTWVudSk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpwb3B1cE9wZW5lZCk6CisgICAg
ICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnBvcHVwQ2xvc2VkKToKKyAgICAgICAgKiBz
cmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Oik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjptb3VzZURv
d24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6a2V5RXZlbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2VsZWN0UG9wdXBIYW5kbGVLZXlFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpoaWRlU2VsZWN0UG9wdXApOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6cG9wdXBPcGVuZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6cG9wdXBDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Rm9jdXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YXBwbHlBdXRvRmlsbFN1Z2dlc3Rpb25z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5QXV0b2NvbXBsZXRlU3VnZ2Vz
dGlvbnMpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTAzLTE1ICBNYXJj
dXMgQnVsYWNoICA8YnVsYWNoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBK
ZXJlbXkgT3Jsb3cuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQu
aA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5o
CShyZXZpc2lvbiA1NjAxMikKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw4ICs3MywxMSBAQCBwdWJsaWM6CiAKICAgICAvLyBD
cmVhdGUgYSBuZXcgV2ViUG9wdXBNZW51LiAgSW4gdGhlIHNlY29uZCBmb3JtLCB0aGUgY2xpZW50
IGlzCiAgICAgLy8gcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudHMgb2YgdGhl
IHBvcHVwIG1lbnUuCi0gICAgdmlydHVhbCBXZWJXaWRnZXQqIGNyZWF0ZVBvcHVwTWVudShib29s
IGFjdGl2YXRhYmxlKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBXZWJXaWRnZXQqIGNyZWF0
ZVBvcHVwTWVudSgpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFdlYldpZGdldCogY3JlYXRl
UG9wdXBNZW51KGNvbnN0IFdlYlBvcHVwTWVudUluZm8mKSB7IHJldHVybiAwOyB9CisgICAgLy8g
RGVwcmVjYXRlZCBtZXRob2QuCisgICAgdmlydHVhbCBXZWJXaWRnZXQqIGNyZWF0ZVBvcHVwTWVu
dShib29sIGFjdGl2YXRhYmxlKSB7IHJldHVybiAwOyB9CisKIAogICAgIC8vIENyZWF0ZSBhIHNl
c3Npb24gc3RvcmFnZSBuYW1lc3BhY2Ugb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFdlYlZp
ZXcuCiAgICAgdmlydHVhbCBXZWJTdG9yYWdlTmFtZXNwYWNlKiBjcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZSgpIHsgcmV0dXJuIDA7IH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA1NjAxMikKKysrIFdlYktpdC9jaHJvbWl1bS9z
cmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5NCw3ICs1OTQsNiBA
QCB2b2lkIENocm9tZUNsaWVudEltcGw6Omljb25Gb3JGaWxlcyhjb25zCiAKIHZvaWQgQ2hyb21l
Q2xpZW50SW1wbDo6cG9wdXBPcGVuZWQoUG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBib3VuZHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWN0aXZhdGFibGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFuZGxlRXh0ZXJuYWxseSkK
IHsKICAgICBpZiAoIW1fd2ViVmlldy0+Y2xpZW50KCkpCkBAIC02MDUsMTIgKzYwNCwyMiBAQCB2
b2lkIENocm9tZUNsaWVudEltcGw6OnBvcHVwT3BlbmVkKFBvcHVwCiAgICAgICAgIFdlYlBvcHVw
TWVudUluZm8gcG9wdXBJbmZvOwogICAgICAgICBnZXRQb3B1cE1lbnVJbmZvKHBvcHVwQ29udGFp
bmVyLCAmcG9wdXBJbmZvKTsKICAgICAgICAgd2Vid2lkZ2V0ID0gbV93ZWJWaWV3LT5jbGllbnQo
KS0+Y3JlYXRlUG9wdXBNZW51KHBvcHVwSW5mbyk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHdlYndp
ZGdldCA9IG1fd2ViVmlldy0+Y2xpZW50KCktPmNyZWF0ZVBvcHVwTWVudShhY3RpdmF0YWJsZSk7
Ci0KKyAgICB9IGVsc2UgeworICAgICAgICB3ZWJ3aWRnZXQgPSBtX3dlYlZpZXctPmNsaWVudCgp
LT5jcmVhdGVQb3B1cE1lbnUoKTsKKyAgICAgICAgaWYgKCF3ZWJ3aWRnZXQpIHsKKyAgICAgICAg
ICAgIC8vIFRyeSB0aGUgZGVwcmVjYXRlZCBtZXRob2QuCisgICAgICAgICAgICB3ZWJ3aWRnZXQg
PSBtX3dlYlZpZXctPmNsaWVudCgpLT5jcmVhdGVQb3B1cE1lbnUoZmFsc2UpOworICAgICAgICB9
ICAgIAorICAgIH0KKyAgICBtX3dlYlZpZXctPnBvcHVwT3BlbmVkKHBvcHVwQ29udGFpbmVyKTsK
ICAgICBzdGF0aWNfY2FzdDxXZWJQb3B1cE1lbnVJbXBsKj4od2Vid2lkZ2V0KS0+SW5pdChwb3B1
cENvbnRhaW5lciwgYm91bmRzKTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnRJbXBsOjpwb3B1cENs
b3NlZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpCit7CisgICAgbV93
ZWJWaWV3LT5wb3B1cENsb3NlZChwb3B1cENvbnRhaW5lcik7Cit9CisKIHZvaWQgQ2hyb21lQ2xp
ZW50SW1wbDo6c2V0Q3Vyc29yKGNvbnN0IFdlYkN1cnNvckluZm8mIGN1cnNvcikKIHsKICAgICBp
ZiAobV9pZ25vcmVOZXh0U2V0Q3Vyc29yKSB7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9tZUNsaWVudEltcGwuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA1NjAxMikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsOCArMTM2LDggQEAgcHVi
bGljOgogICAgIC8vIENocm9tZUNsaWVudENocm9taXVtIG1ldGhvZHM6CiAgICAgdmlydHVhbCB2
b2lkIHBvcHVwT3BlbmVkKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBwb3B1cENvbnRhaW5lciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgYm91
bmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFjdGl2YXRhYmxlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhhbmRsZUV4dGVybmFsbHkpOworICAgIHZp
cnR1YWwgdm9pZCBwb3B1cENsb3NlZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250
YWluZXIpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0U3Rh
dGUoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCopOwogCiAgICAgLy8gQ2hyb21lQ2xpZW50
SW1wbDoKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDU2
MDEyKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0OSwxMSArMTQ5LDcgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShEcmFn
T3BlcmF0aQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShEcmFnT3BlcmF0aW9uRGVsZXRl
KTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRHJhZ09wZXJhdGlvbkV2ZXJ5KTsKIAot
Ly8gTm90ZSB0aGF0IGZvY3VzT25TaG93IGlzIGZhbHNlIHNvIHRoYXQgdGhlIHN1Z2dlc3Rpb25z
IHBvcHVwIGlzIHNob3duIG5vdAotLy8gYWN0aXZhdGVkLiAgV2UgbmVlZCB0aGUgcGFnZSB0byBz
dGlsbCBoYXZlIGZvY3VzIHNvIHRoZSB1c2VyIGNhbiBrZWVwIHR5cGluZwotLy8gd2hpbGUgdGhl
IHBvcHVwIGlzIHNob3dpbmcuCiBzdGF0aWMgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyBz
dWdnZXN0aW9uc1BvcHVwU2V0dGluZ3MgPSB7Ci0gICAgZmFsc2UsICAvLyBmb2N1c09uU2hvdwog
ICAgIGZhbHNlLCAgLy8gc2V0VGV4dE9uSW5kZXhDaGFuZ2UKICAgICBmYWxzZSwgIC8vIGFjY2Vw
dE9uQWJhbmRvbgogICAgIHRydWUsICAgLy8gbG9vcFNlbGVjdGlvbk5hdmlnYXRpb24KQEAgLTMy
Nyw2ICszMjMsMTAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VEb3duKGNvbnN0IFdlYk1vdQog
ICAgIGlmICghbWFpbkZyYW1lSW1wbCgpIHx8ICFtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygp
KQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBJZiB0aGVyZSBpcyBhIHNlbGVjdCBwb3B1cCBv
cGVuZWQsIGNsb3NlIGl0IGFzIHRoZSB1c2VyIGlzIGNsaWNraW5nIG9uCisgICAgLy8gdGhlIHBh
Z2UgKG91dHNpZGUgb2YgdGhlIHBvcHVwKS4KKyAgICBoaWRlU2VsZWN0UG9wdXAoKTsKKwogICAg
IG1fbGFzdE1vdXNlRG93blBvaW50ID0gV2ViUG9pbnQoZXZlbnQueCwgZXZlbnQueSk7CiAgICAg
bV9oYXZlTW91c2VDYXB0dXJlID0gdHJ1ZTsKIApAQCAtNDc0LDYgKzQ3NCwxMCBAQCBib29sIFdl
YlZpZXdJbXBsOjprZXlFdmVudChjb25zdCBXZWJLZXliCiAgICAgLy8gZXZlbnQuCiAgICAgbV9z
dXBwcmVzc05leHRLZXlwcmVzc0V2ZW50ID0gZmFsc2U7CiAKKyAgICAvLyBHaXZlIGFueSBzZWxl
Y3QgcG9wdXAgYSBjaGFuY2UgYXQgY29uc3VtaW5nIHRoZSBrZXkgZXZlbnQuCisgICAgaWYgKHNl
bGVjdFBvcHVwSGFuZGxlS2V5RXZlbnQoZXZlbnQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwog
ICAgIC8vIEdpdmUgQXV0b2NvbXBsZXRlIGEgY2hhbmNlIHRvIGNvbnN1bWUgdGhlIGtleSBldmVu
dHMgaXQgaXMgaW50ZXJlc3RlZCBpbi4KICAgICBpZiAoYXV0b2NvbXBsZXRlSGFuZGxlS2V5RXZl
bnQoZXZlbnQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUyMyw2ICs1MjcsMTQgQEAgYm9v
bCBXZWJWaWV3SW1wbDo6a2V5RXZlbnQoY29uc3QgV2ViS2V5YgogICAgIHJldHVybiBrZXlFdmVu
dERlZmF1bHQoZXZlbnQpOwogfQogCitib29sIFdlYlZpZXdJbXBsOjpzZWxlY3RQb3B1cEhhbmRs
ZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQoreworICAgIGlmICghbV9z
ZWxlY3RQb3B1cCkKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gbV9zZWxl
Y3RQb3B1cC0+aGFuZGxlS2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVpbGRlcihldmVu
dCkpOworfQorCiBib29sIFdlYlZpZXdJbXBsOjphdXRvY29tcGxldGVIYW5kbGVLZXlFdmVudChj
b25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICBpZiAoIW1fc3VnZ2VzdGlvbnNQ
b3B1cFNob3dpbmcKQEAgLTc5Myw2ICs4MDUsMTIgQEAgYm9vbCBXZWJWaWV3SW1wbDo6c2Nyb2xs
Vmlld1dpdGhLZXlib2FyZAogICAgIHJldHVybiBwcm9wYWdhdGVTY3JvbGwoc2Nyb2xsRGlyZWN0
aW9uLCBzY3JvbGxHcmFudWxhcml0eSk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmhpZGVTZWxl
Y3RQb3B1cCgpCit7CisgICAgaWYgKG1fc2VsZWN0UG9wdXAuZ2V0KCkpCisgICAgICAgIG1fc2Vs
ZWN0UG9wdXAtPmhpZGVQb3B1cCgpOworfQorCiBib29sIFdlYlZpZXdJbXBsOjpwcm9wYWdhdGVT
Y3JvbGwoU2Nyb2xsRGlyZWN0aW9uIHNjcm9sbERpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTY3JvbGxHcmFudWxhcml0eSBzY3JvbGxHcmFudWxhcml0eSkKIHsK
QEAgLTgxMiw2ICs4MzAsMjIgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cHJvcGFnYXRlU2Nyb2xsKFNj
cm9sbAogICAgIHJldHVybiBzY3JvbGxIYW5kbGVkOwogfQogCit2b2lkICBXZWJWaWV3SW1wbDo6
cG9wdXBPcGVuZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyKQorewor
ICAgIGlmIChwb3B1cENvbnRhaW5lci0+cG9wdXBUeXBlKCkgPT0gV2ViQ29yZTo6UG9wdXBDb250
YWluZXI6OlNlbGVjdCkgeworICAgICAgICBBU1NFUlQoIW1fc2VsZWN0UG9wdXApOworICAgICAg
ICBtX3NlbGVjdFBvcHVwID0gcG9wdXBDb250YWluZXI7CisgICAgfQorfQorCit2b2lkICBXZWJW
aWV3SW1wbDo6cG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFp
bmVyKQoreworICAgIGlmIChwb3B1cENvbnRhaW5lci0+cG9wdXBUeXBlKCkgPT0gV2ViQ29yZTo6
UG9wdXBDb250YWluZXI6OlNlbGVjdCkgeworICAgICAgICBBU1NFUlQobV9zZWxlY3RQb3B1cC5n
ZXQoKSk7CisgICAgICAgIG1fc2VsZWN0UG9wdXAgPSAwOworICAgIH0KK30KKwogRnJhbWUqIFdl
YlZpZXdJbXBsOjpmb2N1c2VkV2ViQ29yZUZyYW1lKCkKIHsKICAgICByZXR1cm4gbV9wYWdlLmdl
dCgpID8gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkgOiAw
OwpAQCAtMTA0Myw2ICsxMDc3LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0Rm9jdXMoYm9vbCBl
bmFibGUpCiAgICAgICAgIG1faW1lQWNjZXB0RXZlbnRzID0gdHJ1ZTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBoaWRlU3VnZ2VzdGlvbnNQb3B1cCgpOworICAgICAgICBoaWRlU2VsZWN0UG9wdXAo
KTsKIAogICAgICAgICAvLyBDbGVhciBmb2N1cyBvbiB0aGUgY3VycmVudGx5IGZvY3VzZWQgZnJh
bWUgaWYgYW55LgogICAgICAgICBpZiAoIW1fcGFnZS5nZXQoKSkKQEAgLTE2NjgsNiArMTcwMyw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5QXV0b0ZpbGxTdWdnZXN0aW8KIAogICAgIGlmICgh
bV9hdXRvRmlsbFBvcHVwLmdldCgpKSB7CiAgICAgICAgIG1fYXV0b0ZpbGxQb3B1cCA9IFBvcHVw
Q29udGFpbmVyOjpjcmVhdGUobV9zdWdnZXN0aW9uc1BvcHVwQ2xpZW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcHVwQ29udGFpbmVyOjpTdWdn
ZXN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN1Z2dlc3Rpb25zUG9wdXBTZXR0aW5ncyk7CiAgICAgfQogCkBAIC0xNzIzLDYgKzE3NTksNyBA
QCB2b2lkIFdlYlZpZXdJbXBsOjphcHBseUF1dG9jb21wbGV0ZVN1Z2dlCiAKICAgICBpZiAoIW1f
YXV0b2NvbXBsZXRlUG9wdXAuZ2V0KCkpIHsKICAgICAgICAgbV9hdXRvY29tcGxldGVQb3B1cCA9
IFBvcHVwQ29udGFpbmVyOjpjcmVhdGUobV9zdWdnZXN0aW9uc1BvcHVwQ2xpZW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3B1cENvbnRh
aW5lcjo6U3VnZ2VzdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnNQb3B1cFNldHRpbmdzKTsKICAgICB9CiAKSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gNTYwMTIpCisrKyBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAs
MTAgQEAgcHVibGljOgogICAgIC8vIHdhcyBzY3JvbGxlZC4KICAgICBib29sIHByb3BhZ2F0ZVNj
cm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5
KTsKIAorICAgIC8vIE5vdGlmaWNhdGlvbiB0aGF0IGEgcG9wdXAgd2FzIG9wZW5lZC9jbG9zZWQu
CisgICAgdm9pZCBwb3B1cE9wZW5lZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250
YWluZXIpOworICAgIHZvaWQgcG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBv
cHVwQ29udGFpbmVyKTsKKwogICAgIC8vIEhBQ0s6IGN1cnJlbnRJbnB1dEV2ZW50KCkgaXMgZm9y
IENocm9tZUNsaWVudEltcGw6OnNob3coKSwgdW50aWwgd2UgY2FuCiAgICAgLy8gZml4IFdlYktp
dCB0byBwYXNzIGVub3VnaCBpbmZvcm1hdGlvbiB1cCBpbnRvIENocm9tZUNsaWVudDo6c2hvdygp
IHNvIHdlCiAgICAgLy8gY2FuIGRlY2lkZSBpZiB0aGUgd2luZG93Lm9wZW4gZXZlbnQgd2FzIGNh
dXNlZCBieSBhIG1pZGRsZS1tb3VzZSBjbGljawpAQCAtMzA4LDYgKzMxMiw5IEBAIHByaXZhdGU6
CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBldmVudCB3YXMgYWN0dWFsbHkgcHJvY2Vzc2Vk
LgogICAgIGJvb2wga2V5RXZlbnREZWZhdWx0KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKIAor
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc2VsZWN0IHBvcHVwIGhhcyBjb25zdW1lZCB0aGUg
ZXZlbnQuCisgICAgYm9vbCBzZWxlY3RQb3B1cEhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJv
YXJkRXZlbnQmKTsKKwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgYXV0b2NvbXBsZSBoYXMg
Y29uc3VtZWQgdGhlIGV2ZW50LgogICAgIGJvb2wgYXV0b2NvbXBsZXRlSGFuZGxlS2V5RXZlbnQo
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogCkBAIC0zMTksNiArMzI2LDkgQEAgcHJpdmF0ZToK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHZpZXcgd2FzIHNjcm9sbGVkLgogICAgIGJvb2wg
c2Nyb2xsVmlld1dpdGhLZXlib2FyZChpbnQga2V5Q29kZSwgaW50IG1vZGlmaWVycyk7CiAKKyAg
ICAvLyBIaWRlcyB0aGUgc2VsZWN0IHBvcHVwIGlmIG9uZSBpcyBvcGVuZWQuCisgICAgdm9pZCBo
aWRlU2VsZWN0UG9wdXAoKTsKKwogICAgIC8vIENvbnZlcnRzIHxwb3N8IGZyb20gd2luZG93IGNv
b3JkaW5hdGVzIHRvIGNvbnRlbnRzIGNvb3JkaW5hdGVzIGFuZCBnZXRzCiAgICAgLy8gdGhlIEhp
dFRlc3RSZXN1bHQgZm9yIGl0LgogICAgIFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQgaGl0VGVzdFJl
c3VsdEZvcldpbmRvd1Bvcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwpAQCAtNDI2LDYgKzQz
Niw5IEBAIHByaXZhdGU6CiAgICAgLy8gQSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IHN1Z2dlc3Rp
b25zIHBvcHVwLiAgV2UgZG8gbm90IG93biB0aGlzIHBvaW50ZXIuCiAgICAgV2ViQ29yZTo6UG9w
dXBDb250YWluZXIqIG1fc3VnZ2VzdGlvbnNQb3B1cDsKIAorICAgIC8vIFRoZSBwb3B1cCBhc3Nv
Y2lhdGVkIHdpdGggYSBzZWxlY3QgZWxlbWVudC4KKyAgICBSZWZQdHI8V2ViQ29yZTo6UG9wdXBD
b250YWluZXI+IG1fc2VsZWN0UG9wdXA7CisKICAgICAvLyBUaGUgQXV0b0ZpbGwgc3VnZ2VzdGlv
bnMgcG9wdXAuCiAgICAgUmVmUHRyPFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyPiBtX2F1dG9GaWxs
UG9wdXA7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51159</attachid>
            <date>2010-03-19 09:15:33 -0700</date>
            <delta_ts>2010-03-22 09:54:56 -0700</delta_ts>
            <desc>Applied changes suggested by Eric</desc>
            <filename>select.patch</filename>
            <type>text/plain</type>
            <size>18383</size>
            <attacher name="Jay Campan">jcampan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU2MDE0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNiBAQAorMjAxMC0wMy0xNSAgSmF5IENhbXBhbiAgPGpjYW1wYW5AZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtpbmcgQ2hyb21pdW0gc2VsZWN0IHBvcHVwcyBub3Qgc3RlYWwgYWN0aXZhdGlvbiBmcm9tIHRo
ZSBicm93c2VyLgorICAgICAgICBTZWxlY3QgcG9wdXBzIGFyZSBub3cgbGlrZSBhdXRvY29tcGxl
dGUgcG9wdXBzLCBzaG93biBpbiBub24tYWN0aXZhdGVkCisgICAgICAgIHdpbmRvd3MuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjA2MgorCisgICAg
ICAgICogcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Oik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjpQb3B1cENvbnRhaW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cENvbnRhaW5lcjo6flBvcHVwQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwQ29udGFpbmVyOjpzaG93UG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250
YWluZXI6OnNob3dFeHRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6
aGlkZVBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2hvdyk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvcHVwQ29udGFpbmVyOjopOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250YWluZXI6
OnBvcHVwVHlwZSk6CisKIDIwMTAtMDMtMTUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNv
cmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oCShyZXZpc2lvbiA1NjAxMikK
KysrIFdlYkNvcmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gSWYgaGFuZGxlRXh0ZXJu
YWwgaXMgdHJ1ZSwgdGhlbiBkcmF3aW5nIGFuZCBpbnB1dCBoYW5kbGluZyBmb3IgdGhlCiAgICAg
Ly8gcG9wdXAgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBleHRlcm5hbCBlbWJlZGRlci4KICAgICB2
aXJ0dWFsIHZvaWQgcG9wdXBPcGVuZWQoUG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyLCBj
b25zdCBJbnRSZWN0JiBib3VuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
Zm9jdXNPblNob3csIGJvb2wgaGFuZGxlRXh0ZXJuYWwpID0gMDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBoYW5kbGVFeHRlcm5hbCkgPSAwOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKKyAgICAvLyBOb3RpZmllcyB0aGUgY2xpZW50IGEgcG9wdXAgd2FzIGNsb3Nl
ZC4KKyAgICB2aXJ0dWFsIHZvaWQgcG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIq
IHBvcHVwQ29udGFpbmVyKSA9IDA7CiAKICAgICAvLyBOb3RpZmllcyBlbWJlZGRlciB0aGF0IHRo
ZSBzdGF0ZSBvZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBoYXMgY2hhbmdlZC4KICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdFN0YXRlKEFjY2Vzc2liaWxpdHlP
YmplY3QqKSA9IDA7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNo
cm9taXVtLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9w
dXBNZW51Q2hyb21pdW0uY3BwCShyZXZpc2lvbiA1NjAxMikKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3
NCw2IEBAIHN0YXRpYyBjb25zdCBUaW1lU3RhbXAga1R5cGVBaGVhZFRpbWVvdXQKIC8vIFRoZSBz
ZXR0aW5ncyB1c2VkIGZvciB0aGUgZHJvcCBkb3duIG1lbnUuCiAvLyBUaGlzIGlzIHRoZSBkZWxl
Z2F0ZSB1c2VkIGlmIG5vbmUgaXMgcHJvdmlkZWQuCiBzdGF0aWMgY29uc3QgUG9wdXBDb250YWlu
ZXJTZXR0aW5ncyBkcm9wRG93blNldHRpbmdzID0gewotICAgIHRydWUsICAgLy8gZm9jdXNPblNo
b3cKICAgICB0cnVlLCAgIC8vIHNldFRleHRPbkluZGV4Q2hhbmdlCiAgICAgdHJ1ZSwgICAvLyBh
Y2NlcHRPbkFiYW5kb24KICAgICBmYWxzZSwgIC8vIGxvb3BTZWxlY3Rpb25OYXZpZ2F0aW9uCkBA
IC0yOTcsMTQgKzI5NiwxNyBAQCBzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50IGNvbnN0cnVjdFJl
bGF0CiAKIC8vIHN0YXRpYwogUGFzc1JlZlB0cjxQb3B1cENvbnRhaW5lcj4gUG9wdXBDb250YWlu
ZXI6OmNyZWF0ZShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9wdXBUeXBlIHBvcHVwVHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUG9wdXBD
b250YWluZXJTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQ
b3B1cENvbnRhaW5lcihjbGllbnQsIHNldHRpbmdzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBQb3B1cENvbnRhaW5lcihjbGllbnQsIHBvcHVwVHlwZSwgc2V0dGluZ3MpKTsKIH0KIAogUG9w
dXBDb250YWluZXI6OlBvcHVwQ29udGFpbmVyKFBvcHVwTWVudUNsaWVudCogY2xpZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcHVwVHlwZSBwb3B1cFR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyYgc2V0
dGluZ3MpCiAgICAgOiBtX2xpc3RCb3goUG9wdXBMaXN0Qm94OjpjcmVhdGUoY2xpZW50LCBzZXR0
aW5ncykpCisgICAgLCBtX3BvcHVwVHlwZShwb3B1cFR5cGUpICAKICAgICAsIG1fc2V0dGluZ3Mo
c2V0dGluZ3MpCiB7CiAgICAgc2V0U2Nyb2xsYmFyTW9kZXMoU2Nyb2xsYmFyQWx3YXlzT2ZmLCBT
Y3JvbGxiYXJBbHdheXNPZmYpOwpAQCAtMzI1LDggKzMyNyw4IEBAIHZvaWQgUG9wdXBDb250YWlu
ZXI6OnNob3dQb3B1cChGcmFtZVZpZXcKICAgICAvLyBXaWRnZXRDbGllbnQgYWJvdXQgaXQuICBJ
dCBzaG91bGQgYXNzaWduIHVzIGEgY2xpZW50LgogICAgIGxheW91dCgpOwogCi0gICAgQ2hyb21l
Q2xpZW50Q2hyb21pdW0qIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0PENocm9tZUNsaWVudENo
cm9taXVtKj4oCi0gICAgICAgIHZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVu
dCgpKTsKKyAgICBtX2ZyYW1lVmlldyA9IHZpZXc7CisgICAgQ2hyb21lQ2xpZW50Q2hyb21pdW0q
IGNocm9tZUNsaWVudCA9IGNocm9tZUNsaWVudENocm9taXVtKCk7CiAgICAgaWYgKGNocm9tZUNs
aWVudCkgewogICAgICAgICAvLyBJZiB0aGUgcG9wdXAgd291bGQgZXh0ZW5kIHBhc3QgdGhlIGJv
dHRvbSBvZiB0aGUgc2NyZWVuLCBvcGVuIHVwd2FyZHMKICAgICAgICAgLy8gaW5zdGVhZC4KQEAg
LTMzNSw3ICszMzcsNyBAQCB2b2lkIFBvcHVwQ29udGFpbmVyOjpzaG93UG9wdXAoRnJhbWVWaWV3
CiAgICAgICAgIGlmICh3aWRnZXRSZWN0LmJvdHRvbSgpID4gc3RhdGljX2Nhc3Q8aW50PihzY3Jl
ZW4uYm90dG9tKCkpKQogICAgICAgICAgICAgd2lkZ2V0UmVjdC5tb3ZlKDAsIC0od2lkZ2V0UmVj
dC5oZWlnaHQoKSArIHNlbGVjdEhlaWdodCkpOwogCi0gICAgICAgIGNocm9tZUNsaWVudC0+cG9w
dXBPcGVuZWQodGhpcywgd2lkZ2V0UmVjdCwgbV9zZXR0aW5ncy5mb2N1c09uU2hvdywgZmFsc2Up
OworICAgICAgICBjaHJvbWVDbGllbnQtPnBvcHVwT3BlbmVkKHRoaXMsIHdpZGdldFJlY3QsIGZh
bHNlKTsKICAgICB9CiAKICAgICBpZiAoIW1fbGlzdEJveC0+cGFyZW50KCkpCkBAIC0zNjgsOSAr
MzcwLDggQEAgdm9pZCBQb3B1cENvbnRhaW5lcjo6c2hvd0V4dGVybmFsKGNvbnN0IAogICAgIElu
dFJlY3QgcG9wdXBSZWN0KGxvY2F0aW9uLCByZWN0LnNpemUoKSk7CiAKICAgICAvLyBHZXQgdGhl
IENocm9tZUNsaWVudCBhbmQgcGFzcyBpdCB0aGUgcG9wdXAgbWVudSdzIGxpc3Rib3ggZGF0YS4K
LSAgICBDaHJvbWVDbGllbnRDaHJvbWl1bSogY2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xp
ZW50Q2hyb21pdW0qPigKLSAgICAgICAgIHYtPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmNs
aWVudCgpKTsKLSAgICBjbGllbnQtPnBvcHVwT3BlbmVkKHRoaXMsIHBvcHVwUmVjdCwgdHJ1ZSwg
dHJ1ZSk7CisgICAgbV9mcmFtZVZpZXcgPSB2OworICAgIGNocm9tZUNsaWVudENocm9taXVtKCkt
PnBvcHVwT3BlbmVkKHRoaXMsIHBvcHVwUmVjdCwgdHJ1ZSk7CiAKICAgICAvLyBUaGUgcG9wdXAg
c2VuZHMgaXRzICJjbG9zZWQiIG5vdGlmaWNhdGlvbiB0aHJvdWdoIGl0cyBwYXJlbnQuIFNldCB0
aGUKICAgICAvLyBwYXJlbnQsIGV2ZW4gdGhvdWdoIGV4dGVybmFsIHBvcHVwcyBoYXZlIG5vIHJl
YWwgb24tc2NyZWVuIHdpZGdldCBidXQgYQpAQCAtMzgyLDYgKzM4Myw3IEBAIHZvaWQgUG9wdXBD
b250YWluZXI6OnNob3dFeHRlcm5hbChjb25zdCAKIHZvaWQgUG9wdXBDb250YWluZXI6OmhpZGVQ
b3B1cCgpCiB7CiAgICAgbGlzdEJveCgpLT5oaWRlUG9wdXAoKTsKKyAgICBjaHJvbWVDbGllbnRD
aHJvbWl1bSgpLT5wb3B1cENsb3NlZCh0aGlzKTsKIH0KIAogdm9pZCBQb3B1cENvbnRhaW5lcjo6
bGF5b3V0KCkKQEAgLTQ3MCw2ICs0NzIsMTEgQEAgYm9vbCBQb3B1cENvbnRhaW5lcjo6aXNJbnRl
cmVzdGVkSW5FdmVudAogICAgIHJldHVybiBtX2xpc3RCb3gtPmlzSW50ZXJlc3RlZEluRXZlbnRG
b3JLZXkoa2V5Q29kZSk7CiB9CiAKK0Nocm9tZUNsaWVudENocm9taXVtKiBQb3B1cENvbnRhaW5l
cjo6Y2hyb21lQ2xpZW50Q2hyb21pdW0oKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDaHJv
bWVDbGllbnRDaHJvbWl1bSo+KG1fZnJhbWVWaWV3LT5mcmFtZSgpLT5wYWdlKCktPmNocm9tZSgp
LT5jbGllbnQoKSk7Cit9CisKIHZvaWQgUG9wdXBDb250YWluZXI6OnNob3coY29uc3QgSW50UmVj
dCYgciwgRnJhbWVWaWV3KiB2LCBpbnQgaW5kZXgpCiB7CiAgICAgLy8gVGhlIHJlY3QgaXMgdGhl
IHNpemUgb2YgdGhlIHNlbGVjdCBib3guIEl0J3MgdXN1YWxseSBsYXJnZXIgdGhhbiB3ZSBuZWVk
LgpAQCAtMTIzMSw3ICsxMjM4LDcgQEAgUG9wdXBNZW51Ojp+UG9wdXBNZW51KCkKIHZvaWQgUG9w
dXBNZW51OjpzaG93KGNvbnN0IEludFJlY3QmIHIsIEZyYW1lVmlldyogdiwgaW50IGluZGV4KQog
ewogICAgIGlmICghcC5wb3B1cCkKLSAgICAgICAgcC5wb3B1cCA9IFBvcHVwQ29udGFpbmVyOjpj
cmVhdGUoY2xpZW50KCksIGRyb3BEb3duU2V0dGluZ3MpOworICAgICAgICBwLnBvcHVwID0gUG9w
dXBDb250YWluZXI6OmNyZWF0ZShjbGllbnQoKSwgUG9wdXBDb250YWluZXI6OlNlbGVjdCwgZHJv
cERvd25TZXR0aW5ncyk7CiAjaWYgT1MoREFSV0lOKQogICAgIHAucG9wdXAtPnNob3dFeHRlcm5h
bChyLCB2LCBpbmRleCk7CiAjZWxzZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cE1lbnVDaHJvbWl1bS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oCShyZXZpc2lvbiA1NjAxMikKKysrIFdlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzks
NiArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFzcyBDaHJvbWVDbGll
bnRDaHJvbWl1bTsKICAgICBjbGFzcyBGcmFtZVZpZXc7CiAgICAgY2xhc3MgUG9wdXBMaXN0Qm94
OwogCkBAIC0xMTUsNyArMTE2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
IFBvcHVwQ29udGFpbmVyIDogcHVibGljIEZyYW1lbGVzc1Njcm9sbFZpZXcgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UG9wdXBDb250YWluZXI+IGNyZWF0ZShQb3B1
cE1lbnVDbGllbnQqLAorICAgICAgICBlbnVtIFBvcHVwVHlwZSB7CisgICAgICAgICAgICBTZWxl
Y3QsIC8vIEhUTUwgc2VsZWN0IHBvcHVwLgorICAgICAgICAgICAgU3VnZ2VzdGlvbiwgLy8gQXV0
b2NvbXBsZXRlL2F1dG9maWxsIHBvcHVwLgorICAgICAgICB9OworCisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFBvcHVwQ29udGFpbmVyPiBjcmVhdGUoUG9wdXBNZW51Q2xpZW50KiwgUG9wdXBU
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MmKTsKIAogICAgICAgICAvLyBXaGV0aGVyIGEga2V5
IGV2ZW50IHNob3VsZCBiZSBzZW50IHRvIHRoaXMgcG9wdXAuCkBAIC0xNjksMTggKzE3NSwyNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFRoZSBzaXplIG9mIHRoZSBmb250IGJl
aW5nIHVzZWQuCiAgICAgICAgIGludCBtZW51SXRlbUZvbnRTaXplKCkgY29uc3Q7CiAKKyAgICAg
ICAgUG9wdXBUeXBlIHBvcHVwVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9wdXBUeXBlOyB9CisK
ICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFBvcHVw
Q29udGFpbmVyPjsKIAotICAgICAgICBQb3B1cENvbnRhaW5lcihQb3B1cE1lbnVDbGllbnQqLCBj
b25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzJik7CisgICAgICAgIFBvcHVwQ29udGFpbmVyKFBv
cHVwTWVudUNsaWVudCosIFBvcHVwVHlwZSBwb3B1cFR5cGUsIGNvbnN0IFBvcHVwQ29udGFpbmVy
U2V0dGluZ3MmKTsKICAgICAgICAgflBvcHVwQ29udGFpbmVyKCk7CiAKICAgICAgICAgLy8gUGFp
bnQgdGhlIGJvcmRlci4KICAgICAgICAgdm9pZCBwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBJbnRSZWN0Jik7CiAKKyAgICAgICAgLy8gQ29udmVuaWVuY2UgbWV0aG9kIHRoYXQg
cmV0dXJucyB0aGUgQ2hyb21lQ2xpZW50IG9mIHRoZSBmcmFtZSB2aWV3IHRoaXMKKyAgICAgICAg
Ly8gcG9wdXAgaXMgYXNzb2NpYXRlZCB3aXRoLgorICAgICAgICBDaHJvbWVDbGllbnRDaHJvbWl1
bSogY2hyb21lQ2xpZW50Q2hyb21pdW0oKTsKKwogICAgICAgICBSZWZQdHI8UG9wdXBMaXN0Qm94
PiBtX2xpc3RCb3g7CisgICAgICAgIFJlZlB0cjxGcmFtZVZpZXc+IG1fZnJhbWVWaWV3OwogCiAg
ICAgICAgIFBvcHVwQ29udGFpbmVyU2V0dGluZ3MgbV9zZXR0aW5nczsKKyAgICAgICAgUG9wdXBU
eXBlIG1fcG9wdXBUeXBlOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1NjAxNCkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0wMy0xNSAgSmF5IENhbXBh
biAgPGpjYW1wYW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtpbmcgQ2hyb21pdW0gc2VsZWN0IHBvcHVwcyBub3Qgc3RlYWwg
YWN0aXZhdGlvbiBmcm9tIHRoZSBicm93c2VyLgorICAgICAgICBTZWxlY3QgcG9wdXBzIGFyZSBu
b3cgbGlrZSBhdXRvY29tcGxldGUgcG9wdXBzLCBzaG93biBpbiBub24tYWN0aXZhdGVkCisgICAg
ICAgIHdpbmRvd3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNjA2MgorCisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0NsaWVudDo6Y3JlYXRlUG9wdXBNZW51KToKKyAgICAgICAgKiBzcmMv
Q2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6
OnBvcHVwT3BlbmVkKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6cG9wdXBD
bG9zZWQpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisgICAgICAgICogc3Jj
L1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6KToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6Om1vdXNlRG93bik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpr
ZXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZWxlY3RQb3B1cEhhbmRs
ZUtleUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhpZGVTZWxlY3RQb3B1
cCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwb3B1cE9wZW5lZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwb3B1cENsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpzZXRGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjphcHBs
eUF1dG9GaWxsU3VnZ2VzdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YXBw
bHlBdXRvY29tcGxldGVTdWdnZXN0aW9ucyk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6
CisKIDIwMTAtMDMtMTUgIE1hcmN1cyBCdWxhY2ggIDxidWxhY2hAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVmlld0NsaWVudC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJWaWV3Q2xpZW50LmgJKHJldmlzaW9uIDU2MDEyKQorKysgV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDExIEBA
IHB1YmxpYzoKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBXZWJQb3B1cE1lbnUuICBJbiB0aGUgc2Vj
b25kIGZvcm0sIHRoZSBjbGllbnQgaXMKICAgICAvLyByZXNwb25zaWJsZSBmb3IgcmVuZGVyaW5n
IHRoZSBjb250ZW50cyBvZiB0aGUgcG9wdXAgbWVudS4KLSAgICB2aXJ0dWFsIFdlYldpZGdldCog
Y3JlYXRlUG9wdXBNZW51KGJvb2wgYWN0aXZhdGFibGUpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0
dWFsIFdlYldpZGdldCogY3JlYXRlUG9wdXBNZW51KCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1
YWwgV2ViV2lkZ2V0KiBjcmVhdGVQb3B1cE1lbnUoY29uc3QgV2ViUG9wdXBNZW51SW5mbyYpIHsg
cmV0dXJuIDA7IH0KKyAgICAvLyBEZXByZWNhdGVkIG1ldGhvZC4KKyAgICB2aXJ0dWFsIFdlYldp
ZGdldCogY3JlYXRlUG9wdXBNZW51KGJvb2wgYWN0aXZhdGFibGUpIHsgcmV0dXJuIDA7IH0KKwog
CiAgICAgLy8gQ3JlYXRlIGEgc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZSBvYmplY3QgYXNzb2Np
YXRlZCB3aXRoIHRoaXMgV2ViVmlldy4KICAgICB2aXJ0dWFsIFdlYlN0b3JhZ2VOYW1lc3BhY2Uq
IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKCkgeyByZXR1cm4gMDsgfQpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDU2MDEyKQor
KysgV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTk0LDcgKzU5NCw2IEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6aWNvbkZvckZpbGVz
KGNvbnMKIAogdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpwb3B1cE9wZW5lZChQb3B1cENvbnRhaW5l
ciogcG9wdXBDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEludFJlY3QmIGJvdW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBhY3RpdmF0YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBoYW5kbGVFeHRlcm5hbGx5KQogewogICAgIGlmICghbV93ZWJWaWV3LT5jbGllbnQoKSkKQEAg
LTYwNSwxMiArNjA0LDIyIEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cG9wdXBPcGVuZWQoUG9w
dXAKICAgICAgICAgV2ViUG9wdXBNZW51SW5mbyBwb3B1cEluZm87CiAgICAgICAgIGdldFBvcHVw
TWVudUluZm8ocG9wdXBDb250YWluZXIsICZwb3B1cEluZm8pOwogICAgICAgICB3ZWJ3aWRnZXQg
PSBtX3dlYlZpZXctPmNsaWVudCgpLT5jcmVhdGVQb3B1cE1lbnUocG9wdXBJbmZvKTsKLSAgICB9
IGVsc2UKLSAgICAgICAgd2Vid2lkZ2V0ID0gbV93ZWJWaWV3LT5jbGllbnQoKS0+Y3JlYXRlUG9w
dXBNZW51KGFjdGl2YXRhYmxlKTsKLQorICAgIH0gZWxzZSB7CisgICAgICAgIHdlYndpZGdldCA9
IG1fd2ViVmlldy0+Y2xpZW50KCktPmNyZWF0ZVBvcHVwTWVudSgpOworICAgICAgICBpZiAoIXdl
YndpZGdldCkgeworICAgICAgICAgICAgLy8gVHJ5IHRoZSBkZXByZWNhdGVkIG1ldGhvZC4KKyAg
ICAgICAgICAgIHdlYndpZGdldCA9IG1fd2ViVmlldy0+Y2xpZW50KCktPmNyZWF0ZVBvcHVwTWVu
dShmYWxzZSk7CisgICAgICAgIH0gICAgCisgICAgfQorICAgIG1fd2ViVmlldy0+cG9wdXBPcGVu
ZWQocG9wdXBDb250YWluZXIpOwogICAgIHN0YXRpY19jYXN0PFdlYlBvcHVwTWVudUltcGwqPih3
ZWJ3aWRnZXQpLT5Jbml0KHBvcHVwQ29udGFpbmVyLCBib3VuZHMpOwogfQogCit2b2lkIENocm9t
ZUNsaWVudEltcGw6OnBvcHVwQ2xvc2VkKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBwb3B1cENv
bnRhaW5lcikKK3sKKyAgICBtX3dlYlZpZXctPnBvcHVwQ2xvc2VkKHBvcHVwQ29udGFpbmVyKTsK
K30KKwogdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpzZXRDdXJzb3IoY29uc3QgV2ViQ3Vyc29ySW5m
byYgY3Vyc29yKQogewogICAgIGlmIChtX2lnbm9yZU5leHRTZXRDdXJzb3IpIHsKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHJldmlzaW9uIDU2MDEyKQorKysg
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzNiw4ICsxMzYsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2hyb21lQ2xpZW50Q2hyb21pdW0gbWV0
aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgcG9wdXBPcGVuZWQoV2ViQ29yZTo6UG9wdXBDb250YWlu
ZXIqIHBvcHVwQ29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBib3VuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgYWN0aXZhdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFuZGxl
RXh0ZXJuYWxseSk7CisgICAgdmlydHVhbCB2b2lkIHBvcHVwQ2xvc2VkKFdlYkNvcmU6OlBvcHVw
Q29udGFpbmVyKiBwb3B1cENvbnRhaW5lcik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUFj
Y2Vzc2liaWxpdHlPYmplY3RTdGF0ZShXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAK
ICAgICAvLyBDaHJvbWVDbGllbnRJbXBsOgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAkocmV2aXNpb24gNTYwMTIpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDExICsxNDksNyBAQCBDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKERyYWdPcGVyYXRpCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KERyYWdPcGVyYXRpb25EZWxldGUpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShEcmFn
T3BlcmF0aW9uRXZlcnkpOwogCi0vLyBOb3RlIHRoYXQgZm9jdXNPblNob3cgaXMgZmFsc2Ugc28g
dGhhdCB0aGUgc3VnZ2VzdGlvbnMgcG9wdXAgaXMgc2hvd24gbm90Ci0vLyBhY3RpdmF0ZWQuICBX
ZSBuZWVkIHRoZSBwYWdlIHRvIHN0aWxsIGhhdmUgZm9jdXMgc28gdGhlIHVzZXIgY2FuIGtlZXAg
dHlwaW5nCi0vLyB3aGlsZSB0aGUgcG9wdXAgaXMgc2hvd2luZy4KIHN0YXRpYyBjb25zdCBQb3B1
cENvbnRhaW5lclNldHRpbmdzIHN1Z2dlc3Rpb25zUG9wdXBTZXR0aW5ncyA9IHsKLSAgICBmYWxz
ZSwgIC8vIGZvY3VzT25TaG93CiAgICAgZmFsc2UsICAvLyBzZXRUZXh0T25JbmRleENoYW5nZQog
ICAgIGZhbHNlLCAgLy8gYWNjZXB0T25BYmFuZG9uCiAgICAgdHJ1ZSwgICAvLyBsb29wU2VsZWN0
aW9uTmF2aWdhdGlvbgpAQCAtMzI3LDYgKzMyMywxMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjptb3Vz
ZURvd24oY29uc3QgV2ViTW91CiAgICAgaWYgKCFtYWluRnJhbWVJbXBsKCkgfHwgIW1haW5GcmFt
ZUltcGwoKS0+ZnJhbWVWaWV3KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIElmIHRoZXJl
IGlzIGEgc2VsZWN0IHBvcHVwIG9wZW5lZCwgY2xvc2UgaXQgYXMgdGhlIHVzZXIgaXMgY2xpY2tp
bmcgb24KKyAgICAvLyB0aGUgcGFnZSAob3V0c2lkZSBvZiB0aGUgcG9wdXApLgorICAgIGhpZGVT
ZWxlY3RQb3B1cCgpOworCiAgICAgbV9sYXN0TW91c2VEb3duUG9pbnQgPSBXZWJQb2ludChldmVu
dC54LCBldmVudC55KTsKICAgICBtX2hhdmVNb3VzZUNhcHR1cmUgPSB0cnVlOwogCkBAIC00NzQs
NiArNDc0LDEwIEBAIGJvb2wgV2ViVmlld0ltcGw6OmtleUV2ZW50KGNvbnN0IFdlYktleWIKICAg
ICAvLyBldmVudC4KICAgICBtX3N1cHByZXNzTmV4dEtleXByZXNzRXZlbnQgPSBmYWxzZTsKIAor
ICAgIC8vIEdpdmUgYW55IHNlbGVjdCBwb3B1cCBhIGNoYW5jZSBhdCBjb25zdW1pbmcgdGhlIGtl
eSBldmVudC4KKyAgICBpZiAoc2VsZWN0UG9wdXBIYW5kbGVLZXlFdmVudChldmVudCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCiAgICAgLy8gR2l2ZSBBdXRvY29tcGxldGUgYSBjaGFuY2UgdG8g
Y29uc3VtZSB0aGUga2V5IGV2ZW50cyBpdCBpcyBpbnRlcmVzdGVkIGluLgogICAgIGlmIChhdXRv
Y29tcGxldGVIYW5kbGVLZXlFdmVudChldmVudCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
NTIzLDYgKzUyNywxNCBAQCBib29sIFdlYlZpZXdJbXBsOjprZXlFdmVudChjb25zdCBXZWJLZXli
CiAgICAgcmV0dXJuIGtleUV2ZW50RGVmYXVsdChldmVudCk7CiB9CiAKK2Jvb2wgV2ViVmlld0lt
cGw6OnNlbGVjdFBvcHVwSGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZl
bnQpCit7CisgICAgaWYgKCFtX3NlbGVjdFBvcHVwKQorICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIHJldHVybiBtX3NlbGVjdFBvcHVwLT5oYW5kbGVLZXlFdmVudChQbGF0Zm9ybUtleWJv
YXJkRXZlbnRCdWlsZGVyKGV2ZW50KSk7Cit9CisKIGJvb2wgV2ViVmlld0ltcGw6OmF1dG9jb21w
bGV0ZUhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAg
IGlmICghbV9zdWdnZXN0aW9uc1BvcHVwU2hvd2luZwpAQCAtNzkzLDYgKzgwNSwxMiBAQCBib29s
IFdlYlZpZXdJbXBsOjpzY3JvbGxWaWV3V2l0aEtleWJvYXJkCiAgICAgcmV0dXJuIHByb3BhZ2F0
ZVNjcm9sbChzY3JvbGxEaXJlY3Rpb24sIHNjcm9sbEdyYW51bGFyaXR5KTsKIH0KIAordm9pZCBX
ZWJWaWV3SW1wbDo6aGlkZVNlbGVjdFBvcHVwKCkKK3sKKyAgICBpZiAobV9zZWxlY3RQb3B1cC5n
ZXQoKSkKKyAgICAgICAgbV9zZWxlY3RQb3B1cC0+aGlkZVBvcHVwKCk7Cit9CisKIGJvb2wgV2Vi
Vmlld0ltcGw6OnByb3BhZ2F0ZVNjcm9sbChTY3JvbGxEaXJlY3Rpb24gc2Nyb2xsRGlyZWN0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjcm9sbEdyYW51bGFyaXR5IHNj
cm9sbEdyYW51bGFyaXR5KQogewpAQCAtODEyLDYgKzgzMCwyMiBAQCBib29sIFdlYlZpZXdJbXBs
Ojpwcm9wYWdhdGVTY3JvbGwoU2Nyb2xsCiAgICAgcmV0dXJuIHNjcm9sbEhhbmRsZWQ7CiB9CiAK
K3ZvaWQgIFdlYlZpZXdJbXBsOjpwb3B1cE9wZW5lZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciog
cG9wdXBDb250YWluZXIpCit7CisgICAgaWYgKHBvcHVwQ29udGFpbmVyLT5wb3B1cFR5cGUoKSA9
PSBXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6U2VsZWN0KSB7CisgICAgICAgIEFTU0VSVCghbV9z
ZWxlY3RQb3B1cCk7CisgICAgICAgIG1fc2VsZWN0UG9wdXAgPSBwb3B1cENvbnRhaW5lcjsKKyAg
ICB9Cit9CisKK3ZvaWQgIFdlYlZpZXdJbXBsOjpwb3B1cENsb3NlZChXZWJDb3JlOjpQb3B1cENv
bnRhaW5lciogcG9wdXBDb250YWluZXIpCit7CisgICAgaWYgKHBvcHVwQ29udGFpbmVyLT5wb3B1
cFR5cGUoKSA9PSBXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6U2VsZWN0KSB7CisgICAgICAgIEFT
U0VSVChtX3NlbGVjdFBvcHVwLmdldCgpKTsKKyAgICAgICAgbV9zZWxlY3RQb3B1cCA9IDA7Cisg
ICAgfQorfQorCiBGcmFtZSogV2ViVmlld0ltcGw6OmZvY3VzZWRXZWJDb3JlRnJhbWUoKQogewog
ICAgIHJldHVybiBtX3BhZ2UuZ2V0KCkgPyBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKSA6IDA7CkBAIC0xMDQzLDYgKzEwNzcsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpzZXRGb2N1cyhib29sIGVuYWJsZSkKICAgICAgICAgbV9pbWVBY2NlcHRFdmVudHMgPSB0
cnVlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGhpZGVTdWdnZXN0aW9uc1BvcHVwKCk7CisgICAg
ICAgIGhpZGVTZWxlY3RQb3B1cCgpOwogCiAgICAgICAgIC8vIENsZWFyIGZvY3VzIG9uIHRoZSBj
dXJyZW50bHkgZm9jdXNlZCBmcmFtZSBpZiBhbnkuCiAgICAgICAgIGlmICghbV9wYWdlLmdldCgp
KQpAQCAtMTY2OCw2ICsxNzAzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6YXBwbHlBdXRvRmlsbFN1
Z2dlc3RpbwogCiAgICAgaWYgKCFtX2F1dG9GaWxsUG9wdXAuZ2V0KCkpIHsKICAgICAgICAgbV9h
dXRvRmlsbFBvcHVwID0gUG9wdXBDb250YWluZXI6OmNyZWF0ZShtX3N1Z2dlc3Rpb25zUG9wdXBD
bGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UG9wdXBDb250YWluZXI6OlN1Z2dlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnNQb3B1cFNldHRpbmdzKTsKICAgICB9CiAK
QEAgLTE3MjMsNiArMTc1OSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5QXV0b2NvbXBsZXRl
U3VnZ2UKIAogICAgIGlmICghbV9hdXRvY29tcGxldGVQb3B1cC5nZXQoKSkgewogICAgICAgICBt
X2F1dG9jb21wbGV0ZVBvcHVwID0gUG9wdXBDb250YWluZXI6OmNyZWF0ZShtX3N1Z2dlc3Rpb25z
UG9wdXBDbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBvcHVwQ29udGFpbmVyOjpTdWdnZXN0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9uc1BvcHVwU2V0dGlu
Z3MpOwogICAgIH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCShyZXZpc2lv
biA1NjAxMikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkod29ya2luZyBj
b3B5KQpAQCAtMjkwLDYgKzI5MCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gd2FzIHNjcm9sbGVkLgog
ICAgIGJvb2wgcHJvcGFnYXRlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29y
ZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwogCisgICAgLy8gTm90aWZpY2F0aW9uIHRoYXQgYSBwb3B1
cCB3YXMgb3BlbmVkL2Nsb3NlZC4KKyAgICB2b2lkIHBvcHVwT3BlbmVkKFdlYkNvcmU6OlBvcHVw
Q29udGFpbmVyKiBwb3B1cENvbnRhaW5lcik7CisgICAgdm9pZCBwb3B1cENsb3NlZChXZWJDb3Jl
OjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpOworCiAgICAgLy8gSEFDSzogY3VycmVu
dElucHV0RXZlbnQoKSBpcyBmb3IgQ2hyb21lQ2xpZW50SW1wbDo6c2hvdygpLCB1bnRpbCB3ZSBj
YW4KICAgICAvLyBmaXggV2ViS2l0IHRvIHBhc3MgZW5vdWdoIGluZm9ybWF0aW9uIHVwIGludG8g
Q2hyb21lQ2xpZW50OjpzaG93KCkgc28gd2UKICAgICAvLyBjYW4gZGVjaWRlIGlmIHRoZSB3aW5k
b3cub3BlbiBldmVudCB3YXMgY2F1c2VkIGJ5IGEgbWlkZGxlLW1vdXNlIGNsaWNrCkBAIC0zMDgs
NiArMzEyLDkgQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IHdh
cyBhY3R1YWxseSBwcm9jZXNzZWQuCiAgICAgYm9vbCBrZXlFdmVudERlZmF1bHQoY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYpOwogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzZWxlY3QgcG9w
dXAgaGFzIGNvbnN1bWVkIHRoZSBldmVudC4KKyAgICBib29sIHNlbGVjdFBvcHVwSGFuZGxlS2V5
RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOworCiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBhdXRvY29tcGxlIGhhcyBjb25zdW1lZCB0aGUgZXZlbnQuCiAgICAgYm9vbCBhdXRvY29t
cGxldGVIYW5kbGVLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAKQEAgLTMxOSw2
ICszMjYsOSBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgdmlldyB3YXMg
c2Nyb2xsZWQuCiAgICAgYm9vbCBzY3JvbGxWaWV3V2l0aEtleWJvYXJkKGludCBrZXlDb2RlLCBp
bnQgbW9kaWZpZXJzKTsKIAorICAgIC8vIEhpZGVzIHRoZSBzZWxlY3QgcG9wdXAgaWYgb25lIGlz
IG9wZW5lZC4KKyAgICB2b2lkIGhpZGVTZWxlY3RQb3B1cCgpOworCiAgICAgLy8gQ29udmVydHMg
fHBvc3wgZnJvbSB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gY29udGVudHMgY29vcmRpbmF0ZXMgYW5k
IGdldHMKICAgICAvLyB0aGUgSGl0VGVzdFJlc3VsdCBmb3IgaXQuCiAgICAgV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0Rm9yV2luZG93UG9zKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50Jik7CkBAIC00MjYsNiArNDM2LDkgQEAgcHJpdmF0ZToKICAgICAvLyBBIHBvaW50ZXIgdG8g
dGhlIGN1cnJlbnQgc3VnZ2VzdGlvbnMgcG9wdXAuICBXZSBkbyBub3Qgb3duIHRoaXMgcG9pbnRl
ci4KICAgICBXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogbV9zdWdnZXN0aW9uc1BvcHVwOwogCisg
ICAgLy8gVGhlIHBvcHVwIGFzc29jaWF0ZWQgd2l0aCBhIHNlbGVjdCBlbGVtZW50LgorICAgIFJl
ZlB0cjxXZWJDb3JlOjpQb3B1cENvbnRhaW5lcj4gbV9zZWxlY3RQb3B1cDsKKwogICAgIC8vIFRo
ZSBBdXRvRmlsbCBzdWdnZXN0aW9ucyBwb3B1cC4KICAgICBSZWZQdHI8V2ViQ29yZTo6UG9wdXBD
b250YWluZXI+IG1fYXV0b0ZpbGxQb3B1cDsKIAo=
</data>
<flag name="review"
          id="34376"
          type_id="1"
          status="-"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="34488"
          type_id="3"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51297</attachid>
            <date>2010-03-22 09:54:56 -0700</date>
            <delta_ts>2010-03-22 10:00:53 -0700</delta_ts>
            <desc>Fixing more style issues</desc>
            <filename>select.patch</filename>
            <type>text/plain</type>
            <size>28347</size>
            <attacher name="Jay Campan">jcampan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU2MDE0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNiBAQAorMjAxMC0wMy0xNSAgSmF5IENhbXBhbiAgPGpjYW1wYW5AZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtpbmcgQ2hyb21pdW0gc2VsZWN0IHBvcHVwcyBub3Qgc3RlYWwgYWN0aXZhdGlvbiBmcm9tIHRo
ZSBicm93c2VyLgorICAgICAgICBTZWxlY3QgcG9wdXBzIGFyZSBub3cgbGlrZSBhdXRvY29tcGxl
dGUgcG9wdXBzLCBzaG93biBpbiBub24tYWN0aXZhdGVkCisgICAgICAgIHdpbmRvd3MuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjA2MgorCisgICAg
ICAgICogcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Oik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjpQb3B1cENvbnRhaW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cENvbnRhaW5lcjo6flBvcHVwQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwQ29udGFpbmVyOjpzaG93UG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250
YWluZXI6OnNob3dFeHRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6
aGlkZVBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2hvdyk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvcHVwQ29udGFpbmVyOjopOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250YWluZXI6
OnBvcHVwVHlwZSk6CisKIDIwMTAtMDMtMTUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNv
cmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oCShyZXZpc2lvbiA1NjAxMikK
KysrIFdlYkNvcmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gSWYgaGFuZGxlRXh0ZXJu
YWwgaXMgdHJ1ZSwgdGhlbiBkcmF3aW5nIGFuZCBpbnB1dCBoYW5kbGluZyBmb3IgdGhlCiAgICAg
Ly8gcG9wdXAgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBleHRlcm5hbCBlbWJlZGRlci4KICAgICB2
aXJ0dWFsIHZvaWQgcG9wdXBPcGVuZWQoUG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyLCBj
b25zdCBJbnRSZWN0JiBib3VuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
Zm9jdXNPblNob3csIGJvb2wgaGFuZGxlRXh0ZXJuYWwpID0gMDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBoYW5kbGVFeHRlcm5hbCkgPSAwOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKKyAgICAvLyBOb3RpZmllcyB0aGUgY2xpZW50IGEgcG9wdXAgd2FzIGNsb3Nl
ZC4KKyAgICB2aXJ0dWFsIHZvaWQgcG9wdXBDbG9zZWQoUG9wdXBDb250YWluZXIqIHBvcHVwQ29u
dGFpbmVyKSA9IDA7CiAKICAgICAvLyBOb3RpZmllcyBlbWJlZGRlciB0aGF0IHRoZSBzdGF0ZSBv
ZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBoYXMgY2hhbmdlZC4KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdFN0YXRlKEFjY2Vzc2liaWxpdHlPYmplY3QqKSA9
IDA7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNw
cA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hy
b21pdW0uY3BwCShyZXZpc2lvbiA1NjAxMikKKysrIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBNZW51Q2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw2IEBAIHN0
YXRpYyBjb25zdCBUaW1lU3RhbXAga1R5cGVBaGVhZFRpbWVvdXQKIC8vIFRoZSBzZXR0aW5ncyB1
c2VkIGZvciB0aGUgZHJvcCBkb3duIG1lbnUuCiAvLyBUaGlzIGlzIHRoZSBkZWxlZ2F0ZSB1c2Vk
IGlmIG5vbmUgaXMgcHJvdmlkZWQuCiBzdGF0aWMgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5n
cyBkcm9wRG93blNldHRpbmdzID0gewotICAgIHRydWUsICAgLy8gZm9jdXNPblNob3cKICAgICB0
cnVlLCAgIC8vIHNldFRleHRPbkluZGV4Q2hhbmdlCiAgICAgdHJ1ZSwgICAvLyBhY2NlcHRPbkFi
YW5kb24KICAgICBmYWxzZSwgIC8vIGxvb3BTZWxlY3Rpb25OYXZpZ2F0aW9uCkBAIC0yOTcsMTQg
KzI5NiwxNyBAQCBzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50IGNvbnN0cnVjdFJlbGF0CiAKIC8v
IHN0YXRpYwogUGFzc1JlZlB0cjxQb3B1cENvbnRhaW5lcj4gUG9wdXBDb250YWluZXI6OmNyZWF0
ZShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUG9wdXBUeXBlIHBvcHVwVHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUG9wdXBDb250YWluZXJT
ZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1cENvbnRh
aW5lcihjbGllbnQsIHNldHRpbmdzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1cENv
bnRhaW5lcihjbGllbnQsIHBvcHVwVHlwZSwgc2V0dGluZ3MpKTsKIH0KIAogUG9wdXBDb250YWlu
ZXI6OlBvcHVwQ29udGFpbmVyKFBvcHVwTWVudUNsaWVudCogY2xpZW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBvcHVwVHlwZSBwb3B1cFR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyYgc2V0dGluZ3MpCiAg
ICAgOiBtX2xpc3RCb3goUG9wdXBMaXN0Qm94OjpjcmVhdGUoY2xpZW50LCBzZXR0aW5ncykpCisg
ICAgLCBtX3BvcHVwVHlwZShwb3B1cFR5cGUpICAKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3Mp
CiB7CiAgICAgc2V0U2Nyb2xsYmFyTW9kZXMoU2Nyb2xsYmFyQWx3YXlzT2ZmLCBTY3JvbGxiYXJB
bHdheXNPZmYpOwpAQCAtMzI1LDggKzMyNyw4IEBAIHZvaWQgUG9wdXBDb250YWluZXI6OnNob3dQ
b3B1cChGcmFtZVZpZXcKICAgICAvLyBXaWRnZXRDbGllbnQgYWJvdXQgaXQuICBJdCBzaG91bGQg
YXNzaWduIHVzIGEgY2xpZW50LgogICAgIGxheW91dCgpOwogCi0gICAgQ2hyb21lQ2xpZW50Q2hy
b21pdW0qIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0PENocm9tZUNsaWVudENocm9taXVtKj4o
Ci0gICAgICAgIHZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpKTsKKyAg
ICBtX2ZyYW1lVmlldyA9IHZpZXc7CisgICAgQ2hyb21lQ2xpZW50Q2hyb21pdW0qIGNocm9tZUNs
aWVudCA9IGNocm9tZUNsaWVudENocm9taXVtKCk7CiAgICAgaWYgKGNocm9tZUNsaWVudCkgewog
ICAgICAgICAvLyBJZiB0aGUgcG9wdXAgd291bGQgZXh0ZW5kIHBhc3QgdGhlIGJvdHRvbSBvZiB0
aGUgc2NyZWVuLCBvcGVuIHVwd2FyZHMKICAgICAgICAgLy8gaW5zdGVhZC4KQEAgLTMzNSw3ICsz
MzcsNyBAQCB2b2lkIFBvcHVwQ29udGFpbmVyOjpzaG93UG9wdXAoRnJhbWVWaWV3CiAgICAgICAg
IGlmICh3aWRnZXRSZWN0LmJvdHRvbSgpID4gc3RhdGljX2Nhc3Q8aW50PihzY3JlZW4uYm90dG9t
KCkpKQogICAgICAgICAgICAgd2lkZ2V0UmVjdC5tb3ZlKDAsIC0od2lkZ2V0UmVjdC5oZWlnaHQo
KSArIHNlbGVjdEhlaWdodCkpOwogCi0gICAgICAgIGNocm9tZUNsaWVudC0+cG9wdXBPcGVuZWQo
dGhpcywgd2lkZ2V0UmVjdCwgbV9zZXR0aW5ncy5mb2N1c09uU2hvdywgZmFsc2UpOworICAgICAg
ICBjaHJvbWVDbGllbnQtPnBvcHVwT3BlbmVkKHRoaXMsIHdpZGdldFJlY3QsIGZhbHNlKTsKICAg
ICB9CiAKICAgICBpZiAoIW1fbGlzdEJveC0+cGFyZW50KCkpCkBAIC0zNjgsOSArMzcwLDggQEAg
dm9pZCBQb3B1cENvbnRhaW5lcjo6c2hvd0V4dGVybmFsKGNvbnN0IAogICAgIEludFJlY3QgcG9w
dXBSZWN0KGxvY2F0aW9uLCByZWN0LnNpemUoKSk7CiAKICAgICAvLyBHZXQgdGhlIENocm9tZUNs
aWVudCBhbmQgcGFzcyBpdCB0aGUgcG9wdXAgbWVudSdzIGxpc3Rib3ggZGF0YS4KLSAgICBDaHJv
bWVDbGllbnRDaHJvbWl1bSogY2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50Q2hyb21p
dW0qPigKLSAgICAgICAgIHYtPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpKTsK
LSAgICBjbGllbnQtPnBvcHVwT3BlbmVkKHRoaXMsIHBvcHVwUmVjdCwgdHJ1ZSwgdHJ1ZSk7Cisg
ICAgbV9mcmFtZVZpZXcgPSB2OworICAgIGNocm9tZUNsaWVudENocm9taXVtKCktPnBvcHVwT3Bl
bmVkKHRoaXMsIHBvcHVwUmVjdCwgdHJ1ZSk7CiAKICAgICAvLyBUaGUgcG9wdXAgc2VuZHMgaXRz
ICJjbG9zZWQiIG5vdGlmaWNhdGlvbiB0aHJvdWdoIGl0cyBwYXJlbnQuIFNldCB0aGUKICAgICAv
LyBwYXJlbnQsIGV2ZW4gdGhvdWdoIGV4dGVybmFsIHBvcHVwcyBoYXZlIG5vIHJlYWwgb24tc2Ny
ZWVuIHdpZGdldCBidXQgYQpAQCAtMzgyLDYgKzM4Myw3IEBAIHZvaWQgUG9wdXBDb250YWluZXI6
OnNob3dFeHRlcm5hbChjb25zdCAKIHZvaWQgUG9wdXBDb250YWluZXI6OmhpZGVQb3B1cCgpCiB7
CiAgICAgbGlzdEJveCgpLT5oaWRlUG9wdXAoKTsKKyAgICBjaHJvbWVDbGllbnRDaHJvbWl1bSgp
LT5wb3B1cENsb3NlZCh0aGlzKTsKIH0KIAogdm9pZCBQb3B1cENvbnRhaW5lcjo6bGF5b3V0KCkK
QEAgLTQ3MCw2ICs0NzIsMTEgQEAgYm9vbCBQb3B1cENvbnRhaW5lcjo6aXNJbnRlcmVzdGVkSW5F
dmVudAogICAgIHJldHVybiBtX2xpc3RCb3gtPmlzSW50ZXJlc3RlZEluRXZlbnRGb3JLZXkoa2V5
Q29kZSk7CiB9CiAKK0Nocm9tZUNsaWVudENocm9taXVtKiBQb3B1cENvbnRhaW5lcjo6Y2hyb21l
Q2xpZW50Q2hyb21pdW0oKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDaHJvbWVDbGllbnRD
aHJvbWl1bSo+KG1fZnJhbWVWaWV3LT5mcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQo
KSk7Cit9CisKIHZvaWQgUG9wdXBDb250YWluZXI6OnNob3coY29uc3QgSW50UmVjdCYgciwgRnJh
bWVWaWV3KiB2LCBpbnQgaW5kZXgpCiB7CiAgICAgLy8gVGhlIHJlY3QgaXMgdGhlIHNpemUgb2Yg
dGhlIHNlbGVjdCBib3guIEl0J3MgdXN1YWxseSBsYXJnZXIgdGhhbiB3ZSBuZWVkLgpAQCAtMTIz
MSw3ICsxMjM4LDcgQEAgUG9wdXBNZW51Ojp+UG9wdXBNZW51KCkKIHZvaWQgUG9wdXBNZW51Ojpz
aG93KGNvbnN0IEludFJlY3QmIHIsIEZyYW1lVmlldyogdiwgaW50IGluZGV4KQogewogICAgIGlm
ICghcC5wb3B1cCkKLSAgICAgICAgcC5wb3B1cCA9IFBvcHVwQ29udGFpbmVyOjpjcmVhdGUoY2xp
ZW50KCksIGRyb3BEb3duU2V0dGluZ3MpOworICAgICAgICBwLnBvcHVwID0gUG9wdXBDb250YWlu
ZXI6OmNyZWF0ZShjbGllbnQoKSwgUG9wdXBDb250YWluZXI6OlNlbGVjdCwgZHJvcERvd25TZXR0
aW5ncyk7CiAjaWYgT1MoREFSV0lOKQogICAgIHAucG9wdXAtPnNob3dFeHRlcm5hbChyLCB2LCBp
bmRleCk7CiAjZWxzZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVD
aHJvbWl1bS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1
cE1lbnVDaHJvbWl1bS5oCShyZXZpc2lvbiA1NjAxMikKKysrIFdlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTQ5ICszOSwx
NTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgRnJhbWVWaWV3OwotICAg
IGNsYXNzIFBvcHVwTGlzdEJveDsKLQotICAgIC8vIEEgY29udGFpbmVyIGZvciB0aGUgZGF0YSBm
b3IgZWFjaCBtZW51IGl0ZW0gKGUuZy4gcmVwcmVzZW50ZWQgYnkgPG9wdGlvbj4KLSAgICAvLyBv
ciA8b3B0Z3JvdXA+IGluIGEgPHNlbGVjdD4gd2lkZ2V0KSBhbmQgaXMgdXNlZCBieSBQb3B1cExp
c3RCb3guCi0gICAgc3RydWN0IFBvcHVwSXRlbSB7Ci0gICAgICAgIGVudW0gVHlwZSB7Ci0gICAg
ICAgICAgICBUeXBlT3B0aW9uLAotICAgICAgICAgICAgVHlwZUdyb3VwLAotICAgICAgICAgICAg
VHlwZVNlcGFyYXRvcgotICAgICAgICB9OwotCi0gICAgICAgIFBvcHVwSXRlbShjb25zdCBTdHJp
bmcmIGxhYmVsLCBUeXBlIHR5cGUpCi0gICAgICAgICAgICA6IGxhYmVsKGxhYmVsKQotICAgICAg
ICAgICAgLCB0eXBlKHR5cGUpCi0gICAgICAgICAgICAsIHlPZmZzZXQoMCkKLSAgICAgICAgewot
ICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBsYWJlbDsKLSAgICAgICAgVHlwZSB0eXBlOwotICAg
ICAgICBpbnQgeU9mZnNldDsgIC8vIHkgb2Zmc2V0IG9mIHRoaXMgaXRlbSwgcmVsYXRpdmUgdG8g
dGhlIHRvcCBvZiB0aGUgcG9wdXAuCi0gICAgICAgIGJvb2wgZW5hYmxlZDsKK2NsYXNzIENocm9t
ZUNsaWVudENocm9taXVtOworY2xhc3MgRnJhbWVWaWV3OworY2xhc3MgUG9wdXBMaXN0Qm94Owor
CisvLyBBIGNvbnRhaW5lciBmb3IgdGhlIGRhdGEgZm9yIGVhY2ggbWVudSBpdGVtIChlLmcuIHJl
cHJlc2VudGVkIGJ5IDxvcHRpb24+CisvLyBvciA8b3B0Z3JvdXA+IGluIGEgPHNlbGVjdD4gd2lk
Z2V0KSBhbmQgaXMgdXNlZCBieSBQb3B1cExpc3RCb3guCitzdHJ1Y3QgUG9wdXBJdGVtIHsKKyAg
ICBlbnVtIFR5cGUgeworICAgICAgICBUeXBlT3B0aW9uLAorICAgICAgICBUeXBlR3JvdXAsCisg
ICAgICAgIFR5cGVTZXBhcmF0b3IKICAgICB9OwogCi0gICAgLy8gRklYTUU6IE91ciBGcmFtZWxl
c3NTY3JvbGxWaWV3IGNsYXNzZXMgc2hvdWxkIHByb2JhYmx5IGltcGxlbWVudCBIb3N0V2luZG93
IQorICAgIFBvcHVwSXRlbShjb25zdCBTdHJpbmcmIGxhYmVsLCBUeXBlIHR5cGUpCisgICAgICAg
IDogbGFiZWwobGFiZWwpCisgICAgICAgICwgdHlwZSh0eXBlKQorICAgICAgICAsIHlPZmZzZXQo
MCkKKyAgICB7CisgICAgfQorICAgIFN0cmluZyBsYWJlbDsKKyAgICBUeXBlIHR5cGU7CisgICAg
aW50IHlPZmZzZXQ7ICAvLyB5IG9mZnNldCBvZiB0aGlzIGl0ZW0sIHJlbGF0aXZlIHRvIHRoZSB0
b3Agb2YgdGhlIHBvcHVwLgorICAgIGJvb2wgZW5hYmxlZDsKK307CisKKy8vIEZJWE1FOiBPdXIg
RnJhbWVsZXNzU2Nyb2xsVmlldyBjbGFzc2VzIHNob3VsZCBwcm9iYWJseSBpbXBsZW1lbnQgSG9z
dFdpbmRvdyEKKworLy8gVGhlIFBvcHVwQ29udGFpbmVyIGNsYXNzIGhvbGRzIGEgUG9wdXBMaXN0
Qm94IChzZWUgY3BwIGZpbGUpLiAgSXRzIHNvbGUgcHVycG9zZSBpcyB0byBiZQorLy8gYWJsZSB0
byBkcmF3IGEgYm9yZGVyIGFyb3VuZCBpdHMgY2hpbGQuICBBbGwgaXRzIHBhaW50L2V2ZW50IGhh
bmRsaW5nIGlzCisvLyBqdXN0IGZvcndhcmRlZCB0byB0aGUgY2hpbGQgbGlzdEJveCAod2l0aCB0
aGUgYXBwcm9wcmlhdGUgdHJhbnNmb3JtcykuCisvLyBOT1RFOiB0aGlzIGNsYXNzIGlzIGV4cG9z
ZWQgc28gaXQgY2FuIGJlIGluc3RhbnRpYXRlZCBkaXJlY2x5IGZvciB0aGUKKy8vIGF1dG9maWxs
IHBvcHVwLiAgV2UgY2Fubm90IHVzZSB0aGUgUG9wdXAgY2xhc3MgZGlyZWN0bHkgaW4gdGhhdCBj
YXNlIGFzIHRoZQorLy8gYXV0b2ZpbGwgcG9wdXAgc2hvdWxkIG5vdCBiZSBmb2N1c2VkIHdoZW4g
c2hvd24gYW5kIHdlIHdhbnQgdG8gZm9yd2FyZCB0aGUKKy8vIGtleSBldmVudHMgdG8gaXQgKHRo
cm91Z2ggaGFuZGxlS2V5RXZlbnQpLgorCitzdHJ1Y3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyB7
CisgICAgLy8gV2hldGhlciB0aGUgUG9wdXBNZW51Q2xpZW50IHNob3VsZCBiZSB0b2xkIHRvIGNo
YW5nZSBpdHMgdGV4dCB3aGVuIGEKKyAgICAvLyBuZXcgaXRlbSBpcyBzZWxlY3RlZCBieSB1c2lu
ZyB0aGUgYXJyb3cga2V5cy4KKyAgICBib29sIHNldFRleHRPbkluZGV4Q2hhbmdlOworCisgICAg
Ly8gV2hldGhlciB0aGUgc2VsZWN0aW9uIHNob3VsZCBiZSBhY2NlcHRlZCB3aGVuIHRoZSBwb3B1
cCBtZW51IGlzCisgICAgLy8gY2xvc2VkICh0aHJvdWdoIEVTQyBiZWluZyBwcmVzc2VkIG9yIHRo
ZSBmb2N1cyBnb2luZyBhd2F5KS4KKyAgICAvLyBOb3RlIHRoYXQgd2hlbiBUQUIgaXMgcHJlc3Nl
ZCwgdGhlIHNlbGVjdGlvbiBpcyBhbHdheXMgYWNjZXB0ZWQKKyAgICAvLyByZWdhcmRsZXNzIG9m
IHRoaXMgc2V0dGluZy4KKyAgICBib29sIGFjY2VwdE9uQWJhbmRvbjsKKworICAgIC8vIFdoZXRo
ZXIgd2Ugc2hvdWxkIG1vdmUgdGhlIHNlbGVjdGlvbiB0byB0aGUgZmlyc3QvbGFzdCBpdGVtIHdo
ZW4KKyAgICAvLyB0aGUgdXNlciBwcmVzc2VzIGRvd24vdXAgYXJyb3cga2V5cyBhbmQgdGhlIGxh
c3QvZmlyc3QgaXRlbSBpcworICAgIC8vIHNlbGVjdGVkLgorICAgIGJvb2wgbG9vcFNlbGVjdGlv
bk5hdmlnYXRpb247CisKKyAgICAvLyBXaGV0aGVyIHdlIHNob3VsZCByZXN0cmljdCB0aGUgd2lk
dGggb2YgdGhlIFBvcHVwTGlzdEJveCBvciBub3QuCisgICAgLy8gQXV0b2NvbXBsZXRlIHBvcHVw
cyBhcmUgcmVzdHJpY3RlZCwgY29tYm8tYm94ZXMgKHNlbGVjdCB0YWdzKSBhcmVuJ3QuCisgICAg
Ym9vbCByZXN0cmljdFdpZHRoT2ZMaXN0Qm94OworCisgICAgLy8gQSBoaW50IG9uIHRoZSBkaXNw
bGF5IGRpcmVjdGlvbmFsaXR5IG9mIHRoZSBpdGVtIHRleHQgaW4gcG9wdXAgbWVudS4KKyAgICAv
LworICAgIC8vIFdlIGNvdWxkIGVpdGhlciBkaXNwbGF5IHRoZSBpdGVtcyBpbiB0aGUgZHJvcC1k
b3duIHVzaW5nIGl0cyBET00gZWxlbWVudCdzCisgICAgLy8gZGlyZWN0aW9uYWxpdHksIG9yIHdl
IGNvdWxkIGRpc3BsYXkgdGhlIGl0ZW1zIGluIHRoZSBkcm9wLWRvd24gdXNpbmcgaGV1cmlzdGlj
czoKKyAgICAvLyBzdWNoIGFzIGluIGl0cyBmaXJzdCBzdHJvbmcgZGlyZWN0aW9uYWxpdHkgY2hh
cmFjdGVyJ3MgZGlyZWN0aW9uLgorICAgIC8vIFBsZWFzZSByZWZlciB0byB0aGUgZGlzY3Vzc2lv
biAoZXNwZWNpYWxseSBjb21tZW50ICM3IGFuZCAjMTApIGluCisgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3ODg5IGZvciBkZXRhaWxzLgorICAgIGVudW0g
RGlyZWN0aW9uYWxpdHlIaW50IHsKKyAgICAgICAgLy8gVXNlIHRoZSBET00gZWxlbWVudCdzIGRp
cmVjdGlvbmFsaXR5IHRvIGRpc3BsYXkgdGhlIGl0ZW0gdGV4dCBpbiBwb3B1cCBtZW51LgorICAg
ICAgICBET01FbGVtZW50RGlyZWN0aW9uLAorICAgICAgICAvLyBVc2UgdGhlIGl0ZW0gdGV4dCdz
IGZpcnN0IHN0cm9uZy1kaXJlY3Rpb25hbCBjaGFyYWN0ZXIncyBkaXJlY3Rpb25hbGl0eQorICAg
ICAgICAvLyB0byBkaXNwbGF5IHRoZSBpdGVtIHRleHQgaW4gcG9wdXAgbWVudS4KKyAgICAgICAg
Rmlyc3RTdHJvbmdEaXJlY3Rpb25hbENoYXJhY3RlckRpcmVjdGlvbiwKKyAgICB9OworICAgIERp
cmVjdGlvbmFsaXR5SGludCBpdGVtVGV4dERpcmVjdGlvbmFsaXR5SGludDsKK307CiAKLSAgICAv
LyBUaGUgUG9wdXBDb250YWluZXIgY2xhc3MgaG9sZHMgYSBQb3B1cExpc3RCb3ggKHNlZSBjcHAg
ZmlsZSkuICBJdHMgc29sZSBwdXJwb3NlIGlzIHRvIGJlCi0gICAgLy8gYWJsZSB0byBkcmF3IGEg
Ym9yZGVyIGFyb3VuZCBpdHMgY2hpbGQuICBBbGwgaXRzIHBhaW50L2V2ZW50IGhhbmRsaW5nIGlz
Ci0gICAgLy8ganVzdCBmb3J3YXJkZWQgdG8gdGhlIGNoaWxkIGxpc3RCb3ggKHdpdGggdGhlIGFw
cHJvcHJpYXRlIHRyYW5zZm9ybXMpLgotICAgIC8vIE5PVEU6IHRoaXMgY2xhc3MgaXMgZXhwb3Nl
ZCBzbyBpdCBjYW4gYmUgaW5zdGFudGlhdGVkIGRpcmVjbHkgZm9yIHRoZQotICAgIC8vIGF1dG9m
aWxsIHBvcHVwLiAgV2UgY2Fubm90IHVzZSB0aGUgUG9wdXAgY2xhc3MgZGlyZWN0bHkgaW4gdGhh
dCBjYXNlIGFzIHRoZQotICAgIC8vIGF1dG9maWxsIHBvcHVwIHNob3VsZCBub3QgYmUgZm9jdXNl
ZCB3aGVuIHNob3duIGFuZCB3ZSB3YW50IHRvIGZvcndhcmQgdGhlCi0gICAgLy8ga2V5IGV2ZW50
cyB0byBpdCAodGhyb3VnaCBoYW5kbGVLZXlFdmVudCkuCi0KLSAgICBzdHJ1Y3QgUG9wdXBDb250
YWluZXJTZXR0aW5ncyB7Ci0gICAgICAgIC8vIFdoZXRoZXIgdGhlIHBvcHVwIHNob3VsZCBnZXQg
dGhlIGZvY3VzIHdoZW4gZGlzcGxheWVkLgotICAgICAgICBib29sIGZvY3VzT25TaG93OwotCi0g
ICAgICAgIC8vIFdoZXRoZXIgdGhlIFBvcHVwTWVudUNsaWVudCBzaG91bGQgYmUgdG9sZCB0byBj
aGFuZ2UgaXRzIHRleHQgd2hlbiBhCi0gICAgICAgIC8vIG5ldyBpdGVtIGlzIHNlbGVjdGVkIGJ5
IHVzaW5nIHRoZSBhcnJvdyBrZXlzLgotICAgICAgICBib29sIHNldFRleHRPbkluZGV4Q2hhbmdl
OwotCi0gICAgICAgIC8vIFdoZXRoZXIgdGhlIHNlbGVjdGlvbiBzaG91bGQgYmUgYWNjZXB0ZWQg
d2hlbiB0aGUgcG9wdXAgbWVudSBpcwotICAgICAgICAvLyBjbG9zZWQgKHRocm91Z2ggRVNDIGJl
aW5nIHByZXNzZWQgb3IgdGhlIGZvY3VzIGdvaW5nIGF3YXkpLgotICAgICAgICAvLyBOb3RlIHRo
YXQgd2hlbiBUQUIgaXMgcHJlc3NlZCwgdGhlIHNlbGVjdGlvbiBpcyBhbHdheXMgYWNjZXB0ZWQK
LSAgICAgICAgLy8gcmVnYXJkbGVzcyBvZiB0aGlzIHNldHRpbmcuCi0gICAgICAgIGJvb2wgYWNj
ZXB0T25BYmFuZG9uOwotCi0gICAgICAgIC8vIFdoZXRoZXIgd2Ugc2hvdWxkIG1vdmUgdGhlIHNl
bGVjdGlvbiB0byB0aGUgZmlyc3QvbGFzdCBpdGVtIHdoZW4KLSAgICAgICAgLy8gdGhlIHVzZXIg
cHJlc3NlcyBkb3duL3VwIGFycm93IGtleXMgYW5kIHRoZSBsYXN0L2ZpcnN0IGl0ZW0gaXMKLSAg
ICAgICAgLy8gc2VsZWN0ZWQuCi0gICAgICAgIGJvb2wgbG9vcFNlbGVjdGlvbk5hdmlnYXRpb247
Ci0KLSAgICAgICAgLy8gV2hldGhlciB3ZSBzaG91bGQgcmVzdHJpY3QgdGhlIHdpZHRoIG9mIHRo
ZSBQb3B1cExpc3RCb3ggb3Igbm90LgotICAgICAgICAvLyBBdXRvY29tcGxldGUgcG9wdXBzIGFy
ZSByZXN0cmljdGVkLCBjb21iby1ib3hlcyAoc2VsZWN0IHRhZ3MpIGFyZW4ndC4KLSAgICAgICAg
Ym9vbCByZXN0cmljdFdpZHRoT2ZMaXN0Qm94OwotCi0gICAgICAgIC8vIEEgaGludCBvbiB0aGUg
ZGlzcGxheSBkaXJlY3Rpb25hbGl0eSBvZiB0aGUgaXRlbSB0ZXh0IGluIHBvcHVwIG1lbnUuCi0g
ICAgICAgIC8vCi0gICAgICAgIC8vIFdlIGNvdWxkIGVpdGhlciBkaXNwbGF5IHRoZSBpdGVtcyBp
biB0aGUgZHJvcC1kb3duIHVzaW5nIGl0cyBET00gZWxlbWVudCdzCi0gICAgICAgIC8vIGRpcmVj
dGlvbmFsaXR5LCBvciB3ZSBjb3VsZCBkaXNwbGF5IHRoZSBpdGVtcyBpbiB0aGUgZHJvcC1kb3du
IHVzaW5nIGhldXJpc3RpY3M6Ci0gICAgICAgIC8vIHN1Y2ggYXMgaW4gaXRzIGZpcnN0IHN0cm9u
ZyBkaXJlY3Rpb25hbGl0eSBjaGFyYWN0ZXIncyBkaXJlY3Rpb24uCi0gICAgICAgIC8vIFBsZWFz
ZSByZWZlciB0byB0aGUgZGlzY3Vzc2lvbiAoZXNwZWNpYWxseSBjb21tZW50ICM3IGFuZCAjMTAp
IGluCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Nzg4OSBmb3IgZGV0YWlscy4KLSAgICAgICAgZW51bSBEaXJlY3Rpb25hbGl0eUhpbnQgewotICAg
ICAgICAgICAgLy8gVXNlIHRoZSBET00gZWxlbWVudCdzIGRpcmVjdGlvbmFsaXR5IHRvIGRpc3Bs
YXkgdGhlIGl0ZW0gdGV4dCBpbiBwb3B1cCBtZW51LgotICAgICAgICAgICAgRE9NRWxlbWVudERp
cmVjdGlvbiwKLSAgICAgICAgICAgIC8vIFVzZSB0aGUgaXRlbSB0ZXh0J3MgZmlyc3Qgc3Ryb25n
LWRpcmVjdGlvbmFsIGNoYXJhY3RlcidzIGRpcmVjdGlvbmFsaXR5Ci0gICAgICAgICAgICAvLyB0
byBkaXNwbGF5IHRoZSBpdGVtIHRleHQgaW4gcG9wdXAgbWVudS4KLSAgICAgICAgICAgIEZpcnN0
U3Ryb25nRGlyZWN0aW9uYWxDaGFyYWN0ZXJEaXJlY3Rpb24sCi0gICAgICAgIH07Ci0gICAgICAg
IERpcmVjdGlvbmFsaXR5SGludCBpdGVtVGV4dERpcmVjdGlvbmFsaXR5SGludDsKK2NsYXNzIFBv
cHVwQ29udGFpbmVyIDogcHVibGljIEZyYW1lbGVzc1Njcm9sbFZpZXcgeworcHVibGljOgorICAg
IGVudW0gUG9wdXBUeXBlIHsKKyAgICAgICAgU2VsZWN0LCAvLyBIVE1MIHNlbGVjdCBwb3B1cC4K
KyAgICAgICAgU3VnZ2VzdGlvbiwgLy8gQXV0b2NvbXBsZXRlL2F1dG9maWxsIHBvcHVwLgogICAg
IH07CiAKLSAgICBjbGFzcyBQb3B1cENvbnRhaW5lciA6IHB1YmxpYyBGcmFtZWxlc3NTY3JvbGxW
aWV3IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvcHVwQ29udGFp
bmVyPiBjcmVhdGUoUG9wdXBNZW51Q2xpZW50KiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzJik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8UG9wdXBDb250YWluZXI+IGNyZWF0ZShQb3B1cE1lbnVDbGll
bnQqLCBQb3B1cFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzJik7CiAKLSAgICAgICAgLy8gV2hldGhl
ciBhIGtleSBldmVudCBzaG91bGQgYmUgc2VudCB0byB0aGlzIHBvcHVwLgotICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNJbnRlcmVzdGVkSW5FdmVudEZvcktleShpbnQga2V5Q29kZSk7CisgICAgLy8g
V2hldGhlciBhIGtleSBldmVudCBzaG91bGQgYmUgc2VudCB0byB0aGlzIHBvcHVwLgorICAgIHZp
cnR1YWwgYm9vbCBpc0ludGVyZXN0ZWRJbkV2ZW50Rm9yS2V5KGludCBrZXlDb2RlKTsKIAotICAg
ICAgICAvLyBGcmFtZWxlc3NTY3JvbGxWaWV3Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBo
aWRlKCk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZURvd25FdmVudChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNlTW92
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wg
aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50Jik7CisgICAgLy8gRnJhbWVsZXNzU2Nyb2xsVmlldworICAgIHZpcnR1YWwg
dm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVh
bCB2b2lkIGhpZGUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VEb3duRXZlbnQoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNlTW92
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBoYW5k
bGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0
dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50
Jik7CiAKLSAgICAgICAgLy8gUG9wdXBDb250YWluZXIgbWV0aG9kcworICAgIC8vIFBvcHVwQ29u
dGFpbmVyIG1ldGhvZHMKIAotICAgICAgICAvLyBTaG93IHRoZSBwb3B1cAotICAgICAgICB2b2lk
IHNob3dQb3B1cChGcmFtZVZpZXcqKTsKKyAgICAvLyBTaG93IHRoZSBwb3B1cAorICAgIHZvaWQg
c2hvd1BvcHVwKEZyYW1lVmlldyopOwogCi0gICAgICAgIC8vIFVzZWQgb24gTWFjIENocm9taXVt
IGZvciBIVE1MIHNlbGVjdCBwb3B1cCBtZW51cy4KLSAgICAgICAgdm9pZCBzaG93RXh0ZXJuYWwo
Y29uc3QgSW50UmVjdCYsIEZyYW1lVmlldyosIGludCBpbmRleCk7CisgICAgLy8gVXNlZCBvbiBN
YWMgQ2hyb21pdW0gZm9yIEhUTUwgc2VsZWN0IHBvcHVwIG1lbnVzLgorICAgIHZvaWQgc2hvd0V4
dGVybmFsKGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcqLCBpbnQgaW5kZXgpOwogCi0gICAgICAg
IC8vIFNob3cgdGhlIHBvcHVwIGluIHRoZSBzcGVjaWZpZWQgcmVjdCBmb3IgdGhlIHNwZWNpZmll
ZCBmcmFtZS4KLSAgICAgICAgLy8gTm90ZTogdGhpcyBjb2RlIHdhcyBzb21laG93IGFyYml0cmFy
aWx5IGZhY3RvcmVkLW91dCBvZiB0aGUgUG9wdXAgY2xhc3MKLSAgICAgICAgLy8gc28gV2ViVmll
d0ltcGwgY2FuIGNyZWF0ZSBhIFBvcHVwQ29udGFpbmVyLiBUaGlzIG1ldGhvZCBpcyB1c2VkIGZv
cgotICAgICAgICAvLyBkaXNwbGF5aW5nIGF1dG8gY29tcGxldGUgcG9wdXAgbWVudXMgb24gTWFj
IENocm9taXVtLCBhbmQgZm9yIGFsbAotICAgICAgICAvLyBwb3B1cHMgb24gb3RoZXIgcGxhdGZv
cm1zLgotICAgICAgICB2b2lkIHNob3coY29uc3QgSW50UmVjdCYsIEZyYW1lVmlldyosIGludCBp
bmRleCk7CisgICAgLy8gU2hvdyB0aGUgcG9wdXAgaW4gdGhlIHNwZWNpZmllZCByZWN0IGZvciB0
aGUgc3BlY2lmaWVkIGZyYW1lLgorICAgIC8vIE5vdGU6IHRoaXMgY29kZSB3YXMgc29tZWhvdyBh
cmJpdHJhcmlseSBmYWN0b3JlZC1vdXQgb2YgdGhlIFBvcHVwIGNsYXNzCisgICAgLy8gc28gV2Vi
Vmlld0ltcGwgY2FuIGNyZWF0ZSBhIFBvcHVwQ29udGFpbmVyLiBUaGlzIG1ldGhvZCBpcyB1c2Vk
IGZvcgorICAgIC8vIGRpc3BsYXlpbmcgYXV0byBjb21wbGV0ZSBwb3B1cCBtZW51cyBvbiBNYWMg
Q2hyb21pdW0sIGFuZCBmb3IgYWxsCisgICAgLy8gcG9wdXBzIG9uIG90aGVyIHBsYXRmb3Jtcy4K
KyAgICB2b2lkIHNob3coY29uc3QgSW50UmVjdCYsIEZyYW1lVmlldyosIGludCBpbmRleCk7CiAK
LSAgICAgICAgLy8gSGlkZSB0aGUgcG9wdXAuCi0gICAgICAgIHZvaWQgaGlkZVBvcHVwKCk7Cisg
ICAgLy8gSGlkZSB0aGUgcG9wdXAuCisgICAgdm9pZCBoaWRlUG9wdXAoKTsKIAotICAgICAgICAv
LyBDb21wdXRlIHNpemUgb2Ygd2lkZ2V0IGFuZCBjaGlsZHJlbi4KLSAgICAgICAgdm9pZCBsYXlv
dXQoKTsKKyAgICAvLyBDb21wdXRlIHNpemUgb2Ygd2lkZ2V0IGFuZCBjaGlsZHJlbi4KKyAgICB2
b2lkIGxheW91dCgpOwogCi0gICAgICAgIFBvcHVwTGlzdEJveCogbGlzdEJveCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGlzdEJveC5nZXQoKTsgfQorICAgIFBvcHVwTGlzdEJveCogbGlzdEJveCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGlzdEJveC5nZXQoKTsgfQogCi0gICAgICAgIC8vIEdldHMgdGhlIGlu
ZGV4IG9mIHRoZSBpdGVtIHRoYXQgdGhlIHVzZXIgaXMgY3VycmVudGx5IG1vdXNlZC1vdmVyIG9y
Ci0gICAgICAgIC8vIGhhcyBzZWxlY3RlZCB3aXRoIHRoZSBrZXlib2FyZCB1cC9kb3duIGFycm93
cy4KLSAgICAgICAgaW50IHNlbGVjdGVkSW5kZXgoKSBjb25zdDsKKyAgICAvLyBHZXRzIHRoZSBp
bmRleCBvZiB0aGUgaXRlbSB0aGF0IHRoZSB1c2VyIGlzIGN1cnJlbnRseSBtb3VzZWQtb3ZlciBv
cgorICAgIC8vIGhhcyBzZWxlY3RlZCB3aXRoIHRoZSBrZXlib2FyZCB1cC9kb3duIGFycm93cy4K
KyAgICBpbnQgc2VsZWN0ZWRJbmRleCgpIGNvbnN0OwogCi0gICAgICAgIC8vIFJlZnJlc2ggdGhl
IHBvcHVwIHZhbHVlcyBmcm9tIHRoZSBQb3B1cE1lbnVDbGllbnQuCi0gICAgICAgIHZvaWQgcmVm
cmVzaCgpOworICAgIC8vIFJlZnJlc2ggdGhlIHBvcHVwIHZhbHVlcyBmcm9tIHRoZSBQb3B1cE1l
bnVDbGllbnQuCisgICAgdm9pZCByZWZyZXNoKCk7CiAKLSAgICAgICAgLy8gVGhlIG1lbnUgcGVy
LWl0ZW0gZGF0YS4KLSAgICAgICAgY29uc3QgV1RGOjpWZWN0b3I8UG9wdXBJdGVtKj4mIHBvcHVw
RGF0YSgpIGNvbnN0OworICAgIC8vIFRoZSBtZW51IHBlci1pdGVtIGRhdGEuCisgICAgY29uc3Qg
V1RGOjpWZWN0b3I8UG9wdXBJdGVtKj4mIHBvcHVwRGF0YSgpIGNvbnN0OwogCi0gICAgICAgIC8v
IFRoZSBoZWlnaHQgb2YgYSByb3cgaW4gdGhlIG1lbnUuCi0gICAgICAgIGludCBtZW51SXRlbUhl
aWdodCgpIGNvbnN0OworICAgIC8vIFRoZSBoZWlnaHQgb2YgYSByb3cgaW4gdGhlIG1lbnUuCisg
ICAgaW50IG1lbnVJdGVtSGVpZ2h0KCkgY29uc3Q7CiAKLSAgICAgICAgLy8gVGhlIHNpemUgb2Yg
dGhlIGZvbnQgYmVpbmcgdXNlZC4KLSAgICAgICAgaW50IG1lbnVJdGVtRm9udFNpemUoKSBjb25z
dDsKKyAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgZm9udCBiZWluZyB1c2VkLgorICAgIGludCBtZW51
SXRlbUZvbnRTaXplKCkgY29uc3Q7CiAKLSAgICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xh
c3MgV1RGOjpSZWZDb3VudGVkPFBvcHVwQ29udGFpbmVyPjsKKyAgICBQb3B1cFR5cGUgcG9wdXBU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9wb3B1cFR5cGU7IH0KIAotICAgICAgICBQb3B1cENvbnRh
aW5lcihQb3B1cE1lbnVDbGllbnQqLCBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzJik7Ci0g
ICAgICAgIH5Qb3B1cENvbnRhaW5lcigpOworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgV1RG
OjpSZWZDb3VudGVkPFBvcHVwQ29udGFpbmVyPjsKIAotICAgICAgICAvLyBQYWludCB0aGUgYm9y
ZGVyLgotICAgICAgICB2b2lkIHBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmKTsKKyAgICBQb3B1cENvbnRhaW5lcihQb3B1cE1lbnVDbGllbnQqLCBQb3B1cFR5cGUg
cG9wdXBUeXBlLCBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzJik7CisgICAgflBvcHVwQ29u
dGFpbmVyKCk7CiAKLSAgICAgICAgUmVmUHRyPFBvcHVwTGlzdEJveD4gbV9saXN0Qm94OworICAg
IC8vIFBhaW50IHRoZSBib3JkZXIuCisgICAgdm9pZCBwYWludEJvcmRlcihHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICAgICAgUG9wdXBDb250YWluZXJTZXR0aW5ncyBt
X3NldHRpbmdzOwotICAgIH07CisgICAgLy8gUmV0dXJucyB0aGUgQ2hyb21lQ2xpZW50IG9mIHRo
ZSBwYWdlIHRoaXMgcG9wdXAgaXMgYXNzb2NpYXRlZCB3aXRoLgorICAgIENocm9tZUNsaWVudENo
cm9taXVtKiBjaHJvbWVDbGllbnRDaHJvbWl1bSgpOworCisgICAgUmVmUHRyPFBvcHVwTGlzdEJv
eD4gbV9saXN0Qm94OworICAgIFJlZlB0cjxGcmFtZVZpZXc+IG1fZnJhbWVWaWV3OworCisgICAg
UG9wdXBDb250YWluZXJTZXR0aW5ncyBtX3NldHRpbmdzOworICAgIFBvcHVwVHlwZSBtX3BvcHVw
VHlwZTsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDU2MDE0KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEwLTAzLTE1ICBKYXkgQ2FtcGFuICA8amNhbXBhbkBn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1ha2luZyBDaHJvbWl1bSBzZWxlY3QgcG9wdXBzIG5vdCBzdGVhbCBhY3RpdmF0aW9uIGZy
b20gdGhlIGJyb3dzZXIuCisgICAgICAgIFNlbGVjdCBwb3B1cHMgYXJlIG5vdyBsaWtlIGF1dG9j
b21wbGV0ZSBwb3B1cHMsIHNob3duIGluIG5vbi1hY3RpdmF0ZWQKKyAgICAgICAgd2luZG93cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MDYyCisK
KyAgICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3Q2xpZW50OjpjcmVhdGVQb3B1cE1lbnUpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6cG9wdXBPcGVuZWQp
OgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpwb3B1cENsb3NlZCk6CisgICAg
ICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjopOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
bW91c2VEb3duKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmtleUV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNlbGVjdFBvcHVwSGFuZGxlS2V5RXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGlkZVNlbGVjdFBvcHVwKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnBvcHVwT3BlbmVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnBvcHVwQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNl
dEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5QXV0b0ZpbGxTdWdn
ZXN0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjphcHBseUF1dG9jb21wbGV0
ZVN1Z2dlc3Rpb25zKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0wMy0x
NSAgTWFyY3VzIEJ1bGFjaCAgPGJ1bGFjaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgSmVyZW15IE9ybG93LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3
Q2xpZW50LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdD
bGllbnQuaAkocmV2aXNpb24gNTYwMTIpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZp
ZXdDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsOCArNzMsMTEgQEAgcHVibGljOgogCiAg
ICAgLy8gQ3JlYXRlIGEgbmV3IFdlYlBvcHVwTWVudS4gIEluIHRoZSBzZWNvbmQgZm9ybSwgdGhl
IGNsaWVudCBpcwogICAgIC8vIHJlc3BvbnNpYmxlIGZvciByZW5kZXJpbmcgdGhlIGNvbnRlbnRz
IG9mIHRoZSBwb3B1cCBtZW51LgotICAgIHZpcnR1YWwgV2ViV2lkZ2V0KiBjcmVhdGVQb3B1cE1l
bnUoYm9vbCBhY3RpdmF0YWJsZSkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgV2ViV2lkZ2V0
KiBjcmVhdGVQb3B1cE1lbnUoKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBXZWJXaWRnZXQq
IGNyZWF0ZVBvcHVwTWVudShjb25zdCBXZWJQb3B1cE1lbnVJbmZvJikgeyByZXR1cm4gMDsgfQor
ICAgIC8vIERlcHJlY2F0ZWQgbWV0aG9kLgorICAgIHZpcnR1YWwgV2ViV2lkZ2V0KiBjcmVhdGVQ
b3B1cE1lbnUoYm9vbCBhY3RpdmF0YWJsZSkgeyByZXR1cm4gMDsgfQorCiAKICAgICAvLyBDcmVh
dGUgYSBzZXNzaW9uIHN0b3JhZ2UgbmFtZXNwYWNlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhp
cyBXZWJWaWV3LgogICAgIHZpcnR1YWwgV2ViU3RvcmFnZU5hbWVzcGFjZSogY3JlYXRlU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UoKSB7IHJldHVybiAwOyB9CkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gNTYwMTIpCisrKyBXZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTQsNyAr
NTk0LDYgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjppY29uRm9yRmlsZXMoY29ucwogCiB2b2lk
IENocm9tZUNsaWVudEltcGw6OnBvcHVwT3BlbmVkKFBvcHVwQ29udGFpbmVyKiBwb3B1cENvbnRh
aW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYg
Ym91bmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFjdGl2YXRh
YmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhhbmRsZUV4dGVy
bmFsbHkpCiB7CiAgICAgaWYgKCFtX3dlYlZpZXctPmNsaWVudCgpKQpAQCAtNjA1LDEyICs2MDQs
MjIgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpwb3B1cE9wZW5lZChQb3B1cAogICAgICAgICBX
ZWJQb3B1cE1lbnVJbmZvIHBvcHVwSW5mbzsKICAgICAgICAgZ2V0UG9wdXBNZW51SW5mbyhwb3B1
cENvbnRhaW5lciwgJnBvcHVwSW5mbyk7CiAgICAgICAgIHdlYndpZGdldCA9IG1fd2ViVmlldy0+
Y2xpZW50KCktPmNyZWF0ZVBvcHVwTWVudShwb3B1cEluZm8pOwotICAgIH0gZWxzZQotICAgICAg
ICB3ZWJ3aWRnZXQgPSBtX3dlYlZpZXctPmNsaWVudCgpLT5jcmVhdGVQb3B1cE1lbnUoYWN0aXZh
dGFibGUpOwotCisgICAgfSBlbHNlIHsKKyAgICAgICAgd2Vid2lkZ2V0ID0gbV93ZWJWaWV3LT5j
bGllbnQoKS0+Y3JlYXRlUG9wdXBNZW51KCk7CisgICAgICAgIGlmICghd2Vid2lkZ2V0KSB7Cisg
ICAgICAgICAgICAvLyBUcnkgdGhlIGRlcHJlY2F0ZWQgbWV0aG9kLgorICAgICAgICAgICAgd2Vi
d2lkZ2V0ID0gbV93ZWJWaWV3LT5jbGllbnQoKS0+Y3JlYXRlUG9wdXBNZW51KGZhbHNlKTsKKyAg
ICAgICAgfSAgICAKKyAgICB9CisgICAgbV93ZWJWaWV3LT5wb3B1cE9wZW5lZChwb3B1cENvbnRh
aW5lcik7CiAgICAgc3RhdGljX2Nhc3Q8V2ViUG9wdXBNZW51SW1wbCo+KHdlYndpZGdldCktPklu
aXQocG9wdXBDb250YWluZXIsIGJvdW5kcyk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6
cG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyKQorewor
ICAgIG1fd2ViVmlldy0+cG9wdXBDbG9zZWQocG9wdXBDb250YWluZXIpOworfQorCiB2b2lkIENo
cm9tZUNsaWVudEltcGw6OnNldEN1cnNvcihjb25zdCBXZWJDdXJzb3JJbmZvJiBjdXJzb3IpCiB7
CiAgICAgaWYgKG1faWdub3JlTmV4dFNldEN1cnNvcikgewpJbmRleDogV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuaAkocmV2aXNpb24gNTYwMTIpCisrKyBXZWJLaXQvY2hyb21p
dW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDggKzEzNiw4
IEBAIHB1YmxpYzoKICAgICAvLyBDaHJvbWVDbGllbnRDaHJvbWl1bSBtZXRob2RzOgogICAgIHZp
cnR1YWwgdm9pZCBwb3B1cE9wZW5lZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250
YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGJvdW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhY3RpdmF0YWJs
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYW5kbGVFeHRlcm5hbGx5KTsK
KyAgICB2aXJ0dWFsIHZvaWQgcG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBv
cHVwQ29udGFpbmVyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9i
amVjdFN0YXRlKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqKTsKIAogICAgIC8vIENocm9t
ZUNsaWVudEltcGw6CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZp
c2lvbiA1NjAxMikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDksMTEgKzE0OSw3IEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRHJhZ09wZXJhdGkKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRHJhZ09wZXJhdGlv
bkRlbGV0ZSk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKERyYWdPcGVyYXRpb25FdmVy
eSk7CiAKLS8vIE5vdGUgdGhhdCBmb2N1c09uU2hvdyBpcyBmYWxzZSBzbyB0aGF0IHRoZSBzdWdn
ZXN0aW9ucyBwb3B1cCBpcyBzaG93biBub3QKLS8vIGFjdGl2YXRlZC4gIFdlIG5lZWQgdGhlIHBh
Z2UgdG8gc3RpbGwgaGF2ZSBmb2N1cyBzbyB0aGUgdXNlciBjYW4ga2VlcCB0eXBpbmcKLS8vIHdo
aWxlIHRoZSBwb3B1cCBpcyBzaG93aW5nLgogc3RhdGljIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0
dGluZ3Mgc3VnZ2VzdGlvbnNQb3B1cFNldHRpbmdzID0gewotICAgIGZhbHNlLCAgLy8gZm9jdXNP
blNob3cKICAgICBmYWxzZSwgIC8vIHNldFRleHRPbkluZGV4Q2hhbmdlCiAgICAgZmFsc2UsICAv
LyBhY2NlcHRPbkFiYW5kb24KICAgICB0cnVlLCAgIC8vIGxvb3BTZWxlY3Rpb25OYXZpZ2F0aW9u
CkBAIC0zMjcsNiArMzIzLDEwIEBAIHZvaWQgV2ViVmlld0ltcGw6Om1vdXNlRG93bihjb25zdCBX
ZWJNb3UKICAgICBpZiAoIW1haW5GcmFtZUltcGwoKSB8fCAhbWFpbkZyYW1lSW1wbCgpLT5mcmFt
ZVZpZXcoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gSWYgdGhlcmUgaXMgYSBzZWxlY3Qg
cG9wdXAgb3BlbmVkLCBjbG9zZSBpdCBhcyB0aGUgdXNlciBpcyBjbGlja2luZyBvbgorICAgIC8v
IHRoZSBwYWdlIChvdXRzaWRlIG9mIHRoZSBwb3B1cCkuCisgICAgaGlkZVNlbGVjdFBvcHVwKCk7
CisKICAgICBtX2xhc3RNb3VzZURvd25Qb2ludCA9IFdlYlBvaW50KGV2ZW50LngsIGV2ZW50Lnkp
OwogICAgIG1faGF2ZU1vdXNlQ2FwdHVyZSA9IHRydWU7CiAKQEAgLTQ3NCw2ICs0NzQsMTAgQEAg
Ym9vbCBXZWJWaWV3SW1wbDo6a2V5RXZlbnQoY29uc3QgV2ViS2V5YgogICAgIC8vIGV2ZW50Lgog
ICAgIG1fc3VwcHJlc3NOZXh0S2V5cHJlc3NFdmVudCA9IGZhbHNlOwogCisgICAgLy8gR2l2ZSBh
bnkgc2VsZWN0IHBvcHVwIGEgY2hhbmNlIGF0IGNvbnN1bWluZyB0aGUga2V5IGV2ZW50LgorICAg
IGlmIChzZWxlY3RQb3B1cEhhbmRsZUtleUV2ZW50KGV2ZW50KSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKICAgICAvLyBHaXZlIEF1dG9jb21wbGV0ZSBhIGNoYW5jZSB0byBjb25zdW1lIHRoZSBr
ZXkgZXZlbnRzIGl0IGlzIGludGVyZXN0ZWQgaW4uCiAgICAgaWYgKGF1dG9jb21wbGV0ZUhhbmRs
ZUtleUV2ZW50KGV2ZW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01MjMsNiArNTI3LDE0
IEBAIGJvb2wgV2ViVmlld0ltcGw6OmtleUV2ZW50KGNvbnN0IFdlYktleWIKICAgICByZXR1cm4g
a2V5RXZlbnREZWZhdWx0KGV2ZW50KTsKIH0KIAorYm9vbCBXZWJWaWV3SW1wbDo6c2VsZWN0UG9w
dXBIYW5kbGVLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKK3sKKyAgICBp
ZiAoIW1fc2VsZWN0UG9wdXApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1
cm4gbV9zZWxlY3RQb3B1cC0+aGFuZGxlS2V5RXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50QnVp
bGRlcihldmVudCkpOworfQorCiBib29sIFdlYlZpZXdJbXBsOjphdXRvY29tcGxldGVIYW5kbGVL
ZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICBpZiAoIW1fc3Vn
Z2VzdGlvbnNQb3B1cFNob3dpbmcKQEAgLTc5Myw2ICs4MDUsMTIgQEAgYm9vbCBXZWJWaWV3SW1w
bDo6c2Nyb2xsVmlld1dpdGhLZXlib2FyZAogICAgIHJldHVybiBwcm9wYWdhdGVTY3JvbGwoc2Ny
b2xsRGlyZWN0aW9uLCBzY3JvbGxHcmFudWxhcml0eSk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6
OmhpZGVTZWxlY3RQb3B1cCgpCit7CisgICAgaWYgKG1fc2VsZWN0UG9wdXAuZ2V0KCkpCisgICAg
ICAgIG1fc2VsZWN0UG9wdXAtPmhpZGVQb3B1cCgpOworfQorCiBib29sIFdlYlZpZXdJbXBsOjpw
cm9wYWdhdGVTY3JvbGwoU2Nyb2xsRGlyZWN0aW9uIHNjcm9sbERpcmVjdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTY3JvbGxHcmFudWxhcml0eSBzY3JvbGxHcmFudWxh
cml0eSkKIHsKQEAgLTgxMiw2ICs4MzAsMjIgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cHJvcGFnYXRl
U2Nyb2xsKFNjcm9sbAogICAgIHJldHVybiBzY3JvbGxIYW5kbGVkOwogfQogCit2b2lkICBXZWJW
aWV3SW1wbDo6cG9wdXBPcGVuZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFp
bmVyKQoreworICAgIGlmIChwb3B1cENvbnRhaW5lci0+cG9wdXBUeXBlKCkgPT0gV2ViQ29yZTo6
UG9wdXBDb250YWluZXI6OlNlbGVjdCkgeworICAgICAgICBBU1NFUlQoIW1fc2VsZWN0UG9wdXAp
OworICAgICAgICBtX3NlbGVjdFBvcHVwID0gcG9wdXBDb250YWluZXI7CisgICAgfQorfQorCit2
b2lkICBXZWJWaWV3SW1wbDo6cG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBv
cHVwQ29udGFpbmVyKQoreworICAgIGlmIChwb3B1cENvbnRhaW5lci0+cG9wdXBUeXBlKCkgPT0g
V2ViQ29yZTo6UG9wdXBDb250YWluZXI6OlNlbGVjdCkgeworICAgICAgICBBU1NFUlQobV9zZWxl
Y3RQb3B1cC5nZXQoKSk7CisgICAgICAgIG1fc2VsZWN0UG9wdXAgPSAwOworICAgIH0KK30KKwog
RnJhbWUqIFdlYlZpZXdJbXBsOjpmb2N1c2VkV2ViQ29yZUZyYW1lKCkKIHsKICAgICByZXR1cm4g
bV9wYWdlLmdldCgpID8gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCkgOiAwOwpAQCAtMTA0Myw2ICsxMDc3LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0Rm9j
dXMoYm9vbCBlbmFibGUpCiAgICAgICAgIG1faW1lQWNjZXB0RXZlbnRzID0gdHJ1ZTsKICAgICB9
IGVsc2UgewogICAgICAgICBoaWRlU3VnZ2VzdGlvbnNQb3B1cCgpOworICAgICAgICBoaWRlU2Vs
ZWN0UG9wdXAoKTsKIAogICAgICAgICAvLyBDbGVhciBmb2N1cyBvbiB0aGUgY3VycmVudGx5IGZv
Y3VzZWQgZnJhbWUgaWYgYW55LgogICAgICAgICBpZiAoIW1fcGFnZS5nZXQoKSkKQEAgLTE2Njgs
NiArMTcwMyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5QXV0b0ZpbGxTdWdnZXN0aW8KIAog
ICAgIGlmICghbV9hdXRvRmlsbFBvcHVwLmdldCgpKSB7CiAgICAgICAgIG1fYXV0b0ZpbGxQb3B1
cCA9IFBvcHVwQ29udGFpbmVyOjpjcmVhdGUobV9zdWdnZXN0aW9uc1BvcHVwQ2xpZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcHVwQ29udGFp
bmVyOjpTdWdnZXN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1Z2dlc3Rpb25zUG9wdXBTZXR0aW5ncyk7CiAgICAgfQogCkBAIC0xNzIzLDYg
KzE3NTksNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjphcHBseUF1dG9jb21wbGV0ZVN1Z2dlCiAKICAg
ICBpZiAoIW1fYXV0b2NvbXBsZXRlUG9wdXAuZ2V0KCkpIHsKICAgICAgICAgbV9hdXRvY29tcGxl
dGVQb3B1cCA9IFBvcHVwQ29udGFpbmVyOjpjcmVhdGUobV9zdWdnZXN0aW9uc1BvcHVwQ2xpZW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
b3B1cENvbnRhaW5lcjo6U3VnZ2VzdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnNQb3B1cFNldHRpbmdzKTsKICAgICB9
CiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gNTYwMTIpCisr
KyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
MCw2ICsyOTAsMTAgQEAgcHVibGljOgogICAgIC8vIHdhcyBzY3JvbGxlZC4KICAgICBib29sIHBy
b3BhZ2F0ZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdy
YW51bGFyaXR5KTsKIAorICAgIC8vIE5vdGlmaWNhdGlvbiB0aGF0IGEgcG9wdXAgd2FzIG9wZW5l
ZC9jbG9zZWQuCisgICAgdm9pZCBwb3B1cE9wZW5lZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciog
cG9wdXBDb250YWluZXIpOworICAgIHZvaWQgcG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250
YWluZXIqIHBvcHVwQ29udGFpbmVyKTsKKwogICAgIC8vIEhBQ0s6IGN1cnJlbnRJbnB1dEV2ZW50
KCkgaXMgZm9yIENocm9tZUNsaWVudEltcGw6OnNob3coKSwgdW50aWwgd2UgY2FuCiAgICAgLy8g
Zml4IFdlYktpdCB0byBwYXNzIGVub3VnaCBpbmZvcm1hdGlvbiB1cCBpbnRvIENocm9tZUNsaWVu
dDo6c2hvdygpIHNvIHdlCiAgICAgLy8gY2FuIGRlY2lkZSBpZiB0aGUgd2luZG93Lm9wZW4gZXZl
bnQgd2FzIGNhdXNlZCBieSBhIG1pZGRsZS1tb3VzZSBjbGljawpAQCAtMzA4LDYgKzMxMiw5IEBA
IHByaXZhdGU6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBldmVudCB3YXMgYWN0dWFsbHkg
cHJvY2Vzc2VkLgogICAgIGJvb2wga2V5RXZlbnREZWZhdWx0KGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmKTsKIAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc2VsZWN0IHBvcHVwIGhhcyBjb25z
dW1lZCB0aGUgZXZlbnQuCisgICAgYm9vbCBzZWxlY3RQb3B1cEhhbmRsZUtleUV2ZW50KGNvbnN0
IFdlYktleWJvYXJkRXZlbnQmKTsKKwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgYXV0b2Nv
bXBsZSBoYXMgY29uc3VtZWQgdGhlIGV2ZW50LgogICAgIGJvb2wgYXV0b2NvbXBsZXRlSGFuZGxl
S2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogCkBAIC0zMTksNiArMzI2LDkgQEAg
cHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHZpZXcgd2FzIHNjcm9sbGVkLgog
ICAgIGJvb2wgc2Nyb2xsVmlld1dpdGhLZXlib2FyZChpbnQga2V5Q29kZSwgaW50IG1vZGlmaWVy
cyk7CiAKKyAgICAvLyBIaWRlcyB0aGUgc2VsZWN0IHBvcHVwIGlmIG9uZSBpcyBvcGVuZWQuCisg
ICAgdm9pZCBoaWRlU2VsZWN0UG9wdXAoKTsKKwogICAgIC8vIENvbnZlcnRzIHxwb3N8IGZyb20g
d2luZG93IGNvb3JkaW5hdGVzIHRvIGNvbnRlbnRzIGNvb3JkaW5hdGVzIGFuZCBnZXRzCiAgICAg
Ly8gdGhlIEhpdFRlc3RSZXN1bHQgZm9yIGl0LgogICAgIFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQg
aGl0VGVzdFJlc3VsdEZvcldpbmRvd1Bvcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwpAQCAt
NDI2LDYgKzQzNiw5IEBAIHByaXZhdGU6CiAgICAgLy8gQSBwb2ludGVyIHRvIHRoZSBjdXJyZW50
IHN1Z2dlc3Rpb25zIHBvcHVwLiAgV2UgZG8gbm90IG93biB0aGlzIHBvaW50ZXIuCiAgICAgV2Vi
Q29yZTo6UG9wdXBDb250YWluZXIqIG1fc3VnZ2VzdGlvbnNQb3B1cDsKIAorICAgIC8vIFRoZSBw
b3B1cCBhc3NvY2lhdGVkIHdpdGggYSBzZWxlY3QgZWxlbWVudC4KKyAgICBSZWZQdHI8V2ViQ29y
ZTo6UG9wdXBDb250YWluZXI+IG1fc2VsZWN0UG9wdXA7CisKICAgICAvLyBUaGUgQXV0b0ZpbGwg
c3VnZ2VzdGlvbnMgcG9wdXAuCiAgICAgUmVmUHRyPFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyPiBt
X2F1dG9GaWxsUG9wdXA7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51298</attachid>
            <date>2010-03-22 10:00:53 -0700</date>
            <delta_ts>2010-03-23 18:10:27 -0700</delta_ts>
            <desc>One more style issue</desc>
            <filename>select.patch</filename>
            <type>text/plain</type>
            <size>28346</size>
            <attacher name="Jay Campan">jcampan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU2MDE0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNiBAQAorMjAxMC0wMy0xNSAgSmF5IENhbXBhbiAgPGpjYW1wYW5AZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtpbmcgQ2hyb21pdW0gc2VsZWN0IHBvcHVwcyBub3Qgc3RlYWwgYWN0aXZhdGlvbiBmcm9tIHRo
ZSBicm93c2VyLgorICAgICAgICBTZWxlY3QgcG9wdXBzIGFyZSBub3cgbGlrZSBhdXRvY29tcGxl
dGUgcG9wdXBzLCBzaG93biBpbiBub24tYWN0aXZhdGVkCisgICAgICAgIHdpbmRvd3MuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjA2MgorCisgICAg
ICAgICogcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Oik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjpQb3B1cENvbnRhaW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cENvbnRhaW5lcjo6flBvcHVwQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwQ29udGFpbmVyOjpzaG93UG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250
YWluZXI6OnNob3dFeHRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6
aGlkZVBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2hvdyk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvcHVwQ29udGFpbmVyOjopOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250YWluZXI6
OnBvcHVwVHlwZSk6CisKIDIwMTAtMDMtMTUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4uCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNv
cmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oCShyZXZpc2lvbiA1NjAxMikK
KysrIFdlYkNvcmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gSWYgaGFuZGxlRXh0ZXJu
YWwgaXMgdHJ1ZSwgdGhlbiBkcmF3aW5nIGFuZCBpbnB1dCBoYW5kbGluZyBmb3IgdGhlCiAgICAg
Ly8gcG9wdXAgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBleHRlcm5hbCBlbWJlZGRlci4KICAgICB2
aXJ0dWFsIHZvaWQgcG9wdXBPcGVuZWQoUG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyLCBj
b25zdCBJbnRSZWN0JiBib3VuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
Zm9jdXNPblNob3csIGJvb2wgaGFuZGxlRXh0ZXJuYWwpID0gMDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBoYW5kbGVFeHRlcm5hbCkgPSAwOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKKyAgICAvLyBOb3RpZmllcyB0aGUgY2xpZW50IGEgcG9wdXAgd2FzIGNsb3Nl
ZC4KKyAgICB2aXJ0dWFsIHZvaWQgcG9wdXBDbG9zZWQoUG9wdXBDb250YWluZXIqIHBvcHVwQ29u
dGFpbmVyKSA9IDA7CiAKICAgICAvLyBOb3RpZmllcyBlbWJlZGRlciB0aGF0IHRoZSBzdGF0ZSBv
ZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBoYXMgY2hhbmdlZC4KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdFN0YXRlKEFjY2Vzc2liaWxpdHlPYmplY3QqKSA9
IDA7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNw
cA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hy
b21pdW0uY3BwCShyZXZpc2lvbiA1NjAxMikKKysrIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBNZW51Q2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw2IEBAIHN0
YXRpYyBjb25zdCBUaW1lU3RhbXAga1R5cGVBaGVhZFRpbWVvdXQKIC8vIFRoZSBzZXR0aW5ncyB1
c2VkIGZvciB0aGUgZHJvcCBkb3duIG1lbnUuCiAvLyBUaGlzIGlzIHRoZSBkZWxlZ2F0ZSB1c2Vk
IGlmIG5vbmUgaXMgcHJvdmlkZWQuCiBzdGF0aWMgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5n
cyBkcm9wRG93blNldHRpbmdzID0gewotICAgIHRydWUsICAgLy8gZm9jdXNPblNob3cKICAgICB0
cnVlLCAgIC8vIHNldFRleHRPbkluZGV4Q2hhbmdlCiAgICAgdHJ1ZSwgICAvLyBhY2NlcHRPbkFi
YW5kb24KICAgICBmYWxzZSwgIC8vIGxvb3BTZWxlY3Rpb25OYXZpZ2F0aW9uCkBAIC0yOTcsMTQg
KzI5NiwxNyBAQCBzdGF0aWMgUGxhdGZvcm1XaGVlbEV2ZW50IGNvbnN0cnVjdFJlbGF0CiAKIC8v
IHN0YXRpYwogUGFzc1JlZlB0cjxQb3B1cENvbnRhaW5lcj4gUG9wdXBDb250YWluZXI6OmNyZWF0
ZShQb3B1cE1lbnVDbGllbnQqIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUG9wdXBUeXBlIHBvcHVwVHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUG9wdXBDb250YWluZXJT
ZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1cENvbnRh
aW5lcihjbGllbnQsIHNldHRpbmdzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3B1cENv
bnRhaW5lcihjbGllbnQsIHBvcHVwVHlwZSwgc2V0dGluZ3MpKTsKIH0KIAogUG9wdXBDb250YWlu
ZXI6OlBvcHVwQ29udGFpbmVyKFBvcHVwTWVudUNsaWVudCogY2xpZW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBvcHVwVHlwZSBwb3B1cFR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyYgc2V0dGluZ3MpCiAg
ICAgOiBtX2xpc3RCb3goUG9wdXBMaXN0Qm94OjpjcmVhdGUoY2xpZW50LCBzZXR0aW5ncykpCisg
ICAgLCBtX3BvcHVwVHlwZShwb3B1cFR5cGUpICAKICAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3Mp
CiB7CiAgICAgc2V0U2Nyb2xsYmFyTW9kZXMoU2Nyb2xsYmFyQWx3YXlzT2ZmLCBTY3JvbGxiYXJB
bHdheXNPZmYpOwpAQCAtMzI1LDggKzMyNyw4IEBAIHZvaWQgUG9wdXBDb250YWluZXI6OnNob3dQ
b3B1cChGcmFtZVZpZXcKICAgICAvLyBXaWRnZXRDbGllbnQgYWJvdXQgaXQuICBJdCBzaG91bGQg
YXNzaWduIHVzIGEgY2xpZW50LgogICAgIGxheW91dCgpOwogCi0gICAgQ2hyb21lQ2xpZW50Q2hy
b21pdW0qIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0PENocm9tZUNsaWVudENocm9taXVtKj4o
Ci0gICAgICAgIHZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpKTsKKyAg
ICBtX2ZyYW1lVmlldyA9IHZpZXc7CisgICAgQ2hyb21lQ2xpZW50Q2hyb21pdW0qIGNocm9tZUNs
aWVudCA9IGNocm9tZUNsaWVudENocm9taXVtKCk7CiAgICAgaWYgKGNocm9tZUNsaWVudCkgewog
ICAgICAgICAvLyBJZiB0aGUgcG9wdXAgd291bGQgZXh0ZW5kIHBhc3QgdGhlIGJvdHRvbSBvZiB0
aGUgc2NyZWVuLCBvcGVuIHVwd2FyZHMKICAgICAgICAgLy8gaW5zdGVhZC4KQEAgLTMzNSw3ICsz
MzcsNyBAQCB2b2lkIFBvcHVwQ29udGFpbmVyOjpzaG93UG9wdXAoRnJhbWVWaWV3CiAgICAgICAg
IGlmICh3aWRnZXRSZWN0LmJvdHRvbSgpID4gc3RhdGljX2Nhc3Q8aW50PihzY3JlZW4uYm90dG9t
KCkpKQogICAgICAgICAgICAgd2lkZ2V0UmVjdC5tb3ZlKDAsIC0od2lkZ2V0UmVjdC5oZWlnaHQo
KSArIHNlbGVjdEhlaWdodCkpOwogCi0gICAgICAgIGNocm9tZUNsaWVudC0+cG9wdXBPcGVuZWQo
dGhpcywgd2lkZ2V0UmVjdCwgbV9zZXR0aW5ncy5mb2N1c09uU2hvdywgZmFsc2UpOworICAgICAg
ICBjaHJvbWVDbGllbnQtPnBvcHVwT3BlbmVkKHRoaXMsIHdpZGdldFJlY3QsIGZhbHNlKTsKICAg
ICB9CiAKICAgICBpZiAoIW1fbGlzdEJveC0+cGFyZW50KCkpCkBAIC0zNjgsOSArMzcwLDggQEAg
dm9pZCBQb3B1cENvbnRhaW5lcjo6c2hvd0V4dGVybmFsKGNvbnN0IAogICAgIEludFJlY3QgcG9w
dXBSZWN0KGxvY2F0aW9uLCByZWN0LnNpemUoKSk7CiAKICAgICAvLyBHZXQgdGhlIENocm9tZUNs
aWVudCBhbmQgcGFzcyBpdCB0aGUgcG9wdXAgbWVudSdzIGxpc3Rib3ggZGF0YS4KLSAgICBDaHJv
bWVDbGllbnRDaHJvbWl1bSogY2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50Q2hyb21p
dW0qPigKLSAgICAgICAgIHYtPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpKTsK
LSAgICBjbGllbnQtPnBvcHVwT3BlbmVkKHRoaXMsIHBvcHVwUmVjdCwgdHJ1ZSwgdHJ1ZSk7Cisg
ICAgbV9mcmFtZVZpZXcgPSB2OworICAgIGNocm9tZUNsaWVudENocm9taXVtKCktPnBvcHVwT3Bl
bmVkKHRoaXMsIHBvcHVwUmVjdCwgdHJ1ZSk7CiAKICAgICAvLyBUaGUgcG9wdXAgc2VuZHMgaXRz
ICJjbG9zZWQiIG5vdGlmaWNhdGlvbiB0aHJvdWdoIGl0cyBwYXJlbnQuIFNldCB0aGUKICAgICAv
LyBwYXJlbnQsIGV2ZW4gdGhvdWdoIGV4dGVybmFsIHBvcHVwcyBoYXZlIG5vIHJlYWwgb24tc2Ny
ZWVuIHdpZGdldCBidXQgYQpAQCAtMzgyLDYgKzM4Myw3IEBAIHZvaWQgUG9wdXBDb250YWluZXI6
OnNob3dFeHRlcm5hbChjb25zdCAKIHZvaWQgUG9wdXBDb250YWluZXI6OmhpZGVQb3B1cCgpCiB7
CiAgICAgbGlzdEJveCgpLT5oaWRlUG9wdXAoKTsKKyAgICBjaHJvbWVDbGllbnRDaHJvbWl1bSgp
LT5wb3B1cENsb3NlZCh0aGlzKTsKIH0KIAogdm9pZCBQb3B1cENvbnRhaW5lcjo6bGF5b3V0KCkK
QEAgLTQ3MCw2ICs0NzIsMTEgQEAgYm9vbCBQb3B1cENvbnRhaW5lcjo6aXNJbnRlcmVzdGVkSW5F
dmVudAogICAgIHJldHVybiBtX2xpc3RCb3gtPmlzSW50ZXJlc3RlZEluRXZlbnRGb3JLZXkoa2V5
Q29kZSk7CiB9CiAKK0Nocm9tZUNsaWVudENocm9taXVtKiBQb3B1cENvbnRhaW5lcjo6Y2hyb21l
Q2xpZW50Q2hyb21pdW0oKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDaHJvbWVDbGllbnRD
aHJvbWl1bSo+KG1fZnJhbWVWaWV3LT5mcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQo
KSk7Cit9CisKIHZvaWQgUG9wdXBDb250YWluZXI6OnNob3coY29uc3QgSW50UmVjdCYgciwgRnJh
bWVWaWV3KiB2LCBpbnQgaW5kZXgpCiB7CiAgICAgLy8gVGhlIHJlY3QgaXMgdGhlIHNpemUgb2Yg
dGhlIHNlbGVjdCBib3guIEl0J3MgdXN1YWxseSBsYXJnZXIgdGhhbiB3ZSBuZWVkLgpAQCAtMTIz
MSw3ICsxMjM4LDcgQEAgUG9wdXBNZW51Ojp+UG9wdXBNZW51KCkKIHZvaWQgUG9wdXBNZW51Ojpz
aG93KGNvbnN0IEludFJlY3QmIHIsIEZyYW1lVmlldyogdiwgaW50IGluZGV4KQogewogICAgIGlm
ICghcC5wb3B1cCkKLSAgICAgICAgcC5wb3B1cCA9IFBvcHVwQ29udGFpbmVyOjpjcmVhdGUoY2xp
ZW50KCksIGRyb3BEb3duU2V0dGluZ3MpOworICAgICAgICBwLnBvcHVwID0gUG9wdXBDb250YWlu
ZXI6OmNyZWF0ZShjbGllbnQoKSwgUG9wdXBDb250YWluZXI6OlNlbGVjdCwgZHJvcERvd25TZXR0
aW5ncyk7CiAjaWYgT1MoREFSV0lOKQogICAgIHAucG9wdXAtPnNob3dFeHRlcm5hbChyLCB2LCBp
bmRleCk7CiAjZWxzZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVD
aHJvbWl1bS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1
cE1lbnVDaHJvbWl1bS5oCShyZXZpc2lvbiA1NjAxMikKKysrIFdlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTQ5ICszOSwx
NTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgRnJhbWVWaWV3OwotICAg
IGNsYXNzIFBvcHVwTGlzdEJveDsKLQotICAgIC8vIEEgY29udGFpbmVyIGZvciB0aGUgZGF0YSBm
b3IgZWFjaCBtZW51IGl0ZW0gKGUuZy4gcmVwcmVzZW50ZWQgYnkgPG9wdGlvbj4KLSAgICAvLyBv
ciA8b3B0Z3JvdXA+IGluIGEgPHNlbGVjdD4gd2lkZ2V0KSBhbmQgaXMgdXNlZCBieSBQb3B1cExp
c3RCb3guCi0gICAgc3RydWN0IFBvcHVwSXRlbSB7Ci0gICAgICAgIGVudW0gVHlwZSB7Ci0gICAg
ICAgICAgICBUeXBlT3B0aW9uLAotICAgICAgICAgICAgVHlwZUdyb3VwLAotICAgICAgICAgICAg
VHlwZVNlcGFyYXRvcgotICAgICAgICB9OwotCi0gICAgICAgIFBvcHVwSXRlbShjb25zdCBTdHJp
bmcmIGxhYmVsLCBUeXBlIHR5cGUpCi0gICAgICAgICAgICA6IGxhYmVsKGxhYmVsKQotICAgICAg
ICAgICAgLCB0eXBlKHR5cGUpCi0gICAgICAgICAgICAsIHlPZmZzZXQoMCkKLSAgICAgICAgewot
ICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBsYWJlbDsKLSAgICAgICAgVHlwZSB0eXBlOwotICAg
ICAgICBpbnQgeU9mZnNldDsgIC8vIHkgb2Zmc2V0IG9mIHRoaXMgaXRlbSwgcmVsYXRpdmUgdG8g
dGhlIHRvcCBvZiB0aGUgcG9wdXAuCi0gICAgICAgIGJvb2wgZW5hYmxlZDsKK2NsYXNzIENocm9t
ZUNsaWVudENocm9taXVtOworY2xhc3MgRnJhbWVWaWV3OworY2xhc3MgUG9wdXBMaXN0Qm94Owor
CisvLyBBIGNvbnRhaW5lciBmb3IgdGhlIGRhdGEgZm9yIGVhY2ggbWVudSBpdGVtIChlLmcuIHJl
cHJlc2VudGVkIGJ5IDxvcHRpb24+CisvLyBvciA8b3B0Z3JvdXA+IGluIGEgPHNlbGVjdD4gd2lk
Z2V0KSBhbmQgaXMgdXNlZCBieSBQb3B1cExpc3RCb3guCitzdHJ1Y3QgUG9wdXBJdGVtIHsKKyAg
ICBlbnVtIFR5cGUgeworICAgICAgICBUeXBlT3B0aW9uLAorICAgICAgICBUeXBlR3JvdXAsCisg
ICAgICAgIFR5cGVTZXBhcmF0b3IKICAgICB9OwogCi0gICAgLy8gRklYTUU6IE91ciBGcmFtZWxl
c3NTY3JvbGxWaWV3IGNsYXNzZXMgc2hvdWxkIHByb2JhYmx5IGltcGxlbWVudCBIb3N0V2luZG93
IQorICAgIFBvcHVwSXRlbShjb25zdCBTdHJpbmcmIGxhYmVsLCBUeXBlIHR5cGUpCisgICAgICAg
IDogbGFiZWwobGFiZWwpCisgICAgICAgICwgdHlwZSh0eXBlKQorICAgICAgICAsIHlPZmZzZXQo
MCkKKyAgICB7CisgICAgfQorICAgIFN0cmluZyBsYWJlbDsKKyAgICBUeXBlIHR5cGU7CisgICAg
aW50IHlPZmZzZXQ7IC8vIHkgb2Zmc2V0IG9mIHRoaXMgaXRlbSwgcmVsYXRpdmUgdG8gdGhlIHRv
cCBvZiB0aGUgcG9wdXAuCisgICAgYm9vbCBlbmFibGVkOworfTsKKworLy8gRklYTUU6IE91ciBG
cmFtZWxlc3NTY3JvbGxWaWV3IGNsYXNzZXMgc2hvdWxkIHByb2JhYmx5IGltcGxlbWVudCBIb3N0
V2luZG93IQorCisvLyBUaGUgUG9wdXBDb250YWluZXIgY2xhc3MgaG9sZHMgYSBQb3B1cExpc3RC
b3ggKHNlZSBjcHAgZmlsZSkuICBJdHMgc29sZSBwdXJwb3NlIGlzIHRvIGJlCisvLyBhYmxlIHRv
IGRyYXcgYSBib3JkZXIgYXJvdW5kIGl0cyBjaGlsZC4gIEFsbCBpdHMgcGFpbnQvZXZlbnQgaGFu
ZGxpbmcgaXMKKy8vIGp1c3QgZm9yd2FyZGVkIHRvIHRoZSBjaGlsZCBsaXN0Qm94ICh3aXRoIHRo
ZSBhcHByb3ByaWF0ZSB0cmFuc2Zvcm1zKS4KKy8vIE5PVEU6IHRoaXMgY2xhc3MgaXMgZXhwb3Nl
ZCBzbyBpdCBjYW4gYmUgaW5zdGFudGlhdGVkIGRpcmVjbHkgZm9yIHRoZQorLy8gYXV0b2ZpbGwg
cG9wdXAuICBXZSBjYW5ub3QgdXNlIHRoZSBQb3B1cCBjbGFzcyBkaXJlY3RseSBpbiB0aGF0IGNh
c2UgYXMgdGhlCisvLyBhdXRvZmlsbCBwb3B1cCBzaG91bGQgbm90IGJlIGZvY3VzZWQgd2hlbiBz
aG93biBhbmQgd2Ugd2FudCB0byBmb3J3YXJkIHRoZQorLy8ga2V5IGV2ZW50cyB0byBpdCAodGhy
b3VnaCBoYW5kbGVLZXlFdmVudCkuCisKK3N0cnVjdCBQb3B1cENvbnRhaW5lclNldHRpbmdzIHsK
KyAgICAvLyBXaGV0aGVyIHRoZSBQb3B1cE1lbnVDbGllbnQgc2hvdWxkIGJlIHRvbGQgdG8gY2hh
bmdlIGl0cyB0ZXh0IHdoZW4gYQorICAgIC8vIG5ldyBpdGVtIGlzIHNlbGVjdGVkIGJ5IHVzaW5n
IHRoZSBhcnJvdyBrZXlzLgorICAgIGJvb2wgc2V0VGV4dE9uSW5kZXhDaGFuZ2U7CisKKyAgICAv
LyBXaGV0aGVyIHRoZSBzZWxlY3Rpb24gc2hvdWxkIGJlIGFjY2VwdGVkIHdoZW4gdGhlIHBvcHVw
IG1lbnUgaXMKKyAgICAvLyBjbG9zZWQgKHRocm91Z2ggRVNDIGJlaW5nIHByZXNzZWQgb3IgdGhl
IGZvY3VzIGdvaW5nIGF3YXkpLgorICAgIC8vIE5vdGUgdGhhdCB3aGVuIFRBQiBpcyBwcmVzc2Vk
LCB0aGUgc2VsZWN0aW9uIGlzIGFsd2F5cyBhY2NlcHRlZAorICAgIC8vIHJlZ2FyZGxlc3Mgb2Yg
dGhpcyBzZXR0aW5nLgorICAgIGJvb2wgYWNjZXB0T25BYmFuZG9uOworCisgICAgLy8gV2hldGhl
ciB3ZSBzaG91bGQgbW92ZSB0aGUgc2VsZWN0aW9uIHRvIHRoZSBmaXJzdC9sYXN0IGl0ZW0gd2hl
bgorICAgIC8vIHRoZSB1c2VyIHByZXNzZXMgZG93bi91cCBhcnJvdyBrZXlzIGFuZCB0aGUgbGFz
dC9maXJzdCBpdGVtIGlzCisgICAgLy8gc2VsZWN0ZWQuCisgICAgYm9vbCBsb29wU2VsZWN0aW9u
TmF2aWdhdGlvbjsKKworICAgIC8vIFdoZXRoZXIgd2Ugc2hvdWxkIHJlc3RyaWN0IHRoZSB3aWR0
aCBvZiB0aGUgUG9wdXBMaXN0Qm94IG9yIG5vdC4KKyAgICAvLyBBdXRvY29tcGxldGUgcG9wdXBz
IGFyZSByZXN0cmljdGVkLCBjb21iby1ib3hlcyAoc2VsZWN0IHRhZ3MpIGFyZW4ndC4KKyAgICBi
b29sIHJlc3RyaWN0V2lkdGhPZkxpc3RCb3g7CisKKyAgICAvLyBBIGhpbnQgb24gdGhlIGRpc3Bs
YXkgZGlyZWN0aW9uYWxpdHkgb2YgdGhlIGl0ZW0gdGV4dCBpbiBwb3B1cCBtZW51LgorICAgIC8v
CisgICAgLy8gV2UgY291bGQgZWl0aGVyIGRpc3BsYXkgdGhlIGl0ZW1zIGluIHRoZSBkcm9wLWRv
d24gdXNpbmcgaXRzIERPTSBlbGVtZW50J3MKKyAgICAvLyBkaXJlY3Rpb25hbGl0eSwgb3Igd2Ug
Y291bGQgZGlzcGxheSB0aGUgaXRlbXMgaW4gdGhlIGRyb3AtZG93biB1c2luZyBoZXVyaXN0aWNz
OgorICAgIC8vIHN1Y2ggYXMgaW4gaXRzIGZpcnN0IHN0cm9uZyBkaXJlY3Rpb25hbGl0eSBjaGFy
YWN0ZXIncyBkaXJlY3Rpb24uCisgICAgLy8gUGxlYXNlIHJlZmVyIHRvIHRoZSBkaXNjdXNzaW9u
IChlc3BlY2lhbGx5IGNvbW1lbnQgIzcgYW5kICMxMCkgaW4KKyAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc4ODkgZm9yIGRldGFpbHMuCisgICAgZW51bSBE
aXJlY3Rpb25hbGl0eUhpbnQgeworICAgICAgICAvLyBVc2UgdGhlIERPTSBlbGVtZW50J3MgZGly
ZWN0aW9uYWxpdHkgdG8gZGlzcGxheSB0aGUgaXRlbSB0ZXh0IGluIHBvcHVwIG1lbnUuCisgICAg
ICAgIERPTUVsZW1lbnREaXJlY3Rpb24sCisgICAgICAgIC8vIFVzZSB0aGUgaXRlbSB0ZXh0J3Mg
Zmlyc3Qgc3Ryb25nLWRpcmVjdGlvbmFsIGNoYXJhY3RlcidzIGRpcmVjdGlvbmFsaXR5CisgICAg
ICAgIC8vIHRvIGRpc3BsYXkgdGhlIGl0ZW0gdGV4dCBpbiBwb3B1cCBtZW51LgorICAgICAgICBG
aXJzdFN0cm9uZ0RpcmVjdGlvbmFsQ2hhcmFjdGVyRGlyZWN0aW9uLAorICAgIH07CisgICAgRGly
ZWN0aW9uYWxpdHlIaW50IGl0ZW1UZXh0RGlyZWN0aW9uYWxpdHlIaW50OworfTsKIAotICAgIC8v
IFRoZSBQb3B1cENvbnRhaW5lciBjbGFzcyBob2xkcyBhIFBvcHVwTGlzdEJveCAoc2VlIGNwcCBm
aWxlKS4gIEl0cyBzb2xlIHB1cnBvc2UgaXMgdG8gYmUKLSAgICAvLyBhYmxlIHRvIGRyYXcgYSBi
b3JkZXIgYXJvdW5kIGl0cyBjaGlsZC4gIEFsbCBpdHMgcGFpbnQvZXZlbnQgaGFuZGxpbmcgaXMK
LSAgICAvLyBqdXN0IGZvcndhcmRlZCB0byB0aGUgY2hpbGQgbGlzdEJveCAod2l0aCB0aGUgYXBw
cm9wcmlhdGUgdHJhbnNmb3JtcykuCi0gICAgLy8gTk9URTogdGhpcyBjbGFzcyBpcyBleHBvc2Vk
IHNvIGl0IGNhbiBiZSBpbnN0YW50aWF0ZWQgZGlyZWNseSBmb3IgdGhlCi0gICAgLy8gYXV0b2Zp
bGwgcG9wdXAuICBXZSBjYW5ub3QgdXNlIHRoZSBQb3B1cCBjbGFzcyBkaXJlY3RseSBpbiB0aGF0
IGNhc2UgYXMgdGhlCi0gICAgLy8gYXV0b2ZpbGwgcG9wdXAgc2hvdWxkIG5vdCBiZSBmb2N1c2Vk
IHdoZW4gc2hvd24gYW5kIHdlIHdhbnQgdG8gZm9yd2FyZCB0aGUKLSAgICAvLyBrZXkgZXZlbnRz
IHRvIGl0ICh0aHJvdWdoIGhhbmRsZUtleUV2ZW50KS4KLQotICAgIHN0cnVjdCBQb3B1cENvbnRh
aW5lclNldHRpbmdzIHsKLSAgICAgICAgLy8gV2hldGhlciB0aGUgcG9wdXAgc2hvdWxkIGdldCB0
aGUgZm9jdXMgd2hlbiBkaXNwbGF5ZWQuCi0gICAgICAgIGJvb2wgZm9jdXNPblNob3c7Ci0KLSAg
ICAgICAgLy8gV2hldGhlciB0aGUgUG9wdXBNZW51Q2xpZW50IHNob3VsZCBiZSB0b2xkIHRvIGNo
YW5nZSBpdHMgdGV4dCB3aGVuIGEKLSAgICAgICAgLy8gbmV3IGl0ZW0gaXMgc2VsZWN0ZWQgYnkg
dXNpbmcgdGhlIGFycm93IGtleXMuCi0gICAgICAgIGJvb2wgc2V0VGV4dE9uSW5kZXhDaGFuZ2U7
Ci0KLSAgICAgICAgLy8gV2hldGhlciB0aGUgc2VsZWN0aW9uIHNob3VsZCBiZSBhY2NlcHRlZCB3
aGVuIHRoZSBwb3B1cCBtZW51IGlzCi0gICAgICAgIC8vIGNsb3NlZCAodGhyb3VnaCBFU0MgYmVp
bmcgcHJlc3NlZCBvciB0aGUgZm9jdXMgZ29pbmcgYXdheSkuCi0gICAgICAgIC8vIE5vdGUgdGhh
dCB3aGVuIFRBQiBpcyBwcmVzc2VkLCB0aGUgc2VsZWN0aW9uIGlzIGFsd2F5cyBhY2NlcHRlZAot
ICAgICAgICAvLyByZWdhcmRsZXNzIG9mIHRoaXMgc2V0dGluZy4KLSAgICAgICAgYm9vbCBhY2Nl
cHRPbkFiYW5kb247Ci0KLSAgICAgICAgLy8gV2hldGhlciB3ZSBzaG91bGQgbW92ZSB0aGUgc2Vs
ZWN0aW9uIHRvIHRoZSBmaXJzdC9sYXN0IGl0ZW0gd2hlbgotICAgICAgICAvLyB0aGUgdXNlciBw
cmVzc2VzIGRvd24vdXAgYXJyb3cga2V5cyBhbmQgdGhlIGxhc3QvZmlyc3QgaXRlbSBpcwotICAg
ICAgICAvLyBzZWxlY3RlZC4KLSAgICAgICAgYm9vbCBsb29wU2VsZWN0aW9uTmF2aWdhdGlvbjsK
LQotICAgICAgICAvLyBXaGV0aGVyIHdlIHNob3VsZCByZXN0cmljdCB0aGUgd2lkdGggb2YgdGhl
IFBvcHVwTGlzdEJveCBvciBub3QuCi0gICAgICAgIC8vIEF1dG9jb21wbGV0ZSBwb3B1cHMgYXJl
IHJlc3RyaWN0ZWQsIGNvbWJvLWJveGVzIChzZWxlY3QgdGFncykgYXJlbid0LgotICAgICAgICBi
b29sIHJlc3RyaWN0V2lkdGhPZkxpc3RCb3g7Ci0KLSAgICAgICAgLy8gQSBoaW50IG9uIHRoZSBk
aXNwbGF5IGRpcmVjdGlvbmFsaXR5IG9mIHRoZSBpdGVtIHRleHQgaW4gcG9wdXAgbWVudS4KLSAg
ICAgICAgLy8KLSAgICAgICAgLy8gV2UgY291bGQgZWl0aGVyIGRpc3BsYXkgdGhlIGl0ZW1zIGlu
IHRoZSBkcm9wLWRvd24gdXNpbmcgaXRzIERPTSBlbGVtZW50J3MKLSAgICAgICAgLy8gZGlyZWN0
aW9uYWxpdHksIG9yIHdlIGNvdWxkIGRpc3BsYXkgdGhlIGl0ZW1zIGluIHRoZSBkcm9wLWRvd24g
dXNpbmcgaGV1cmlzdGljczoKLSAgICAgICAgLy8gc3VjaCBhcyBpbiBpdHMgZmlyc3Qgc3Ryb25n
IGRpcmVjdGlvbmFsaXR5IGNoYXJhY3RlcidzIGRpcmVjdGlvbi4KLSAgICAgICAgLy8gUGxlYXNl
IHJlZmVyIHRvIHRoZSBkaXNjdXNzaW9uIChlc3BlY2lhbGx5IGNvbW1lbnQgIzcgYW5kICMxMCkg
aW4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3
ODg5IGZvciBkZXRhaWxzLgotICAgICAgICBlbnVtIERpcmVjdGlvbmFsaXR5SGludCB7Ci0gICAg
ICAgICAgICAvLyBVc2UgdGhlIERPTSBlbGVtZW50J3MgZGlyZWN0aW9uYWxpdHkgdG8gZGlzcGxh
eSB0aGUgaXRlbSB0ZXh0IGluIHBvcHVwIG1lbnUuCi0gICAgICAgICAgICBET01FbGVtZW50RGly
ZWN0aW9uLAotICAgICAgICAgICAgLy8gVXNlIHRoZSBpdGVtIHRleHQncyBmaXJzdCBzdHJvbmct
ZGlyZWN0aW9uYWwgY2hhcmFjdGVyJ3MgZGlyZWN0aW9uYWxpdHkKLSAgICAgICAgICAgIC8vIHRv
IGRpc3BsYXkgdGhlIGl0ZW0gdGV4dCBpbiBwb3B1cCBtZW51LgotICAgICAgICAgICAgRmlyc3RT
dHJvbmdEaXJlY3Rpb25hbENoYXJhY3RlckRpcmVjdGlvbiwKLSAgICAgICAgfTsKLSAgICAgICAg
RGlyZWN0aW9uYWxpdHlIaW50IGl0ZW1UZXh0RGlyZWN0aW9uYWxpdHlIaW50OworY2xhc3MgUG9w
dXBDb250YWluZXIgOiBwdWJsaWMgRnJhbWVsZXNzU2Nyb2xsVmlldyB7CitwdWJsaWM6CisgICAg
ZW51bSBQb3B1cFR5cGUgeworICAgICAgICBTZWxlY3QsIC8vIEhUTUwgc2VsZWN0IHBvcHVwLgor
ICAgICAgICBTdWdnZXN0aW9uLCAvLyBBdXRvY29tcGxldGUvYXV0b2ZpbGwgcG9wdXAuCiAgICAg
fTsKIAotICAgIGNsYXNzIFBvcHVwQ29udGFpbmVyIDogcHVibGljIEZyYW1lbGVzc1Njcm9sbFZp
ZXcgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UG9wdXBDb250YWlu
ZXI+IGNyZWF0ZShQb3B1cE1lbnVDbGllbnQqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MmKTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxQb3B1cENvbnRhaW5lcj4gY3JlYXRlKFBvcHVwTWVudUNsaWVu
dCosIFBvcHVwVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MmKTsKIAotICAgICAgICAvLyBXaGV0aGVy
IGEga2V5IGV2ZW50IHNob3VsZCBiZSBzZW50IHRvIHRoaXMgcG9wdXAuCi0gICAgICAgIHZpcnR1
YWwgYm9vbCBpc0ludGVyZXN0ZWRJbkV2ZW50Rm9yS2V5KGludCBrZXlDb2RlKTsKKyAgICAvLyBX
aGV0aGVyIGEga2V5IGV2ZW50IHNob3VsZCBiZSBzZW50IHRvIHRoaXMgcG9wdXAuCisgICAgdmly
dHVhbCBib29sIGlzSW50ZXJlc3RlZEluRXZlbnRGb3JLZXkoaW50IGtleUNvZGUpOwogCi0gICAg
ICAgIC8vIEZyYW1lbGVzc1Njcm9sbFZpZXcKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGhp
ZGUoKTsKLSAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNlRG93bkV2ZW50KGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VNb3Zl
RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICAg
ICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQmKTsKKyAgICAvLyBGcmFtZWxlc3NTY3JvbGxWaWV3CisgICAgdmlydHVhbCB2
b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgaGlkZSgpOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZURvd25FdmVudChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VNb3Zl
RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIGhhbmRs
ZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOworICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQm
KTsKIAotICAgICAgICAvLyBQb3B1cENvbnRhaW5lciBtZXRob2RzCisgICAgLy8gUG9wdXBDb250
YWluZXIgbWV0aG9kcwogCi0gICAgICAgIC8vIFNob3cgdGhlIHBvcHVwCi0gICAgICAgIHZvaWQg
c2hvd1BvcHVwKEZyYW1lVmlldyopOworICAgIC8vIFNob3cgdGhlIHBvcHVwCisgICAgdm9pZCBz
aG93UG9wdXAoRnJhbWVWaWV3Kik7CiAKLSAgICAgICAgLy8gVXNlZCBvbiBNYWMgQ2hyb21pdW0g
Zm9yIEhUTUwgc2VsZWN0IHBvcHVwIG1lbnVzLgotICAgICAgICB2b2lkIHNob3dFeHRlcm5hbChj
b25zdCBJbnRSZWN0JiwgRnJhbWVWaWV3KiwgaW50IGluZGV4KTsKKyAgICAvLyBVc2VkIG9uIE1h
YyBDaHJvbWl1bSBmb3IgSFRNTCBzZWxlY3QgcG9wdXAgbWVudXMuCisgICAgdm9pZCBzaG93RXh0
ZXJuYWwoY29uc3QgSW50UmVjdCYsIEZyYW1lVmlldyosIGludCBpbmRleCk7CiAKLSAgICAgICAg
Ly8gU2hvdyB0aGUgcG9wdXAgaW4gdGhlIHNwZWNpZmllZCByZWN0IGZvciB0aGUgc3BlY2lmaWVk
IGZyYW1lLgotICAgICAgICAvLyBOb3RlOiB0aGlzIGNvZGUgd2FzIHNvbWVob3cgYXJiaXRyYXJp
bHkgZmFjdG9yZWQtb3V0IG9mIHRoZSBQb3B1cCBjbGFzcwotICAgICAgICAvLyBzbyBXZWJWaWV3
SW1wbCBjYW4gY3JlYXRlIGEgUG9wdXBDb250YWluZXIuIFRoaXMgbWV0aG9kIGlzIHVzZWQgZm9y
Ci0gICAgICAgIC8vIGRpc3BsYXlpbmcgYXV0byBjb21wbGV0ZSBwb3B1cCBtZW51cyBvbiBNYWMg
Q2hyb21pdW0sIGFuZCBmb3IgYWxsCi0gICAgICAgIC8vIHBvcHVwcyBvbiBvdGhlciBwbGF0Zm9y
bXMuCi0gICAgICAgIHZvaWQgc2hvdyhjb25zdCBJbnRSZWN0JiwgRnJhbWVWaWV3KiwgaW50IGlu
ZGV4KTsKKyAgICAvLyBTaG93IHRoZSBwb3B1cCBpbiB0aGUgc3BlY2lmaWVkIHJlY3QgZm9yIHRo
ZSBzcGVjaWZpZWQgZnJhbWUuCisgICAgLy8gTm90ZTogdGhpcyBjb2RlIHdhcyBzb21laG93IGFy
Yml0cmFyaWx5IGZhY3RvcmVkLW91dCBvZiB0aGUgUG9wdXAgY2xhc3MKKyAgICAvLyBzbyBXZWJW
aWV3SW1wbCBjYW4gY3JlYXRlIGEgUG9wdXBDb250YWluZXIuIFRoaXMgbWV0aG9kIGlzIHVzZWQg
Zm9yCisgICAgLy8gZGlzcGxheWluZyBhdXRvIGNvbXBsZXRlIHBvcHVwIG1lbnVzIG9uIE1hYyBD
aHJvbWl1bSwgYW5kIGZvciBhbGwKKyAgICAvLyBwb3B1cHMgb24gb3RoZXIgcGxhdGZvcm1zLgor
ICAgIHZvaWQgc2hvdyhjb25zdCBJbnRSZWN0JiwgRnJhbWVWaWV3KiwgaW50IGluZGV4KTsKIAot
ICAgICAgICAvLyBIaWRlIHRoZSBwb3B1cC4KLSAgICAgICAgdm9pZCBoaWRlUG9wdXAoKTsKKyAg
ICAvLyBIaWRlIHRoZSBwb3B1cC4KKyAgICB2b2lkIGhpZGVQb3B1cCgpOwogCi0gICAgICAgIC8v
IENvbXB1dGUgc2l6ZSBvZiB3aWRnZXQgYW5kIGNoaWxkcmVuLgotICAgICAgICB2b2lkIGxheW91
dCgpOworICAgIC8vIENvbXB1dGUgc2l6ZSBvZiB3aWRnZXQgYW5kIGNoaWxkcmVuLgorICAgIHZv
aWQgbGF5b3V0KCk7CiAKLSAgICAgICAgUG9wdXBMaXN0Qm94KiBsaXN0Qm94KCkgY29uc3QgeyBy
ZXR1cm4gbV9saXN0Qm94LmdldCgpOyB9CisgICAgUG9wdXBMaXN0Qm94KiBsaXN0Qm94KCkgY29u
c3QgeyByZXR1cm4gbV9saXN0Qm94LmdldCgpOyB9CiAKLSAgICAgICAgLy8gR2V0cyB0aGUgaW5k
ZXggb2YgdGhlIGl0ZW0gdGhhdCB0aGUgdXNlciBpcyBjdXJyZW50bHkgbW91c2VkLW92ZXIgb3IK
LSAgICAgICAgLy8gaGFzIHNlbGVjdGVkIHdpdGggdGhlIGtleWJvYXJkIHVwL2Rvd24gYXJyb3dz
LgotICAgICAgICBpbnQgc2VsZWN0ZWRJbmRleCgpIGNvbnN0OworICAgIC8vIEdldHMgdGhlIGlu
ZGV4IG9mIHRoZSBpdGVtIHRoYXQgdGhlIHVzZXIgaXMgY3VycmVudGx5IG1vdXNlZC1vdmVyIG9y
CisgICAgLy8gaGFzIHNlbGVjdGVkIHdpdGggdGhlIGtleWJvYXJkIHVwL2Rvd24gYXJyb3dzLgor
ICAgIGludCBzZWxlY3RlZEluZGV4KCkgY29uc3Q7CiAKLSAgICAgICAgLy8gUmVmcmVzaCB0aGUg
cG9wdXAgdmFsdWVzIGZyb20gdGhlIFBvcHVwTWVudUNsaWVudC4KLSAgICAgICAgdm9pZCByZWZy
ZXNoKCk7CisgICAgLy8gUmVmcmVzaCB0aGUgcG9wdXAgdmFsdWVzIGZyb20gdGhlIFBvcHVwTWVu
dUNsaWVudC4KKyAgICB2b2lkIHJlZnJlc2goKTsKIAotICAgICAgICAvLyBUaGUgbWVudSBwZXIt
aXRlbSBkYXRhLgotICAgICAgICBjb25zdCBXVEY6OlZlY3RvcjxQb3B1cEl0ZW0qPiYgcG9wdXBE
YXRhKCkgY29uc3Q7CisgICAgLy8gVGhlIG1lbnUgcGVyLWl0ZW0gZGF0YS4KKyAgICBjb25zdCBX
VEY6OlZlY3RvcjxQb3B1cEl0ZW0qPiYgcG9wdXBEYXRhKCkgY29uc3Q7CiAKLSAgICAgICAgLy8g
VGhlIGhlaWdodCBvZiBhIHJvdyBpbiB0aGUgbWVudS4KLSAgICAgICAgaW50IG1lbnVJdGVtSGVp
Z2h0KCkgY29uc3Q7CisgICAgLy8gVGhlIGhlaWdodCBvZiBhIHJvdyBpbiB0aGUgbWVudS4KKyAg
ICBpbnQgbWVudUl0ZW1IZWlnaHQoKSBjb25zdDsKIAotICAgICAgICAvLyBUaGUgc2l6ZSBvZiB0
aGUgZm9udCBiZWluZyB1c2VkLgotICAgICAgICBpbnQgbWVudUl0ZW1Gb250U2l6ZSgpIGNvbnN0
OworICAgIC8vIFRoZSBzaXplIG9mIHRoZSBmb250IGJlaW5nIHVzZWQuCisgICAgaW50IG1lbnVJ
dGVtRm9udFNpemUoKSBjb25zdDsKIAotICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFz
cyBXVEY6OlJlZkNvdW50ZWQ8UG9wdXBDb250YWluZXI+OworICAgIFBvcHVwVHlwZSBwb3B1cFR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3BvcHVwVHlwZTsgfQogCi0gICAgICAgIFBvcHVwQ29udGFp
bmVyKFBvcHVwTWVudUNsaWVudCosIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MmKTsKLSAg
ICAgICAgflBvcHVwQ29udGFpbmVyKCk7Citwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBXVEY6
OlJlZkNvdW50ZWQ8UG9wdXBDb250YWluZXI+OwogCi0gICAgICAgIC8vIFBhaW50IHRoZSBib3Jk
ZXIuCi0gICAgICAgIHZvaWQgcGFpbnRCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYpOworICAgIFBvcHVwQ29udGFpbmVyKFBvcHVwTWVudUNsaWVudCosIFBvcHVwVHlwZSBw
b3B1cFR5cGUsIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MmKTsKKyAgICB+UG9wdXBDb250
YWluZXIoKTsKIAotICAgICAgICBSZWZQdHI8UG9wdXBMaXN0Qm94PiBtX2xpc3RCb3g7CisgICAg
Ly8gUGFpbnQgdGhlIGJvcmRlci4KKyAgICB2b2lkIHBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEludFJlY3QmKTsKIAotICAgICAgICBQb3B1cENvbnRhaW5lclNldHRpbmdzIG1f
c2V0dGluZ3M7Ci0gICAgfTsKKyAgICAvLyBSZXR1cm5zIHRoZSBDaHJvbWVDbGllbnQgb2YgdGhl
IHBhZ2UgdGhpcyBwb3B1cCBpcyBhc3NvY2lhdGVkIHdpdGguCisgICAgQ2hyb21lQ2xpZW50Q2hy
b21pdW0qIGNocm9tZUNsaWVudENocm9taXVtKCk7CisKKyAgICBSZWZQdHI8UG9wdXBMaXN0Qm94
PiBtX2xpc3RCb3g7CisgICAgUmVmUHRyPEZyYW1lVmlldz4gbV9mcmFtZVZpZXc7CisKKyAgICBQ
b3B1cENvbnRhaW5lclNldHRpbmdzIG1fc2V0dGluZ3M7CisgICAgUG9wdXBUeXBlIG1fcG9wdXBU
eXBlOworfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
cmV2aXNpb24gNTYwMTQpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDMtMTUgIEpheSBDYW1wYW4gIDxqY2FtcGFuQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWFraW5nIENocm9taXVtIHNlbGVjdCBwb3B1cHMgbm90IHN0ZWFsIGFjdGl2YXRpb24gZnJv
bSB0aGUgYnJvd3Nlci4KKyAgICAgICAgU2VsZWN0IHBvcHVwcyBhcmUgbm93IGxpa2UgYXV0b2Nv
bXBsZXRlIHBvcHVwcywgc2hvd24gaW4gbm9uLWFjdGl2YXRlZAorICAgICAgICB3aW5kb3dzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYwNjIKKwor
ICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudSk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpwb3B1cE9wZW5lZCk6
CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnBvcHVwQ2xvc2VkKToKKyAgICAg
ICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Oik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpt
b3VzZURvd24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6a2V5RXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2VsZWN0UG9wdXBIYW5kbGVLZXlFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpoaWRlU2VsZWN0UG9wdXApOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6cG9wdXBPcGVuZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6cG9wdXBDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0
Rm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YXBwbHlBdXRvRmlsbFN1Z2dl
c3Rpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5QXV0b2NvbXBsZXRl
U3VnZ2VzdGlvbnMpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTAzLTE1
ICBNYXJjdXMgQnVsYWNoICA8YnVsYWNoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBKZXJlbXkgT3Jsb3cuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdD
bGllbnQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0Ns
aWVudC5oCShyZXZpc2lvbiA1NjAxMikKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmll
d0NsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw4ICs3MywxMSBAQCBwdWJsaWM6CiAKICAg
ICAvLyBDcmVhdGUgYSBuZXcgV2ViUG9wdXBNZW51LiAgSW4gdGhlIHNlY29uZCBmb3JtLCB0aGUg
Y2xpZW50IGlzCiAgICAgLy8gcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudHMg
b2YgdGhlIHBvcHVwIG1lbnUuCi0gICAgdmlydHVhbCBXZWJXaWRnZXQqIGNyZWF0ZVBvcHVwTWVu
dShib29sIGFjdGl2YXRhYmxlKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBXZWJXaWRnZXQq
IGNyZWF0ZVBvcHVwTWVudSgpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFdlYldpZGdldCog
Y3JlYXRlUG9wdXBNZW51KGNvbnN0IFdlYlBvcHVwTWVudUluZm8mKSB7IHJldHVybiAwOyB9Cisg
ICAgLy8gRGVwcmVjYXRlZCBtZXRob2QuCisgICAgdmlydHVhbCBXZWJXaWRnZXQqIGNyZWF0ZVBv
cHVwTWVudShib29sIGFjdGl2YXRhYmxlKSB7IHJldHVybiAwOyB9CisKIAogICAgIC8vIENyZWF0
ZSBhIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2Ugb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlz
IFdlYlZpZXcuCiAgICAgdmlydHVhbCBXZWJTdG9yYWdlTmFtZXNwYWNlKiBjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSgpIHsgcmV0dXJuIDA7IH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvQ2hyb21lQ2xpZW50SW1wbC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA1NjAxMikKKysrIFdlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5NCw3ICs1
OTQsNiBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6Omljb25Gb3JGaWxlcyhjb25zCiAKIHZvaWQg
Q2hyb21lQ2xpZW50SW1wbDo6cG9wdXBPcGVuZWQoUG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFp
bmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBi
b3VuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWN0aXZhdGFi
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFuZGxlRXh0ZXJu
YWxseSkKIHsKICAgICBpZiAoIW1fd2ViVmlldy0+Y2xpZW50KCkpCkBAIC02MDUsMTIgKzYwNCwy
MiBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OnBvcHVwT3BlbmVkKFBvcHVwCiAgICAgICAgIFdl
YlBvcHVwTWVudUluZm8gcG9wdXBJbmZvOwogICAgICAgICBnZXRQb3B1cE1lbnVJbmZvKHBvcHVw
Q29udGFpbmVyLCAmcG9wdXBJbmZvKTsKICAgICAgICAgd2Vid2lkZ2V0ID0gbV93ZWJWaWV3LT5j
bGllbnQoKS0+Y3JlYXRlUG9wdXBNZW51KHBvcHVwSW5mbyk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IHdlYndpZGdldCA9IG1fd2ViVmlldy0+Y2xpZW50KCktPmNyZWF0ZVBvcHVwTWVudShhY3RpdmF0
YWJsZSk7Ci0KKyAgICB9IGVsc2UgeworICAgICAgICB3ZWJ3aWRnZXQgPSBtX3dlYlZpZXctPmNs
aWVudCgpLT5jcmVhdGVQb3B1cE1lbnUoKTsKKyAgICAgICAgaWYgKCF3ZWJ3aWRnZXQpIHsKKyAg
ICAgICAgICAgIC8vIFRyeSB0aGUgZGVwcmVjYXRlZCBtZXRob2QuCisgICAgICAgICAgICB3ZWJ3
aWRnZXQgPSBtX3dlYlZpZXctPmNsaWVudCgpLT5jcmVhdGVQb3B1cE1lbnUoZmFsc2UpOworICAg
ICAgICB9ICAgIAorICAgIH0KKyAgICBtX3dlYlZpZXctPnBvcHVwT3BlbmVkKHBvcHVwQ29udGFp
bmVyKTsKICAgICBzdGF0aWNfY2FzdDxXZWJQb3B1cE1lbnVJbXBsKj4od2Vid2lkZ2V0KS0+SW5p
dChwb3B1cENvbnRhaW5lciwgYm91bmRzKTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnRJbXBsOjpw
b3B1cENsb3NlZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpCit7Cisg
ICAgbV93ZWJWaWV3LT5wb3B1cENsb3NlZChwb3B1cENvbnRhaW5lcik7Cit9CisKIHZvaWQgQ2hy
b21lQ2xpZW50SW1wbDo6c2V0Q3Vyc29yKGNvbnN0IFdlYkN1cnNvckluZm8mIGN1cnNvcikKIHsK
ICAgICBpZiAobV9pZ25vcmVOZXh0U2V0Q3Vyc29yKSB7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvQ2hyb21lQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA1NjAxMikKKysrIFdlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsOCArMTM2LDgg
QEAgcHVibGljOgogICAgIC8vIENocm9tZUNsaWVudENocm9taXVtIG1ldGhvZHM6CiAgICAgdmly
dHVhbCB2b2lkIHBvcHVwT3BlbmVkKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBwb3B1cENvbnRh
aW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgYm91bmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFjdGl2YXRhYmxl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhhbmRsZUV4dGVybmFsbHkpOwor
ICAgIHZpcnR1YWwgdm9pZCBwb3B1cENsb3NlZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9w
dXBDb250YWluZXIpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2Jq
ZWN0U3RhdGUoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCopOwogCiAgICAgLy8gQ2hyb21l
Q2xpZW50SW1wbDoKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlz
aW9uIDU2MDEyKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0OSwxMSArMTQ5LDcgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShEcmFnT3BlcmF0aQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShEcmFnT3BlcmF0aW9u
RGVsZXRlKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRHJhZ09wZXJhdGlvbkV2ZXJ5
KTsKIAotLy8gTm90ZSB0aGF0IGZvY3VzT25TaG93IGlzIGZhbHNlIHNvIHRoYXQgdGhlIHN1Z2dl
c3Rpb25zIHBvcHVwIGlzIHNob3duIG5vdAotLy8gYWN0aXZhdGVkLiAgV2UgbmVlZCB0aGUgcGFn
ZSB0byBzdGlsbCBoYXZlIGZvY3VzIHNvIHRoZSB1c2VyIGNhbiBrZWVwIHR5cGluZwotLy8gd2hp
bGUgdGhlIHBvcHVwIGlzIHNob3dpbmcuCiBzdGF0aWMgY29uc3QgUG9wdXBDb250YWluZXJTZXR0
aW5ncyBzdWdnZXN0aW9uc1BvcHVwU2V0dGluZ3MgPSB7Ci0gICAgZmFsc2UsICAvLyBmb2N1c09u
U2hvdwogICAgIGZhbHNlLCAgLy8gc2V0VGV4dE9uSW5kZXhDaGFuZ2UKICAgICBmYWxzZSwgIC8v
IGFjY2VwdE9uQWJhbmRvbgogICAgIHRydWUsICAgLy8gbG9vcFNlbGVjdGlvbk5hdmlnYXRpb24K
QEAgLTMyNyw2ICszMjMsMTAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VEb3duKGNvbnN0IFdl
Yk1vdQogICAgIGlmICghbWFpbkZyYW1lSW1wbCgpIHx8ICFtYWluRnJhbWVJbXBsKCktPmZyYW1l
VmlldygpKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBJZiB0aGVyZSBpcyBhIHNlbGVjdCBw
b3B1cCBvcGVuZWQsIGNsb3NlIGl0IGFzIHRoZSB1c2VyIGlzIGNsaWNraW5nIG9uCisgICAgLy8g
dGhlIHBhZ2UgKG91dHNpZGUgb2YgdGhlIHBvcHVwKS4KKyAgICBoaWRlU2VsZWN0UG9wdXAoKTsK
KwogICAgIG1fbGFzdE1vdXNlRG93blBvaW50ID0gV2ViUG9pbnQoZXZlbnQueCwgZXZlbnQueSk7
CiAgICAgbV9oYXZlTW91c2VDYXB0dXJlID0gdHJ1ZTsKIApAQCAtNDc0LDYgKzQ3NCwxMCBAQCBi
b29sIFdlYlZpZXdJbXBsOjprZXlFdmVudChjb25zdCBXZWJLZXliCiAgICAgLy8gZXZlbnQuCiAg
ICAgbV9zdXBwcmVzc05leHRLZXlwcmVzc0V2ZW50ID0gZmFsc2U7CiAKKyAgICAvLyBHaXZlIGFu
eSBzZWxlY3QgcG9wdXAgYSBjaGFuY2UgYXQgY29uc3VtaW5nIHRoZSBrZXkgZXZlbnQuCisgICAg
aWYgKHNlbGVjdFBvcHVwSGFuZGxlS2V5RXZlbnQoZXZlbnQpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKwogICAgIC8vIEdpdmUgQXV0b2NvbXBsZXRlIGEgY2hhbmNlIHRvIGNvbnN1bWUgdGhlIGtl
eSBldmVudHMgaXQgaXMgaW50ZXJlc3RlZCBpbi4KICAgICBpZiAoYXV0b2NvbXBsZXRlSGFuZGxl
S2V5RXZlbnQoZXZlbnQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUyMyw2ICs1MjcsMTQg
QEAgYm9vbCBXZWJWaWV3SW1wbDo6a2V5RXZlbnQoY29uc3QgV2ViS2V5YgogICAgIHJldHVybiBr
ZXlFdmVudERlZmF1bHQoZXZlbnQpOwogfQogCitib29sIFdlYlZpZXdJbXBsOjpzZWxlY3RQb3B1
cEhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQoreworICAgIGlm
ICghbV9zZWxlY3RQb3B1cCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVy
biBtX3NlbGVjdFBvcHVwLT5oYW5kbGVLZXlFdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWls
ZGVyKGV2ZW50KSk7Cit9CisKIGJvb2wgV2ViVmlld0ltcGw6OmF1dG9jb21wbGV0ZUhhbmRsZUtl
eUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAgIGlmICghbV9zdWdn
ZXN0aW9uc1BvcHVwU2hvd2luZwpAQCAtNzkzLDYgKzgwNSwxMiBAQCBib29sIFdlYlZpZXdJbXBs
OjpzY3JvbGxWaWV3V2l0aEtleWJvYXJkCiAgICAgcmV0dXJuIHByb3BhZ2F0ZVNjcm9sbChzY3Jv
bGxEaXJlY3Rpb24sIHNjcm9sbEdyYW51bGFyaXR5KTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6
aGlkZVNlbGVjdFBvcHVwKCkKK3sKKyAgICBpZiAobV9zZWxlY3RQb3B1cC5nZXQoKSkKKyAgICAg
ICAgbV9zZWxlY3RQb3B1cC0+aGlkZVBvcHVwKCk7Cit9CisKIGJvb2wgV2ViVmlld0ltcGw6OnBy
b3BhZ2F0ZVNjcm9sbChTY3JvbGxEaXJlY3Rpb24gc2Nyb2xsRGlyZWN0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNjcm9sbEdyYW51bGFyaXR5IHNjcm9sbEdyYW51bGFy
aXR5KQogewpAQCAtODEyLDYgKzgzMCwyMiBAQCBib29sIFdlYlZpZXdJbXBsOjpwcm9wYWdhdGVT
Y3JvbGwoU2Nyb2xsCiAgICAgcmV0dXJuIHNjcm9sbEhhbmRsZWQ7CiB9CiAKK3ZvaWQgIFdlYlZp
ZXdJbXBsOjpwb3B1cE9wZW5lZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWlu
ZXIpCit7CisgICAgaWYgKHBvcHVwQ29udGFpbmVyLT5wb3B1cFR5cGUoKSA9PSBXZWJDb3JlOjpQ
b3B1cENvbnRhaW5lcjo6U2VsZWN0KSB7CisgICAgICAgIEFTU0VSVCghbV9zZWxlY3RQb3B1cCk7
CisgICAgICAgIG1fc2VsZWN0UG9wdXAgPSBwb3B1cENvbnRhaW5lcjsKKyAgICB9Cit9CisKK3Zv
aWQgIFdlYlZpZXdJbXBsOjpwb3B1cENsb3NlZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9w
dXBDb250YWluZXIpCit7CisgICAgaWYgKHBvcHVwQ29udGFpbmVyLT5wb3B1cFR5cGUoKSA9PSBX
ZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6U2VsZWN0KSB7CisgICAgICAgIEFTU0VSVChtX3NlbGVj
dFBvcHVwLmdldCgpKTsKKyAgICAgICAgbV9zZWxlY3RQb3B1cCA9IDA7CisgICAgfQorfQorCiBG
cmFtZSogV2ViVmlld0ltcGw6OmZvY3VzZWRXZWJDb3JlRnJhbWUoKQogewogICAgIHJldHVybiBt
X3BhZ2UuZ2V0KCkgPyBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKSA6IDA7CkBAIC0xMDQzLDYgKzEwNzcsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRGb2N1
cyhib29sIGVuYWJsZSkKICAgICAgICAgbV9pbWVBY2NlcHRFdmVudHMgPSB0cnVlOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIGhpZGVTdWdnZXN0aW9uc1BvcHVwKCk7CisgICAgICAgIGhpZGVTZWxl
Y3RQb3B1cCgpOwogCiAgICAgICAgIC8vIENsZWFyIGZvY3VzIG9uIHRoZSBjdXJyZW50bHkgZm9j
dXNlZCBmcmFtZSBpZiBhbnkuCiAgICAgICAgIGlmICghbV9wYWdlLmdldCgpKQpAQCAtMTY2OCw2
ICsxNzAzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6YXBwbHlBdXRvRmlsbFN1Z2dlc3RpbwogCiAg
ICAgaWYgKCFtX2F1dG9GaWxsUG9wdXAuZ2V0KCkpIHsKICAgICAgICAgbV9hdXRvRmlsbFBvcHVw
ID0gUG9wdXBDb250YWluZXI6OmNyZWF0ZShtX3N1Z2dlc3Rpb25zUG9wdXBDbGllbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9wdXBDb250YWlu
ZXI6OlN1Z2dlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3VnZ2VzdGlvbnNQb3B1cFNldHRpbmdzKTsKICAgICB9CiAKQEAgLTE3MjMsNiAr
MTc1OSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5QXV0b2NvbXBsZXRlU3VnZ2UKIAogICAg
IGlmICghbV9hdXRvY29tcGxldGVQb3B1cC5nZXQoKSkgewogICAgICAgICBtX2F1dG9jb21wbGV0
ZVBvcHVwID0gUG9wdXBDb250YWluZXI6OmNyZWF0ZShtX3N1Z2dlc3Rpb25zUG9wdXBDbGllbnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBv
cHVwQ29udGFpbmVyOjpTdWdnZXN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9uc1BvcHVwU2V0dGluZ3MpOwogICAgIH0K
IApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCShyZXZpc2lvbiA1NjAxMikKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjkw
LDYgKzI5MCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gd2FzIHNjcm9sbGVkLgogICAgIGJvb2wgcHJv
cGFnYXRlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3Jh
bnVsYXJpdHkpOwogCisgICAgLy8gTm90aWZpY2F0aW9uIHRoYXQgYSBwb3B1cCB3YXMgb3BlbmVk
L2Nsb3NlZC4KKyAgICB2b2lkIHBvcHVwT3BlbmVkKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBw
b3B1cENvbnRhaW5lcik7CisgICAgdm9pZCBwb3B1cENsb3NlZChXZWJDb3JlOjpQb3B1cENvbnRh
aW5lciogcG9wdXBDb250YWluZXIpOworCiAgICAgLy8gSEFDSzogY3VycmVudElucHV0RXZlbnQo
KSBpcyBmb3IgQ2hyb21lQ2xpZW50SW1wbDo6c2hvdygpLCB1bnRpbCB3ZSBjYW4KICAgICAvLyBm
aXggV2ViS2l0IHRvIHBhc3MgZW5vdWdoIGluZm9ybWF0aW9uIHVwIGludG8gQ2hyb21lQ2xpZW50
OjpzaG93KCkgc28gd2UKICAgICAvLyBjYW4gZGVjaWRlIGlmIHRoZSB3aW5kb3cub3BlbiBldmVu
dCB3YXMgY2F1c2VkIGJ5IGEgbWlkZGxlLW1vdXNlIGNsaWNrCkBAIC0zMDgsNiArMzEyLDkgQEAg
cHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IHdhcyBhY3R1YWxseSBw
cm9jZXNzZWQuCiAgICAgYm9vbCBrZXlFdmVudERlZmF1bHQoY29uc3QgV2ViS2V5Ym9hcmRFdmVu
dCYpOwogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzZWxlY3QgcG9wdXAgaGFzIGNvbnN1
bWVkIHRoZSBldmVudC4KKyAgICBib29sIHNlbGVjdFBvcHVwSGFuZGxlS2V5RXZlbnQoY29uc3Qg
V2ViS2V5Ym9hcmRFdmVudCYpOworCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBhdXRvY29t
cGxlIGhhcyBjb25zdW1lZCB0aGUgZXZlbnQuCiAgICAgYm9vbCBhdXRvY29tcGxldGVIYW5kbGVL
ZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAKQEAgLTMxOSw2ICszMjYsOSBAQCBw
cml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgdmlldyB3YXMgc2Nyb2xsZWQuCiAg
ICAgYm9vbCBzY3JvbGxWaWV3V2l0aEtleWJvYXJkKGludCBrZXlDb2RlLCBpbnQgbW9kaWZpZXJz
KTsKIAorICAgIC8vIEhpZGVzIHRoZSBzZWxlY3QgcG9wdXAgaWYgb25lIGlzIG9wZW5lZC4KKyAg
ICB2b2lkIGhpZGVTZWxlY3RQb3B1cCgpOworCiAgICAgLy8gQ29udmVydHMgfHBvc3wgZnJvbSB3
aW5kb3cgY29vcmRpbmF0ZXMgdG8gY29udGVudHMgY29vcmRpbmF0ZXMgYW5kIGdldHMKICAgICAv
LyB0aGUgSGl0VGVzdFJlc3VsdCBmb3IgaXQuCiAgICAgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCBo
aXRUZXN0UmVzdWx0Rm9yV2luZG93UG9zKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CkBAIC00
MjYsNiArNDM2LDkgQEAgcHJpdmF0ZToKICAgICAvLyBBIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQg
c3VnZ2VzdGlvbnMgcG9wdXAuICBXZSBkbyBub3Qgb3duIHRoaXMgcG9pbnRlci4KICAgICBXZWJD
b3JlOjpQb3B1cENvbnRhaW5lciogbV9zdWdnZXN0aW9uc1BvcHVwOwogCisgICAgLy8gVGhlIHBv
cHVwIGFzc29jaWF0ZWQgd2l0aCBhIHNlbGVjdCBlbGVtZW50LgorICAgIFJlZlB0cjxXZWJDb3Jl
OjpQb3B1cENvbnRhaW5lcj4gbV9zZWxlY3RQb3B1cDsKKwogICAgIC8vIFRoZSBBdXRvRmlsbCBz
dWdnZXN0aW9ucyBwb3B1cC4KICAgICBSZWZQdHI8V2ViQ29yZTo6UG9wdXBDb250YWluZXI+IG1f
YXV0b0ZpbGxQb3B1cDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51469</attachid>
            <date>2010-03-23 18:10:27 -0700</date>
            <delta_ts>2010-03-24 11:41:45 -0700</delta_ts>
            <desc>Fix a crasher on LayoutTests</desc>
            <filename>select.patch</filename>
            <type>text/plain</type>
            <size>32540</size>
            <attacher name="Jay Campan">jcampan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU2NDI5KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwzNyBAQAorMjAxMC0wMy0yMyAgSmF5IENhbXBhbiAgPGpjYW1wYW5AZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtpbmcgQ2hyb21pdW0gc2VsZWN0IHBvcHVwcyBub3Qgc3RlYWwgYWN0aXZhdGlvbiBmcm9tIHRo
ZSBicm93c2VyLgorICAgICAgICBTZWxlY3QgcG9wdXBzIGFyZSBub3cgbGlrZSBhdXRvY29tcGxl
dGUgcG9wdXBzLCBzaG93biBpbiBub24tYWN0aXZhdGVkCisgICAgICAgIHdpbmRvd3MuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjA2MgorCisgICAg
ICAgICogcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Oik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OnNldE1heEhlaWdodCk6CisgICAg
ICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OmRpc2Nvbm5lY3RDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpQb3B1cExpc3RCb3gpOgorICAgICAgICAoV2ViQ29yZTo6
UG9wdXBDb250YWluZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5l
cjo6UG9wdXBDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBDb250YWluZXI6OnNo
b3dQb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6c2hvd0V4dGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjpoaWRlUG9wdXApOgorICAgICAg
ICAoV2ViQ29yZTo6UG9wdXBDb250YWluZXI6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpQ
b3B1cENvbnRhaW5lcjo6Y2hyb21lQ2xpZW50Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6
UG9wdXBMaXN0Qm94OjpoaWRlUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94
OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51Ojp+UG9wdXBNZW51KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudTo6c2hvdyk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwSXRlbTo6
KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwSXRlbTo6UG9wdXBJdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvcHVwQ29udGFpbmVyU2V0dGluZ3M6Oik6CisgICAgICAgIChXZWJDb3JlOjpQb3B1
cENvbnRhaW5lcjo6KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjpsaXN0Qm94
KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyOjpwb3B1cFR5cGUpOgorCiAyMDEw
LTAzLTIzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgSm9obiBTdWxsaXZhbi4KSW5kZXg6IFdlYkNvcmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVD
bGllbnRDaHJvbWl1bS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9wYWdlL2Nocm9taXVtL0No
cm9tZUNsaWVudENocm9taXVtLmgJKHJldmlzaW9uIDU2NDI1KQorKysgV2ViQ29yZS9wYWdlL2No
cm9taXVtL0Nocm9tZUNsaWVudENocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4
LDEwIEBAIHB1YmxpYzoKICAgICAvLyBJZiBoYW5kbGVFeHRlcm5hbCBpcyB0cnVlLCB0aGVuIGRy
YXdpbmcgYW5kIGlucHV0IGhhbmRsaW5nIGZvciB0aGUKICAgICAvLyBwb3B1cCB3aWxsIGJlIGhh
bmRsZWQgYnkgdGhlIGV4dGVybmFsIGVtYmVkZGVyLgogICAgIHZpcnR1YWwgdm9pZCBwb3B1cE9w
ZW5lZChQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIsIGNvbnN0IEludFJlY3QmIGJvdW5k
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmb2N1c09uU2hvdywgYm9vbCBo
YW5kbGVFeHRlcm5hbCkgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhh
bmRsZUV4dGVybmFsKSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIC8v
IE5vdGlmaWVzIHRoZSBjbGllbnQgYSBwb3B1cCB3YXMgY2xvc2VkLgorICAgIHZpcnR1YWwgdm9p
ZCBwb3B1cENsb3NlZChQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpID0gMDsKIAogICAg
IC8vIE5vdGlmaWVzIGVtYmVkZGVyIHRoYXQgdGhlIHN0YXRlIG9mIGFuIGFjY2Vzc2liaWxpdHkg
b2JqZWN0IGhhcyBjaGFuZ2VkLgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VBY2Nlc3NpYmls
aXR5T2JqZWN0U3RhdGUoQWNjZXNzaWJpbGl0eU9iamVjdCopID0gMDsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAJKHJldmlzaW9u
IDU2NDI1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDYgQEAgc3RhdGljIGNvbnN0IFRpbWVTdGFt
cCBrVHlwZUFoZWFkVGltZW91dAogLy8gVGhlIHNldHRpbmdzIHVzZWQgZm9yIHRoZSBkcm9wIGRv
d24gbWVudS4KIC8vIFRoaXMgaXMgdGhlIGRlbGVnYXRlIHVzZWQgaWYgbm9uZSBpcyBwcm92aWRl
ZC4KIHN0YXRpYyBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzIGRyb3BEb3duU2V0dGluZ3Mg
PSB7Ci0gICAgdHJ1ZSwgICAvLyBmb2N1c09uU2hvdwogICAgIHRydWUsICAgLy8gc2V0VGV4dE9u
SW5kZXhDaGFuZ2UKICAgICB0cnVlLCAgIC8vIGFjY2VwdE9uQWJhbmRvbgogICAgIGZhbHNlLCAg
Ly8gbG9vcFNlbGVjdGlvbk5hdmlnYXRpb24KQEAgLTE0MSw2ICsxNDAsMTAgQEAgcHVibGljOgog
ICAgIC8vIEdldHMgdGhlIGhlaWdodCBvZiBhIHJvdy4KICAgICBpbnQgZ2V0Um93SGVpZ2h0KGlu
dCBpbmRleCk7CiAKKyAgICB2b2lkIHNldE1heEhlaWdodChpbnQgbWF4SGVpZ2h0KSB7IG1fbWF4
SGVpZ2h0ID0gbWF4SGVpZ2h0OyB9CisKKyAgICB2b2lkIGRpc2Nvbm5lY3RDbGllbnQoKSB7IG1f
cG9wdXBDbGllbnQgPSAwOyB9CisKICAgICBjb25zdCBWZWN0b3I8UG9wdXBJdGVtKj4mIGl0ZW1z
KCkgY29uc3QgeyByZXR1cm4gbV9pdGVtczsgfQogCiBwcml2YXRlOgpAQCAtMTU0LDYgKzE1Nyw3
IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9hY2NlcHRlZEluZGV4T25BYmFuZG9uKC0xKQogICAg
ICAgICAsIG1fdmlzaWJsZVJvd3MoMCkKICAgICAgICAgLCBtX2Jhc2VXaWR0aCgwKQorICAgICAg
ICAsIG1fbWF4SGVpZ2h0KGtNYXhIZWlnaHQpCiAgICAgICAgICwgbV9wb3B1cENsaWVudChjbGll
bnQpCiAgICAgICAgICwgbV9yZXBlYXRpbmdDaGFyKDApCiAgICAgICAgICwgbV9sYXN0Q2hhclRp
bWUoMCkKQEAgLTE2Niw4ICsxNzAsNiBAQCBwcml2YXRlOgogICAgICAgICBjbGVhcigpOwogICAg
IH0KIAotICAgIHZvaWQgZGlzY29ubmVjdENsaWVudCgpIHsgbV9wb3B1cENsaWVudCA9IDA7IH0K
LQogICAgIC8vIENsb3NlcyB0aGUgcG9wdXAKICAgICB2b2lkIGFiYW5kb24oKTsKIApAQCAtMjQx
LDYgKzI0Myw5IEBAIHByaXZhdGU6CiAgICAgLy8gT3VyIHN1Z2dlc3RlZCB3aWR0aCwgbm90IGlu
Y2x1ZGluZyBzY3JvbGxiYXIuCiAgICAgaW50IG1fYmFzZVdpZHRoOwogCisgICAgLy8gVGhlIG1h
eGltdW0gaGVpZ2h0IHdlIGNhbiBiZSB3aXRob3V0IGJlaW5nIG9mZi1zY3JlZW4uCisgICAgaW50
IG1fbWF4SGVpZ2h0OworCiAgICAgLy8gQSBsaXN0IG9mIHRoZSBvcHRpb25zIGNvbnRhaW5lZCB3
aXRoaW4gdGhlIDxzZWxlY3Q+CiAgICAgVmVjdG9yPFBvcHVwSXRlbSo+IG1faXRlbXM7CiAKQEAg
LTI5NywxNCArMzAyLDE3IEBAIHN0YXRpYyBQbGF0Zm9ybVdoZWVsRXZlbnQgY29uc3RydWN0UmVs
YXQKIAogLy8gc3RhdGljCiBQYXNzUmVmUHRyPFBvcHVwQ29udGFpbmVyPiBQb3B1cENvbnRhaW5l
cjo6Y3JlYXRlKFBvcHVwTWVudUNsaWVudCogY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3B1cFR5cGUgcG9wdXBUeXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb3B1cENv
bnRhaW5lclNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBv
cHVwQ29udGFpbmVyKGNsaWVudCwgc2V0dGluZ3MpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFBvcHVwQ29udGFpbmVyKGNsaWVudCwgcG9wdXBUeXBlLCBzZXR0aW5ncykpOwogfQogCiBQb3B1
cENvbnRhaW5lcjo6UG9wdXBDb250YWluZXIoUG9wdXBNZW51Q2xpZW50KiBjbGllbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9wdXBUeXBlIHBvcHVwVHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzJiBzZXR0
aW5ncykKICAgICA6IG1fbGlzdEJveChQb3B1cExpc3RCb3g6OmNyZWF0ZShjbGllbnQsIHNldHRp
bmdzKSkKKyAgICAsIG1fcG9wdXBUeXBlKHBvcHVwVHlwZSkgIAogICAgICwgbV9zZXR0aW5ncyhz
ZXR0aW5ncykKIHsKICAgICBzZXRTY3JvbGxiYXJNb2RlcyhTY3JvbGxiYXJBbHdheXNPZmYsIFNj
cm9sbGJhckFsd2F5c09mZik7CkBAIC0zMjEsMjEgKzMyOSw0NCBAQCB2b2lkIFBvcHVwQ29udGFp
bmVyOjpzaG93UG9wdXAoRnJhbWVWaWV3CiAgICAgLy8gUHJlLWxheW91dCwgb3VyIHNpemUgbWF0
Y2hlcyB0aGUgPHNlbGVjdD4gZHJvcGRvd24gY29udHJvbC4KICAgICBpbnQgc2VsZWN0SGVpZ2h0
ID0gZnJhbWVSZWN0KCkuaGVpZ2h0KCk7CiAKKyAgICAvLyBSZXNldCB0aGUgbWF4IGhlaWdodCB0
byBpdHMgZGVmYXVsdCB2YWx1ZSwgaXQgd2lsbCBiZSByZWNvbXB1dGVkIGJlbG93CisgICAgLy8g
aWYgbmVjZXNzYXJ5LgorICAgIG1fbGlzdEJveC0+c2V0TWF4SGVpZ2h0KGtNYXhIZWlnaHQpOwor
CiAgICAgLy8gTGF5IGV2ZXJ5dGhpbmcgb3V0IHRvIGZpZ3VyZSBvdXQgb3VyIHByZWZlcnJlZCBz
aXplLCB0aGVuIHRlbGwgdGhlIHZpZXcncwogICAgIC8vIFdpZGdldENsaWVudCBhYm91dCBpdC4g
IEl0IHNob3VsZCBhc3NpZ24gdXMgYSBjbGllbnQuCiAgICAgbGF5b3V0KCk7CiAKLSAgICBDaHJv
bWVDbGllbnRDaHJvbWl1bSogY2hyb21lQ2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50
Q2hyb21pdW0qPigKLSAgICAgICAgdmlldy0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xp
ZW50KCkpOworICAgIG1fZnJhbWVWaWV3ID0gdmlldzsKKyAgICBDaHJvbWVDbGllbnRDaHJvbWl1
bSogY2hyb21lQ2xpZW50ID0gY2hyb21lQ2xpZW50Q2hyb21pdW0oKTsKICAgICBpZiAoY2hyb21l
Q2xpZW50KSB7CiAgICAgICAgIC8vIElmIHRoZSBwb3B1cCB3b3VsZCBleHRlbmQgcGFzdCB0aGUg
Ym90dG9tIG9mIHRoZSBzY3JlZW4sIG9wZW4gdXB3YXJkcwogICAgICAgICAvLyBpbnN0ZWFkLgog
ICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuID0gc2NyZWVuQXZhaWxhYmxlUmVjdCh2aWV3KTsKICAg
ICAgICAgSW50UmVjdCB3aWRnZXRSZWN0ID0gY2hyb21lQ2xpZW50LT53aW5kb3dUb1NjcmVlbihm
cmFtZVJlY3QoKSk7Ci0gICAgICAgIGlmICh3aWRnZXRSZWN0LmJvdHRvbSgpID4gc3RhdGljX2Nh
c3Q8aW50PihzY3JlZW4uYm90dG9tKCkpKQotICAgICAgICAgICAgd2lkZ2V0UmVjdC5tb3ZlKDAs
IC0od2lkZ2V0UmVjdC5oZWlnaHQoKSArIHNlbGVjdEhlaWdodCkpOwogCi0gICAgICAgIGNocm9t
ZUNsaWVudC0+cG9wdXBPcGVuZWQodGhpcywgd2lkZ2V0UmVjdCwgbV9zZXR0aW5ncy5mb2N1c09u
U2hvdywgZmFsc2UpOworICAgICAgICBpZiAod2lkZ2V0UmVjdC5ib3R0b20oKSA+IHN0YXRpY19j
YXN0PGludD4oc2NyZWVuLmJvdHRvbSgpKSkgeworICAgICAgICAgICAgaWYgKHdpZGdldFJlY3Qu
eSgpIC0gd2lkZ2V0UmVjdC5oZWlnaHQoKSAtIHNlbGVjdEhlaWdodCA+IDApIHsKKyAgICAgICAg
ICAgICAgICAvLyBUaGVyZSBpcyBlbm91Z2ggcm9vbSB0byBvcGVuIHVwd2FyZHMuCisgICAgICAg
ICAgICAgICAgd2lkZ2V0UmVjdC5tb3ZlKDAsIC0od2lkZ2V0UmVjdC5oZWlnaHQoKSArIHNlbGVj
dEhlaWdodCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBGaWd1
cmUgd2hldGhlciB1cHdhcmRzIG9yIGRvd253YXJkcyBoYXMgbW9yZSByb29tIGFuZCBzZXQgdGhl
CisgICAgICAgICAgICAgICAgLy8gbWF4aW11bSBudW1iZXIgb2YgaXRlbXMuCisgICAgICAgICAg
ICAgICAgaW50IHNwYWNlQWJvdmUgPSB3aWRnZXRSZWN0LnkoKSAtIHNlbGVjdEhlaWdodDsKKyAg
ICAgICAgICAgICAgICBpbnQgc3BhY2VCZWxvdyA9IHNjcmVlbi5ib3R0b20oKSAtIHdpZGdldFJl
Y3QueSgpOworICAgICAgICAgICAgICAgIGlmIChzcGFjZUFib3ZlID4gc3BhY2VCZWxvdykKKyAg
ICAgICAgICAgICAgICAgICAgbV9saXN0Qm94LT5zZXRNYXhIZWlnaHQoc3BhY2VBYm92ZSk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtX2xpc3RCb3gtPnNldE1h
eEhlaWdodChzcGFjZUJlbG93KTsKKyAgICAgICAgICAgICAgICBsYXlvdXQoKTsKKyAgICAgICAg
ICAgICAgICAvLyBPdXIgc2l6ZSBoYXMgY2hhbmdlZCwgcmVjb21wdXRlIHRoZSB3aWRnZXRSZWN0
LgorICAgICAgICAgICAgICAgIHdpZGdldFJlY3QgPSBjaHJvbWVDbGllbnQtPndpbmRvd1RvU2Ny
ZWVuKGZyYW1lUmVjdCgpKTsKKyAgICAgICAgICAgICAgICAvLyBBbmQgbW92ZSB1cHdhcmRzIGlm
IG5lY2Vzc2FyeS4KKyAgICAgICAgICAgICAgICBpZiAoc3BhY2VBYm92ZSA+IHNwYWNlQmVsb3cp
CisgICAgICAgICAgICAgICAgICAgIHdpZGdldFJlY3QubW92ZSgwLCAtKHdpZGdldFJlY3QuaGVp
Z2h0KCkgKyBzZWxlY3RIZWlnaHQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBjaHJvbWVDbGllbnQtPnBvcHVwT3BlbmVkKHRoaXMsIHdpZGdldFJlY3QsIGZhbHNlKTsKICAg
ICB9CiAKICAgICBpZiAoIW1fbGlzdEJveC0+cGFyZW50KCkpCkBAIC0zNjgsOSArMzk5LDggQEAg
dm9pZCBQb3B1cENvbnRhaW5lcjo6c2hvd0V4dGVybmFsKGNvbnN0IAogICAgIEludFJlY3QgcG9w
dXBSZWN0KGxvY2F0aW9uLCByZWN0LnNpemUoKSk7CiAKICAgICAvLyBHZXQgdGhlIENocm9tZUNs
aWVudCBhbmQgcGFzcyBpdCB0aGUgcG9wdXAgbWVudSdzIGxpc3Rib3ggZGF0YS4KLSAgICBDaHJv
bWVDbGllbnRDaHJvbWl1bSogY2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50Q2hyb21p
dW0qPigKLSAgICAgICAgIHYtPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpKTsK
LSAgICBjbGllbnQtPnBvcHVwT3BlbmVkKHRoaXMsIHBvcHVwUmVjdCwgdHJ1ZSwgdHJ1ZSk7Cisg
ICAgbV9mcmFtZVZpZXcgPSB2OworICAgIGNocm9tZUNsaWVudENocm9taXVtKCktPnBvcHVwT3Bl
bmVkKHRoaXMsIHBvcHVwUmVjdCwgdHJ1ZSk7CiAKICAgICAvLyBUaGUgcG9wdXAgc2VuZHMgaXRz
ICJjbG9zZWQiIG5vdGlmaWNhdGlvbiB0aHJvdWdoIGl0cyBwYXJlbnQuIFNldCB0aGUKICAgICAv
LyBwYXJlbnQsIGV2ZW4gdGhvdWdoIGV4dGVybmFsIHBvcHVwcyBoYXZlIG5vIHJlYWwgb24tc2Ny
ZWVuIHdpZGdldCBidXQgYQpAQCAtMzgyLDYgKzQxMiw3IEBAIHZvaWQgUG9wdXBDb250YWluZXI6
OnNob3dFeHRlcm5hbChjb25zdCAKIHZvaWQgUG9wdXBDb250YWluZXI6OmhpZGVQb3B1cCgpCiB7
CiAgICAgbGlzdEJveCgpLT5oaWRlUG9wdXAoKTsKKyAgICBjaHJvbWVDbGllbnRDaHJvbWl1bSgp
LT5wb3B1cENsb3NlZCh0aGlzKTsKIH0KIAogdm9pZCBQb3B1cENvbnRhaW5lcjo6bGF5b3V0KCkK
QEAgLTM5Miw2ICs0MjMsOCBAQCB2b2lkIFBvcHVwQ29udGFpbmVyOjpsYXlvdXQoKQogICAgIG1f
bGlzdEJveC0+bW92ZShrQm9yZGVyU2l6ZSwga0JvcmRlclNpemUpOwogCiAgICAgLy8gU2l6ZSBv
dXJzZWx2ZXMgdG8gY29udGFpbiBsaXN0Ym94ICsgYm9yZGVyLgorICAgIGludCBoZWlnaHQgPSBt
X2xpc3RCb3gtPmhlaWdodCgpICsga0JvcmRlclNpemUgKiAyOworCiAgICAgcmVzaXplKG1fbGlz
dEJveC0+d2lkdGgoKSArIGtCb3JkZXJTaXplICogMiwgbV9saXN0Qm94LT5oZWlnaHQoKSArIGtC
b3JkZXJTaXplICogMik7CiAKICAgICBpbnZhbGlkYXRlKCk7CkBAIC00NzAsNiArNTAzLDExIEBA
IGJvb2wgUG9wdXBDb250YWluZXI6OmlzSW50ZXJlc3RlZEluRXZlbnQKICAgICByZXR1cm4gbV9s
aXN0Qm94LT5pc0ludGVyZXN0ZWRJbkV2ZW50Rm9yS2V5KGtleUNvZGUpOwogfQogCitDaHJvbWVD
bGllbnRDaHJvbWl1bSogUG9wdXBDb250YWluZXI6OmNocm9tZUNsaWVudENocm9taXVtKCkKK3sK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50Q2hyb21pdW0qPihtX2ZyYW1lVmll
dy0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCkpOworfQorCiB2b2lkIFBvcHVw
Q29udGFpbmVyOjpzaG93KGNvbnN0IEludFJlY3QmIHIsIEZyYW1lVmlldyogdiwgaW50IGluZGV4
KQogewogICAgIC8vIFRoZSByZWN0IGlzIHRoZSBzaXplIG9mIHRoZSBzZWxlY3QgYm94LiBJdCdz
IHVzdWFsbHkgbGFyZ2VyIHRoYW4gd2UgbmVlZC4KQEAgLTEwODksNyArMTEyNyw4IEBAIHZvaWQg
UG9wdXBMaXN0Qm94OjpoaWRlUG9wdXAoKQogICAgICAgICAgICAgY29udGFpbmVyLT5jbGllbnQo
KS0+cG9wdXBDbG9zZWQoY29udGFpbmVyKTsKICAgICB9CiAKLSAgICBtX3BvcHVwQ2xpZW50LT5w
b3B1cERpZEhpZGUoKTsKKyAgICBpZiAobV9wb3B1cENsaWVudCkKKyAgICAgICAgbV9wb3B1cENs
aWVudC0+cG9wdXBEaWRIaWRlKCk7CiB9CiAKIHZvaWQgUG9wdXBMaXN0Qm94Ojp1cGRhdGVGcm9t
RWxlbWVudCgpCkBAIC0xMTU2LDcgKzExOTUsNyBAQCB2b2lkIFBvcHVwTGlzdEJveDo6bGF5b3V0
KCkKICAgICAgICAgaW50IHJvd0hlaWdodCA9IGdldFJvd0hlaWdodChpKTsKICNpZiAhT1MoREFS
V0lOKQogICAgICAgICAvLyBPbmx5IGNsaXAgdGhlIHdpbmRvdyBoZWlnaHQgZm9yIG5vbi1NYWMg
cGxhdGZvcm1zLgotICAgICAgICBpZiAod2luZG93SGVpZ2h0ICsgcm93SGVpZ2h0ID4ga01heEhl
aWdodCkgeworICAgICAgICBpZiAod2luZG93SGVpZ2h0ICsgcm93SGVpZ2h0ID4gbV9tYXhIZWln
aHQpIHsKICAgICAgICAgICAgIG1fdmlzaWJsZVJvd3MgPSBpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTEyMjEsNiArMTI2MCw5IEBAIFBvcHVwTWVudTo6UG9wdXBNZW51KFBv
cHVwTWVudUNsaWVudCogY2wKIAogUG9wdXBNZW51Ojp+UG9wdXBNZW51KCkKIHsKKyAgICAvLyBX
aGVuIHRoZSBQb3B1cE1lbnUgaXMgZGVzdHJveWVkLCB0aGUgY2xpZW50IGNvdWxkIGFscmVhZHkg
aGF2ZSBiZWVuCisgICAgLy8gZGVsZXRlZC4KKyAgICBwLnBvcHVwLT5saXN0Qm94KCktPmRpc2Nv
bm5lY3RDbGllbnQoKTsKICAgICBoaWRlKCk7CiB9CiAKQEAgLTEyMzEsNyArMTI3Myw3IEBAIFBv
cHVwTWVudTo6flBvcHVwTWVudSgpCiB2b2lkIFBvcHVwTWVudTo6c2hvdyhjb25zdCBJbnRSZWN0
JiByLCBGcmFtZVZpZXcqIHYsIGludCBpbmRleCkKIHsKICAgICBpZiAoIXAucG9wdXApCi0gICAg
ICAgIHAucG9wdXAgPSBQb3B1cENvbnRhaW5lcjo6Y3JlYXRlKGNsaWVudCgpLCBkcm9wRG93blNl
dHRpbmdzKTsKKyAgICAgICAgcC5wb3B1cCA9IFBvcHVwQ29udGFpbmVyOjpjcmVhdGUoY2xpZW50
KCksIFBvcHVwQ29udGFpbmVyOjpTZWxlY3QsIGRyb3BEb3duU2V0dGluZ3MpOwogI2lmIE9TKERB
UldJTikKICAgICBwLnBvcHVwLT5zaG93RXh0ZXJuYWwociwgdiwgaW5kZXgpOwogI2Vsc2UKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaAko
cmV2aXNpb24gNTY0MjUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNo
cm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE0OSArMzksMTU5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEZyYW1lVmlldzsKLSAgICBjbGFzcyBQb3B1cExpc3RC
b3g7Ci0KLSAgICAvLyBBIGNvbnRhaW5lciBmb3IgdGhlIGRhdGEgZm9yIGVhY2ggbWVudSBpdGVt
IChlLmcuIHJlcHJlc2VudGVkIGJ5IDxvcHRpb24+Ci0gICAgLy8gb3IgPG9wdGdyb3VwPiBpbiBh
IDxzZWxlY3Q+IHdpZGdldCkgYW5kIGlzIHVzZWQgYnkgUG9wdXBMaXN0Qm94LgotICAgIHN0cnVj
dCBQb3B1cEl0ZW0gewotICAgICAgICBlbnVtIFR5cGUgewotICAgICAgICAgICAgVHlwZU9wdGlv
biwKLSAgICAgICAgICAgIFR5cGVHcm91cCwKLSAgICAgICAgICAgIFR5cGVTZXBhcmF0b3IKLSAg
ICAgICAgfTsKLQotICAgICAgICBQb3B1cEl0ZW0oY29uc3QgU3RyaW5nJiBsYWJlbCwgVHlwZSB0
eXBlKQotICAgICAgICAgICAgOiBsYWJlbChsYWJlbCkKLSAgICAgICAgICAgICwgdHlwZSh0eXBl
KQotICAgICAgICAgICAgLCB5T2Zmc2V0KDApCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAg
ICBTdHJpbmcgbGFiZWw7Ci0gICAgICAgIFR5cGUgdHlwZTsKLSAgICAgICAgaW50IHlPZmZzZXQ7
ICAvLyB5IG9mZnNldCBvZiB0aGlzIGl0ZW0sIHJlbGF0aXZlIHRvIHRoZSB0b3Agb2YgdGhlIHBv
cHVwLgotICAgICAgICBib29sIGVuYWJsZWQ7CitjbGFzcyBDaHJvbWVDbGllbnRDaHJvbWl1bTsK
K2NsYXNzIEZyYW1lVmlldzsKK2NsYXNzIFBvcHVwTGlzdEJveDsKKworLy8gQSBjb250YWluZXIg
Zm9yIHRoZSBkYXRhIGZvciBlYWNoIG1lbnUgaXRlbSAoZS5nLiByZXByZXNlbnRlZCBieSA8b3B0
aW9uPgorLy8gb3IgPG9wdGdyb3VwPiBpbiBhIDxzZWxlY3Q+IHdpZGdldCkgYW5kIGlzIHVzZWQg
YnkgUG9wdXBMaXN0Qm94Lgorc3RydWN0IFBvcHVwSXRlbSB7CisgICAgZW51bSBUeXBlIHsKKyAg
ICAgICAgVHlwZU9wdGlvbiwKKyAgICAgICAgVHlwZUdyb3VwLAorICAgICAgICBUeXBlU2VwYXJh
dG9yCiAgICAgfTsKIAotICAgIC8vIEZJWE1FOiBPdXIgRnJhbWVsZXNzU2Nyb2xsVmlldyBjbGFz
c2VzIHNob3VsZCBwcm9iYWJseSBpbXBsZW1lbnQgSG9zdFdpbmRvdyEKKyAgICBQb3B1cEl0ZW0o
Y29uc3QgU3RyaW5nJiBsYWJlbCwgVHlwZSB0eXBlKQorICAgICAgICA6IGxhYmVsKGxhYmVsKQor
ICAgICAgICAsIHR5cGUodHlwZSkKKyAgICAgICAgLCB5T2Zmc2V0KDApCisgICAgeworICAgIH0K
KyAgICBTdHJpbmcgbGFiZWw7CisgICAgVHlwZSB0eXBlOworICAgIGludCB5T2Zmc2V0OyAvLyB5
IG9mZnNldCBvZiB0aGlzIGl0ZW0sIHJlbGF0aXZlIHRvIHRoZSB0b3Agb2YgdGhlIHBvcHVwLgor
ICAgIGJvb2wgZW5hYmxlZDsKK307CisKKy8vIEZJWE1FOiBPdXIgRnJhbWVsZXNzU2Nyb2xsVmll
dyBjbGFzc2VzIHNob3VsZCBwcm9iYWJseSBpbXBsZW1lbnQgSG9zdFdpbmRvdyEKKworLy8gVGhl
IFBvcHVwQ29udGFpbmVyIGNsYXNzIGhvbGRzIGEgUG9wdXBMaXN0Qm94IChzZWUgY3BwIGZpbGUp
LiAgSXRzIHNvbGUgcHVycG9zZSBpcyB0byBiZQorLy8gYWJsZSB0byBkcmF3IGEgYm9yZGVyIGFy
b3VuZCBpdHMgY2hpbGQuICBBbGwgaXRzIHBhaW50L2V2ZW50IGhhbmRsaW5nIGlzCisvLyBqdXN0
IGZvcndhcmRlZCB0byB0aGUgY2hpbGQgbGlzdEJveCAod2l0aCB0aGUgYXBwcm9wcmlhdGUgdHJh
bnNmb3JtcykuCisvLyBOT1RFOiB0aGlzIGNsYXNzIGlzIGV4cG9zZWQgc28gaXQgY2FuIGJlIGlu
c3RhbnRpYXRlZCBkaXJlY2x5IGZvciB0aGUKKy8vIGF1dG9maWxsIHBvcHVwLiAgV2UgY2Fubm90
IHVzZSB0aGUgUG9wdXAgY2xhc3MgZGlyZWN0bHkgaW4gdGhhdCBjYXNlIGFzIHRoZQorLy8gYXV0
b2ZpbGwgcG9wdXAgc2hvdWxkIG5vdCBiZSBmb2N1c2VkIHdoZW4gc2hvd24gYW5kIHdlIHdhbnQg
dG8gZm9yd2FyZCB0aGUKKy8vIGtleSBldmVudHMgdG8gaXQgKHRocm91Z2ggaGFuZGxlS2V5RXZl
bnQpLgorCitzdHJ1Y3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyB7CisgICAgLy8gV2hldGhlciB0
aGUgUG9wdXBNZW51Q2xpZW50IHNob3VsZCBiZSB0b2xkIHRvIGNoYW5nZSBpdHMgdGV4dCB3aGVu
IGEKKyAgICAvLyBuZXcgaXRlbSBpcyBzZWxlY3RlZCBieSB1c2luZyB0aGUgYXJyb3cga2V5cy4K
KyAgICBib29sIHNldFRleHRPbkluZGV4Q2hhbmdlOworCisgICAgLy8gV2hldGhlciB0aGUgc2Vs
ZWN0aW9uIHNob3VsZCBiZSBhY2NlcHRlZCB3aGVuIHRoZSBwb3B1cCBtZW51IGlzCisgICAgLy8g
Y2xvc2VkICh0aHJvdWdoIEVTQyBiZWluZyBwcmVzc2VkIG9yIHRoZSBmb2N1cyBnb2luZyBhd2F5
KS4KKyAgICAvLyBOb3RlIHRoYXQgd2hlbiBUQUIgaXMgcHJlc3NlZCwgdGhlIHNlbGVjdGlvbiBp
cyBhbHdheXMgYWNjZXB0ZWQKKyAgICAvLyByZWdhcmRsZXNzIG9mIHRoaXMgc2V0dGluZy4KKyAg
ICBib29sIGFjY2VwdE9uQWJhbmRvbjsKKworICAgIC8vIFdoZXRoZXIgd2Ugc2hvdWxkIG1vdmUg
dGhlIHNlbGVjdGlvbiB0byB0aGUgZmlyc3QvbGFzdCBpdGVtIHdoZW4KKyAgICAvLyB0aGUgdXNl
ciBwcmVzc2VzIGRvd24vdXAgYXJyb3cga2V5cyBhbmQgdGhlIGxhc3QvZmlyc3QgaXRlbSBpcwor
ICAgIC8vIHNlbGVjdGVkLgorICAgIGJvb2wgbG9vcFNlbGVjdGlvbk5hdmlnYXRpb247CisKKyAg
ICAvLyBXaGV0aGVyIHdlIHNob3VsZCByZXN0cmljdCB0aGUgd2lkdGggb2YgdGhlIFBvcHVwTGlz
dEJveCBvciBub3QuCisgICAgLy8gQXV0b2NvbXBsZXRlIHBvcHVwcyBhcmUgcmVzdHJpY3RlZCwg
Y29tYm8tYm94ZXMgKHNlbGVjdCB0YWdzKSBhcmVuJ3QuCisgICAgYm9vbCByZXN0cmljdFdpZHRo
T2ZMaXN0Qm94OworCisgICAgLy8gQSBoaW50IG9uIHRoZSBkaXNwbGF5IGRpcmVjdGlvbmFsaXR5
IG9mIHRoZSBpdGVtIHRleHQgaW4gcG9wdXAgbWVudS4KKyAgICAvLworICAgIC8vIFdlIGNvdWxk
IGVpdGhlciBkaXNwbGF5IHRoZSBpdGVtcyBpbiB0aGUgZHJvcC1kb3duIHVzaW5nIGl0cyBET00g
ZWxlbWVudCdzCisgICAgLy8gZGlyZWN0aW9uYWxpdHksIG9yIHdlIGNvdWxkIGRpc3BsYXkgdGhl
IGl0ZW1zIGluIHRoZSBkcm9wLWRvd24gdXNpbmcgaGV1cmlzdGljczoKKyAgICAvLyBzdWNoIGFz
IGluIGl0cyBmaXJzdCBzdHJvbmcgZGlyZWN0aW9uYWxpdHkgY2hhcmFjdGVyJ3MgZGlyZWN0aW9u
LgorICAgIC8vIFBsZWFzZSByZWZlciB0byB0aGUgZGlzY3Vzc2lvbiAoZXNwZWNpYWxseSBjb21t
ZW50ICM3IGFuZCAjMTApIGluCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI3ODg5IGZvciBkZXRhaWxzLgorICAgIGVudW0gRGlyZWN0aW9uYWxpdHlIaW50
IHsKKyAgICAgICAgLy8gVXNlIHRoZSBET00gZWxlbWVudCdzIGRpcmVjdGlvbmFsaXR5IHRvIGRp
c3BsYXkgdGhlIGl0ZW0gdGV4dCBpbiBwb3B1cCBtZW51LgorICAgICAgICBET01FbGVtZW50RGly
ZWN0aW9uLAorICAgICAgICAvLyBVc2UgdGhlIGl0ZW0gdGV4dCdzIGZpcnN0IHN0cm9uZy1kaXJl
Y3Rpb25hbCBjaGFyYWN0ZXIncyBkaXJlY3Rpb25hbGl0eQorICAgICAgICAvLyB0byBkaXNwbGF5
IHRoZSBpdGVtIHRleHQgaW4gcG9wdXAgbWVudS4KKyAgICAgICAgRmlyc3RTdHJvbmdEaXJlY3Rp
b25hbENoYXJhY3RlckRpcmVjdGlvbiwKKyAgICB9OworICAgIERpcmVjdGlvbmFsaXR5SGludCBp
dGVtVGV4dERpcmVjdGlvbmFsaXR5SGludDsKK307CiAKLSAgICAvLyBUaGUgUG9wdXBDb250YWlu
ZXIgY2xhc3MgaG9sZHMgYSBQb3B1cExpc3RCb3ggKHNlZSBjcHAgZmlsZSkuICBJdHMgc29sZSBw
dXJwb3NlIGlzIHRvIGJlCi0gICAgLy8gYWJsZSB0byBkcmF3IGEgYm9yZGVyIGFyb3VuZCBpdHMg
Y2hpbGQuICBBbGwgaXRzIHBhaW50L2V2ZW50IGhhbmRsaW5nIGlzCi0gICAgLy8ganVzdCBmb3J3
YXJkZWQgdG8gdGhlIGNoaWxkIGxpc3RCb3ggKHdpdGggdGhlIGFwcHJvcHJpYXRlIHRyYW5zZm9y
bXMpLgotICAgIC8vIE5PVEU6IHRoaXMgY2xhc3MgaXMgZXhwb3NlZCBzbyBpdCBjYW4gYmUgaW5z
dGFudGlhdGVkIGRpcmVjbHkgZm9yIHRoZQotICAgIC8vIGF1dG9maWxsIHBvcHVwLiAgV2UgY2Fu
bm90IHVzZSB0aGUgUG9wdXAgY2xhc3MgZGlyZWN0bHkgaW4gdGhhdCBjYXNlIGFzIHRoZQotICAg
IC8vIGF1dG9maWxsIHBvcHVwIHNob3VsZCBub3QgYmUgZm9jdXNlZCB3aGVuIHNob3duIGFuZCB3
ZSB3YW50IHRvIGZvcndhcmQgdGhlCi0gICAgLy8ga2V5IGV2ZW50cyB0byBpdCAodGhyb3VnaCBo
YW5kbGVLZXlFdmVudCkuCi0KLSAgICBzdHJ1Y3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyB7Ci0g
ICAgICAgIC8vIFdoZXRoZXIgdGhlIHBvcHVwIHNob3VsZCBnZXQgdGhlIGZvY3VzIHdoZW4gZGlz
cGxheWVkLgotICAgICAgICBib29sIGZvY3VzT25TaG93OwotCi0gICAgICAgIC8vIFdoZXRoZXIg
dGhlIFBvcHVwTWVudUNsaWVudCBzaG91bGQgYmUgdG9sZCB0byBjaGFuZ2UgaXRzIHRleHQgd2hl
biBhCi0gICAgICAgIC8vIG5ldyBpdGVtIGlzIHNlbGVjdGVkIGJ5IHVzaW5nIHRoZSBhcnJvdyBr
ZXlzLgotICAgICAgICBib29sIHNldFRleHRPbkluZGV4Q2hhbmdlOwotCi0gICAgICAgIC8vIFdo
ZXRoZXIgdGhlIHNlbGVjdGlvbiBzaG91bGQgYmUgYWNjZXB0ZWQgd2hlbiB0aGUgcG9wdXAgbWVu
dSBpcwotICAgICAgICAvLyBjbG9zZWQgKHRocm91Z2ggRVNDIGJlaW5nIHByZXNzZWQgb3IgdGhl
IGZvY3VzIGdvaW5nIGF3YXkpLgotICAgICAgICAvLyBOb3RlIHRoYXQgd2hlbiBUQUIgaXMgcHJl
c3NlZCwgdGhlIHNlbGVjdGlvbiBpcyBhbHdheXMgYWNjZXB0ZWQKLSAgICAgICAgLy8gcmVnYXJk
bGVzcyBvZiB0aGlzIHNldHRpbmcuCi0gICAgICAgIGJvb2wgYWNjZXB0T25BYmFuZG9uOwotCi0g
ICAgICAgIC8vIFdoZXRoZXIgd2Ugc2hvdWxkIG1vdmUgdGhlIHNlbGVjdGlvbiB0byB0aGUgZmly
c3QvbGFzdCBpdGVtIHdoZW4KLSAgICAgICAgLy8gdGhlIHVzZXIgcHJlc3NlcyBkb3duL3VwIGFy
cm93IGtleXMgYW5kIHRoZSBsYXN0L2ZpcnN0IGl0ZW0gaXMKLSAgICAgICAgLy8gc2VsZWN0ZWQu
Ci0gICAgICAgIGJvb2wgbG9vcFNlbGVjdGlvbk5hdmlnYXRpb247Ci0KLSAgICAgICAgLy8gV2hl
dGhlciB3ZSBzaG91bGQgcmVzdHJpY3QgdGhlIHdpZHRoIG9mIHRoZSBQb3B1cExpc3RCb3ggb3Ig
bm90LgotICAgICAgICAvLyBBdXRvY29tcGxldGUgcG9wdXBzIGFyZSByZXN0cmljdGVkLCBjb21i
by1ib3hlcyAoc2VsZWN0IHRhZ3MpIGFyZW4ndC4KLSAgICAgICAgYm9vbCByZXN0cmljdFdpZHRo
T2ZMaXN0Qm94OwotCi0gICAgICAgIC8vIEEgaGludCBvbiB0aGUgZGlzcGxheSBkaXJlY3Rpb25h
bGl0eSBvZiB0aGUgaXRlbSB0ZXh0IGluIHBvcHVwIG1lbnUuCi0gICAgICAgIC8vCi0gICAgICAg
IC8vIFdlIGNvdWxkIGVpdGhlciBkaXNwbGF5IHRoZSBpdGVtcyBpbiB0aGUgZHJvcC1kb3duIHVz
aW5nIGl0cyBET00gZWxlbWVudCdzCi0gICAgICAgIC8vIGRpcmVjdGlvbmFsaXR5LCBvciB3ZSBj
b3VsZCBkaXNwbGF5IHRoZSBpdGVtcyBpbiB0aGUgZHJvcC1kb3duIHVzaW5nIGhldXJpc3RpY3M6
Ci0gICAgICAgIC8vIHN1Y2ggYXMgaW4gaXRzIGZpcnN0IHN0cm9uZyBkaXJlY3Rpb25hbGl0eSBj
aGFyYWN0ZXIncyBkaXJlY3Rpb24uCi0gICAgICAgIC8vIFBsZWFzZSByZWZlciB0byB0aGUgZGlz
Y3Vzc2lvbiAoZXNwZWNpYWxseSBjb21tZW50ICM3IGFuZCAjMTApIGluCi0gICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzg4OSBmb3IgZGV0YWlscy4K
LSAgICAgICAgZW51bSBEaXJlY3Rpb25hbGl0eUhpbnQgewotICAgICAgICAgICAgLy8gVXNlIHRo
ZSBET00gZWxlbWVudCdzIGRpcmVjdGlvbmFsaXR5IHRvIGRpc3BsYXkgdGhlIGl0ZW0gdGV4dCBp
biBwb3B1cCBtZW51LgotICAgICAgICAgICAgRE9NRWxlbWVudERpcmVjdGlvbiwKLSAgICAgICAg
ICAgIC8vIFVzZSB0aGUgaXRlbSB0ZXh0J3MgZmlyc3Qgc3Ryb25nLWRpcmVjdGlvbmFsIGNoYXJh
Y3RlcidzIGRpcmVjdGlvbmFsaXR5Ci0gICAgICAgICAgICAvLyB0byBkaXNwbGF5IHRoZSBpdGVt
IHRleHQgaW4gcG9wdXAgbWVudS4KLSAgICAgICAgICAgIEZpcnN0U3Ryb25nRGlyZWN0aW9uYWxD
aGFyYWN0ZXJEaXJlY3Rpb24sCi0gICAgICAgIH07Ci0gICAgICAgIERpcmVjdGlvbmFsaXR5SGlu
dCBpdGVtVGV4dERpcmVjdGlvbmFsaXR5SGludDsKK2NsYXNzIFBvcHVwQ29udGFpbmVyIDogcHVi
bGljIEZyYW1lbGVzc1Njcm9sbFZpZXcgeworcHVibGljOgorICAgIGVudW0gUG9wdXBUeXBlIHsK
KyAgICAgICAgU2VsZWN0LCAvLyBIVE1MIHNlbGVjdCBwb3B1cC4KKyAgICAgICAgU3VnZ2VzdGlv
biwgLy8gQXV0b2NvbXBsZXRlL2F1dG9maWxsIHBvcHVwLgogICAgIH07CiAKLSAgICBjbGFzcyBQ
b3B1cENvbnRhaW5lciA6IHB1YmxpYyBGcmFtZWxlc3NTY3JvbGxWaWV3IHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvcHVwQ29udGFpbmVyPiBjcmVhdGUoUG9wdXBN
ZW51Q2xpZW50KiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzJik7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UG9wdXBDb250YWluZXI+IGNyZWF0ZShQb3B1cE1lbnVDbGllbnQqLCBQb3B1cFR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb3B1cENv
bnRhaW5lclNldHRpbmdzJik7CiAKLSAgICAgICAgLy8gV2hldGhlciBhIGtleSBldmVudCBzaG91
bGQgYmUgc2VudCB0byB0aGlzIHBvcHVwLgotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNJbnRlcmVz
dGVkSW5FdmVudEZvcktleShpbnQga2V5Q29kZSk7CisgICAgLy8gV2hldGhlciBhIGtleSBldmVu
dCBzaG91bGQgYmUgc2VudCB0byB0aGlzIHBvcHVwLgorICAgIHZpcnR1YWwgYm9vbCBpc0ludGVy
ZXN0ZWRJbkV2ZW50Rm9yS2V5KGludCBrZXlDb2RlKTsKIAotICAgICAgICAvLyBGcmFtZWxlc3NT
Y3JvbGxWaWV3Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBoaWRlKCk7Ci0gICAgICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVNb3VzZURvd25FdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
KTsKLSAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNl
RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwotICAgICAgICB2aXJ0
dWFsIGJvb2wgaGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50Jik7Cisg
ICAgLy8gRnJhbWVsZXNzU2Nyb2xsVmlldworICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGhpZGUoKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VEb3duRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CisgICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hl
ZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50Jik7CiAKLSAgICAgICAgLy8g
UG9wdXBDb250YWluZXIgbWV0aG9kcworICAgIC8vIFBvcHVwQ29udGFpbmVyIG1ldGhvZHMKIAot
ICAgICAgICAvLyBTaG93IHRoZSBwb3B1cAotICAgICAgICB2b2lkIHNob3dQb3B1cChGcmFtZVZp
ZXcqKTsKKyAgICAvLyBTaG93IHRoZSBwb3B1cAorICAgIHZvaWQgc2hvd1BvcHVwKEZyYW1lVmll
dyopOwogCi0gICAgICAgIC8vIFVzZWQgb24gTWFjIENocm9taXVtIGZvciBIVE1MIHNlbGVjdCBw
b3B1cCBtZW51cy4KLSAgICAgICAgdm9pZCBzaG93RXh0ZXJuYWwoY29uc3QgSW50UmVjdCYsIEZy
YW1lVmlldyosIGludCBpbmRleCk7CisgICAgLy8gVXNlZCBvbiBNYWMgQ2hyb21pdW0gZm9yIEhU
TUwgc2VsZWN0IHBvcHVwIG1lbnVzLgorICAgIHZvaWQgc2hvd0V4dGVybmFsKGNvbnN0IEludFJl
Y3QmLCBGcmFtZVZpZXcqLCBpbnQgaW5kZXgpOwogCi0gICAgICAgIC8vIFNob3cgdGhlIHBvcHVw
IGluIHRoZSBzcGVjaWZpZWQgcmVjdCBmb3IgdGhlIHNwZWNpZmllZCBmcmFtZS4KLSAgICAgICAg
Ly8gTm90ZTogdGhpcyBjb2RlIHdhcyBzb21laG93IGFyYml0cmFyaWx5IGZhY3RvcmVkLW91dCBv
ZiB0aGUgUG9wdXAgY2xhc3MKLSAgICAgICAgLy8gc28gV2ViVmlld0ltcGwgY2FuIGNyZWF0ZSBh
IFBvcHVwQ29udGFpbmVyLiBUaGlzIG1ldGhvZCBpcyB1c2VkIGZvcgotICAgICAgICAvLyBkaXNw
bGF5aW5nIGF1dG8gY29tcGxldGUgcG9wdXAgbWVudXMgb24gTWFjIENocm9taXVtLCBhbmQgZm9y
IGFsbAotICAgICAgICAvLyBwb3B1cHMgb24gb3RoZXIgcGxhdGZvcm1zLgotICAgICAgICB2b2lk
IHNob3coY29uc3QgSW50UmVjdCYsIEZyYW1lVmlldyosIGludCBpbmRleCk7CisgICAgLy8gU2hv
dyB0aGUgcG9wdXAgaW4gdGhlIHNwZWNpZmllZCByZWN0IGZvciB0aGUgc3BlY2lmaWVkIGZyYW1l
LgorICAgIC8vIE5vdGU6IHRoaXMgY29kZSB3YXMgc29tZWhvdyBhcmJpdHJhcmlseSBmYWN0b3Jl
ZC1vdXQgb2YgdGhlIFBvcHVwIGNsYXNzCisgICAgLy8gc28gV2ViVmlld0ltcGwgY2FuIGNyZWF0
ZSBhIFBvcHVwQ29udGFpbmVyLiBUaGlzIG1ldGhvZCBpcyB1c2VkIGZvcgorICAgIC8vIGRpc3Bs
YXlpbmcgYXV0byBjb21wbGV0ZSBwb3B1cCBtZW51cyBvbiBNYWMgQ2hyb21pdW0sIGFuZCBmb3Ig
YWxsCisgICAgLy8gcG9wdXBzIG9uIG90aGVyIHBsYXRmb3Jtcy4KKyAgICB2b2lkIHNob3coY29u
c3QgSW50UmVjdCYsIEZyYW1lVmlldyosIGludCBpbmRleCk7CiAKLSAgICAgICAgLy8gSGlkZSB0
aGUgcG9wdXAuCi0gICAgICAgIHZvaWQgaGlkZVBvcHVwKCk7CisgICAgLy8gSGlkZSB0aGUgcG9w
dXAuCisgICAgdm9pZCBoaWRlUG9wdXAoKTsKIAotICAgICAgICAvLyBDb21wdXRlIHNpemUgb2Yg
d2lkZ2V0IGFuZCBjaGlsZHJlbi4KLSAgICAgICAgdm9pZCBsYXlvdXQoKTsKKyAgICAvLyBDb21w
dXRlIHNpemUgb2Ygd2lkZ2V0IGFuZCBjaGlsZHJlbi4KKyAgICB2b2lkIGxheW91dCgpOwogCi0g
ICAgICAgIFBvcHVwTGlzdEJveCogbGlzdEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdEJveC5n
ZXQoKTsgfQorICAgIFBvcHVwTGlzdEJveCogbGlzdEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlz
dEJveC5nZXQoKTsgfQogCi0gICAgICAgIC8vIEdldHMgdGhlIGluZGV4IG9mIHRoZSBpdGVtIHRo
YXQgdGhlIHVzZXIgaXMgY3VycmVudGx5IG1vdXNlZC1vdmVyIG9yCi0gICAgICAgIC8vIGhhcyBz
ZWxlY3RlZCB3aXRoIHRoZSBrZXlib2FyZCB1cC9kb3duIGFycm93cy4KLSAgICAgICAgaW50IHNl
bGVjdGVkSW5kZXgoKSBjb25zdDsKKyAgICAvLyBHZXRzIHRoZSBpbmRleCBvZiB0aGUgaXRlbSB0
aGF0IHRoZSB1c2VyIGlzIGN1cnJlbnRseSBtb3VzZWQtb3ZlciBvcgorICAgIC8vIGhhcyBzZWxl
Y3RlZCB3aXRoIHRoZSBrZXlib2FyZCB1cC9kb3duIGFycm93cy4KKyAgICBpbnQgc2VsZWN0ZWRJ
bmRleCgpIGNvbnN0OwogCi0gICAgICAgIC8vIFJlZnJlc2ggdGhlIHBvcHVwIHZhbHVlcyBmcm9t
IHRoZSBQb3B1cE1lbnVDbGllbnQuCi0gICAgICAgIHZvaWQgcmVmcmVzaCgpOworICAgIC8vIFJl
ZnJlc2ggdGhlIHBvcHVwIHZhbHVlcyBmcm9tIHRoZSBQb3B1cE1lbnVDbGllbnQuCisgICAgdm9p
ZCByZWZyZXNoKCk7CiAKLSAgICAgICAgLy8gVGhlIG1lbnUgcGVyLWl0ZW0gZGF0YS4KLSAgICAg
ICAgY29uc3QgV1RGOjpWZWN0b3I8UG9wdXBJdGVtKj4mIHBvcHVwRGF0YSgpIGNvbnN0OworICAg
IC8vIFRoZSBtZW51IHBlci1pdGVtIGRhdGEuCisgICAgY29uc3QgV1RGOjpWZWN0b3I8UG9wdXBJ
dGVtKj4mIHBvcHVwRGF0YSgpIGNvbnN0OwogCi0gICAgICAgIC8vIFRoZSBoZWlnaHQgb2YgYSBy
b3cgaW4gdGhlIG1lbnUuCi0gICAgICAgIGludCBtZW51SXRlbUhlaWdodCgpIGNvbnN0OworICAg
IC8vIFRoZSBoZWlnaHQgb2YgYSByb3cgaW4gdGhlIG1lbnUuCisgICAgaW50IG1lbnVJdGVtSGVp
Z2h0KCkgY29uc3Q7CiAKLSAgICAgICAgLy8gVGhlIHNpemUgb2YgdGhlIGZvbnQgYmVpbmcgdXNl
ZC4KLSAgICAgICAgaW50IG1lbnVJdGVtRm9udFNpemUoKSBjb25zdDsKKyAgICAvLyBUaGUgc2l6
ZSBvZiB0aGUgZm9udCBiZWluZyB1c2VkLgorICAgIGludCBtZW51SXRlbUZvbnRTaXplKCkgY29u
c3Q7CiAKLSAgICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVk
PFBvcHVwQ29udGFpbmVyPjsKKyAgICBQb3B1cFR5cGUgcG9wdXBUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9wb3B1cFR5cGU7IH0KIAotICAgICAgICBQb3B1cENvbnRhaW5lcihQb3B1cE1lbnVDbGll
bnQqLCBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzJik7Ci0gICAgICAgIH5Qb3B1cENvbnRh
aW5lcigpOworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFBvcHVw
Q29udGFpbmVyPjsKIAotICAgICAgICAvLyBQYWludCB0aGUgYm9yZGVyLgotICAgICAgICB2b2lk
IHBhaW50Qm9yZGVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKKyAgICBQb3B1
cENvbnRhaW5lcihQb3B1cE1lbnVDbGllbnQqLCBQb3B1cFR5cGUgcG9wdXBUeXBlLCBjb25zdCBQ
b3B1cENvbnRhaW5lclNldHRpbmdzJik7CisgICAgflBvcHVwQ29udGFpbmVyKCk7CiAKLSAgICAg
ICAgUmVmUHRyPFBvcHVwTGlzdEJveD4gbV9saXN0Qm94OworICAgIC8vIFBhaW50IHRoZSBib3Jk
ZXIuCisgICAgdm9pZCBwYWludEJvcmRlcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
Jik7CiAKLSAgICAgICAgUG9wdXBDb250YWluZXJTZXR0aW5ncyBtX3NldHRpbmdzOwotICAgIH07
CisgICAgLy8gUmV0dXJucyB0aGUgQ2hyb21lQ2xpZW50IG9mIHRoZSBwYWdlIHRoaXMgcG9wdXAg
aXMgYXNzb2NpYXRlZCB3aXRoLgorICAgIENocm9tZUNsaWVudENocm9taXVtKiBjaHJvbWVDbGll
bnRDaHJvbWl1bSgpOworCisgICAgUmVmUHRyPFBvcHVwTGlzdEJveD4gbV9saXN0Qm94OworICAg
IFJlZlB0cjxGcmFtZVZpZXc+IG1fZnJhbWVWaWV3OworCisgICAgUG9wdXBDb250YWluZXJTZXR0
aW5ncyBtX3NldHRpbmdzOworICAgIFBvcHVwVHlwZSBtX3BvcHVwVHlwZTsKK307CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZw0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU2NDI5KQor
KysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMx
IEBACisyMDEwLTAzLTIzICBKYXkgQ2FtcGFuICA8amNhbXBhbkBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2luZyBDaHJvbWl1
bSBzZWxlY3QgcG9wdXBzIG5vdCBzdGVhbCBhY3RpdmF0aW9uIGZyb20gdGhlIGJyb3dzZXIuCisg
ICAgICAgIFNlbGVjdCBwb3B1cHMgYXJlIG5vdyBsaWtlIGF1dG9jb21wbGV0ZSBwb3B1cHMsIHNo
b3duIGluIG5vbi1hY3RpdmF0ZWQKKyAgICAgICAgd2luZG93cy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MDYyCisKKyAgICAgICAgKiBwdWJsaWMv
V2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpjcmVhdGVQ
b3B1cE1lbnUpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6cG9wdXBPcGVuZWQpOgorICAgICAgICAoV2ViS2l0
OjpDaHJvbWVDbGllbnRJbXBsOjpwb3B1cENsb3NlZCk6CisgICAgICAgICogc3JjL0Nocm9tZUNs
aWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjopOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bW91c2VEb3duKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmtleUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnNlbGVjdFBvcHVwSGFuZGxlS2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6aGlkZVNlbGVjdFBvcHVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnBvcHVwT3BlbmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnBvcHVwQ2xv
c2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldEZvY3VzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5QXV0b0ZpbGxTdWdnZXN0aW9ucyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjphcHBseUF1dG9jb21wbGV0ZVN1Z2dlc3Rpb25zKToKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0wMy0yMyAgS2VubmV0aCBSdXNzZWxs
ICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCShyZXZpc2lvbiA1NjQyNSkK
KysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03Myw4ICs3MywxMSBAQCBwdWJsaWM6CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgV2ViUG9w
dXBNZW51LiAgSW4gdGhlIHNlY29uZCBmb3JtLCB0aGUgY2xpZW50IGlzCiAgICAgLy8gcmVzcG9u
c2libGUgZm9yIHJlbmRlcmluZyB0aGUgY29udGVudHMgb2YgdGhlIHBvcHVwIG1lbnUuCi0gICAg
dmlydHVhbCBXZWJXaWRnZXQqIGNyZWF0ZVBvcHVwTWVudShib29sIGFjdGl2YXRhYmxlKSB7IHJl
dHVybiAwOyB9CisgICAgdmlydHVhbCBXZWJXaWRnZXQqIGNyZWF0ZVBvcHVwTWVudSgpIHsgcmV0
dXJuIDA7IH0KICAgICB2aXJ0dWFsIFdlYldpZGdldCogY3JlYXRlUG9wdXBNZW51KGNvbnN0IFdl
YlBvcHVwTWVudUluZm8mKSB7IHJldHVybiAwOyB9CisgICAgLy8gRGVwcmVjYXRlZCBtZXRob2Qu
CisgICAgdmlydHVhbCBXZWJXaWRnZXQqIGNyZWF0ZVBvcHVwTWVudShib29sIGFjdGl2YXRhYmxl
KSB7IHJldHVybiAwOyB9CisKIAogICAgIC8vIENyZWF0ZSBhIHNlc3Npb24gc3RvcmFnZSBuYW1l
c3BhY2Ugb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFdlYlZpZXcuCiAgICAgdmlydHVhbCBX
ZWJTdG9yYWdlTmFtZXNwYWNlKiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSgpIHsgcmV0
dXJuIDA7IH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
CShyZXZpc2lvbiA1NjQyNSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5NSw3ICs1OTUsNiBAQCB2b2lkIENocm9tZUNsaWVu
dEltcGw6Omljb25Gb3JGaWxlcyhjb25zCiAKIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cG9wdXBP
cGVuZWQoUG9wdXBDb250YWluZXIqIHBvcHVwQ29udGFpbmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBib3VuZHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgYWN0aXZhdGFibGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaGFuZGxlRXh0ZXJuYWxseSkKIHsKICAgICBpZiAoIW1fd2Vi
Vmlldy0+Y2xpZW50KCkpCkBAIC02MDYsMTIgKzYwNSwyMiBAQCB2b2lkIENocm9tZUNsaWVudElt
cGw6OnBvcHVwT3BlbmVkKFBvcHVwCiAgICAgICAgIFdlYlBvcHVwTWVudUluZm8gcG9wdXBJbmZv
OwogICAgICAgICBnZXRQb3B1cE1lbnVJbmZvKHBvcHVwQ29udGFpbmVyLCAmcG9wdXBJbmZvKTsK
ICAgICAgICAgd2Vid2lkZ2V0ID0gbV93ZWJWaWV3LT5jbGllbnQoKS0+Y3JlYXRlUG9wdXBNZW51
KHBvcHVwSW5mbyk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHdlYndpZGdldCA9IG1fd2ViVmlldy0+
Y2xpZW50KCktPmNyZWF0ZVBvcHVwTWVudShhY3RpdmF0YWJsZSk7Ci0KKyAgICB9IGVsc2Ugewor
ICAgICAgICB3ZWJ3aWRnZXQgPSBtX3dlYlZpZXctPmNsaWVudCgpLT5jcmVhdGVQb3B1cE1lbnUo
KTsKKyAgICAgICAgaWYgKCF3ZWJ3aWRnZXQpIHsKKyAgICAgICAgICAgIC8vIFRyeSB0aGUgZGVw
cmVjYXRlZCBtZXRob2QuCisgICAgICAgICAgICB3ZWJ3aWRnZXQgPSBtX3dlYlZpZXctPmNsaWVu
dCgpLT5jcmVhdGVQb3B1cE1lbnUoZmFsc2UpOworICAgICAgICB9ICAgIAorICAgIH0KKyAgICBt
X3dlYlZpZXctPnBvcHVwT3BlbmVkKHBvcHVwQ29udGFpbmVyKTsKICAgICBzdGF0aWNfY2FzdDxX
ZWJQb3B1cE1lbnVJbXBsKj4od2Vid2lkZ2V0KS0+SW5pdChwb3B1cENvbnRhaW5lciwgYm91bmRz
KTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnRJbXBsOjpwb3B1cENsb3NlZChXZWJDb3JlOjpQb3B1
cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpCit7CisgICAgbV93ZWJWaWV3LT5wb3B1cENsb3Nl
ZChwb3B1cENvbnRhaW5lcik7Cit9CisKIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6c2V0Q3Vyc29y
KGNvbnN0IFdlYkN1cnNvckluZm8mIGN1cnNvcikKIHsKICAgICBpZiAobV9pZ25vcmVOZXh0U2V0
Q3Vyc29yKSB7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCShy
ZXZpc2lvbiA1NjQyNSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsOCArMTQ4LDggQEAgcHVibGljOgogICAgIC8vIENocm9t
ZUNsaWVudENocm9taXVtIG1ldGhvZHM6CiAgICAgdmlydHVhbCB2b2lkIHBvcHVwT3BlbmVkKFdl
YkNvcmU6OlBvcHVwQ29udGFpbmVyKiBwb3B1cENvbnRhaW5lciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgYm91bmRzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGFjdGl2YXRhYmxlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGhhbmRsZUV4dGVybmFsbHkpOworICAgIHZpcnR1YWwgdm9pZCBwb3B1cENs
b3NlZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0U3RhdGUoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdCopOwogCiAgICAgLy8gQ2hyb21lQ2xpZW50SW1wbDoKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDU2NDI1KQorKysgV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSwxMSArMTQ5
LDcgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShEcmFnT3BlcmF0aQogQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShEcmFnT3BlcmF0aW9uRGVsZXRlKTsKIENPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oRHJhZ09wZXJhdGlvbkV2ZXJ5KTsKIAotLy8gTm90ZSB0aGF0IGZvY3Vz
T25TaG93IGlzIGZhbHNlIHNvIHRoYXQgdGhlIHN1Z2dlc3Rpb25zIHBvcHVwIGlzIHNob3duIG5v
dAotLy8gYWN0aXZhdGVkLiAgV2UgbmVlZCB0aGUgcGFnZSB0byBzdGlsbCBoYXZlIGZvY3VzIHNv
IHRoZSB1c2VyIGNhbiBrZWVwIHR5cGluZwotLy8gd2hpbGUgdGhlIHBvcHVwIGlzIHNob3dpbmcu
CiBzdGF0aWMgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyBzdWdnZXN0aW9uc1BvcHVwU2V0
dGluZ3MgPSB7Ci0gICAgZmFsc2UsICAvLyBmb2N1c09uU2hvdwogICAgIGZhbHNlLCAgLy8gc2V0
VGV4dE9uSW5kZXhDaGFuZ2UKICAgICBmYWxzZSwgIC8vIGFjY2VwdE9uQWJhbmRvbgogICAgIHRy
dWUsICAgLy8gbG9vcFNlbGVjdGlvbk5hdmlnYXRpb24KQEAgLTMzMSw2ICszMjcsMTAgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6bW91c2VEb3duKGNvbnN0IFdlYk1vdQogICAgIGlmICghbWFpbkZyYW1l
SW1wbCgpIHx8ICFtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpKQogICAgICAgICByZXR1cm47
CiAKKyAgICAvLyBJZiB0aGVyZSBpcyBhIHNlbGVjdCBwb3B1cCBvcGVuZWQsIGNsb3NlIGl0IGFz
IHRoZSB1c2VyIGlzIGNsaWNraW5nIG9uCisgICAgLy8gdGhlIHBhZ2UgKG91dHNpZGUgb2YgdGhl
IHBvcHVwKS4KKyAgICBoaWRlU2VsZWN0UG9wdXAoKTsKKwogICAgIG1fbGFzdE1vdXNlRG93blBv
aW50ID0gV2ViUG9pbnQoZXZlbnQueCwgZXZlbnQueSk7CiAgICAgbV9oYXZlTW91c2VDYXB0dXJl
ID0gdHJ1ZTsKIApAQCAtNDc4LDYgKzQ3OCwxMCBAQCBib29sIFdlYlZpZXdJbXBsOjprZXlFdmVu
dChjb25zdCBXZWJLZXliCiAgICAgLy8gZXZlbnQuCiAgICAgbV9zdXBwcmVzc05leHRLZXlwcmVz
c0V2ZW50ID0gZmFsc2U7CiAKKyAgICAvLyBHaXZlIGFueSBzZWxlY3QgcG9wdXAgYSBjaGFuY2Ug
YXQgY29uc3VtaW5nIHRoZSBrZXkgZXZlbnQuCisgICAgaWYgKHNlbGVjdFBvcHVwSGFuZGxlS2V5
RXZlbnQoZXZlbnQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIC8vIEdpdmUgQXV0b2Nv
bXBsZXRlIGEgY2hhbmNlIHRvIGNvbnN1bWUgdGhlIGtleSBldmVudHMgaXQgaXMgaW50ZXJlc3Rl
ZCBpbi4KICAgICBpZiAoYXV0b2NvbXBsZXRlSGFuZGxlS2V5RXZlbnQoZXZlbnQpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTUyNyw2ICs1MzEsMTQgQEAgYm9vbCBXZWJWaWV3SW1wbDo6a2V5
RXZlbnQoY29uc3QgV2ViS2V5YgogICAgIHJldHVybiBrZXlFdmVudERlZmF1bHQoZXZlbnQpOwog
fQogCitib29sIFdlYlZpZXdJbXBsOjpzZWxlY3RQb3B1cEhhbmRsZUtleUV2ZW50KGNvbnN0IFdl
YktleWJvYXJkRXZlbnQmIGV2ZW50KQoreworICAgIGlmICghbV9zZWxlY3RQb3B1cCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBtX3NlbGVjdFBvcHVwLT5oYW5kbGVL
ZXlFdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGV2ZW50KSk7Cit9CisKIGJvb2wg
V2ViVmlld0ltcGw6OmF1dG9jb21wbGV0ZUhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJk
RXZlbnQmIGV2ZW50KQogewogICAgIGlmICghbV9zdWdnZXN0aW9uc1BvcHVwU2hvd2luZwpAQCAt
Nzk3LDYgKzgwOSwxMiBAQCBib29sIFdlYlZpZXdJbXBsOjpzY3JvbGxWaWV3V2l0aEtleWJvYXJk
CiAgICAgcmV0dXJuIHByb3BhZ2F0ZVNjcm9sbChzY3JvbGxEaXJlY3Rpb24sIHNjcm9sbEdyYW51
bGFyaXR5KTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6aGlkZVNlbGVjdFBvcHVwKCkKK3sKKyAg
ICBpZiAobV9zZWxlY3RQb3B1cC5nZXQoKSkKKyAgICAgICAgbV9zZWxlY3RQb3B1cC0+aGlkZVBv
cHVwKCk7Cit9CisKIGJvb2wgV2ViVmlld0ltcGw6OnByb3BhZ2F0ZVNjcm9sbChTY3JvbGxEaXJl
Y3Rpb24gc2Nyb2xsRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNjcm9sbEdyYW51bGFyaXR5IHNjcm9sbEdyYW51bGFyaXR5KQogewpAQCAtODE2LDYgKzgzNCwy
MiBAQCBib29sIFdlYlZpZXdJbXBsOjpwcm9wYWdhdGVTY3JvbGwoU2Nyb2xsCiAgICAgcmV0dXJu
IHNjcm9sbEhhbmRsZWQ7CiB9CiAKK3ZvaWQgIFdlYlZpZXdJbXBsOjpwb3B1cE9wZW5lZChXZWJD
b3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpCit7CisgICAgaWYgKHBvcHVwQ29u
dGFpbmVyLT5wb3B1cFR5cGUoKSA9PSBXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6U2VsZWN0KSB7
CisgICAgICAgIEFTU0VSVCghbV9zZWxlY3RQb3B1cCk7CisgICAgICAgIG1fc2VsZWN0UG9wdXAg
PSBwb3B1cENvbnRhaW5lcjsKKyAgICB9Cit9CisKK3ZvaWQgIFdlYlZpZXdJbXBsOjpwb3B1cENs
b3NlZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpCit7CisgICAgaWYg
KHBvcHVwQ29udGFpbmVyLT5wb3B1cFR5cGUoKSA9PSBXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6
U2VsZWN0KSB7CisgICAgICAgIEFTU0VSVChtX3NlbGVjdFBvcHVwLmdldCgpKTsKKyAgICAgICAg
bV9zZWxlY3RQb3B1cCA9IDA7CisgICAgfQorfQorCiBGcmFtZSogV2ViVmlld0ltcGw6OmZvY3Vz
ZWRXZWJDb3JlRnJhbWUoKQogewogICAgIHJldHVybiBtX3BhZ2UuZ2V0KCkgPyBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKSA6IDA7CkBAIC0xMDY4LDYgKzEx
MDIsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRGb2N1cyhib29sIGVuYWJsZSkKICAgICAgICAg
bV9pbWVBY2NlcHRFdmVudHMgPSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGhpZGVTdWdn
ZXN0aW9uc1BvcHVwKCk7CisgICAgICAgIGhpZGVTZWxlY3RQb3B1cCgpOwogCiAgICAgICAgIC8v
IENsZWFyIGZvY3VzIG9uIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBmcmFtZSBpZiBhbnkuCiAgICAg
ICAgIGlmICghbV9wYWdlLmdldCgpKQpAQCAtMTY5Niw2ICsxNzMxLDcgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6YXBwbHlBdXRvRmlsbFN1Z2dlc3RpbwogCiAgICAgaWYgKCFtX2F1dG9GaWxsUG9wdXAu
Z2V0KCkpIHsKICAgICAgICAgbV9hdXRvRmlsbFBvcHVwID0gUG9wdXBDb250YWluZXI6OmNyZWF0
ZShtX3N1Z2dlc3Rpb25zUG9wdXBDbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUG9wdXBDb250YWluZXI6OlN1Z2dlc3Rpb24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnNQb3B1
cFNldHRpbmdzKTsKICAgICB9CiAKQEAgLTE3NTEsNiArMTc4Nyw3IEBAIHZvaWQgV2ViVmlld0lt
cGw6OmFwcGx5QXV0b2NvbXBsZXRlU3VnZ2UKIAogICAgIGlmICghbV9hdXRvY29tcGxldGVQb3B1
cC5nZXQoKSkgewogICAgICAgICBtX2F1dG9jb21wbGV0ZVBvcHVwID0gUG9wdXBDb250YWluZXI6
OmNyZWF0ZShtX3N1Z2dlc3Rpb25zUG9wdXBDbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcHVwQ29udGFpbmVyOjpTdWdnZXN0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dWdnZXN0aW9uc1BvcHVwU2V0dGluZ3MpOwogICAgIH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCShyZXZpc2lvbiA1NjQyNSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjkyLDYgKzI5MiwxMCBAQCBwdWJsaWM6CiAg
ICAgLy8gd2FzIHNjcm9sbGVkLgogICAgIGJvb2wgcHJvcGFnYXRlU2Nyb2xsKFdlYkNvcmU6OlNj
cm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwogCisgICAgLy8gTm90
aWZpY2F0aW9uIHRoYXQgYSBwb3B1cCB3YXMgb3BlbmVkL2Nsb3NlZC4KKyAgICB2b2lkIHBvcHVw
T3BlbmVkKFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBwb3B1cENvbnRhaW5lcik7CisgICAgdm9p
ZCBwb3B1cENsb3NlZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpOwor
CiAgICAgLy8gSEFDSzogY3VycmVudElucHV0RXZlbnQoKSBpcyBmb3IgQ2hyb21lQ2xpZW50SW1w
bDo6c2hvdygpLCB1bnRpbCB3ZSBjYW4KICAgICAvLyBmaXggV2ViS2l0IHRvIHBhc3MgZW5vdWdo
IGluZm9ybWF0aW9uIHVwIGludG8gQ2hyb21lQ2xpZW50OjpzaG93KCkgc28gd2UKICAgICAvLyBj
YW4gZGVjaWRlIGlmIHRoZSB3aW5kb3cub3BlbiBldmVudCB3YXMgY2F1c2VkIGJ5IGEgbWlkZGxl
LW1vdXNlIGNsaWNrCkBAIC0zMTUsNiArMzE5LDkgQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlIGV2ZW50IHdhcyBhY3R1YWxseSBwcm9jZXNzZWQuCiAgICAgYm9vbCBrZXlF
dmVudERlZmF1bHQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogCisgICAgLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSBzZWxlY3QgcG9wdXAgaGFzIGNvbnN1bWVkIHRoZSBldmVudC4KKyAgICBib29s
IHNlbGVjdFBvcHVwSGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOworCiAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBhdXRvY29tcGxlIGhhcyBjb25zdW1lZCB0aGUgZXZl
bnQuCiAgICAgYm9vbCBhdXRvY29tcGxldGVIYW5kbGVLZXlFdmVudChjb25zdCBXZWJLZXlib2Fy
ZEV2ZW50Jik7CiAKQEAgLTMyNiw2ICszMzMsOSBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiB0aGUgdmlldyB3YXMgc2Nyb2xsZWQuCiAgICAgYm9vbCBzY3JvbGxWaWV3V2l0aEtl
eWJvYXJkKGludCBrZXlDb2RlLCBpbnQgbW9kaWZpZXJzKTsKIAorICAgIC8vIEhpZGVzIHRoZSBz
ZWxlY3QgcG9wdXAgaWYgb25lIGlzIG9wZW5lZC4KKyAgICB2b2lkIGhpZGVTZWxlY3RQb3B1cCgp
OworCiAgICAgLy8gQ29udmVydHMgfHBvc3wgZnJvbSB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gY29u
dGVudHMgY29vcmRpbmF0ZXMgYW5kIGdldHMKICAgICAvLyB0aGUgSGl0VGVzdFJlc3VsdCBmb3Ig
aXQuCiAgICAgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0Rm9yV2luZG93UG9z
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CkBAIC00MzksNiArNDQ5LDkgQEAgcHJpdmF0ZToK
ICAgICAvLyBBIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgc3VnZ2VzdGlvbnMgcG9wdXAuICBXZSBk
byBub3Qgb3duIHRoaXMgcG9pbnRlci4KICAgICBXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogbV9z
dWdnZXN0aW9uc1BvcHVwOwogCisgICAgLy8gVGhlIHBvcHVwIGFzc29jaWF0ZWQgd2l0aCBhIHNl
bGVjdCBlbGVtZW50LgorICAgIFJlZlB0cjxXZWJDb3JlOjpQb3B1cENvbnRhaW5lcj4gbV9zZWxl
Y3RQb3B1cDsKKwogICAgIC8vIFRoZSBBdXRvRmlsbCBzdWdnZXN0aW9ucyBwb3B1cC4KICAgICBS
ZWZQdHI8V2ViQ29yZTo6UG9wdXBDb250YWluZXI+IG1fYXV0b0ZpbGxQb3B1cDsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>