<?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>46645</bug_id>
          
          <creation_ts>2010-09-27 12:48:31 -0700</creation_ts>
          <short_desc>Make scrolling work properly with writing modes</short_desc>
          <delta_ts>2013-10-13 16:50:05 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>46123</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>285684</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-09-27 12:48:31 -0700</bug_when>
    <thetext>We&apos;ll have to decide how we want the scrollbars and such to look for various block-flow directions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302108</commentid>
    <comment_count>1</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2010-10-29 15:13:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/8612047&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315807</commentid>
    <comment_count>2</comment_count>
      <attachid>75303</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-12-01 12:24:31 -0800</bug_when>
    <thetext>Created attachment 75303
Part 1: Generalize the scrollOrigin document concept to work with writing modes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315814</commentid>
    <comment_count>3</comment_count>
      <attachid>75305</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-12-01 12:32:53 -0800</bug_when>
    <thetext>Created attachment 75305
Part 1: Generalize the scrollOrigin concept to work with both horizontal and vertical directions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315815</commentid>
    <comment_count>4</comment_count>
      <attachid>75306</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-12-01 12:35:56 -0800</bug_when>
    <thetext>Created attachment 75306
Part 1: Generalize the scrollOrigin concept to work with both horizontal and vertical directions

Clean up the ChangeLogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315817</commentid>
    <comment_count>5</comment_count>
      <attachid>75306</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-01 12:40:14 -0800</bug_when>
    <thetext>Comment on attachment 75306
Part 1: Generalize the scrollOrigin concept to work with both horizontal and vertical directions

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

&gt; WebCore/platform/ScrollView.cpp:1046
&gt; +    // Check to see if either the direction or writing-mode has changed such that our scroll origin has gone from
&gt; +    // zero to non-zero (or vice versa) in a particular axis.  If so, just reset the scroll position to the scroll
&gt; +    // origin.
&gt; +    if ((!prevScrollOrigin.x() &amp;&amp; m_scrollOrigin.x()) || (!m_scrollOrigin.x() &amp;&amp; prevScrollOrigin.x()) ||
&gt; +        (!prevScrollOrigin.y() &amp;&amp; m_scrollOrigin.y()) || (!m_scrollOrigin.y() &amp;&amp; prevScrollOrigin.y()))
&gt;          updateScrollbars(scrollOffset());

I don’t understand why this is right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315819</commentid>
    <comment_count>6</comment_count>
      <attachid>75308</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-12-01 12:42:34 -0800</bug_when>
    <thetext>Created attachment 75308
Generalize the scrollOrigin concept to work with both horizontal and vertical directions 

Cleaned up some comments that no longer apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315826</commentid>
    <comment_count>7</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-12-01 12:48:45 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 75306 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=75306&amp;action=review
&gt; 
&gt; &gt; WebCore/platform/ScrollView.cpp:1046
&gt; &gt; +    // Check to see if either the direction or writing-mode has changed such that our scroll origin has gone from
&gt; &gt; +    // zero to non-zero (or vice versa) in a particular axis.  If so, just reset the scroll position to the scroll
&gt; &gt; +    // origin.
&gt; &gt; +    if ((!prevScrollOrigin.x() &amp;&amp; m_scrollOrigin.x()) || (!m_scrollOrigin.x() &amp;&amp; prevScrollOrigin.x()) ||
&gt; &gt; +        (!prevScrollOrigin.y() &amp;&amp; m_scrollOrigin.y()) || (!m_scrollOrigin.y() &amp;&amp; prevScrollOrigin.y()))
&gt; &gt;          updateScrollbars(scrollOffset());
&gt; 
&gt; I don’t understand why this is right.

Yeah that code is no longer needed.  I fixed the Mac-specific code to not need to do that, and the cross-platform code doesn&apos;t need it either.  Let me fix and post an update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315829</commentid>
    <comment_count>8</comment_count>
      <attachid>75309</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-12-01 12:52:17 -0800</bug_when>
    <thetext>Created attachment 75309
Part 1: Generalize scrollOrigin concept to work with both horizontal and vertical text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315830</commentid>
    <comment_count>9</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-12-01 12:52:56 -0800</bug_when>
    <thetext>Ok new patch posted that addresses Darin&apos;s concern and fixes the cross-platform code to be like the Mac WebDynamicScrollbarsView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315833</commentid>
    <comment_count>10</comment_count>
      <attachid>75309</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-01 12:58:43 -0800</bug_when>
    <thetext>Comment on attachment 75309
Part 1: Generalize scrollOrigin concept to work with both horizontal and vertical text.

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

&gt; WebCore/platform/ScrollView.cpp:1043
&gt; +    IntPoint prevScrollOrigin = m_scrollOrigin;
&gt;  
&gt; -void ScrollView::updateScrollbars()
&gt; -{
&gt; -    if (!platformWidget())
&gt; +    m_scrollOrigin = origin;
&gt; +    
&gt; +    if (platformWidget() || !updatePosition)
&gt; +        return;
&gt; +
&gt; +    // Update if the scroll origin changes, since our position will be different if the content size did not change.
&gt; +    if (prevScrollOrigin != m_scrollOrigin)
&gt;          updateScrollbars(scrollOffset());

Seems like a cleaner way to write this is:

    if (origin == m_scrollOrigin)
        return;

    m_scrollOrigin = origin;

    ...

No need to have the check specifically wrapped around the updateScrollbars call.

&gt; WebKit/mac/WebView/WebDynamicScrollBarsView.mm:68
&gt; +    // scrollOrigin is set for various combinations of writing mode and direction.  See the comment next to the
&gt; +    // corresponding member in ScrollView.h.
&gt; +    NSPoint scrollOrigin;

We normally use one space after a period. I also suggest moving that second sentence to its own second line.

&gt; WebKit/mac/WebView/WebDynamicScrollBarsView.mm:580
&gt; +    NSPoint docOrigin = [docView bounds].origin;
&gt; +    if (docOrigin.x != -scrollOrigin.x || docOrigin.y != -scrollOrigin.y) {

Early return would make this function read better, I think.

&gt; WebKit/mac/WebView/WebDynamicScrollBarsView.mm:582
&gt; +         

Looks like there was an extra space added here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315874</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-01 14:02:09 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/73063 might have broken Qt Linux Release
The following tests are not passing:
fast/block/basic/truncation-rtl.html
fast/dom/horizontal-scrollbar-in-rtl.html
fast/dom/vertical-scrollbar-in-rtl.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315913</commentid>
    <comment_count>12</comment_count>
      <attachid>75330</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-12-01 15:51:46 -0800</bug_when>
    <thetext>Created attachment 75330
Part 2: Generalize scrollOrigin to work with both horizontal and vertical overflow renderers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315930</commentid>
    <comment_count>13</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-12-01 16:14:55 -0800</bug_when>
    <thetext>For 

fast/dom/vertical-scrollbar-in-rtl.html

platforms will need to just add their own specific results (just as was done with horizontal-scrollbar-in-rtl), since the HOME/END behavior is not the same on every platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321758</commentid>
    <comment_count>14</comment_count>
      <attachid>75309</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-14 01:25:43 -0800</bug_when>
    <thetext>Comment on attachment 75309
Part 1: Generalize scrollOrigin concept to work with both horizontal and vertical text.

Cleared Darin Adler&apos;s review+ from obsolete attachment 75309 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75303</attachid>
            <date>2010-12-01 12:24:31 -0800</date>
            <delta_ts>2010-12-01 12:32:53 -0800</delta_ts>
            <desc>Part 1: Generalize the scrollOrigin document concept to work with writing modes</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>44768</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzA1NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTAtMTItMDEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjY0NQorICAgICAgICAKKyAgICAg
ICAgUGFydCAxIG9mIG1ha2luZyBzY3JvbGxpbmcgd29yayB3aXRoIHZlcnRpY2FsLiBUaGlzIHBh
dGNoIGdlbmVyYWxpemVzIHRoZSBzY3JvbGxPcmlnaW5YIGNvbnRlbnQKKyAgICAgICAgcmVjZW50
bHkgYWRkZWQgZm9yIGhvcml6b250YWwgUlRMIGRvY3VtZW50cyBhbmQgYXBwbGllcyBpdCB0byB3
cml0aW5nIG1vZGVzIGFzIHdlbGwuICBOb3cgdGhlCisgICAgICAgIHNjcm9sbE9yaWdpbiBpcyBh
IHBvaW50LCBzaW5jZSB5b3UgY2FuIHN0YXJ0IG9mZiBsb2NrZWQgdG8gdGhlIGJvdHRvbSBvciBs
b2NrZWQgdG8gdGhlIHJpZ2h0LgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGZp
eGVzIG51bWVyb3VzIGJ1Z3Mgd2l0aCB0aGUgc2Nyb2xsT3JpZ2luIGNvZGUgdXNpbmcgbmF0aXZl
IE1hYyBOU1Njcm9sbFZpZXdzIGFuZAorICAgICAgICBtYWtlcyB0aGVtIGJlaGF2ZSB0aGUgc2Ft
ZSBhcyB0aGUgY3Jvc3MtcGxhdGZvcm0gY29kZSAoYWxsb3dpbmcgZm9yIGNyb3NzLXBsYXRmb3Jt
IHJlc3VsdHMgdG8gYmUKKyAgICAgICAgbGFuZGVkKS4KKworICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRqdXN0Vmlld1NpemUpOgor
ICAgICAgICAqIHBhZ2UvbWFjL1dlYkNvcmVGcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNjcm9sbFZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6bWF4aW11bVNjcm9sbFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6Om1pbmltdW1TY3JvbGxQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2YWx1ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxPcmlnaW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpbik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Um9vdEJv
eERlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVmlldzo6ZG9jVG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmRvY0hlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpkb2NMZWZ0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclZpZXc6OmRvY1dpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Vmlldy5oOgorCiAyMDEwLTExLTMwICBWYW5nZWxpcyBLb2trZXZpcyAgPHZhbmdlbGlzQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4OiBXZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDM1LDE1ICs0MzUsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVz
dFZpZXdTaXplKCkKICAgICBpZiAoIXJvb3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCBw
cmV2U2Nyb2xsT3JpZ2luWCA9IHNjcm9sbE9yaWdpblgoKTsKLSAgICBTY3JvbGxWaWV3OjpzZXRT
Y3JvbGxPcmlnaW5YKC1yb290LT5sZWZ0TGF5b3V0T3ZlcmZsb3coKSk7Ci0gICAgSW50U2l6ZSBz
aXplID0gSW50U2l6ZShyb290LT5yaWdodExheW91dE92ZXJmbG93KCkgLSByb290LT5sZWZ0TGF5
b3V0T3ZlcmZsb3coKSwgcm9vdC0+Ym90dG9tTGF5b3V0T3ZlcmZsb3coKSk7Ci0gICAgLy8gVGFr
ZSBjYXJlIG9mIHRoZSBjYXNlIHdoZW4gY29udGVudHMgcmVtYWluIGJ1dCB0aGUgUmVuZGVyVmll
dydzIGRpcmVjdGlvbiBoYXMgY2hhbmdlZC4KLSAgICAvLyBJbiB3aGljaCBjYXNlLCB3ZSBuZWVk
IHRvIHVwZGF0ZSBzY3JvbGxlciBwb3NpdGlvbiwgZm9yIGV4YW1wbGUsIGZyb20gbGVmdG1vc3Qg
dG8KLSAgICAvLyByaWdodG1vc3Qgd2hlbiBkaXJlY3Rpb24gY2hhbmdlcyBmcm9tIGxlZnQtdG8t
cmlnaHQgdG8gcmlnaHQtdG8tbGVmdC4KLSAgICBib29sIGRpcmVjdGlvbkNoYW5nZWQgPSAoIXBy
ZXZTY3JvbGxPcmlnaW5YIHx8ICFzY3JvbGxPcmlnaW5YKCkpICYmIChzY3JvbGxPcmlnaW5YKCkg
IT0gcHJldlNjcm9sbE9yaWdpblgpOwotICAgIGlmIChzaXplID09IGNvbnRlbnRzU2l6ZSgpICYm
IGRpcmVjdGlvbkNoYW5nZWQpCi0gICAgICAgIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMo
KTsKKyAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKHJvb3QtPnJpZ2h0TGF5b3V0T3ZlcmZsb3co
KSAtIHJvb3QtPmxlZnRMYXlvdXRPdmVyZmxvdygpLCByb290LT5ib3R0b21MYXlvdXRPdmVyZmxv
dygpIC0gcm9vdC0+dG9wTGF5b3V0T3ZlcmZsb3coKSk7CisKKyAgICBTY3JvbGxWaWV3OjpzZXRT
Y3JvbGxPcmlnaW4oSW50UG9pbnQoLXJvb3QtPmxlZnRMYXlvdXRPdmVyZmxvdygpLCAtcm9vdC0+
dG9wTGF5b3V0T3ZlcmZsb3coKSksIHNpemUgPT0gY29udGVudHNTaXplKCkpOworICAgIAogICAg
IHNldENvbnRlbnRzU2l6ZShzaXplKTsKIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL21hYy9XZWJD
b3JlRnJhbWVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJh
bWVWaWV3LmgJKHJldmlzaW9uIDcyOTQ3KQorKysgV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJh
bWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogLSAodm9pZClzZXRTY3JvbGxpbmdNb2RlczooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSlo
TW9kZSB2ZXJ0aWNhbDooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSl2TW9kZSBhbmRMb2NrOihCT09M
KWxvY2s7CiAtICh2b2lkKXNjcm9sbGluZ01vZGVzOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKilo
TW9kZSB2ZXJ0aWNhbDooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSopdk1vZGU7CiAtICh2b2lkKXNl
dFNjcm9sbEJhcnNTdXBwcmVzc2VkOihCT09MKXN1cHByZXNzZWQgcmVwYWludE9uVW5zdXBwcmVz
czooQk9PTClyZXBhaW50OwotLSAodm9pZClzZXRTY3JvbGxPcmlnaW5YOihpbnQpc2Nyb2xsT3Jp
Z2luWDsKLS0gKGludClzY3JvbGxPcmlnaW5YOworLSAodm9pZClzZXRTY3JvbGxPcmlnaW46KE5T
UG9pbnQpb3JpZ2luIHVwZGF0ZVBvc2l0aW9uOihCT09MKXVwZGF0ZVBvc2l0aW9uOworLSAoTlNQ
b2ludClzY3JvbGxPcmlnaW47CiBAZW5kCiAKIEBwcm90b2NvbCBXZWJDb3JlRnJhbWVWaWV3Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAJKHJldmlzaW9uIDcyOTQ3KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNiBAQCBT
Y3JvbGxWaWV3OjpTY3JvbGxWaWV3KCkKICAgICAsIG1fdXNlRml4ZWRMYXlvdXQoZmFsc2UpCiAg
ICAgLCBtX3BhaW50c0VudGlyZUNvbnRlbnRzKGZhbHNlKQogICAgICwgbV9kZWxlZ2F0ZXNTY3Jv
bGxpbmcoZmFsc2UpCi0gICAgLCBtX3Njcm9sbE9yaWdpblgoMCkKIHsKICAgICBwbGF0Zm9ybUlu
aXQoKTsKIH0KQEAgLTI3OSwxNCArMjc4LDE0IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0Q29udGVu
dHNTaXplKGNvbnN0IEkKIAogSW50UG9pbnQgU2Nyb2xsVmlldzo6bWF4aW11bVNjcm9sbFBvc2l0
aW9uKCkgY29uc3QKIHsKLSAgICBJbnRQb2ludCBtYXhpbXVtT2Zmc2V0KGNvbnRlbnRzV2lkdGgo
KSAtIHZpc2libGVXaWR0aCgpIC0gbV9zY3JvbGxPcmlnaW5YLCBjb250ZW50c0hlaWdodCgpIC0g
dmlzaWJsZUhlaWdodCgpKTsKKyAgICBJbnRQb2ludCBtYXhpbXVtT2Zmc2V0KGNvbnRlbnRzV2lk
dGgoKSAtIHZpc2libGVXaWR0aCgpIC0gbV9zY3JvbGxPcmlnaW4ueCgpLCBjb250ZW50c0hlaWdo
dCgpIC0gdmlzaWJsZUhlaWdodCgpIC0gbV9zY3JvbGxPcmlnaW4ueSgpKTsKICAgICBtYXhpbXVt
T2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKICAgICByZXR1cm4gbWF4aW11bU9mZnNldDsK
IH0KIAogSW50UG9pbnQgU2Nyb2xsVmlldzo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gSW50UG9pbnQoLW1fc2Nyb2xsT3JpZ2luWCwgMCk7CisgICAgcmV0dXJu
IEludFBvaW50KC1tX3Njcm9sbE9yaWdpbi54KCksIC1tX3Njcm9sbE9yaWdpbi55KCkpOwogfQog
CiBJbnRQb2ludCBTY3JvbGxWaWV3OjphZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKGNv
bnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkgY29uc3QKQEAgLTMxNiw5ICszMTUsOSBAQCB2b2lk
IFNjcm9sbFZpZXc6OnZhbHVlQ2hhbmdlZChTY3JvbGxiYXIqCiAgICAgSW50U2l6ZSBuZXdPZmZz
ZXQgPSBtX3Njcm9sbE9mZnNldDsKICAgICBpZiAoc2Nyb2xsYmFyKSB7CiAgICAgICAgIGlmIChz
Y3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKLSAgICAgICAg
ICAgIG5ld09mZnNldC5zZXRXaWR0aChzY3JvbGxiYXItPnZhbHVlKCkgLSBtX3Njcm9sbE9yaWdp
blgpOworICAgICAgICAgICAgbmV3T2Zmc2V0LnNldFdpZHRoKHNjcm9sbGJhci0+dmFsdWUoKSAt
IG1fc2Nyb2xsT3JpZ2luLngoKSk7CiAgICAgICAgIGVsc2UgaWYgKHNjcm9sbGJhci0+b3JpZW50
YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKLSAgICAgICAgICAgIG5ld09mZnNldC5zZXRI
ZWlnaHQoc2Nyb2xsYmFyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIG5ld09mZnNldC5zZXRIZWln
aHQoc2Nyb2xsYmFyLT52YWx1ZSgpIC0gbV9zY3JvbGxPcmlnaW4ueSgpKTsKICAgICB9CiAKICAg
ICBJbnRTaXplIHNjcm9sbERlbHRhID0gbmV3T2Zmc2V0IC0gbV9zY3JvbGxPZmZzZXQ7CkBAIC01
MDMsNyArNTAyLDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAog
ICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlv
bih0cnVlKTsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdGVwcyhTY3JvbGxi
YXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKICAgICAgICAgbV9ob3Jpem9udGFs
U2Nyb2xsYmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudFdpZHRoLCBjb250ZW50c1dpZHRoKCkpOwot
ICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFZhbHVlKHNjcm9sbC53aWR0aCgpICsg
bV9zY3JvbGxPcmlnaW5YLCBTY3JvbGxiYXI6Ok5vdEZyb21TY3JvbGxBbmltYXRvcik7CisgICAg
ICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0VmFsdWUoc2Nyb2xsLndpZHRoKCkgKyBtX3Nj
cm9sbE9yaWdpbi54KCksIFNjcm9sbGJhcjo6Tm90RnJvbVNjcm9sbEFuaW1hdG9yKTsKICAgICAg
ICAgaWYgKG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQpCiAgICAgICAgICAgICBtX2hvcml6b250YWxT
Y3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0aW9uKGZhbHNlKTsgCiAgICAgfSAKQEAgLTUy
NSw3ICs1MjQsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgCiAg
ICAgICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlvbih0
cnVlKTsKICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0U3RlcHMoU2Nyb2xsYmFyOjpw
aXhlbHNQZXJMaW5lU3RlcCgpLCBwYWdlU3RlcCk7CiAgICAgICAgIG1fdmVydGljYWxTY3JvbGxi
YXItPnNldFByb3BvcnRpb24oY2xpZW50SGVpZ2h0LCBjb250ZW50c0hlaWdodCgpKTsKLSAgICAg
ICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0VmFsdWUoc2Nyb2xsLmhlaWdodCgpLCBTY3JvbGxi
YXI6Ok5vdEZyb21TY3JvbGxBbmltYXRvcik7CisgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXIt
PnNldFZhbHVlKHNjcm9sbC5oZWlnaHQoKSArIG1fc2Nyb2xsT3JpZ2luLnkoKSwgU2Nyb2xsYmFy
OjpOb3RGcm9tU2Nyb2xsQW5pbWF0b3IpOwogICAgICAgICBpZiAobV9zY3JvbGxiYXJzU3VwcHJl
c3NlZCkKICAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxp
ZGF0aW9uKGZhbHNlKTsKICAgICB9CkBAIC0xMDI3LDE5ICsxMDI2LDI0IEBAIHZvaWQgU2Nyb2xs
Vmlldzo6cmVtb3ZlUGFuU2Nyb2xsSWNvbigpCiAgICAgaG9zdFdpbmRvdygpLT5pbnZhbGlkYXRl
Q29udGVudHNBbmRXaW5kb3coSW50UmVjdChtX3BhblNjcm9sbEljb25Qb2ludCwgSW50U2l6ZShw
YW5JY29uU2l6ZUxlbmd0aCwgcGFuSWNvblNpemVMZW5ndGgpKSwgdHJ1ZSAvKmltbWVkaWF0ZSov
KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxPcmlnaW5YKGludCB4KQordm9pZCBT
Y3JvbGxWaWV3OjpzZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9pbnQmIG9yaWdpbiwgYm9vbCB1
cGRhdGVQb3NpdGlvbikKIHsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKLSAgICAgICAgcGxh
dGZvcm1TZXRTY3JvbGxPcmlnaW5YKHgpOworICAgICAgICBwbGF0Zm9ybVNldFNjcm9sbE9yaWdp
bihvcmlnaW4sIHVwZGF0ZVBvc2l0aW9uKTsKIAotICAgIG1fc2Nyb2xsT3JpZ2luWCA9IHg7Ci19
CisgICAgSW50UG9pbnQgcHJldlNjcm9sbE9yaWdpbiA9IG1fc2Nyb2xsT3JpZ2luOwogCi12b2lk
IFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoKQotewotICAgIGlmICghcGxhdGZvcm1XaWRn
ZXQoKSkKKyAgICBtX3Njcm9sbE9yaWdpbiA9IG9yaWdpbjsKKyAgICAKKyAgICBpZiAocGxhdGZv
cm1XaWRnZXQoKSB8fCAhdXBkYXRlUG9zaXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IENoZWNrIHRvIHNlZSBpZiBlaXRoZXIgdGhlIGRpcmVjdGlvbiBvciB3cml0aW5nLW1vZGUgaGFz
IGNoYW5nZWQgc3VjaCB0aGF0IG91ciBzY3JvbGwgb3JpZ2luIGhhcyBnb25lIGZyb20KKyAgICAv
LyB6ZXJvIHRvIG5vbi16ZXJvIChvciB2aWNlIHZlcnNhKSBpbiBhIHBhcnRpY3VsYXIgYXhpcy4g
IElmIHNvLCBqdXN0IHJlc2V0IHRoZSBzY3JvbGwgcG9zaXRpb24gdG8gdGhlIHNjcm9sbAorICAg
IC8vIG9yaWdpbi4KKyAgICBpZiAoKCFwcmV2U2Nyb2xsT3JpZ2luLngoKSAmJiBtX3Njcm9sbE9y
aWdpbi54KCkpIHx8ICghbV9zY3JvbGxPcmlnaW4ueCgpICYmIHByZXZTY3JvbGxPcmlnaW4ueCgp
KSB8fAorICAgICAgICAoIXByZXZTY3JvbGxPcmlnaW4ueSgpICYmIG1fc2Nyb2xsT3JpZ2luLnko
KSkgfHwgKCFtX3Njcm9sbE9yaWdpbi55KCkgJiYgcHJldlNjcm9sbE9yaWdpbi55KCkpKQogICAg
ICAgICB1cGRhdGVTY3JvbGxiYXJzKHNjcm9sbE9mZnNldCgpKTsKLSAgICAvLyBGSVhNRTogbmVl
ZCBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uYWxpdHkgZnJvbSBwbGF0Zm9ybVdpZGdldC4KIH0KIAog
I2lmICFQTEFURk9STShXWCkgJiYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKEVGTCkKQEAg
LTEwNzIsNyArMTA3Niw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxiYXJz
U3UKIHsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgoaW50
KQordm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpbihjb25zdCBJbnRQb2lu
dCYsIGJvb2wgdXBkYXRlUG9zaXRpb24pCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5o
CShyZXZpc2lvbiA3Mjk0NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDcgQEAgcHVibGljOgogICAgIEludFNpemUgc2Nyb2xs
T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkubG9jYXRpb24oKSAt
IEludFBvaW50KCk7IH0gLy8gR2V0cyB0aGUgc2Nyb2xsZWQgcG9zaXRpb24gYXMgYW4gSW50U2l6
ZS4gQ29udmVuaWVudCBmb3IgYWRkaW5nIHRvIG90aGVyIHNpemVzLgogICAgIEludFBvaW50IG1h
eGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OyAvLyBUaGUgbWF4aW11bSBwb3NpdGlvbiB3ZSBj
YW4gYmUgc2Nyb2xsZWQgdG8uCiAgICAgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkg
Y29uc3Q7IC8vIFRoZSBtaW5pbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KLSAg
ICAvLyBBZGp1c3QgdGhlIHBhc3MgaW4gc2Nyb2xsIHBvc2l0aW9uIHdpdGhpbiB0aGUgbWluaW11
bSBhbmQgbWF4aW11bSBwb3NpdGlvbnMuCisgICAgLy8gQWRqdXN0IHRoZSBwYXNzZWQgaW4gc2Ny
b2xsIHBvc2l0aW9uIHRvIGtlZXAgaXQgYmV0d2VlbiB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBw
b3NpdGlvbnMuCiAgICAgSW50UG9pbnQgYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShj
b25zdCBJbnRQb2ludCYpIGNvbnN0OyAKICAgICBpbnQgc2Nyb2xsWCgpIGNvbnN0IHsgcmV0dXJu
IHNjcm9sbFBvc2l0aW9uKCkueCgpOyB9CiAgICAgaW50IHNjcm9sbFkoKSBjb25zdCB7IHJldHVy
biBzY3JvbGxQb3NpdGlvbigpLnkoKTsgfQpAQCAtMjgyLDkgKzI4Miw4IEBAIHByb3RlY3RlZDoK
ICAgICAvLyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkgaW52YWxpZGF0aW5nIGV2ZXJ5dGhpbmcuCiAg
ICAgdmlydHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBk
YXRlUmVjdCk7CiAKLSAgICB2b2lkIHNldFNjcm9sbE9yaWdpblgoaW50KTsKLSAgICBpbnQgc2Ny
b2xsT3JpZ2luWCgpIHsgcmV0dXJuIG1fc2Nyb2xsT3JpZ2luWDsgfQotICAgIHZvaWQgdXBkYXRl
U2Nyb2xsYmFycygpOworICAgIHZvaWQgc2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50Jiwg
Ym9vbCB1cGRhdGVQb3NpdGlvbik7CisgICAgSW50UG9pbnQgc2Nyb2xsT3JpZ2luKCkgeyByZXR1
cm4gbV9zY3JvbGxPcmlnaW47IH0KIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBt
X2hvcml6b250YWxTY3JvbGxiYXI7CkBAIC0zMjEsMTAgKzMyMCwxOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9wYWludHNFbnRpcmVDb250ZW50czsKICAgICBib29sIG1fZGVsZWdhdGVzU2Nyb2xs
aW5nOwogCi0gICAgLy8gbV9zY3JvbGxPcmlnaW5YIGlzIDAgZm9yIExUUiBwYWdlLiBBbmQgaXQg
aXMgbmVnYXRpdmUgb2YgbGVmdCBsYXlvdXQKLSAgICAvLyBvdmVyZmxvdyBmb3IgUlRMIHBhZ2Uu
IEl0IGlzIG1haW5seSB1c2VkIHRvIHNldCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIKLSAgICAv
LyBwb3NpdGlvbiBmb3IgUlRMIHBhZ2UuCi0gICAgaW50IG1fc2Nyb2xsT3JpZ2luWDsKKyAgICAv
LyBUaGVyZSBhcmUgOCBwb3NzaWJsZSBjb21iaW5hdGlvbnMgb2Ygd3JpdGluZyBtb2RlIGFuZCBk
aXJlY3Rpb24uICBTY3JvbGwgb3JpZ2luIHdpbGwgYmUgbm9uLXplcm8gaW4gdGhlIHggb3IgeSBh
eGlzCisgICAgLy8gaWYgdGhlcmUgaXMgYW55IHJldmVyc2VkIGRpcmVjdGlvbiBvciB3cml0aW5n
LW1vZGUuICBUaGUgY29tYmluYXRpb25zIGFyZToKKyAgICAvLyB3cml0aW5nLW1vZGUgLyBkaXJl
Y3Rpb24gICAgIHNjcm9sbE9yaWdpbi54KCkgc2V0ICAgIHNjcm9sbE9yaWdpbi55KCkgc2V0Cisg
ICAgLy8gaG9yaXpvbnRhbC10YiAvIGx0ciAgICAgICAgICBOTyAgICAgICAgICAgICAgICAgICAg
ICBOTworICAgIC8vIGhvcml6b250YWwtdGIgLyBydGwgICAgICAgICAgWUVTICAgICAgICAgICAg
ICAgICAgICAgTk8KKyAgICAvLyBob3Jpem9udGFsLWJ0IC8gbHRyICAgICAgICAgIE5PICAgICAg
ICAgICAgICAgICAgICAgIFlFUworICAgIC8vIGhvcml6b250YWwtYnQgLyBydGwgICAgICAgICAg
WUVTICAgICAgICAgICAgICAgICAgICAgWUVTCisgICAgLy8gdmVydGljYWwtbHIgLyBsdHIgICAg
ICAgICAgICBOTyAgICAgICAgICAgICAgICAgICAgICBOTworICAgIC8vIHZlcnRpY2FsLWxyIC8g
cnRsICAgICAgICAgICAgTk8gICAgICAgICAgICAgICAgICAgICAgWUVTCisgICAgLy8gdmVydGlj
YWwtcmwgLyBsdHIgICAgICAgICAgICBZRVMgICAgICAgICAgICAgICAgICAgICBOTworICAgIC8v
IHZlcnRpY2FsLXJsIC8gcnRsICAgICAgICAgICAgWUVTICAgICAgICAgICAgICAgICAgICAgWUVT
CisgICAgSW50UG9pbnQgbV9zY3JvbGxPcmlnaW47CiAKICAgICB2b2lkIGluaXQoKTsKICAgICB2
b2lkIGRlc3Ryb3koKTsKQEAgLTM1NCw3ICszNjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1SZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25zdCBJbnRSZWN0JiwgYm9vbCBub3cpOwog
ICAgIGJvb2wgcGxhdGZvcm1Jc09mZnNjcmVlbigpIGNvbnN0OwogICAgCi0gICAgdm9pZCBwbGF0
Zm9ybVNldFNjcm9sbE9yaWdpblgoaW50KTsKKyAgICB2b2lkIHBsYXRmb3JtU2V0U2Nyb2xsT3Jp
Z2luKGNvbnN0IEludFBvaW50JiwgYm9vbCB1cGRhdGVQb3NpdGlvbik7CiAKICNpZiBQTEFURk9S
TShNQUMpICYmIGRlZmluZWQgX19PQkpDX18KIHB1YmxpYzoKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsVmlld01hYy5tbQkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxWaWV3TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDggQEAg
dm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbGJhcnNTdQogdm9pZCBTY3JvbGxWaWV3
OjpwbGF0Zm9ybVNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkK
IHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgTlNQb2ludCB0ZW1wUG9p
bnQgPSB7IG1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxPcmlnaW5YXSwgc2Nyb2xsUG9pbnQueCgp
KSwgbWF4KDAsIHNjcm9sbFBvaW50LnkoKSkgfTsgIC8vIERvbid0IHVzZSBOU01ha2VQb2ludCB0
byB3b3JrIGFyb3VuZCA0MjEzMzE0LgorICAgIE5TUG9pbnQgZmxvYXRQb2ludCA9IHNjcm9sbFBv
aW50OworICAgIE5TUG9pbnQgdGVtcFBvaW50ID0geyBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xs
T3JpZ2luXS54LCBmbG9hdFBvaW50LngpLCBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2lu
XS55LCBmbG9hdFBvaW50LnkpIH07ICAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBh
cm91bmQgNDIxMzMxNC4KICAgICBbZG9jdW1lbnRWaWV3KCkgc2Nyb2xsUG9pbnQ6dGVtcFBvaW50
XTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQpAQCAtMjAyLDEwICsyMDMsMTAg
QEAgYm9vbCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUlzT2Zmc2NyZWVuKCkgYwogICAgIHJldHVybiAh
W3BsYXRmb3JtV2lkZ2V0KCkgd2luZG93XSB8fCAhW1twbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10g
aXNWaXNpYmxlXTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdp
blgoaW50IHgpCit2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luKGNvbnN0
IEludFBvaW50JiBvcmlnaW4sIGJvb2wgdXBkYXRlUG9zaXRpb24pCiB7CiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwotICAgIFtzY3JvbGxWaWV3KCkgc2V0U2Nyb2xsT3JpZ2luWDp4
XTsKKyAgICBbc2Nyb2xsVmlldygpIHNldFNjcm9sbE9yaWdpbjpvcmlnaW4gdXBkYXRlUG9zaXRp
b246dXBkYXRlUG9zaXRpb25dOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAK
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzMsNyArNzczLDcg
QEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Um9vdEJveERlY29yYXRpb25zKAogICAgIC8vIFRoZSBi
YWNrZ3JvdW5kIG9mIHRoZSBib3ggZ2VuZXJhdGVkIGJ5IHRoZSByb290IGVsZW1lbnQgY292ZXJz
IHRoZSBlbnRpcmUgY2FudmFzIGluY2x1ZGluZwogICAgIC8vIGl0cyBtYXJnaW5zLgogICAgIGlu
dCBieCA9IHR4IC0gbWFyZ2luTGVmdCgpICsgdmlldygpLT5sZWZ0TGF5b3V0T3ZlcmZsb3coKTsK
LSAgICBpbnQgYnkgPSB0eSAtIG1hcmdpblRvcCgpOworICAgIGludCBieSA9IHR5IC0gbWFyZ2lu
VG9wKCkgKyB2aWV3KCktPnRvcExheW91dE92ZXJmbG93KCk7CiAgICAgaW50IGJ3ID0gbWF4KHcg
KyBtYXJnaW5MZWZ0KCkgKyBtYXJnaW5SaWdodCgpICsgYm9yZGVyTGVmdCgpICsgYm9yZGVyUmln
aHQoKSwgcncpOwogICAgIGludCBiaCA9IG1heChoICsgbWFyZ2luVG9wKCkgKyBtYXJnaW5Cb3R0
b20oKSArIGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCksIHJoKTsKIApJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHAJKHJldmlzaW9uIDcyOTQ3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsOCBAQCB2b2lkIFJl
bmRlclZpZXc6OmxheW91dCgpCiAgICAgLy8gUmVzZXQgb3ZlcmZsb3cgYW5kIHRoZW4gcmVwbGFj
ZSBpdCB3aXRoIGRvY1dpZHRoIGFuZCBkb2NIZWlnaHQuCiAgICAgbV9vdmVyZmxvdy5jbGVhcigp
OwogICAgIGludCBsZWZ0T3ZlcmZsb3cgPSBkb2NMZWZ0KCk7Ci0gICAgYWRkTGF5b3V0T3ZlcmZs
b3coSW50UmVjdChsZWZ0T3ZlcmZsb3csIDAsIGRvY1dpZHRoKGxlZnRPdmVyZmxvdyksIGRvY0hl
aWdodCgpKSk7CisgICAgaW50IHRvcE92ZXJmbG93ID0gZG9jVG9wKCk7CisgICAgYWRkTGF5b3V0
T3ZlcmZsb3coSW50UmVjdChsZWZ0T3ZlcmZsb3csIHRvcE92ZXJmbG93LCBkb2NXaWR0aChsZWZ0
T3ZlcmZsb3cpLCBkb2NIZWlnaHQodG9wT3ZlcmZsb3cpKSk7CiAKICAgICBBU1NFUlQobGF5b3V0
RGVsdGEoKSA9PSBJbnRTaXplKCkpOwogICAgIEFTU0VSVChtX2xheW91dFN0YXRlRGlzYWJsZUNv
dW50ID09IDApOwpAQCAtNjE3LDkgKzYxOCwxOCBAQCBJbnRSZWN0IFJlbmRlclZpZXc6OnZpZXdS
ZWN0KCkgY29uc3QKICAgICByZXR1cm4gSW50UmVjdCgpOwogfQogCi1pbnQgUmVuZGVyVmlldzo6
ZG9jSGVpZ2h0KCkgY29uc3QKK2ludCBSZW5kZXJWaWV3Ojpkb2NUb3AoKSBjb25zdAogewotICAg
IGludCBoID0gbG93ZXN0UG9zaXRpb24oKTsKKyAgICAvLyBDbGlwIG91dCB0b3Agb3ZlcmZsb3cg
aW4gdmVydGljYWwgTFRSIHBhZ2VzIG9yIGhvcml6b250YWwtdGIgcGFnZXMuCisgICAgaWYgKCgh
c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAmJiBzdHlsZSgpLT5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkpIHx8IHN0eWxlKCktPndyaXRpbmdNb2RlKCkgPT0gVG9wVG9Cb3R0b21X
cml0aW5nTW9kZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHN0ZDo6bWluKDAsIHRv
cG1vc3RQb3NpdGlvbigpKTsKK30KKworaW50IFJlbmRlclZpZXc6OmRvY0hlaWdodChpbnQgdG9w
T3ZlcmZsb3cpIGNvbnN0Cit7CisgICAgaW50IGggPSAoKCFzdHlsZSgpLT5pc0hvcml6b250YWxX
cml0aW5nTW9kZSgpICYmIHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgfHwgc3R5
bGUoKS0+d3JpdGluZ01vZGUoKSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKSA/CisgICAgICAg
ICAgICAgICAgbG93ZXN0UG9zaXRpb24oKSA6IGhlaWdodCgpIC0gdG9wT3ZlcmZsb3c7CiAKICAg
ICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGRvIGFueSBtYXJnaW4gY29sbGFwc2luZy4KICAgICAv
LyBJbnN0ZWFkIG9mIHRoaXMgZGggY29tcHV0YXRpb24gd2Ugc2hvdWxkIGtlZXAgdGhlIHJlc3Vs
dApAQCAtNjM2LDEzICs2NDYsMTYgQEAgaW50IFJlbmRlclZpZXc6OmRvY0hlaWdodCgpIGNvbnN0
CiAKIGludCBSZW5kZXJWaWV3Ojpkb2NMZWZ0KCkgY29uc3QKIHsKLSAgICAvLyBDbGlwIG91dCBs
ZWZ0IG92ZXJmbG93IGluIExUUiBwYWdlLgotICAgIHJldHVybiBzdHlsZSgpLT5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkgPyAwIDogc3RkOjptaW4oMCwgbGVmdG1vc3RQb3NpdGlvbigpKTsKKyAg
ICAvLyBDbGlwIG91dCBsZWZ0IG92ZXJmbG93IGluIGhvcml6b250YWwgTFRSIHBhZ2VzIG9yIHZl
cnRpY2FsLWxyIHBhZ2VzLgorICAgIGlmICgoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSAmJiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpIHx8IHN0eWxlKCktPndy
aXRpbmdNb2RlKCkgPT0gTGVmdFRvUmlnaHRXcml0aW5nTW9kZSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIHN0ZDo6bWluKDAsIGxlZnRtb3N0UG9zaXRpb24oKSk7CiB9CiAKIGludCBS
ZW5kZXJWaWV3Ojpkb2NXaWR0aChpbnQgbGVmdE92ZXJmbG93KSBjb25zdAogewotICAgIGludCB3
ID0gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gcmlnaHRtb3N0UG9zaXRpb24o
KSA6IHdpZHRoKCkgLSBsZWZ0T3ZlcmZsb3c7CisgICAgaW50IHcgPSAoKHN0eWxlKCktPmlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgJiYgc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
KSB8fCBzdHlsZSgpLT53cml0aW5nTW9kZSgpID09IExlZnRUb1JpZ2h0V3JpdGluZ01vZGUpID8g
CisgICAgICAgICAgICAgICAgcmlnaHRtb3N0UG9zaXRpb24oKSA6IHdpZHRoKCkgLSBsZWZ0T3Zl
cmZsb3c7CiAKICAgICBmb3IgKFJlbmRlckJveCogYyA9IGZpcnN0Q2hpbGRCb3goKTsgYzsgYyA9
IGMtPm5leHRTaWJsaW5nQm94KCkpIHsKICAgICAgICAgaW50IGR3ID0gYy0+d2lkdGgoKSArIGMt
Pm1hcmdpbkxlZnQoKSArIGMtPm1hcmdpblJpZ2h0KCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5oCShyZXZpc2lvbiA3Mjk0NykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAko
d29ya2luZyBjb3B5KQpAQCAtMTcyLDggKzE3Miw5IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToK
ICAgICBib29sIHNob3VsZFJlcGFpbnQoY29uc3QgSW50UmVjdCYgcikgY29uc3Q7Ci0gICAgICAg
IAotICAgIGludCBkb2NIZWlnaHQoKSBjb25zdDsKKyAgICAKKyAgICBpbnQgZG9jVG9wKCkgY29u
c3Q7CisgICAgaW50IGRvY0hlaWdodChpbnQgdG9wT3ZlcmZsb3cpIGNvbnN0OwogICAgIGludCBk
b2NMZWZ0KCkgY29uc3Q7CiAgICAgaW50IGRvY1dpZHRoKGludCBsZWZ0T3ZlcmZsb3cpIGNvbnN0
OwogCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gNzMwNTcpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEwLTEyLTAxICBEYXZpZCBIeWF0dCAgPGh5
YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY2NDUKKyAg
ICAgICAgCisgICAgICAgIFBhcnQgMSBvZiBtYWtpbmcgc2Nyb2xsaW5nIHdvcmsgd2l0aCB2ZXJ0
aWNhbC4gVGhpcyBwYXRjaCBnZW5lcmFsaXplcyB0aGUgc2Nyb2xsT3JpZ2luWCBjb250ZW50Cisg
ICAgICAgIHJlY2VudGx5IGFkZGVkIGZvciBob3Jpem9udGFsIFJUTCBkb2N1bWVudHMgYW5kIGFw
cGxpZXMgaXQgdG8gd3JpdGluZyBtb2RlcyBhcyB3ZWxsLiAgTm93IHRoZQorICAgICAgICBzY3Jv
bGxPcmlnaW4gaXMgYSBwb2ludCwgc2luY2UgeW91IGNhbiBzdGFydCBvZmYgbG9ja2VkIHRvIHRo
ZSBib3R0b20gb3IgbG9ja2VkIHRvIHRoZSByaWdodC4KKyAgICAgICAgCisgICAgICAgIFRoaXMg
cGF0Y2ggYWxzbyBmaXhlcyBudW1lcm91cyBidWdzIHdpdGggdGhlIHNjcm9sbE9yaWdpbiBjb2Rl
IHVzaW5nIG5hdGl2ZSBNYWMgTlNTY3JvbGxWaWV3cyBhbmQKKyAgICAgICAgbWFrZXMgdGhlbSBi
ZWhhdmUgdGhlIHNhbWUgYXMgdGhlIGNyb3NzLXBsYXRmb3JtIGNvZGUgKGFsbG93aW5nIGZvciBj
cm9zcy1wbGF0Zm9ybSByZXN1bHRzIHRvIGJlCisgICAgICAgIGxhbmRlZCkuCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5tbToKKyAgICAgICAgKC1bV2ViRHlu
YW1pY1Njcm9sbEJhcnNWaWV3IGFkanVzdEZvclNjcm9sbE9yaWdpbkNoYW5nZV0pOgorICAgICAg
ICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgdXBkYXRlU2Nyb2xsZXJzXSk6CisgICAgICAg
ICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyByZWZsZWN0U2Nyb2xsZWRDbGlwVmlldzpdKToK
KyAgICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHNldFNjcm9sbE9yaWdpbjp1cGRh
dGVQb3NpdGlvbjpdKToKKyAgICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHNjcm9s
bE9yaWdpbl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJGcmFtZVZpZXcgX3Njcm9sbFRvQmVnaW5uaW5nT2ZEb2N1bWVudF0pOgorICAgICAgICAo
LVtXZWJGcmFtZVZpZXcgX3Njcm9sbFRvRW5kT2ZEb2N1bWVudF0pOgorCiAyMDEwLTExLTI5ICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xs
QmFyc1ZpZXcubW0JKHJldmlzaW9uIDcyOTQ3KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5
bmFtaWNTY3JvbGxCYXJzVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjMsMTIgKzYzLDE0IEBA
IHN0cnVjdCBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXdQcml2YXRlIHsKICAgICBib29sIGhvcml6
b250YWxTY3JvbGxpbmdBbGxvd2VkQnV0U2Nyb2xsZXJIaWRkZW47CiAgICAgYm9vbCB2ZXJ0aWNh
bFNjcm9sbGluZ0FsbG93ZWRCdXRTY3JvbGxlckhpZGRlbjsKIAotICAgIC8vIHNjcm9sbE9yaWdp
blggaXMgMCBmb3IgTFRSIHBhZ2UgYW5kIGlzIHRoZSBuZWdhdGl2ZSBvZiBsZWZ0IGxheW91dCBv
dmVyZmxvdyB2YWx1ZSBmb3IgUlRMIHBhZ2UuCi0gICAgaW50IHNjcm9sbE9yaWdpblg7CisgICAg
Ly8gc2Nyb2xsT3JpZ2luIGlzIHNldCBmb3IgdmFyaW91cyBjb21iaW5hdGlvbnMgb2Ygd3JpdGlu
ZyBtb2RlIGFuZCBkaXJlY3Rpb24uICBTZWUgdGhlIGNvbW1lbnQgbmV4dCB0byB0aGUKKyAgICAv
LyBjb3JyZXNwb25kaW5nIG1lbWJlciBpbiBTY3JvbGxWaWV3LmguCisgICAgTlNQb2ludCBzY3Jv
bGxPcmlnaW47CiAKICAgICAvLyBGbGFnIHRvIGluZGljYXRlIHRoYXQgdGhlIHNjcm9sbGJhciB0
aHVtYidzIGluaXRpYWwgcG9zaXRpb24gbmVlZHMgdG8KICAgICAvLyBiZSBtYW51YWxseSBzZXQu
Ci0gICAgYm9vbCBzZXRTY3JvbGxiYXJUaHVtYkluaXRpYWxQb3NpdGlvbjsKKyAgICBib29sIHNj
cm9sbE9yaWdpbkNoYW5nZWQ7CisgICAgTlNQb2ludCBzY3JvbGxQb3NpdGlvbkV4Y2x1ZGluZ09y
aWdpbjsKIAogICAgIGJvb2wgaW5Qcm9ncmFtbWF0aWNTY3JvbGw7CiB9OwpAQCAtMjE1LDI3ICsy
MTcsMjcgQEAgLSAodm9pZClzZXRTY3JvbGxCYXJzU3VwcHJlc3NlZDooQk9PTClzdQogI2VuZGlm
CiB9CiAKLS0gKHZvaWQpcmVmcmVzaEluaXRpYWxTY3JvbGxiYXJQb3NpdGlvbgorLSAodm9pZClh
ZGp1c3RGb3JTY3JvbGxPcmlnaW5DaGFuZ2UKIHsKLSAgICBpZiAoX3ByaXZhdGUtPnNldFNjcm9s
bGJhclRodW1iSW5pdGlhbFBvc2l0aW9uKSB7Ci0gICAgICAgIE5TVmlldyAqZG9jdW1lbnRWaWV3
ID0gW3NlbGYgZG9jdW1lbnRWaWV3XTsKLSAgICAgICAgTlNSZWN0IGRvY3VtZW50UmVjdCA9IFtk
b2N1bWVudFZpZXcgYm91bmRzXTsKKyAgICBpZiAoIV9wcml2YXRlLT5zY3JvbGxPcmlnaW5DaGFu
Z2VkKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgLy8gSWYgc2Nyb2xsT3JpZ2luWCBpcyBu
b24temVybyB0aGF0IG1lYW5zIHRoYXQgdGhlcmUncyBhIGxlZnQgb3ZlcmZsb3cgPD0+IHRoaXMg
aXMgYW4gUlRMIGRvY3VtZW50IGFuZCB0aHVzCi0gICAgICAgIC8vIHRoZSBpbml0aWFsIHBvc2l0
aW9uIG9mIHRoZSBob3Jpem9udGFsIHNjcm9sbGJhciB0aHVtYiBzaG91bGQgYmUgb24gdGhlIHJp
Z2h0LgotICAgICAgICAvLyBGSVhNRTogSWYga25vd2xlZGdlIG9mIGRvY3VtZW50IGRpcmVjdGlv
bmFsaXR5IGlzIGV2ZXIgcHJvcGFnYXRlZCB0byB0aGUgc2Nyb2xsIHZpZXcsIGl0IHByb2JhYmx5
IG1ha2VzCi0gICAgICAgIC8vIG1vcmUgc2Vuc2UgdG8gdXNlIHRoZSBkaXJlY3Rpb25hbGl0eSBk
aXJlY3RseSBpbiB0aGUgYmVsb3cgaWYgc3RhdGVtZW50LCByYXRoZXIgdGhhbiBkb2luZyBzbyBp
bmRpcmVjdGx5Ci0gICAgICAgIC8vIHRocm91Z2ggc2Nyb2xsT3JpZ2luWC4KLSAgICAgICAgaWYg
KF9wcml2YXRlLT5zY3JvbGxPcmlnaW5YICE9IDApIHsKLSAgICAgICAgICAgIC8vIFRoZSBjYWxs
IHRvIFtOU1ZpZXcgc2Nyb2xsUG9pbnQ6XSBmaXJlcyBvZmYgbm90aWZpY2F0aW9uIHRoZSBoYW5k
bGVyIGZvciB3aGljaCBuZWVkcyB0byBrbm93IHRoYXQKLSAgICAgICAgICAgIC8vIHdlJ3JlIHNl
dHRpbmcgdGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uIHNvIGl0IGRvZXNuJ3QgaW50ZXJwcmV0
IHRoaXMgYXMgYSB1c2VyIGFjdGlvbiBhbmQKLSAgICAgICAgICAgIC8vIGZpcmUgb2ZmIGEgSlMg
ZXZlbnQuCi0gICAgICAgICAgICBfcHJpdmF0ZS0+aW5Qcm9ncmFtbWF0aWNTY3JvbGwgPSB0cnVl
OwotICAgICAgICAgICAgW2RvY3VtZW50VmlldyBzY3JvbGxQb2ludDpOU01ha2VQb2ludChOU01h
eFgoZG9jdW1lbnRSZWN0KSAtIE5TV2lkdGgoW3NlbGYgY29udGVudFZpZXdGcmFtZV0pLCAwKV07
Ci0gICAgICAgICAgICBfcHJpdmF0ZS0+aW5Qcm9ncmFtbWF0aWNTY3JvbGwgPSBmYWxzZTsKLSAg
ICAgICAgfQotICAgICAgICBfcHJpdmF0ZS0+c2V0U2Nyb2xsYmFyVGh1bWJJbml0aWFsUG9zaXRp
b24gPSBmYWxzZTsKLSAgICB9CisgICAgX3ByaXZhdGUtPnNjcm9sbE9yaWdpbkNoYW5nZWQgPSBm
YWxzZTsKKworICAgIE5TVmlldyAqZG9jdW1lbnRWaWV3ID0gW3NlbGYgZG9jdW1lbnRWaWV3XTsK
KyAgICBOU1JlY3QgZG9jdW1lbnRSZWN0ID0gW2RvY3VtZW50VmlldyBib3VuZHNdOworCisgICAg
Ly8gSWYgc2Nyb2xsT3JpZ2luWCBpcyBub24temVybyB0aGF0IG1lYW5zIHRoYXQgdGhlcmUncyBh
IGxlZnQgb3ZlcmZsb3cgPD0+IHRoaXMgaXMgYW4gUlRMIGRvY3VtZW50IGFuZCB0aHVzCisgICAg
Ly8gdGhlIGluaXRpYWwgcG9zaXRpb24gb2YgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyIHRodW1i
IHNob3VsZCBiZSBvbiB0aGUgcmlnaHQuCisgICAgLy8gRklYTUU6IElmIGtub3dsZWRnZSBvZiBk
b2N1bWVudCBkaXJlY3Rpb25hbGl0eSBpcyBldmVyIHByb3BhZ2F0ZWQgdG8gdGhlIHNjcm9sbCB2
aWV3LCBpdCBwcm9iYWJseSBtYWtlcworICAgIC8vIG1vcmUgc2Vuc2UgdG8gdXNlIHRoZSBkaXJl
Y3Rpb25hbGl0eSBkaXJlY3RseSBpbiB0aGUgYmVsb3cgaWYgc3RhdGVtZW50LCByYXRoZXIgdGhh
biBkb2luZyBzbyBpbmRpcmVjdGx5CisgICAgLy8gdGhyb3VnaCBzY3JvbGxPcmlnaW5YLgorICAg
IC8vIFRoZSBjYWxsIHRvIFtOU1ZpZXcgc2Nyb2xsUG9pbnQ6XSBmaXJlcyBvZmYgbm90aWZpY2F0
aW9uIHRoZSBoYW5kbGVyIGZvciB3aGljaCBuZWVkcyB0byBrbm93IHRoYXQKKyAgICAvLyB3ZSdy
ZSBzZXR0aW5nIHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiBzbyBpdCBkb2Vzbid0IGludGVy
cHJldCB0aGlzIGFzIGEgdXNlciBhY3Rpb24gYW5kCisgICAgLy8gZmlyZSBvZmYgYSBKUyBldmVu
dC4KKyAgICBfcHJpdmF0ZS0+aW5Qcm9ncmFtbWF0aWNTY3JvbGwgPSB0cnVlOworICAgIFtkb2N1
bWVudFZpZXcgc2Nyb2xsUG9pbnQ6TlNNYWtlUG9pbnQoX3ByaXZhdGUtPnNjcm9sbFBvc2l0aW9u
RXhjbHVkaW5nT3JpZ2luLnggKyBkb2N1bWVudFJlY3Qub3JpZ2luLngsIF9wcml2YXRlLT5zY3Jv
bGxQb3NpdGlvbkV4Y2x1ZGluZ09yaWdpbi55ICsgZG9jdW1lbnRSZWN0Lm9yaWdpbi55KV07Cisg
ICAgX3ByaXZhdGUtPmluUHJvZ3JhbW1hdGljU2Nyb2xsID0gZmFsc2U7CiB9CiAKIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBjTWF4VXBkYXRlU2Nyb2xsYmFyc1Bhc3MgPSAyOwpAQCAtMzM5LDE0ICsz
NDEsMTIgQEAgLSAodm9pZCl1cGRhdGVTY3JvbGxlcnMKICAgICBpZiAoaGFzSG9yaXpvbnRhbFNj
cm9sbGVyICE9IG5ld0hhc0hvcml6b250YWxTY3JvbGxlcikgewogICAgICAgICBfcHJpdmF0ZS0+
aW5VcGRhdGVTY3JvbGxlcnMgPSBZRVM7CiAgICAgICAgIFtzZWxmIHNldEhhc0hvcml6b250YWxT
Y3JvbGxlcjpuZXdIYXNIb3Jpem9udGFsU2Nyb2xsZXJdOwotICAgICAgICAKLSAgICAgICAgLy8g
Rm9yIFJUTCBkb2N1bWVudHMsIHdlIG5lZWQgdG8gc2V0IHRoZSBpbml0aWFsIHBvc2l0aW9uIG9m
IHRoZQotICAgICAgICAvLyBob3Jpem9udGFsIHNjcm9sbGJhciB0aHVtYiB0byBiZSBvbiB0aGUg
cmlnaHQuCi0gICAgICAgIGlmIChuZXdIYXNIb3Jpem9udGFsU2Nyb2xsZXIpCi0gICAgICAgICAg
ICBfcHJpdmF0ZS0+c2V0U2Nyb2xsYmFyVGh1bWJJbml0aWFsUG9zaXRpb24gPSB0cnVlOwotICAg
ICAgICAKICAgICAgICAgX3ByaXZhdGUtPmluVXBkYXRlU2Nyb2xsZXJzID0gTk87CiAgICAgICAg
IG5lZWRzTGF5b3V0ID0gWUVTOworICAgICAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtzZWxm
IGRvY3VtZW50Vmlld107CisgICAgICAgIE5TUmVjdCBkb2N1bWVudFJlY3QgPSBbZG9jdW1lbnRW
aWV3IGJvdW5kc107CisgICAgICAgIGlmIChkb2N1bWVudFJlY3Qub3JpZ2luLnkgPCAwICYmICFu
ZXdIYXNIb3Jpem9udGFsU2Nyb2xsZXIpCisgICAgICAgICAgICBbZG9jdW1lbnRWaWV3IHNldEJv
dW5kc09yaWdpbjpOU01ha2VQb2ludChkb2N1bWVudFJlY3Qub3JpZ2luLngsIGRvY3VtZW50UmVj
dC5vcmlnaW4ueSArPSAxNSldOwogICAgIH0KIAogICAgIGlmIChoYXNWZXJ0aWNhbFNjcm9sbGVy
ICE9IG5ld0hhc1ZlcnRpY2FsU2Nyb2xsZXIpIHsKQEAgLTM1NCw2ICszNTQsMTAgQEAgLSAodm9p
ZCl1cGRhdGVTY3JvbGxlcnMKICAgICAgICAgW3NlbGYgc2V0SGFzVmVydGljYWxTY3JvbGxlcjpu
ZXdIYXNWZXJ0aWNhbFNjcm9sbGVyXTsKICAgICAgICAgX3ByaXZhdGUtPmluVXBkYXRlU2Nyb2xs
ZXJzID0gTk87CiAgICAgICAgIG5lZWRzTGF5b3V0ID0gWUVTOworICAgICAgICBOU1ZpZXcgKmRv
Y3VtZW50VmlldyA9IFtzZWxmIGRvY3VtZW50Vmlld107CisgICAgICAgIE5TUmVjdCBkb2N1bWVu
dFJlY3QgPSBbZG9jdW1lbnRWaWV3IGJvdW5kc107CisgICAgICAgIGlmIChkb2N1bWVudFJlY3Qu
b3JpZ2luLnggPCAwICYmICFuZXdIYXNWZXJ0aWNhbFNjcm9sbGVyKQorICAgICAgICAgICAgW2Rv
Y3VtZW50VmlldyBzZXRCb3VuZHNPcmlnaW46TlNNYWtlUG9pbnQoZG9jdW1lbnRSZWN0Lm9yaWdp
bi54ICs9IDE1LCBkb2N1bWVudFJlY3Qub3JpZ2luLnkpXTsKICAgICB9CiAKICAgICBpZiAobmVl
ZHNMYXlvdXQgJiYgX3ByaXZhdGUtPmluVXBkYXRlU2Nyb2xsZXJzTGF5b3V0UGFzcyA8IGNNYXhV
cGRhdGVTY3JvbGxiYXJzUGFzcyAmJgpAQCAtNDEwLDcgKzQxNCw3IEBAIC0gKHZvaWQpcmVmbGVj
dFNjcm9sbGVkQ2xpcFZpZXc6KE5TQ2xpcFYKICAgICAvLyBUaGUgY2FsbCB0byBbTlNWaWV3IHJl
ZmxlY3RTY3JvbGxlZENsaXBWaWV3XSBzZXRzIHRoZSBzY3JvbGxiYXIgdGh1bWIKICAgICAvLyBw
b3NpdGlvbiB0byAwICh0aGUgbGVmdCkgd2hlbiB0aGUgdmlldyBpcyBpbml0aWFsbHkgZGlzcGxh
eWVkLgogICAgIC8vIFRoaXMgY2FsbCB1cGRhdGVzIHRoZSBpbml0aWFsIHBvc2l0aW9uIGNvcnJl
Y3RseS4KLSAgICBbc2VsZiByZWZyZXNoSW5pdGlhbFNjcm9sbGJhclBvc2l0aW9uXTsKKyAgICBb
c2VsZiBhZGp1c3RGb3JTY3JvbGxPcmlnaW5DaGFuZ2VdOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKSAmJiBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCiAgICAgTlNWaWV3
ICpkb2N1bWVudFZpZXcgPSBbc2VsZiBkb2N1bWVudFZpZXddOwpAQCAtNTczLDIyICs1NzcsMjkg
QEAgLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIAogICAgIHJldHVybiBbc3VwZXIgYWNj
ZXNzaWJpbGl0eUlzSWdub3JlZF07CiB9CiAKLS0gKHZvaWQpc2V0U2Nyb2xsT3JpZ2luWDooaW50
KXNjcm9sbE9yaWdpblgKKy0gKHZvaWQpc2V0U2Nyb2xsT3JpZ2luOihOU1BvaW50KXNjcm9sbE9y
aWdpbiB1cGRhdGVQb3NpdGlvbjooQk9PTCl1cGRhdGVQb3NpdGlvbgogewotICAgIF9wcml2YXRl
LT5zY3JvbGxPcmlnaW5YID0gc2Nyb2xsT3JpZ2luWDsKLSAgICAKKyAgICBfcHJpdmF0ZS0+c2Ny
b2xsT3JpZ2luID0gc2Nyb2xsT3JpZ2luOwogICAgIGlkIGRvY1ZpZXcgPSBbc2VsZiBkb2N1bWVu
dFZpZXddOwotICAgIGlmIChzY3JvbGxPcmlnaW5YICE9IFtkb2NWaWV3IGJvdW5kc10ub3JpZ2lu
LngpIHsKLSAgICAgICAgLy8gIi1bc2VsZiBzY3JvbGxPcmlnaW5YXSIgaXMgZXF1YWwgdG8gdGhl
IGxlZnQgbGF5b3V0IG92ZXJmbG93LgotICAgICAgICAvLyBNYWtlIERvY3VtZW50IGJvdW5kcyBv
cmlnaW4geCBjb29yZGluYXRlIGNvcnJlc3BvbmQgdG8gdGhlIGxlZnQgb3ZlcmZsb3cgc28gdGhl
IGVudGlyZSBjYW52YXMgaXMgY292ZXJlZCBieSB0aGUgZG9jdW1lbnQuCi0gICAgICAgIFtkb2NW
aWV3IHNldEJvdW5kc09yaWdpbjpOU01ha2VQb2ludCgtc2Nyb2xsT3JpZ2luWCwgW2RvY1ZpZXcg
Ym91bmRzXS5vcmlnaW4ueSldOwotICAgIH0KKyAgICBOU1BvaW50IGRvY09yaWdpbiA9IFtkb2NW
aWV3IGJvdW5kc10ub3JpZ2luOworICAgIGlmIChkb2NPcmlnaW4ueCAhPSAtc2Nyb2xsT3JpZ2lu
LnggfHwgZG9jT3JpZ2luLnkgIT0gLXNjcm9sbE9yaWdpbi55KSB7CisgICAgICAgIE5TUmVjdCB2
aXNpYmxlUmVjdCA9IFtzZWxmIGRvY3VtZW50VmlzaWJsZVJlY3RdOworICAgICAgICAgCisgICAg
ICAgIFtkb2NWaWV3IHNldEJvdW5kc09yaWdpbjpOU01ha2VQb2ludCgtc2Nyb2xsT3JpZ2luLngs
IC1zY3JvbGxPcmlnaW4ueSldOwogCisgICAgICAgIF9wcml2YXRlLT5zY3JvbGxPcmlnaW5DaGFu
Z2VkID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIC8vIE1haW50YWluIG91ciBvcmlnaW5hbCBw
b3NpdGlvbiBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhlIG5ldyBzY3JvbGwgb3JpZ2luLgorICAgICAg
ICBfcHJpdmF0ZS0+c2Nyb2xsUG9zaXRpb25FeGNsdWRpbmdPcmlnaW4gPSBOU01ha2VQb2ludCh2
aXNpYmxlUmVjdC5vcmlnaW4ueCArIHNjcm9sbE9yaWdpbi54LCB2aXNpYmxlUmVjdC5vcmlnaW4u
eSArIHNjcm9sbE9yaWdpbi55KTsKKyAgICAgICAgCisgICAgICAgIGlmICh1cGRhdGVQb3NpdGlv
bikgLy8gT3RoZXJ3aXNlIHdlJ2xsIGp1c3QgbGV0IHRoZSBzbmFwIGhhcHBlbiB3aGVuIHdlIHVw
ZGF0ZSBmb3IgdGhlIHJlc2l6ZS4KKyAgICAgICAgICAgIFtzZWxmIGFkanVzdEZvclNjcm9sbE9y
aWdpbkNoYW5nZV07CisgICAgfQogfQogCi0tIChpbnQpc2Nyb2xsT3JpZ2luWAorLSAoTlNQb2lu
dClzY3JvbGxPcmlnaW4KIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPnNjcm9sbE9yaWdpblg7Cisg
ICAgcmV0dXJuIF9wcml2YXRlLT5zY3JvbGxPcmlnaW47CiB9CiAKIEBlbmQKSW5kZXg6IFdlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lVmlldy5tbQkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWVWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MzYsNyArNTM2LDggQEAg
LSAoQk9PTClfc2Nyb2xsVG9CZWdpbm5pbmdPZkRvY3VtZW50CiAgICAgaWYgKCFbc2VsZiBfaXNT
Y3JvbGxhYmxlXSkKICAgICAgICAgcmV0dXJuIE5POwogICAgIE5TUG9pbnQgcG9pbnQgPSBbW1tz
ZWxmIF9zY3JvbGxWaWV3XSBkb2N1bWVudFZpZXddIGZyYW1lXS5vcmlnaW47Ci0gICAgcG9pbnQu
eCArPSBbW3NlbGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpblhdOworICAgIHBvaW50LnggKz0g
W1tzZWxmIF9zY3JvbGxWaWV3XSBzY3JvbGxPcmlnaW5dLng7CisgICAgcG9pbnQueSArPSBbW3Nl
bGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpbl0ueTsKICAgICByZXR1cm4gW1tzZWxmIF9jb250
ZW50Vmlld10gX3Njcm9sbFRvOiZwb2ludCBhbmltYXRlOllFU107CiB9CiAKQEAgLTU0OCw3ICs1
NDksOCBAQCAtIChCT09MKV9zY3JvbGxUb0VuZE9mRG9jdW1lbnQKICAgICAgICAgcmV0dXJuIE5P
OwogICAgIE5TUmVjdCBmcmFtZSA9IFtbW3NlbGYgX3Njcm9sbFZpZXddIGRvY3VtZW50Vmlld10g
ZnJhbWVdOwogICAgIE5TUG9pbnQgcG9pbnQgPSBOU01ha2VQb2ludChmcmFtZS5vcmlnaW4ueCwg
TlNNYXhZKGZyYW1lKSk7Ci0gICAgcG9pbnQueCArPSBbW3NlbGYgX3Njcm9sbFZpZXddIHNjcm9s
bE9yaWdpblhdOworICAgIHBvaW50LnggKz0gW1tzZWxmIF9zY3JvbGxWaWV3XSBzY3JvbGxPcmln
aW5dLng7CisgICAgcG9pbnQueSArPSBbW3NlbGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpbl0u
eTsKICAgICByZXR1cm4gW1tzZWxmIF9jb250ZW50Vmlld10gX3Njcm9sbFRvOiZwb2ludCBhbmlt
YXRlOllFU107CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDczMDU3KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTAtMTItMDEgIERh
dmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NjY0NQorICAgICAgICAKKyAgICAgICAgUGFydCAxIG9mIG1ha2luZyBzY3JvbGxpbmcg
d29yayB3aXRoIHZlcnRpY2FsLiBUaGlzIHBhdGNoIGdlbmVyYWxpemVzIHRoZSBzY3JvbGxPcmln
aW5YIGNvbnRlbnQKKyAgICAgICAgcmVjZW50bHkgYWRkZWQgZm9yIGhvcml6b250YWwgUlRMIGRv
Y3VtZW50cyBhbmQgYXBwbGllcyBpdCB0byB3cml0aW5nIG1vZGVzIGFzIHdlbGwuICBOb3cgdGhl
CisgICAgICAgIHNjcm9sbE9yaWdpbiBpcyBhIHBvaW50LCBzaW5jZSB5b3UgY2FuIHN0YXJ0IG9m
ZiBsb2NrZWQgdG8gdGhlIGJvdHRvbSBvciBsb2NrZWQgdG8gdGhlIHJpZ2h0LgorICAgICAgICAK
KyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGZpeGVzIG51bWVyb3VzIGJ1Z3Mgd2l0aCB0aGUgc2Ny
b2xsT3JpZ2luIGNvZGUgdXNpbmcgbmF0aXZlIE1hYyBOU1Njcm9sbFZpZXdzIGFuZAorICAgICAg
ICBtYWtlcyB0aGVtIGJlaGF2ZSB0aGUgc2FtZSBhcyB0aGUgY3Jvc3MtcGxhdGZvcm0gY29kZSAo
YWxsb3dpbmcgZm9yIGNyb3NzLXBsYXRmb3JtIHJlc3VsdHMgdG8gYmUKKyAgICAgICAgbGFuZGVk
KS4KKworICAgICAgICAqIGZhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250
LWZpcmUtb25zY3JvbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS92
ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLWRvZXNudC1maXJlLW9uc2Nyb2xsLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRs
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci13aGVu
LWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS92ZXJ0
aWNhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20v
aG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXIt
aW4tcnRsLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFz
dC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKwogMjAxMC0xMi0wMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1y
dGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9y
aXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw5IEBACitvcmlnaW5hbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2UgOiBTdWNjZXNzCitob3Jp
em9udGFsIHNjcm9sbDogOiBTdWNjZXNzCitjb250aW51b3VzbHkgY2FsbCB3aW5kb3cuc2Nyb2xs
WCA6IFN1Y2Nlc3MKK3pvb20gaW4gYW5kIG91dCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb246IFN1
Y2Nlc3MKK3Jlc2l6ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCit3aGVlbCBz
Y3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCitLZXlE
b3duIEhPTUUgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2U6IDAK
K0tleURvd24gRU5EIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdl
OiAwCitzZWxlY3RBbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQ6IFN1Y2Nlc3MKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1z
Y3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorb3JpZ2luYWwgc2Nyb2xs
IHggZm9yIFJUTCBwYWdlIDogU3VjY2VzcworaG9yaXpvbnRhbCBzY3JvbGwgeCBmb3IgUlRMIHBh
Z2UgOiBTdWNjZXNzCitvcmlnaW5hbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgOiBTdWNjZXNzCito
b3Jpem9udGFsIHNjcm9sbCB4IGZvciBMVFIgcGFnZSA6IFN1Y2Nlc3MKKworCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLWRvZXNudC1maXJlLW9u
c2Nyb2xsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS92
ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLWRvZXNudC1maXJlLW9uc2Nyb2xsLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJh
ci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdHMgdGhhdCB3aGVuIGEgcGFnZSB3aXRoIGFuIFJUTCBv
dmVyZmxvdyBpcyBpbml0aWFsbHkgbG9hZGVkLCBubyBzY3JvbGwgZXZlbnQgaXMgc2VudC4KK1Ro
aXMgdGVzdCBoYXMgcGFzc2VkIGlmIHRoZSB0ZXh0ICJGQUlMIC0gc2Nyb2xsIGV2ZW50IHJlY2Vp
dmVkISIgZG9lcyBub3QgYXBwZWFyIGJlbG93LgorTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQs
IGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNp
ZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmlt
IHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1
dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3Ig
aW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1
IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0
IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQg
YW5pbSBpZCBlc3QgbGFib3J1bS4iCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRp
Y2FsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLWRvZXNu
dC1maXJlLW9uc2Nyb2xsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLWRvZXNudC1maXJlLW9uc2Nyb2xsLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgZGlyPXJ0
bCBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6dmVydGljYWwtbHIiPgorICAgIDxoZWFkPgor
ICAgICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KKyAgICAgICAgICAgIGZ1bmN0
aW9uIGxvZyhzdHIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGxpID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgICAgICAgICBsaS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpKTsKKyAgICAgICAgICAgICAgICB2YXIgY29u
c29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgICAgICAg
ICAgY29uc29sZS5hcHBlbmRDaGlsZChsaSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IG9ubG9hZCA9IGZ1bmN0aW9uKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGRvY3VtZW50Lm9uc2Nyb2xsPWZ1bmN0aW9uKCl7bG9nKCJGQUlMIC0gc2Nyb2xsIGV2ZW50IHJl
Y2VpdmVkISIpO30KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5Pgor
ICAgICAgICA8ZGl2IGRpcj1sdHI+CisgICAgICAgIDxwPlRoaXMgdGVzdHMgdGhhdCB3aGVuIGEg
cGFnZSB3aXRoIGFuIFJUTCBvdmVyZmxvdyBpcyBpbml0aWFsbHkgbG9hZGVkLCBubyBzY3JvbGwg
ZXZlbnQgaXMgc2VudC48L3A+CisgICAgICAgIDxwPlRoaXMgdGVzdCBoYXMgcGFzc2VkIGlmIHRo
ZSB0ZXh0ICJGQUlMIC0gc2Nyb2xsIGV2ZW50IHJlY2VpdmVkISIgZG9lcyBub3QgYXBwZWFyIGJl
bG93LjwvcD4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ImRpdiIgc3R5bGU9Indo
aXRlc3BhY2U6bm93cmFwOyB3aWR0aDogMTAwMHB4OyBoZWlnaHQ6IDQwMDBweDsgYm9yZGVyOiAx
cHggc29saWQgcmVkOyI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFk
aXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9y
ZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBu
b3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVh
IGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJp
dCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBw
YXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwg
c3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFi
b3J1bS4iPC9kaXY+CisgICAgICAgIDx1bCBpZD0iY29uc29sZSI+PC91bD4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXIt
aW4tcnRsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS92
ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK29yaWdpbmFsIHNjcm9sbCB5IGZvciBSVEwg
cGFnZSA6IFN1Y2Nlc3MKK3ZlcnRpY2FsIHNjcm9sbDogOiBTdWNjZXNzCitjb250aW51b3VzbHkg
Y2FsbCB3aW5kb3cuc2Nyb2xsWSA6IFN1Y2Nlc3MKK3pvb20gaW4gYW5kIG91dCBwcmVzZXJ2ZSBz
Y3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK3Jlc2l6ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9u
OiBTdWNjZXNzCit3aGVlbCBzY3JvbGwgcHJlc2VydmVzIHZlcnRpY2FsIHNjcm9sbCBwb3NpdGlv
bjogU3VjY2VzcworS2V5RG93biBIT01FIG1vdmUgeS1zY3JvbGwgcG9zaXRpb24gdG8gYm90dG9t
IGZvciBSVEwgcGFnZTogMAorS2V5RG93biBFTkQgbW92ZSB5LXNjcm9sbCBwb3NpdGlvbiB0byBi
b3R0b20gZm9yIFJUTCBwYWdlOiAwCitzZWxlY3RBbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQ6IFN1
Y2Nlc3MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1y
dGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3Jv
bGxiYXItaW4tcnRsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS92
ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA0
IEBACis8aHRtbCBkaXI9cnRsIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTp2ZXJ0aWNhbC1s
ciI+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgor
ICAgICAgICAgICAgZnVuY3Rpb24gbG9nKHN0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAgICAg
ICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAgICAg
ICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUi
KTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0RXF1YWwobWVzc2Fn
ZSwgYWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAo
YWN0dWFsICE9IGV4cGVjdGVkKQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3Nh
Z2UgKyAiOiBGYWlsdXJlLCBhY3R1YWw6ICIgKyBhY3R1YWwgKyAiOyBleHBlY3RlZDogIiArIGV4
cGVjdGVkKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxvZygi
XG4iICsgbWVzc2FnZSArICI6IFN1Y2Nlc3MiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0Q2xvc2UobWVzc2FnZSwgYWN0dWFsLCBleHBl
Y3RlZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoKGFjdHVhbCA+PSBleHBl
Y3RlZCAmJiBhY3R1YWwgLSBleHBlY3RlZCA8IDUpIHx8CisgICAgICAgICAgICAgICAgICAgIChl
eHBlY3RlZCA+PSBhY3R1YWwgJiYgZXhwZWN0ZWQgLSBhY3R1YWwgPCA1KSkKKyAgICAgICAgICAg
ICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogU3VjY2VzcyIpOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogRmFp
bHVyZSwgYWN0dWFsOiAiICsgYWN0dWFsICsgIjsgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFNjcm9s
bFggPSA1MDA7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRTY3JvbGxZID0gLTEwMDA7CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIG1vdXNld2hlZWxIYW5kbGVyKGUpIAorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJ3aGVlbCBzY3JvbGwgcHJlc2VydmVzIHZlcnRp
Y2FsIHNjcm9sbCBwb3NpdGlvbiIsIHdpbmRvdy5zY3JvbGxZLCBleHBlY3RlZFNjcm9sbFkpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBvbmxvYWQgPSBmdW5jdGlv
bigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworCisgICAgICAgICAgICAgICAgLy8gVGVzdCB2ZXJ0aWNhbCBzY3JvbGxiYXIg
cHJlc2VuY2UgYW5kIHRoYXQgaXQgaXMgaW5pdGlhbGx5IGF0IHRoZSBib3R0b20gZm9yIFJUTCBw
YWdlLgorICAgICAgICAgICAgICAgIGFzc2VydEVxdWFsKCJvcmlnaW5hbCBzY3JvbGwgeSBmb3Ig
UlRMIHBhZ2UgIiwgd2luZG93LnNjcm9sbFksIDApOworICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgLy8gVGVzdCBob3Jpem9udGFsIHNjcm9sbC4KKyAgICAgICAgICAgICAgICB3aW5kb3cu
c2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAg
ICAgIGFzc2VydEVxdWFsKCJ2ZXJ0aWNhbCBzY3JvbGw6ICIsIHdpbmRvdy5zY3JvbGxZLCBleHBl
Y3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgIC8vIFRlc3QgY2FsbGluZyB3aW5kb3cuc2Ny
b2xsWSBjb250aW51b3VzbHkgd29udCBjaGFuZ2UgdGhlIHNjcm9sbFkgcG9zaXRpb24uCisgICAg
ICAgICAgICAgICAgYXNzZXJ0RXF1YWwoImNvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxZ
ICIsIHdpbmRvdy5zY3JvbGxZLCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgCisKKyAg
ICAgICAgICAgICAgICAvLyBUZXN0IHpvb21pbmcgd29udCByZXNldCBzY3JvbGwgcG9zaXRpb24u
CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkp
OworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci56b29tUGFnZUluKCk7CisgICAgICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLnpvb21QYWdlT3V0KCk7CisgICAgICAgICAgICAgICAg
ICAgIGFzc2VydENsb3NlKCJ6b29tIGluIGFuZCBvdXQgcHJlc2VydmUgc2Nyb2xsIHBvc2l0aW9u
Iiwgd2luZG93LnNjcm9sbFksIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCByZXNpemUgd29udCByZXNl
dCBzY3JvbGwgcG9zaXRpb24uCisgICAgICAgICAgICAgICAgd2luZG93LnJlc2l6ZVRvKHdpbmRv
dy5pbm5lcldpZHRoLCAxMDAwKTsKKyAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhw
ZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgIHdpbmRvdy5y
ZXNpemVUbyh3aW5kb3cuaW5uZXJXaWR0aCwgMjAwMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
RXF1YWwoInJlc2l6ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93LnNjcm9sbFks
IGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8g
VGVzdCB3aGVlbCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uLgor
ICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFggLyAyLCBleHBl
Y3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZGl2Iik7CisgICAgICAgICAgICAgICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNld2hlZWwiLCBtb3VzZXdoZWVsSGFuZGxlciwgZmFsc2UpOworICAgICAgICAgICAgICAgIHZh
ciB3aGVlbEV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIldoZWVsRXZlbnQiKTsKKyAgICAg
ICAgICAgICAgICB3aGVlbEV2ZW50LmluaXRXZWJLaXRXaGVlbEV2ZW50KGV4cGVjdGVkU2Nyb2xs
WCAvIDIsIDAsIHdpbmRvdywgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
OworICAgICAgICAgICAgICAgIGRpdi5kaXNwYXRjaEV2ZW50KHdoZWVsRXZlbnQpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCBIT01FL0VORCBvcGVyYXRpb24uCisgICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgICAg
ICAvLyBOb3QgdXNpbmcgYXNzZXJ0IGVxdWFsIGhlcmUgc2luY2UgdGhlIGJlaGF2aW9yIGlzIGRp
ZmZlcmVudCBpbiBlYWNoIHBvcnQuIAorICAgICAgICAgICAgICAgICAgICAvLyBGb3IgZXhhbXBs
ZSwgaW4gTWFjLCBIT01FL0VORCBrZXkgcmVzZXQgYm90aCB4IGFuZCB5IHNjcm9sbCBwb3NpdGlv
bi4gCisgICAgICAgICAgICAgICAgICAgIC8vIEluIENocm9taXVtLCBIT01FL0VORCBrZXkgb25s
eSByZXNldCB5IHNjcm9sbCBwb3NpdGlvbiwgYW5kIHggc2Nyb2xsIHBvc2l0aW9uIGlzIHByZXNl
cnZlZC4KKyAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xs
WCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5
RG93bigiaG9tZSIpOworICAgICAgICAgICAgICAgICAgICBsb2coIktleURvd24gSE9NRSBtb3Zl
IHktc2Nyb2xsIHBvc2l0aW9uIHRvIGJvdHRvbSBmb3IgUlRMIHBhZ2U6ICIgKyB3aW5kb3cuc2Ny
b2xsWSwgMCk7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNj
cm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmtleURvd24oImVuZCIpOworICAgICAgICAgICAgICAgICAgICBsb2coIktleURvd24gRU5EIG1v
dmUgeS1zY3JvbGwgcG9zaXRpb24gdG8gYm90dG9tIGZvciBSVEwgcGFnZTogIiArIHdpbmRvdy5z
Y3JvbGxZLCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAvLyBUZXN0IHNlbGVjdCBhbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQgY29udGVudC4KKyAg
ICAgICAgICAgICAgICB3aW5kb3cucmVzaXplVG8oNTAwLCA1MDApOworICAgICAgICAgICAgICAg
IHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CisgICAgICAgICAgICAg
ICAgZGl2LmZvY3VzKCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNl
bGVjdEFsbCIpOworICAgICAgICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInNlbGVjdEFsbCBzZWxlY3Rz
IGFsbCBkb2N1bWVudCIsIHNlbGVjdGlvbi50b1N0cmluZygpLnN1YnN0cmluZygwLCBkaXYuaW5u
ZXJIVE1MLmxlbmd0aCksIGRpdi5pbm5lckhUTUwpOworCisgICAgICAgICAgICAgICAgZGl2LnN0
eWxlLmRpc3BsYXkgPSAibm9uZSI7CisgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGlk
PSJkaXYiIHN0eWxlPSJ3aGl0ZXNwYWNlOm5vd3JhcDsgd2lkdGg6IDEwMDBweDsgaGVpZ2h0OiA0
MDAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsiPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0
LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5j
aWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5p
bSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kg
dXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9y
IGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBl
dSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRh
dCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0
IGFuaW0gaWQgZXN0IGxhYm9ydW0uIjwvZGl2PgorICAgICAgICA8dWwgaWQ9ImNvbnNvbGUiIGRp
cj1sdHI+PC91bD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItd2hlbi1k
aXItY2hhbmdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKK29yaWdpbmFsIHNjcm9sbCB5IGZvciBSVEwgcGFnZSA6
IFN1Y2Nlc3MKK3ZlcnRpY2FsIHNjcm9sbCB5IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK29yaWdp
bmFsIHNjcm9sbCB5IGZvciBMVFIgcGFnZSA6IFN1Y2Nlc3MKK3ZlcnRpY2FsIHNjcm9sbCB5IGZv
ciBMVFIgcGFnZSA6IFN1Y2Nlc3MKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0
aWNhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLXdo
ZW4tZGlyLWNoYW5nZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhzdHIpCit7CisgICAgdmFyIGxpID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBsaS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShzdHIpKTsKKyAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIik7CisgICAgY29uc29sZS5hcHBlbmRDaGlsZChsaSk7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydEVxdWFsKG1lc3NhZ2UsIGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYg
KGFjdHVhbCAhPSBleHBlY3RlZCkKKyAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogRmFp
bHVyZSwgYWN0dWFsOiAiICsgYWN0dWFsICsgIjsgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCk7Cisg
ICAgZWxzZQorICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBTdWNjZXNzIik7Cit9CisK
K29ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKworICAgIGFzc2VydEVxdWFsKCJvcmlnaW5hbCBzY3JvbGwgeSBmb3IgUlRM
IHBhZ2UgIiwgd2luZG93LnNjcm9sbFksIDApOworICAgIHdpbmRvdy5zY3JvbGxUbygwLCAtMTAw
KTsKKyAgICBhc3NlcnRFcXVhbCgidmVydGljYWwgc2Nyb2xsIHkgZm9yIFJUTCBwYWdlICIsIHdp
bmRvdy5zY3JvbGxZLCAtMTAwKTsKKworICAgIGRvY3VtZW50LmJvZHkuZGlyID0gImx0ciI7Cisg
ICAgYXNzZXJ0RXF1YWwoIm9yaWdpbmFsIHNjcm9sbCB5IGZvciBMVFIgcGFnZSAiLCB3aW5kb3cu
c2Nyb2xsWSwgMCk7CisgICAgd2luZG93LnNjcm9sbFRvKDAsIDEwMCk7CisgICAgYXNzZXJ0RXF1
YWwoInZlcnRpY2FsIHNjcm9sbCB5IGZvciBMVFIgcGFnZSAiLCB3aW5kb3cuc2Nyb2xsWSwgMTAw
KTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKS5zdHlsZS5kaXNwbGF5ID0g
Im5vbmUiOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBkaXI9InJ0bCIgc3R5bGU9Ii13
ZWJraXQtd3JpdGluZy1tb2RlOnZlcnRpY2FsLWxyIj4KKworPGRpdiBzdHlsZT0iaGVpZ2h0OiA0
MDAwcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsiIGlkPSJkaXYiPgorTG9yZW0gaXBzdW0gZG9s
b3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gTnVuYyBldCBuaXNsIHRl
bGx1cy4gVml2YW11cyBhbGlxdWFtIGVsaXQgbm9uIGFyY3Ugc2NlbGVyaXNxdWUgZWdldCBkYXBp
YnVzIG51bmMgdnVscHV0YXRlLiBNYWVjZW5hcyBzY2VsZXJpc3F1ZSBlZ2VzdGFzIHB1cnVzLCBp
ZCBiaWJlbmR1bSBtYWduYSB2ZW5lbmF0aXMgdmVsLiBWZXN0aWJ1bHVtIGJpYmVuZHVtIHZvbHV0
cGF0IGFsaXF1YW0uIEN1bSBzb2NpaXMgbmF0b3F1ZSBwZW5hdGlidXMgZXQgbWFnbmlzIGRpcyBw
YXJ0dXJpZW50IG1vbnRlcywgbmFzY2V0dXIgcmlkaWN1bHVzIG11cy4gVmVzdGlidWx1bSBlZ2V0
IHJpc3VzIHNvZGFsZXMgbWkgdHJpc3RpcXVlIGRpZ25pc3NpbSBldCBzZWQgbGVjdHVzLiBDcmFz
IGNvbnZhbGxpcywgbmliaCB1dCBkYXBpYnVzIGdyYXZpZGEsIGVuaW0gbWF1cmlzIG1vbGVzdGll
IGVsaXQsIGVnZXQgZnJpbmdpbGxhIGF1Z3VlIGVzdCBuZWMgZXN0LiBDdXJhYml0dXIgZXUgcXVh
bSBub24gcHVydXMgc29kYWxlcyBwdWx2aW5hci4gRG9uZWMgdWx0cmljZXMgZHVpIGVnZXQgZG9s
b3IgbG9ib3J0aXMgaW4gcG9ydGEgcXVhbSBydXRydW0uIE51bGxhIHJpc3VzIGxhY3VzLCBhZGlw
aXNjaW5nIHF1aXMgdWxsYW1jb3JwZXIgdmVzdGlidWx1bSwgY29uZGltZW50dW0gc2VkIGxhY3Vz
LiBTZWQgaW4gbnVuYyBkb2xvciwgcXVpcyBlZ2VzdGFzIHR1cnBpcy4gSW50ZWdlciBhcmN1IHRl
bGx1cywgcG9zdWVyZSBzaXQgYW1ldCBwZWxsZW50ZXNxdWUgYSwgbW9sZXN0aWUgYXQgbWkuIE51
bGxhIGJsYW5kaXQsIG1pIGV0IGV1aXNtb2QgaW1wZXJkaWV0LCBhdWd1ZSBhcmN1IG9ybmFyZSBm
ZWxpcywgbmVjIHZpdmVycmEgbGFjdXMgbGlndWxhIHV0IG1ldHVzLiBQcm9pbiB1dCBsZW8gYW50
ZSwgYXQgY29uc2VjdGV0dXIgc2VtLiBOdWxsYW0gbm9uIG51bmMgbGlndWxhLiBQcm9pbiBzZWQg
YW50ZSBzZW0sIGlkIHJ1dHJ1bSBwdXJ1cy4KKzwvZGl2PgorPHVsIGlkPSJjb25zb2xlIj48L3Vs
PgorPGJyPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jp
em9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3Mjk0NykKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xs
YmFyLWluLXJ0bC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMCwwIEBACi1v
cmlnaW5hbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2UgOiBTdWNjZXNzCi1ob3Jpem9udGFsIHNjcm9s
bDogOiBTdWNjZXNzCi1jb250aW51b3VzbHkgY2FsbCB3aW5kb3cuc2Nyb2xsWCA6IFN1Y2Nlc3MK
LXpvb20gaW4gYW5kIG91dCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKLXJlc2l6
ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCi13aGVlbCBzY3JvbGwgcHJlc2Vy
dmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCi1LZXlEb3duIEhPTUUgbW92
ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2U6IC0xMDAwCi1LZXlEb3du
IEVORCBtb3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogLTEwMDAK
LXNlbGVjdEFsbCBzZWxlY3RzIGFsbCBkb2N1bWVudDogU3VjY2VzcwpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1k
aXItY2hhbmdlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2Ut
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3Mjk0NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMCwwIEBACi1vcmlnaW5hbCBzY3JvbGwg
eCBmb3IgUlRMIHBhZ2UgOiBTdWNjZXNzCi1ob3Jpem9udGFsIHNjcm9sbCB4IGZvciBSVEwgcGFn
ZSA6IFN1Y2Nlc3MKLW9yaWdpbmFsIHNjcm9sbCB4IGZvciBMVFIgcGFnZSA6IFN1Y2Nlc3MKLWhv
cml6b250YWwgc2Nyb2xsIHggZm9yIExUUiBwYWdlIDogU3VjY2VzcwpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9t
L2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcyOTU2
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xs
YmFyLWluLXJ0bC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMCwwIEBACi1v
cmlnaW5hbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2UgOiBTdWNjZXNzCi1ob3Jpem9udGFsIHNjcm9s
bDogOiBTdWNjZXNzCi1jb250aW51b3VzbHkgY2FsbCB3aW5kb3cuc2Nyb2xsWCA6IFN1Y2Nlc3MK
LXpvb20gaW4gYW5kIG91dCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb246IEZhaWx1cmUsIGFjdHVh
bDogLTg2NjsgZXhwZWN0ZWQ6IC0xMDAwCi1yZXNpemUgcHJlc2VydmVzIHNjcm9sbCBwb3NpdGlv
bjogU3VjY2Vzcwotd2hlZWwgc2Nyb2xsIHByZXNlcnZlcyBob3Jpem9udGFsIHNjcm9sbCBwb3Np
dGlvbjogU3VjY2VzcwotS2V5RG93biBIT01FIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmln
aHQgZm9yIFJUTCBwYWdlOiAwCi1LZXlEb3duIEVORCBtb3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRv
IHJpZ2h0IGZvciBSVEwgcGFnZTogMAotc2VsZWN0QWxsIHNlbGVjdHMgYWxsIGRvY3VtZW50OiBT
dWNjZXNzCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRh
bC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hl
bi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzI5NTYpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hh
bmdlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICswLDAgQEAKLW9yaWdpbmFs
IHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKLWhvcml6b250YWwgc2Nyb2xsIHggZm9y
IFJUTCBwYWdlIDogU3VjY2Vzcwotb3JpZ2luYWwgc2Nyb2xsIHggZm9yIExUUiBwYWdlIDogRmFp
bHVyZSwgYWN0dWFsOiAzMTEwOyBleHBlY3RlZDogMAotaG9yaXpvbnRhbCBzY3JvbGwgeCBmb3Ig
TFRSIHBhZ2UgOiBTdWNjZXNzCi0KLQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75305</attachid>
            <date>2010-12-01 12:32:53 -0800</date>
            <delta_ts>2010-12-01 12:35:56 -0800</delta_ts>
            <desc>Part 1: Generalize the scrollOrigin concept to work with both horizontal and vertical directions</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>43198</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzA1NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTAtMTItMDEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjY0NQorICAgICAgICAKKyAgICAg
ICAgUGFydCAxIG9mIG1ha2luZyBzY3JvbGxpbmcgd29yayB3aXRoIHZlcnRpY2FsLiBUaGlzIHBh
dGNoIGdlbmVyYWxpemVzIHRoZSBzY3JvbGxPcmlnaW5YIGNvbnRlbnQKKyAgICAgICAgcmVjZW50
bHkgYWRkZWQgZm9yIGhvcml6b250YWwgUlRMIGRvY3VtZW50cyBhbmQgYXBwbGllcyBpdCB0byB3
cml0aW5nIG1vZGVzIGFzIHdlbGwuICBOb3cgdGhlCisgICAgICAgIHNjcm9sbE9yaWdpbiBpcyBh
IHBvaW50LCBzaW5jZSB5b3UgY2FuIHN0YXJ0IG9mZiBsb2NrZWQgdG8gdGhlIGJvdHRvbSBvciBs
b2NrZWQgdG8gdGhlIHJpZ2h0LgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGZp
eGVzIG51bWVyb3VzIGJ1Z3Mgd2l0aCB0aGUgc2Nyb2xsT3JpZ2luIGNvZGUgdXNpbmcgbmF0aXZl
IE1hYyBOU1Njcm9sbFZpZXdzIGFuZAorICAgICAgICBtYWtlcyB0aGVtIGJlaGF2ZSB0aGUgc2Ft
ZSBhcyB0aGUgY3Jvc3MtcGxhdGZvcm0gY29kZSAoYWxsb3dpbmcgZm9yIGNyb3NzLXBsYXRmb3Jt
IHJlc3VsdHMgdG8gYmUKKyAgICAgICAgbGFuZGVkKS4KKworICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRqdXN0Vmlld1NpemUpOgor
ICAgICAgICAqIHBhZ2UvbWFjL1dlYkNvcmVGcmFtZVZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNjcm9sbFZp
ZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6bWF4aW11bVNjcm9sbFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6Om1pbmltdW1TY3JvbGxQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2YWx1ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxPcmlnaW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpbik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Um9vdEJv
eERlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVmlldzo6ZG9jVG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmRvY0hlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpkb2NMZWZ0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclZpZXc6OmRvY1dpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Vmlldy5oOgorCiAyMDEwLTExLTMwICBWYW5nZWxpcyBLb2trZXZpcyAgPHZhbmdlbGlzQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4OiBXZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDM1LDE1ICs0MzUsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVz
dFZpZXdTaXplKCkKICAgICBpZiAoIXJvb3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCBw
cmV2U2Nyb2xsT3JpZ2luWCA9IHNjcm9sbE9yaWdpblgoKTsKLSAgICBTY3JvbGxWaWV3OjpzZXRT
Y3JvbGxPcmlnaW5YKC1yb290LT5sZWZ0TGF5b3V0T3ZlcmZsb3coKSk7Ci0gICAgSW50U2l6ZSBz
aXplID0gSW50U2l6ZShyb290LT5yaWdodExheW91dE92ZXJmbG93KCkgLSByb290LT5sZWZ0TGF5
b3V0T3ZlcmZsb3coKSwgcm9vdC0+Ym90dG9tTGF5b3V0T3ZlcmZsb3coKSk7Ci0gICAgLy8gVGFr
ZSBjYXJlIG9mIHRoZSBjYXNlIHdoZW4gY29udGVudHMgcmVtYWluIGJ1dCB0aGUgUmVuZGVyVmll
dydzIGRpcmVjdGlvbiBoYXMgY2hhbmdlZC4KLSAgICAvLyBJbiB3aGljaCBjYXNlLCB3ZSBuZWVk
IHRvIHVwZGF0ZSBzY3JvbGxlciBwb3NpdGlvbiwgZm9yIGV4YW1wbGUsIGZyb20gbGVmdG1vc3Qg
dG8KLSAgICAvLyByaWdodG1vc3Qgd2hlbiBkaXJlY3Rpb24gY2hhbmdlcyBmcm9tIGxlZnQtdG8t
cmlnaHQgdG8gcmlnaHQtdG8tbGVmdC4KLSAgICBib29sIGRpcmVjdGlvbkNoYW5nZWQgPSAoIXBy
ZXZTY3JvbGxPcmlnaW5YIHx8ICFzY3JvbGxPcmlnaW5YKCkpICYmIChzY3JvbGxPcmlnaW5YKCkg
IT0gcHJldlNjcm9sbE9yaWdpblgpOwotICAgIGlmIChzaXplID09IGNvbnRlbnRzU2l6ZSgpICYm
IGRpcmVjdGlvbkNoYW5nZWQpCi0gICAgICAgIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMo
KTsKKyAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKHJvb3QtPnJpZ2h0TGF5b3V0T3ZlcmZsb3co
KSAtIHJvb3QtPmxlZnRMYXlvdXRPdmVyZmxvdygpLCByb290LT5ib3R0b21MYXlvdXRPdmVyZmxv
dygpIC0gcm9vdC0+dG9wTGF5b3V0T3ZlcmZsb3coKSk7CisKKyAgICBTY3JvbGxWaWV3OjpzZXRT
Y3JvbGxPcmlnaW4oSW50UG9pbnQoLXJvb3QtPmxlZnRMYXlvdXRPdmVyZmxvdygpLCAtcm9vdC0+
dG9wTGF5b3V0T3ZlcmZsb3coKSksIHNpemUgPT0gY29udGVudHNTaXplKCkpOworICAgIAogICAg
IHNldENvbnRlbnRzU2l6ZShzaXplKTsKIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL21hYy9XZWJD
b3JlRnJhbWVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJh
bWVWaWV3LmgJKHJldmlzaW9uIDcyOTQ3KQorKysgV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJh
bWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogLSAodm9pZClzZXRTY3JvbGxpbmdNb2RlczooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSlo
TW9kZSB2ZXJ0aWNhbDooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSl2TW9kZSBhbmRMb2NrOihCT09M
KWxvY2s7CiAtICh2b2lkKXNjcm9sbGluZ01vZGVzOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKilo
TW9kZSB2ZXJ0aWNhbDooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSopdk1vZGU7CiAtICh2b2lkKXNl
dFNjcm9sbEJhcnNTdXBwcmVzc2VkOihCT09MKXN1cHByZXNzZWQgcmVwYWludE9uVW5zdXBwcmVz
czooQk9PTClyZXBhaW50OwotLSAodm9pZClzZXRTY3JvbGxPcmlnaW5YOihpbnQpc2Nyb2xsT3Jp
Z2luWDsKLS0gKGludClzY3JvbGxPcmlnaW5YOworLSAodm9pZClzZXRTY3JvbGxPcmlnaW46KE5T
UG9pbnQpb3JpZ2luIHVwZGF0ZVBvc2l0aW9uOihCT09MKXVwZGF0ZVBvc2l0aW9uOworLSAoTlNQ
b2ludClzY3JvbGxPcmlnaW47CiBAZW5kCiAKIEBwcm90b2NvbCBXZWJDb3JlRnJhbWVWaWV3Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAJKHJldmlzaW9uIDcyOTQ3KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNiBAQCBT
Y3JvbGxWaWV3OjpTY3JvbGxWaWV3KCkKICAgICAsIG1fdXNlRml4ZWRMYXlvdXQoZmFsc2UpCiAg
ICAgLCBtX3BhaW50c0VudGlyZUNvbnRlbnRzKGZhbHNlKQogICAgICwgbV9kZWxlZ2F0ZXNTY3Jv
bGxpbmcoZmFsc2UpCi0gICAgLCBtX3Njcm9sbE9yaWdpblgoMCkKIHsKICAgICBwbGF0Zm9ybUlu
aXQoKTsKIH0KQEAgLTI3OSwxNCArMjc4LDE0IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0Q29udGVu
dHNTaXplKGNvbnN0IEkKIAogSW50UG9pbnQgU2Nyb2xsVmlldzo6bWF4aW11bVNjcm9sbFBvc2l0
aW9uKCkgY29uc3QKIHsKLSAgICBJbnRQb2ludCBtYXhpbXVtT2Zmc2V0KGNvbnRlbnRzV2lkdGgo
KSAtIHZpc2libGVXaWR0aCgpIC0gbV9zY3JvbGxPcmlnaW5YLCBjb250ZW50c0hlaWdodCgpIC0g
dmlzaWJsZUhlaWdodCgpKTsKKyAgICBJbnRQb2ludCBtYXhpbXVtT2Zmc2V0KGNvbnRlbnRzV2lk
dGgoKSAtIHZpc2libGVXaWR0aCgpIC0gbV9zY3JvbGxPcmlnaW4ueCgpLCBjb250ZW50c0hlaWdo
dCgpIC0gdmlzaWJsZUhlaWdodCgpIC0gbV9zY3JvbGxPcmlnaW4ueSgpKTsKICAgICBtYXhpbXVt
T2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKICAgICByZXR1cm4gbWF4aW11bU9mZnNldDsK
IH0KIAogSW50UG9pbnQgU2Nyb2xsVmlldzo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gSW50UG9pbnQoLW1fc2Nyb2xsT3JpZ2luWCwgMCk7CisgICAgcmV0dXJu
IEludFBvaW50KC1tX3Njcm9sbE9yaWdpbi54KCksIC1tX3Njcm9sbE9yaWdpbi55KCkpOwogfQog
CiBJbnRQb2ludCBTY3JvbGxWaWV3OjphZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKGNv
bnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkgY29uc3QKQEAgLTMxNiw5ICszMTUsOSBAQCB2b2lk
IFNjcm9sbFZpZXc6OnZhbHVlQ2hhbmdlZChTY3JvbGxiYXIqCiAgICAgSW50U2l6ZSBuZXdPZmZz
ZXQgPSBtX3Njcm9sbE9mZnNldDsKICAgICBpZiAoc2Nyb2xsYmFyKSB7CiAgICAgICAgIGlmIChz
Y3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikKLSAgICAgICAg
ICAgIG5ld09mZnNldC5zZXRXaWR0aChzY3JvbGxiYXItPnZhbHVlKCkgLSBtX3Njcm9sbE9yaWdp
blgpOworICAgICAgICAgICAgbmV3T2Zmc2V0LnNldFdpZHRoKHNjcm9sbGJhci0+dmFsdWUoKSAt
IG1fc2Nyb2xsT3JpZ2luLngoKSk7CiAgICAgICAgIGVsc2UgaWYgKHNjcm9sbGJhci0+b3JpZW50
YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKLSAgICAgICAgICAgIG5ld09mZnNldC5zZXRI
ZWlnaHQoc2Nyb2xsYmFyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIG5ld09mZnNldC5zZXRIZWln
aHQoc2Nyb2xsYmFyLT52YWx1ZSgpIC0gbV9zY3JvbGxPcmlnaW4ueSgpKTsKICAgICB9CiAKICAg
ICBJbnRTaXplIHNjcm9sbERlbHRhID0gbmV3T2Zmc2V0IC0gbV9zY3JvbGxPZmZzZXQ7CkBAIC01
MDMsNyArNTAyLDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAog
ICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlv
bih0cnVlKTsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdGVwcyhTY3JvbGxi
YXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKICAgICAgICAgbV9ob3Jpem9udGFs
U2Nyb2xsYmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudFdpZHRoLCBjb250ZW50c1dpZHRoKCkpOwot
ICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFZhbHVlKHNjcm9sbC53aWR0aCgpICsg
bV9zY3JvbGxPcmlnaW5YLCBTY3JvbGxiYXI6Ok5vdEZyb21TY3JvbGxBbmltYXRvcik7CisgICAg
ICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0VmFsdWUoc2Nyb2xsLndpZHRoKCkgKyBtX3Nj
cm9sbE9yaWdpbi54KCksIFNjcm9sbGJhcjo6Tm90RnJvbVNjcm9sbEFuaW1hdG9yKTsKICAgICAg
ICAgaWYgKG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQpCiAgICAgICAgICAgICBtX2hvcml6b250YWxT
Y3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0aW9uKGZhbHNlKTsgCiAgICAgfSAKQEAgLTUy
NSw3ICs1MjQsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgCiAg
ICAgICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlvbih0
cnVlKTsKICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0U3RlcHMoU2Nyb2xsYmFyOjpw
aXhlbHNQZXJMaW5lU3RlcCgpLCBwYWdlU3RlcCk7CiAgICAgICAgIG1fdmVydGljYWxTY3JvbGxi
YXItPnNldFByb3BvcnRpb24oY2xpZW50SGVpZ2h0LCBjb250ZW50c0hlaWdodCgpKTsKLSAgICAg
ICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0VmFsdWUoc2Nyb2xsLmhlaWdodCgpLCBTY3JvbGxi
YXI6Ok5vdEZyb21TY3JvbGxBbmltYXRvcik7CisgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXIt
PnNldFZhbHVlKHNjcm9sbC5oZWlnaHQoKSArIG1fc2Nyb2xsT3JpZ2luLnkoKSwgU2Nyb2xsYmFy
OjpOb3RGcm9tU2Nyb2xsQW5pbWF0b3IpOwogICAgICAgICBpZiAobV9zY3JvbGxiYXJzU3VwcHJl
c3NlZCkKICAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxp
ZGF0aW9uKGZhbHNlKTsKICAgICB9CkBAIC0xMDI3LDE5ICsxMDI2LDI0IEBAIHZvaWQgU2Nyb2xs
Vmlldzo6cmVtb3ZlUGFuU2Nyb2xsSWNvbigpCiAgICAgaG9zdFdpbmRvdygpLT5pbnZhbGlkYXRl
Q29udGVudHNBbmRXaW5kb3coSW50UmVjdChtX3BhblNjcm9sbEljb25Qb2ludCwgSW50U2l6ZShw
YW5JY29uU2l6ZUxlbmd0aCwgcGFuSWNvblNpemVMZW5ndGgpKSwgdHJ1ZSAvKmltbWVkaWF0ZSov
KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxPcmlnaW5YKGludCB4KQordm9pZCBT
Y3JvbGxWaWV3OjpzZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9pbnQmIG9yaWdpbiwgYm9vbCB1
cGRhdGVQb3NpdGlvbikKIHsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKLSAgICAgICAgcGxh
dGZvcm1TZXRTY3JvbGxPcmlnaW5YKHgpOworICAgICAgICBwbGF0Zm9ybVNldFNjcm9sbE9yaWdp
bihvcmlnaW4sIHVwZGF0ZVBvc2l0aW9uKTsKIAotICAgIG1fc2Nyb2xsT3JpZ2luWCA9IHg7Ci19
CisgICAgSW50UG9pbnQgcHJldlNjcm9sbE9yaWdpbiA9IG1fc2Nyb2xsT3JpZ2luOwogCi12b2lk
IFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoKQotewotICAgIGlmICghcGxhdGZvcm1XaWRn
ZXQoKSkKKyAgICBtX3Njcm9sbE9yaWdpbiA9IG9yaWdpbjsKKyAgICAKKyAgICBpZiAocGxhdGZv
cm1XaWRnZXQoKSB8fCAhdXBkYXRlUG9zaXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IENoZWNrIHRvIHNlZSBpZiBlaXRoZXIgdGhlIGRpcmVjdGlvbiBvciB3cml0aW5nLW1vZGUgaGFz
IGNoYW5nZWQgc3VjaCB0aGF0IG91ciBzY3JvbGwgb3JpZ2luIGhhcyBnb25lIGZyb20KKyAgICAv
LyB6ZXJvIHRvIG5vbi16ZXJvIChvciB2aWNlIHZlcnNhKSBpbiBhIHBhcnRpY3VsYXIgYXhpcy4g
IElmIHNvLCBqdXN0IHJlc2V0IHRoZSBzY3JvbGwgcG9zaXRpb24gdG8gdGhlIHNjcm9sbAorICAg
IC8vIG9yaWdpbi4KKyAgICBpZiAoKCFwcmV2U2Nyb2xsT3JpZ2luLngoKSAmJiBtX3Njcm9sbE9y
aWdpbi54KCkpIHx8ICghbV9zY3JvbGxPcmlnaW4ueCgpICYmIHByZXZTY3JvbGxPcmlnaW4ueCgp
KSB8fAorICAgICAgICAoIXByZXZTY3JvbGxPcmlnaW4ueSgpICYmIG1fc2Nyb2xsT3JpZ2luLnko
KSkgfHwgKCFtX3Njcm9sbE9yaWdpbi55KCkgJiYgcHJldlNjcm9sbE9yaWdpbi55KCkpKQogICAg
ICAgICB1cGRhdGVTY3JvbGxiYXJzKHNjcm9sbE9mZnNldCgpKTsKLSAgICAvLyBGSVhNRTogbmVl
ZCBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uYWxpdHkgZnJvbSBwbGF0Zm9ybVdpZGdldC4KIH0KIAog
I2lmICFQTEFURk9STShXWCkgJiYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKEVGTCkKQEAg
LTEwNzIsNyArMTA3Niw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxiYXJz
U3UKIHsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgoaW50
KQordm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpbihjb25zdCBJbnRQb2lu
dCYsIGJvb2wgdXBkYXRlUG9zaXRpb24pCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5o
CShyZXZpc2lvbiA3Mjk0NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDcgQEAgcHVibGljOgogICAgIEludFNpemUgc2Nyb2xs
T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkubG9jYXRpb24oKSAt
IEludFBvaW50KCk7IH0gLy8gR2V0cyB0aGUgc2Nyb2xsZWQgcG9zaXRpb24gYXMgYW4gSW50U2l6
ZS4gQ29udmVuaWVudCBmb3IgYWRkaW5nIHRvIG90aGVyIHNpemVzLgogICAgIEludFBvaW50IG1h
eGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0OyAvLyBUaGUgbWF4aW11bSBwb3NpdGlvbiB3ZSBj
YW4gYmUgc2Nyb2xsZWQgdG8uCiAgICAgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkg
Y29uc3Q7IC8vIFRoZSBtaW5pbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KLSAg
ICAvLyBBZGp1c3QgdGhlIHBhc3MgaW4gc2Nyb2xsIHBvc2l0aW9uIHdpdGhpbiB0aGUgbWluaW11
bSBhbmQgbWF4aW11bSBwb3NpdGlvbnMuCisgICAgLy8gQWRqdXN0IHRoZSBwYXNzZWQgaW4gc2Ny
b2xsIHBvc2l0aW9uIHRvIGtlZXAgaXQgYmV0d2VlbiB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBw
b3NpdGlvbnMuCiAgICAgSW50UG9pbnQgYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShj
b25zdCBJbnRQb2ludCYpIGNvbnN0OyAKICAgICBpbnQgc2Nyb2xsWCgpIGNvbnN0IHsgcmV0dXJu
IHNjcm9sbFBvc2l0aW9uKCkueCgpOyB9CiAgICAgaW50IHNjcm9sbFkoKSBjb25zdCB7IHJldHVy
biBzY3JvbGxQb3NpdGlvbigpLnkoKTsgfQpAQCAtMjgyLDkgKzI4Miw4IEBAIHByb3RlY3RlZDoK
ICAgICAvLyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkgaW52YWxpZGF0aW5nIGV2ZXJ5dGhpbmcuCiAg
ICAgdmlydHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBk
YXRlUmVjdCk7CiAKLSAgICB2b2lkIHNldFNjcm9sbE9yaWdpblgoaW50KTsKLSAgICBpbnQgc2Ny
b2xsT3JpZ2luWCgpIHsgcmV0dXJuIG1fc2Nyb2xsT3JpZ2luWDsgfQotICAgIHZvaWQgdXBkYXRl
U2Nyb2xsYmFycygpOworICAgIHZvaWQgc2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50Jiwg
Ym9vbCB1cGRhdGVQb3NpdGlvbik7CisgICAgSW50UG9pbnQgc2Nyb2xsT3JpZ2luKCkgeyByZXR1
cm4gbV9zY3JvbGxPcmlnaW47IH0KIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBt
X2hvcml6b250YWxTY3JvbGxiYXI7CkBAIC0zMjEsMTAgKzMyMCwxOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9wYWludHNFbnRpcmVDb250ZW50czsKICAgICBib29sIG1fZGVsZWdhdGVzU2Nyb2xs
aW5nOwogCi0gICAgLy8gbV9zY3JvbGxPcmlnaW5YIGlzIDAgZm9yIExUUiBwYWdlLiBBbmQgaXQg
aXMgbmVnYXRpdmUgb2YgbGVmdCBsYXlvdXQKLSAgICAvLyBvdmVyZmxvdyBmb3IgUlRMIHBhZ2Uu
IEl0IGlzIG1haW5seSB1c2VkIHRvIHNldCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIKLSAgICAv
LyBwb3NpdGlvbiBmb3IgUlRMIHBhZ2UuCi0gICAgaW50IG1fc2Nyb2xsT3JpZ2luWDsKKyAgICAv
LyBUaGVyZSBhcmUgOCBwb3NzaWJsZSBjb21iaW5hdGlvbnMgb2Ygd3JpdGluZyBtb2RlIGFuZCBk
aXJlY3Rpb24uICBTY3JvbGwgb3JpZ2luIHdpbGwgYmUgbm9uLXplcm8gaW4gdGhlIHggb3IgeSBh
eGlzCisgICAgLy8gaWYgdGhlcmUgaXMgYW55IHJldmVyc2VkIGRpcmVjdGlvbiBvciB3cml0aW5n
LW1vZGUuICBUaGUgY29tYmluYXRpb25zIGFyZToKKyAgICAvLyB3cml0aW5nLW1vZGUgLyBkaXJl
Y3Rpb24gICAgIHNjcm9sbE9yaWdpbi54KCkgc2V0ICAgIHNjcm9sbE9yaWdpbi55KCkgc2V0Cisg
ICAgLy8gaG9yaXpvbnRhbC10YiAvIGx0ciAgICAgICAgICBOTyAgICAgICAgICAgICAgICAgICAg
ICBOTworICAgIC8vIGhvcml6b250YWwtdGIgLyBydGwgICAgICAgICAgWUVTICAgICAgICAgICAg
ICAgICAgICAgTk8KKyAgICAvLyBob3Jpem9udGFsLWJ0IC8gbHRyICAgICAgICAgIE5PICAgICAg
ICAgICAgICAgICAgICAgIFlFUworICAgIC8vIGhvcml6b250YWwtYnQgLyBydGwgICAgICAgICAg
WUVTICAgICAgICAgICAgICAgICAgICAgWUVTCisgICAgLy8gdmVydGljYWwtbHIgLyBsdHIgICAg
ICAgICAgICBOTyAgICAgICAgICAgICAgICAgICAgICBOTworICAgIC8vIHZlcnRpY2FsLWxyIC8g
cnRsICAgICAgICAgICAgTk8gICAgICAgICAgICAgICAgICAgICAgWUVTCisgICAgLy8gdmVydGlj
YWwtcmwgLyBsdHIgICAgICAgICAgICBZRVMgICAgICAgICAgICAgICAgICAgICBOTworICAgIC8v
IHZlcnRpY2FsLXJsIC8gcnRsICAgICAgICAgICAgWUVTICAgICAgICAgICAgICAgICAgICAgWUVT
CisgICAgSW50UG9pbnQgbV9zY3JvbGxPcmlnaW47CiAKICAgICB2b2lkIGluaXQoKTsKICAgICB2
b2lkIGRlc3Ryb3koKTsKQEAgLTM1NCw3ICszNjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1SZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25zdCBJbnRSZWN0JiwgYm9vbCBub3cpOwog
ICAgIGJvb2wgcGxhdGZvcm1Jc09mZnNjcmVlbigpIGNvbnN0OwogICAgCi0gICAgdm9pZCBwbGF0
Zm9ybVNldFNjcm9sbE9yaWdpblgoaW50KTsKKyAgICB2b2lkIHBsYXRmb3JtU2V0U2Nyb2xsT3Jp
Z2luKGNvbnN0IEludFBvaW50JiwgYm9vbCB1cGRhdGVQb3NpdGlvbik7CiAKICNpZiBQTEFURk9S
TShNQUMpICYmIGRlZmluZWQgX19PQkpDX18KIHB1YmxpYzoKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsVmlld01hYy5tbQkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxWaWV3TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDggQEAg
dm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbGJhcnNTdQogdm9pZCBTY3JvbGxWaWV3
OjpwbGF0Zm9ybVNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkK
IHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgTlNQb2ludCB0ZW1wUG9p
bnQgPSB7IG1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxPcmlnaW5YXSwgc2Nyb2xsUG9pbnQueCgp
KSwgbWF4KDAsIHNjcm9sbFBvaW50LnkoKSkgfTsgIC8vIERvbid0IHVzZSBOU01ha2VQb2ludCB0
byB3b3JrIGFyb3VuZCA0MjEzMzE0LgorICAgIE5TUG9pbnQgZmxvYXRQb2ludCA9IHNjcm9sbFBv
aW50OworICAgIE5TUG9pbnQgdGVtcFBvaW50ID0geyBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xs
T3JpZ2luXS54LCBmbG9hdFBvaW50LngpLCBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2lu
XS55LCBmbG9hdFBvaW50LnkpIH07ICAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBh
cm91bmQgNDIxMzMxNC4KICAgICBbZG9jdW1lbnRWaWV3KCkgc2Nyb2xsUG9pbnQ6dGVtcFBvaW50
XTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQpAQCAtMjAyLDEwICsyMDMsMTAg
QEAgYm9vbCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUlzT2Zmc2NyZWVuKCkgYwogICAgIHJldHVybiAh
W3BsYXRmb3JtV2lkZ2V0KCkgd2luZG93XSB8fCAhW1twbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10g
aXNWaXNpYmxlXTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdp
blgoaW50IHgpCit2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luKGNvbnN0
IEludFBvaW50JiBvcmlnaW4sIGJvb2wgdXBkYXRlUG9zaXRpb24pCiB7CiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwotICAgIFtzY3JvbGxWaWV3KCkgc2V0U2Nyb2xsT3JpZ2luWDp4
XTsKKyAgICBbc2Nyb2xsVmlldygpIHNldFNjcm9sbE9yaWdpbjpvcmlnaW4gdXBkYXRlUG9zaXRp
b246dXBkYXRlUG9zaXRpb25dOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAK
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzMsNyArNzczLDcg
QEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Um9vdEJveERlY29yYXRpb25zKAogICAgIC8vIFRoZSBi
YWNrZ3JvdW5kIG9mIHRoZSBib3ggZ2VuZXJhdGVkIGJ5IHRoZSByb290IGVsZW1lbnQgY292ZXJz
IHRoZSBlbnRpcmUgY2FudmFzIGluY2x1ZGluZwogICAgIC8vIGl0cyBtYXJnaW5zLgogICAgIGlu
dCBieCA9IHR4IC0gbWFyZ2luTGVmdCgpICsgdmlldygpLT5sZWZ0TGF5b3V0T3ZlcmZsb3coKTsK
LSAgICBpbnQgYnkgPSB0eSAtIG1hcmdpblRvcCgpOworICAgIGludCBieSA9IHR5IC0gbWFyZ2lu
VG9wKCkgKyB2aWV3KCktPnRvcExheW91dE92ZXJmbG93KCk7CiAgICAgaW50IGJ3ID0gbWF4KHcg
KyBtYXJnaW5MZWZ0KCkgKyBtYXJnaW5SaWdodCgpICsgYm9yZGVyTGVmdCgpICsgYm9yZGVyUmln
aHQoKSwgcncpOwogICAgIGludCBiaCA9IG1heChoICsgbWFyZ2luVG9wKCkgKyBtYXJnaW5Cb3R0
b20oKSArIGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCksIHJoKTsKIApJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHAJKHJldmlzaW9uIDcyOTQ3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsOCBAQCB2b2lkIFJl
bmRlclZpZXc6OmxheW91dCgpCiAgICAgLy8gUmVzZXQgb3ZlcmZsb3cgYW5kIHRoZW4gcmVwbGFj
ZSBpdCB3aXRoIGRvY1dpZHRoIGFuZCBkb2NIZWlnaHQuCiAgICAgbV9vdmVyZmxvdy5jbGVhcigp
OwogICAgIGludCBsZWZ0T3ZlcmZsb3cgPSBkb2NMZWZ0KCk7Ci0gICAgYWRkTGF5b3V0T3ZlcmZs
b3coSW50UmVjdChsZWZ0T3ZlcmZsb3csIDAsIGRvY1dpZHRoKGxlZnRPdmVyZmxvdyksIGRvY0hl
aWdodCgpKSk7CisgICAgaW50IHRvcE92ZXJmbG93ID0gZG9jVG9wKCk7CisgICAgYWRkTGF5b3V0
T3ZlcmZsb3coSW50UmVjdChsZWZ0T3ZlcmZsb3csIHRvcE92ZXJmbG93LCBkb2NXaWR0aChsZWZ0
T3ZlcmZsb3cpLCBkb2NIZWlnaHQodG9wT3ZlcmZsb3cpKSk7CiAKICAgICBBU1NFUlQobGF5b3V0
RGVsdGEoKSA9PSBJbnRTaXplKCkpOwogICAgIEFTU0VSVChtX2xheW91dFN0YXRlRGlzYWJsZUNv
dW50ID09IDApOwpAQCAtNjE3LDkgKzYxOCwxOCBAQCBJbnRSZWN0IFJlbmRlclZpZXc6OnZpZXdS
ZWN0KCkgY29uc3QKICAgICByZXR1cm4gSW50UmVjdCgpOwogfQogCi1pbnQgUmVuZGVyVmlldzo6
ZG9jSGVpZ2h0KCkgY29uc3QKK2ludCBSZW5kZXJWaWV3Ojpkb2NUb3AoKSBjb25zdAogewotICAg
IGludCBoID0gbG93ZXN0UG9zaXRpb24oKTsKKyAgICAvLyBDbGlwIG91dCB0b3Agb3ZlcmZsb3cg
aW4gdmVydGljYWwgTFRSIHBhZ2VzIG9yIGhvcml6b250YWwtdGIgcGFnZXMuCisgICAgaWYgKCgh
c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAmJiBzdHlsZSgpLT5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkpIHx8IHN0eWxlKCktPndyaXRpbmdNb2RlKCkgPT0gVG9wVG9Cb3R0b21X
cml0aW5nTW9kZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHN0ZDo6bWluKDAsIHRv
cG1vc3RQb3NpdGlvbigpKTsKK30KKworaW50IFJlbmRlclZpZXc6OmRvY0hlaWdodChpbnQgdG9w
T3ZlcmZsb3cpIGNvbnN0Cit7CisgICAgaW50IGggPSAoKCFzdHlsZSgpLT5pc0hvcml6b250YWxX
cml0aW5nTW9kZSgpICYmIHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgfHwgc3R5
bGUoKS0+d3JpdGluZ01vZGUoKSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKSA/CisgICAgICAg
ICAgICAgICAgbG93ZXN0UG9zaXRpb24oKSA6IGhlaWdodCgpIC0gdG9wT3ZlcmZsb3c7CiAKICAg
ICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IGRvIGFueSBtYXJnaW4gY29sbGFwc2luZy4KICAgICAv
LyBJbnN0ZWFkIG9mIHRoaXMgZGggY29tcHV0YXRpb24gd2Ugc2hvdWxkIGtlZXAgdGhlIHJlc3Vs
dApAQCAtNjM2LDEzICs2NDYsMTYgQEAgaW50IFJlbmRlclZpZXc6OmRvY0hlaWdodCgpIGNvbnN0
CiAKIGludCBSZW5kZXJWaWV3Ojpkb2NMZWZ0KCkgY29uc3QKIHsKLSAgICAvLyBDbGlwIG91dCBs
ZWZ0IG92ZXJmbG93IGluIExUUiBwYWdlLgotICAgIHJldHVybiBzdHlsZSgpLT5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkgPyAwIDogc3RkOjptaW4oMCwgbGVmdG1vc3RQb3NpdGlvbigpKTsKKyAg
ICAvLyBDbGlwIG91dCBsZWZ0IG92ZXJmbG93IGluIGhvcml6b250YWwgTFRSIHBhZ2VzIG9yIHZl
cnRpY2FsLWxyIHBhZ2VzLgorICAgIGlmICgoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSAmJiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpIHx8IHN0eWxlKCktPndy
aXRpbmdNb2RlKCkgPT0gTGVmdFRvUmlnaHRXcml0aW5nTW9kZSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIHN0ZDo6bWluKDAsIGxlZnRtb3N0UG9zaXRpb24oKSk7CiB9CiAKIGludCBS
ZW5kZXJWaWV3Ojpkb2NXaWR0aChpbnQgbGVmdE92ZXJmbG93KSBjb25zdAogewotICAgIGludCB3
ID0gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gcmlnaHRtb3N0UG9zaXRpb24o
KSA6IHdpZHRoKCkgLSBsZWZ0T3ZlcmZsb3c7CisgICAgaW50IHcgPSAoKHN0eWxlKCktPmlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgJiYgc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
KSB8fCBzdHlsZSgpLT53cml0aW5nTW9kZSgpID09IExlZnRUb1JpZ2h0V3JpdGluZ01vZGUpID8g
CisgICAgICAgICAgICAgICAgcmlnaHRtb3N0UG9zaXRpb24oKSA6IHdpZHRoKCkgLSBsZWZ0T3Zl
cmZsb3c7CiAKICAgICBmb3IgKFJlbmRlckJveCogYyA9IGZpcnN0Q2hpbGRCb3goKTsgYzsgYyA9
IGMtPm5leHRTaWJsaW5nQm94KCkpIHsKICAgICAgICAgaW50IGR3ID0gYy0+d2lkdGgoKSArIGMt
Pm1hcmdpbkxlZnQoKSArIGMtPm1hcmdpblJpZ2h0KCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5oCShyZXZpc2lvbiA3Mjk0NykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAko
d29ya2luZyBjb3B5KQpAQCAtMTcyLDggKzE3Miw5IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToK
ICAgICBib29sIHNob3VsZFJlcGFpbnQoY29uc3QgSW50UmVjdCYgcikgY29uc3Q7Ci0gICAgICAg
IAotICAgIGludCBkb2NIZWlnaHQoKSBjb25zdDsKKyAgICAKKyAgICBpbnQgZG9jVG9wKCkgY29u
c3Q7CisgICAgaW50IGRvY0hlaWdodChpbnQgdG9wT3ZlcmZsb3cpIGNvbnN0OwogICAgIGludCBk
b2NMZWZ0KCkgY29uc3Q7CiAgICAgaW50IGRvY1dpZHRoKGludCBsZWZ0T3ZlcmZsb3cpIGNvbnN0
OwogCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gNzMwNTcpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEwLTEyLTAxICBEYXZpZCBIeWF0dCAgPGh5
YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY2NDUKKyAg
ICAgICAgCisgICAgICAgIFBhcnQgMSBvZiBtYWtpbmcgc2Nyb2xsaW5nIHdvcmsgd2l0aCB2ZXJ0
aWNhbC4gVGhpcyBwYXRjaCBnZW5lcmFsaXplcyB0aGUgc2Nyb2xsT3JpZ2luWCBjb250ZW50Cisg
ICAgICAgIHJlY2VudGx5IGFkZGVkIGZvciBob3Jpem9udGFsIFJUTCBkb2N1bWVudHMgYW5kIGFw
cGxpZXMgaXQgdG8gd3JpdGluZyBtb2RlcyBhcyB3ZWxsLiAgTm93IHRoZQorICAgICAgICBzY3Jv
bGxPcmlnaW4gaXMgYSBwb2ludCwgc2luY2UgeW91IGNhbiBzdGFydCBvZmYgbG9ja2VkIHRvIHRo
ZSBib3R0b20gb3IgbG9ja2VkIHRvIHRoZSByaWdodC4KKyAgICAgICAgCisgICAgICAgIFRoaXMg
cGF0Y2ggYWxzbyBmaXhlcyBudW1lcm91cyBidWdzIHdpdGggdGhlIHNjcm9sbE9yaWdpbiBjb2Rl
IHVzaW5nIG5hdGl2ZSBNYWMgTlNTY3JvbGxWaWV3cyBhbmQKKyAgICAgICAgbWFrZXMgdGhlbSBi
ZWhhdmUgdGhlIHNhbWUgYXMgdGhlIGNyb3NzLXBsYXRmb3JtIGNvZGUgKGFsbG93aW5nIGZvciBj
cm9zcy1wbGF0Zm9ybSByZXN1bHRzIHRvIGJlCisgICAgICAgIGxhbmRlZCkuCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldy5tbToKKyAgICAgICAgKC1bV2ViRHlu
YW1pY1Njcm9sbEJhcnNWaWV3IGFkanVzdEZvclNjcm9sbE9yaWdpbkNoYW5nZV0pOgorICAgICAg
ICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgdXBkYXRlU2Nyb2xsZXJzXSk6CisgICAgICAg
ICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyByZWZsZWN0U2Nyb2xsZWRDbGlwVmlldzpdKToK
KyAgICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHNldFNjcm9sbE9yaWdpbjp1cGRh
dGVQb3NpdGlvbjpdKToKKyAgICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHNjcm9s
bE9yaWdpbl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJGcmFtZVZpZXcgX3Njcm9sbFRvQmVnaW5uaW5nT2ZEb2N1bWVudF0pOgorICAgICAgICAo
LVtXZWJGcmFtZVZpZXcgX3Njcm9sbFRvRW5kT2ZEb2N1bWVudF0pOgorCiAyMDEwLTExLTI5ICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xs
QmFyc1ZpZXcubW0JKHJldmlzaW9uIDcyOTQ3KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5
bmFtaWNTY3JvbGxCYXJzVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjMsMTIgKzYzLDE0IEBA
IHN0cnVjdCBXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXdQcml2YXRlIHsKICAgICBib29sIGhvcml6
b250YWxTY3JvbGxpbmdBbGxvd2VkQnV0U2Nyb2xsZXJIaWRkZW47CiAgICAgYm9vbCB2ZXJ0aWNh
bFNjcm9sbGluZ0FsbG93ZWRCdXRTY3JvbGxlckhpZGRlbjsKIAotICAgIC8vIHNjcm9sbE9yaWdp
blggaXMgMCBmb3IgTFRSIHBhZ2UgYW5kIGlzIHRoZSBuZWdhdGl2ZSBvZiBsZWZ0IGxheW91dCBv
dmVyZmxvdyB2YWx1ZSBmb3IgUlRMIHBhZ2UuCi0gICAgaW50IHNjcm9sbE9yaWdpblg7CisgICAg
Ly8gc2Nyb2xsT3JpZ2luIGlzIHNldCBmb3IgdmFyaW91cyBjb21iaW5hdGlvbnMgb2Ygd3JpdGlu
ZyBtb2RlIGFuZCBkaXJlY3Rpb24uICBTZWUgdGhlIGNvbW1lbnQgbmV4dCB0byB0aGUKKyAgICAv
LyBjb3JyZXNwb25kaW5nIG1lbWJlciBpbiBTY3JvbGxWaWV3LmguCisgICAgTlNQb2ludCBzY3Jv
bGxPcmlnaW47CiAKICAgICAvLyBGbGFnIHRvIGluZGljYXRlIHRoYXQgdGhlIHNjcm9sbGJhciB0
aHVtYidzIGluaXRpYWwgcG9zaXRpb24gbmVlZHMgdG8KICAgICAvLyBiZSBtYW51YWxseSBzZXQu
Ci0gICAgYm9vbCBzZXRTY3JvbGxiYXJUaHVtYkluaXRpYWxQb3NpdGlvbjsKKyAgICBib29sIHNj
cm9sbE9yaWdpbkNoYW5nZWQ7CisgICAgTlNQb2ludCBzY3JvbGxQb3NpdGlvbkV4Y2x1ZGluZ09y
aWdpbjsKIAogICAgIGJvb2wgaW5Qcm9ncmFtbWF0aWNTY3JvbGw7CiB9OwpAQCAtMjE1LDI3ICsy
MTcsMjcgQEAgLSAodm9pZClzZXRTY3JvbGxCYXJzU3VwcHJlc3NlZDooQk9PTClzdQogI2VuZGlm
CiB9CiAKLS0gKHZvaWQpcmVmcmVzaEluaXRpYWxTY3JvbGxiYXJQb3NpdGlvbgorLSAodm9pZClh
ZGp1c3RGb3JTY3JvbGxPcmlnaW5DaGFuZ2UKIHsKLSAgICBpZiAoX3ByaXZhdGUtPnNldFNjcm9s
bGJhclRodW1iSW5pdGlhbFBvc2l0aW9uKSB7Ci0gICAgICAgIE5TVmlldyAqZG9jdW1lbnRWaWV3
ID0gW3NlbGYgZG9jdW1lbnRWaWV3XTsKLSAgICAgICAgTlNSZWN0IGRvY3VtZW50UmVjdCA9IFtk
b2N1bWVudFZpZXcgYm91bmRzXTsKKyAgICBpZiAoIV9wcml2YXRlLT5zY3JvbGxPcmlnaW5DaGFu
Z2VkKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgLy8gSWYgc2Nyb2xsT3JpZ2luWCBpcyBu
b24temVybyB0aGF0IG1lYW5zIHRoYXQgdGhlcmUncyBhIGxlZnQgb3ZlcmZsb3cgPD0+IHRoaXMg
aXMgYW4gUlRMIGRvY3VtZW50IGFuZCB0aHVzCi0gICAgICAgIC8vIHRoZSBpbml0aWFsIHBvc2l0
aW9uIG9mIHRoZSBob3Jpem9udGFsIHNjcm9sbGJhciB0aHVtYiBzaG91bGQgYmUgb24gdGhlIHJp
Z2h0LgotICAgICAgICAvLyBGSVhNRTogSWYga25vd2xlZGdlIG9mIGRvY3VtZW50IGRpcmVjdGlv
bmFsaXR5IGlzIGV2ZXIgcHJvcGFnYXRlZCB0byB0aGUgc2Nyb2xsIHZpZXcsIGl0IHByb2JhYmx5
IG1ha2VzCi0gICAgICAgIC8vIG1vcmUgc2Vuc2UgdG8gdXNlIHRoZSBkaXJlY3Rpb25hbGl0eSBk
aXJlY3RseSBpbiB0aGUgYmVsb3cgaWYgc3RhdGVtZW50LCByYXRoZXIgdGhhbiBkb2luZyBzbyBp
bmRpcmVjdGx5Ci0gICAgICAgIC8vIHRocm91Z2ggc2Nyb2xsT3JpZ2luWC4KLSAgICAgICAgaWYg
KF9wcml2YXRlLT5zY3JvbGxPcmlnaW5YICE9IDApIHsKLSAgICAgICAgICAgIC8vIFRoZSBjYWxs
IHRvIFtOU1ZpZXcgc2Nyb2xsUG9pbnQ6XSBmaXJlcyBvZmYgbm90aWZpY2F0aW9uIHRoZSBoYW5k
bGVyIGZvciB3aGljaCBuZWVkcyB0byBrbm93IHRoYXQKLSAgICAgICAgICAgIC8vIHdlJ3JlIHNl
dHRpbmcgdGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uIHNvIGl0IGRvZXNuJ3QgaW50ZXJwcmV0
IHRoaXMgYXMgYSB1c2VyIGFjdGlvbiBhbmQKLSAgICAgICAgICAgIC8vIGZpcmUgb2ZmIGEgSlMg
ZXZlbnQuCi0gICAgICAgICAgICBfcHJpdmF0ZS0+aW5Qcm9ncmFtbWF0aWNTY3JvbGwgPSB0cnVl
OwotICAgICAgICAgICAgW2RvY3VtZW50VmlldyBzY3JvbGxQb2ludDpOU01ha2VQb2ludChOU01h
eFgoZG9jdW1lbnRSZWN0KSAtIE5TV2lkdGgoW3NlbGYgY29udGVudFZpZXdGcmFtZV0pLCAwKV07
Ci0gICAgICAgICAgICBfcHJpdmF0ZS0+aW5Qcm9ncmFtbWF0aWNTY3JvbGwgPSBmYWxzZTsKLSAg
ICAgICAgfQotICAgICAgICBfcHJpdmF0ZS0+c2V0U2Nyb2xsYmFyVGh1bWJJbml0aWFsUG9zaXRp
b24gPSBmYWxzZTsKLSAgICB9CisgICAgX3ByaXZhdGUtPnNjcm9sbE9yaWdpbkNoYW5nZWQgPSBm
YWxzZTsKKworICAgIE5TVmlldyAqZG9jdW1lbnRWaWV3ID0gW3NlbGYgZG9jdW1lbnRWaWV3XTsK
KyAgICBOU1JlY3QgZG9jdW1lbnRSZWN0ID0gW2RvY3VtZW50VmlldyBib3VuZHNdOworCisgICAg
Ly8gSWYgc2Nyb2xsT3JpZ2luWCBpcyBub24temVybyB0aGF0IG1lYW5zIHRoYXQgdGhlcmUncyBh
IGxlZnQgb3ZlcmZsb3cgPD0+IHRoaXMgaXMgYW4gUlRMIGRvY3VtZW50IGFuZCB0aHVzCisgICAg
Ly8gdGhlIGluaXRpYWwgcG9zaXRpb24gb2YgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyIHRodW1i
IHNob3VsZCBiZSBvbiB0aGUgcmlnaHQuCisgICAgLy8gRklYTUU6IElmIGtub3dsZWRnZSBvZiBk
b2N1bWVudCBkaXJlY3Rpb25hbGl0eSBpcyBldmVyIHByb3BhZ2F0ZWQgdG8gdGhlIHNjcm9sbCB2
aWV3LCBpdCBwcm9iYWJseSBtYWtlcworICAgIC8vIG1vcmUgc2Vuc2UgdG8gdXNlIHRoZSBkaXJl
Y3Rpb25hbGl0eSBkaXJlY3RseSBpbiB0aGUgYmVsb3cgaWYgc3RhdGVtZW50LCByYXRoZXIgdGhh
biBkb2luZyBzbyBpbmRpcmVjdGx5CisgICAgLy8gdGhyb3VnaCBzY3JvbGxPcmlnaW5YLgorICAg
IC8vIFRoZSBjYWxsIHRvIFtOU1ZpZXcgc2Nyb2xsUG9pbnQ6XSBmaXJlcyBvZmYgbm90aWZpY2F0
aW9uIHRoZSBoYW5kbGVyIGZvciB3aGljaCBuZWVkcyB0byBrbm93IHRoYXQKKyAgICAvLyB3ZSdy
ZSBzZXR0aW5nIHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiBzbyBpdCBkb2Vzbid0IGludGVy
cHJldCB0aGlzIGFzIGEgdXNlciBhY3Rpb24gYW5kCisgICAgLy8gZmlyZSBvZmYgYSBKUyBldmVu
dC4KKyAgICBfcHJpdmF0ZS0+aW5Qcm9ncmFtbWF0aWNTY3JvbGwgPSB0cnVlOworICAgIFtkb2N1
bWVudFZpZXcgc2Nyb2xsUG9pbnQ6TlNNYWtlUG9pbnQoX3ByaXZhdGUtPnNjcm9sbFBvc2l0aW9u
RXhjbHVkaW5nT3JpZ2luLnggKyBkb2N1bWVudFJlY3Qub3JpZ2luLngsIF9wcml2YXRlLT5zY3Jv
bGxQb3NpdGlvbkV4Y2x1ZGluZ09yaWdpbi55ICsgZG9jdW1lbnRSZWN0Lm9yaWdpbi55KV07Cisg
ICAgX3ByaXZhdGUtPmluUHJvZ3JhbW1hdGljU2Nyb2xsID0gZmFsc2U7CiB9CiAKIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBjTWF4VXBkYXRlU2Nyb2xsYmFyc1Bhc3MgPSAyOwpAQCAtMzM5LDE0ICsz
NDEsMTIgQEAgLSAodm9pZCl1cGRhdGVTY3JvbGxlcnMKICAgICBpZiAoaGFzSG9yaXpvbnRhbFNj
cm9sbGVyICE9IG5ld0hhc0hvcml6b250YWxTY3JvbGxlcikgewogICAgICAgICBfcHJpdmF0ZS0+
aW5VcGRhdGVTY3JvbGxlcnMgPSBZRVM7CiAgICAgICAgIFtzZWxmIHNldEhhc0hvcml6b250YWxT
Y3JvbGxlcjpuZXdIYXNIb3Jpem9udGFsU2Nyb2xsZXJdOwotICAgICAgICAKLSAgICAgICAgLy8g
Rm9yIFJUTCBkb2N1bWVudHMsIHdlIG5lZWQgdG8gc2V0IHRoZSBpbml0aWFsIHBvc2l0aW9uIG9m
IHRoZQotICAgICAgICAvLyBob3Jpem9udGFsIHNjcm9sbGJhciB0aHVtYiB0byBiZSBvbiB0aGUg
cmlnaHQuCi0gICAgICAgIGlmIChuZXdIYXNIb3Jpem9udGFsU2Nyb2xsZXIpCi0gICAgICAgICAg
ICBfcHJpdmF0ZS0+c2V0U2Nyb2xsYmFyVGh1bWJJbml0aWFsUG9zaXRpb24gPSB0cnVlOwotICAg
ICAgICAKICAgICAgICAgX3ByaXZhdGUtPmluVXBkYXRlU2Nyb2xsZXJzID0gTk87CiAgICAgICAg
IG5lZWRzTGF5b3V0ID0gWUVTOworICAgICAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtzZWxm
IGRvY3VtZW50Vmlld107CisgICAgICAgIE5TUmVjdCBkb2N1bWVudFJlY3QgPSBbZG9jdW1lbnRW
aWV3IGJvdW5kc107CisgICAgICAgIGlmIChkb2N1bWVudFJlY3Qub3JpZ2luLnkgPCAwICYmICFu
ZXdIYXNIb3Jpem9udGFsU2Nyb2xsZXIpCisgICAgICAgICAgICBbZG9jdW1lbnRWaWV3IHNldEJv
dW5kc09yaWdpbjpOU01ha2VQb2ludChkb2N1bWVudFJlY3Qub3JpZ2luLngsIGRvY3VtZW50UmVj
dC5vcmlnaW4ueSArPSAxNSldOwogICAgIH0KIAogICAgIGlmIChoYXNWZXJ0aWNhbFNjcm9sbGVy
ICE9IG5ld0hhc1ZlcnRpY2FsU2Nyb2xsZXIpIHsKQEAgLTM1NCw2ICszNTQsMTAgQEAgLSAodm9p
ZCl1cGRhdGVTY3JvbGxlcnMKICAgICAgICAgW3NlbGYgc2V0SGFzVmVydGljYWxTY3JvbGxlcjpu
ZXdIYXNWZXJ0aWNhbFNjcm9sbGVyXTsKICAgICAgICAgX3ByaXZhdGUtPmluVXBkYXRlU2Nyb2xs
ZXJzID0gTk87CiAgICAgICAgIG5lZWRzTGF5b3V0ID0gWUVTOworICAgICAgICBOU1ZpZXcgKmRv
Y3VtZW50VmlldyA9IFtzZWxmIGRvY3VtZW50Vmlld107CisgICAgICAgIE5TUmVjdCBkb2N1bWVu
dFJlY3QgPSBbZG9jdW1lbnRWaWV3IGJvdW5kc107CisgICAgICAgIGlmIChkb2N1bWVudFJlY3Qu
b3JpZ2luLnggPCAwICYmICFuZXdIYXNWZXJ0aWNhbFNjcm9sbGVyKQorICAgICAgICAgICAgW2Rv
Y3VtZW50VmlldyBzZXRCb3VuZHNPcmlnaW46TlNNYWtlUG9pbnQoZG9jdW1lbnRSZWN0Lm9yaWdp
bi54ICs9IDE1LCBkb2N1bWVudFJlY3Qub3JpZ2luLnkpXTsKICAgICB9CiAKICAgICBpZiAobmVl
ZHNMYXlvdXQgJiYgX3ByaXZhdGUtPmluVXBkYXRlU2Nyb2xsZXJzTGF5b3V0UGFzcyA8IGNNYXhV
cGRhdGVTY3JvbGxiYXJzUGFzcyAmJgpAQCAtNDEwLDcgKzQxNCw3IEBAIC0gKHZvaWQpcmVmbGVj
dFNjcm9sbGVkQ2xpcFZpZXc6KE5TQ2xpcFYKICAgICAvLyBUaGUgY2FsbCB0byBbTlNWaWV3IHJl
ZmxlY3RTY3JvbGxlZENsaXBWaWV3XSBzZXRzIHRoZSBzY3JvbGxiYXIgdGh1bWIKICAgICAvLyBw
b3NpdGlvbiB0byAwICh0aGUgbGVmdCkgd2hlbiB0aGUgdmlldyBpcyBpbml0aWFsbHkgZGlzcGxh
eWVkLgogICAgIC8vIFRoaXMgY2FsbCB1cGRhdGVzIHRoZSBpbml0aWFsIHBvc2l0aW9uIGNvcnJl
Y3RseS4KLSAgICBbc2VsZiByZWZyZXNoSW5pdGlhbFNjcm9sbGJhclBvc2l0aW9uXTsKKyAgICBb
c2VsZiBhZGp1c3RGb3JTY3JvbGxPcmlnaW5DaGFuZ2VdOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKSAmJiBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCiAgICAgTlNWaWV3
ICpkb2N1bWVudFZpZXcgPSBbc2VsZiBkb2N1bWVudFZpZXddOwpAQCAtNTczLDIyICs1NzcsMjkg
QEAgLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIAogICAgIHJldHVybiBbc3VwZXIgYWNj
ZXNzaWJpbGl0eUlzSWdub3JlZF07CiB9CiAKLS0gKHZvaWQpc2V0U2Nyb2xsT3JpZ2luWDooaW50
KXNjcm9sbE9yaWdpblgKKy0gKHZvaWQpc2V0U2Nyb2xsT3JpZ2luOihOU1BvaW50KXNjcm9sbE9y
aWdpbiB1cGRhdGVQb3NpdGlvbjooQk9PTCl1cGRhdGVQb3NpdGlvbgogewotICAgIF9wcml2YXRl
LT5zY3JvbGxPcmlnaW5YID0gc2Nyb2xsT3JpZ2luWDsKLSAgICAKKyAgICBfcHJpdmF0ZS0+c2Ny
b2xsT3JpZ2luID0gc2Nyb2xsT3JpZ2luOwogICAgIGlkIGRvY1ZpZXcgPSBbc2VsZiBkb2N1bWVu
dFZpZXddOwotICAgIGlmIChzY3JvbGxPcmlnaW5YICE9IFtkb2NWaWV3IGJvdW5kc10ub3JpZ2lu
LngpIHsKLSAgICAgICAgLy8gIi1bc2VsZiBzY3JvbGxPcmlnaW5YXSIgaXMgZXF1YWwgdG8gdGhl
IGxlZnQgbGF5b3V0IG92ZXJmbG93LgotICAgICAgICAvLyBNYWtlIERvY3VtZW50IGJvdW5kcyBv
cmlnaW4geCBjb29yZGluYXRlIGNvcnJlc3BvbmQgdG8gdGhlIGxlZnQgb3ZlcmZsb3cgc28gdGhl
IGVudGlyZSBjYW52YXMgaXMgY292ZXJlZCBieSB0aGUgZG9jdW1lbnQuCi0gICAgICAgIFtkb2NW
aWV3IHNldEJvdW5kc09yaWdpbjpOU01ha2VQb2ludCgtc2Nyb2xsT3JpZ2luWCwgW2RvY1ZpZXcg
Ym91bmRzXS5vcmlnaW4ueSldOwotICAgIH0KKyAgICBOU1BvaW50IGRvY09yaWdpbiA9IFtkb2NW
aWV3IGJvdW5kc10ub3JpZ2luOworICAgIGlmIChkb2NPcmlnaW4ueCAhPSAtc2Nyb2xsT3JpZ2lu
LnggfHwgZG9jT3JpZ2luLnkgIT0gLXNjcm9sbE9yaWdpbi55KSB7CisgICAgICAgIE5TUmVjdCB2
aXNpYmxlUmVjdCA9IFtzZWxmIGRvY3VtZW50VmlzaWJsZVJlY3RdOworICAgICAgICAgCisgICAg
ICAgIFtkb2NWaWV3IHNldEJvdW5kc09yaWdpbjpOU01ha2VQb2ludCgtc2Nyb2xsT3JpZ2luLngs
IC1zY3JvbGxPcmlnaW4ueSldOwogCisgICAgICAgIF9wcml2YXRlLT5zY3JvbGxPcmlnaW5DaGFu
Z2VkID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIC8vIE1haW50YWluIG91ciBvcmlnaW5hbCBw
b3NpdGlvbiBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhlIG5ldyBzY3JvbGwgb3JpZ2luLgorICAgICAg
ICBfcHJpdmF0ZS0+c2Nyb2xsUG9zaXRpb25FeGNsdWRpbmdPcmlnaW4gPSBOU01ha2VQb2ludCh2
aXNpYmxlUmVjdC5vcmlnaW4ueCArIHNjcm9sbE9yaWdpbi54LCB2aXNpYmxlUmVjdC5vcmlnaW4u
eSArIHNjcm9sbE9yaWdpbi55KTsKKyAgICAgICAgCisgICAgICAgIGlmICh1cGRhdGVQb3NpdGlv
bikgLy8gT3RoZXJ3aXNlIHdlJ2xsIGp1c3QgbGV0IHRoZSBzbmFwIGhhcHBlbiB3aGVuIHdlIHVw
ZGF0ZSBmb3IgdGhlIHJlc2l6ZS4KKyAgICAgICAgICAgIFtzZWxmIGFkanVzdEZvclNjcm9sbE9y
aWdpbkNoYW5nZV07CisgICAgfQogfQogCi0tIChpbnQpc2Nyb2xsT3JpZ2luWAorLSAoTlNQb2lu
dClzY3JvbGxPcmlnaW4KIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPnNjcm9sbE9yaWdpblg7Cisg
ICAgcmV0dXJuIF9wcml2YXRlLT5zY3JvbGxPcmlnaW47CiB9CiAKIEBlbmQKSW5kZXg6IFdlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lVmlldy5tbQkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWVWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MzYsNyArNTM2LDggQEAg
LSAoQk9PTClfc2Nyb2xsVG9CZWdpbm5pbmdPZkRvY3VtZW50CiAgICAgaWYgKCFbc2VsZiBfaXNT
Y3JvbGxhYmxlXSkKICAgICAgICAgcmV0dXJuIE5POwogICAgIE5TUG9pbnQgcG9pbnQgPSBbW1tz
ZWxmIF9zY3JvbGxWaWV3XSBkb2N1bWVudFZpZXddIGZyYW1lXS5vcmlnaW47Ci0gICAgcG9pbnQu
eCArPSBbW3NlbGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpblhdOworICAgIHBvaW50LnggKz0g
W1tzZWxmIF9zY3JvbGxWaWV3XSBzY3JvbGxPcmlnaW5dLng7CisgICAgcG9pbnQueSArPSBbW3Nl
bGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpbl0ueTsKICAgICByZXR1cm4gW1tzZWxmIF9jb250
ZW50Vmlld10gX3Njcm9sbFRvOiZwb2ludCBhbmltYXRlOllFU107CiB9CiAKQEAgLTU0OCw3ICs1
NDksOCBAQCAtIChCT09MKV9zY3JvbGxUb0VuZE9mRG9jdW1lbnQKICAgICAgICAgcmV0dXJuIE5P
OwogICAgIE5TUmVjdCBmcmFtZSA9IFtbW3NlbGYgX3Njcm9sbFZpZXddIGRvY3VtZW50Vmlld10g
ZnJhbWVdOwogICAgIE5TUG9pbnQgcG9pbnQgPSBOU01ha2VQb2ludChmcmFtZS5vcmlnaW4ueCwg
TlNNYXhZKGZyYW1lKSk7Ci0gICAgcG9pbnQueCArPSBbW3NlbGYgX3Njcm9sbFZpZXddIHNjcm9s
bE9yaWdpblhdOworICAgIHBvaW50LnggKz0gW1tzZWxmIF9zY3JvbGxWaWV3XSBzY3JvbGxPcmln
aW5dLng7CisgICAgcG9pbnQueSArPSBbW3NlbGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpbl0u
eTsKICAgICByZXR1cm4gW1tzZWxmIF9jb250ZW50Vmlld10gX3Njcm9sbFRvOiZwb2ludCBhbmlt
YXRlOllFU107CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDczMDU3KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMTItMDEgIERh
dmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NjY0NQorICAgICAgICAKKyAgICAgICAgUGFydCAxIG9mIG1ha2luZyBzY3JvbGxpbmcg
d29yayB3aXRoIHZlcnRpY2FsLiBUaGlzIHBhdGNoIGdlbmVyYWxpemVzIHRoZSBzY3JvbGxPcmln
aW5YIGNvbnRlbnQKKyAgICAgICAgcmVjZW50bHkgYWRkZWQgZm9yIGhvcml6b250YWwgUlRMIGRv
Y3VtZW50cyBhbmQgYXBwbGllcyBpdCB0byB3cml0aW5nIG1vZGVzIGFzIHdlbGwuICBOb3cgdGhl
CisgICAgICAgIHNjcm9sbE9yaWdpbiBpcyBhIHBvaW50LCBzaW5jZSB5b3UgY2FuIHN0YXJ0IG9m
ZiBsb2NrZWQgdG8gdGhlIGJvdHRvbSBvciBsb2NrZWQgdG8gdGhlIHJpZ2h0LgorICAgICAgICAK
KyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGZpeGVzIG51bWVyb3VzIGJ1Z3Mgd2l0aCB0aGUgc2Ny
b2xsT3JpZ2luIGNvZGUgdXNpbmcgbmF0aXZlIE1hYyBOU1Njcm9sbFZpZXdzIGFuZAorICAgICAg
ICBtYWtlcyB0aGVtIGJlaGF2ZSB0aGUgc2FtZSBhcyB0aGUgY3Jvc3MtcGxhdGZvcm0gY29kZSAo
YWxsb3dpbmcgZm9yIGNyb3NzLXBsYXRmb3JtIHJlc3VsdHMgdG8gYmUKKyAgICAgICAgbGFuZGVk
KS4KKworICAgICAgICAqIGZhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250
LWZpcmUtb25zY3JvbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS92
ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLWRvZXNudC1maXJlLW9uc2Nyb2xsLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRs
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci13aGVu
LWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS92ZXJ0
aWNhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFs
LXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorCiAyMDEw
LTEyLTAxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jp
em9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJh
ci1pbi1ydGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK29yaWdp
bmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6b250YWwgc2Nyb2xsOiA6
IFN1Y2Nlc3MKK2NvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxYIDogU3VjY2Vzcworem9v
bSBpbiBhbmQgb3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjogU3VjY2VzcworcmVzaXplIHBy
ZXNlcnZlcyBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK3doZWVsIHNjcm9sbCBwcmVzZXJ2ZXMg
aG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK0tleURvd24gSE9NRSBtb3ZlIHgt
c2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogMAorS2V5RG93biBFTkQgbW92
ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2U6IDAKK3NlbGVjdEFsbCBz
ZWxlY3RzIGFsbCBkb2N1bWVudDogU3VjY2VzcwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
aG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRp
ci1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitvcmlnaW5hbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2Ug
OiBTdWNjZXNzCitob3Jpem9udGFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK29y
aWdpbmFsIHNjcm9sbCB4IGZvciBMVFIgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6b250YWwgc2Nyb2xs
IHggZm9yIExUUiBwYWdlIDogU3VjY2VzcworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJh
ci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC1kb2VzbnQt
ZmlyZS1vbnNjcm9sbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAor
VGhpcyB0ZXN0cyB0aGF0IHdoZW4gYSBwYWdlIHdpdGggYW4gUlRMIG92ZXJmbG93IGlzIGluaXRp
YWxseSBsb2FkZWQsIG5vIHNjcm9sbCBldmVudCBpcyBzZW50LgorVGhpcyB0ZXN0IGhhcyBwYXNz
ZWQgaWYgdGhlIHRleHQgIkZBSUwgLSBzY3JvbGwgZXZlbnQgcmVjZWl2ZWQhIiBkb2VzIG5vdCBh
cHBlYXIgYmVsb3cuCitMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRp
cGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3Jl
IGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5v
c3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEg
Y29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0
IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBh
cmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBz
dW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJv
cnVtLiIKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLWlu
LXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9s
bGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBkaXI9cnRsIHN0eWxlPSItd2Via2l0
LXdyaXRpbmctbW9kZTp2ZXJ0aWNhbC1sciI+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQg
bGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgorICAgICAgICAgICAgZnVuY3Rpb24gbG9nKHN0cikKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKHN0cikpOworICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFwcGVu
ZENoaWxkKGxpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb25sb2FkID0gZnVuY3Rp
b24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZG9jdW1lbnQub25zY3Jv
bGw9ZnVuY3Rpb24oKXtsb2coIkZBSUwgLSBzY3JvbGwgZXZlbnQgcmVjZWl2ZWQhIik7fQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgZGly
PWx0cj4KKyAgICAgICAgPHA+VGhpcyB0ZXN0cyB0aGF0IHdoZW4gYSBwYWdlIHdpdGggYW4gUlRM
IG92ZXJmbG93IGlzIGluaXRpYWxseSBsb2FkZWQsIG5vIHNjcm9sbCBldmVudCBpcyBzZW50Ljwv
cD4KKyAgICAgICAgPHA+VGhpcyB0ZXN0IGhhcyBwYXNzZWQgaWYgdGhlIHRleHQgIkZBSUwgLSBz
Y3JvbGwgZXZlbnQgcmVjZWl2ZWQhIiBkb2VzIG5vdCBhcHBlYXIgYmVsb3cuPC9wPgorICAgICAg
ICA8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0iZGl2IiBzdHlsZT0id2hpdGVzcGFjZTpub3dyYXA7
IHdpZHRoOiAxMDAwcHg7IGhlaWdodDogNDAwMHB4OyBib3JkZXI6IDFweCBzb2xpZCByZWQ7Ij5M
b3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwg
c2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWdu
YSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0
aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1
YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2
ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRl
dXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1
aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLiI8L2Rpdj4KKyAg
ICAgICAgPHVsIGlkPSJjb25zb2xlIj48L3VsPgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJh
ci1pbi1ydGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOSBAQAorb3JpZ2luYWwgc2Nyb2xsIHkgZm9yIFJUTCBwYWdlIDogU3VjY2Vzcwor
dmVydGljYWwgc2Nyb2xsOiA6IFN1Y2Nlc3MKK2NvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3Jv
bGxZIDogU3VjY2Vzcworem9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjog
U3VjY2VzcworcmVzaXplIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK3doZWVs
IHNjcm9sbCBwcmVzZXJ2ZXMgdmVydGljYWwgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCitLZXlE
b3duIEhPTUUgbW92ZSB5LXNjcm9sbCBwb3NpdGlvbiB0byBib3R0b20gZm9yIFJUTCBwYWdlOiAw
CitLZXlEb3duIEVORCBtb3ZlIHktc2Nyb2xsIHBvc2l0aW9uIHRvIGJvdHRvbSBmb3IgUlRMIHBh
Z2U6IDAKK3NlbGVjdEFsbCBzZWxlY3RzIGFsbCBkb2N1bWVudDogU3VjY2VzcwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJh
ci1pbi1ydGwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDQgQEAKKzxodG1sIGRpcj1y
dGwgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOnZlcnRpY2FsLWxyIj4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+CisgICAgICAgICAgICBmdW5j
dGlvbiBsb2coc3RyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBsaSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgICAgICAgICAgICAgdmFyIGNv
bnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICAgICAg
ICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICBmdW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdlLCBhY3R1YWwsIGV4cGVj
dGVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0
ZWQpCisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IEZhaWx1cmUs
IGFjdHVhbDogIiArIGFjdHVhbCArICI7IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQpOworICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsg
IjogU3VjY2VzcyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBm
dW5jdGlvbiBhc3NlcnRDbG9zZShtZXNzYWdlLCBhY3R1YWwsIGV4cGVjdGVkKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGlmICgoYWN0dWFsID49IGV4cGVjdGVkICYmIGFjdHVhbCAt
IGV4cGVjdGVkIDwgNSkgfHwKKyAgICAgICAgICAgICAgICAgICAgKGV4cGVjdGVkID49IGFjdHVh
bCAmJiBleHBlY3RlZCAtIGFjdHVhbCA8IDUpKQorICAgICAgICAgICAgICAgICAgICBsb2coIlxu
IiArIG1lc3NhZ2UgKyAiOiBTdWNjZXNzIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlLCBhY3R1YWw6ICIg
KyBhY3R1YWwgKyAiOyBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGV4cGVjdGVkU2Nyb2xsWCA9IDUwMDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFNjcm9sbFkgPSAtMTAwMDsKKworICAgICAgICAgICAgZnVuY3Rp
b24gbW91c2V3aGVlbEhhbmRsZXIoZSkgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
YXNzZXJ0RXF1YWwoIndoZWVsIHNjcm9sbCBwcmVzZXJ2ZXMgdmVydGljYWwgc2Nyb2xsIHBvc2l0
aW9uIiwgd2luZG93LnNjcm9sbFksIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIG9ubG9hZCA9IGZ1bmN0aW9uKCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAg
ICAgICAgICAgICAgICAvLyBUZXN0IHZlcnRpY2FsIHNjcm9sbGJhciBwcmVzZW5jZSBhbmQgdGhh
dCBpdCBpcyBpbml0aWFsbHkgYXQgdGhlIGJvdHRvbSBmb3IgUlRMIHBhZ2UuCisgICAgICAgICAg
ICAgICAgYXNzZXJ0RXF1YWwoIm9yaWdpbmFsIHNjcm9sbCB5IGZvciBSVEwgcGFnZSAiLCB3aW5k
b3cuc2Nyb2xsWSwgMCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0IGhv
cml6b250YWwgc2Nyb2xsLgorICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3Rl
ZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwo
InZlcnRpY2FsIHNjcm9sbDogIiwgd2luZG93LnNjcm9sbFksIGV4cGVjdGVkU2Nyb2xsWSk7Cisg
ICAgICAgICAgICAgICAgLy8gVGVzdCBjYWxsaW5nIHdpbmRvdy5zY3JvbGxZIGNvbnRpbnVvdXNs
eSB3b250IGNoYW5nZSB0aGUgc2Nyb2xsWSBwb3NpdGlvbi4KKyAgICAgICAgICAgICAgICBhc3Nl
cnRFcXVhbCgiY29udGludW91c2x5IGNhbGwgd2luZG93LnNjcm9sbFkgIiwgd2luZG93LnNjcm9s
bFksIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgIC8v
IFRlc3Qgem9vbWluZyB3b250IHJlc2V0IHNjcm9sbCBwb3NpdGlvbi4KKyAgICAgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5z
Y3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLnpvb21QYWdlSW4oKTsKKyAgICAgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIuem9vbVBhZ2VPdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0Q2xvc2Uo
Inpvb20gaW4gYW5kIG91dCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb24iLCB3aW5kb3cuc2Nyb2xs
WSwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAvLyBUZXN0IHJlc2l6ZSB3b250IHJlc2V0IHNjcm9sbCBwb3NpdGlv
bi4KKyAgICAgICAgICAgICAgICB3aW5kb3cucmVzaXplVG8od2luZG93LmlubmVyV2lkdGgsIDEw
MDApOworICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4
cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgd2luZG93LnJlc2l6ZVRvKHdpbmRvdy5p
bm5lcldpZHRoLCAyMDAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgicmVzaXplIHBy
ZXNlcnZlcyBzY3JvbGwgcG9zaXRpb24iLCB3aW5kb3cuc2Nyb2xsWSwgZXhwZWN0ZWRTY3JvbGxZ
KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHdoZWVsIHNjcm9s
bCBwcmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb24uCisgICAgICAgICAgICAgICAg
d2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCAvIDIsIGV4cGVjdGVkU2Nyb2xsWSk7Cisg
ICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsK
KyAgICAgICAgICAgICAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V3aGVlbCIsIG1vdXNl
d2hlZWxIYW5kbGVyLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdmFyIHdoZWVsRXZlbnQgPSBk
b2N1bWVudC5jcmVhdGVFdmVudCgiV2hlZWxFdmVudCIpOworICAgICAgICAgICAgICAgIHdoZWVs
RXZlbnQuaW5pdFdlYktpdFdoZWVsRXZlbnQoZXhwZWN0ZWRTY3JvbGxYIC8gMiwgMCwgd2luZG93
LCAwLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAg
ICAgZGl2LmRpc3BhdGNoRXZlbnQod2hlZWxFdmVudCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAvLyBUZXN0IEhPTUUvRU5EIG9wZXJhdGlvbi4KKyAgICAgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIE5vdCB1c2luZyBh
c3NlcnQgZXF1YWwgaGVyZSBzaW5jZSB0aGUgYmVoYXZpb3IgaXMgZGlmZmVyZW50IGluIGVhY2gg
cG9ydC4gCisgICAgICAgICAgICAgICAgICAgIC8vIEZvciBleGFtcGxlLCBpbiBNYWMsIEhPTUUv
RU5EIGtleSByZXNldCBib3RoIHggYW5kIHkgc2Nyb2xsIHBvc2l0aW9uLiAKKyAgICAgICAgICAg
ICAgICAgICAgLy8gSW4gQ2hyb21pdW0sIEhPTUUvRU5EIGtleSBvbmx5IHJlc2V0IHkgc2Nyb2xs
IHBvc2l0aW9uLCBhbmQgeCBzY3JvbGwgcG9zaXRpb24gaXMgcHJlc2VydmVkLgorICAgICAgICAg
ICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9s
bFkpOworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJob21lIik7Cisg
ICAgICAgICAgICAgICAgICAgIGxvZygiS2V5RG93biBIT01FIG1vdmUgeS1zY3JvbGwgcG9zaXRp
b24gdG8gYm90dG9tIGZvciBSVEwgcGFnZTogIiArIHdpbmRvdy5zY3JvbGxZLCAwKTsKKyAgICAg
ICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRT
Y3JvbGxZKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiZW5kIik7
CisgICAgICAgICAgICAgICAgICAgIGxvZygiS2V5RG93biBFTkQgbW92ZSB5LXNjcm9sbCBwb3Np
dGlvbiB0byBib3R0b20gZm9yIFJUTCBwYWdlOiAiICsgd2luZG93LnNjcm9sbFksIDApOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRlc3Qgc2Vs
ZWN0IGFsbCBzZWxlY3RzIGFsbCBkb2N1bWVudCBjb250ZW50LgorICAgICAgICAgICAgICAgIHdp
bmRvdy5yZXNpemVUbyg1MDAsIDUwMCk7CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsKKyAgICAgICAgICAgICAgICBkaXYuZm9jdXMoKTsK
KyAgICAgICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7CisgICAg
ICAgICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRFcXVhbCgic2VsZWN0QWxsIHNlbGVjdHMgYWxsIGRvY3VtZW50Iiwg
c2VsZWN0aW9uLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIGRpdi5pbm5lckhUTUwubGVuZ3RoKSwg
ZGl2LmlubmVySFRNTCk7CisKKyAgICAgICAgICAgICAgICBkaXYuc3R5bGUuZGlzcGxheSA9ICJu
b25lIjsKKyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRpdiIgc3R5bGU9Indo
aXRlc3BhY2U6bm93cmFwOyB3aWR0aDogMTAwMHB4OyBoZWlnaHQ6IDQwMDBweDsgYm9yZGVyOiAx
cHggc29saWQgcmVkOyI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFk
aXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9y
ZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBu
b3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVh
IGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJp
dCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBw
YXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwg
c3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFi
b3J1bS4iPC9kaXY+CisgICAgICAgIDx1bCBpZD0iY29uc29sZSIgZGlyPWx0cj48L3VsPgorICAg
IDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNj
cm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdmVydGljYWwtc2Ny
b2xsYmFyLXdoZW4tZGlyLWNoYW5nZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNiBAQAorb3JpZ2luYWwgc2Nyb2xsIHkgZm9yIFJUTCBwYWdlIDogU3VjY2VzcwordmVydGlj
YWwgc2Nyb2xsIHkgZm9yIFJUTCBwYWdlIDogU3VjY2Vzcworb3JpZ2luYWwgc2Nyb2xsIHkgZm9y
IExUUiBwYWdlIDogU3VjY2VzcwordmVydGljYWwgc2Nyb2xsIHkgZm9yIExUUiBwYWdlIDogU3Vj
Y2VzcworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci13
aGVuLWRpci1jaGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS92
ZXJ0aWNhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
PgorZnVuY3Rpb24gbG9nKHN0cikKK3sKKyAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJsaSIpOworICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0
cikpOworICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUi
KTsKKyAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0RXF1
YWwobWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9IGV4cGVj
dGVkKQorICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJlLCBhY3R1YWw6ICIg
KyBhY3R1YWwgKyAiOyBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsKKyAgICBlbHNlCisgICAgICAg
IGxvZygiXG4iICsgbWVzc2FnZSArICI6IFN1Y2Nlc3MiKTsKK30KKworb25sb2FkID0gZnVuY3Rp
b24oKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgYXNzZXJ0RXF1YWwoIm9yaWdpbmFsIHNjcm9sbCB5IGZvciBSVEwgcGFnZSAiLCB3aW5kb3cu
c2Nyb2xsWSwgMCk7CisgICAgd2luZG93LnNjcm9sbFRvKDAsIC0xMDApOworICAgIGFzc2VydEVx
dWFsKCJ2ZXJ0aWNhbCBzY3JvbGwgeSBmb3IgUlRMIHBhZ2UgIiwgd2luZG93LnNjcm9sbFksIC0x
MDApOworCisgICAgZG9jdW1lbnQuYm9keS5kaXIgPSAibHRyIjsKKyAgICBhc3NlcnRFcXVhbCgi
b3JpZ2luYWwgc2Nyb2xsIHkgZm9yIExUUiBwYWdlICIsIHdpbmRvdy5zY3JvbGxZLCAwKTsKKyAg
ICB3aW5kb3cuc2Nyb2xsVG8oMCwgMTAwKTsKKyAgICBhc3NlcnRFcXVhbCgidmVydGljYWwgc2Ny
b2xsIHkgZm9yIExUUiBwYWdlICIsIHdpbmRvdy5zY3JvbGxZLCAxMDApOworCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cit9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IGRpcj0icnRsIiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1v
ZGU6dmVydGljYWwtbHIiPgorCis8ZGl2IHN0eWxlPSJoZWlnaHQ6IDQwMDBweDsgYm9yZGVyOiAx
cHggc29saWQgcmVkOyIgaWQ9ImRpdiI+CitMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29u
c2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LiBOdW5jIGV0IG5pc2wgdGVsbHVzLiBWaXZhbXVzIGFs
aXF1YW0gZWxpdCBub24gYXJjdSBzY2VsZXJpc3F1ZSBlZ2V0IGRhcGlidXMgbnVuYyB2dWxwdXRh
dGUuIE1hZWNlbmFzIHNjZWxlcmlzcXVlIGVnZXN0YXMgcHVydXMsIGlkIGJpYmVuZHVtIG1hZ25h
IHZlbmVuYXRpcyB2ZWwuIFZlc3RpYnVsdW0gYmliZW5kdW0gdm9sdXRwYXQgYWxpcXVhbS4gQ3Vt
IHNvY2lpcyBuYXRvcXVlIHBlbmF0aWJ1cyBldCBtYWduaXMgZGlzIHBhcnR1cmllbnQgbW9udGVz
LCBuYXNjZXR1ciByaWRpY3VsdXMgbXVzLiBWZXN0aWJ1bHVtIGVnZXQgcmlzdXMgc29kYWxlcyBt
aSB0cmlzdGlxdWUgZGlnbmlzc2ltIGV0IHNlZCBsZWN0dXMuIENyYXMgY29udmFsbGlzLCBuaWJo
IHV0IGRhcGlidXMgZ3JhdmlkYSwgZW5pbSBtYXVyaXMgbW9sZXN0aWUgZWxpdCwgZWdldCBmcmlu
Z2lsbGEgYXVndWUgZXN0IG5lYyBlc3QuIEN1cmFiaXR1ciBldSBxdWFtIG5vbiBwdXJ1cyBzb2Rh
bGVzIHB1bHZpbmFyLiBEb25lYyB1bHRyaWNlcyBkdWkgZWdldCBkb2xvciBsb2JvcnRpcyBpbiBw
b3J0YSBxdWFtIHJ1dHJ1bS4gTnVsbGEgcmlzdXMgbGFjdXMsIGFkaXBpc2NpbmcgcXVpcyB1bGxh
bWNvcnBlciB2ZXN0aWJ1bHVtLCBjb25kaW1lbnR1bSBzZWQgbGFjdXMuIFNlZCBpbiBudW5jIGRv
bG9yLCBxdWlzIGVnZXN0YXMgdHVycGlzLiBJbnRlZ2VyIGFyY3UgdGVsbHVzLCBwb3N1ZXJlIHNp
dCBhbWV0IHBlbGxlbnRlc3F1ZSBhLCBtb2xlc3RpZSBhdCBtaS4gTnVsbGEgYmxhbmRpdCwgbWkg
ZXQgZXVpc21vZCBpbXBlcmRpZXQsIGF1Z3VlIGFyY3Ugb3JuYXJlIGZlbGlzLCBuZWMgdml2ZXJy
YSBsYWN1cyBsaWd1bGEgdXQgbWV0dXMuIFByb2luIHV0IGxlbyBhbnRlLCBhdCBjb25zZWN0ZXR1
ciBzZW0uIE51bGxhbSBub24gbnVuYyBsaWd1bGEuIFByb2luIHNlZCBhbnRlIHNlbSwgaWQgcnV0
cnVtIHB1cnVzLgorPC9kaXY+Cis8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+Cis8YnI+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpv
bnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNzI5NTYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw5ICswLDAgQEAKLW9yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6
IFN1Y2Nlc3MKLWhvcml6b250YWwgc2Nyb2xsOiA6IFN1Y2Nlc3MKLWNvbnRpbnVvdXNseSBjYWxs
IHdpbmRvdy5zY3JvbGxYIDogU3VjY2Vzcwotem9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNjcm9s
bCBwb3NpdGlvbjogRmFpbHVyZSwgYWN0dWFsOiAtODY2OyBleHBlY3RlZDogLTEwMDAKLXJlc2l6
ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCi13aGVlbCBzY3JvbGwgcHJlc2Vy
dmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCi1LZXlEb3duIEhPTUUgbW92
ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2U6IDAKLUtleURvd24gRU5E
IG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAwCi1zZWxlY3RB
bGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQ6IFN1Y2Nlc3MKSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Rv
bS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA3Mjk1NikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9u
dGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzAsMCBAQAotb3JpZ2luYWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdlIDogU3VjY2Vz
cwotaG9yaXpvbnRhbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2UgOiBTdWNjZXNzCi1vcmlnaW5hbCBz
Y3JvbGwgeCBmb3IgTFRSIHBhZ2UgOiBGYWlsdXJlLCBhY3R1YWw6IDMxMTA7IGV4cGVjdGVkOiAw
Ci1ob3Jpem9udGFsIHNjcm9sbCB4IGZvciBMVFIgcGFnZSA6IFN1Y2Nlc3MKLQotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75306</attachid>
            <date>2010-12-01 12:35:56 -0800</date>
            <delta_ts>2010-12-01 12:42:34 -0800</delta_ts>
            <desc>Part 1: Generalize the scrollOrigin concept to work with both horizontal and vertical directions</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>43213</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzA1NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTAtMTItMDEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjY0NQorICAgICAgICAKKyAgICAg
ICAgUGFydCAxIG9mIG1ha2luZyBzY3JvbGxpbmcgd29yayB3aXRoIHZlcnRpY2FsIHRleHQuIFRo
aXMgcGF0Y2ggZ2VuZXJhbGl6ZXMgdGhlIHNjcm9sbE9yaWdpblggY29uY2VwdAorICAgICAgICBy
ZWNlbnRseSBhZGRlZCBmb3IgaG9yaXpvbnRhbCBSVEwgZG9jdW1lbnRzIGFuZCBhcHBsaWVzIGl0
IHRvIHdyaXRpbmcgbW9kZXMgYXMgd2VsbC4gIE5vdyB0aGUKKyAgICAgICAgc2Nyb2xsT3JpZ2lu
IGlzIGEgcG9pbnQsIHNpbmNlIHlvdSBjYW4gc3RhcnQgb2ZmIGxvY2tlZCB0byB0aGUgYm90dG9t
IG9yIGxvY2tlZCB0byB0aGUgcmlnaHQuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFs
c28gZml4ZXMgbnVtZXJvdXMgYnVncyB3aXRoIHRoZSBzY3JvbGxPcmlnaW4gY29kZSB1c2luZyBu
YXRpdmUgTWFjIE5TU2Nyb2xsVmlld3MgYW5kCisgICAgICAgIG1ha2VzIHRoZW0gYmVoYXZlIHRo
ZSBzYW1lIGFzIHRoZSBjcm9zcy1wbGF0Zm9ybSBjb2RlIChhbGxvd2luZyBmb3IgY3Jvc3MtcGxh
dGZvcm0gcmVzdWx0cyB0byBiZQorICAgICAgICBsYW5kZWQpLgorCisgICAgICAgICogcGFnZS9G
cmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGp1c3RWaWV3U2l6
ZSk6CisgICAgICAgICogcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6U2Ny
b2xsVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjptYXhpbXVtU2Nyb2xsUG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6bWluaW11bVNjcm9sbFBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnZhbHVlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbFZpZXc6OndoZWVsRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bFZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbE9yaWdpbik6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRS
b290Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmxheW91dCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJWaWV3Ojpkb2NUb3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6ZG9j
SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmRvY0xlZnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6ZG9jV2lkdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJWaWV3Lmg6CisKIDIwMTAtMTEtMzAgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6
IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCShyZXZpc2lvbiA3Mjk0NykKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzUsMTUgKzQzNSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6
YWRqdXN0Vmlld1NpemUoKQogICAgIGlmICghcm9vdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aW50IHByZXZTY3JvbGxPcmlnaW5YID0gc2Nyb2xsT3JpZ2luWCgpOwotICAgIFNjcm9sbFZpZXc6
OnNldFNjcm9sbE9yaWdpblgoLXJvb3QtPmxlZnRMYXlvdXRPdmVyZmxvdygpKTsKLSAgICBJbnRT
aXplIHNpemUgPSBJbnRTaXplKHJvb3QtPnJpZ2h0TGF5b3V0T3ZlcmZsb3coKSAtIHJvb3QtPmxl
ZnRMYXlvdXRPdmVyZmxvdygpLCByb290LT5ib3R0b21MYXlvdXRPdmVyZmxvdygpKTsKLSAgICAv
LyBUYWtlIGNhcmUgb2YgdGhlIGNhc2Ugd2hlbiBjb250ZW50cyByZW1haW4gYnV0IHRoZSBSZW5k
ZXJWaWV3J3MgZGlyZWN0aW9uIGhhcyBjaGFuZ2VkLgotICAgIC8vIEluIHdoaWNoIGNhc2UsIHdl
IG5lZWQgdG8gdXBkYXRlIHNjcm9sbGVyIHBvc2l0aW9uLCBmb3IgZXhhbXBsZSwgZnJvbSBsZWZ0
bW9zdCB0bwotICAgIC8vIHJpZ2h0bW9zdCB3aGVuIGRpcmVjdGlvbiBjaGFuZ2VzIGZyb20gbGVm
dC10by1yaWdodCB0byByaWdodC10by1sZWZ0LgotICAgIGJvb2wgZGlyZWN0aW9uQ2hhbmdlZCA9
ICghcHJldlNjcm9sbE9yaWdpblggfHwgIXNjcm9sbE9yaWdpblgoKSkgJiYgKHNjcm9sbE9yaWdp
blgoKSAhPSBwcmV2U2Nyb2xsT3JpZ2luWCk7Ci0gICAgaWYgKHNpemUgPT0gY29udGVudHNTaXpl
KCkgJiYgZGlyZWN0aW9uQ2hhbmdlZCkKLSAgICAgICAgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xs
YmFycygpOworICAgIEludFNpemUgc2l6ZSA9IEludFNpemUocm9vdC0+cmlnaHRMYXlvdXRPdmVy
ZmxvdygpIC0gcm9vdC0+bGVmdExheW91dE92ZXJmbG93KCksIHJvb3QtPmJvdHRvbUxheW91dE92
ZXJmbG93KCkgLSByb290LT50b3BMYXlvdXRPdmVyZmxvdygpKTsKKworICAgIFNjcm9sbFZpZXc6
OnNldFNjcm9sbE9yaWdpbihJbnRQb2ludCgtcm9vdC0+bGVmdExheW91dE92ZXJmbG93KCksIC1y
b290LT50b3BMYXlvdXRPdmVyZmxvdygpKSwgc2l6ZSA9PSBjb250ZW50c1NpemUoKSk7CisgICAg
CiAgICAgc2V0Q29udGVudHNTaXplKHNpemUpOwogfQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvbWFj
L1dlYkNvcmVGcmFtZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNv
cmVGcmFtZVZpZXcuaAkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNv
cmVGcmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAtICh2b2lkKXNldFNjcm9sbGluZ01vZGVzOihXZWJDb3JlOjpTY3JvbGxiYXJN
b2RlKWhNb2RlIHZlcnRpY2FsOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKXZNb2RlIGFuZExvY2s6
KEJPT0wpbG9jazsKIC0gKHZvaWQpc2Nyb2xsaW5nTW9kZXM6KFdlYkNvcmU6OlNjcm9sbGJhck1v
ZGUqKWhNb2RlIHZlcnRpY2FsOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKil2TW9kZTsKIC0gKHZv
aWQpc2V0U2Nyb2xsQmFyc1N1cHByZXNzZWQ6KEJPT0wpc3VwcHJlc3NlZCByZXBhaW50T25VbnN1
cHByZXNzOihCT09MKXJlcGFpbnQ7Ci0tICh2b2lkKXNldFNjcm9sbE9yaWdpblg6KGludClzY3Jv
bGxPcmlnaW5YOwotLSAoaW50KXNjcm9sbE9yaWdpblg7CistICh2b2lkKXNldFNjcm9sbE9yaWdp
bjooTlNQb2ludClvcmlnaW4gdXBkYXRlUG9zaXRpb246KEJPT0wpdXBkYXRlUG9zaXRpb247Cist
IChOU1BvaW50KXNjcm9sbE9yaWdpbjsKIEBlbmQKIAogQHByb3RvY29sIFdlYkNvcmVGcmFtZVZp
ZXcKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw2
IEBAIFNjcm9sbFZpZXc6OlNjcm9sbFZpZXcoKQogICAgICwgbV91c2VGaXhlZExheW91dChmYWxz
ZSkKICAgICAsIG1fcGFpbnRzRW50aXJlQ29udGVudHMoZmFsc2UpCiAgICAgLCBtX2RlbGVnYXRl
c1Njcm9sbGluZyhmYWxzZSkKLSAgICAsIG1fc2Nyb2xsT3JpZ2luWCgwKQogewogICAgIHBsYXRm
b3JtSW5pdCgpOwogfQpAQCAtMjc5LDE0ICsyNzgsMTQgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRD
b250ZW50c1NpemUoY29uc3QgSQogCiBJbnRQb2ludCBTY3JvbGxWaWV3OjptYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKSBjb25zdAogewotICAgIEludFBvaW50IG1heGltdW1PZmZzZXQoY29udGVudHNX
aWR0aCgpIC0gdmlzaWJsZVdpZHRoKCkgLSBtX3Njcm9sbE9yaWdpblgsIGNvbnRlbnRzSGVpZ2h0
KCkgLSB2aXNpYmxlSGVpZ2h0KCkpOworICAgIEludFBvaW50IG1heGltdW1PZmZzZXQoY29udGVu
dHNXaWR0aCgpIC0gdmlzaWJsZVdpZHRoKCkgLSBtX3Njcm9sbE9yaWdpbi54KCksIGNvbnRlbnRz
SGVpZ2h0KCkgLSB2aXNpYmxlSGVpZ2h0KCkgLSBtX3Njcm9sbE9yaWdpbi55KCkpOwogICAgIG1h
eGltdW1PZmZzZXQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwogICAgIHJldHVybiBtYXhpbXVtT2Zm
c2V0OwogfQogCiBJbnRQb2ludCBTY3JvbGxWaWV3OjptaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBj
b25zdAogewotICAgIHJldHVybiBJbnRQb2ludCgtbV9zY3JvbGxPcmlnaW5YLCAwKTsKKyAgICBy
ZXR1cm4gSW50UG9pbnQoLW1fc2Nyb2xsT3JpZ2luLngoKSwgLW1fc2Nyb2xsT3JpZ2luLnkoKSk7
CiB9CiAKIEludFBvaW50IFNjcm9sbFZpZXc6OmFkanVzdFNjcm9sbFBvc2l0aW9uV2l0aGluUmFu
Z2UoY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KSBjb25zdApAQCAtMzE2LDkgKzMxNSw5IEBA
IHZvaWQgU2Nyb2xsVmlldzo6dmFsdWVDaGFuZ2VkKFNjcm9sbGJhcioKICAgICBJbnRTaXplIG5l
d09mZnNldCA9IG1fc2Nyb2xsT2Zmc2V0OwogICAgIGlmIChzY3JvbGxiYXIpIHsKICAgICAgICAg
aWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQotICAg
ICAgICAgICAgbmV3T2Zmc2V0LnNldFdpZHRoKHNjcm9sbGJhci0+dmFsdWUoKSAtIG1fc2Nyb2xs
T3JpZ2luWCk7CisgICAgICAgICAgICBuZXdPZmZzZXQuc2V0V2lkdGgoc2Nyb2xsYmFyLT52YWx1
ZSgpIC0gbV9zY3JvbGxPcmlnaW4ueCgpKTsKICAgICAgICAgZWxzZSBpZiAoc2Nyb2xsYmFyLT5v
cmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKQotICAgICAgICAgICAgbmV3T2Zmc2V0
LnNldEhlaWdodChzY3JvbGxiYXItPnZhbHVlKCkpOworICAgICAgICAgICAgbmV3T2Zmc2V0LnNl
dEhlaWdodChzY3JvbGxiYXItPnZhbHVlKCkgLSBtX3Njcm9sbE9yaWdpbi55KCkpOwogICAgIH0K
IAogICAgIEludFNpemUgc2Nyb2xsRGVsdGEgPSBuZXdPZmZzZXQgLSBtX3Njcm9sbE9mZnNldDsK
QEAgLTUwMyw3ICs1MDIsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29u
c3QgCiAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxp
ZGF0aW9uKHRydWUpOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFN0ZXBzKFNj
cm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOwogICAgICAgICBtX2hvcml6
b250YWxTY3JvbGxiYXItPnNldFByb3BvcnRpb24oY2xpZW50V2lkdGgsIGNvbnRlbnRzV2lkdGgo
KSk7Ci0gICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0VmFsdWUoc2Nyb2xsLndpZHRo
KCkgKyBtX3Njcm9sbE9yaWdpblgsIFNjcm9sbGJhcjo6Tm90RnJvbVNjcm9sbEFuaW1hdG9yKTsK
KyAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3JvbGwud2lkdGgoKSAr
IG1fc2Nyb2xsT3JpZ2luLngoKSwgU2Nyb2xsYmFyOjpOb3RGcm9tU2Nyb2xsQW5pbWF0b3IpOwog
ICAgICAgICBpZiAobV9zY3JvbGxiYXJzU3VwcHJlc3NlZCkKICAgICAgICAgICAgIG1faG9yaXpv
bnRhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24oZmFsc2UpOyAKICAgICB9IApA
QCAtNTI1LDcgKzUyNCw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25z
dCAKICAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0
aW9uKHRydWUpOwogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRTdGVwcyhTY3JvbGxi
YXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKICAgICAgICAgbV92ZXJ0aWNhbFNj
cm9sbGJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRIZWlnaHQsIGNvbnRlbnRzSGVpZ2h0KCkpOwot
ICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3JvbGwuaGVpZ2h0KCksIFNj
cm9sbGJhcjo6Tm90RnJvbVNjcm9sbEFuaW1hdG9yKTsKKyAgICAgICAgbV92ZXJ0aWNhbFNjcm9s
bGJhci0+c2V0VmFsdWUoc2Nyb2xsLmhlaWdodCgpICsgbV9zY3JvbGxPcmlnaW4ueSgpLCBTY3Jv
bGxiYXI6Ok5vdEZyb21TY3JvbGxBbmltYXRvcik7CiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNT
dXBwcmVzc2VkKQogICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJ
bnZhbGlkYXRpb24oZmFsc2UpOwogICAgIH0KQEAgLTEwMjcsMTkgKzEwMjYsMjQgQEAgdm9pZCBT
Y3JvbGxWaWV3OjpyZW1vdmVQYW5TY3JvbGxJY29uKCkKICAgICBob3N0V2luZG93KCktPmludmFs
aWRhdGVDb250ZW50c0FuZFdpbmRvdyhJbnRSZWN0KG1fcGFuU2Nyb2xsSWNvblBvaW50LCBJbnRT
aXplKHBhbkljb25TaXplTGVuZ3RoLCBwYW5JY29uU2l6ZUxlbmd0aCkpLCB0cnVlIC8qaW1tZWRp
YXRlKi8pOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OnNldFNjcm9sbE9yaWdpblgoaW50IHgpCit2
b2lkIFNjcm9sbFZpZXc6OnNldFNjcm9sbE9yaWdpbihjb25zdCBJbnRQb2ludCYgb3JpZ2luLCBi
b29sIHVwZGF0ZVBvc2l0aW9uKQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQotICAgICAg
ICBwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgoeCk7CisgICAgICAgIHBsYXRmb3JtU2V0U2Nyb2xs
T3JpZ2luKG9yaWdpbiwgdXBkYXRlUG9zaXRpb24pOwogCi0gICAgbV9zY3JvbGxPcmlnaW5YID0g
eDsKLX0KKyAgICBJbnRQb2ludCBwcmV2U2Nyb2xsT3JpZ2luID0gbV9zY3JvbGxPcmlnaW47CiAK
LXZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycygpCi17Ci0gICAgaWYgKCFwbGF0Zm9y
bVdpZGdldCgpKQorICAgIG1fc2Nyb2xsT3JpZ2luID0gb3JpZ2luOworICAgIAorICAgIGlmIChw
bGF0Zm9ybVdpZGdldCgpIHx8ICF1cGRhdGVQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGVpdGhlciB0aGUgZGlyZWN0aW9uIG9yIHdyaXRpbmctbW9k
ZSBoYXMgY2hhbmdlZCBzdWNoIHRoYXQgb3VyIHNjcm9sbCBvcmlnaW4gaGFzIGdvbmUgZnJvbQor
ICAgIC8vIHplcm8gdG8gbm9uLXplcm8gKG9yIHZpY2UgdmVyc2EpIGluIGEgcGFydGljdWxhciBh
eGlzLiAgSWYgc28sIGp1c3QgcmVzZXQgdGhlIHNjcm9sbCBwb3NpdGlvbiB0byB0aGUgc2Nyb2xs
CisgICAgLy8gb3JpZ2luLgorICAgIGlmICgoIXByZXZTY3JvbGxPcmlnaW4ueCgpICYmIG1fc2Ny
b2xsT3JpZ2luLngoKSkgfHwgKCFtX3Njcm9sbE9yaWdpbi54KCkgJiYgcHJldlNjcm9sbE9yaWdp
bi54KCkpIHx8CisgICAgICAgICghcHJldlNjcm9sbE9yaWdpbi55KCkgJiYgbV9zY3JvbGxPcmln
aW4ueSgpKSB8fCAoIW1fc2Nyb2xsT3JpZ2luLnkoKSAmJiBwcmV2U2Nyb2xsT3JpZ2luLnkoKSkp
CiAgICAgICAgIHVwZGF0ZVNjcm9sbGJhcnMoc2Nyb2xsT2Zmc2V0KCkpOwotICAgIC8vIEZJWE1F
OiBuZWVkIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25hbGl0eSBmcm9tIHBsYXRmb3JtV2lkZ2V0Lgog
fQogCiAjaWYgIVBMQVRGT1JNKFdYKSAmJiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oRUZM
KQpAQCAtMTA3Miw3ICsxMDc2LDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9s
bGJhcnNTdQogewogfQogCi12b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2lu
WChpbnQpCit2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luKGNvbnN0IElu
dFBvaW50JiwgYm9vbCB1cGRhdGVQb3NpdGlvbikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmgJKHJldmlzaW9uIDcyOTQ3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBz
Y3JvbGxPZmZzZXQoKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlv
bigpIC0gSW50UG9pbnQoKTsgfSAvLyBHZXRzIHRoZSBzY3JvbGxlZCBwb3NpdGlvbiBhcyBhbiBJ
bnRTaXplLiBDb252ZW5pZW50IGZvciBhZGRpbmcgdG8gb3RoZXIgc2l6ZXMuCiAgICAgSW50UG9p
bnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7IC8vIFRoZSBtYXhpbXVtIHBvc2l0aW9u
IHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KICAgICBJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRp
b24oKSBjb25zdDsgLy8gVGhlIG1pbmltdW0gcG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRv
LgotICAgIC8vIEFkanVzdCB0aGUgcGFzcyBpbiBzY3JvbGwgcG9zaXRpb24gd2l0aGluIHRoZSBt
aW5pbXVtIGFuZCBtYXhpbXVtIHBvc2l0aW9ucy4KKyAgICAvLyBBZGp1c3QgdGhlIHBhc3NlZCBp
biBzY3JvbGwgcG9zaXRpb24gdG8ga2VlcCBpdCBiZXR3ZWVuIHRoZSBtaW5pbXVtIGFuZCBtYXhp
bXVtIHBvc2l0aW9ucy4KICAgICBJbnRQb2ludCBhZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJh
bmdlKGNvbnN0IEludFBvaW50JikgY29uc3Q7IAogICAgIGludCBzY3JvbGxYKCkgY29uc3QgeyBy
ZXR1cm4gc2Nyb2xsUG9zaXRpb24oKS54KCk7IH0KICAgICBpbnQgc2Nyb2xsWSgpIGNvbnN0IHsg
cmV0dXJuIHNjcm9sbFBvc2l0aW9uKCkueSgpOyB9CkBAIC0yODIsOSArMjgyLDggQEAgcHJvdGVj
dGVkOgogICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBieSBpbnZhbGlkYXRpbmcgZXZlcnl0aGlu
Zy4KICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJbnRSZWN0
JiB1cGRhdGVSZWN0KTsKIAotICAgIHZvaWQgc2V0U2Nyb2xsT3JpZ2luWChpbnQpOwotICAgIGlu
dCBzY3JvbGxPcmlnaW5YKCkgeyByZXR1cm4gbV9zY3JvbGxPcmlnaW5YOyB9Ci0gICAgdm9pZCB1
cGRhdGVTY3JvbGxiYXJzKCk7CisgICAgdm9pZCBzZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9p
bnQmLCBib29sIHVwZGF0ZVBvc2l0aW9uKTsKKyAgICBJbnRQb2ludCBzY3JvbGxPcmlnaW4oKSB7
IHJldHVybiBtX3Njcm9sbE9yaWdpbjsgfQogCiBwcml2YXRlOgogICAgIFJlZlB0cjxTY3JvbGxi
YXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKQEAgLTMyMSwxMCArMzIwLDE4IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3BhaW50c0VudGlyZUNvbnRlbnRzOwogICAgIGJvb2wgbV9kZWxlZ2F0ZXNT
Y3JvbGxpbmc7CiAKLSAgICAvLyBtX3Njcm9sbE9yaWdpblggaXMgMCBmb3IgTFRSIHBhZ2UuIEFu
ZCBpdCBpcyBuZWdhdGl2ZSBvZiBsZWZ0IGxheW91dAotICAgIC8vIG92ZXJmbG93IGZvciBSVEwg
cGFnZS4gSXQgaXMgbWFpbmx5IHVzZWQgdG8gc2V0IHRoZSBob3Jpem9udGFsIHNjcm9sbGJhcgot
ICAgIC8vIHBvc2l0aW9uIGZvciBSVEwgcGFnZS4KLSAgICBpbnQgbV9zY3JvbGxPcmlnaW5YOwor
ICAgIC8vIFRoZXJlIGFyZSA4IHBvc3NpYmxlIGNvbWJpbmF0aW9ucyBvZiB3cml0aW5nIG1vZGUg
YW5kIGRpcmVjdGlvbi4gIFNjcm9sbCBvcmlnaW4gd2lsbCBiZSBub24temVybyBpbiB0aGUgeCBv
ciB5IGF4aXMKKyAgICAvLyBpZiB0aGVyZSBpcyBhbnkgcmV2ZXJzZWQgZGlyZWN0aW9uIG9yIHdy
aXRpbmctbW9kZS4gIFRoZSBjb21iaW5hdGlvbnMgYXJlOgorICAgIC8vIHdyaXRpbmctbW9kZSAv
IGRpcmVjdGlvbiAgICAgc2Nyb2xsT3JpZ2luLngoKSBzZXQgICAgc2Nyb2xsT3JpZ2luLnkoKSBz
ZXQKKyAgICAvLyBob3Jpem9udGFsLXRiIC8gbHRyICAgICAgICAgIE5PICAgICAgICAgICAgICAg
ICAgICAgIE5PCisgICAgLy8gaG9yaXpvbnRhbC10YiAvIHJ0bCAgICAgICAgICBZRVMgICAgICAg
ICAgICAgICAgICAgICBOTworICAgIC8vIGhvcml6b250YWwtYnQgLyBsdHIgICAgICAgICAgTk8g
ICAgICAgICAgICAgICAgICAgICAgWUVTCisgICAgLy8gaG9yaXpvbnRhbC1idCAvIHJ0bCAgICAg
ICAgICBZRVMgICAgICAgICAgICAgICAgICAgICBZRVMKKyAgICAvLyB2ZXJ0aWNhbC1sciAvIGx0
ciAgICAgICAgICAgIE5PICAgICAgICAgICAgICAgICAgICAgIE5PCisgICAgLy8gdmVydGljYWwt
bHIgLyBydGwgICAgICAgICAgICBOTyAgICAgICAgICAgICAgICAgICAgICBZRVMKKyAgICAvLyB2
ZXJ0aWNhbC1ybCAvIGx0ciAgICAgICAgICAgIFlFUyAgICAgICAgICAgICAgICAgICAgIE5PCisg
ICAgLy8gdmVydGljYWwtcmwgLyBydGwgICAgICAgICAgICBZRVMgICAgICAgICAgICAgICAgICAg
ICBZRVMKKyAgICBJbnRQb2ludCBtX3Njcm9sbE9yaWdpbjsKIAogICAgIHZvaWQgaW5pdCgpOwog
ICAgIHZvaWQgZGVzdHJveSgpOwpAQCAtMzU0LDcgKzM2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwbGF0Zm9ybVJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKGNvbnN0IEludFJlY3QmLCBib29sIG5v
dyk7CiAgICAgYm9vbCBwbGF0Zm9ybUlzT2Zmc2NyZWVuKCkgY29uc3Q7CiAgICAKLSAgICB2b2lk
IHBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luWChpbnQpOworICAgIHZvaWQgcGxhdGZvcm1TZXRTY3Jv
bGxPcmlnaW4oY29uc3QgSW50UG9pbnQmLCBib29sIHVwZGF0ZVBvc2l0aW9uKTsKIAogI2lmIFBM
QVRGT1JNKE1BQykgJiYgZGVmaW5lZCBfX09CSkNfXwogcHVibGljOgpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tCShyZXZpc2lvbiA3Mjk0NykKKysrIFdlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcs
OCBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsYmFyc1N1CiB2b2lkIFNjcm9s
bFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBv
aW50KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBOU1BvaW50IHRl
bXBQb2ludCA9IHsgbWF4KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9yaWdpblhdLCBzY3JvbGxQb2lu
dC54KCkpLCBtYXgoMCwgc2Nyb2xsUG9pbnQueSgpKSB9OyAgLy8gRG9uJ3QgdXNlIE5TTWFrZVBv
aW50IHRvIHdvcmsgYXJvdW5kIDQyMTMzMTQuCisgICAgTlNQb2ludCBmbG9hdFBvaW50ID0gc2Ny
b2xsUG9pbnQ7CisgICAgTlNQb2ludCB0ZW1wUG9pbnQgPSB7IG1heCgtW3Njcm9sbFZpZXcoKSBz
Y3JvbGxPcmlnaW5dLngsIGZsb2F0UG9pbnQueCksIG1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxP
cmlnaW5dLnksIGZsb2F0UG9pbnQueSkgfTsgIC8vIERvbid0IHVzZSBOU01ha2VQb2ludCB0byB3
b3JrIGFyb3VuZCA0MjEzMzE0LgogICAgIFtkb2N1bWVudFZpZXcoKSBzY3JvbGxQb2ludDp0ZW1w
UG9pbnRdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CkBAIC0yMDIsMTAgKzIw
MywxMCBAQCBib29sIFNjcm9sbFZpZXc6OnBsYXRmb3JtSXNPZmZzY3JlZW4oKSBjCiAgICAgcmV0
dXJuICFbcGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIHx8ICFbW3BsYXRmb3JtV2lkZ2V0KCkgd2lu
ZG93XSBpc1Zpc2libGVdOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xs
T3JpZ2luWChpbnQgeCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxPcmlnaW4o
Y29uc3QgSW50UG9pbnQmIG9yaWdpbiwgYm9vbCB1cGRhdGVQb3NpdGlvbikKIHsKICAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgW3Njcm9sbFZpZXcoKSBzZXRTY3JvbGxPcmln
aW5YOnhdOworICAgIFtzY3JvbGxWaWV3KCkgc2V0U2Nyb2xsT3JpZ2luOm9yaWdpbiB1cGRhdGVQ
b3NpdGlvbjp1cGRhdGVQb3NpdGlvbl07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
IH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiA3Mjk0NykKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3Myw3ICs3
NzMsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRSb290Qm94RGVjb3JhdGlvbnMoCiAgICAgLy8g
VGhlIGJhY2tncm91bmQgb2YgdGhlIGJveCBnZW5lcmF0ZWQgYnkgdGhlIHJvb3QgZWxlbWVudCBj
b3ZlcnMgdGhlIGVudGlyZSBjYW52YXMgaW5jbHVkaW5nCiAgICAgLy8gaXRzIG1hcmdpbnMuCiAg
ICAgaW50IGJ4ID0gdHggLSBtYXJnaW5MZWZ0KCkgKyB2aWV3KCktPmxlZnRMYXlvdXRPdmVyZmxv
dygpOwotICAgIGludCBieSA9IHR5IC0gbWFyZ2luVG9wKCk7CisgICAgaW50IGJ5ID0gdHkgLSBt
YXJnaW5Ub3AoKSArIHZpZXcoKS0+dG9wTGF5b3V0T3ZlcmZsb3coKTsKICAgICBpbnQgYncgPSBt
YXgodyArIG1hcmdpbkxlZnQoKSArIG1hcmdpblJpZ2h0KCkgKyBib3JkZXJMZWZ0KCkgKyBib3Jk
ZXJSaWdodCgpLCBydyk7CiAgICAgaW50IGJoID0gbWF4KGggKyBtYXJnaW5Ub3AoKSArIG1hcmdp
bkJvdHRvbSgpICsgYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSwgcmgpOwogCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcAkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw4IEBAIHZv
aWQgUmVuZGVyVmlldzo6bGF5b3V0KCkKICAgICAvLyBSZXNldCBvdmVyZmxvdyBhbmQgdGhlbiBy
ZXBsYWNlIGl0IHdpdGggZG9jV2lkdGggYW5kIGRvY0hlaWdodC4KICAgICBtX292ZXJmbG93LmNs
ZWFyKCk7CiAgICAgaW50IGxlZnRPdmVyZmxvdyA9IGRvY0xlZnQoKTsKLSAgICBhZGRMYXlvdXRP
dmVyZmxvdyhJbnRSZWN0KGxlZnRPdmVyZmxvdywgMCwgZG9jV2lkdGgobGVmdE92ZXJmbG93KSwg
ZG9jSGVpZ2h0KCkpKTsKKyAgICBpbnQgdG9wT3ZlcmZsb3cgPSBkb2NUb3AoKTsKKyAgICBhZGRM
YXlvdXRPdmVyZmxvdyhJbnRSZWN0KGxlZnRPdmVyZmxvdywgdG9wT3ZlcmZsb3csIGRvY1dpZHRo
KGxlZnRPdmVyZmxvdyksIGRvY0hlaWdodCh0b3BPdmVyZmxvdykpKTsKIAogICAgIEFTU0VSVChs
YXlvdXREZWx0YSgpID09IEludFNpemUoKSk7CiAgICAgQVNTRVJUKG1fbGF5b3V0U3RhdGVEaXNh
YmxlQ291bnQgPT0gMCk7CkBAIC02MTcsOSArNjE4LDE4IEBAIEludFJlY3QgUmVuZGVyVmlldzo6
dmlld1JlY3QoKSBjb25zdAogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAKLWludCBSZW5kZXJW
aWV3Ojpkb2NIZWlnaHQoKSBjb25zdAoraW50IFJlbmRlclZpZXc6OmRvY1RvcCgpIGNvbnN0CiB7
Ci0gICAgaW50IGggPSBsb3dlc3RQb3NpdGlvbigpOworICAgIC8vIENsaXAgb3V0IHRvcCBvdmVy
ZmxvdyBpbiB2ZXJ0aWNhbCBMVFIgcGFnZXMgb3IgaG9yaXpvbnRhbC10YiBwYWdlcy4KKyAgICBp
ZiAoKCFzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpICYmIHN0eWxlKCktPmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSkgfHwgc3R5bGUoKS0+d3JpdGluZ01vZGUoKSA9PSBUb3BUb0Jv
dHRvbVdyaXRpbmdNb2RlKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gc3RkOjptaW4o
MCwgdG9wbW9zdFBvc2l0aW9uKCkpOworfQorCitpbnQgUmVuZGVyVmlldzo6ZG9jSGVpZ2h0KGlu
dCB0b3BPdmVyZmxvdykgY29uc3QKK3sKKyAgICBpbnQgaCA9ICgoIXN0eWxlKCktPmlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkgJiYgc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB8
fCBzdHlsZSgpLT53cml0aW5nTW9kZSgpID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUpID8KKyAg
ICAgICAgICAgICAgICBsb3dlc3RQb3NpdGlvbigpIDogaGVpZ2h0KCkgLSB0b3BPdmVyZmxvdzsK
IAogICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgZG8gYW55IG1hcmdpbiBjb2xsYXBzaW5nLgog
ICAgIC8vIEluc3RlYWQgb2YgdGhpcyBkaCBjb21wdXRhdGlvbiB3ZSBzaG91bGQga2VlcCB0aGUg
cmVzdWx0CkBAIC02MzYsMTMgKzY0NiwxNiBAQCBpbnQgUmVuZGVyVmlldzo6ZG9jSGVpZ2h0KCkg
Y29uc3QKIAogaW50IFJlbmRlclZpZXc6OmRvY0xlZnQoKSBjb25zdAogewotICAgIC8vIENsaXAg
b3V0IGxlZnQgb3ZlcmZsb3cgaW4gTFRSIHBhZ2UuCi0gICAgcmV0dXJuIHN0eWxlKCktPmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSA/IDAgOiBzdGQ6Om1pbigwLCBsZWZ0bW9zdFBvc2l0aW9uKCkp
OworICAgIC8vIENsaXAgb3V0IGxlZnQgb3ZlcmZsb3cgaW4gaG9yaXpvbnRhbCBMVFIgcGFnZXMg
b3IgdmVydGljYWwtbHIgcGFnZXMuCisgICAgaWYgKChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0
aW5nTW9kZSgpICYmIHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgfHwgc3R5bGUo
KS0+d3JpdGluZ01vZGUoKSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gc3RkOjptaW4oMCwgbGVmdG1vc3RQb3NpdGlvbigpKTsKIH0KIAog
aW50IFJlbmRlclZpZXc6OmRvY1dpZHRoKGludCBsZWZ0T3ZlcmZsb3cpIGNvbnN0CiB7Ci0gICAg
aW50IHcgPSBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyByaWdodG1vc3RQb3Np
dGlvbigpIDogd2lkdGgoKSAtIGxlZnRPdmVyZmxvdzsKKyAgICBpbnQgdyA9ICgoc3R5bGUoKS0+
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAmJiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkpIHx8IHN0eWxlKCktPndyaXRpbmdNb2RlKCkgPT0gTGVmdFRvUmlnaHRXcml0aW5nTW9k
ZSkgPyAKKyAgICAgICAgICAgICAgICByaWdodG1vc3RQb3NpdGlvbigpIDogd2lkdGgoKSAtIGxl
ZnRPdmVyZmxvdzsKIAogICAgIGZvciAoUmVuZGVyQm94KiBjID0gZmlyc3RDaGlsZEJveCgpOyBj
OyBjID0gYy0+bmV4dFNpYmxpbmdCb3goKSkgewogICAgICAgICBpbnQgZHcgPSBjLT53aWR0aCgp
ICsgYy0+bWFyZ2luTGVmdCgpICsgYy0+bWFyZ2luUmlnaHQoKTsKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmgJKHJldmlzaW9uIDcyOTQ3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsOCArMTcyLDkgQEAgcHJvdGVjdGVkOgogCiBwcml2
YXRlOgogICAgIGJvb2wgc2hvdWxkUmVwYWludChjb25zdCBJbnRSZWN0JiByKSBjb25zdDsKLSAg
ICAgICAgCi0gICAgaW50IGRvY0hlaWdodCgpIGNvbnN0OworICAgIAorICAgIGludCBkb2NUb3Ao
KSBjb25zdDsKKyAgICBpbnQgZG9jSGVpZ2h0KGludCB0b3BPdmVyZmxvdykgY29uc3Q7CiAgICAg
aW50IGRvY0xlZnQoKSBjb25zdDsKICAgICBpbnQgZG9jV2lkdGgoaW50IGxlZnRPdmVyZmxvdykg
Y29uc3Q7CiAKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzA1NykKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMTItMDEgIERhdmlkIEh5YXR0
ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjY0
NQorICAgICAgICAKKyAgICAgICAgUGFydCAxIG9mIG1ha2luZyBzY3JvbGxpbmcgd29yayB3aXRo
IHZlcnRpY2FsIHRleHQuIFRoaXMgcGF0Y2ggZ2VuZXJhbGl6ZXMgdGhlIHNjcm9sbE9yaWdpblgg
Y29uY2VwdAorICAgICAgICByZWNlbnRseSBhZGRlZCBmb3IgaG9yaXpvbnRhbCBSVEwgZG9jdW1l
bnRzIGFuZCBhcHBsaWVzIGl0IHRvIHdyaXRpbmcgbW9kZXMgYXMgd2VsbC4gIE5vdyB0aGUKKyAg
ICAgICAgc2Nyb2xsT3JpZ2luIGlzIGEgcG9pbnQsIHNpbmNlIHlvdSBjYW4gc3RhcnQgb2ZmIGxv
Y2tlZCB0byB0aGUgYm90dG9tIG9yIGxvY2tlZCB0byB0aGUgcmlnaHQuCisgICAgICAgIAorICAg
ICAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMgbnVtZXJvdXMgYnVncyB3aXRoIHRoZSBzY3JvbGxP
cmlnaW4gY29kZSB1c2luZyBuYXRpdmUgTWFjIE5TU2Nyb2xsVmlld3MgYW5kCisgICAgICAgIG1h
a2VzIHRoZW0gYmVoYXZlIHRoZSBzYW1lIGFzIHRoZSBjcm9zcy1wbGF0Zm9ybSBjb2RlIChhbGxv
d2luZyBmb3IgY3Jvc3MtcGxhdGZvcm0gcmVzdWx0cyB0byBiZQorICAgICAgICBsYW5kZWQpLgor
CisgICAgICAgICogV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubW06CisgICAgICAg
ICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyBhZGp1c3RGb3JTY3JvbGxPcmlnaW5DaGFuZ2Vd
KToKKyAgICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHVwZGF0ZVNjcm9sbGVyc10p
OgorICAgICAgICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgcmVmbGVjdFNjcm9sbGVkQ2xp
cFZpZXc6XSk6CisgICAgICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyBzZXRTY3JvbGxP
cmlnaW46dXBkYXRlUG9zaXRpb246XSk6CisgICAgICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJz
VmlldyBzY3JvbGxPcmlnaW5dKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lVmlldy5tbToK
KyAgICAgICAgKC1bV2ViRnJhbWVWaWV3IF9zY3JvbGxUb0JlZ2lubmluZ09mRG9jdW1lbnRdKToK
KyAgICAgICAgKC1bV2ViRnJhbWVWaWV3IF9zY3JvbGxUb0VuZE9mRG9jdW1lbnRdKToKKwogMjAx
MC0xMS0yOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNT
Y3JvbGxCYXJzVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHlu
YW1pY1Njcm9sbEJhcnNWaWV3Lm1tCShyZXZpc2lvbiA3Mjk0NykKKysrIFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTYzLDEy
ICs2MywxNCBAQCBzdHJ1Y3QgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3UHJpdmF0ZSB7CiAgICAg
Ym9vbCBob3Jpem9udGFsU2Nyb2xsaW5nQWxsb3dlZEJ1dFNjcm9sbGVySGlkZGVuOwogICAgIGJv
b2wgdmVydGljYWxTY3JvbGxpbmdBbGxvd2VkQnV0U2Nyb2xsZXJIaWRkZW47CiAKLSAgICAvLyBz
Y3JvbGxPcmlnaW5YIGlzIDAgZm9yIExUUiBwYWdlIGFuZCBpcyB0aGUgbmVnYXRpdmUgb2YgbGVm
dCBsYXlvdXQgb3ZlcmZsb3cgdmFsdWUgZm9yIFJUTCBwYWdlLgotICAgIGludCBzY3JvbGxPcmln
aW5YOworICAgIC8vIHNjcm9sbE9yaWdpbiBpcyBzZXQgZm9yIHZhcmlvdXMgY29tYmluYXRpb25z
IG9mIHdyaXRpbmcgbW9kZSBhbmQgZGlyZWN0aW9uLiAgU2VlIHRoZSBjb21tZW50IG5leHQgdG8g
dGhlCisgICAgLy8gY29ycmVzcG9uZGluZyBtZW1iZXIgaW4gU2Nyb2xsVmlldy5oLgorICAgIE5T
UG9pbnQgc2Nyb2xsT3JpZ2luOwogCiAgICAgLy8gRmxhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBz
Y3JvbGxiYXIgdGh1bWIncyBpbml0aWFsIHBvc2l0aW9uIG5lZWRzIHRvCiAgICAgLy8gYmUgbWFu
dWFsbHkgc2V0LgotICAgIGJvb2wgc2V0U2Nyb2xsYmFyVGh1bWJJbml0aWFsUG9zaXRpb247Cisg
ICAgYm9vbCBzY3JvbGxPcmlnaW5DaGFuZ2VkOworICAgIE5TUG9pbnQgc2Nyb2xsUG9zaXRpb25F
eGNsdWRpbmdPcmlnaW47CiAKICAgICBib29sIGluUHJvZ3JhbW1hdGljU2Nyb2xsOwogfTsKQEAg
LTIxNSwyNyArMjE3LDI3IEBAIC0gKHZvaWQpc2V0U2Nyb2xsQmFyc1N1cHByZXNzZWQ6KEJPT0wp
c3UKICNlbmRpZgogfQogCi0tICh2b2lkKXJlZnJlc2hJbml0aWFsU2Nyb2xsYmFyUG9zaXRpb24K
Ky0gKHZvaWQpYWRqdXN0Rm9yU2Nyb2xsT3JpZ2luQ2hhbmdlCiB7Ci0gICAgaWYgKF9wcml2YXRl
LT5zZXRTY3JvbGxiYXJUaHVtYkluaXRpYWxQb3NpdGlvbikgewotICAgICAgICBOU1ZpZXcgKmRv
Y3VtZW50VmlldyA9IFtzZWxmIGRvY3VtZW50Vmlld107Ci0gICAgICAgIE5TUmVjdCBkb2N1bWVu
dFJlY3QgPSBbZG9jdW1lbnRWaWV3IGJvdW5kc107CisgICAgaWYgKCFfcHJpdmF0ZS0+c2Nyb2xs
T3JpZ2luQ2hhbmdlZCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIC8vIElmIHNjcm9sbE9y
aWdpblggaXMgbm9uLXplcm8gdGhhdCBtZWFucyB0aGF0IHRoZXJlJ3MgYSBsZWZ0IG92ZXJmbG93
IDw9PiB0aGlzIGlzIGFuIFJUTCBkb2N1bWVudCBhbmQgdGh1cwotICAgICAgICAvLyB0aGUgaW5p
dGlhbCBwb3NpdGlvbiBvZiB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIgdGh1bWIgc2hvdWxkIGJl
IG9uIHRoZSByaWdodC4KLSAgICAgICAgLy8gRklYTUU6IElmIGtub3dsZWRnZSBvZiBkb2N1bWVu
dCBkaXJlY3Rpb25hbGl0eSBpcyBldmVyIHByb3BhZ2F0ZWQgdG8gdGhlIHNjcm9sbCB2aWV3LCBp
dCBwcm9iYWJseSBtYWtlcwotICAgICAgICAvLyBtb3JlIHNlbnNlIHRvIHVzZSB0aGUgZGlyZWN0
aW9uYWxpdHkgZGlyZWN0bHkgaW4gdGhlIGJlbG93IGlmIHN0YXRlbWVudCwgcmF0aGVyIHRoYW4g
ZG9pbmcgc28gaW5kaXJlY3RseQotICAgICAgICAvLyB0aHJvdWdoIHNjcm9sbE9yaWdpblguCi0g
ICAgICAgIGlmIChfcHJpdmF0ZS0+c2Nyb2xsT3JpZ2luWCAhPSAwKSB7Ci0gICAgICAgICAgICAv
LyBUaGUgY2FsbCB0byBbTlNWaWV3IHNjcm9sbFBvaW50Ol0gZmlyZXMgb2ZmIG5vdGlmaWNhdGlv
biB0aGUgaGFuZGxlciBmb3Igd2hpY2ggbmVlZHMgdG8ga25vdyB0aGF0Ci0gICAgICAgICAgICAv
LyB3ZSdyZSBzZXR0aW5nIHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiBzbyBpdCBkb2Vzbid0
IGludGVycHJldCB0aGlzIGFzIGEgdXNlciBhY3Rpb24gYW5kCi0gICAgICAgICAgICAvLyBmaXJl
IG9mZiBhIEpTIGV2ZW50LgotICAgICAgICAgICAgX3ByaXZhdGUtPmluUHJvZ3JhbW1hdGljU2Ny
b2xsID0gdHJ1ZTsKLSAgICAgICAgICAgIFtkb2N1bWVudFZpZXcgc2Nyb2xsUG9pbnQ6TlNNYWtl
UG9pbnQoTlNNYXhYKGRvY3VtZW50UmVjdCkgLSBOU1dpZHRoKFtzZWxmIGNvbnRlbnRWaWV3RnJh
bWVdKSwgMCldOwotICAgICAgICAgICAgX3ByaXZhdGUtPmluUHJvZ3JhbW1hdGljU2Nyb2xsID0g
ZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgX3ByaXZhdGUtPnNldFNjcm9sbGJhclRodW1iSW5p
dGlhbFBvc2l0aW9uID0gZmFsc2U7Ci0gICAgfQorICAgIF9wcml2YXRlLT5zY3JvbGxPcmlnaW5D
aGFuZ2VkID0gZmFsc2U7CisKKyAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtzZWxmIGRvY3Vt
ZW50Vmlld107CisgICAgTlNSZWN0IGRvY3VtZW50UmVjdCA9IFtkb2N1bWVudFZpZXcgYm91bmRz
XTsKKworICAgIC8vIElmIHNjcm9sbE9yaWdpblggaXMgbm9uLXplcm8gdGhhdCBtZWFucyB0aGF0
IHRoZXJlJ3MgYSBsZWZ0IG92ZXJmbG93IDw9PiB0aGlzIGlzIGFuIFJUTCBkb2N1bWVudCBhbmQg
dGh1cworICAgIC8vIHRoZSBpbml0aWFsIHBvc2l0aW9uIG9mIHRoZSBob3Jpem9udGFsIHNjcm9s
bGJhciB0aHVtYiBzaG91bGQgYmUgb24gdGhlIHJpZ2h0LgorICAgIC8vIEZJWE1FOiBJZiBrbm93
bGVkZ2Ugb2YgZG9jdW1lbnQgZGlyZWN0aW9uYWxpdHkgaXMgZXZlciBwcm9wYWdhdGVkIHRvIHRo
ZSBzY3JvbGwgdmlldywgaXQgcHJvYmFibHkgbWFrZXMKKyAgICAvLyBtb3JlIHNlbnNlIHRvIHVz
ZSB0aGUgZGlyZWN0aW9uYWxpdHkgZGlyZWN0bHkgaW4gdGhlIGJlbG93IGlmIHN0YXRlbWVudCwg
cmF0aGVyIHRoYW4gZG9pbmcgc28gaW5kaXJlY3RseQorICAgIC8vIHRocm91Z2ggc2Nyb2xsT3Jp
Z2luWC4KKyAgICAvLyBUaGUgY2FsbCB0byBbTlNWaWV3IHNjcm9sbFBvaW50Ol0gZmlyZXMgb2Zm
IG5vdGlmaWNhdGlvbiB0aGUgaGFuZGxlciBmb3Igd2hpY2ggbmVlZHMgdG8ga25vdyB0aGF0Cisg
ICAgLy8gd2UncmUgc2V0dGluZyB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24gc28gaXQgZG9l
c24ndCBpbnRlcnByZXQgdGhpcyBhcyBhIHVzZXIgYWN0aW9uIGFuZAorICAgIC8vIGZpcmUgb2Zm
IGEgSlMgZXZlbnQuCisgICAgX3ByaXZhdGUtPmluUHJvZ3JhbW1hdGljU2Nyb2xsID0gdHJ1ZTsK
KyAgICBbZG9jdW1lbnRWaWV3IHNjcm9sbFBvaW50Ok5TTWFrZVBvaW50KF9wcml2YXRlLT5zY3Jv
bGxQb3NpdGlvbkV4Y2x1ZGluZ09yaWdpbi54ICsgZG9jdW1lbnRSZWN0Lm9yaWdpbi54LCBfcHJp
dmF0ZS0+c2Nyb2xsUG9zaXRpb25FeGNsdWRpbmdPcmlnaW4ueSArIGRvY3VtZW50UmVjdC5vcmln
aW4ueSldOworICAgIF9wcml2YXRlLT5pblByb2dyYW1tYXRpY1Njcm9sbCA9IGZhbHNlOwogfQog
CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY01heFVwZGF0ZVNjcm9sbGJhcnNQYXNzID0gMjsKQEAg
LTMzOSwxNCArMzQxLDEyIEBAIC0gKHZvaWQpdXBkYXRlU2Nyb2xsZXJzCiAgICAgaWYgKGhhc0hv
cml6b250YWxTY3JvbGxlciAhPSBuZXdIYXNIb3Jpem9udGFsU2Nyb2xsZXIpIHsKICAgICAgICAg
X3ByaXZhdGUtPmluVXBkYXRlU2Nyb2xsZXJzID0gWUVTOwogICAgICAgICBbc2VsZiBzZXRIYXNI
b3Jpem9udGFsU2Nyb2xsZXI6bmV3SGFzSG9yaXpvbnRhbFNjcm9sbGVyXTsKLSAgICAgICAgCi0g
ICAgICAgIC8vIEZvciBSVEwgZG9jdW1lbnRzLCB3ZSBuZWVkIHRvIHNldCB0aGUgaW5pdGlhbCBw
b3NpdGlvbiBvZiB0aGUKLSAgICAgICAgLy8gaG9yaXpvbnRhbCBzY3JvbGxiYXIgdGh1bWIgdG8g
YmUgb24gdGhlIHJpZ2h0LgotICAgICAgICBpZiAobmV3SGFzSG9yaXpvbnRhbFNjcm9sbGVyKQot
ICAgICAgICAgICAgX3ByaXZhdGUtPnNldFNjcm9sbGJhclRodW1iSW5pdGlhbFBvc2l0aW9uID0g
dHJ1ZTsKLSAgICAgICAgCiAgICAgICAgIF9wcml2YXRlLT5pblVwZGF0ZVNjcm9sbGVycyA9IE5P
OwogICAgICAgICBuZWVkc0xheW91dCA9IFlFUzsKKyAgICAgICAgTlNWaWV3ICpkb2N1bWVudFZp
ZXcgPSBbc2VsZiBkb2N1bWVudFZpZXddOworICAgICAgICBOU1JlY3QgZG9jdW1lbnRSZWN0ID0g
W2RvY3VtZW50VmlldyBib3VuZHNdOworICAgICAgICBpZiAoZG9jdW1lbnRSZWN0Lm9yaWdpbi55
IDwgMCAmJiAhbmV3SGFzSG9yaXpvbnRhbFNjcm9sbGVyKQorICAgICAgICAgICAgW2RvY3VtZW50
VmlldyBzZXRCb3VuZHNPcmlnaW46TlNNYWtlUG9pbnQoZG9jdW1lbnRSZWN0Lm9yaWdpbi54LCBk
b2N1bWVudFJlY3Qub3JpZ2luLnkgKz0gMTUpXTsKICAgICB9CiAKICAgICBpZiAoaGFzVmVydGlj
YWxTY3JvbGxlciAhPSBuZXdIYXNWZXJ0aWNhbFNjcm9sbGVyKSB7CkBAIC0zNTQsNiArMzU0LDEw
IEBAIC0gKHZvaWQpdXBkYXRlU2Nyb2xsZXJzCiAgICAgICAgIFtzZWxmIHNldEhhc1ZlcnRpY2Fs
U2Nyb2xsZXI6bmV3SGFzVmVydGljYWxTY3JvbGxlcl07CiAgICAgICAgIF9wcml2YXRlLT5pblVw
ZGF0ZVNjcm9sbGVycyA9IE5POwogICAgICAgICBuZWVkc0xheW91dCA9IFlFUzsKKyAgICAgICAg
TlNWaWV3ICpkb2N1bWVudFZpZXcgPSBbc2VsZiBkb2N1bWVudFZpZXddOworICAgICAgICBOU1Jl
Y3QgZG9jdW1lbnRSZWN0ID0gW2RvY3VtZW50VmlldyBib3VuZHNdOworICAgICAgICBpZiAoZG9j
dW1lbnRSZWN0Lm9yaWdpbi54IDwgMCAmJiAhbmV3SGFzVmVydGljYWxTY3JvbGxlcikKKyAgICAg
ICAgICAgIFtkb2N1bWVudFZpZXcgc2V0Qm91bmRzT3JpZ2luOk5TTWFrZVBvaW50KGRvY3VtZW50
UmVjdC5vcmlnaW4ueCArPSAxNSwgZG9jdW1lbnRSZWN0Lm9yaWdpbi55KV07CiAgICAgfQogCiAg
ICAgaWYgKG5lZWRzTGF5b3V0ICYmIF9wcml2YXRlLT5pblVwZGF0ZVNjcm9sbGVyc0xheW91dFBh
c3MgPCBjTWF4VXBkYXRlU2Nyb2xsYmFyc1Bhc3MgJiYKQEAgLTQxMCw3ICs0MTQsNyBAQCAtICh2
b2lkKXJlZmxlY3RTY3JvbGxlZENsaXBWaWV3OihOU0NsaXBWCiAgICAgLy8gVGhlIGNhbGwgdG8g
W05TVmlldyByZWZsZWN0U2Nyb2xsZWRDbGlwVmlld10gc2V0cyB0aGUgc2Nyb2xsYmFyIHRodW1i
CiAgICAgLy8gcG9zaXRpb24gdG8gMCAodGhlIGxlZnQpIHdoZW4gdGhlIHZpZXcgaXMgaW5pdGlh
bGx5IGRpc3BsYXllZC4KICAgICAvLyBUaGlzIGNhbGwgdXBkYXRlcyB0aGUgaW5pdGlhbCBwb3Np
dGlvbiBjb3JyZWN0bHkuCi0gICAgW3NlbGYgcmVmcmVzaEluaXRpYWxTY3JvbGxiYXJQb3NpdGlv
bl07CisgICAgW3NlbGYgYWRqdXN0Rm9yU2Nyb2xsT3JpZ2luQ2hhbmdlXTsKIAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQog
ICAgIE5TVmlldyAqZG9jdW1lbnRWaWV3ID0gW3NlbGYgZG9jdW1lbnRWaWV3XTsKQEAgLTU3Mywy
MiArNTc3LDI5IEBAIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzSWdub3JlZCAKICAgICByZXR1cm4g
W3N1cGVyIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRdOwogfQogCi0tICh2b2lkKXNldFNjcm9sbE9y
aWdpblg6KGludClzY3JvbGxPcmlnaW5YCistICh2b2lkKXNldFNjcm9sbE9yaWdpbjooTlNQb2lu
dClzY3JvbGxPcmlnaW4gdXBkYXRlUG9zaXRpb246KEJPT0wpdXBkYXRlUG9zaXRpb24KIHsKLSAg
ICBfcHJpdmF0ZS0+c2Nyb2xsT3JpZ2luWCA9IHNjcm9sbE9yaWdpblg7Ci0gICAgCisgICAgX3By
aXZhdGUtPnNjcm9sbE9yaWdpbiA9IHNjcm9sbE9yaWdpbjsKICAgICBpZCBkb2NWaWV3ID0gW3Nl
bGYgZG9jdW1lbnRWaWV3XTsKLSAgICBpZiAoc2Nyb2xsT3JpZ2luWCAhPSBbZG9jVmlldyBib3Vu
ZHNdLm9yaWdpbi54KSB7Ci0gICAgICAgIC8vICItW3NlbGYgc2Nyb2xsT3JpZ2luWF0iIGlzIGVx
dWFsIHRvIHRoZSBsZWZ0IGxheW91dCBvdmVyZmxvdy4KLSAgICAgICAgLy8gTWFrZSBEb2N1bWVu
dCBib3VuZHMgb3JpZ2luIHggY29vcmRpbmF0ZSBjb3JyZXNwb25kIHRvIHRoZSBsZWZ0IG92ZXJm
bG93IHNvIHRoZSBlbnRpcmUgY2FudmFzIGlzIGNvdmVyZWQgYnkgdGhlIGRvY3VtZW50LgotICAg
ICAgICBbZG9jVmlldyBzZXRCb3VuZHNPcmlnaW46TlNNYWtlUG9pbnQoLXNjcm9sbE9yaWdpblgs
IFtkb2NWaWV3IGJvdW5kc10ub3JpZ2luLnkpXTsKLSAgICB9CisgICAgTlNQb2ludCBkb2NPcmln
aW4gPSBbZG9jVmlldyBib3VuZHNdLm9yaWdpbjsKKyAgICBpZiAoZG9jT3JpZ2luLnggIT0gLXNj
cm9sbE9yaWdpbi54IHx8IGRvY09yaWdpbi55ICE9IC1zY3JvbGxPcmlnaW4ueSkgeworICAgICAg
ICBOU1JlY3QgdmlzaWJsZVJlY3QgPSBbc2VsZiBkb2N1bWVudFZpc2libGVSZWN0XTsKKyAgICAg
ICAgIAorICAgICAgICBbZG9jVmlldyBzZXRCb3VuZHNPcmlnaW46TlNNYWtlUG9pbnQoLXNjcm9s
bE9yaWdpbi54LCAtc2Nyb2xsT3JpZ2luLnkpXTsKIAorICAgICAgICBfcHJpdmF0ZS0+c2Nyb2xs
T3JpZ2luQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIAorICAgICAgICAvLyBNYWludGFpbiBvdXIg
b3JpZ2luYWwgcG9zaXRpb24gaW4gdGhlIHByZXNlbmNlIG9mIHRoZSBuZXcgc2Nyb2xsIG9yaWdp
bi4KKyAgICAgICAgX3ByaXZhdGUtPnNjcm9sbFBvc2l0aW9uRXhjbHVkaW5nT3JpZ2luID0gTlNN
YWtlUG9pbnQodmlzaWJsZVJlY3Qub3JpZ2luLnggKyBzY3JvbGxPcmlnaW4ueCwgdmlzaWJsZVJl
Y3Qub3JpZ2luLnkgKyBzY3JvbGxPcmlnaW4ueSk7CisgICAgICAgIAorICAgICAgICBpZiAodXBk
YXRlUG9zaXRpb24pIC8vIE90aGVyd2lzZSB3ZSdsbCBqdXN0IGxldCB0aGUgc25hcCBoYXBwZW4g
d2hlbiB3ZSB1cGRhdGUgZm9yIHRoZSByZXNpemUuCisgICAgICAgICAgICBbc2VsZiBhZGp1c3RG
b3JTY3JvbGxPcmlnaW5DaGFuZ2VdOworICAgIH0KIH0KIAotLSAoaW50KXNjcm9sbE9yaWdpblgK
Ky0gKE5TUG9pbnQpc2Nyb2xsT3JpZ2luCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5zY3JvbGxP
cmlnaW5YOworICAgIHJldHVybiBfcHJpdmF0ZS0+c2Nyb2xsT3JpZ2luOwogfQogCiBAZW5kCklu
ZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0JKHJldmlzaW9uIDcyOTQ3KQorKysgV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTM2LDcg
KzUzNiw4IEBAIC0gKEJPT0wpX3Njcm9sbFRvQmVnaW5uaW5nT2ZEb2N1bWVudAogICAgIGlmICgh
W3NlbGYgX2lzU2Nyb2xsYWJsZV0pCiAgICAgICAgIHJldHVybiBOTzsKICAgICBOU1BvaW50IHBv
aW50ID0gW1tbc2VsZiBfc2Nyb2xsVmlld10gZG9jdW1lbnRWaWV3XSBmcmFtZV0ub3JpZ2luOwot
ICAgIHBvaW50LnggKz0gW1tzZWxmIF9zY3JvbGxWaWV3XSBzY3JvbGxPcmlnaW5YXTsKKyAgICBw
b2ludC54ICs9IFtbc2VsZiBfc2Nyb2xsVmlld10gc2Nyb2xsT3JpZ2luXS54OworICAgIHBvaW50
LnkgKz0gW1tzZWxmIF9zY3JvbGxWaWV3XSBzY3JvbGxPcmlnaW5dLnk7CiAgICAgcmV0dXJuIFtb
c2VsZiBfY29udGVudFZpZXddIF9zY3JvbGxUbzomcG9pbnQgYW5pbWF0ZTpZRVNdOwogfQogCkBA
IC01NDgsNyArNTQ5LDggQEAgLSAoQk9PTClfc2Nyb2xsVG9FbmRPZkRvY3VtZW50CiAgICAgICAg
IHJldHVybiBOTzsKICAgICBOU1JlY3QgZnJhbWUgPSBbW1tzZWxmIF9zY3JvbGxWaWV3XSBkb2N1
bWVudFZpZXddIGZyYW1lXTsKICAgICBOU1BvaW50IHBvaW50ID0gTlNNYWtlUG9pbnQoZnJhbWUu
b3JpZ2luLngsIE5TTWF4WShmcmFtZSkpOwotICAgIHBvaW50LnggKz0gW1tzZWxmIF9zY3JvbGxW
aWV3XSBzY3JvbGxPcmlnaW5YXTsKKyAgICBwb2ludC54ICs9IFtbc2VsZiBfc2Nyb2xsVmlld10g
c2Nyb2xsT3JpZ2luXS54OworICAgIHBvaW50LnkgKz0gW1tzZWxmIF9zY3JvbGxWaWV3XSBzY3Jv
bGxPcmlnaW5dLnk7CiAgICAgcmV0dXJuIFtbc2VsZiBfY29udGVudFZpZXddIF9zY3JvbGxUbzom
cG9pbnQgYW5pbWF0ZTpZRVNdOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzA1NykKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEw
LTEyLTAxICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDY2NDUKKyAgICAgICAgCisgICAgICAgIFBhcnQgMSBvZiBtYWtpbmcg
c2Nyb2xsaW5nIHdvcmsgd2l0aCB2ZXJ0aWNhbCB0ZXh0LiBUaGlzIHBhdGNoIGdlbmVyYWxpemVz
IHRoZSBzY3JvbGxPcmlnaW5YIGNvbmNlcHQKKyAgICAgICAgcmVjZW50bHkgYWRkZWQgZm9yIGhv
cml6b250YWwgUlRMIGRvY3VtZW50cyBhbmQgYXBwbGllcyBpdCB0byB3cml0aW5nIG1vZGVzIGFz
IHdlbGwuICBOb3cgdGhlCisgICAgICAgIHNjcm9sbE9yaWdpbiBpcyBhIHBvaW50LCBzaW5jZSB5
b3UgY2FuIHN0YXJ0IG9mZiBsb2NrZWQgdG8gdGhlIGJvdHRvbSBvciBsb2NrZWQgdG8gdGhlIHJp
Z2h0LgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGZpeGVzIG51bWVyb3VzIGJ1
Z3Mgd2l0aCB0aGUgc2Nyb2xsT3JpZ2luIGNvZGUgdXNpbmcgbmF0aXZlIE1hYyBOU1Njcm9sbFZp
ZXdzIGFuZAorICAgICAgICBtYWtlcyB0aGVtIGJlaGF2ZSB0aGUgc2FtZSBhcyB0aGUgY3Jvc3Mt
cGxhdGZvcm0gY29kZSAoYWxsb3dpbmcgZm9yIGNyb3NzLXBsYXRmb3JtIHJlc3VsdHMgdG8gYmUK
KyAgICAgICAgbGFuZGVkKS4KKworICAgICAgICAqIGZhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJh
ci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLWRvZXNudC1maXJlLW9uc2Ny
b2xsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1p
bi1ydGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS92ZXJ0aWNhbC1z
Y3JvbGxiYXItaW4tcnRsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3ZlcnRpY2Fs
LXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1p
bi1ydGwtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0
L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorCiAyMDEwLTEyLTAxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0
bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jp
em9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDkgQEAKK29yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6
b250YWwgc2Nyb2xsOiA6IFN1Y2Nlc3MKK2NvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxY
IDogU3VjY2Vzcworem9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjogU3Vj
Y2VzcworcmVzaXplIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK3doZWVsIHNj
cm9sbCBwcmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK0tleURv
d24gSE9NRSBtb3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogMAor
S2V5RG93biBFTkQgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2U6
IDAKK3NlbGVjdEFsbCBzZWxlY3RzIGFsbCBkb2N1bWVudDogU3VjY2VzcwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNj
cm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitvcmlnaW5hbCBzY3JvbGwg
eCBmb3IgUlRMIHBhZ2UgOiBTdWNjZXNzCitob3Jpem9udGFsIHNjcm9sbCB4IGZvciBSVEwgcGFn
ZSA6IFN1Y2Nlc3MKK29yaWdpbmFsIHNjcm9sbCB4IGZvciBMVFIgcGFnZSA6IFN1Y2Nlc3MKK2hv
cml6b250YWwgc2Nyb2xsIHggZm9yIExUUiBwYWdlIDogU3VjY2VzcworCisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25z
Y3JvbGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Zl
cnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFy
LWluLXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0cyB0aGF0IHdoZW4gYSBwYWdlIHdpdGggYW4gUlRMIG92
ZXJmbG93IGlzIGluaXRpYWxseSBsb2FkZWQsIG5vIHNjcm9sbCBldmVudCBpcyBzZW50LgorVGhp
cyB0ZXN0IGhhcyBwYXNzZWQgaWYgdGhlIHRleHQgIkZBSUwgLSBzY3JvbGwgZXZlbnQgcmVjZWl2
ZWQhIiBkb2VzIG5vdCBhcHBlYXIgYmVsb3cuCitMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwg
Y29uc2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lk
aWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0g
dmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0
IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBp
biByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUg
ZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQg
bm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBh
bmltIGlkIGVzdCBsYWJvcnVtLiIKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdmVydGlj
YWwtc2Nyb2xsYmFyLWluLXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250
LWZpcmUtb25zY3JvbGwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBkaXI9cnRs
IHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTp2ZXJ0aWNhbC1sciI+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgorICAgICAgICAgICAgZnVuY3Rp
b24gbG9nKHN0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgbGkgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGxpLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAgICAgICAgICAgICAgIHZhciBjb25z
b2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
b25sb2FkID0gZnVuY3Rpb24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZG9jdW1lbnQub25zY3JvbGw9ZnVuY3Rpb24oKXtsb2coIkZBSUwgLSBzY3JvbGwgZXZlbnQgcmVj
ZWl2ZWQhIik7fQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+Cisg
ICAgICAgIDxkaXYgZGlyPWx0cj4KKyAgICAgICAgPHA+VGhpcyB0ZXN0cyB0aGF0IHdoZW4gYSBw
YWdlIHdpdGggYW4gUlRMIG92ZXJmbG93IGlzIGluaXRpYWxseSBsb2FkZWQsIG5vIHNjcm9sbCBl
dmVudCBpcyBzZW50LjwvcD4KKyAgICAgICAgPHA+VGhpcyB0ZXN0IGhhcyBwYXNzZWQgaWYgdGhl
IHRleHQgIkZBSUwgLSBzY3JvbGwgZXZlbnQgcmVjZWl2ZWQhIiBkb2VzIG5vdCBhcHBlYXIgYmVs
b3cuPC9wPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0iZGl2IiBzdHlsZT0id2hp
dGVzcGFjZTpub3dyYXA7IHdpZHRoOiAxMDAwcHg7IGhlaWdodDogNDAwMHB4OyBib3JkZXI6IDFw
eCBzb2xpZCByZWQ7Ij5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRp
cGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3Jl
IGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5v
c3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEg
Y29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0
IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBh
cmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBz
dW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJv
cnVtLiI8L2Rpdj4KKyAgICAgICAgPHVsIGlkPSJjb25zb2xlIj48L3VsPgorICAgIDwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1p
bi1ydGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Zl
cnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorb3JpZ2luYWwgc2Nyb2xsIHkgZm9yIFJUTCBw
YWdlIDogU3VjY2VzcwordmVydGljYWwgc2Nyb2xsOiA6IFN1Y2Nlc3MKK2NvbnRpbnVvdXNseSBj
YWxsIHdpbmRvdy5zY3JvbGxZIDogU3VjY2Vzcworem9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNj
cm9sbCBwb3NpdGlvbjogU3VjY2VzcworcmVzaXplIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb246
IFN1Y2Nlc3MKK3doZWVsIHNjcm9sbCBwcmVzZXJ2ZXMgdmVydGljYWwgc2Nyb2xsIHBvc2l0aW9u
OiBTdWNjZXNzCitLZXlEb3duIEhPTUUgbW92ZSB5LXNjcm9sbCBwb3NpdGlvbiB0byBib3R0b20g
Zm9yIFJUTCBwYWdlOiAwCitLZXlEb3duIEVORCBtb3ZlIHktc2Nyb2xsIHBvc2l0aW9uIHRvIGJv
dHRvbSBmb3IgUlRMIHBhZ2U6IDAKK3NlbGVjdEFsbCBzZWxlY3RzIGFsbCBkb2N1bWVudDogU3Vj
Y2VzcwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0
bC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9s
bGJhci1pbi1ydGwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3Zl
cnRpY2FsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDQg
QEAKKzxodG1sIGRpcj1ydGwgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOnZlcnRpY2FsLWxy
Ij4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Cisg
ICAgICAgICAgICBmdW5jdGlvbiBsb2coc3RyKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICAg
ICAgbGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgICAg
ICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIp
OworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdl
LCBhY3R1YWwsIGV4cGVjdGVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChh
Y3R1YWwgIT0gZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2Fn
ZSArICI6IEZhaWx1cmUsIGFjdHVhbDogIiArIGFjdHVhbCArICI7IGV4cGVjdGVkOiAiICsgZXhw
ZWN0ZWQpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJc
biIgKyBtZXNzYWdlICsgIjogU3VjY2VzcyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICBmdW5jdGlvbiBhc3NlcnRDbG9zZShtZXNzYWdlLCBhY3R1YWwsIGV4cGVj
dGVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICgoYWN0dWFsID49IGV4cGVj
dGVkICYmIGFjdHVhbCAtIGV4cGVjdGVkIDwgNSkgfHwKKyAgICAgICAgICAgICAgICAgICAgKGV4
cGVjdGVkID49IGFjdHVhbCAmJiBleHBlY3RlZCAtIGFjdHVhbCA8IDUpKQorICAgICAgICAgICAg
ICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBTdWNjZXNzIik7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWls
dXJlLCBhY3R1YWw6ICIgKyBhY3R1YWwgKyAiOyBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGV4cGVjdGVkU2Nyb2xs
WCA9IDUwMDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFNjcm9sbFkgPSAtMTAwMDsKKworICAg
ICAgICAgICAgZnVuY3Rpb24gbW91c2V3aGVlbEhhbmRsZXIoZSkgCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoIndoZWVsIHNjcm9sbCBwcmVzZXJ2ZXMgdmVydGlj
YWwgc2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93LnNjcm9sbFksIGV4cGVjdGVkU2Nyb2xsWSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG9ubG9hZCA9IGZ1bmN0aW9u
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHZlcnRpY2FsIHNjcm9sbGJhciBw
cmVzZW5jZSBhbmQgdGhhdCBpdCBpcyBpbml0aWFsbHkgYXQgdGhlIGJvdHRvbSBmb3IgUlRMIHBh
Z2UuCisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoIm9yaWdpbmFsIHNjcm9sbCB5IGZvciBS
VEwgcGFnZSAiLCB3aW5kb3cuc2Nyb2xsWSwgMCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAvLyBUZXN0IGhvcml6b250YWwgc2Nyb2xsLgorICAgICAgICAgICAgICAgIHdpbmRvdy5z
Y3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0RXF1YWwoInZlcnRpY2FsIHNjcm9sbDogIiwgd2luZG93LnNjcm9sbFksIGV4cGVj
dGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgLy8gVGVzdCBjYWxsaW5nIHdpbmRvdy5zY3Jv
bGxZIGNvbnRpbnVvdXNseSB3b250IGNoYW5nZSB0aGUgc2Nyb2xsWSBwb3NpdGlvbi4KKyAgICAg
ICAgICAgICAgICBhc3NlcnRFcXVhbCgiY29udGludW91c2x5IGNhbGwgd2luZG93LnNjcm9sbFkg
Iiwgd2luZG93LnNjcm9sbFksIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAKKworICAg
ICAgICAgICAgICAgIC8vIFRlc3Qgem9vbWluZyB3b250IHJlc2V0IHNjcm9sbCBwb3NpdGlvbi4K
KyAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAg
ICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7
CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLnpvb21QYWdlSW4oKTsKKyAgICAgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuem9vbVBhZ2VPdXQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0Q2xvc2UoInpvb20gaW4gYW5kIG91dCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb24i
LCB3aW5kb3cuc2Nyb2xsWSwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHJlc2l6ZSB3b250IHJlc2V0
IHNjcm9sbCBwb3NpdGlvbi4KKyAgICAgICAgICAgICAgICB3aW5kb3cucmVzaXplVG8od2luZG93
LmlubmVyV2lkdGgsIDEwMDApOworICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBl
Y3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgd2luZG93LnJl
c2l6ZVRvKHdpbmRvdy5pbm5lcldpZHRoLCAyMDAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRF
cXVhbCgicmVzaXplIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb24iLCB3aW5kb3cuc2Nyb2xsWSwg
ZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBU
ZXN0IHdoZWVsIHNjcm9sbCBwcmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb24uCisg
ICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCAvIDIsIGV4cGVj
dGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJkaXYiKTsKKyAgICAgICAgICAgICAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2V3aGVlbCIsIG1vdXNld2hlZWxIYW5kbGVyLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdmFy
IHdoZWVsRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiV2hlZWxFdmVudCIpOworICAgICAg
ICAgICAgICAgIHdoZWVsRXZlbnQuaW5pdFdlYktpdFdoZWVsRXZlbnQoZXhwZWN0ZWRTY3JvbGxY
IC8gMiwgMCwgd2luZG93LCAwLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7
CisgICAgICAgICAgICAgICAgZGl2LmRpc3BhdGNoRXZlbnQod2hlZWxFdmVudCk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0IEhPTUUvRU5EIG9wZXJhdGlvbi4KKyAgICAg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgICAg
IC8vIE5vdCB1c2luZyBhc3NlcnQgZXF1YWwgaGVyZSBzaW5jZSB0aGUgYmVoYXZpb3IgaXMgZGlm
ZmVyZW50IGluIGVhY2ggcG9ydC4gCisgICAgICAgICAgICAgICAgICAgIC8vIEZvciBleGFtcGxl
LCBpbiBNYWMsIEhPTUUvRU5EIGtleSByZXNldCBib3RoIHggYW5kIHkgc2Nyb2xsIHBvc2l0aW9u
LiAKKyAgICAgICAgICAgICAgICAgICAgLy8gSW4gQ2hyb21pdW0sIEhPTUUvRU5EIGtleSBvbmx5
IHJlc2V0IHkgc2Nyb2xsIHBvc2l0aW9uLCBhbmQgeCBzY3JvbGwgcG9zaXRpb24gaXMgcHJlc2Vy
dmVkLgorICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxY
LCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlE
b3duKCJob21lIik7CisgICAgICAgICAgICAgICAgICAgIGxvZygiS2V5RG93biBIT01FIG1vdmUg
eS1zY3JvbGwgcG9zaXRpb24gdG8gYm90dG9tIGZvciBSVEwgcGFnZTogIiArIHdpbmRvdy5zY3Jv
bGxZLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Ny
b2xsWCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
a2V5RG93bigiZW5kIik7CisgICAgICAgICAgICAgICAgICAgIGxvZygiS2V5RG93biBFTkQgbW92
ZSB5LXNjcm9sbCBwb3NpdGlvbiB0byBib3R0b20gZm9yIFJUTCBwYWdlOiAiICsgd2luZG93LnNj
cm9sbFksIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIC8vIFRlc3Qgc2VsZWN0IGFsbCBzZWxlY3RzIGFsbCBkb2N1bWVudCBjb250ZW50LgorICAg
ICAgICAgICAgICAgIHdpbmRvdy5yZXNpemVUbyg1MDAsIDUwMCk7CisgICAgICAgICAgICAgICAg
dmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsKKyAgICAgICAgICAgICAg
ICBkaXYuZm9jdXMoKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2Vs
ZWN0QWxsIik7CisgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgic2VsZWN0QWxsIHNlbGVjdHMg
YWxsIGRvY3VtZW50Iiwgc2VsZWN0aW9uLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIGRpdi5pbm5l
ckhUTUwubGVuZ3RoKSwgZGl2LmlubmVySFRNTCk7CisKKyAgICAgICAgICAgICAgICBkaXYuc3R5
bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9
ImRpdiIgc3R5bGU9IndoaXRlc3BhY2U6bm93cmFwOyB3aWR0aDogMTAwMHB4OyBoZWlnaHQ6IDQw
MDBweDsgYm9yZGVyOiAxcHggc29saWQgcmVkOyI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQs
IGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNp
ZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmlt
IHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1
dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3Ig
aW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1
IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0
IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQg
YW5pbSBpZCBlc3QgbGFib3J1bS4iPC9kaXY+CisgICAgICAgIDx1bCBpZD0iY29uc29sZSIgZGly
PWx0cj48L3VsPgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci13aGVuLWRp
ci1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vdmVydGljYWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNiBAQAorb3JpZ2luYWwgc2Nyb2xsIHkgZm9yIFJUTCBwYWdlIDog
U3VjY2VzcwordmVydGljYWwgc2Nyb2xsIHkgZm9yIFJUTCBwYWdlIDogU3VjY2Vzcworb3JpZ2lu
YWwgc2Nyb2xsIHkgZm9yIExUUiBwYWdlIDogU3VjY2VzcwordmVydGljYWwgc2Nyb2xsIHkgZm9y
IExUUiBwYWdlIDogU3VjY2VzcworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRp
Y2FsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItd2hl
bi1kaXItY2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKHN0cikKK3sKKyAgICB2YXIgbGkgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKHN0cikpOworICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnNvbGUiKTsKKyAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKK30KKworZnVu
Y3Rpb24gYXNzZXJ0RXF1YWwobWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAo
YWN0dWFsICE9IGV4cGVjdGVkKQorICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWls
dXJlLCBhY3R1YWw6ICIgKyBhY3R1YWwgKyAiOyBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsKKyAg
ICBlbHNlCisgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IFN1Y2Nlc3MiKTsKK30KKwor
b25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworCisgICAgYXNzZXJ0RXF1YWwoIm9yaWdpbmFsIHNjcm9sbCB5IGZvciBSVEwg
cGFnZSAiLCB3aW5kb3cuc2Nyb2xsWSwgMCk7CisgICAgd2luZG93LnNjcm9sbFRvKDAsIC0xMDAp
OworICAgIGFzc2VydEVxdWFsKCJ2ZXJ0aWNhbCBzY3JvbGwgeSBmb3IgUlRMIHBhZ2UgIiwgd2lu
ZG93LnNjcm9sbFksIC0xMDApOworCisgICAgZG9jdW1lbnQuYm9keS5kaXIgPSAibHRyIjsKKyAg
ICBhc3NlcnRFcXVhbCgib3JpZ2luYWwgc2Nyb2xsIHkgZm9yIExUUiBwYWdlICIsIHdpbmRvdy5z
Y3JvbGxZLCAwKTsKKyAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMTAwKTsKKyAgICBhc3NlcnRFcXVh
bCgidmVydGljYWwgc2Nyb2xsIHkgZm9yIExUUiBwYWdlICIsIHdpbmRvdy5zY3JvbGxZLCAxMDAp
OworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpLnN0eWxlLmRpc3BsYXkgPSAi
bm9uZSI7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGRpcj0icnRsIiBzdHlsZT0iLXdl
YmtpdC13cml0aW5nLW1vZGU6dmVydGljYWwtbHIiPgorCis8ZGl2IHN0eWxlPSJoZWlnaHQ6IDQw
MDBweDsgYm9yZGVyOiAxcHggc29saWQgcmVkOyIgaWQ9ImRpdiI+CitMb3JlbSBpcHN1bSBkb2xv
ciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LiBOdW5jIGV0IG5pc2wgdGVs
bHVzLiBWaXZhbXVzIGFsaXF1YW0gZWxpdCBub24gYXJjdSBzY2VsZXJpc3F1ZSBlZ2V0IGRhcGli
dXMgbnVuYyB2dWxwdXRhdGUuIE1hZWNlbmFzIHNjZWxlcmlzcXVlIGVnZXN0YXMgcHVydXMsIGlk
IGJpYmVuZHVtIG1hZ25hIHZlbmVuYXRpcyB2ZWwuIFZlc3RpYnVsdW0gYmliZW5kdW0gdm9sdXRw
YXQgYWxpcXVhbS4gQ3VtIHNvY2lpcyBuYXRvcXVlIHBlbmF0aWJ1cyBldCBtYWduaXMgZGlzIHBh
cnR1cmllbnQgbW9udGVzLCBuYXNjZXR1ciByaWRpY3VsdXMgbXVzLiBWZXN0aWJ1bHVtIGVnZXQg
cmlzdXMgc29kYWxlcyBtaSB0cmlzdGlxdWUgZGlnbmlzc2ltIGV0IHNlZCBsZWN0dXMuIENyYXMg
Y29udmFsbGlzLCBuaWJoIHV0IGRhcGlidXMgZ3JhdmlkYSwgZW5pbSBtYXVyaXMgbW9sZXN0aWUg
ZWxpdCwgZWdldCBmcmluZ2lsbGEgYXVndWUgZXN0IG5lYyBlc3QuIEN1cmFiaXR1ciBldSBxdWFt
IG5vbiBwdXJ1cyBzb2RhbGVzIHB1bHZpbmFyLiBEb25lYyB1bHRyaWNlcyBkdWkgZWdldCBkb2xv
ciBsb2JvcnRpcyBpbiBwb3J0YSBxdWFtIHJ1dHJ1bS4gTnVsbGEgcmlzdXMgbGFjdXMsIGFkaXBp
c2NpbmcgcXVpcyB1bGxhbWNvcnBlciB2ZXN0aWJ1bHVtLCBjb25kaW1lbnR1bSBzZWQgbGFjdXMu
IFNlZCBpbiBudW5jIGRvbG9yLCBxdWlzIGVnZXN0YXMgdHVycGlzLiBJbnRlZ2VyIGFyY3UgdGVs
bHVzLCBwb3N1ZXJlIHNpdCBhbWV0IHBlbGxlbnRlc3F1ZSBhLCBtb2xlc3RpZSBhdCBtaS4gTnVs
bGEgYmxhbmRpdCwgbWkgZXQgZXVpc21vZCBpbXBlcmRpZXQsIGF1Z3VlIGFyY3Ugb3JuYXJlIGZl
bGlzLCBuZWMgdml2ZXJyYSBsYWN1cyBsaWd1bGEgdXQgbWV0dXMuIFByb2luIHV0IGxlbyBhbnRl
LCBhdCBjb25zZWN0ZXR1ciBzZW0uIE51bGxhbSBub24gbnVuYyBsaWd1bGEuIFByb2luIHNlZCBh
bnRlIHNlbSwgaWQgcnV0cnVtIHB1cnVzLgorPC9kaXY+Cis8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+
Cis8YnI+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3Jv
bGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzI5NTYpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICswLDAgQEAKLW9yaWdpbmFsIHNjcm9sbCB4
IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKLWhvcml6b250YWwgc2Nyb2xsOiA6IFN1Y2Nlc3MKLWNv
bnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxYIDogU3VjY2Vzcwotem9vbSBpbiBhbmQgb3V0
IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjogRmFpbHVyZSwgYWN0dWFsOiAtODY2OyBleHBlY3Rl
ZDogLTEwMDAKLXJlc2l6ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCi13aGVl
bCBzY3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCi1L
ZXlEb3duIEhPTUUgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2U6
IDAKLUtleURvd24gRU5EIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBw
YWdlOiAwCi1zZWxlY3RBbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQ6IFN1Y2Nlc3MKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVu
LWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA3Mjk1NikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
YXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzAsMCBAQAotb3JpZ2luYWwgc2Nyb2xsIHggZm9yIFJU
TCBwYWdlIDogU3VjY2VzcwotaG9yaXpvbnRhbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2UgOiBTdWNj
ZXNzCi1vcmlnaW5hbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgOiBGYWlsdXJlLCBhY3R1YWw6IDMx
MTA7IGV4cGVjdGVkOiAwCi1ob3Jpem9udGFsIHNjcm9sbCB4IGZvciBMVFIgcGFnZSA6IFN1Y2Nl
c3MKLQotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75308</attachid>
            <date>2010-12-01 12:42:34 -0800</date>
            <delta_ts>2010-12-01 12:52:17 -0800</delta_ts>
            <desc>Generalize the scrollOrigin concept to work with both horizontal and vertical directions </desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>42754</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzA1NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTAtMTItMDEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjY0NQorICAgICAgICAKKyAgICAg
ICAgUGFydCAxIG9mIG1ha2luZyBzY3JvbGxpbmcgd29yayB3aXRoIHZlcnRpY2FsIHRleHQuIFRo
aXMgcGF0Y2ggZ2VuZXJhbGl6ZXMgdGhlIHNjcm9sbE9yaWdpblggY29uY2VwdAorICAgICAgICBy
ZWNlbnRseSBhZGRlZCBmb3IgaG9yaXpvbnRhbCBSVEwgZG9jdW1lbnRzIGFuZCBhcHBsaWVzIGl0
IHRvIHdyaXRpbmcgbW9kZXMgYXMgd2VsbC4gIE5vdyB0aGUKKyAgICAgICAgc2Nyb2xsT3JpZ2lu
IGlzIGEgcG9pbnQsIHNpbmNlIHlvdSBjYW4gc3RhcnQgb2ZmIGxvY2tlZCB0byB0aGUgYm90dG9t
IG9yIGxvY2tlZCB0byB0aGUgcmlnaHQuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFs
c28gZml4ZXMgbnVtZXJvdXMgYnVncyB3aXRoIHRoZSBzY3JvbGxPcmlnaW4gY29kZSB1c2luZyBu
YXRpdmUgTWFjIE5TU2Nyb2xsVmlld3MgYW5kCisgICAgICAgIG1ha2VzIHRoZW0gYmVoYXZlIHRo
ZSBzYW1lIGFzIHRoZSBjcm9zcy1wbGF0Zm9ybSBjb2RlIChhbGxvd2luZyBmb3IgY3Jvc3MtcGxh
dGZvcm0gcmVzdWx0cyB0byBiZQorICAgICAgICBsYW5kZWQpLgorCisgICAgICAgICogcGFnZS9G
cmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGp1c3RWaWV3U2l6
ZSk6CisgICAgICAgICogcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6U2Ny
b2xsVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjptYXhpbXVtU2Nyb2xsUG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6bWluaW11bVNjcm9sbFBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnZhbHVlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbFZpZXc6OndoZWVsRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bFZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbE9yaWdpbik6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRS
b290Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmxheW91dCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJWaWV3Ojpkb2NUb3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6ZG9j
SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmRvY0xlZnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6ZG9jV2lkdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJWaWV3Lmg6CisKIDIwMTAtMTEtMzAgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6
IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCShyZXZpc2lvbiA3Mjk0NykKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzUsMTUgKzQzNSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6
YWRqdXN0Vmlld1NpemUoKQogICAgIGlmICghcm9vdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aW50IHByZXZTY3JvbGxPcmlnaW5YID0gc2Nyb2xsT3JpZ2luWCgpOwotICAgIFNjcm9sbFZpZXc6
OnNldFNjcm9sbE9yaWdpblgoLXJvb3QtPmxlZnRMYXlvdXRPdmVyZmxvdygpKTsKLSAgICBJbnRT
aXplIHNpemUgPSBJbnRTaXplKHJvb3QtPnJpZ2h0TGF5b3V0T3ZlcmZsb3coKSAtIHJvb3QtPmxl
ZnRMYXlvdXRPdmVyZmxvdygpLCByb290LT5ib3R0b21MYXlvdXRPdmVyZmxvdygpKTsKLSAgICAv
LyBUYWtlIGNhcmUgb2YgdGhlIGNhc2Ugd2hlbiBjb250ZW50cyByZW1haW4gYnV0IHRoZSBSZW5k
ZXJWaWV3J3MgZGlyZWN0aW9uIGhhcyBjaGFuZ2VkLgotICAgIC8vIEluIHdoaWNoIGNhc2UsIHdl
IG5lZWQgdG8gdXBkYXRlIHNjcm9sbGVyIHBvc2l0aW9uLCBmb3IgZXhhbXBsZSwgZnJvbSBsZWZ0
bW9zdCB0bwotICAgIC8vIHJpZ2h0bW9zdCB3aGVuIGRpcmVjdGlvbiBjaGFuZ2VzIGZyb20gbGVm
dC10by1yaWdodCB0byByaWdodC10by1sZWZ0LgotICAgIGJvb2wgZGlyZWN0aW9uQ2hhbmdlZCA9
ICghcHJldlNjcm9sbE9yaWdpblggfHwgIXNjcm9sbE9yaWdpblgoKSkgJiYgKHNjcm9sbE9yaWdp
blgoKSAhPSBwcmV2U2Nyb2xsT3JpZ2luWCk7Ci0gICAgaWYgKHNpemUgPT0gY29udGVudHNTaXpl
KCkgJiYgZGlyZWN0aW9uQ2hhbmdlZCkKLSAgICAgICAgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xs
YmFycygpOworICAgIEludFNpemUgc2l6ZSA9IEludFNpemUocm9vdC0+cmlnaHRMYXlvdXRPdmVy
ZmxvdygpIC0gcm9vdC0+bGVmdExheW91dE92ZXJmbG93KCksIHJvb3QtPmJvdHRvbUxheW91dE92
ZXJmbG93KCkgLSByb290LT50b3BMYXlvdXRPdmVyZmxvdygpKTsKKworICAgIFNjcm9sbFZpZXc6
OnNldFNjcm9sbE9yaWdpbihJbnRQb2ludCgtcm9vdC0+bGVmdExheW91dE92ZXJmbG93KCksIC1y
b290LT50b3BMYXlvdXRPdmVyZmxvdygpKSwgc2l6ZSA9PSBjb250ZW50c1NpemUoKSk7CisgICAg
CiAgICAgc2V0Q29udGVudHNTaXplKHNpemUpOwogfQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvbWFj
L1dlYkNvcmVGcmFtZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNv
cmVGcmFtZVZpZXcuaAkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNv
cmVGcmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAtICh2b2lkKXNldFNjcm9sbGluZ01vZGVzOihXZWJDb3JlOjpTY3JvbGxiYXJN
b2RlKWhNb2RlIHZlcnRpY2FsOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKXZNb2RlIGFuZExvY2s6
KEJPT0wpbG9jazsKIC0gKHZvaWQpc2Nyb2xsaW5nTW9kZXM6KFdlYkNvcmU6OlNjcm9sbGJhck1v
ZGUqKWhNb2RlIHZlcnRpY2FsOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKil2TW9kZTsKIC0gKHZv
aWQpc2V0U2Nyb2xsQmFyc1N1cHByZXNzZWQ6KEJPT0wpc3VwcHJlc3NlZCByZXBhaW50T25VbnN1
cHByZXNzOihCT09MKXJlcGFpbnQ7Ci0tICh2b2lkKXNldFNjcm9sbE9yaWdpblg6KGludClzY3Jv
bGxPcmlnaW5YOwotLSAoaW50KXNjcm9sbE9yaWdpblg7CistICh2b2lkKXNldFNjcm9sbE9yaWdp
bjooTlNQb2ludClvcmlnaW4gdXBkYXRlUG9zaXRpb246KEJPT0wpdXBkYXRlUG9zaXRpb247Cist
IChOU1BvaW50KXNjcm9sbE9yaWdpbjsKIEBlbmQKIAogQHByb3RvY29sIFdlYkNvcmVGcmFtZVZp
ZXcKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw2
IEBAIFNjcm9sbFZpZXc6OlNjcm9sbFZpZXcoKQogICAgICwgbV91c2VGaXhlZExheW91dChmYWxz
ZSkKICAgICAsIG1fcGFpbnRzRW50aXJlQ29udGVudHMoZmFsc2UpCiAgICAgLCBtX2RlbGVnYXRl
c1Njcm9sbGluZyhmYWxzZSkKLSAgICAsIG1fc2Nyb2xsT3JpZ2luWCgwKQogewogICAgIHBsYXRm
b3JtSW5pdCgpOwogfQpAQCAtMjc5LDE0ICsyNzgsMTQgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRD
b250ZW50c1NpemUoY29uc3QgSQogCiBJbnRQb2ludCBTY3JvbGxWaWV3OjptYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKSBjb25zdAogewotICAgIEludFBvaW50IG1heGltdW1PZmZzZXQoY29udGVudHNX
aWR0aCgpIC0gdmlzaWJsZVdpZHRoKCkgLSBtX3Njcm9sbE9yaWdpblgsIGNvbnRlbnRzSGVpZ2h0
KCkgLSB2aXNpYmxlSGVpZ2h0KCkpOworICAgIEludFBvaW50IG1heGltdW1PZmZzZXQoY29udGVu
dHNXaWR0aCgpIC0gdmlzaWJsZVdpZHRoKCkgLSBtX3Njcm9sbE9yaWdpbi54KCksIGNvbnRlbnRz
SGVpZ2h0KCkgLSB2aXNpYmxlSGVpZ2h0KCkgLSBtX3Njcm9sbE9yaWdpbi55KCkpOwogICAgIG1h
eGltdW1PZmZzZXQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwogICAgIHJldHVybiBtYXhpbXVtT2Zm
c2V0OwogfQogCiBJbnRQb2ludCBTY3JvbGxWaWV3OjptaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBj
b25zdAogewotICAgIHJldHVybiBJbnRQb2ludCgtbV9zY3JvbGxPcmlnaW5YLCAwKTsKKyAgICBy
ZXR1cm4gSW50UG9pbnQoLW1fc2Nyb2xsT3JpZ2luLngoKSwgLW1fc2Nyb2xsT3JpZ2luLnkoKSk7
CiB9CiAKIEludFBvaW50IFNjcm9sbFZpZXc6OmFkanVzdFNjcm9sbFBvc2l0aW9uV2l0aGluUmFu
Z2UoY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KSBjb25zdApAQCAtMzE2LDkgKzMxNSw5IEBA
IHZvaWQgU2Nyb2xsVmlldzo6dmFsdWVDaGFuZ2VkKFNjcm9sbGJhcioKICAgICBJbnRTaXplIG5l
d09mZnNldCA9IG1fc2Nyb2xsT2Zmc2V0OwogICAgIGlmIChzY3JvbGxiYXIpIHsKICAgICAgICAg
aWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQotICAg
ICAgICAgICAgbmV3T2Zmc2V0LnNldFdpZHRoKHNjcm9sbGJhci0+dmFsdWUoKSAtIG1fc2Nyb2xs
T3JpZ2luWCk7CisgICAgICAgICAgICBuZXdPZmZzZXQuc2V0V2lkdGgoc2Nyb2xsYmFyLT52YWx1
ZSgpIC0gbV9zY3JvbGxPcmlnaW4ueCgpKTsKICAgICAgICAgZWxzZSBpZiAoc2Nyb2xsYmFyLT5v
cmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKQotICAgICAgICAgICAgbmV3T2Zmc2V0
LnNldEhlaWdodChzY3JvbGxiYXItPnZhbHVlKCkpOworICAgICAgICAgICAgbmV3T2Zmc2V0LnNl
dEhlaWdodChzY3JvbGxiYXItPnZhbHVlKCkgLSBtX3Njcm9sbE9yaWdpbi55KCkpOwogICAgIH0K
IAogICAgIEludFNpemUgc2Nyb2xsRGVsdGEgPSBuZXdPZmZzZXQgLSBtX3Njcm9sbE9mZnNldDsK
QEAgLTUwMyw3ICs1MDIsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29u
c3QgCiAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxp
ZGF0aW9uKHRydWUpOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFN0ZXBzKFNj
cm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOwogICAgICAgICBtX2hvcml6
b250YWxTY3JvbGxiYXItPnNldFByb3BvcnRpb24oY2xpZW50V2lkdGgsIGNvbnRlbnRzV2lkdGgo
KSk7Ci0gICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0VmFsdWUoc2Nyb2xsLndpZHRo
KCkgKyBtX3Njcm9sbE9yaWdpblgsIFNjcm9sbGJhcjo6Tm90RnJvbVNjcm9sbEFuaW1hdG9yKTsK
KyAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3JvbGwud2lkdGgoKSAr
IG1fc2Nyb2xsT3JpZ2luLngoKSwgU2Nyb2xsYmFyOjpOb3RGcm9tU2Nyb2xsQW5pbWF0b3IpOwog
ICAgICAgICBpZiAobV9zY3JvbGxiYXJzU3VwcHJlc3NlZCkKICAgICAgICAgICAgIG1faG9yaXpv
bnRhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24oZmFsc2UpOyAKICAgICB9IApA
QCAtNTI1LDcgKzUyNCw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25z
dCAKICAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0
aW9uKHRydWUpOwogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRTdGVwcyhTY3JvbGxi
YXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKICAgICAgICAgbV92ZXJ0aWNhbFNj
cm9sbGJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRIZWlnaHQsIGNvbnRlbnRzSGVpZ2h0KCkpOwot
ICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3JvbGwuaGVpZ2h0KCksIFNj
cm9sbGJhcjo6Tm90RnJvbVNjcm9sbEFuaW1hdG9yKTsKKyAgICAgICAgbV92ZXJ0aWNhbFNjcm9s
bGJhci0+c2V0VmFsdWUoc2Nyb2xsLmhlaWdodCgpICsgbV9zY3JvbGxPcmlnaW4ueSgpLCBTY3Jv
bGxiYXI6Ok5vdEZyb21TY3JvbGxBbmltYXRvcik7CiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNT
dXBwcmVzc2VkKQogICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJ
bnZhbGlkYXRpb24oZmFsc2UpOwogICAgIH0KQEAgLTEwMjcsMTkgKzEwMjYsMjQgQEAgdm9pZCBT
Y3JvbGxWaWV3OjpyZW1vdmVQYW5TY3JvbGxJY29uKCkKICAgICBob3N0V2luZG93KCktPmludmFs
aWRhdGVDb250ZW50c0FuZFdpbmRvdyhJbnRSZWN0KG1fcGFuU2Nyb2xsSWNvblBvaW50LCBJbnRT
aXplKHBhbkljb25TaXplTGVuZ3RoLCBwYW5JY29uU2l6ZUxlbmd0aCkpLCB0cnVlIC8qaW1tZWRp
YXRlKi8pOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OnNldFNjcm9sbE9yaWdpblgoaW50IHgpCit2
b2lkIFNjcm9sbFZpZXc6OnNldFNjcm9sbE9yaWdpbihjb25zdCBJbnRQb2ludCYgb3JpZ2luLCBi
b29sIHVwZGF0ZVBvc2l0aW9uKQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQotICAgICAg
ICBwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgoeCk7CisgICAgICAgIHBsYXRmb3JtU2V0U2Nyb2xs
T3JpZ2luKG9yaWdpbiwgdXBkYXRlUG9zaXRpb24pOwogCi0gICAgbV9zY3JvbGxPcmlnaW5YID0g
eDsKLX0KKyAgICBJbnRQb2ludCBwcmV2U2Nyb2xsT3JpZ2luID0gbV9zY3JvbGxPcmlnaW47CiAK
LXZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycygpCi17Ci0gICAgaWYgKCFwbGF0Zm9y
bVdpZGdldCgpKQorICAgIG1fc2Nyb2xsT3JpZ2luID0gb3JpZ2luOworICAgIAorICAgIGlmIChw
bGF0Zm9ybVdpZGdldCgpIHx8ICF1cGRhdGVQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGVpdGhlciB0aGUgZGlyZWN0aW9uIG9yIHdyaXRpbmctbW9k
ZSBoYXMgY2hhbmdlZCBzdWNoIHRoYXQgb3VyIHNjcm9sbCBvcmlnaW4gaGFzIGdvbmUgZnJvbQor
ICAgIC8vIHplcm8gdG8gbm9uLXplcm8gKG9yIHZpY2UgdmVyc2EpIGluIGEgcGFydGljdWxhciBh
eGlzLiAgSWYgc28sIGp1c3QgcmVzZXQgdGhlIHNjcm9sbCBwb3NpdGlvbiB0byB0aGUgc2Nyb2xs
CisgICAgLy8gb3JpZ2luLgorICAgIGlmICgoIXByZXZTY3JvbGxPcmlnaW4ueCgpICYmIG1fc2Ny
b2xsT3JpZ2luLngoKSkgfHwgKCFtX3Njcm9sbE9yaWdpbi54KCkgJiYgcHJldlNjcm9sbE9yaWdp
bi54KCkpIHx8CisgICAgICAgICghcHJldlNjcm9sbE9yaWdpbi55KCkgJiYgbV9zY3JvbGxPcmln
aW4ueSgpKSB8fCAoIW1fc2Nyb2xsT3JpZ2luLnkoKSAmJiBwcmV2U2Nyb2xsT3JpZ2luLnkoKSkp
CiAgICAgICAgIHVwZGF0ZVNjcm9sbGJhcnMoc2Nyb2xsT2Zmc2V0KCkpOwotICAgIC8vIEZJWE1F
OiBuZWVkIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25hbGl0eSBmcm9tIHBsYXRmb3JtV2lkZ2V0Lgog
fQogCiAjaWYgIVBMQVRGT1JNKFdYKSAmJiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oRUZM
KQpAQCAtMTA3Miw3ICsxMDc2LDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9s
bGJhcnNTdQogewogfQogCi12b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2lu
WChpbnQpCit2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luKGNvbnN0IElu
dFBvaW50JiwgYm9vbCB1cGRhdGVQb3NpdGlvbikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmgJKHJldmlzaW9uIDcyOTQ3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBz
Y3JvbGxPZmZzZXQoKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlv
bigpIC0gSW50UG9pbnQoKTsgfSAvLyBHZXRzIHRoZSBzY3JvbGxlZCBwb3NpdGlvbiBhcyBhbiBJ
bnRTaXplLiBDb252ZW5pZW50IGZvciBhZGRpbmcgdG8gb3RoZXIgc2l6ZXMuCiAgICAgSW50UG9p
bnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7IC8vIFRoZSBtYXhpbXVtIHBvc2l0aW9u
IHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KICAgICBJbnRQb2ludCBtaW5pbXVtU2Nyb2xsUG9zaXRp
b24oKSBjb25zdDsgLy8gVGhlIG1pbmltdW0gcG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRv
LgotICAgIC8vIEFkanVzdCB0aGUgcGFzcyBpbiBzY3JvbGwgcG9zaXRpb24gd2l0aGluIHRoZSBt
aW5pbXVtIGFuZCBtYXhpbXVtIHBvc2l0aW9ucy4KKyAgICAvLyBBZGp1c3QgdGhlIHBhc3NlZCBp
biBzY3JvbGwgcG9zaXRpb24gdG8ga2VlcCBpdCBiZXR3ZWVuIHRoZSBtaW5pbXVtIGFuZCBtYXhp
bXVtIHBvc2l0aW9ucy4KICAgICBJbnRQb2ludCBhZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJh
bmdlKGNvbnN0IEludFBvaW50JikgY29uc3Q7IAogICAgIGludCBzY3JvbGxYKCkgY29uc3QgeyBy
ZXR1cm4gc2Nyb2xsUG9zaXRpb24oKS54KCk7IH0KICAgICBpbnQgc2Nyb2xsWSgpIGNvbnN0IHsg
cmV0dXJuIHNjcm9sbFBvc2l0aW9uKCkueSgpOyB9CkBAIC0yODIsOSArMjgyLDggQEAgcHJvdGVj
dGVkOgogICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBieSBpbnZhbGlkYXRpbmcgZXZlcnl0aGlu
Zy4KICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJbnRSZWN0
JiB1cGRhdGVSZWN0KTsKIAotICAgIHZvaWQgc2V0U2Nyb2xsT3JpZ2luWChpbnQpOwotICAgIGlu
dCBzY3JvbGxPcmlnaW5YKCkgeyByZXR1cm4gbV9zY3JvbGxPcmlnaW5YOyB9Ci0gICAgdm9pZCB1
cGRhdGVTY3JvbGxiYXJzKCk7CisgICAgdm9pZCBzZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9p
bnQmLCBib29sIHVwZGF0ZVBvc2l0aW9uKTsKKyAgICBJbnRQb2ludCBzY3JvbGxPcmlnaW4oKSB7
IHJldHVybiBtX3Njcm9sbE9yaWdpbjsgfQogCiBwcml2YXRlOgogICAgIFJlZlB0cjxTY3JvbGxi
YXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhcjsKQEAgLTMyMSwxMCArMzIwLDE4IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3BhaW50c0VudGlyZUNvbnRlbnRzOwogICAgIGJvb2wgbV9kZWxlZ2F0ZXNT
Y3JvbGxpbmc7CiAKLSAgICAvLyBtX3Njcm9sbE9yaWdpblggaXMgMCBmb3IgTFRSIHBhZ2UuIEFu
ZCBpdCBpcyBuZWdhdGl2ZSBvZiBsZWZ0IGxheW91dAotICAgIC8vIG92ZXJmbG93IGZvciBSVEwg
cGFnZS4gSXQgaXMgbWFpbmx5IHVzZWQgdG8gc2V0IHRoZSBob3Jpem9udGFsIHNjcm9sbGJhcgot
ICAgIC8vIHBvc2l0aW9uIGZvciBSVEwgcGFnZS4KLSAgICBpbnQgbV9zY3JvbGxPcmlnaW5YOwor
ICAgIC8vIFRoZXJlIGFyZSA4IHBvc3NpYmxlIGNvbWJpbmF0aW9ucyBvZiB3cml0aW5nIG1vZGUg
YW5kIGRpcmVjdGlvbi4gIFNjcm9sbCBvcmlnaW4gd2lsbCBiZSBub24temVybyBpbiB0aGUgeCBv
ciB5IGF4aXMKKyAgICAvLyBpZiB0aGVyZSBpcyBhbnkgcmV2ZXJzZWQgZGlyZWN0aW9uIG9yIHdy
aXRpbmctbW9kZS4gIFRoZSBjb21iaW5hdGlvbnMgYXJlOgorICAgIC8vIHdyaXRpbmctbW9kZSAv
IGRpcmVjdGlvbiAgICAgc2Nyb2xsT3JpZ2luLngoKSBzZXQgICAgc2Nyb2xsT3JpZ2luLnkoKSBz
ZXQKKyAgICAvLyBob3Jpem9udGFsLXRiIC8gbHRyICAgICAgICAgIE5PICAgICAgICAgICAgICAg
ICAgICAgIE5PCisgICAgLy8gaG9yaXpvbnRhbC10YiAvIHJ0bCAgICAgICAgICBZRVMgICAgICAg
ICAgICAgICAgICAgICBOTworICAgIC8vIGhvcml6b250YWwtYnQgLyBsdHIgICAgICAgICAgTk8g
ICAgICAgICAgICAgICAgICAgICAgWUVTCisgICAgLy8gaG9yaXpvbnRhbC1idCAvIHJ0bCAgICAg
ICAgICBZRVMgICAgICAgICAgICAgICAgICAgICBZRVMKKyAgICAvLyB2ZXJ0aWNhbC1sciAvIGx0
ciAgICAgICAgICAgIE5PICAgICAgICAgICAgICAgICAgICAgIE5PCisgICAgLy8gdmVydGljYWwt
bHIgLyBydGwgICAgICAgICAgICBOTyAgICAgICAgICAgICAgICAgICAgICBZRVMKKyAgICAvLyB2
ZXJ0aWNhbC1ybCAvIGx0ciAgICAgICAgICAgIFlFUyAgICAgICAgICAgICAgICAgICAgIE5PCisg
ICAgLy8gdmVydGljYWwtcmwgLyBydGwgICAgICAgICAgICBZRVMgICAgICAgICAgICAgICAgICAg
ICBZRVMKKyAgICBJbnRQb2ludCBtX3Njcm9sbE9yaWdpbjsKIAogICAgIHZvaWQgaW5pdCgpOwog
ICAgIHZvaWQgZGVzdHJveSgpOwpAQCAtMzU0LDcgKzM2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwbGF0Zm9ybVJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKGNvbnN0IEludFJlY3QmLCBib29sIG5v
dyk7CiAgICAgYm9vbCBwbGF0Zm9ybUlzT2Zmc2NyZWVuKCkgY29uc3Q7CiAgICAKLSAgICB2b2lk
IHBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luWChpbnQpOworICAgIHZvaWQgcGxhdGZvcm1TZXRTY3Jv
bGxPcmlnaW4oY29uc3QgSW50UG9pbnQmLCBib29sIHVwZGF0ZVBvc2l0aW9uKTsKIAogI2lmIFBM
QVRGT1JNKE1BQykgJiYgZGVmaW5lZCBfX09CSkNfXwogcHVibGljOgpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tCShyZXZpc2lvbiA3Mjk0NykKKysrIFdlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcs
OCBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsYmFyc1N1CiB2b2lkIFNjcm9s
bFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBv
aW50KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBOU1BvaW50IHRl
bXBQb2ludCA9IHsgbWF4KC1bc2Nyb2xsVmlldygpIHNjcm9sbE9yaWdpblhdLCBzY3JvbGxQb2lu
dC54KCkpLCBtYXgoMCwgc2Nyb2xsUG9pbnQueSgpKSB9OyAgLy8gRG9uJ3QgdXNlIE5TTWFrZVBv
aW50IHRvIHdvcmsgYXJvdW5kIDQyMTMzMTQuCisgICAgTlNQb2ludCBmbG9hdFBvaW50ID0gc2Ny
b2xsUG9pbnQ7CisgICAgTlNQb2ludCB0ZW1wUG9pbnQgPSB7IG1heCgtW3Njcm9sbFZpZXcoKSBz
Y3JvbGxPcmlnaW5dLngsIGZsb2F0UG9pbnQueCksIG1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxP
cmlnaW5dLnksIGZsb2F0UG9pbnQueSkgfTsgIC8vIERvbid0IHVzZSBOU01ha2VQb2ludCB0byB3
b3JrIGFyb3VuZCA0MjEzMzE0LgogICAgIFtkb2N1bWVudFZpZXcoKSBzY3JvbGxQb2ludDp0ZW1w
UG9pbnRdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CkBAIC0yMDIsMTAgKzIw
MywxMCBAQCBib29sIFNjcm9sbFZpZXc6OnBsYXRmb3JtSXNPZmZzY3JlZW4oKSBjCiAgICAgcmV0
dXJuICFbcGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddIHx8ICFbW3BsYXRmb3JtV2lkZ2V0KCkgd2lu
ZG93XSBpc1Zpc2libGVdOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xs
T3JpZ2luWChpbnQgeCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxPcmlnaW4o
Y29uc3QgSW50UG9pbnQmIG9yaWdpbiwgYm9vbCB1cGRhdGVQb3NpdGlvbikKIHsKICAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgW3Njcm9sbFZpZXcoKSBzZXRTY3JvbGxPcmln
aW5YOnhdOworICAgIFtzY3JvbGxWaWV3KCkgc2V0U2Nyb2xsT3JpZ2luOm9yaWdpbiB1cGRhdGVQ
b3NpdGlvbjp1cGRhdGVQb3NpdGlvbl07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
IH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiA3Mjk0NykKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3Myw3ICs3
NzMsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRSb290Qm94RGVjb3JhdGlvbnMoCiAgICAgLy8g
VGhlIGJhY2tncm91bmQgb2YgdGhlIGJveCBnZW5lcmF0ZWQgYnkgdGhlIHJvb3QgZWxlbWVudCBj
b3ZlcnMgdGhlIGVudGlyZSBjYW52YXMgaW5jbHVkaW5nCiAgICAgLy8gaXRzIG1hcmdpbnMuCiAg
ICAgaW50IGJ4ID0gdHggLSBtYXJnaW5MZWZ0KCkgKyB2aWV3KCktPmxlZnRMYXlvdXRPdmVyZmxv
dygpOwotICAgIGludCBieSA9IHR5IC0gbWFyZ2luVG9wKCk7CisgICAgaW50IGJ5ID0gdHkgLSBt
YXJnaW5Ub3AoKSArIHZpZXcoKS0+dG9wTGF5b3V0T3ZlcmZsb3coKTsKICAgICBpbnQgYncgPSBt
YXgodyArIG1hcmdpbkxlZnQoKSArIG1hcmdpblJpZ2h0KCkgKyBib3JkZXJMZWZ0KCkgKyBib3Jk
ZXJSaWdodCgpLCBydyk7CiAgICAgaW50IGJoID0gbWF4KGggKyBtYXJnaW5Ub3AoKSArIG1hcmdp
bkJvdHRvbSgpICsgYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSwgcmgpOwogCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcAkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw4IEBAIHZv
aWQgUmVuZGVyVmlldzo6bGF5b3V0KCkKICAgICAvLyBSZXNldCBvdmVyZmxvdyBhbmQgdGhlbiBy
ZXBsYWNlIGl0IHdpdGggZG9jV2lkdGggYW5kIGRvY0hlaWdodC4KICAgICBtX292ZXJmbG93LmNs
ZWFyKCk7CiAgICAgaW50IGxlZnRPdmVyZmxvdyA9IGRvY0xlZnQoKTsKLSAgICBhZGRMYXlvdXRP
dmVyZmxvdyhJbnRSZWN0KGxlZnRPdmVyZmxvdywgMCwgZG9jV2lkdGgobGVmdE92ZXJmbG93KSwg
ZG9jSGVpZ2h0KCkpKTsKKyAgICBpbnQgdG9wT3ZlcmZsb3cgPSBkb2NUb3AoKTsKKyAgICBhZGRM
YXlvdXRPdmVyZmxvdyhJbnRSZWN0KGxlZnRPdmVyZmxvdywgdG9wT3ZlcmZsb3csIGRvY1dpZHRo
KGxlZnRPdmVyZmxvdyksIGRvY0hlaWdodCh0b3BPdmVyZmxvdykpKTsKIAogICAgIEFTU0VSVChs
YXlvdXREZWx0YSgpID09IEludFNpemUoKSk7CiAgICAgQVNTRVJUKG1fbGF5b3V0U3RhdGVEaXNh
YmxlQ291bnQgPT0gMCk7CkBAIC02MTcsOSArNjE4LDE4IEBAIEludFJlY3QgUmVuZGVyVmlldzo6
dmlld1JlY3QoKSBjb25zdAogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAKLWludCBSZW5kZXJW
aWV3Ojpkb2NIZWlnaHQoKSBjb25zdAoraW50IFJlbmRlclZpZXc6OmRvY1RvcCgpIGNvbnN0CiB7
Ci0gICAgaW50IGggPSBsb3dlc3RQb3NpdGlvbigpOworICAgIC8vIENsaXAgb3V0IHRvcCBvdmVy
ZmxvdyBpbiB2ZXJ0aWNhbCBMVFIgcGFnZXMgb3IgaG9yaXpvbnRhbC10YiBwYWdlcy4KKyAgICBp
ZiAoKCFzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpICYmIHN0eWxlKCktPmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSkgfHwgc3R5bGUoKS0+d3JpdGluZ01vZGUoKSA9PSBUb3BUb0Jv
dHRvbVdyaXRpbmdNb2RlKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gc3RkOjptaW4o
MCwgdG9wbW9zdFBvc2l0aW9uKCkpOworfQorCitpbnQgUmVuZGVyVmlldzo6ZG9jSGVpZ2h0KGlu
dCB0b3BPdmVyZmxvdykgY29uc3QKK3sKKyAgICBpbnQgaCA9ICgoIXN0eWxlKCktPmlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkgJiYgc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB8
fCBzdHlsZSgpLT53cml0aW5nTW9kZSgpID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUpID8KKyAg
ICAgICAgICAgICAgICBsb3dlc3RQb3NpdGlvbigpIDogaGVpZ2h0KCkgLSB0b3BPdmVyZmxvdzsK
IAogICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgZG8gYW55IG1hcmdpbiBjb2xsYXBzaW5nLgog
ICAgIC8vIEluc3RlYWQgb2YgdGhpcyBkaCBjb21wdXRhdGlvbiB3ZSBzaG91bGQga2VlcCB0aGUg
cmVzdWx0CkBAIC02MzYsMTMgKzY0NiwxNiBAQCBpbnQgUmVuZGVyVmlldzo6ZG9jSGVpZ2h0KCkg
Y29uc3QKIAogaW50IFJlbmRlclZpZXc6OmRvY0xlZnQoKSBjb25zdAogewotICAgIC8vIENsaXAg
b3V0IGxlZnQgb3ZlcmZsb3cgaW4gTFRSIHBhZ2UuCi0gICAgcmV0dXJuIHN0eWxlKCktPmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSA/IDAgOiBzdGQ6Om1pbigwLCBsZWZ0bW9zdFBvc2l0aW9uKCkp
OworICAgIC8vIENsaXAgb3V0IGxlZnQgb3ZlcmZsb3cgaW4gaG9yaXpvbnRhbCBMVFIgcGFnZXMg
b3IgdmVydGljYWwtbHIgcGFnZXMuCisgICAgaWYgKChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0
aW5nTW9kZSgpICYmIHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgfHwgc3R5bGUo
KS0+d3JpdGluZ01vZGUoKSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gc3RkOjptaW4oMCwgbGVmdG1vc3RQb3NpdGlvbigpKTsKIH0KIAog
aW50IFJlbmRlclZpZXc6OmRvY1dpZHRoKGludCBsZWZ0T3ZlcmZsb3cpIGNvbnN0CiB7Ci0gICAg
aW50IHcgPSBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyByaWdodG1vc3RQb3Np
dGlvbigpIDogd2lkdGgoKSAtIGxlZnRPdmVyZmxvdzsKKyAgICBpbnQgdyA9ICgoc3R5bGUoKS0+
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAmJiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkpIHx8IHN0eWxlKCktPndyaXRpbmdNb2RlKCkgPT0gTGVmdFRvUmlnaHRXcml0aW5nTW9k
ZSkgPyAKKyAgICAgICAgICAgICAgICByaWdodG1vc3RQb3NpdGlvbigpIDogd2lkdGgoKSAtIGxl
ZnRPdmVyZmxvdzsKIAogICAgIGZvciAoUmVuZGVyQm94KiBjID0gZmlyc3RDaGlsZEJveCgpOyBj
OyBjID0gYy0+bmV4dFNpYmxpbmdCb3goKSkgewogICAgICAgICBpbnQgZHcgPSBjLT53aWR0aCgp
ICsgYy0+bWFyZ2luTGVmdCgpICsgYy0+bWFyZ2luUmlnaHQoKTsKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmgJKHJldmlzaW9uIDcyOTQ3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsOCArMTcyLDkgQEAgcHJvdGVjdGVkOgogCiBwcml2
YXRlOgogICAgIGJvb2wgc2hvdWxkUmVwYWludChjb25zdCBJbnRSZWN0JiByKSBjb25zdDsKLSAg
ICAgICAgCi0gICAgaW50IGRvY0hlaWdodCgpIGNvbnN0OworICAgIAorICAgIGludCBkb2NUb3Ao
KSBjb25zdDsKKyAgICBpbnQgZG9jSGVpZ2h0KGludCB0b3BPdmVyZmxvdykgY29uc3Q7CiAgICAg
aW50IGRvY0xlZnQoKSBjb25zdDsKICAgICBpbnQgZG9jV2lkdGgoaW50IGxlZnRPdmVyZmxvdykg
Y29uc3Q7CiAKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzA1NykKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMTItMDEgIERhdmlkIEh5YXR0
ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjY0
NQorICAgICAgICAKKyAgICAgICAgUGFydCAxIG9mIG1ha2luZyBzY3JvbGxpbmcgd29yayB3aXRo
IHZlcnRpY2FsIHRleHQuIFRoaXMgcGF0Y2ggZ2VuZXJhbGl6ZXMgdGhlIHNjcm9sbE9yaWdpblgg
Y29uY2VwdAorICAgICAgICByZWNlbnRseSBhZGRlZCBmb3IgaG9yaXpvbnRhbCBSVEwgZG9jdW1l
bnRzIGFuZCBhcHBsaWVzIGl0IHRvIHdyaXRpbmcgbW9kZXMgYXMgd2VsbC4gIE5vdyB0aGUKKyAg
ICAgICAgc2Nyb2xsT3JpZ2luIGlzIGEgcG9pbnQsIHNpbmNlIHlvdSBjYW4gc3RhcnQgb2ZmIGxv
Y2tlZCB0byB0aGUgYm90dG9tIG9yIGxvY2tlZCB0byB0aGUgcmlnaHQuCisgICAgICAgIAorICAg
ICAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMgbnVtZXJvdXMgYnVncyB3aXRoIHRoZSBzY3JvbGxP
cmlnaW4gY29kZSB1c2luZyBuYXRpdmUgTWFjIE5TU2Nyb2xsVmlld3MgYW5kCisgICAgICAgIG1h
a2VzIHRoZW0gYmVoYXZlIHRoZSBzYW1lIGFzIHRoZSBjcm9zcy1wbGF0Zm9ybSBjb2RlIChhbGxv
d2luZyBmb3IgY3Jvc3MtcGxhdGZvcm0gcmVzdWx0cyB0byBiZQorICAgICAgICBsYW5kZWQpLgor
CisgICAgICAgICogV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubW06CisgICAgICAg
ICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyBhZGp1c3RGb3JTY3JvbGxPcmlnaW5DaGFuZ2Vd
KToKKyAgICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHVwZGF0ZVNjcm9sbGVyc10p
OgorICAgICAgICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgcmVmbGVjdFNjcm9sbGVkQ2xp
cFZpZXc6XSk6CisgICAgICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyBzZXRTY3JvbGxP
cmlnaW46dXBkYXRlUG9zaXRpb246XSk6CisgICAgICAgICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJz
VmlldyBzY3JvbGxPcmlnaW5dKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lVmlldy5tbToK
KyAgICAgICAgKC1bV2ViRnJhbWVWaWV3IF9zY3JvbGxUb0JlZ2lubmluZ09mRG9jdW1lbnRdKToK
KyAgICAgICAgKC1bV2ViRnJhbWVWaWV3IF9zY3JvbGxUb0VuZE9mRG9jdW1lbnRdKToKKwogMjAx
MC0xMS0yOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNT
Y3JvbGxCYXJzVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHlu
YW1pY1Njcm9sbEJhcnNWaWV3Lm1tCShyZXZpc2lvbiA3Mjk0NykKKysrIFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTYzLDEy
ICs2MywxNCBAQCBzdHJ1Y3QgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3UHJpdmF0ZSB7CiAgICAg
Ym9vbCBob3Jpem9udGFsU2Nyb2xsaW5nQWxsb3dlZEJ1dFNjcm9sbGVySGlkZGVuOwogICAgIGJv
b2wgdmVydGljYWxTY3JvbGxpbmdBbGxvd2VkQnV0U2Nyb2xsZXJIaWRkZW47CiAKLSAgICAvLyBz
Y3JvbGxPcmlnaW5YIGlzIDAgZm9yIExUUiBwYWdlIGFuZCBpcyB0aGUgbmVnYXRpdmUgb2YgbGVm
dCBsYXlvdXQgb3ZlcmZsb3cgdmFsdWUgZm9yIFJUTCBwYWdlLgotICAgIGludCBzY3JvbGxPcmln
aW5YOworICAgIC8vIHNjcm9sbE9yaWdpbiBpcyBzZXQgZm9yIHZhcmlvdXMgY29tYmluYXRpb25z
IG9mIHdyaXRpbmcgbW9kZSBhbmQgZGlyZWN0aW9uLiAgU2VlIHRoZSBjb21tZW50IG5leHQgdG8g
dGhlCisgICAgLy8gY29ycmVzcG9uZGluZyBtZW1iZXIgaW4gU2Nyb2xsVmlldy5oLgorICAgIE5T
UG9pbnQgc2Nyb2xsT3JpZ2luOwogCiAgICAgLy8gRmxhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBz
Y3JvbGxiYXIgdGh1bWIncyBpbml0aWFsIHBvc2l0aW9uIG5lZWRzIHRvCiAgICAgLy8gYmUgbWFu
dWFsbHkgc2V0LgotICAgIGJvb2wgc2V0U2Nyb2xsYmFyVGh1bWJJbml0aWFsUG9zaXRpb247Cisg
ICAgYm9vbCBzY3JvbGxPcmlnaW5DaGFuZ2VkOworICAgIE5TUG9pbnQgc2Nyb2xsUG9zaXRpb25F
eGNsdWRpbmdPcmlnaW47CiAKICAgICBib29sIGluUHJvZ3JhbW1hdGljU2Nyb2xsOwogfTsKQEAg
LTIxNSwyNyArMjE3LDIyIEBAIC0gKHZvaWQpc2V0U2Nyb2xsQmFyc1N1cHByZXNzZWQ6KEJPT0wp
c3UKICNlbmRpZgogfQogCi0tICh2b2lkKXJlZnJlc2hJbml0aWFsU2Nyb2xsYmFyUG9zaXRpb24K
Ky0gKHZvaWQpYWRqdXN0Rm9yU2Nyb2xsT3JpZ2luQ2hhbmdlCiB7Ci0gICAgaWYgKF9wcml2YXRl
LT5zZXRTY3JvbGxiYXJUaHVtYkluaXRpYWxQb3NpdGlvbikgewotICAgICAgICBOU1ZpZXcgKmRv
Y3VtZW50VmlldyA9IFtzZWxmIGRvY3VtZW50Vmlld107Ci0gICAgICAgIE5TUmVjdCBkb2N1bWVu
dFJlY3QgPSBbZG9jdW1lbnRWaWV3IGJvdW5kc107CisgICAgaWYgKCFfcHJpdmF0ZS0+c2Nyb2xs
T3JpZ2luQ2hhbmdlZCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIC8vIElmIHNjcm9sbE9y
aWdpblggaXMgbm9uLXplcm8gdGhhdCBtZWFucyB0aGF0IHRoZXJlJ3MgYSBsZWZ0IG92ZXJmbG93
IDw9PiB0aGlzIGlzIGFuIFJUTCBkb2N1bWVudCBhbmQgdGh1cwotICAgICAgICAvLyB0aGUgaW5p
dGlhbCBwb3NpdGlvbiBvZiB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIgdGh1bWIgc2hvdWxkIGJl
IG9uIHRoZSByaWdodC4KLSAgICAgICAgLy8gRklYTUU6IElmIGtub3dsZWRnZSBvZiBkb2N1bWVu
dCBkaXJlY3Rpb25hbGl0eSBpcyBldmVyIHByb3BhZ2F0ZWQgdG8gdGhlIHNjcm9sbCB2aWV3LCBp
dCBwcm9iYWJseSBtYWtlcwotICAgICAgICAvLyBtb3JlIHNlbnNlIHRvIHVzZSB0aGUgZGlyZWN0
aW9uYWxpdHkgZGlyZWN0bHkgaW4gdGhlIGJlbG93IGlmIHN0YXRlbWVudCwgcmF0aGVyIHRoYW4g
ZG9pbmcgc28gaW5kaXJlY3RseQotICAgICAgICAvLyB0aHJvdWdoIHNjcm9sbE9yaWdpblguCi0g
ICAgICAgIGlmIChfcHJpdmF0ZS0+c2Nyb2xsT3JpZ2luWCAhPSAwKSB7Ci0gICAgICAgICAgICAv
LyBUaGUgY2FsbCB0byBbTlNWaWV3IHNjcm9sbFBvaW50Ol0gZmlyZXMgb2ZmIG5vdGlmaWNhdGlv
biB0aGUgaGFuZGxlciBmb3Igd2hpY2ggbmVlZHMgdG8ga25vdyB0aGF0Ci0gICAgICAgICAgICAv
LyB3ZSdyZSBzZXR0aW5nIHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiBzbyBpdCBkb2Vzbid0
IGludGVycHJldCB0aGlzIGFzIGEgdXNlciBhY3Rpb24gYW5kCi0gICAgICAgICAgICAvLyBmaXJl
IG9mZiBhIEpTIGV2ZW50LgotICAgICAgICAgICAgX3ByaXZhdGUtPmluUHJvZ3JhbW1hdGljU2Ny
b2xsID0gdHJ1ZTsKLSAgICAgICAgICAgIFtkb2N1bWVudFZpZXcgc2Nyb2xsUG9pbnQ6TlNNYWtl
UG9pbnQoTlNNYXhYKGRvY3VtZW50UmVjdCkgLSBOU1dpZHRoKFtzZWxmIGNvbnRlbnRWaWV3RnJh
bWVdKSwgMCldOwotICAgICAgICAgICAgX3ByaXZhdGUtPmluUHJvZ3JhbW1hdGljU2Nyb2xsID0g
ZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgX3ByaXZhdGUtPnNldFNjcm9sbGJhclRodW1iSW5p
dGlhbFBvc2l0aW9uID0gZmFsc2U7Ci0gICAgfQorICAgIF9wcml2YXRlLT5zY3JvbGxPcmlnaW5D
aGFuZ2VkID0gZmFsc2U7CisKKyAgICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtzZWxmIGRvY3Vt
ZW50Vmlld107CisgICAgTlNSZWN0IGRvY3VtZW50UmVjdCA9IFtkb2N1bWVudFZpZXcgYm91bmRz
XTsKKworICAgIC8vIFRoZSBjYWxsIHRvIFtOU1ZpZXcgc2Nyb2xsUG9pbnQ6XSBmaXJlcyBvZmYg
bm90aWZpY2F0aW9uIHRoZSBoYW5kbGVyIGZvciB3aGljaCBuZWVkcyB0byBrbm93IHRoYXQKKyAg
ICAvLyB3ZSdyZSBzZXR0aW5nIHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiBzbyBpdCBkb2Vz
bid0IGludGVycHJldCB0aGlzIGFzIGEgdXNlciBhY3Rpb24gYW5kCisgICAgLy8gZmlyZSBvZmYg
YSBKUyBldmVudC4KKyAgICBfcHJpdmF0ZS0+aW5Qcm9ncmFtbWF0aWNTY3JvbGwgPSB0cnVlOwor
ICAgIFtkb2N1bWVudFZpZXcgc2Nyb2xsUG9pbnQ6TlNNYWtlUG9pbnQoX3ByaXZhdGUtPnNjcm9s
bFBvc2l0aW9uRXhjbHVkaW5nT3JpZ2luLnggKyBkb2N1bWVudFJlY3Qub3JpZ2luLngsIF9wcml2
YXRlLT5zY3JvbGxQb3NpdGlvbkV4Y2x1ZGluZ09yaWdpbi55ICsgZG9jdW1lbnRSZWN0Lm9yaWdp
bi55KV07CisgICAgX3ByaXZhdGUtPmluUHJvZ3JhbW1hdGljU2Nyb2xsID0gZmFsc2U7CiB9CiAK
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjTWF4VXBkYXRlU2Nyb2xsYmFyc1Bhc3MgPSAyOwpAQCAt
MzM5LDE0ICszMzYsMTIgQEAgLSAodm9pZCl1cGRhdGVTY3JvbGxlcnMKICAgICBpZiAoaGFzSG9y
aXpvbnRhbFNjcm9sbGVyICE9IG5ld0hhc0hvcml6b250YWxTY3JvbGxlcikgewogICAgICAgICBf
cHJpdmF0ZS0+aW5VcGRhdGVTY3JvbGxlcnMgPSBZRVM7CiAgICAgICAgIFtzZWxmIHNldEhhc0hv
cml6b250YWxTY3JvbGxlcjpuZXdIYXNIb3Jpem9udGFsU2Nyb2xsZXJdOwotICAgICAgICAKLSAg
ICAgICAgLy8gRm9yIFJUTCBkb2N1bWVudHMsIHdlIG5lZWQgdG8gc2V0IHRoZSBpbml0aWFsIHBv
c2l0aW9uIG9mIHRoZQotICAgICAgICAvLyBob3Jpem9udGFsIHNjcm9sbGJhciB0aHVtYiB0byBi
ZSBvbiB0aGUgcmlnaHQuCi0gICAgICAgIGlmIChuZXdIYXNIb3Jpem9udGFsU2Nyb2xsZXIpCi0g
ICAgICAgICAgICBfcHJpdmF0ZS0+c2V0U2Nyb2xsYmFyVGh1bWJJbml0aWFsUG9zaXRpb24gPSB0
cnVlOwotICAgICAgICAKICAgICAgICAgX3ByaXZhdGUtPmluVXBkYXRlU2Nyb2xsZXJzID0gTk87
CiAgICAgICAgIG5lZWRzTGF5b3V0ID0gWUVTOworICAgICAgICBOU1ZpZXcgKmRvY3VtZW50Vmll
dyA9IFtzZWxmIGRvY3VtZW50Vmlld107CisgICAgICAgIE5TUmVjdCBkb2N1bWVudFJlY3QgPSBb
ZG9jdW1lbnRWaWV3IGJvdW5kc107CisgICAgICAgIGlmIChkb2N1bWVudFJlY3Qub3JpZ2luLnkg
PCAwICYmICFuZXdIYXNIb3Jpem9udGFsU2Nyb2xsZXIpCisgICAgICAgICAgICBbZG9jdW1lbnRW
aWV3IHNldEJvdW5kc09yaWdpbjpOU01ha2VQb2ludChkb2N1bWVudFJlY3Qub3JpZ2luLngsIGRv
Y3VtZW50UmVjdC5vcmlnaW4ueSArIDE1KV07CiAgICAgfQogCiAgICAgaWYgKGhhc1ZlcnRpY2Fs
U2Nyb2xsZXIgIT0gbmV3SGFzVmVydGljYWxTY3JvbGxlcikgewpAQCAtMzU0LDYgKzM0OSwxMCBA
QCAtICh2b2lkKXVwZGF0ZVNjcm9sbGVycwogICAgICAgICBbc2VsZiBzZXRIYXNWZXJ0aWNhbFNj
cm9sbGVyOm5ld0hhc1ZlcnRpY2FsU2Nyb2xsZXJdOwogICAgICAgICBfcHJpdmF0ZS0+aW5VcGRh
dGVTY3JvbGxlcnMgPSBOTzsKICAgICAgICAgbmVlZHNMYXlvdXQgPSBZRVM7CisgICAgICAgIE5T
VmlldyAqZG9jdW1lbnRWaWV3ID0gW3NlbGYgZG9jdW1lbnRWaWV3XTsKKyAgICAgICAgTlNSZWN0
IGRvY3VtZW50UmVjdCA9IFtkb2N1bWVudFZpZXcgYm91bmRzXTsKKyAgICAgICAgaWYgKGRvY3Vt
ZW50UmVjdC5vcmlnaW4ueCA8IDAgJiYgIW5ld0hhc1ZlcnRpY2FsU2Nyb2xsZXIpCisgICAgICAg
ICAgICBbZG9jdW1lbnRWaWV3IHNldEJvdW5kc09yaWdpbjpOU01ha2VQb2ludChkb2N1bWVudFJl
Y3Qub3JpZ2luLnggKyAxNSwgZG9jdW1lbnRSZWN0Lm9yaWdpbi55KV07CiAgICAgfQogCiAgICAg
aWYgKG5lZWRzTGF5b3V0ICYmIF9wcml2YXRlLT5pblVwZGF0ZVNjcm9sbGVyc0xheW91dFBhc3Mg
PCBjTWF4VXBkYXRlU2Nyb2xsYmFyc1Bhc3MgJiYKQEAgLTQxMCw3ICs0MDksNyBAQCAtICh2b2lk
KXJlZmxlY3RTY3JvbGxlZENsaXBWaWV3OihOU0NsaXBWCiAgICAgLy8gVGhlIGNhbGwgdG8gW05T
VmlldyByZWZsZWN0U2Nyb2xsZWRDbGlwVmlld10gc2V0cyB0aGUgc2Nyb2xsYmFyIHRodW1iCiAg
ICAgLy8gcG9zaXRpb24gdG8gMCAodGhlIGxlZnQpIHdoZW4gdGhlIHZpZXcgaXMgaW5pdGlhbGx5
IGRpc3BsYXllZC4KICAgICAvLyBUaGlzIGNhbGwgdXBkYXRlcyB0aGUgaW5pdGlhbCBwb3NpdGlv
biBjb3JyZWN0bHkuCi0gICAgW3NlbGYgcmVmcmVzaEluaXRpYWxTY3JvbGxiYXJQb3NpdGlvbl07
CisgICAgW3NlbGYgYWRqdXN0Rm9yU2Nyb2xsT3JpZ2luQ2hhbmdlXTsKIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykgJiYgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQogICAg
IE5TVmlldyAqZG9jdW1lbnRWaWV3ID0gW3NlbGYgZG9jdW1lbnRWaWV3XTsKQEAgLTU3MywyMiAr
NTcyLDI5IEBAIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzSWdub3JlZCAKICAgICByZXR1cm4gW3N1
cGVyIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRdOwogfQogCi0tICh2b2lkKXNldFNjcm9sbE9yaWdp
blg6KGludClzY3JvbGxPcmlnaW5YCistICh2b2lkKXNldFNjcm9sbE9yaWdpbjooTlNQb2ludClz
Y3JvbGxPcmlnaW4gdXBkYXRlUG9zaXRpb246KEJPT0wpdXBkYXRlUG9zaXRpb24KIHsKLSAgICBf
cHJpdmF0ZS0+c2Nyb2xsT3JpZ2luWCA9IHNjcm9sbE9yaWdpblg7Ci0gICAgCisgICAgX3ByaXZh
dGUtPnNjcm9sbE9yaWdpbiA9IHNjcm9sbE9yaWdpbjsKICAgICBpZCBkb2NWaWV3ID0gW3NlbGYg
ZG9jdW1lbnRWaWV3XTsKLSAgICBpZiAoc2Nyb2xsT3JpZ2luWCAhPSBbZG9jVmlldyBib3VuZHNd
Lm9yaWdpbi54KSB7Ci0gICAgICAgIC8vICItW3NlbGYgc2Nyb2xsT3JpZ2luWF0iIGlzIGVxdWFs
IHRvIHRoZSBsZWZ0IGxheW91dCBvdmVyZmxvdy4KLSAgICAgICAgLy8gTWFrZSBEb2N1bWVudCBi
b3VuZHMgb3JpZ2luIHggY29vcmRpbmF0ZSBjb3JyZXNwb25kIHRvIHRoZSBsZWZ0IG92ZXJmbG93
IHNvIHRoZSBlbnRpcmUgY2FudmFzIGlzIGNvdmVyZWQgYnkgdGhlIGRvY3VtZW50LgotICAgICAg
ICBbZG9jVmlldyBzZXRCb3VuZHNPcmlnaW46TlNNYWtlUG9pbnQoLXNjcm9sbE9yaWdpblgsIFtk
b2NWaWV3IGJvdW5kc10ub3JpZ2luLnkpXTsKLSAgICB9CisgICAgTlNQb2ludCBkb2NPcmlnaW4g
PSBbZG9jVmlldyBib3VuZHNdLm9yaWdpbjsKKyAgICBpZiAoZG9jT3JpZ2luLnggIT0gLXNjcm9s
bE9yaWdpbi54IHx8IGRvY09yaWdpbi55ICE9IC1zY3JvbGxPcmlnaW4ueSkgeworICAgICAgICBO
U1JlY3QgdmlzaWJsZVJlY3QgPSBbc2VsZiBkb2N1bWVudFZpc2libGVSZWN0XTsKKyAgICAgICAg
IAorICAgICAgICBbZG9jVmlldyBzZXRCb3VuZHNPcmlnaW46TlNNYWtlUG9pbnQoLXNjcm9sbE9y
aWdpbi54LCAtc2Nyb2xsT3JpZ2luLnkpXTsKIAorICAgICAgICBfcHJpdmF0ZS0+c2Nyb2xsT3Jp
Z2luQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIAorICAgICAgICAvLyBNYWludGFpbiBvdXIgb3Jp
Z2luYWwgcG9zaXRpb24gaW4gdGhlIHByZXNlbmNlIG9mIHRoZSBuZXcgc2Nyb2xsIG9yaWdpbi4K
KyAgICAgICAgX3ByaXZhdGUtPnNjcm9sbFBvc2l0aW9uRXhjbHVkaW5nT3JpZ2luID0gTlNNYWtl
UG9pbnQodmlzaWJsZVJlY3Qub3JpZ2luLnggKyBzY3JvbGxPcmlnaW4ueCwgdmlzaWJsZVJlY3Qu
b3JpZ2luLnkgKyBzY3JvbGxPcmlnaW4ueSk7CisgICAgICAgIAorICAgICAgICBpZiAodXBkYXRl
UG9zaXRpb24pIC8vIE90aGVyd2lzZSB3ZSdsbCBqdXN0IGxldCB0aGUgc25hcCBoYXBwZW4gd2hl
biB3ZSB1cGRhdGUgZm9yIHRoZSByZXNpemUuCisgICAgICAgICAgICBbc2VsZiBhZGp1c3RGb3JT
Y3JvbGxPcmlnaW5DaGFuZ2VdOworICAgIH0KIH0KIAotLSAoaW50KXNjcm9sbE9yaWdpblgKKy0g
KE5TUG9pbnQpc2Nyb2xsT3JpZ2luCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5zY3JvbGxPcmln
aW5YOworICAgIHJldHVybiBfcHJpdmF0ZS0+c2Nyb2xsT3JpZ2luOwogfQogCiBAZW5kCkluZGV4
OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0JKHJldmlzaW9uIDcyOTQ3KQorKysgV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTM2LDcgKzUz
Niw4IEBAIC0gKEJPT0wpX3Njcm9sbFRvQmVnaW5uaW5nT2ZEb2N1bWVudAogICAgIGlmICghW3Nl
bGYgX2lzU2Nyb2xsYWJsZV0pCiAgICAgICAgIHJldHVybiBOTzsKICAgICBOU1BvaW50IHBvaW50
ID0gW1tbc2VsZiBfc2Nyb2xsVmlld10gZG9jdW1lbnRWaWV3XSBmcmFtZV0ub3JpZ2luOwotICAg
IHBvaW50LnggKz0gW1tzZWxmIF9zY3JvbGxWaWV3XSBzY3JvbGxPcmlnaW5YXTsKKyAgICBwb2lu
dC54ICs9IFtbc2VsZiBfc2Nyb2xsVmlld10gc2Nyb2xsT3JpZ2luXS54OworICAgIHBvaW50Lnkg
Kz0gW1tzZWxmIF9zY3JvbGxWaWV3XSBzY3JvbGxPcmlnaW5dLnk7CiAgICAgcmV0dXJuIFtbc2Vs
ZiBfY29udGVudFZpZXddIF9zY3JvbGxUbzomcG9pbnQgYW5pbWF0ZTpZRVNdOwogfQogCkBAIC01
NDgsNyArNTQ5LDggQEAgLSAoQk9PTClfc2Nyb2xsVG9FbmRPZkRvY3VtZW50CiAgICAgICAgIHJl
dHVybiBOTzsKICAgICBOU1JlY3QgZnJhbWUgPSBbW1tzZWxmIF9zY3JvbGxWaWV3XSBkb2N1bWVu
dFZpZXddIGZyYW1lXTsKICAgICBOU1BvaW50IHBvaW50ID0gTlNNYWtlUG9pbnQoZnJhbWUub3Jp
Z2luLngsIE5TTWF4WShmcmFtZSkpOwotICAgIHBvaW50LnggKz0gW1tzZWxmIF9zY3JvbGxWaWV3
XSBzY3JvbGxPcmlnaW5YXTsKKyAgICBwb2ludC54ICs9IFtbc2VsZiBfc2Nyb2xsVmlld10gc2Ny
b2xsT3JpZ2luXS54OworICAgIHBvaW50LnkgKz0gW1tzZWxmIF9zY3JvbGxWaWV3XSBzY3JvbGxP
cmlnaW5dLnk7CiAgICAgcmV0dXJuIFtbc2VsZiBfY29udGVudFZpZXddIF9zY3JvbGxUbzomcG9p
bnQgYW5pbWF0ZTpZRVNdOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzA1NykKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEwLTEy
LTAxICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDY2NDUKKyAgICAgICAgCisgICAgICAgIFBhcnQgMSBvZiBtYWtpbmcgc2Ny
b2xsaW5nIHdvcmsgd2l0aCB2ZXJ0aWNhbCB0ZXh0LiBUaGlzIHBhdGNoIGdlbmVyYWxpemVzIHRo
ZSBzY3JvbGxPcmlnaW5YIGNvbmNlcHQKKyAgICAgICAgcmVjZW50bHkgYWRkZWQgZm9yIGhvcml6
b250YWwgUlRMIGRvY3VtZW50cyBhbmQgYXBwbGllcyBpdCB0byB3cml0aW5nIG1vZGVzIGFzIHdl
bGwuICBOb3cgdGhlCisgICAgICAgIHNjcm9sbE9yaWdpbiBpcyBhIHBvaW50LCBzaW5jZSB5b3Ug
Y2FuIHN0YXJ0IG9mZiBsb2NrZWQgdG8gdGhlIGJvdHRvbSBvciBsb2NrZWQgdG8gdGhlIHJpZ2h0
LgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGZpeGVzIG51bWVyb3VzIGJ1Z3Mg
d2l0aCB0aGUgc2Nyb2xsT3JpZ2luIGNvZGUgdXNpbmcgbmF0aXZlIE1hYyBOU1Njcm9sbFZpZXdz
IGFuZAorICAgICAgICBtYWtlcyB0aGVtIGJlaGF2ZSB0aGUgc2FtZSBhcyB0aGUgY3Jvc3MtcGxh
dGZvcm0gY29kZSAoYWxsb3dpbmcgZm9yIGNyb3NzLXBsYXRmb3JtIHJlc3VsdHMgdG8gYmUKKyAg
ICAgICAgbGFuZGVkKS4KKworICAgICAgICAqIGZhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1p
bi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLWRvZXNudC1maXJlLW9uc2Nyb2xs
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1y
dGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS92ZXJ0aWNhbC1zY3Jv
bGxiYXItaW4tcnRsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3ZlcnRpY2FsLXNj
cm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1y
dGwtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2Rv
bS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorCiAyMDEwLTEyLTAxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9u
dGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDkgQEAKK29yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6b250
YWwgc2Nyb2xsOiA6IFN1Y2Nlc3MKK2NvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxYIDog
U3VjY2Vzcworem9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjogU3VjY2Vz
cworcmVzaXplIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK3doZWVsIHNjcm9s
bCBwcmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK0tleURvd24g
SE9NRSBtb3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogMAorS2V5
RG93biBFTkQgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2U6IDAK
K3NlbGVjdEFsbCBzZWxlY3RzIGFsbCBkb2N1bWVudDogU3VjY2VzcwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9s
bGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitvcmlnaW5hbCBzY3JvbGwgeCBm
b3IgUlRMIHBhZ2UgOiBTdWNjZXNzCitob3Jpem9udGFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6
IFN1Y2Nlc3MKK29yaWdpbmFsIHNjcm9sbCB4IGZvciBMVFIgcGFnZSA6IFN1Y2Nlc3MKK2hvcml6
b250YWwgc2Nyb2xsIHggZm9yIExUUiBwYWdlIDogU3VjY2VzcworCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3Jv
bGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRp
Y2FsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLWlu
LXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNCBAQAorVGhpcyB0ZXN0cyB0aGF0IHdoZW4gYSBwYWdlIHdpdGggYW4gUlRMIG92ZXJm
bG93IGlzIGluaXRpYWxseSBsb2FkZWQsIG5vIHNjcm9sbCBldmVudCBpcyBzZW50LgorVGhpcyB0
ZXN0IGhhcyBwYXNzZWQgaWYgdGhlIHRleHQgIkZBSUwgLSBzY3JvbGwgZXZlbnQgcmVjZWl2ZWQh
IiBkb2VzIG5vdCBhcHBlYXIgYmVsb3cuCitMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29u
c2VjdGV0dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1
bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVu
aWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFs
aXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiBy
ZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVn
aWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9u
IHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmlt
IGlkIGVzdCBsYWJvcnVtLiIKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdmVydGljYWwt
c2Nyb2xsYmFyLWluLXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZp
cmUtb25zY3JvbGwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3Zl
cnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBkaXI9cnRsIHN0
eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTp2ZXJ0aWNhbC1sciI+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgorICAgICAgICAgICAgZnVuY3Rpb24g
bG9nKHN0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGxpLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAgICAgICAgICAgICAgIHZhciBjb25zb2xl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgICAgICAgICBj
b25zb2xlLmFwcGVuZENoaWxkKGxpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb25s
b2FkID0gZnVuY3Rpb24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZG9j
dW1lbnQub25zY3JvbGw9ZnVuY3Rpb24oKXtsb2coIkZBSUwgLSBzY3JvbGwgZXZlbnQgcmVjZWl2
ZWQhIik7fQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAg
ICAgIDxkaXYgZGlyPWx0cj4KKyAgICAgICAgPHA+VGhpcyB0ZXN0cyB0aGF0IHdoZW4gYSBwYWdl
IHdpdGggYW4gUlRMIG92ZXJmbG93IGlzIGluaXRpYWxseSBsb2FkZWQsIG5vIHNjcm9sbCBldmVu
dCBpcyBzZW50LjwvcD4KKyAgICAgICAgPHA+VGhpcyB0ZXN0IGhhcyBwYXNzZWQgaWYgdGhlIHRl
eHQgIkZBSUwgLSBzY3JvbGwgZXZlbnQgcmVjZWl2ZWQhIiBkb2VzIG5vdCBhcHBlYXIgYmVsb3cu
PC9wPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0iZGl2IiBzdHlsZT0id2hpdGVz
cGFjZTpub3dyYXA7IHdpZHRoOiAxMDAwcHg7IGhlaWdodDogNDAwMHB4OyBib3JkZXI6IDFweCBz
b2xpZCByZWQ7Ij5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlz
aWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0
IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3Ry
dWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29t
bW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGlu
IHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlh
dHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50
IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVt
LiI8L2Rpdj4KKyAgICAgICAgPHVsIGlkPSJjb25zb2xlIj48L3VsPgorICAgIDwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1y
dGwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRp
Y2FsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorb3JpZ2luYWwgc2Nyb2xsIHkgZm9yIFJUTCBwYWdl
IDogU3VjY2VzcwordmVydGljYWwgc2Nyb2xsOiA6IFN1Y2Nlc3MKK2NvbnRpbnVvdXNseSBjYWxs
IHdpbmRvdy5zY3JvbGxZIDogU3VjY2Vzcworem9vbSBpbiBhbmQgb3V0IHByZXNlcnZlIHNjcm9s
bCBwb3NpdGlvbjogU3VjY2VzcworcmVzaXplIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb246IFN1
Y2Nlc3MKK3doZWVsIHNjcm9sbCBwcmVzZXJ2ZXMgdmVydGljYWwgc2Nyb2xsIHBvc2l0aW9uOiBT
dWNjZXNzCitLZXlEb3duIEhPTUUgbW92ZSB5LXNjcm9sbCBwb3NpdGlvbiB0byBib3R0b20gZm9y
IFJUTCBwYWdlOiAwCitLZXlEb3duIEVORCBtb3ZlIHktc2Nyb2xsIHBvc2l0aW9uIHRvIGJvdHRv
bSBmb3IgUlRMIHBhZ2U6IDAKK3NlbGVjdEFsbCBzZWxlY3RzIGFsbCBkb2N1bWVudDogU3VjY2Vz
cwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJh
ci1pbi1ydGwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRp
Y2FsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDQgQEAK
KzxodG1sIGRpcj1ydGwgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOnZlcnRpY2FsLWxyIj4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+CisgICAg
ICAgICAgICBmdW5jdGlvbiBsb2coc3RyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAg
bGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKSk7CisgICAgICAgICAg
ICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOwor
ICAgICAgICAgICAgICAgIGNvbnNvbGUuYXBwZW5kQ2hpbGQobGkpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBhc3NlcnRFcXVhbChtZXNzYWdlLCBh
Y3R1YWwsIGV4cGVjdGVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChhY3R1
YWwgIT0gZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSAr
ICI6IEZhaWx1cmUsIGFjdHVhbDogIiArIGFjdHVhbCArICI7IGV4cGVjdGVkOiAiICsgZXhwZWN0
ZWQpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJcbiIg
KyBtZXNzYWdlICsgIjogU3VjY2VzcyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBmdW5jdGlvbiBhc3NlcnRDbG9zZShtZXNzYWdlLCBhY3R1YWwsIGV4cGVjdGVk
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICgoYWN0dWFsID49IGV4cGVjdGVk
ICYmIGFjdHVhbCAtIGV4cGVjdGVkIDwgNSkgfHwKKyAgICAgICAgICAgICAgICAgICAgKGV4cGVj
dGVkID49IGFjdHVhbCAmJiBleHBlY3RlZCAtIGFjdHVhbCA8IDUpKQorICAgICAgICAgICAgICAg
ICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBTdWNjZXNzIik7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJl
LCBhY3R1YWw6ICIgKyBhY3R1YWwgKyAiOyBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGV4cGVjdGVkU2Nyb2xsWCA9
IDUwMDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFNjcm9sbFkgPSAtMTAwMDsKKworICAgICAg
ICAgICAgZnVuY3Rpb24gbW91c2V3aGVlbEhhbmRsZXIoZSkgCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0RXF1YWwoIndoZWVsIHNjcm9sbCBwcmVzZXJ2ZXMgdmVydGljYWwg
c2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93LnNjcm9sbFksIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG9ubG9hZCA9IGZ1bmN0aW9uKCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHZlcnRpY2FsIHNjcm9sbGJhciBwcmVz
ZW5jZSBhbmQgdGhhdCBpdCBpcyBpbml0aWFsbHkgYXQgdGhlIGJvdHRvbSBmb3IgUlRMIHBhZ2Uu
CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoIm9yaWdpbmFsIHNjcm9sbCB5IGZvciBSVEwg
cGFnZSAiLCB3aW5kb3cuc2Nyb2xsWSwgMCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAvLyBUZXN0IGhvcml6b250YWwgc2Nyb2xsLgorICAgICAgICAgICAgICAgIHdpbmRvdy5zY3Jv
bGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0RXF1YWwoInZlcnRpY2FsIHNjcm9sbDogIiwgd2luZG93LnNjcm9sbFksIGV4cGVjdGVk
U2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgLy8gVGVzdCBjYWxsaW5nIHdpbmRvdy5zY3JvbGxZ
IGNvbnRpbnVvdXNseSB3b250IGNoYW5nZSB0aGUgc2Nyb2xsWSBwb3NpdGlvbi4KKyAgICAgICAg
ICAgICAgICBhc3NlcnRFcXVhbCgiY29udGludW91c2x5IGNhbGwgd2luZG93LnNjcm9sbFkgIiwg
d2luZG93LnNjcm9sbFksIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAKKworICAgICAg
ICAgICAgICAgIC8vIFRlc3Qgem9vbWluZyB3b250IHJlc2V0IHNjcm9sbCBwb3NpdGlvbi4KKyAg
ICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAg
ICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7Cisg
ICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLnpvb21QYWdlSW4oKTsKKyAgICAgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuem9vbVBhZ2VPdXQoKTsKKyAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0Q2xvc2UoInpvb20gaW4gYW5kIG91dCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb24iLCB3
aW5kb3cuc2Nyb2xsWSwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHJlc2l6ZSB3b250IHJlc2V0IHNj
cm9sbCBwb3NpdGlvbi4KKyAgICAgICAgICAgICAgICB3aW5kb3cucmVzaXplVG8od2luZG93Lmlu
bmVyV2lkdGgsIDEwMDApOworICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3Rl
ZFNjcm9sbFgsIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgd2luZG93LnJlc2l6
ZVRvKHdpbmRvdy5pbm5lcldpZHRoLCAyMDAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVh
bCgicmVzaXplIHByZXNlcnZlcyBzY3JvbGwgcG9zaXRpb24iLCB3aW5kb3cuc2Nyb2xsWSwgZXhw
ZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0
IHdoZWVsIHNjcm9sbCBwcmVzZXJ2ZXMgaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb24uCisgICAg
ICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCAvIDIsIGV4cGVjdGVk
U2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJkaXYiKTsKKyAgICAgICAgICAgICAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V3
aGVlbCIsIG1vdXNld2hlZWxIYW5kbGVyLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdmFyIHdo
ZWVsRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiV2hlZWxFdmVudCIpOworICAgICAgICAg
ICAgICAgIHdoZWVsRXZlbnQuaW5pdFdlYktpdFdoZWVsRXZlbnQoZXhwZWN0ZWRTY3JvbGxYIC8g
MiwgMCwgd2luZG93LCAwLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Cisg
ICAgICAgICAgICAgICAgZGl2LmRpc3BhdGNoRXZlbnQod2hlZWxFdmVudCk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0IEhPTUUvRU5EIG9wZXJhdGlvbi4KKyAgICAgICAg
ICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IE5vdCB1c2luZyBhc3NlcnQgZXF1YWwgaGVyZSBzaW5jZSB0aGUgYmVoYXZpb3IgaXMgZGlmZmVy
ZW50IGluIGVhY2ggcG9ydC4gCisgICAgICAgICAgICAgICAgICAgIC8vIEZvciBleGFtcGxlLCBp
biBNYWMsIEhPTUUvRU5EIGtleSByZXNldCBib3RoIHggYW5kIHkgc2Nyb2xsIHBvc2l0aW9uLiAK
KyAgICAgICAgICAgICAgICAgICAgLy8gSW4gQ2hyb21pdW0sIEhPTUUvRU5EIGtleSBvbmx5IHJl
c2V0IHkgc2Nyb2xsIHBvc2l0aW9uLCBhbmQgeCBzY3JvbGwgcG9zaXRpb24gaXMgcHJlc2VydmVk
LgorICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBl
eHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3du
KCJob21lIik7CisgICAgICAgICAgICAgICAgICAgIGxvZygiS2V5RG93biBIT01FIG1vdmUgeS1z
Y3JvbGwgcG9zaXRpb24gdG8gYm90dG9tIGZvciBSVEwgcGFnZTogIiArIHdpbmRvdy5zY3JvbGxZ
LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xs
WCwgZXhwZWN0ZWRTY3JvbGxZKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5
RG93bigiZW5kIik7CisgICAgICAgICAgICAgICAgICAgIGxvZygiS2V5RG93biBFTkQgbW92ZSB5
LXNjcm9sbCBwb3NpdGlvbiB0byBib3R0b20gZm9yIFJUTCBwYWdlOiAiICsgd2luZG93LnNjcm9s
bFksIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IC8vIFRlc3Qgc2VsZWN0IGFsbCBzZWxlY3RzIGFsbCBkb2N1bWVudCBjb250ZW50LgorICAgICAg
ICAgICAgICAgIHdpbmRvdy5yZXNpemVUbyg1MDAsIDUwMCk7CisgICAgICAgICAgICAgICAgdmFy
IGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsKKyAgICAgICAgICAgICAgICBk
aXYuZm9jdXMoKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0
QWxsIik7CisgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rp
b24oKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbCgic2VsZWN0QWxsIHNlbGVjdHMgYWxs
IGRvY3VtZW50Iiwgc2VsZWN0aW9uLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIGRpdi5pbm5lckhU
TUwubGVuZ3RoKSwgZGl2LmlubmVySFRNTCk7CisKKyAgICAgICAgICAgICAgICBkaXYuc3R5bGUu
ZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAg
ICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgaWQ9ImRp
diIgc3R5bGU9IndoaXRlc3BhY2U6bm93cmFwOyB3aWR0aDogMTAwMHB4OyBoZWlnaHQ6IDQwMDBw
eDsgYm9yZGVyOiAxcHggc29saWQgcmVkOyI+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNv
bnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlk
dW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZl
bmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBh
bGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4g
cmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1
Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5v
biBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5p
bSBpZCBlc3QgbGFib3J1bS4iPC9kaXY+CisgICAgICAgIDx1bCBpZD0iY29uc29sZSIgZGlyPWx0
cj48L3VsPgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L3ZlcnRpY2FsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci13aGVuLWRpci1j
aGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
dmVydGljYWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNiBAQAorb3JpZ2luYWwgc2Nyb2xsIHkgZm9yIFJUTCBwYWdlIDogU3Vj
Y2VzcwordmVydGljYWwgc2Nyb2xsIHkgZm9yIFJUTCBwYWdlIDogU3VjY2Vzcworb3JpZ2luYWwg
c2Nyb2xsIHkgZm9yIExUUiBwYWdlIDogU3VjY2VzcwordmVydGljYWwgc2Nyb2xsIHkgZm9yIExU
UiBwYWdlIDogU3VjY2VzcworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2Fs
LXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItd2hlbi1k
aXItY2hhbmdlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKHN0cikKK3sKKyAgICB2YXIgbGkgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgIGxpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKHN0cikpOworICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKTsKKyAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKK30KKworZnVuY3Rp
b24gYXNzZXJ0RXF1YWwobWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0
dWFsICE9IGV4cGVjdGVkKQorICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJl
LCBhY3R1YWw6ICIgKyBhY3R1YWwgKyAiOyBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsKKyAgICBl
bHNlCisgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSArICI6IFN1Y2Nlc3MiKTsKK30KKworb25s
b2FkID0gZnVuY3Rpb24oKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCisgICAgYXNzZXJ0RXF1YWwoIm9yaWdpbmFsIHNjcm9sbCB5IGZvciBSVEwgcGFn
ZSAiLCB3aW5kb3cuc2Nyb2xsWSwgMCk7CisgICAgd2luZG93LnNjcm9sbFRvKDAsIC0xMDApOwor
ICAgIGFzc2VydEVxdWFsKCJ2ZXJ0aWNhbCBzY3JvbGwgeSBmb3IgUlRMIHBhZ2UgIiwgd2luZG93
LnNjcm9sbFksIC0xMDApOworCisgICAgZG9jdW1lbnQuYm9keS5kaXIgPSAibHRyIjsKKyAgICBh
c3NlcnRFcXVhbCgib3JpZ2luYWwgc2Nyb2xsIHkgZm9yIExUUiBwYWdlICIsIHdpbmRvdy5zY3Jv
bGxZLCAwKTsKKyAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMTAwKTsKKyAgICBhc3NlcnRFcXVhbCgi
dmVydGljYWwgc2Nyb2xsIHkgZm9yIExUUiBwYWdlICIsIHdpbmRvdy5zY3JvbGxZLCAxMDApOwor
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpLnN0eWxlLmRpc3BsYXkgPSAibm9u
ZSI7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGRpcj0icnRsIiBzdHlsZT0iLXdlYmtp
dC13cml0aW5nLW1vZGU6dmVydGljYWwtbHIiPgorCis8ZGl2IHN0eWxlPSJoZWlnaHQ6IDQwMDBw
eDsgYm9yZGVyOiAxcHggc29saWQgcmVkOyIgaWQ9ImRpdiI+CitMb3JlbSBpcHN1bSBkb2xvciBz
aXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LiBOdW5jIGV0IG5pc2wgdGVsbHVz
LiBWaXZhbXVzIGFsaXF1YW0gZWxpdCBub24gYXJjdSBzY2VsZXJpc3F1ZSBlZ2V0IGRhcGlidXMg
bnVuYyB2dWxwdXRhdGUuIE1hZWNlbmFzIHNjZWxlcmlzcXVlIGVnZXN0YXMgcHVydXMsIGlkIGJp
YmVuZHVtIG1hZ25hIHZlbmVuYXRpcyB2ZWwuIFZlc3RpYnVsdW0gYmliZW5kdW0gdm9sdXRwYXQg
YWxpcXVhbS4gQ3VtIHNvY2lpcyBuYXRvcXVlIHBlbmF0aWJ1cyBldCBtYWduaXMgZGlzIHBhcnR1
cmllbnQgbW9udGVzLCBuYXNjZXR1ciByaWRpY3VsdXMgbXVzLiBWZXN0aWJ1bHVtIGVnZXQgcmlz
dXMgc29kYWxlcyBtaSB0cmlzdGlxdWUgZGlnbmlzc2ltIGV0IHNlZCBsZWN0dXMuIENyYXMgY29u
dmFsbGlzLCBuaWJoIHV0IGRhcGlidXMgZ3JhdmlkYSwgZW5pbSBtYXVyaXMgbW9sZXN0aWUgZWxp
dCwgZWdldCBmcmluZ2lsbGEgYXVndWUgZXN0IG5lYyBlc3QuIEN1cmFiaXR1ciBldSBxdWFtIG5v
biBwdXJ1cyBzb2RhbGVzIHB1bHZpbmFyLiBEb25lYyB1bHRyaWNlcyBkdWkgZWdldCBkb2xvciBs
b2JvcnRpcyBpbiBwb3J0YSBxdWFtIHJ1dHJ1bS4gTnVsbGEgcmlzdXMgbGFjdXMsIGFkaXBpc2Np
bmcgcXVpcyB1bGxhbWNvcnBlciB2ZXN0aWJ1bHVtLCBjb25kaW1lbnR1bSBzZWQgbGFjdXMuIFNl
ZCBpbiBudW5jIGRvbG9yLCBxdWlzIGVnZXN0YXMgdHVycGlzLiBJbnRlZ2VyIGFyY3UgdGVsbHVz
LCBwb3N1ZXJlIHNpdCBhbWV0IHBlbGxlbnRlc3F1ZSBhLCBtb2xlc3RpZSBhdCBtaS4gTnVsbGEg
YmxhbmRpdCwgbWkgZXQgZXVpc21vZCBpbXBlcmRpZXQsIGF1Z3VlIGFyY3Ugb3JuYXJlIGZlbGlz
LCBuZWMgdml2ZXJyYSBsYWN1cyBsaWd1bGEgdXQgbWV0dXMuIFByb2luIHV0IGxlbyBhbnRlLCBh
dCBjb25zZWN0ZXR1ciBzZW0uIE51bGxhbSBub24gbnVuYyBsaWd1bGEuIFByb2luIHNlZCBhbnRl
IHNlbSwgaWQgcnV0cnVtIHB1cnVzLgorPC9kaXY+Cis8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+Cis8
YnI+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxi
YXItaW4tcnRsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzI5NTYpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICswLDAgQEAKLW9yaWdpbmFsIHNjcm9sbCB4IGZv
ciBSVEwgcGFnZSA6IFN1Y2Nlc3MKLWhvcml6b250YWwgc2Nyb2xsOiA6IFN1Y2Nlc3MKLWNvbnRp
bnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxYIDogU3VjY2Vzcwotem9vbSBpbiBhbmQgb3V0IHBy
ZXNlcnZlIHNjcm9sbCBwb3NpdGlvbjogRmFpbHVyZSwgYWN0dWFsOiAtODY2OyBleHBlY3RlZDog
LTEwMDAKLXJlc2l6ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCi13aGVlbCBz
Y3JvbGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCi1LZXlE
b3duIEhPTUUgbW92ZSB4LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2U6IDAK
LUtleURvd24gRU5EIG1vdmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdl
OiAwCi1zZWxlY3RBbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQ6IFN1Y2Nlc3MKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRp
ci1jaGFuZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA3Mjk1NikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzAsMCBAQAotb3JpZ2luYWwgc2Nyb2xsIHggZm9yIFJUTCBw
YWdlIDogU3VjY2VzcwotaG9yaXpvbnRhbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2UgOiBTdWNjZXNz
Ci1vcmlnaW5hbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgOiBGYWlsdXJlLCBhY3R1YWw6IDMxMTA7
IGV4cGVjdGVkOiAwCi1ob3Jpem9udGFsIHNjcm9sbCB4IGZvciBMVFIgcGFnZSA6IFN1Y2Nlc3MK
LQotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75309</attachid>
            <date>2010-12-01 12:52:17 -0800</date>
            <delta_ts>2010-12-14 01:25:42 -0800</delta_ts>
            <desc>Part 1: Generalize scrollOrigin concept to work with both horizontal and vertical text.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>42458</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzA1NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTAtMTItMDEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjY0NQorICAgICAgICAKKyAgICAg
ICAgUGFydCAxIG9mIG1ha2luZyBzY3JvbGxpbmcgd29yayB3aXRoIHZlcnRpY2FsIHRleHQuIFRo
aXMgcGF0Y2ggZ2VuZXJhbGl6ZXMgdGhlIHNjcm9sbE9yaWdpblggY29uY2VwdAorICAgICAgICBy
ZWNlbnRseSBhZGRlZCBmb3IgaG9yaXpvbnRhbCBSVEwgZG9jdW1lbnRzIGFuZCBhcHBsaWVzIGl0
IHRvIHdyaXRpbmcgbW9kZXMgYXMgd2VsbC4gIE5vdyB0aGUKKyAgICAgICAgc2Nyb2xsT3JpZ2lu
IGlzIGEgcG9pbnQsIHNpbmNlIHlvdSBjYW4gc3RhcnQgb2ZmIGxvY2tlZCB0byB0aGUgYm90dG9t
IG9yIGxvY2tlZCB0byB0aGUgcmlnaHQuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFs
c28gZml4ZXMgbnVtZXJvdXMgYnVncyB3aXRoIHRoZSBzY3JvbGxPcmlnaW4gY29kZSB1c2luZyBu
YXRpdmUgTWFjIE5TU2Nyb2xsVmlld3MgYW5kCisgICAgICAgIG1ha2VzIHRoZW0gYmVoYXZlIHRo
ZSBzYW1lIGFzIHRoZSBjcm9zcy1wbGF0Zm9ybSBjb2RlIChhbGxvd2luZyBmb3IgY3Jvc3MtcGxh
dGZvcm0gcmVzdWx0cyB0byBiZQorICAgICAgICBsYW5kZWQpLgorCisgICAgICAgICogcGFnZS9G
cmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGp1c3RWaWV3U2l6
ZSk6CisgICAgICAgICogcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6U2Ny
b2xsVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjptYXhpbXVtU2Nyb2xsUG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6bWluaW11bVNjcm9sbFBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnZhbHVlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbFZpZXc6OndoZWVsRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bFZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbE9yaWdpbik6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRS
b290Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmxheW91dCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJWaWV3Ojpkb2NUb3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6ZG9j
SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmRvY0xlZnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6ZG9jV2lkdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJWaWV3Lmg6CisKIDIwMTAtMTEtMzAgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6
IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCShyZXZpc2lvbiA3Mjk0NykKKysrIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzUsMTUgKzQzNSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6
YWRqdXN0Vmlld1NpemUoKQogICAgIGlmICghcm9vdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aW50IHByZXZTY3JvbGxPcmlnaW5YID0gc2Nyb2xsT3JpZ2luWCgpOwotICAgIFNjcm9sbFZpZXc6
OnNldFNjcm9sbE9yaWdpblgoLXJvb3QtPmxlZnRMYXlvdXRPdmVyZmxvdygpKTsKLSAgICBJbnRT
aXplIHNpemUgPSBJbnRTaXplKHJvb3QtPnJpZ2h0TGF5b3V0T3ZlcmZsb3coKSAtIHJvb3QtPmxl
ZnRMYXlvdXRPdmVyZmxvdygpLCByb290LT5ib3R0b21MYXlvdXRPdmVyZmxvdygpKTsKLSAgICAv
LyBUYWtlIGNhcmUgb2YgdGhlIGNhc2Ugd2hlbiBjb250ZW50cyByZW1haW4gYnV0IHRoZSBSZW5k
ZXJWaWV3J3MgZGlyZWN0aW9uIGhhcyBjaGFuZ2VkLgotICAgIC8vIEluIHdoaWNoIGNhc2UsIHdl
IG5lZWQgdG8gdXBkYXRlIHNjcm9sbGVyIHBvc2l0aW9uLCBmb3IgZXhhbXBsZSwgZnJvbSBsZWZ0
bW9zdCB0bwotICAgIC8vIHJpZ2h0bW9zdCB3aGVuIGRpcmVjdGlvbiBjaGFuZ2VzIGZyb20gbGVm
dC10by1yaWdodCB0byByaWdodC10by1sZWZ0LgotICAgIGJvb2wgZGlyZWN0aW9uQ2hhbmdlZCA9
ICghcHJldlNjcm9sbE9yaWdpblggfHwgIXNjcm9sbE9yaWdpblgoKSkgJiYgKHNjcm9sbE9yaWdp
blgoKSAhPSBwcmV2U2Nyb2xsT3JpZ2luWCk7Ci0gICAgaWYgKHNpemUgPT0gY29udGVudHNTaXpl
KCkgJiYgZGlyZWN0aW9uQ2hhbmdlZCkKLSAgICAgICAgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xs
YmFycygpOworICAgIEludFNpemUgc2l6ZSA9IEludFNpemUocm9vdC0+cmlnaHRMYXlvdXRPdmVy
ZmxvdygpIC0gcm9vdC0+bGVmdExheW91dE92ZXJmbG93KCksIHJvb3QtPmJvdHRvbUxheW91dE92
ZXJmbG93KCkgLSByb290LT50b3BMYXlvdXRPdmVyZmxvdygpKTsKKworICAgIFNjcm9sbFZpZXc6
OnNldFNjcm9sbE9yaWdpbihJbnRQb2ludCgtcm9vdC0+bGVmdExheW91dE92ZXJmbG93KCksIC1y
b290LT50b3BMYXlvdXRPdmVyZmxvdygpKSwgc2l6ZSA9PSBjb250ZW50c1NpemUoKSk7CisgICAg
CiAgICAgc2V0Q29udGVudHNTaXplKHNpemUpOwogfQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvbWFj
L1dlYkNvcmVGcmFtZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNv
cmVGcmFtZVZpZXcuaAkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNv
cmVGcmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAtICh2b2lkKXNldFNjcm9sbGluZ01vZGVzOihXZWJDb3JlOjpTY3JvbGxiYXJN
b2RlKWhNb2RlIHZlcnRpY2FsOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKXZNb2RlIGFuZExvY2s6
KEJPT0wpbG9jazsKIC0gKHZvaWQpc2Nyb2xsaW5nTW9kZXM6KFdlYkNvcmU6OlNjcm9sbGJhck1v
ZGUqKWhNb2RlIHZlcnRpY2FsOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKil2TW9kZTsKIC0gKHZv
aWQpc2V0U2Nyb2xsQmFyc1N1cHByZXNzZWQ6KEJPT0wpc3VwcHJlc3NlZCByZXBhaW50T25VbnN1
cHByZXNzOihCT09MKXJlcGFpbnQ7Ci0tICh2b2lkKXNldFNjcm9sbE9yaWdpblg6KGludClzY3Jv
bGxPcmlnaW5YOwotLSAoaW50KXNjcm9sbE9yaWdpblg7CistICh2b2lkKXNldFNjcm9sbE9yaWdp
bjooTlNQb2ludClvcmlnaW4gdXBkYXRlUG9zaXRpb246KEJPT0wpdXBkYXRlUG9zaXRpb247Cist
IChOU1BvaW50KXNjcm9sbE9yaWdpbjsKIEBlbmQKIAogQHByb3RvY29sIFdlYkNvcmVGcmFtZVZp
ZXcKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw2
IEBAIFNjcm9sbFZpZXc6OlNjcm9sbFZpZXcoKQogICAgICwgbV91c2VGaXhlZExheW91dChmYWxz
ZSkKICAgICAsIG1fcGFpbnRzRW50aXJlQ29udGVudHMoZmFsc2UpCiAgICAgLCBtX2RlbGVnYXRl
c1Njcm9sbGluZyhmYWxzZSkKLSAgICAsIG1fc2Nyb2xsT3JpZ2luWCgwKQogewogICAgIHBsYXRm
b3JtSW5pdCgpOwogfQpAQCAtMjc5LDE0ICsyNzgsMTQgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRD
b250ZW50c1NpemUoY29uc3QgSQogCiBJbnRQb2ludCBTY3JvbGxWaWV3OjptYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKSBjb25zdAogewotICAgIEludFBvaW50IG1heGltdW1PZmZzZXQoY29udGVudHNX
aWR0aCgpIC0gdmlzaWJsZVdpZHRoKCkgLSBtX3Njcm9sbE9yaWdpblgsIGNvbnRlbnRzSGVpZ2h0
KCkgLSB2aXNpYmxlSGVpZ2h0KCkpOworICAgIEludFBvaW50IG1heGltdW1PZmZzZXQoY29udGVu
dHNXaWR0aCgpIC0gdmlzaWJsZVdpZHRoKCkgLSBtX3Njcm9sbE9yaWdpbi54KCksIGNvbnRlbnRz
SGVpZ2h0KCkgLSB2aXNpYmxlSGVpZ2h0KCkgLSBtX3Njcm9sbE9yaWdpbi55KCkpOwogICAgIG1h
eGltdW1PZmZzZXQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwogICAgIHJldHVybiBtYXhpbXVtT2Zm
c2V0OwogfQogCiBJbnRQb2ludCBTY3JvbGxWaWV3OjptaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBj
b25zdAogewotICAgIHJldHVybiBJbnRQb2ludCgtbV9zY3JvbGxPcmlnaW5YLCAwKTsKKyAgICBy
ZXR1cm4gSW50UG9pbnQoLW1fc2Nyb2xsT3JpZ2luLngoKSwgLW1fc2Nyb2xsT3JpZ2luLnkoKSk7
CiB9CiAKIEludFBvaW50IFNjcm9sbFZpZXc6OmFkanVzdFNjcm9sbFBvc2l0aW9uV2l0aGluUmFu
Z2UoY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KSBjb25zdApAQCAtMzE2LDkgKzMxNSw5IEBA
IHZvaWQgU2Nyb2xsVmlldzo6dmFsdWVDaGFuZ2VkKFNjcm9sbGJhcioKICAgICBJbnRTaXplIG5l
d09mZnNldCA9IG1fc2Nyb2xsT2Zmc2V0OwogICAgIGlmIChzY3JvbGxiYXIpIHsKICAgICAgICAg
aWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKQotICAg
ICAgICAgICAgbmV3T2Zmc2V0LnNldFdpZHRoKHNjcm9sbGJhci0+dmFsdWUoKSAtIG1fc2Nyb2xs
T3JpZ2luWCk7CisgICAgICAgICAgICBuZXdPZmZzZXQuc2V0V2lkdGgoc2Nyb2xsYmFyLT52YWx1
ZSgpIC0gbV9zY3JvbGxPcmlnaW4ueCgpKTsKICAgICAgICAgZWxzZSBpZiAoc2Nyb2xsYmFyLT5v
cmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKQotICAgICAgICAgICAgbmV3T2Zmc2V0
LnNldEhlaWdodChzY3JvbGxiYXItPnZhbHVlKCkpOworICAgICAgICAgICAgbmV3T2Zmc2V0LnNl
dEhlaWdodChzY3JvbGxiYXItPnZhbHVlKCkgLSBtX3Njcm9sbE9yaWdpbi55KCkpOwogICAgIH0K
IAogICAgIEludFNpemUgc2Nyb2xsRGVsdGEgPSBuZXdPZmZzZXQgLSBtX3Njcm9sbE9mZnNldDsK
QEAgLTUwMyw3ICs1MDIsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29u
c3QgCiAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxp
ZGF0aW9uKHRydWUpOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFN0ZXBzKFNj
cm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOwogICAgICAgICBtX2hvcml6
b250YWxTY3JvbGxiYXItPnNldFByb3BvcnRpb24oY2xpZW50V2lkdGgsIGNvbnRlbnRzV2lkdGgo
KSk7Ci0gICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0VmFsdWUoc2Nyb2xsLndpZHRo
KCkgKyBtX3Njcm9sbE9yaWdpblgsIFNjcm9sbGJhcjo6Tm90RnJvbVNjcm9sbEFuaW1hdG9yKTsK
KyAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3JvbGwud2lkdGgoKSAr
IG1fc2Nyb2xsT3JpZ2luLngoKSwgU2Nyb2xsYmFyOjpOb3RGcm9tU2Nyb2xsQW5pbWF0b3IpOwog
ICAgICAgICBpZiAobV9zY3JvbGxiYXJzU3VwcHJlc3NlZCkKICAgICAgICAgICAgIG1faG9yaXpv
bnRhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24oZmFsc2UpOyAKICAgICB9IApA
QCAtNTI1LDcgKzUyNCw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25z
dCAKICAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0
aW9uKHRydWUpOwogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRTdGVwcyhTY3JvbGxi
YXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKICAgICAgICAgbV92ZXJ0aWNhbFNj
cm9sbGJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRIZWlnaHQsIGNvbnRlbnRzSGVpZ2h0KCkpOwot
ICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3JvbGwuaGVpZ2h0KCksIFNj
cm9sbGJhcjo6Tm90RnJvbVNjcm9sbEFuaW1hdG9yKTsKKyAgICAgICAgbV92ZXJ0aWNhbFNjcm9s
bGJhci0+c2V0VmFsdWUoc2Nyb2xsLmhlaWdodCgpICsgbV9zY3JvbGxPcmlnaW4ueSgpLCBTY3Jv
bGxiYXI6Ok5vdEZyb21TY3JvbGxBbmltYXRvcik7CiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNT
dXBwcmVzc2VkKQogICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJ
bnZhbGlkYXRpb24oZmFsc2UpOwogICAgIH0KQEAgLTEwMjcsMTkgKzEwMjYsMjEgQEAgdm9pZCBT
Y3JvbGxWaWV3OjpyZW1vdmVQYW5TY3JvbGxJY29uKCkKICAgICBob3N0V2luZG93KCktPmludmFs
aWRhdGVDb250ZW50c0FuZFdpbmRvdyhJbnRSZWN0KG1fcGFuU2Nyb2xsSWNvblBvaW50LCBJbnRT
aXplKHBhbkljb25TaXplTGVuZ3RoLCBwYW5JY29uU2l6ZUxlbmd0aCkpLCB0cnVlIC8qaW1tZWRp
YXRlKi8pOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OnNldFNjcm9sbE9yaWdpblgoaW50IHgpCit2
b2lkIFNjcm9sbFZpZXc6OnNldFNjcm9sbE9yaWdpbihjb25zdCBJbnRQb2ludCYgb3JpZ2luLCBi
b29sIHVwZGF0ZVBvc2l0aW9uKQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQotICAgICAg
ICBwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgoeCk7CisgICAgICAgIHBsYXRmb3JtU2V0U2Nyb2xs
T3JpZ2luKG9yaWdpbiwgdXBkYXRlUG9zaXRpb24pOwogCi0gICAgbV9zY3JvbGxPcmlnaW5YID0g
eDsKLX0KKyAgICBJbnRQb2ludCBwcmV2U2Nyb2xsT3JpZ2luID0gbV9zY3JvbGxPcmlnaW47CiAK
LXZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycygpCi17Ci0gICAgaWYgKCFwbGF0Zm9y
bVdpZGdldCgpKQorICAgIG1fc2Nyb2xsT3JpZ2luID0gb3JpZ2luOworICAgIAorICAgIGlmIChw
bGF0Zm9ybVdpZGdldCgpIHx8ICF1cGRhdGVQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gVXBkYXRlIGlmIHRoZSBzY3JvbGwgb3JpZ2luIGNoYW5nZXMsIHNpbmNlIG91ciBwb3Np
dGlvbiB3aWxsIGJlIGRpZmZlcmVudCBpZiB0aGUgY29udGVudCBzaXplIGRpZCBub3QgY2hhbmdl
LgorICAgIGlmIChwcmV2U2Nyb2xsT3JpZ2luICE9IG1fc2Nyb2xsT3JpZ2luKQogICAgICAgICB1
cGRhdGVTY3JvbGxiYXJzKHNjcm9sbE9mZnNldCgpKTsKLSAgICAvLyBGSVhNRTogbmVlZCBjb3Jy
ZXNwb25kaW5nIGZ1bmN0aW9uYWxpdHkgZnJvbSBwbGF0Zm9ybVdpZGdldC4KIH0KIAogI2lmICFQ
TEFURk9STShXWCkgJiYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKEVGTCkKQEAgLTEwNzIs
NyArMTA3Myw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxiYXJzU3UKIHsK
IH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgoaW50KQordm9p
ZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpbihjb25zdCBJbnRQb2ludCYsIGJv
b2wgdXBkYXRlUG9zaXRpb24pCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCShyZXZp
c2lvbiA3Mjk0NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjEsNyArMTYxLDcgQEAgcHVibGljOgogICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkubG9jYXRpb24oKSAtIEludFBv
aW50KCk7IH0gLy8gR2V0cyB0aGUgc2Nyb2xsZWQgcG9zaXRpb24gYXMgYW4gSW50U2l6ZS4gQ29u
dmVuaWVudCBmb3IgYWRkaW5nIHRvIG90aGVyIHNpemVzLgogICAgIEludFBvaW50IG1heGltdW1T
Y3JvbGxQb3NpdGlvbigpIGNvbnN0OyAvLyBUaGUgbWF4aW11bSBwb3NpdGlvbiB3ZSBjYW4gYmUg
c2Nyb2xsZWQgdG8uCiAgICAgSW50UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7
IC8vIFRoZSBtaW5pbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KLSAgICAvLyBB
ZGp1c3QgdGhlIHBhc3MgaW4gc2Nyb2xsIHBvc2l0aW9uIHdpdGhpbiB0aGUgbWluaW11bSBhbmQg
bWF4aW11bSBwb3NpdGlvbnMuCisgICAgLy8gQWRqdXN0IHRoZSBwYXNzZWQgaW4gc2Nyb2xsIHBv
c2l0aW9uIHRvIGtlZXAgaXQgYmV0d2VlbiB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBwb3NpdGlv
bnMuCiAgICAgSW50UG9pbnQgYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShjb25zdCBJ
bnRQb2ludCYpIGNvbnN0OyAKICAgICBpbnQgc2Nyb2xsWCgpIGNvbnN0IHsgcmV0dXJuIHNjcm9s
bFBvc2l0aW9uKCkueCgpOyB9CiAgICAgaW50IHNjcm9sbFkoKSBjb25zdCB7IHJldHVybiBzY3Jv
bGxQb3NpdGlvbigpLnkoKTsgfQpAQCAtMjgyLDkgKzI4Miw4IEBAIHByb3RlY3RlZDoKICAgICAv
LyBTY3JvbGwgdGhlIGNvbnRlbnQgYnkgaW52YWxpZGF0aW5nIGV2ZXJ5dGhpbmcuCiAgICAgdmly
dHVhbCB2b2lkIHNjcm9sbENvbnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVj
dCk7CiAKLSAgICB2b2lkIHNldFNjcm9sbE9yaWdpblgoaW50KTsKLSAgICBpbnQgc2Nyb2xsT3Jp
Z2luWCgpIHsgcmV0dXJuIG1fc2Nyb2xsT3JpZ2luWDsgfQotICAgIHZvaWQgdXBkYXRlU2Nyb2xs
YmFycygpOworICAgIHZvaWQgc2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50JiwgYm9vbCB1
cGRhdGVQb3NpdGlvbik7CisgICAgSW50UG9pbnQgc2Nyb2xsT3JpZ2luKCkgeyByZXR1cm4gbV9z
Y3JvbGxPcmlnaW47IH0KIAogcHJpdmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX2hvcml6
b250YWxTY3JvbGxiYXI7CkBAIC0zMjEsMTAgKzMyMCwxOCBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9wYWludHNFbnRpcmVDb250ZW50czsKICAgICBib29sIG1fZGVsZWdhdGVzU2Nyb2xsaW5nOwog
Ci0gICAgLy8gbV9zY3JvbGxPcmlnaW5YIGlzIDAgZm9yIExUUiBwYWdlLiBBbmQgaXQgaXMgbmVn
YXRpdmUgb2YgbGVmdCBsYXlvdXQKLSAgICAvLyBvdmVyZmxvdyBmb3IgUlRMIHBhZ2UuIEl0IGlz
IG1haW5seSB1c2VkIHRvIHNldCB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIKLSAgICAvLyBwb3Np
dGlvbiBmb3IgUlRMIHBhZ2UuCi0gICAgaW50IG1fc2Nyb2xsT3JpZ2luWDsKKyAgICAvLyBUaGVy
ZSBhcmUgOCBwb3NzaWJsZSBjb21iaW5hdGlvbnMgb2Ygd3JpdGluZyBtb2RlIGFuZCBkaXJlY3Rp
b24uICBTY3JvbGwgb3JpZ2luIHdpbGwgYmUgbm9uLXplcm8gaW4gdGhlIHggb3IgeSBheGlzCisg
ICAgLy8gaWYgdGhlcmUgaXMgYW55IHJldmVyc2VkIGRpcmVjdGlvbiBvciB3cml0aW5nLW1vZGUu
ICBUaGUgY29tYmluYXRpb25zIGFyZToKKyAgICAvLyB3cml0aW5nLW1vZGUgLyBkaXJlY3Rpb24g
ICAgIHNjcm9sbE9yaWdpbi54KCkgc2V0ICAgIHNjcm9sbE9yaWdpbi55KCkgc2V0CisgICAgLy8g
aG9yaXpvbnRhbC10YiAvIGx0ciAgICAgICAgICBOTyAgICAgICAgICAgICAgICAgICAgICBOTwor
ICAgIC8vIGhvcml6b250YWwtdGIgLyBydGwgICAgICAgICAgWUVTICAgICAgICAgICAgICAgICAg
ICAgTk8KKyAgICAvLyBob3Jpem9udGFsLWJ0IC8gbHRyICAgICAgICAgIE5PICAgICAgICAgICAg
ICAgICAgICAgIFlFUworICAgIC8vIGhvcml6b250YWwtYnQgLyBydGwgICAgICAgICAgWUVTICAg
ICAgICAgICAgICAgICAgICAgWUVTCisgICAgLy8gdmVydGljYWwtbHIgLyBsdHIgICAgICAgICAg
ICBOTyAgICAgICAgICAgICAgICAgICAgICBOTworICAgIC8vIHZlcnRpY2FsLWxyIC8gcnRsICAg
ICAgICAgICAgTk8gICAgICAgICAgICAgICAgICAgICAgWUVTCisgICAgLy8gdmVydGljYWwtcmwg
LyBsdHIgICAgICAgICAgICBZRVMgICAgICAgICAgICAgICAgICAgICBOTworICAgIC8vIHZlcnRp
Y2FsLXJsIC8gcnRsICAgICAgICAgICAgWUVTICAgICAgICAgICAgICAgICAgICAgWUVTCisgICAg
SW50UG9pbnQgbV9zY3JvbGxPcmlnaW47CiAKICAgICB2b2lkIGluaXQoKTsKICAgICB2b2lkIGRl
c3Ryb3koKTsKQEAgLTM1NCw3ICszNjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1S
ZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25zdCBJbnRSZWN0JiwgYm9vbCBub3cpOwogICAgIGJv
b2wgcGxhdGZvcm1Jc09mZnNjcmVlbigpIGNvbnN0OwogICAgCi0gICAgdm9pZCBwbGF0Zm9ybVNl
dFNjcm9sbE9yaWdpblgoaW50KTsKKyAgICB2b2lkIHBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luKGNv
bnN0IEludFBvaW50JiwgYm9vbCB1cGRhdGVQb3NpdGlvbik7CiAKICNpZiBQTEFURk9STShNQUMp
ICYmIGRlZmluZWQgX19PQkpDX18KIHB1YmxpYzoKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbFZpZXdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsVmlld01hYy5tbQkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxWaWV3TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDggQEAgdm9pZCBT
Y3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbGJhcnNTdQogdm9pZCBTY3JvbGxWaWV3OjpwbGF0
Zm9ybVNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkKIHsKICAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgTlNQb2ludCB0ZW1wUG9pbnQgPSB7
IG1heCgtW3Njcm9sbFZpZXcoKSBzY3JvbGxPcmlnaW5YXSwgc2Nyb2xsUG9pbnQueCgpKSwgbWF4
KDAsIHNjcm9sbFBvaW50LnkoKSkgfTsgIC8vIERvbid0IHVzZSBOU01ha2VQb2ludCB0byB3b3Jr
IGFyb3VuZCA0MjEzMzE0LgorICAgIE5TUG9pbnQgZmxvYXRQb2ludCA9IHNjcm9sbFBvaW50Owor
ICAgIE5TUG9pbnQgdGVtcFBvaW50ID0geyBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2lu
XS54LCBmbG9hdFBvaW50LngpLCBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS55LCBm
bG9hdFBvaW50LnkpIH07ICAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQg
NDIxMzMxNC4KICAgICBbZG9jdW1lbnRWaWV3KCkgc2Nyb2xsUG9pbnQ6dGVtcFBvaW50XTsKICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQpAQCAtMjAyLDEwICsyMDMsMTAgQEAgYm9v
bCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUlzT2Zmc2NyZWVuKCkgYwogICAgIHJldHVybiAhW3BsYXRm
b3JtV2lkZ2V0KCkgd2luZG93XSB8fCAhW1twbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10gaXNWaXNp
YmxlXTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbE9yaWdpblgoaW50
IHgpCit2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBv
aW50JiBvcmlnaW4sIGJvb2wgdXBkYXRlUG9zaXRpb24pCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwotICAgIFtzY3JvbGxWaWV3KCkgc2V0U2Nyb2xsT3JpZ2luWDp4XTsKKyAg
ICBbc2Nyb2xsVmlldygpIHNldFNjcm9sbE9yaWdpbjpvcmlnaW4gdXBkYXRlUG9zaXRpb246dXBk
YXRlUG9zaXRpb25dOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzMsNyArNzczLDcgQEAgdm9p
ZCBSZW5kZXJCb3g6OnBhaW50Um9vdEJveERlY29yYXRpb25zKAogICAgIC8vIFRoZSBiYWNrZ3Jv
dW5kIG9mIHRoZSBib3ggZ2VuZXJhdGVkIGJ5IHRoZSByb290IGVsZW1lbnQgY292ZXJzIHRoZSBl
bnRpcmUgY2FudmFzIGluY2x1ZGluZwogICAgIC8vIGl0cyBtYXJnaW5zLgogICAgIGludCBieCA9
IHR4IC0gbWFyZ2luTGVmdCgpICsgdmlldygpLT5sZWZ0TGF5b3V0T3ZlcmZsb3coKTsKLSAgICBp
bnQgYnkgPSB0eSAtIG1hcmdpblRvcCgpOworICAgIGludCBieSA9IHR5IC0gbWFyZ2luVG9wKCkg
KyB2aWV3KCktPnRvcExheW91dE92ZXJmbG93KCk7CiAgICAgaW50IGJ3ID0gbWF4KHcgKyBtYXJn
aW5MZWZ0KCkgKyBtYXJnaW5SaWdodCgpICsgYm9yZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKSwg
cncpOwogICAgIGludCBiaCA9IG1heChoICsgbWFyZ2luVG9wKCkgKyBtYXJnaW5Cb3R0b20oKSAr
IGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCksIHJoKTsKIApJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAJKHJldmlzaW9uIDcyOTQ3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsOCBAQCB2b2lkIFJlbmRlclZp
ZXc6OmxheW91dCgpCiAgICAgLy8gUmVzZXQgb3ZlcmZsb3cgYW5kIHRoZW4gcmVwbGFjZSBpdCB3
aXRoIGRvY1dpZHRoIGFuZCBkb2NIZWlnaHQuCiAgICAgbV9vdmVyZmxvdy5jbGVhcigpOwogICAg
IGludCBsZWZ0T3ZlcmZsb3cgPSBkb2NMZWZ0KCk7Ci0gICAgYWRkTGF5b3V0T3ZlcmZsb3coSW50
UmVjdChsZWZ0T3ZlcmZsb3csIDAsIGRvY1dpZHRoKGxlZnRPdmVyZmxvdyksIGRvY0hlaWdodCgp
KSk7CisgICAgaW50IHRvcE92ZXJmbG93ID0gZG9jVG9wKCk7CisgICAgYWRkTGF5b3V0T3ZlcmZs
b3coSW50UmVjdChsZWZ0T3ZlcmZsb3csIHRvcE92ZXJmbG93LCBkb2NXaWR0aChsZWZ0T3ZlcmZs
b3cpLCBkb2NIZWlnaHQodG9wT3ZlcmZsb3cpKSk7CiAKICAgICBBU1NFUlQobGF5b3V0RGVsdGEo
KSA9PSBJbnRTaXplKCkpOwogICAgIEFTU0VSVChtX2xheW91dFN0YXRlRGlzYWJsZUNvdW50ID09
IDApOwpAQCAtNjE3LDkgKzYxOCwxOCBAQCBJbnRSZWN0IFJlbmRlclZpZXc6OnZpZXdSZWN0KCkg
Y29uc3QKICAgICByZXR1cm4gSW50UmVjdCgpOwogfQogCi1pbnQgUmVuZGVyVmlldzo6ZG9jSGVp
Z2h0KCkgY29uc3QKK2ludCBSZW5kZXJWaWV3Ojpkb2NUb3AoKSBjb25zdAogewotICAgIGludCBo
ID0gbG93ZXN0UG9zaXRpb24oKTsKKyAgICAvLyBDbGlwIG91dCB0b3Agb3ZlcmZsb3cgaW4gdmVy
dGljYWwgTFRSIHBhZ2VzIG9yIGhvcml6b250YWwtdGIgcGFnZXMuCisgICAgaWYgKCghc3R5bGUo
KS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAmJiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkpIHx8IHN0eWxlKCktPndyaXRpbmdNb2RlKCkgPT0gVG9wVG9Cb3R0b21Xcml0aW5n
TW9kZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHN0ZDo6bWluKDAsIHRvcG1vc3RQ
b3NpdGlvbigpKTsKK30KKworaW50IFJlbmRlclZpZXc6OmRvY0hlaWdodChpbnQgdG9wT3ZlcmZs
b3cpIGNvbnN0Cit7CisgICAgaW50IGggPSAoKCFzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5n
TW9kZSgpICYmIHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgfHwgc3R5bGUoKS0+
d3JpdGluZ01vZGUoKSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKSA/CisgICAgICAgICAgICAg
ICAgbG93ZXN0UG9zaXRpb24oKSA6IGhlaWdodCgpIC0gdG9wT3ZlcmZsb3c7CiAKICAgICAvLyBG
SVhNRTogVGhpcyBkb2Vzbid0IGRvIGFueSBtYXJnaW4gY29sbGFwc2luZy4KICAgICAvLyBJbnN0
ZWFkIG9mIHRoaXMgZGggY29tcHV0YXRpb24gd2Ugc2hvdWxkIGtlZXAgdGhlIHJlc3VsdApAQCAt
NjM2LDEzICs2NDYsMTYgQEAgaW50IFJlbmRlclZpZXc6OmRvY0hlaWdodCgpIGNvbnN0CiAKIGlu
dCBSZW5kZXJWaWV3Ojpkb2NMZWZ0KCkgY29uc3QKIHsKLSAgICAvLyBDbGlwIG91dCBsZWZ0IG92
ZXJmbG93IGluIExUUiBwYWdlLgotICAgIHJldHVybiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgPyAwIDogc3RkOjptaW4oMCwgbGVmdG1vc3RQb3NpdGlvbigpKTsKKyAgICAvLyBD
bGlwIG91dCBsZWZ0IG92ZXJmbG93IGluIGhvcml6b250YWwgTFRSIHBhZ2VzIG9yIHZlcnRpY2Fs
LWxyIHBhZ2VzLgorICAgIGlmICgoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAm
JiBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpIHx8IHN0eWxlKCktPndyaXRpbmdN
b2RlKCkgPT0gTGVmdFRvUmlnaHRXcml0aW5nTW9kZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIHN0ZDo6bWluKDAsIGxlZnRtb3N0UG9zaXRpb24oKSk7CiB9CiAKIGludCBSZW5kZXJW
aWV3Ojpkb2NXaWR0aChpbnQgbGVmdE92ZXJmbG93KSBjb25zdAogewotICAgIGludCB3ID0gc3R5
bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gcmlnaHRtb3N0UG9zaXRpb24oKSA6IHdp
ZHRoKCkgLSBsZWZ0T3ZlcmZsb3c7CisgICAgaW50IHcgPSAoKHN0eWxlKCktPmlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgJiYgc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB8fCBz
dHlsZSgpLT53cml0aW5nTW9kZSgpID09IExlZnRUb1JpZ2h0V3JpdGluZ01vZGUpID8gCisgICAg
ICAgICAgICAgICAgcmlnaHRtb3N0UG9zaXRpb24oKSA6IHdpZHRoKCkgLSBsZWZ0T3ZlcmZsb3c7
CiAKICAgICBmb3IgKFJlbmRlckJveCogYyA9IGZpcnN0Q2hpbGRCb3goKTsgYzsgYyA9IGMtPm5l
eHRTaWJsaW5nQm94KCkpIHsKICAgICAgICAgaW50IGR3ID0gYy0+d2lkdGgoKSArIGMtPm1hcmdp
bkxlZnQoKSArIGMtPm1hcmdpblJpZ2h0KCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCShy
ZXZpc2lvbiA3Mjk0NykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcyLDggKzE3Miw5IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBi
b29sIHNob3VsZFJlcGFpbnQoY29uc3QgSW50UmVjdCYgcikgY29uc3Q7Ci0gICAgICAgIAotICAg
IGludCBkb2NIZWlnaHQoKSBjb25zdDsKKyAgICAKKyAgICBpbnQgZG9jVG9wKCkgY29uc3Q7Cisg
ICAgaW50IGRvY0hlaWdodChpbnQgdG9wT3ZlcmZsb3cpIGNvbnN0OwogICAgIGludCBkb2NMZWZ0
KCkgY29uc3Q7CiAgICAgaW50IGRvY1dpZHRoKGludCBsZWZ0T3ZlcmZsb3cpIGNvbnN0OwogCklu
ZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5n
ZUxvZwkocmV2aXNpb24gNzMwNTcpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEwLTEyLTAxICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY2NDUKKyAgICAgICAg
CisgICAgICAgIFBhcnQgMSBvZiBtYWtpbmcgc2Nyb2xsaW5nIHdvcmsgd2l0aCB2ZXJ0aWNhbCB0
ZXh0LiBUaGlzIHBhdGNoIGdlbmVyYWxpemVzIHRoZSBzY3JvbGxPcmlnaW5YIGNvbmNlcHQKKyAg
ICAgICAgcmVjZW50bHkgYWRkZWQgZm9yIGhvcml6b250YWwgUlRMIGRvY3VtZW50cyBhbmQgYXBw
bGllcyBpdCB0byB3cml0aW5nIG1vZGVzIGFzIHdlbGwuICBOb3cgdGhlCisgICAgICAgIHNjcm9s
bE9yaWdpbiBpcyBhIHBvaW50LCBzaW5jZSB5b3UgY2FuIHN0YXJ0IG9mZiBsb2NrZWQgdG8gdGhl
IGJvdHRvbSBvciBsb2NrZWQgdG8gdGhlIHJpZ2h0LgorICAgICAgICAKKyAgICAgICAgVGhpcyBw
YXRjaCBhbHNvIGZpeGVzIG51bWVyb3VzIGJ1Z3Mgd2l0aCB0aGUgc2Nyb2xsT3JpZ2luIGNvZGUg
dXNpbmcgbmF0aXZlIE1hYyBOU1Njcm9sbFZpZXdzIGFuZAorICAgICAgICBtYWtlcyB0aGVtIGJl
aGF2ZSB0aGUgc2FtZSBhcyB0aGUgY3Jvc3MtcGxhdGZvcm0gY29kZSAoYWxsb3dpbmcgZm9yIGNy
b3NzLXBsYXRmb3JtIHJlc3VsdHMgdG8gYmUKKyAgICAgICAgbGFuZGVkKS4KKworICAgICAgICAq
IFdlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm1tOgorICAgICAgICAoLVtXZWJEeW5h
bWljU2Nyb2xsQmFyc1ZpZXcgYWRqdXN0Rm9yU2Nyb2xsT3JpZ2luQ2hhbmdlXSk6CisgICAgICAg
ICgtW1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyB1cGRhdGVTY3JvbGxlcnNdKToKKyAgICAgICAg
KC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHJlZmxlY3RTY3JvbGxlZENsaXBWaWV3Ol0pOgor
ICAgICAgICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgc2V0U2Nyb2xsT3JpZ2luOnVwZGF0
ZVBvc2l0aW9uOl0pOgorICAgICAgICAoLVtXZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcgc2Nyb2xs
T3JpZ2luXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAgICAgICgt
W1dlYkZyYW1lVmlldyBfc2Nyb2xsVG9CZWdpbm5pbmdPZkRvY3VtZW50XSk6CisgICAgICAgICgt
W1dlYkZyYW1lVmlldyBfc2Nyb2xsVG9FbmRPZkRvY3VtZW50XSk6CisKIDIwMTAtMTEtMjkgIERh
biBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1Zp
ZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxC
YXJzVmlldy5tbQkocmV2aXNpb24gNzI5NDcpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHlu
YW1pY1Njcm9sbEJhcnNWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMiArNjMsMTQgQEAg
c3RydWN0IFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlld1ByaXZhdGUgewogICAgIGJvb2wgaG9yaXpv
bnRhbFNjcm9sbGluZ0FsbG93ZWRCdXRTY3JvbGxlckhpZGRlbjsKICAgICBib29sIHZlcnRpY2Fs
U2Nyb2xsaW5nQWxsb3dlZEJ1dFNjcm9sbGVySGlkZGVuOwogCi0gICAgLy8gc2Nyb2xsT3JpZ2lu
WCBpcyAwIGZvciBMVFIgcGFnZSBhbmQgaXMgdGhlIG5lZ2F0aXZlIG9mIGxlZnQgbGF5b3V0IG92
ZXJmbG93IHZhbHVlIGZvciBSVEwgcGFnZS4KLSAgICBpbnQgc2Nyb2xsT3JpZ2luWDsKKyAgICAv
LyBzY3JvbGxPcmlnaW4gaXMgc2V0IGZvciB2YXJpb3VzIGNvbWJpbmF0aW9ucyBvZiB3cml0aW5n
IG1vZGUgYW5kIGRpcmVjdGlvbi4gIFNlZSB0aGUgY29tbWVudCBuZXh0IHRvIHRoZQorICAgIC8v
IGNvcnJlc3BvbmRpbmcgbWVtYmVyIGluIFNjcm9sbFZpZXcuaC4KKyAgICBOU1BvaW50IHNjcm9s
bE9yaWdpbjsKIAogICAgIC8vIEZsYWcgdG8gaW5kaWNhdGUgdGhhdCB0aGUgc2Nyb2xsYmFyIHRo
dW1iJ3MgaW5pdGlhbCBwb3NpdGlvbiBuZWVkcyB0bwogICAgIC8vIGJlIG1hbnVhbGx5IHNldC4K
LSAgICBib29sIHNldFNjcm9sbGJhclRodW1iSW5pdGlhbFBvc2l0aW9uOworICAgIGJvb2wgc2Ny
b2xsT3JpZ2luQ2hhbmdlZDsKKyAgICBOU1BvaW50IHNjcm9sbFBvc2l0aW9uRXhjbHVkaW5nT3Jp
Z2luOwogCiAgICAgYm9vbCBpblByb2dyYW1tYXRpY1Njcm9sbDsKIH07CkBAIC0yMTUsMjcgKzIx
NywyMiBAQCAtICh2b2lkKXNldFNjcm9sbEJhcnNTdXBwcmVzc2VkOihCT09MKXN1CiAjZW5kaWYK
IH0KIAotLSAodm9pZClyZWZyZXNoSW5pdGlhbFNjcm9sbGJhclBvc2l0aW9uCistICh2b2lkKWFk
anVzdEZvclNjcm9sbE9yaWdpbkNoYW5nZQogewotICAgIGlmIChfcHJpdmF0ZS0+c2V0U2Nyb2xs
YmFyVGh1bWJJbml0aWFsUG9zaXRpb24pIHsKLSAgICAgICAgTlNWaWV3ICpkb2N1bWVudFZpZXcg
PSBbc2VsZiBkb2N1bWVudFZpZXddOwotICAgICAgICBOU1JlY3QgZG9jdW1lbnRSZWN0ID0gW2Rv
Y3VtZW50VmlldyBib3VuZHNdOworICAgIGlmICghX3ByaXZhdGUtPnNjcm9sbE9yaWdpbkNoYW5n
ZWQpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICAvLyBJZiBzY3JvbGxPcmlnaW5YIGlzIG5v
bi16ZXJvIHRoYXQgbWVhbnMgdGhhdCB0aGVyZSdzIGEgbGVmdCBvdmVyZmxvdyA8PT4gdGhpcyBp
cyBhbiBSVEwgZG9jdW1lbnQgYW5kIHRodXMKLSAgICAgICAgLy8gdGhlIGluaXRpYWwgcG9zaXRp
b24gb2YgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyIHRodW1iIHNob3VsZCBiZSBvbiB0aGUgcmln
aHQuCi0gICAgICAgIC8vIEZJWE1FOiBJZiBrbm93bGVkZ2Ugb2YgZG9jdW1lbnQgZGlyZWN0aW9u
YWxpdHkgaXMgZXZlciBwcm9wYWdhdGVkIHRvIHRoZSBzY3JvbGwgdmlldywgaXQgcHJvYmFibHkg
bWFrZXMKLSAgICAgICAgLy8gbW9yZSBzZW5zZSB0byB1c2UgdGhlIGRpcmVjdGlvbmFsaXR5IGRp
cmVjdGx5IGluIHRoZSBiZWxvdyBpZiBzdGF0ZW1lbnQsIHJhdGhlciB0aGFuIGRvaW5nIHNvIGlu
ZGlyZWN0bHkKLSAgICAgICAgLy8gdGhyb3VnaCBzY3JvbGxPcmlnaW5YLgotICAgICAgICBpZiAo
X3ByaXZhdGUtPnNjcm9sbE9yaWdpblggIT0gMCkgewotICAgICAgICAgICAgLy8gVGhlIGNhbGwg
dG8gW05TVmlldyBzY3JvbGxQb2ludDpdIGZpcmVzIG9mZiBub3RpZmljYXRpb24gdGhlIGhhbmRs
ZXIgZm9yIHdoaWNoIG5lZWRzIHRvIGtub3cgdGhhdAotICAgICAgICAgICAgLy8gd2UncmUgc2V0
dGluZyB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24gc28gaXQgZG9lc24ndCBpbnRlcnByZXQg
dGhpcyBhcyBhIHVzZXIgYWN0aW9uIGFuZAotICAgICAgICAgICAgLy8gZmlyZSBvZmYgYSBKUyBl
dmVudC4KLSAgICAgICAgICAgIF9wcml2YXRlLT5pblByb2dyYW1tYXRpY1Njcm9sbCA9IHRydWU7
Ci0gICAgICAgICAgICBbZG9jdW1lbnRWaWV3IHNjcm9sbFBvaW50Ok5TTWFrZVBvaW50KE5TTWF4
WChkb2N1bWVudFJlY3QpIC0gTlNXaWR0aChbc2VsZiBjb250ZW50Vmlld0ZyYW1lXSksIDApXTsK
LSAgICAgICAgICAgIF9wcml2YXRlLT5pblByb2dyYW1tYXRpY1Njcm9sbCA9IGZhbHNlOwotICAg
ICAgICB9Ci0gICAgICAgIF9wcml2YXRlLT5zZXRTY3JvbGxiYXJUaHVtYkluaXRpYWxQb3NpdGlv
biA9IGZhbHNlOwotICAgIH0KKyAgICBfcHJpdmF0ZS0+c2Nyb2xsT3JpZ2luQ2hhbmdlZCA9IGZh
bHNlOworCisgICAgTlNWaWV3ICpkb2N1bWVudFZpZXcgPSBbc2VsZiBkb2N1bWVudFZpZXddOwor
ICAgIE5TUmVjdCBkb2N1bWVudFJlY3QgPSBbZG9jdW1lbnRWaWV3IGJvdW5kc107CisKKyAgICAv
LyBUaGUgY2FsbCB0byBbTlNWaWV3IHNjcm9sbFBvaW50Ol0gZmlyZXMgb2ZmIG5vdGlmaWNhdGlv
biB0aGUgaGFuZGxlciBmb3Igd2hpY2ggbmVlZHMgdG8ga25vdyB0aGF0CisgICAgLy8gd2UncmUg
c2V0dGluZyB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24gc28gaXQgZG9lc24ndCBpbnRlcnBy
ZXQgdGhpcyBhcyBhIHVzZXIgYWN0aW9uIGFuZAorICAgIC8vIGZpcmUgb2ZmIGEgSlMgZXZlbnQu
CisgICAgX3ByaXZhdGUtPmluUHJvZ3JhbW1hdGljU2Nyb2xsID0gdHJ1ZTsKKyAgICBbZG9jdW1l
bnRWaWV3IHNjcm9sbFBvaW50Ok5TTWFrZVBvaW50KF9wcml2YXRlLT5zY3JvbGxQb3NpdGlvbkV4
Y2x1ZGluZ09yaWdpbi54ICsgZG9jdW1lbnRSZWN0Lm9yaWdpbi54LCBfcHJpdmF0ZS0+c2Nyb2xs
UG9zaXRpb25FeGNsdWRpbmdPcmlnaW4ueSArIGRvY3VtZW50UmVjdC5vcmlnaW4ueSldOworICAg
IF9wcml2YXRlLT5pblByb2dyYW1tYXRpY1Njcm9sbCA9IGZhbHNlOwogfQogCiBzdGF0aWMgY29u
c3QgdW5zaWduZWQgY01heFVwZGF0ZVNjcm9sbGJhcnNQYXNzID0gMjsKQEAgLTMzOSwxNCArMzM2
LDEyIEBAIC0gKHZvaWQpdXBkYXRlU2Nyb2xsZXJzCiAgICAgaWYgKGhhc0hvcml6b250YWxTY3Jv
bGxlciAhPSBuZXdIYXNIb3Jpem9udGFsU2Nyb2xsZXIpIHsKICAgICAgICAgX3ByaXZhdGUtPmlu
VXBkYXRlU2Nyb2xsZXJzID0gWUVTOwogICAgICAgICBbc2VsZiBzZXRIYXNIb3Jpem9udGFsU2Ny
b2xsZXI6bmV3SGFzSG9yaXpvbnRhbFNjcm9sbGVyXTsKLSAgICAgICAgCi0gICAgICAgIC8vIEZv
ciBSVEwgZG9jdW1lbnRzLCB3ZSBuZWVkIHRvIHNldCB0aGUgaW5pdGlhbCBwb3NpdGlvbiBvZiB0
aGUKLSAgICAgICAgLy8gaG9yaXpvbnRhbCBzY3JvbGxiYXIgdGh1bWIgdG8gYmUgb24gdGhlIHJp
Z2h0LgotICAgICAgICBpZiAobmV3SGFzSG9yaXpvbnRhbFNjcm9sbGVyKQotICAgICAgICAgICAg
X3ByaXZhdGUtPnNldFNjcm9sbGJhclRodW1iSW5pdGlhbFBvc2l0aW9uID0gdHJ1ZTsKLSAgICAg
ICAgCiAgICAgICAgIF9wcml2YXRlLT5pblVwZGF0ZVNjcm9sbGVycyA9IE5POwogICAgICAgICBu
ZWVkc0xheW91dCA9IFlFUzsKKyAgICAgICAgTlNWaWV3ICpkb2N1bWVudFZpZXcgPSBbc2VsZiBk
b2N1bWVudFZpZXddOworICAgICAgICBOU1JlY3QgZG9jdW1lbnRSZWN0ID0gW2RvY3VtZW50Vmll
dyBib3VuZHNdOworICAgICAgICBpZiAoZG9jdW1lbnRSZWN0Lm9yaWdpbi55IDwgMCAmJiAhbmV3
SGFzSG9yaXpvbnRhbFNjcm9sbGVyKQorICAgICAgICAgICAgW2RvY3VtZW50VmlldyBzZXRCb3Vu
ZHNPcmlnaW46TlNNYWtlUG9pbnQoZG9jdW1lbnRSZWN0Lm9yaWdpbi54LCBkb2N1bWVudFJlY3Qu
b3JpZ2luLnkgKyAxNSldOwogICAgIH0KIAogICAgIGlmIChoYXNWZXJ0aWNhbFNjcm9sbGVyICE9
IG5ld0hhc1ZlcnRpY2FsU2Nyb2xsZXIpIHsKQEAgLTM1NCw2ICszNDksMTAgQEAgLSAodm9pZCl1
cGRhdGVTY3JvbGxlcnMKICAgICAgICAgW3NlbGYgc2V0SGFzVmVydGljYWxTY3JvbGxlcjpuZXdI
YXNWZXJ0aWNhbFNjcm9sbGVyXTsKICAgICAgICAgX3ByaXZhdGUtPmluVXBkYXRlU2Nyb2xsZXJz
ID0gTk87CiAgICAgICAgIG5lZWRzTGF5b3V0ID0gWUVTOworICAgICAgICBOU1ZpZXcgKmRvY3Vt
ZW50VmlldyA9IFtzZWxmIGRvY3VtZW50Vmlld107CisgICAgICAgIE5TUmVjdCBkb2N1bWVudFJl
Y3QgPSBbZG9jdW1lbnRWaWV3IGJvdW5kc107CisgICAgICAgIGlmIChkb2N1bWVudFJlY3Qub3Jp
Z2luLnggPCAwICYmICFuZXdIYXNWZXJ0aWNhbFNjcm9sbGVyKQorICAgICAgICAgICAgW2RvY3Vt
ZW50VmlldyBzZXRCb3VuZHNPcmlnaW46TlNNYWtlUG9pbnQoZG9jdW1lbnRSZWN0Lm9yaWdpbi54
ICsgMTUsIGRvY3VtZW50UmVjdC5vcmlnaW4ueSldOwogICAgIH0KIAogICAgIGlmIChuZWVkc0xh
eW91dCAmJiBfcHJpdmF0ZS0+aW5VcGRhdGVTY3JvbGxlcnNMYXlvdXRQYXNzIDwgY01heFVwZGF0
ZVNjcm9sbGJhcnNQYXNzICYmCkBAIC00MTAsNyArNDA5LDcgQEAgLSAodm9pZClyZWZsZWN0U2Ny
b2xsZWRDbGlwVmlldzooTlNDbGlwVgogICAgIC8vIFRoZSBjYWxsIHRvIFtOU1ZpZXcgcmVmbGVj
dFNjcm9sbGVkQ2xpcFZpZXddIHNldHMgdGhlIHNjcm9sbGJhciB0aHVtYgogICAgIC8vIHBvc2l0
aW9uIHRvIDAgKHRoZSBsZWZ0KSB3aGVuIHRoZSB2aWV3IGlzIGluaXRpYWxseSBkaXNwbGF5ZWQu
CiAgICAgLy8gVGhpcyBjYWxsIHVwZGF0ZXMgdGhlIGluaXRpYWwgcG9zaXRpb24gY29ycmVjdGx5
LgotICAgIFtzZWxmIHJlZnJlc2hJbml0aWFsU2Nyb2xsYmFyUG9zaXRpb25dOworICAgIFtzZWxm
IGFkanVzdEZvclNjcm9sbE9yaWdpbkNoYW5nZV07CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpICYmIGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKICAgICBOU1ZpZXcgKmRv
Y3VtZW50VmlldyA9IFtzZWxmIGRvY3VtZW50Vmlld107CkBAIC01NzMsMjIgKzU3MiwyOSBAQCAt
IChCT09MKWFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgCiAgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkXTsKIH0KIAotLSAodm9pZClzZXRTY3JvbGxPcmlnaW5YOihpbnQpc2Ny
b2xsT3JpZ2luWAorLSAodm9pZClzZXRTY3JvbGxPcmlnaW46KE5TUG9pbnQpc2Nyb2xsT3JpZ2lu
IHVwZGF0ZVBvc2l0aW9uOihCT09MKXVwZGF0ZVBvc2l0aW9uCiB7Ci0gICAgX3ByaXZhdGUtPnNj
cm9sbE9yaWdpblggPSBzY3JvbGxPcmlnaW5YOwotICAgIAorICAgIF9wcml2YXRlLT5zY3JvbGxP
cmlnaW4gPSBzY3JvbGxPcmlnaW47CiAgICAgaWQgZG9jVmlldyA9IFtzZWxmIGRvY3VtZW50Vmll
d107Ci0gICAgaWYgKHNjcm9sbE9yaWdpblggIT0gW2RvY1ZpZXcgYm91bmRzXS5vcmlnaW4ueCkg
ewotICAgICAgICAvLyAiLVtzZWxmIHNjcm9sbE9yaWdpblhdIiBpcyBlcXVhbCB0byB0aGUgbGVm
dCBsYXlvdXQgb3ZlcmZsb3cuCi0gICAgICAgIC8vIE1ha2UgRG9jdW1lbnQgYm91bmRzIG9yaWdp
biB4IGNvb3JkaW5hdGUgY29ycmVzcG9uZCB0byB0aGUgbGVmdCBvdmVyZmxvdyBzbyB0aGUgZW50
aXJlIGNhbnZhcyBpcyBjb3ZlcmVkIGJ5IHRoZSBkb2N1bWVudC4KLSAgICAgICAgW2RvY1ZpZXcg
c2V0Qm91bmRzT3JpZ2luOk5TTWFrZVBvaW50KC1zY3JvbGxPcmlnaW5YLCBbZG9jVmlldyBib3Vu
ZHNdLm9yaWdpbi55KV07Ci0gICAgfQorICAgIE5TUG9pbnQgZG9jT3JpZ2luID0gW2RvY1ZpZXcg
Ym91bmRzXS5vcmlnaW47CisgICAgaWYgKGRvY09yaWdpbi54ICE9IC1zY3JvbGxPcmlnaW4ueCB8
fCBkb2NPcmlnaW4ueSAhPSAtc2Nyb2xsT3JpZ2luLnkpIHsKKyAgICAgICAgTlNSZWN0IHZpc2li
bGVSZWN0ID0gW3NlbGYgZG9jdW1lbnRWaXNpYmxlUmVjdF07CisgICAgICAgICAKKyAgICAgICAg
W2RvY1ZpZXcgc2V0Qm91bmRzT3JpZ2luOk5TTWFrZVBvaW50KC1zY3JvbGxPcmlnaW4ueCwgLXNj
cm9sbE9yaWdpbi55KV07CiAKKyAgICAgICAgX3ByaXZhdGUtPnNjcm9sbE9yaWdpbkNoYW5nZWQg
PSB0cnVlOworICAgICAgICAKKyAgICAgICAgLy8gTWFpbnRhaW4gb3VyIG9yaWdpbmFsIHBvc2l0
aW9uIGluIHRoZSBwcmVzZW5jZSBvZiB0aGUgbmV3IHNjcm9sbCBvcmlnaW4uCisgICAgICAgIF9w
cml2YXRlLT5zY3JvbGxQb3NpdGlvbkV4Y2x1ZGluZ09yaWdpbiA9IE5TTWFrZVBvaW50KHZpc2li
bGVSZWN0Lm9yaWdpbi54ICsgc2Nyb2xsT3JpZ2luLngsIHZpc2libGVSZWN0Lm9yaWdpbi55ICsg
c2Nyb2xsT3JpZ2luLnkpOworICAgICAgICAKKyAgICAgICAgaWYgKHVwZGF0ZVBvc2l0aW9uKSAv
LyBPdGhlcndpc2Ugd2UnbGwganVzdCBsZXQgdGhlIHNuYXAgaGFwcGVuIHdoZW4gd2UgdXBkYXRl
IGZvciB0aGUgcmVzaXplLgorICAgICAgICAgICAgW3NlbGYgYWRqdXN0Rm9yU2Nyb2xsT3JpZ2lu
Q2hhbmdlXTsKKyAgICB9CiB9CiAKLS0gKGludClzY3JvbGxPcmlnaW5YCistIChOU1BvaW50KXNj
cm9sbE9yaWdpbgogewotICAgIHJldHVybiBfcHJpdmF0ZS0+c2Nyb2xsT3JpZ2luWDsKKyAgICBy
ZXR1cm4gX3ByaXZhdGUtPnNjcm9sbE9yaWdpbjsKIH0KIAogQGVuZApJbmRleDogV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRnJhbWVWaWV3Lm1tCShyZXZpc2lvbiA3Mjk0NykKKysrIFdlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZVZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzNiw3ICs1MzYsOCBAQCAtIChC
T09MKV9zY3JvbGxUb0JlZ2lubmluZ09mRG9jdW1lbnQKICAgICBpZiAoIVtzZWxmIF9pc1Njcm9s
bGFibGVdKQogICAgICAgICByZXR1cm4gTk87CiAgICAgTlNQb2ludCBwb2ludCA9IFtbW3NlbGYg
X3Njcm9sbFZpZXddIGRvY3VtZW50Vmlld10gZnJhbWVdLm9yaWdpbjsKLSAgICBwb2ludC54ICs9
IFtbc2VsZiBfc2Nyb2xsVmlld10gc2Nyb2xsT3JpZ2luWF07CisgICAgcG9pbnQueCArPSBbW3Nl
bGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpbl0ueDsKKyAgICBwb2ludC55ICs9IFtbc2VsZiBf
c2Nyb2xsVmlld10gc2Nyb2xsT3JpZ2luXS55OwogICAgIHJldHVybiBbW3NlbGYgX2NvbnRlbnRW
aWV3XSBfc2Nyb2xsVG86JnBvaW50IGFuaW1hdGU6WUVTXTsKIH0KIApAQCAtNTQ4LDcgKzU0OSw4
IEBAIC0gKEJPT0wpX3Njcm9sbFRvRW5kT2ZEb2N1bWVudAogICAgICAgICByZXR1cm4gTk87CiAg
ICAgTlNSZWN0IGZyYW1lID0gW1tbc2VsZiBfc2Nyb2xsVmlld10gZG9jdW1lbnRWaWV3XSBmcmFt
ZV07CiAgICAgTlNQb2ludCBwb2ludCA9IE5TTWFrZVBvaW50KGZyYW1lLm9yaWdpbi54LCBOU01h
eFkoZnJhbWUpKTsKLSAgICBwb2ludC54ICs9IFtbc2VsZiBfc2Nyb2xsVmlld10gc2Nyb2xsT3Jp
Z2luWF07CisgICAgcG9pbnQueCArPSBbW3NlbGYgX3Njcm9sbFZpZXddIHNjcm9sbE9yaWdpbl0u
eDsKKyAgICBwb2ludC55ICs9IFtbc2VsZiBfc2Nyb2xsVmlld10gc2Nyb2xsT3JpZ2luXS55Owog
ICAgIHJldHVybiBbW3NlbGYgX2NvbnRlbnRWaWV3XSBfc2Nyb2xsVG86JnBvaW50IGFuaW1hdGU6
WUVTXTsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzMwNTcpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0xMi0wMSAgRGF2aWQg
SHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ2NjQ1CisgICAgICAgIAorICAgICAgICBQYXJ0IDEgb2YgbWFraW5nIHNjcm9sbGluZyB3b3Jr
IHdpdGggdmVydGljYWwgdGV4dC4gVGhpcyBwYXRjaCBnZW5lcmFsaXplcyB0aGUgc2Nyb2xsT3Jp
Z2luWCBjb25jZXB0CisgICAgICAgIHJlY2VudGx5IGFkZGVkIGZvciBob3Jpem9udGFsIFJUTCBk
b2N1bWVudHMgYW5kIGFwcGxpZXMgaXQgdG8gd3JpdGluZyBtb2RlcyBhcyB3ZWxsLiAgTm93IHRo
ZQorICAgICAgICBzY3JvbGxPcmlnaW4gaXMgYSBwb2ludCwgc2luY2UgeW91IGNhbiBzdGFydCBv
ZmYgbG9ja2VkIHRvIHRoZSBib3R0b20gb3IgbG9ja2VkIHRvIHRoZSByaWdodC4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBmaXhlcyBudW1lcm91cyBidWdzIHdpdGggdGhlIHNj
cm9sbE9yaWdpbiBjb2RlIHVzaW5nIG5hdGl2ZSBNYWMgTlNTY3JvbGxWaWV3cyBhbmQKKyAgICAg
ICAgbWFrZXMgdGhlbSBiZWhhdmUgdGhlIHNhbWUgYXMgdGhlIGNyb3NzLXBsYXRmb3JtIGNvZGUg
KGFsbG93aW5nIGZvciBjcm9zcy1wbGF0Zm9ybSByZXN1bHRzIHRvIGJlCisgICAgICAgIGxhbmRl
ZCkuCisKKyAgICAgICAgKiBmYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLWRvZXNu
dC1maXJlLW9uc2Nyb2xsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
dmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC1kb2VzbnQtZmlyZS1vbnNjcm9sbC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0
bC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItd2hl
bi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vdmVy
dGljYWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRh
bC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKwogMjAx
MC0xMi0wMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9y
aXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxi
YXItaW4tcnRsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACitvcmln
aW5hbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2UgOiBTdWNjZXNzCitob3Jpem9udGFsIHNjcm9sbDog
OiBTdWNjZXNzCitjb250aW51b3VzbHkgY2FsbCB3aW5kb3cuc2Nyb2xsWCA6IFN1Y2Nlc3MKK3pv
b20gaW4gYW5kIG91dCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb246IFN1Y2Nlc3MKK3Jlc2l6ZSBw
cmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCit3aGVlbCBzY3JvbGwgcHJlc2VydmVz
IGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCitLZXlEb3duIEhPTUUgbW92ZSB4
LXNjcm9sbCBwb3NpdGlvbiB0byByaWdodCBmb3IgUlRMIHBhZ2U6IDAKK0tleURvd24gRU5EIG1v
dmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAwCitzZWxlY3RBbGwg
c2VsZWN0cyBhbGwgZG9jdW1lbnQ6IFN1Y2Nlc3MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1k
aXItY2hhbmdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorb3JpZ2luYWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdl
IDogU3VjY2VzcworaG9yaXpvbnRhbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2UgOiBTdWNjZXNzCitv
cmlnaW5hbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgOiBTdWNjZXNzCitob3Jpem9udGFsIHNjcm9s
bCB4IGZvciBMVFIgcGFnZSA6IFN1Y2Nlc3MKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLWRvZXNudC1maXJlLW9uc2Nyb2xsLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxi
YXItaW4tcnRsLWRvZXNudC1maXJlLW9uc2Nyb2xsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZG9lc250
LWZpcmUtb25zY3JvbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAK
K1RoaXMgdGVzdHMgdGhhdCB3aGVuIGEgcGFnZSB3aXRoIGFuIFJUTCBvdmVyZmxvdyBpcyBpbml0
aWFsbHkgbG9hZGVkLCBubyBzY3JvbGwgZXZlbnQgaXMgc2VudC4KK1RoaXMgdGVzdCBoYXMgcGFz
c2VkIGlmIHRoZSB0ZXh0ICJGQUlMIC0gc2Nyb2xsIGV2ZW50IHJlY2VpdmVkISIgZG9lcyBub3Qg
YXBwZWFyIGJlbG93LgorTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFk
aXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9y
ZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBu
b3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVh
IGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJp
dCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBw
YXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwg
c3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFi
b3J1bS4iCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1p
bi1ydGwtZG9lc250LWZpcmUtb25zY3JvbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLWRvZXNudC1maXJlLW9uc2Nyb2xs
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3Jv
bGxiYXItaW4tcnRsLWRvZXNudC1maXJlLW9uc2Nyb2xsLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgZGlyPXJ0bCBzdHlsZT0iLXdlYmtp
dC13cml0aW5nLW1vZGU6dmVydGljYWwtbHIiPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0
IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KKyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZyhzdHIpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgibGkiKTsKKyAgICAgICAgICAgICAgICBsaS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShzdHIpKTsKKyAgICAgICAgICAgICAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgICAgICAgICAgY29uc29sZS5hcHBl
bmRDaGlsZChsaSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG9ubG9hZCA9IGZ1bmN0
aW9uKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRvY3VtZW50Lm9uc2Ny
b2xsPWZ1bmN0aW9uKCl7bG9nKCJGQUlMIC0gc2Nyb2xsIGV2ZW50IHJlY2VpdmVkISIpO30KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGRp
cj1sdHI+CisgICAgICAgIDxwPlRoaXMgdGVzdHMgdGhhdCB3aGVuIGEgcGFnZSB3aXRoIGFuIFJU
TCBvdmVyZmxvdyBpcyBpbml0aWFsbHkgbG9hZGVkLCBubyBzY3JvbGwgZXZlbnQgaXMgc2VudC48
L3A+CisgICAgICAgIDxwPlRoaXMgdGVzdCBoYXMgcGFzc2VkIGlmIHRoZSB0ZXh0ICJGQUlMIC0g
c2Nyb2xsIGV2ZW50IHJlY2VpdmVkISIgZG9lcyBub3QgYXBwZWFyIGJlbG93LjwvcD4KKyAgICAg
ICAgPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ImRpdiIgc3R5bGU9IndoaXRlc3BhY2U6bm93cmFw
OyB3aWR0aDogMTAwMHB4OyBoZWlnaHQ6IDQwMDBweDsgYm9yZGVyOiAxcHggc29saWQgcmVkOyI+
TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2ljaW5nIGVsaXQs
IHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFn
bmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRh
dGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2Vx
dWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUg
dmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0
ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBx
dWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS4iPC9kaXY+Cisg
ICAgICAgIDx1bCBpZD0iY29uc29sZSI+PC91bD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxi
YXItaW4tcnRsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDkgQEAKK29yaWdpbmFsIHNjcm9sbCB5IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MK
K3ZlcnRpY2FsIHNjcm9sbDogOiBTdWNjZXNzCitjb250aW51b3VzbHkgY2FsbCB3aW5kb3cuc2Ny
b2xsWSA6IFN1Y2Nlc3MKK3pvb20gaW4gYW5kIG91dCBwcmVzZXJ2ZSBzY3JvbGwgcG9zaXRpb246
IFN1Y2Nlc3MKK3Jlc2l6ZSBwcmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9uOiBTdWNjZXNzCit3aGVl
bCBzY3JvbGwgcHJlc2VydmVzIHZlcnRpY2FsIHNjcm9sbCBwb3NpdGlvbjogU3VjY2VzcworS2V5
RG93biBIT01FIG1vdmUgeS1zY3JvbGwgcG9zaXRpb24gdG8gYm90dG9tIGZvciBSVEwgcGFnZTog
MAorS2V5RG93biBFTkQgbW92ZSB5LXNjcm9sbCBwb3NpdGlvbiB0byBib3R0b20gZm9yIFJUTCBw
YWdlOiAwCitzZWxlY3RBbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQ6IFN1Y2Nlc3MKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxi
YXItaW4tcnRsLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA0IEBACis8aHRtbCBkaXI9
cnRsIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTp2ZXJ0aWNhbC1sciI+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgorICAgICAgICAgICAgZnVu
Y3Rpb24gbG9nKHN0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgbGkgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAgICAgICAgIGxpLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cikpOworICAgICAgICAgICAgICAgIHZhciBj
b25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgICAg
ICAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgZnVuY3Rpb24gYXNzZXJ0RXF1YWwobWVzc2FnZSwgYWN0dWFsLCBleHBl
Y3RlZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoYWN0dWFsICE9IGV4cGVj
dGVkKQorICAgICAgICAgICAgICAgICAgICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBGYWlsdXJl
LCBhY3R1YWw6ICIgKyBhY3R1YWwgKyAiOyBleHBlY3RlZDogIiArIGV4cGVjdGVkKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxvZygiXG4iICsgbWVzc2FnZSAr
ICI6IFN1Y2Nlc3MiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
ZnVuY3Rpb24gYXNzZXJ0Q2xvc2UobWVzc2FnZSwgYWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoKGFjdHVhbCA+PSBleHBlY3RlZCAmJiBhY3R1YWwg
LSBleHBlY3RlZCA8IDUpIHx8CisgICAgICAgICAgICAgICAgICAgIChleHBlY3RlZCA+PSBhY3R1
YWwgJiYgZXhwZWN0ZWQgLSBhY3R1YWwgPCA1KSkKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJc
biIgKyBtZXNzYWdlICsgIjogU3VjY2VzcyIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogRmFpbHVyZSwgYWN0dWFsOiAi
ICsgYWN0dWFsICsgIjsgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFNjcm9sbFggPSA1MDA7CisgICAg
ICAgICAgICB2YXIgZXhwZWN0ZWRTY3JvbGxZID0gLTEwMDA7CisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIG1vdXNld2hlZWxIYW5kbGVyKGUpIAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGFzc2VydEVxdWFsKCJ3aGVlbCBzY3JvbGwgcHJlc2VydmVzIHZlcnRpY2FsIHNjcm9sbCBwb3Np
dGlvbiIsIHdpbmRvdy5zY3JvbGxZLCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBvbmxvYWQgPSBmdW5jdGlvbigpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgICAgICAgICAgICAgLy8gVGVzdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgcHJlc2VuY2UgYW5kIHRo
YXQgaXQgaXMgaW5pdGlhbGx5IGF0IHRoZSBib3R0b20gZm9yIFJUTCBwYWdlLgorICAgICAgICAg
ICAgICAgIGFzc2VydEVxdWFsKCJvcmlnaW5hbCBzY3JvbGwgeSBmb3IgUlRMIHBhZ2UgIiwgd2lu
ZG93LnNjcm9sbFksIDApOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCBo
b3Jpem9udGFsIHNjcm9sbC4KKyAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0
ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgIGFzc2VydEVxdWFs
KCJ2ZXJ0aWNhbCBzY3JvbGw6ICIsIHdpbmRvdy5zY3JvbGxZLCBleHBlY3RlZFNjcm9sbFkpOwor
ICAgICAgICAgICAgICAgIC8vIFRlc3QgY2FsbGluZyB3aW5kb3cuc2Nyb2xsWSBjb250aW51b3Vz
bHkgd29udCBjaGFuZ2UgdGhlIHNjcm9sbFkgcG9zaXRpb24uCisgICAgICAgICAgICAgICAgYXNz
ZXJ0RXF1YWwoImNvbnRpbnVvdXNseSBjYWxsIHdpbmRvdy5zY3JvbGxZICIsIHdpbmRvdy5zY3Jv
bGxZLCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICAv
LyBUZXN0IHpvb21pbmcgd29udCByZXNldCBzY3JvbGwgcG9zaXRpb24uCisgICAgICAgICAgICAg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgICAgICB3aW5kb3cu
c2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBleHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci56b29tUGFnZUluKCk7CisgICAgICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLnpvb21QYWdlT3V0KCk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydENsb3Nl
KCJ6b29tIGluIGFuZCBvdXQgcHJlc2VydmUgc2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93LnNjcm9s
bFksIGV4cGVjdGVkU2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgLy8gVGVzdCByZXNpemUgd29udCByZXNldCBzY3JvbGwgcG9zaXRp
b24uCisgICAgICAgICAgICAgICAgd2luZG93LnJlc2l6ZVRvKHdpbmRvdy5pbm5lcldpZHRoLCAx
MDAwKTsKKyAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oZXhwZWN0ZWRTY3JvbGxYLCBl
eHBlY3RlZFNjcm9sbFkpOworICAgICAgICAgICAgICAgIHdpbmRvdy5yZXNpemVUbyh3aW5kb3cu
aW5uZXJXaWR0aCwgMjAwMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInJlc2l6ZSBw
cmVzZXJ2ZXMgc2Nyb2xsIHBvc2l0aW9uIiwgd2luZG93LnNjcm9sbFksIGV4cGVjdGVkU2Nyb2xs
WSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCB3aGVlbCBzY3Jv
bGwgcHJlc2VydmVzIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uLgorICAgICAgICAgICAgICAg
IHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFggLyAyLCBleHBlY3RlZFNjcm9sbFkpOwor
ICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7
CisgICAgICAgICAgICAgICAgZGl2LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hlZWwiLCBtb3Vz
ZXdoZWVsSGFuZGxlciwgZmFsc2UpOworICAgICAgICAgICAgICAgIHZhciB3aGVlbEV2ZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIldoZWVsRXZlbnQiKTsKKyAgICAgICAgICAgICAgICB3aGVl
bEV2ZW50LmluaXRXZWJLaXRXaGVlbEV2ZW50KGV4cGVjdGVkU2Nyb2xsWCAvIDIsIDAsIHdpbmRv
dywgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAg
ICAgIGRpdi5kaXNwYXRjaEV2ZW50KHdoZWVsRXZlbnQpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgLy8gVGVzdCBIT01FL0VORCBvcGVyYXRpb24uCisgICAgICAgICAgICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgICAgICAvLyBOb3QgdXNpbmcg
YXNzZXJ0IGVxdWFsIGhlcmUgc2luY2UgdGhlIGJlaGF2aW9yIGlzIGRpZmZlcmVudCBpbiBlYWNo
IHBvcnQuIAorICAgICAgICAgICAgICAgICAgICAvLyBGb3IgZXhhbXBsZSwgaW4gTWFjLCBIT01F
L0VORCBrZXkgcmVzZXQgYm90aCB4IGFuZCB5IHNjcm9sbCBwb3NpdGlvbi4gCisgICAgICAgICAg
ICAgICAgICAgIC8vIEluIENocm9taXVtLCBIT01FL0VORCBrZXkgb25seSByZXNldCB5IHNjcm9s
bCBwb3NpdGlvbiwgYW5kIHggc2Nyb2xsIHBvc2l0aW9uIGlzIHByZXNlcnZlZC4KKyAgICAgICAg
ICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKGV4cGVjdGVkU2Nyb2xsWCwgZXhwZWN0ZWRTY3Jv
bGxZKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiaG9tZSIpOwor
ICAgICAgICAgICAgICAgICAgICBsb2coIktleURvd24gSE9NRSBtb3ZlIHktc2Nyb2xsIHBvc2l0
aW9uIHRvIGJvdHRvbSBmb3IgUlRMIHBhZ2U6ICIgKyB3aW5kb3cuc2Nyb2xsWSwgMCk7CisgICAg
ICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhleHBlY3RlZFNjcm9sbFgsIGV4cGVjdGVk
U2Nyb2xsWSk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImVuZCIp
OworICAgICAgICAgICAgICAgICAgICBsb2coIktleURvd24gRU5EIG1vdmUgeS1zY3JvbGwgcG9z
aXRpb24gdG8gYm90dG9tIGZvciBSVEwgcGFnZTogIiArIHdpbmRvdy5zY3JvbGxZLCAwKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHNl
bGVjdCBhbGwgc2VsZWN0cyBhbGwgZG9jdW1lbnQgY29udGVudC4KKyAgICAgICAgICAgICAgICB3
aW5kb3cucmVzaXplVG8oNTAwLCA1MDApOworICAgICAgICAgICAgICAgIHZhciBkaXYgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CisgICAgICAgICAgICAgICAgZGl2LmZvY3VzKCk7
CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIpOworICAg
ICAgICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0RXF1YWwoInNlbGVjdEFsbCBzZWxlY3RzIGFsbCBkb2N1bWVudCIs
IHNlbGVjdGlvbi50b1N0cmluZygpLnN1YnN0cmluZygwLCBkaXYuaW5uZXJIVE1MLmxlbmd0aCks
IGRpdi5pbm5lckhUTUwpOworCisgICAgICAgICAgICAgICAgZGl2LnN0eWxlLmRpc3BsYXkgPSAi
bm9uZSI7CisgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGlkPSJkaXYiIHN0eWxlPSJ3
aGl0ZXNwYWNlOm5vd3JhcDsgd2lkdGg6IDEwMDBweDsgaGVpZ2h0OiA0MDAwcHg7IGJvcmRlcjog
MXB4IHNvbGlkIHJlZDsiPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBh
ZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJv
cmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMg
bm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBl
YSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVy
aXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEg
cGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQs
IHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxh
Ym9ydW0uIjwvZGl2PgorICAgICAgICA8dWwgaWQ9ImNvbnNvbGUiIGRpcj1sdHI+PC91bD4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1z
Y3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3ZlcnRpY2FsLXNj
cm9sbGJhci13aGVuLWRpci1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDYgQEAKK29yaWdpbmFsIHNjcm9sbCB5IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK3ZlcnRp
Y2FsIHNjcm9sbCB5IGZvciBSVEwgcGFnZSA6IFN1Y2Nlc3MKK29yaWdpbmFsIHNjcm9sbCB5IGZv
ciBMVFIgcGFnZSA6IFN1Y2Nlc3MKK3ZlcnRpY2FsIHNjcm9sbCB5IGZvciBMVFIgcGFnZSA6IFN1
Y2Nlc3MKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXIt
d2hlbi1kaXItY2hhbmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
dmVydGljYWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLXdoZW4tZGlyLWNoYW5nZS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dD4KK2Z1bmN0aW9uIGxvZyhzdHIpCit7CisgICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgibGkiKTsKKyAgICBsaS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShz
dHIpKTsKKyAgICB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xl
Iik7CisgICAgY29uc29sZS5hcHBlbmRDaGlsZChsaSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydEVx
dWFsKG1lc3NhZ2UsIGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPSBleHBl
Y3RlZCkKKyAgICAgICAgbG9nKCJcbiIgKyBtZXNzYWdlICsgIjogRmFpbHVyZSwgYWN0dWFsOiAi
ICsgYWN0dWFsICsgIjsgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZCk7CisgICAgZWxzZQorICAgICAg
ICBsb2coIlxuIiArIG1lc3NhZ2UgKyAiOiBTdWNjZXNzIik7Cit9CisKK29ubG9hZCA9IGZ1bmN0
aW9uKCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwor
ICAgIGFzc2VydEVxdWFsKCJvcmlnaW5hbCBzY3JvbGwgeSBmb3IgUlRMIHBhZ2UgIiwgd2luZG93
LnNjcm9sbFksIDApOworICAgIHdpbmRvdy5zY3JvbGxUbygwLCAtMTAwKTsKKyAgICBhc3NlcnRF
cXVhbCgidmVydGljYWwgc2Nyb2xsIHkgZm9yIFJUTCBwYWdlICIsIHdpbmRvdy5zY3JvbGxZLCAt
MTAwKTsKKworICAgIGRvY3VtZW50LmJvZHkuZGlyID0gImx0ciI7CisgICAgYXNzZXJ0RXF1YWwo
Im9yaWdpbmFsIHNjcm9sbCB5IGZvciBMVFIgcGFnZSAiLCB3aW5kb3cuc2Nyb2xsWSwgMCk7Cisg
ICAgd2luZG93LnNjcm9sbFRvKDAsIDEwMCk7CisgICAgYXNzZXJ0RXF1YWwoInZlcnRpY2FsIHNj
cm9sbCB5IGZvciBMVFIgcGFnZSAiLCB3aW5kb3cuc2Nyb2xsWSwgMTAwKTsKKworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBkaXI9InJ0bCIgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1t
b2RlOnZlcnRpY2FsLWxyIj4KKworPGRpdiBzdHlsZT0iaGVpZ2h0OiA0MDAwcHg7IGJvcmRlcjog
MXB4IHNvbGlkIHJlZDsiIGlkPSJkaXYiPgorTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNv
bnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gTnVuYyBldCBuaXNsIHRlbGx1cy4gVml2YW11cyBh
bGlxdWFtIGVsaXQgbm9uIGFyY3Ugc2NlbGVyaXNxdWUgZWdldCBkYXBpYnVzIG51bmMgdnVscHV0
YXRlLiBNYWVjZW5hcyBzY2VsZXJpc3F1ZSBlZ2VzdGFzIHB1cnVzLCBpZCBiaWJlbmR1bSBtYWdu
YSB2ZW5lbmF0aXMgdmVsLiBWZXN0aWJ1bHVtIGJpYmVuZHVtIHZvbHV0cGF0IGFsaXF1YW0uIEN1
bSBzb2NpaXMgbmF0b3F1ZSBwZW5hdGlidXMgZXQgbWFnbmlzIGRpcyBwYXJ0dXJpZW50IG1vbnRl
cywgbmFzY2V0dXIgcmlkaWN1bHVzIG11cy4gVmVzdGlidWx1bSBlZ2V0IHJpc3VzIHNvZGFsZXMg
bWkgdHJpc3RpcXVlIGRpZ25pc3NpbSBldCBzZWQgbGVjdHVzLiBDcmFzIGNvbnZhbGxpcywgbmli
aCB1dCBkYXBpYnVzIGdyYXZpZGEsIGVuaW0gbWF1cmlzIG1vbGVzdGllIGVsaXQsIGVnZXQgZnJp
bmdpbGxhIGF1Z3VlIGVzdCBuZWMgZXN0LiBDdXJhYml0dXIgZXUgcXVhbSBub24gcHVydXMgc29k
YWxlcyBwdWx2aW5hci4gRG9uZWMgdWx0cmljZXMgZHVpIGVnZXQgZG9sb3IgbG9ib3J0aXMgaW4g
cG9ydGEgcXVhbSBydXRydW0uIE51bGxhIHJpc3VzIGxhY3VzLCBhZGlwaXNjaW5nIHF1aXMgdWxs
YW1jb3JwZXIgdmVzdGlidWx1bSwgY29uZGltZW50dW0gc2VkIGxhY3VzLiBTZWQgaW4gbnVuYyBk
b2xvciwgcXVpcyBlZ2VzdGFzIHR1cnBpcy4gSW50ZWdlciBhcmN1IHRlbGx1cywgcG9zdWVyZSBz
aXQgYW1ldCBwZWxsZW50ZXNxdWUgYSwgbW9sZXN0aWUgYXQgbWkuIE51bGxhIGJsYW5kaXQsIG1p
IGV0IGV1aXNtb2QgaW1wZXJkaWV0LCBhdWd1ZSBhcmN1IG9ybmFyZSBmZWxpcywgbmVjIHZpdmVy
cmEgbGFjdXMgbGlndWxhIHV0IG1ldHVzLiBQcm9pbiB1dCBsZW8gYW50ZSwgYXQgY29uc2VjdGV0
dXIgc2VtLiBOdWxsYW0gbm9uIG51bmMgbGlndWxhLiBQcm9pbiBzZWQgYW50ZSBzZW0sIGlkIHJ1
dHJ1bSBwdXJ1cy4KKzwvZGl2PgorPHVsIGlkPSJjb25zb2xlIj48L3VsPgorPGJyPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2hvcml6
b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDcyOTU2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsOSArMCwwIEBACi1vcmlnaW5hbCBzY3JvbGwgeCBmb3IgUlRMIHBhZ2Ug
OiBTdWNjZXNzCi1ob3Jpem9udGFsIHNjcm9sbDogOiBTdWNjZXNzCi1jb250aW51b3VzbHkgY2Fs
bCB3aW5kb3cuc2Nyb2xsWCA6IFN1Y2Nlc3MKLXpvb20gaW4gYW5kIG91dCBwcmVzZXJ2ZSBzY3Jv
bGwgcG9zaXRpb246IEZhaWx1cmUsIGFjdHVhbDogLTg2NjsgZXhwZWN0ZWQ6IC0xMDAwCi1yZXNp
emUgcHJlc2VydmVzIHNjcm9sbCBwb3NpdGlvbjogU3VjY2Vzcwotd2hlZWwgc2Nyb2xsIHByZXNl
cnZlcyBob3Jpem9udGFsIHNjcm9sbCBwb3NpdGlvbjogU3VjY2VzcwotS2V5RG93biBIT01FIG1v
dmUgeC1zY3JvbGwgcG9zaXRpb24gdG8gcmlnaHQgZm9yIFJUTCBwYWdlOiAwCi1LZXlEb3duIEVO
RCBtb3ZlIHgtc2Nyb2xsIHBvc2l0aW9uIHRvIHJpZ2h0IGZvciBSVEwgcGFnZTogMAotc2VsZWN0
QWxsIHNlbGVjdHMgYWxsIGRvY3VtZW50OiBTdWNjZXNzCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9k
b20vaG9yaXpvbnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gNzI5NTYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9kb20vaG9yaXpv
bnRhbC1zY3JvbGxiYXItd2hlbi1kaXItY2hhbmdlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICswLDAgQEAKLW9yaWdpbmFsIHNjcm9sbCB4IGZvciBSVEwgcGFnZSA6IFN1Y2Nl
c3MKLWhvcml6b250YWwgc2Nyb2xsIHggZm9yIFJUTCBwYWdlIDogU3VjY2Vzcwotb3JpZ2luYWwg
c2Nyb2xsIHggZm9yIExUUiBwYWdlIDogRmFpbHVyZSwgYWN0dWFsOiAzMTEwOyBleHBlY3RlZDog
MAotaG9yaXpvbnRhbCBzY3JvbGwgeCBmb3IgTFRSIHBhZ2UgOiBTdWNjZXNzCi0KLQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75330</attachid>
            <date>2010-12-01 15:51:46 -0800</date>
            <delta_ts>2010-12-01 15:57:03 -0800</delta_ts>
            <desc>Part 2: Generalize scrollOrigin to work with both horizontal and vertical overflow renderers</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>7559</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzA3NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMTItMDEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjY0NQorCisgICAgICAgIEdlbmVy
YWxpemUgb3ZlcmZsb3cgc2VjdGlvbiBzY3JvbGxPcmlnaW5YIGNvZGUgdG8gYmUgYSBwb2ludCBh
bmQgdG8gd29yayBpbiBib3RoIGhvcml6b250YWwKKyAgICAgICAgYW5kIHZlcnRpY2FsIG1vZGVz
LgorCisgICAgICAgIE5vdCB0ZXN0YWJsZSB5ZXQsIHNpbmNlIHRoZSByaWdodG1vc3QvbGVmdG1v
c3QvdG9wbW9zdC9sb3dlc3RQb3NpdGlvbiBmdW5jdGlvbnMgYXJlIHJldHVybmluZworICAgICAg
ICBob3JyZW5kb3VzbHkgd3JvbmcgdmFsdWVzIGluIHRoZSB2ZXJ0aWNhbCB0ZXh0IGNhc2UgZm9y
IG92ZXJmbG93OmF1dG8gb2JqZWN0cy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFRvT2Zmc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpjb21wdXRlU2Nyb2xsRGltZW5zaW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlT3ZlcmZsb3dTdGF0dXMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNj
cm9sbGVkQ29udGVudE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Ny
b2xsWE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsWU9mZnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsVG9YT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxUb1lPZmZzZXQpOgorCiAyMDEwLTEy
LTAxICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9u
IDcyOTQ3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDMsOCArMTQzLDggQEAgUmVuZGVyTGF5ZXI6OlJlbmRlckxheWVyKFJlbmRlckJv
eE1vZGVsTwogICAgICwgbV9oZWlnaHQoMCkKICAgICAsIG1fc2Nyb2xsWCgwKQogICAgICwgbV9z
Y3JvbGxZKDApCi0gICAgLCBtX3Njcm9sbE9yaWdpblgoMCkKICAgICAsIG1fc2Nyb2xsTGVmdE92
ZXJmbG93KDApCisgICAgLCBtX3Njcm9sbFRvcE92ZXJmbG93KDApCiAgICAgLCBtX3Njcm9sbFdp
ZHRoKDApCiAgICAgLCBtX3Njcm9sbEhlaWdodCgwKQogICAgICwgbV9pblJlc2l6ZU1vZGUoZmFs
c2UpCkBAIC0xMzI5LDExICsxMzI5LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFRvT2Zm
c2V0KGludCB4LCAKICAgICAvLyBjb21wbGljYXRlZCAoc2luY2UgaXQgd2lsbCBpbnZvbHZlIHRl
c3Rpbmcgd2hldGhlciBvdXIgbGF5ZXIKICAgICAvLyBpcyBlaXRoZXIgb2NjbHVkZWQgYnkgYW5v
dGhlciBsYXllciBvciBjbGlwcGVkIGJ5IGFuIGVuY2xvc2luZwogICAgIC8vIGxheWVyIG9yIGNv
bnRhaW5zIGZpeGVkIGJhY2tncm91bmRzLCBldGMuKS4KLSAgICBpbnQgbmV3U2Nyb2xsWCA9IHgg
LSBtX3Njcm9sbE9yaWdpblg7Ci0gICAgaWYgKG1fc2Nyb2xsWSA9PSB5ICYmIG1fc2Nyb2xsWCA9
PSBuZXdTY3JvbGxYKQorICAgIGludCBuZXdTY3JvbGxYID0geCAtIG1fc2Nyb2xsT3JpZ2luLngo
KTsKKyAgICBpbnQgbmV3U2Nyb2xsWSA9IHkgLSBtX3Njcm9sbE9yaWdpbi55KCk7CisgICAgaWYg
KG1fc2Nyb2xsWSA9PSBuZXdTY3JvbGxZICYmIG1fc2Nyb2xsWCA9PSBuZXdTY3JvbGxYKQogICAg
ICAgICByZXR1cm47CiAgICAgbV9zY3JvbGxYID0gbmV3U2Nyb2xsWDsKLSAgICBtX3Njcm9sbFkg
PSB5OworICAgIG1fc2Nyb2xsWSA9IG5ld1Njcm9sbFk7CiAKICAgICAvLyBVcGRhdGUgdGhlIHBv
c2l0aW9ucyBvZiBvdXIgY2hpbGQgbGF5ZXJzLiBEb24ndCBoYXZlIHVwZGF0ZUxheWVyUG9zaXRp
b25zKCkgdXBkYXRlCiAgICAgLy8gY29tcG9zaXRpbmcgbGF5ZXJzLCBiZWNhdXNlIHdlIG5lZWQg
dG8gZG8gYSBkZWVwIHVwZGF0ZSBmcm9tIHRoZSBjb21wb3NpdGluZyBhbmNlc3Rvci4KQEAgLTE5
NjMsMjIgKzE5NjQsMjYgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29tcHV0ZVNjcm9sbERpbWVuc2lv
bgogICAgIAogICAgIG1fc2Nyb2xsRGltZW5zaW9uc0RpcnR5ID0gZmFsc2U7CiAgICAgCi0gICAg
Ym9vbCBsdHIgPSByZW5kZXJlcigpLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7
Ci0KICAgICBpbnQgY2xpZW50V2lkdGggPSBib3gtPmNsaWVudFdpZHRoKCk7CiAgICAgaW50IGNs
aWVudEhlaWdodCA9IGJveC0+Y2xpZW50SGVpZ2h0KCk7CiAKLSAgICBtX3Njcm9sbExlZnRPdmVy
ZmxvdyA9IGx0ciA/IDAgOiBtaW4oMCwgYm94LT5sZWZ0bW9zdFBvc2l0aW9uKHRydWUsIGZhbHNl
KSAtIGJveC0+Ym9yZGVyTGVmdCgpKTsKKyAgICBib29sIGhhc0xlZnRPdmVyZmxvdyA9ICghYm94
LT5zdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpIHx8ICFib3gtPnN0eWxlKCktPmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgJiYgYm94LT5zdHlsZSgpLT53cml0aW5nTW9kZSgpICE9
IExlZnRUb1JpZ2h0V3JpdGluZ01vZGU7CisgICAgYm9vbCBoYXNUb3BPdmVyZmxvdyA9IChib3gt
PnN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgfHwgIWJveC0+c3R5bGUoKS0+aXNM
ZWZ0VG9SaWdodERpcmVjdGlvbigpKSAmJiBib3gtPnN0eWxlKCktPndyaXRpbmdNb2RlKCkgIT0g
VG9wVG9Cb3R0b21Xcml0aW5nTW9kZTsKKworICAgIG1fc2Nyb2xsTGVmdE92ZXJmbG93ID0gIWhh
c0xlZnRPdmVyZmxvdyA/IDAgOiBtaW4oMCwgYm94LT5sZWZ0bW9zdFBvc2l0aW9uKHRydWUsIGZh
bHNlKSAtIGJveC0+Ym9yZGVyTGVmdCgpKTsKKyAgICBtX3Njcm9sbFRvcE92ZXJmbG93ID0gIWhh
c1RvcE92ZXJmbG93ID8gMCA6IG1pbigwLCBib3gtPnRvcG1vc3RQb3NpdGlvbih0cnVlLCBmYWxz
ZSkgLSBib3gtPmJvcmRlclRvcCgpKTsKIAotICAgIGludCByaWdodFBvcyA9IGx0ciA/CisgICAg
aW50IHJpZ2h0UG9zID0gIWhhc0xlZnRPdmVyZmxvdyA/CiAgICAgICAgICAgICAgICAgICAgIGJv
eC0+cmlnaHRtb3N0UG9zaXRpb24odHJ1ZSwgZmFsc2UpIC0gYm94LT5ib3JkZXJMZWZ0KCkgOgog
ICAgICAgICAgICAgICAgICAgICBjbGllbnRXaWR0aCAtIG1fc2Nyb2xsTGVmdE92ZXJmbG93Owot
ICAgIGludCBib3R0b21Qb3MgPSBib3gtPmxvd2VzdFBvc2l0aW9uKHRydWUsIGZhbHNlKSAtIGJv
eC0+Ym9yZGVyVG9wKCk7CisgICAgaW50IGJvdHRvbVBvcyA9ICFoYXNUb3BPdmVyZmxvdyA/Cisg
ICAgICAgICAgICAgICAgICAgIGJveC0+bG93ZXN0UG9zaXRpb24odHJ1ZSwgZmFsc2UpIC0gYm94
LT5ib3JkZXJUb3AoKSA6CisgICAgICAgICAgICAgICAgICAgIGNsaWVudEhlaWdodCAtIG1fc2Ny
b2xsVG9wT3ZlcmZsb3c7CiAKICAgICBtX3Njcm9sbFdpZHRoID0gbWF4KHJpZ2h0UG9zLCBjbGll
bnRXaWR0aCk7CiAgICAgbV9zY3JvbGxIZWlnaHQgPSBtYXgoYm90dG9tUG9zLCBjbGllbnRIZWln
aHQpOwogICAgIAotICAgIG1fc2Nyb2xsT3JpZ2luWCA9IGx0ciA/IDAgOiBtX3Njcm9sbFdpZHRo
IC0gY2xpZW50V2lkdGg7CisgICAgbV9zY3JvbGxPcmlnaW4gPSBJbnRQb2ludCghaGFzTGVmdE92
ZXJmbG93ID8gMCA6IG1fc2Nyb2xsV2lkdGggLSBjbGllbnRXaWR0aCwgIWhhc1RvcE92ZXJmbG93
ID8gMCA6IG1fc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0KTsKIAogICAgIGlmIChuZWVkSEJh
cikKICAgICAgICAgKm5lZWRIQmFyID0gcmlnaHRQb3MgPiBjbGllbnRXaWR0aDsKQEAgLTE5OTIs
NyArMTk5Nyw2IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU92ZXJmbG93U3RhdHVzKGIKICAg
ICAgICAgbV9ob3Jpem9udGFsT3ZlcmZsb3cgPSBob3Jpem9udGFsT3ZlcmZsb3c7CiAgICAgICAg
IG1fdmVydGljYWxPdmVyZmxvdyA9IHZlcnRpY2FsT3ZlcmZsb3c7CiAgICAgICAgIG1fb3ZlcmZs
b3dTdGF0dXNEaXJ0eSA9IGZhbHNlOwotICAgICAgICAKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkocmV2aXNpb24gNzI5NDcpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsMTQg
KzIzMywxNCBAQCBwdWJsaWM6CiAgICAgLy8gU2Nyb2xsaW5nIG1ldGhvZHMgZm9yIGxheWVycyB0
aGF0IGNhbiBzY3JvbGwgdGhlaXIgb3ZlcmZsb3cuCiAgICAgdm9pZCBzY3JvbGxCeVJlY3Vyc2l2
ZWx5KGludCB4RGVsdGEsIGludCB5RGVsdGEpOwogCi0gICAgSW50U2l6ZSBzY3JvbGxlZENvbnRl
bnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKHNjcm9sbFhPZmZzZXQoKSArIG1fc2Ny
b2xsTGVmdE92ZXJmbG93LCBzY3JvbGxZT2Zmc2V0KCkpOyB9CisgICAgSW50U2l6ZSBzY3JvbGxl
ZENvbnRlbnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKHNjcm9sbFhPZmZzZXQoKSAr
IG1fc2Nyb2xsTGVmdE92ZXJmbG93LCBzY3JvbGxZT2Zmc2V0KCkgKyBtX3Njcm9sbFRvcE92ZXJm
bG93KTsgfQogCi0gICAgaW50IHNjcm9sbFhPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9s
bFggKyBtX3Njcm9sbE9yaWdpblg7IH0KLSAgICBpbnQgc2Nyb2xsWU9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2Nyb2xsWTsgfQorICAgIGludCBzY3JvbGxYT2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9zY3JvbGxYICsgbV9zY3JvbGxPcmlnaW4ueCgpOyB9CisgICAgaW50IHNjcm9sbFlPZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbFkgKyBtX3Njcm9sbE9yaWdpbi55KCk7IH0KIAog
ICAgIHZvaWQgc2Nyb2xsVG9PZmZzZXQoaW50IHgsIGludCB5LCBib29sIHVwZGF0ZVNjcm9sbGJh
cnMgPSB0cnVlLCBib29sIHJlcGFpbnQgPSB0cnVlKTsKLSAgICB2b2lkIHNjcm9sbFRvWE9mZnNl
dChpbnQgeCkgeyBzY3JvbGxUb09mZnNldCh4LCBtX3Njcm9sbFkpOyB9Ci0gICAgdm9pZCBzY3Jv
bGxUb1lPZmZzZXQoaW50IHkpIHsgc2Nyb2xsVG9PZmZzZXQobV9zY3JvbGxYICsgbV9zY3JvbGxP
cmlnaW5YLCB5KTsgfQorICAgIHZvaWQgc2Nyb2xsVG9YT2Zmc2V0KGludCB4KSB7IHNjcm9sbFRv
T2Zmc2V0KHgsIG1fc2Nyb2xsWSArIG1fc2Nyb2xsT3JpZ2luLnkoKSk7IH0KKyAgICB2b2lkIHNj
cm9sbFRvWU9mZnNldChpbnQgeSkgeyBzY3JvbGxUb09mZnNldChtX3Njcm9sbFggKyBtX3Njcm9s
bE9yaWdpbi54KCksIHkpOyB9CiAgICAgdm9pZCBzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IElu
dFJlY3QmLCBib29sIHNjcm9sbFRvQW5jaG9yID0gZmFsc2UsIGNvbnN0IFNjcm9sbEFsaWdubWVu
dCYgYWxpZ25YID0gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBjb25zdCBT
Y3JvbGxBbGlnbm1lbnQmIGFsaWduWSA9IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5l
ZWRlZCk7CiAKICAgICBJbnRSZWN0IGdldFJlY3RUb0V4cG9zZShjb25zdCBJbnRSZWN0JiB2aXNp
YmxlUmVjdCwgY29uc3QgSW50UmVjdCYgZXhwb3NlUmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50
JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZKTsKQEAgLTYwNiw5ICs2MDYs
MjIgQEAgcHJvdGVjdGVkOgogICAgIC8vIE91ciBzY3JvbGwgb2Zmc2V0cyBpZiB0aGUgdmlldyBp
cyBzY3JvbGxlZC4KICAgICBpbnQgbV9zY3JvbGxYOwogICAgIGludCBtX3Njcm9sbFk7Ci0gICAg
aW50IG1fc2Nyb2xsT3JpZ2luWDsgICAgICAgIC8vIG9ubHkgbm9uLXplcm8gZm9yIHJ0bCBjb250
ZW50Ci0gICAgaW50IG1fc2Nyb2xsTGVmdE92ZXJmbG93OyAgIC8vIG9ubHkgbm9uLXplcm8gZm9y
IHJ0bCBjb250ZW50Ci0KKyAgICAKKyAgICAvLyBUaGVyZSBhcmUgOCBwb3NzaWJsZSBjb21iaW5h
dGlvbnMgb2Ygd3JpdGluZyBtb2RlIGFuZCBkaXJlY3Rpb24uICBTY3JvbGwgb3JpZ2luIChhbmQg
aXRzIGNvcnJlc3BvbmRpbmcgbGVmdC90b3Agb3ZlcmZsb3cpCisgICAgLy8gd2lsbCBiZSBub24t
emVybyBpbiB0aGUgeCBvciB5IGF4aXMgaWYgdGhlcmUgaXMgYW55IHJldmVyc2VkIGRpcmVjdGlv
biBvciB3cml0aW5nLW1vZGUuICBUaGUgY29tYmluYXRpb25zIGFyZToKKyAgICAvLyB3cml0aW5n
LW1vZGUgLyBkaXJlY3Rpb24gICAgIHNjcm9sbE9yaWdpbi54KCkgc2V0ICAgIHNjcm9sbE9yaWdp
bi55KCkgc2V0CisgICAgLy8gaG9yaXpvbnRhbC10YiAvIGx0ciAgICAgICAgICBOTyAgICAgICAg
ICAgICAgICAgICAgICBOTworICAgIC8vIGhvcml6b250YWwtdGIgLyBydGwgICAgICAgICAgWUVT
ICAgICAgICAgICAgICAgICAgICAgTk8KKyAgICAvLyBob3Jpem9udGFsLWJ0IC8gbHRyICAgICAg
ICAgIE5PICAgICAgICAgICAgICAgICAgICAgIFlFUworICAgIC8vIGhvcml6b250YWwtYnQgLyBy
dGwgICAgICAgICAgWUVTICAgICAgICAgICAgICAgICAgICAgWUVTCisgICAgLy8gdmVydGljYWwt
bHIgLyBsdHIgICAgICAgICAgICBOTyAgICAgICAgICAgICAgICAgICAgICBOTworICAgIC8vIHZl
cnRpY2FsLWxyIC8gcnRsICAgICAgICAgICAgTk8gICAgICAgICAgICAgICAgICAgICAgWUVTCisg
ICAgLy8gdmVydGljYWwtcmwgLyBsdHIgICAgICAgICAgICBZRVMgICAgICAgICAgICAgICAgICAg
ICBOTworICAgIC8vIHZlcnRpY2FsLXJsIC8gcnRsICAgICAgICAgICAgWUVTICAgICAgICAgICAg
ICAgICAgICAgWUVTCisgICAgSW50UG9pbnQgbV9zY3JvbGxPcmlnaW47CisgICAgaW50IG1fc2Ny
b2xsTGVmdE92ZXJmbG93OworICAgIGludCBtX3Njcm9sbFRvcE92ZXJmbG93OworICAgIAogICAg
IC8vIFRoZSB3aWR0aC9oZWlnaHQgb2Ygb3VyIHNjcm9sbGVkIGFyZWEuCiAgICAgaW50IG1fc2Ny
b2xsV2lkdGg7CiAgICAgaW50IG1fc2Nyb2xsSGVpZ2h0Owo=
</data>
<flag name="review"
          id="66116"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>