<?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>57605</bug_id>
          
          <creation_ts>2011-03-31 20:17:07 -0700</creation_ts>
          <short_desc>Frame::pageScaleFactor() should not affect getBoundingClientRect() or getClientRects()</short_desc>
          <delta_ts>2011-04-02 17:38:54 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>bdakin</cc>
    
    <cc>eric</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>377621</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-03-31 20:17:07 -0700</bug_when>
    <thetext>I don&apos;t think that Frame::pageScaleFactor() should affect getBoundingClientRect() or getClientRects(). Patch forthcoming.

&lt;rdar://problem/9194541&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377627</commentid>
    <comment_count>1</comment_count>
      <attachid>87822</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-03-31 20:26:27 -0700</bug_when>
    <thetext>Created attachment 87822
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377629</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-31 20:28:13 -0700</bug_when>
    <thetext>Attachment 87822 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377630</commentid>
    <comment_count>3</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-03-31 20:29:59 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 87822 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
&gt; 
&gt; Source/WebCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
&gt; Total errors found: 1 in 3 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

What!! I thought I was meeting your crazy demands by putting the but title on a separate line from the bug number. You just never let up, style bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377736</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-01 05:58:33 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Attachment 87822 [details] [details] did not pass style-queue:
&gt; &gt; 
&gt; &gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
&gt; &gt; 
&gt; &gt; Source/WebCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
&gt; &gt; Total errors found: 1 in 3 files
&gt; &gt; 
&gt; &gt; 
&gt; &gt; If any of these errors are false positives, please file a bug against check-webkit-style.
&gt; 
&gt; What!! I thought I was meeting your crazy demands by putting the but title on a separate line from the bug number. You just never let up, style bot.

Stylebot hates &quot;Fix for&quot;. But bug 56989 might be your salvation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377738</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-01 05:59:03 -0700</bug_when>
    <thetext>I mean bug 57579.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377789</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-04-01 08:08:04 -0700</bug_when>
    <thetext>What about event.clientX/clientY, scroll offets and other things in &quot;client&quot; coordinates?

Is this bug fixing an issue on a live site?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377882</commentid>
    <comment_count>7</comment_count>
      <attachid>87822</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-01 10:02:35 -0700</bug_when>
    <thetext>Comment on attachment 87822
Patch

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

&gt; Source/WebCore/dom/Element.cpp:550
&gt; +    float pageScale = 1;
&gt; +    if (Page* page = document()-&gt;page()) {
&gt; +        if (Frame* frame = page-&gt;mainFrame())
&gt; +            pageScale = frame-&gt;pageScaleFactor();
&gt; +    }

Seems strange to go from document to page and then to frame. You can go directly from a document to a frame. But I guess that subframes always have a scale factor of 1. This is not a great design. Page-wide settings should be on the page rather than the main frame. Or if they need to be on frames they should be on all frames.

The fact that you can’t get the scale factor without going to the main frame is not good. We should fix that later. This entire paragraph of code should be simple. I don’t want to have to repeat this dance any time we need to get the scale factor.

Not really about this patch, though.

&gt; Source/WebCore/dom/Element.cpp:601
&gt; +    if (Page* page = document()-&gt;page()) {
&gt; +        if (Frame* frame = page-&gt;mainFrame())
&gt; +            adjustFloatRectForPageScale(result, frame-&gt;pageScaleFactor());
&gt; +    }

There it is, the same dance again. Yuck.

&gt; Source/WebCore/rendering/RenderObject.h:1085
&gt; +    if (pageScale == 1)
&gt; +        return point;

Why the early exit for 1 here, but not in the quad or rect versions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377924</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-04-01 11:09:49 -0700</bug_when>
    <thetext>Do we need to do this for the Range version of these functions?  I think we should test this fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378148</commentid>
    <comment_count>9</comment_count>
      <attachid>87932</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-04-01 15:46:50 -0700</bug_when>
    <thetext>Created attachment 87932
Patch with layout test support

Thanks for the review, Darin. Sam added DRT support to test this feature (included in this patch), and I have some tests now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378440</commentid>
    <comment_count>10</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-04-02 15:37:55 -0700</bug_when>
    <thetext>Committed the WebCore portion with revision 82778. Will commit DRT+WK2+tests momentarily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378445</commentid>
    <comment_count>11</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-04-02 16:47:04 -0700</bug_when>
    <thetext>Committed everything else with r82780.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378454</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-02 17:14:03 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/82778 might have broken Leopard Intel Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378456</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-02 17:28:38 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/82780 might have broken SnowLeopard Intel Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378458</commentid>
    <comment_count>14</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-04-02 17:38:54 -0700</bug_when>
    <thetext>Oops! And revision 82782.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87822</attachid>
            <date>2011-03-31 20:26:27 -0700</date>
            <delta_ts>2011-04-01 15:46:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>3595</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNjU3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMDMtMzEgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU3NjA1CisgICAgICAgIEZyYW1lOjpwYWdlU2NhbGVGYWN0b3IoKSBzaG91bGQgbm90
IGFmZmVjdCBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBvciAKKyAgICAgICAgZ2V0Q2xpZW50UmVj
dHMoKQorICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS85MTk0NTQxPgorCisgICAgICAgIE5ldyBmdW5jdGlvbnMgYWRqdXN0KkZvclBhZ2VTY2FsZSgp
IGFyZSBhbmFsb2dvdXMgdG8gYWRqdXN0KkZvckFic29sdXRlWm9vbSgpLgorICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldENsaWVudFJlY3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEJvdW5kaW5nQ2xpZW50UmVjdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6YWRq
dXN0RmxvYXRQb2ludEZvclBhZ2VTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RGbG9h
dFF1YWRGb3JQYWdlU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0RmxvYXRSZWN0Rm9y
UGFnZVNjYWxlKToKKwogMjAxMS0wMy0zMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjgyNjUyLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gODI0MDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0MywxMSArNTQzLDE5IEBA
IFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IEVsZW1lbnQ6OmdldEMKICAgICBWZWN0b3I8Rmxv
YXRRdWFkPiBxdWFkczsKICAgICByZW5kZXJCb3hNb2RlbE9iamVjdC0+YWJzb2x1dGVRdWFkcyhx
dWFkcyk7CiAKKyAgICBmbG9hdCBwYWdlU2NhbGUgPSAxOworICAgIGlmIChQYWdlKiBwYWdlID0g
ZG9jdW1lbnQoKS0+cGFnZSgpKSB7CisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYWdlLT5t
YWluRnJhbWUoKSkKKyAgICAgICAgICAgIHBhZ2VTY2FsZSA9IGZyYW1lLT5wYWdlU2NhbGVGYWN0
b3IoKTsKKyAgICB9CisKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gZG9jdW1lbnQoKS0+dmll
dygpKSB7CiAgICAgICAgIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlldy0+dmlzaWJs
ZUNvbnRlbnRSZWN0KCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZHMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgICAgIHF1YWRzW2ldLm1vdmUoLXZpc2libGVDb250ZW50UmVj
dC54KCksIC12aXNpYmxlQ29udGVudFJlY3QueSgpKTsKICAgICAgICAgICAgIGFkanVzdEZsb2F0
UXVhZEZvckFic29sdXRlWm9vbShxdWFkc1tpXSwgcmVuZGVyQm94TW9kZWxPYmplY3QpOworICAg
ICAgICAgICAgaWYgKHBhZ2VTY2FsZSAhPSAxKQorICAgICAgICAgICAgICAgIGFkanVzdEZsb2F0
UXVhZEZvclBhZ2VTY2FsZShxdWFkc1tpXSwgcGFnZVNjYWxlKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtNTg3LDYgKzU5NSwxMSBAQCBQYXNzUmVmUHRyPENsaWVudFJlY3Q+IEVsZW1lbnQ6Omdl
dEJvdW5kCiAgICAgfQogCiAgICAgYWRqdXN0RmxvYXRSZWN0Rm9yQWJzb2x1dGVab29tKHJlc3Vs
dCwgcmVuZGVyZXIoKSk7CisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCkp
IHsKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpKQorICAgICAg
ICAgICAgYWRqdXN0RmxvYXRSZWN0Rm9yUGFnZVNjYWxlKHJlc3VsdCwgZnJhbWUtPnBhZ2VTY2Fs
ZUZhY3RvcigpKTsKKyAgICB9CisKICAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJlc3Vs
dCk7CiB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CShyZXZpc2lvbiA4MjQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3OSw2ICsxMDc5LDI5IEBAIGlubGluZSB2b2lkIGFk
anVzdEZsb2F0UmVjdEZvckFic29sdXRlWm8KICAgICByZWN0LnNldEhlaWdodChhZGp1c3RGbG9h
dEZvckFic29sdXRlWm9vbShyZWN0LmhlaWdodCgpLCBzdHlsZSkpOwogfQogCitpbmxpbmUgRmxv
YXRQb2ludCBhZGp1c3RGbG9hdFBvaW50Rm9yUGFnZVNjYWxlKGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBmbG9hdCBwYWdlU2NhbGUpCit7CisgICAgaWYgKHBhZ2VTY2FsZSA9PSAxKQorICAgICAg
ICByZXR1cm4gcG9pbnQ7CisgICAgcmV0dXJuIEZsb2F0UG9pbnQocG9pbnQueCgpIC8gcGFnZVNj
YWxlLCBwb2ludC55KCkgLyBwYWdlU2NhbGUpOworfQorCitpbmxpbmUgdm9pZCBhZGp1c3RGbG9h
dFF1YWRGb3JQYWdlU2NhbGUoRmxvYXRRdWFkJiBxdWFkLCBmbG9hdCBwYWdlU2NhbGUpCit7Cisg
ICAgcXVhZC5zZXRQMShhZGp1c3RGbG9hdFBvaW50Rm9yUGFnZVNjYWxlKHF1YWQucDEoKSwgcGFn
ZVNjYWxlKSk7CisgICAgcXVhZC5zZXRQMihhZGp1c3RGbG9hdFBvaW50Rm9yUGFnZVNjYWxlKHF1
YWQucDIoKSwgcGFnZVNjYWxlKSk7CisgICAgcXVhZC5zZXRQMyhhZGp1c3RGbG9hdFBvaW50Rm9y
UGFnZVNjYWxlKHF1YWQucDMoKSwgcGFnZVNjYWxlKSk7CisgICAgcXVhZC5zZXRQNChhZGp1c3RG
bG9hdFBvaW50Rm9yUGFnZVNjYWxlKHF1YWQucDQoKSwgcGFnZVNjYWxlKSk7Cit9CisKK2lubGlu
ZSB2b2lkIGFkanVzdEZsb2F0UmVjdEZvclBhZ2VTY2FsZShGbG9hdFJlY3QmIHJlY3QsIGZsb2F0
IHBhZ2VTY2FsZSkKK3sKKyAgICByZWN0LnNldFgocmVjdC54KCkgLyBwYWdlU2NhbGUpOworICAg
IHJlY3Quc2V0WShyZWN0LnkoKSAvIHBhZ2VTY2FsZSk7CisgICAgcmVjdC5zZXRXaWR0aChyZWN0
LndpZHRoKCkgLyBwYWdlU2NhbGUpOworICAgIHJlY3Quc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkg
LyBwYWdlU2NhbGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNpZm5kZWYgTkRF
QlVHCg==
</data>
<flag name="review"
          id="80273"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87932</attachid>
            <date>2011-04-01 15:46:50 -0700</date>
            <delta_ts>2011-04-01 16:04:24 -0700</delta_ts>
            <desc>Patch with layout test support</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>23990</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNzI3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDQtMDEgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NzYwNQorICAgICAgICBGcmFtZTo6cGFnZVNjYWxlRmFjdG9yKCkgc2hvdWxkIG5vdCBhZmZlY3Qg
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgb3IgCisgICAgICAgIGdldENsaWVudFJlY3RzKCkKKyAg
ICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTE5NDU0
MT4KKworICAgICAgICBOZXcgZnVuY3Rpb25zIGFkanVzdCpGb3JQYWdlU2NhbGUoKSBhcmUgYW5h
bG9nb3VzIHRvIGFkanVzdCpGb3JBYnNvbHV0ZVpvb20oKS4KKyAgICAgICAgKiBkb20vRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRDbGllbnRSZWN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRCb3VuZGluZ0NsaWVudFJlY3QpOgorICAgICAgICAq
IGRvbS9SYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RGbG9hdFF1YWRzRm9yU2Ny
b2xsQW5kQWJzb2x1dGVab29tQW5kUGFnZVNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdl
OjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdEZsb2F0UG9pbnRGb3JQYWdlU2NhbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6YWRqdXN0RmxvYXRRdWFkRm9yUGFnZVNjYWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OmFkanVzdEZsb2F0UmVjdEZvclBhZ2VTY2FsZSk6CisKIDIwMTEtMDQtMDEgIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgMzItYml0IE1hYyBi
dWlsZCBmaXguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiA4MjcxNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQzLDEx
ICs1NDMsMTkgQEAgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlzdD4gRWxlbWVudDo6Z2V0QwogICAg
IFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwogICAgIHJlbmRlckJveE1vZGVsT2JqZWN0LT5hYnNv
bHV0ZVF1YWRzKHF1YWRzKTsKIAorICAgIGZsb2F0IHBhZ2VTY2FsZSA9IDE7CisgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCkpIHsKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFt
ZSA9IHBhZ2UtPm1haW5GcmFtZSgpKQorICAgICAgICAgICAgcGFnZVNjYWxlID0gZnJhbWUtPnBh
Z2VTY2FsZUZhY3RvcigpOworICAgIH0KKwogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBkb2N1
bWVudCgpLT52aWV3KCkpIHsKICAgICAgICAgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSB2
aWV3LT52aXNpYmxlQ29udGVudFJlY3QoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBxdWFkcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgcXVhZHNbaV0ubW92ZSgtdmlzaWJs
ZUNvbnRlbnRSZWN0LngoKSwgLXZpc2libGVDb250ZW50UmVjdC55KCkpOwogICAgICAgICAgICAg
YWRqdXN0RmxvYXRRdWFkRm9yQWJzb2x1dGVab29tKHF1YWRzW2ldLCByZW5kZXJCb3hNb2RlbE9i
amVjdCk7CisgICAgICAgICAgICBpZiAocGFnZVNjYWxlICE9IDEpCisgICAgICAgICAgICAgICAg
YWRqdXN0RmxvYXRRdWFkRm9yUGFnZVNjYWxlKHF1YWRzW2ldLCBwYWdlU2NhbGUpOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC01ODcsNiArNTk1LDExIEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4g
RWxlbWVudDo6Z2V0Qm91bmQKICAgICB9CiAKICAgICBhZGp1c3RGbG9hdFJlY3RGb3JBYnNvbHV0
ZVpvb20ocmVzdWx0LCByZW5kZXJlcigpKTsKKyAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50
KCktPnBhZ2UoKSkgeworICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1l
KCkpCisgICAgICAgICAgICBhZGp1c3RGbG9hdFJlY3RGb3JQYWdlU2NhbGUocmVzdWx0LCBmcmFt
ZS0+cGFnZVNjYWxlRmFjdG9yKCkpOworICAgIH0KKwogICAgIHJldHVybiBDbGllbnRSZWN0Ojpj
cmVhdGUocmVzdWx0KTsKIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAkocmV2aXNpb24g
ODI3MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODkzLDE2ICsxODkzLDI0IEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4gUmFuZ2U6OmdldEJv
dW5kaW4KICAgICByZXR1cm4gcmVjdC5pc0VtcHR5KCkgPyAwIDogQ2xpZW50UmVjdDo6Y3JlYXRl
KHJlY3QpOwogfQogCi1zdGF0aWMgdm9pZCBhZGp1c3RGbG9hdFF1YWRzRm9yU2Nyb2xsQW5kQWJz
b2x1dGVab29tKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgRG9jdW1lbnQqIGRvY3VtZW50LCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorc3RhdGljIHZvaWQgYWRqdXN0RmxvYXRRdWFkc0ZvclNj
cm9sbEFuZEFic29sdXRlWm9vbUFuZFBhZ2VTY2FsZShWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMs
IERvY3VtZW50KiBkb2N1bWVudCwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKICAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBkb2N1bWVudC0+dmlldygpOwogICAgIGlmICghdmlldykKICAgICAgICAg
cmV0dXJuOwogCisgICAgZmxvYXQgcGFnZVNjYWxlID0gMTsKKyAgICBpZiAoUGFnZSogcGFnZSA9
IGRvY3VtZW50LT5wYWdlKCkpIHsKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1h
aW5GcmFtZSgpKQorICAgICAgICAgICAgcGFnZVNjYWxlID0gZnJhbWUtPnBhZ2VTY2FsZUZhY3Rv
cigpOworICAgIH0KKwogICAgIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlldy0+dmlz
aWJsZUNvbnRlbnRSZWN0KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkcy5zaXpl
KCk7ICsraSkgewogICAgICAgICBxdWFkc1tpXS5tb3ZlKC12aXNpYmxlQ29udGVudFJlY3QueCgp
LCAtdmlzaWJsZUNvbnRlbnRSZWN0LnkoKSk7CiAgICAgICAgIGFkanVzdEZsb2F0UXVhZEZvckFi
c29sdXRlWm9vbShxdWFkc1tpXSwgcmVuZGVyZXIpOworICAgICAgICBpZiAocGFnZVNjYWxlICE9
IDEpCisgICAgICAgICAgICBhZGp1c3RGbG9hdFF1YWRGb3JQYWdlU2NhbGUocXVhZHNbaV0sIHBh
Z2VTY2FsZSk7CiAgICAgfQogfQogCkBAIC0xOTI0LDcgKzE5MzIsNyBAQCB2b2lkIFJhbmdlOjpn
ZXRCb3JkZXJBbmRUZXh0UXVhZHMoVmVjdG9yCiAgICAgICAgICAgICAgICAgaWYgKFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZW5kZXJCb3hNb2RlbE9iamVjdCA9IHN0YXRpY19jYXN0PEVsZW1lbnQq
Pihub2RlKS0+cmVuZGVyQm94TW9kZWxPYmplY3QoKSkgewogICAgICAgICAgICAgICAgICAgICBW
ZWN0b3I8RmxvYXRRdWFkPiBlbGVtZW50UXVhZHM7CiAgICAgICAgICAgICAgICAgICAgIHJlbmRl
ckJveE1vZGVsT2JqZWN0LT5hYnNvbHV0ZVF1YWRzKGVsZW1lbnRRdWFkcyk7Ci0gICAgICAgICAg
ICAgICAgICAgIGFkanVzdEZsb2F0UXVhZHNGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb20oZWxlbWVu
dFF1YWRzLCBtX293bmVyRG9jdW1lbnQuZ2V0KCksIHJlbmRlckJveE1vZGVsT2JqZWN0KTsKKyAg
ICAgICAgICAgICAgICAgICAgYWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRlWm9v
bUFuZFBhZ2VTY2FsZShlbGVtZW50UXVhZHMsIG1fb3duZXJEb2N1bWVudC5nZXQoKSwgcmVuZGVy
Qm94TW9kZWxPYmplY3QpOwogCiAgICAgICAgICAgICAgICAgICAgIHF1YWRzLmFwcGVuZChlbGVt
ZW50UXVhZHMpOwogICAgICAgICAgICAgICAgIH0KQEAgLTE5MzcsNyArMTk0NSw3IEBAIHZvaWQg
UmFuZ2U6OmdldEJvcmRlckFuZFRleHRRdWFkcyhWZWN0b3IKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBWZWN0b3I8RmxvYXRRdWFkPiB0ZXh0UXVhZHM7CiAgICAgICAgICAgICAg
ICAgcmVuZGVyVGV4dC0+YWJzb2x1dGVRdWFkc0ZvclJhbmdlKHRleHRRdWFkcywgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCk7Ci0gICAgICAgICAgICAgICAgYWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9s
bEFuZEFic29sdXRlWm9vbSh0ZXh0UXVhZHMsIG1fb3duZXJEb2N1bWVudC5nZXQoKSwgcmVuZGVy
VGV4dCk7CisgICAgICAgICAgICAgICAgYWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29s
dXRlWm9vbUFuZFBhZ2VTY2FsZSh0ZXh0UXVhZHMsIG1fb3duZXJEb2N1bWVudC5nZXQoKSwgcmVu
ZGVyVGV4dCk7CiAKICAgICAgICAgICAgICAgICBxdWFkcy5hcHBlbmQodGV4dFF1YWRzKTsKICAg
ICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJ
KHJldmlzaW9uIDgyNzE1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDc5LDYgKzEwNzksMzMgQEAgaW5saW5lIHZvaWQgYWRq
dXN0RmxvYXRSZWN0Rm9yQWJzb2x1dGVabwogICAgIHJlY3Quc2V0SGVpZ2h0KGFkanVzdEZsb2F0
Rm9yQWJzb2x1dGVab29tKHJlY3QuaGVpZ2h0KCksIHN0eWxlKSk7CiB9CiAKK2lubGluZSBGbG9h
dFBvaW50IGFkanVzdEZsb2F0UG9pbnRGb3JQYWdlU2NhbGUoY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIGZsb2F0IHBhZ2VTY2FsZSkKK3sKKyAgICBpZiAocGFnZVNjYWxlID09IDEpCisgICAgICAg
IHJldHVybiBwb2ludDsKKyAgICByZXR1cm4gRmxvYXRQb2ludChwb2ludC54KCkgLyBwYWdlU2Nh
bGUsIHBvaW50LnkoKSAvIHBhZ2VTY2FsZSk7Cit9CisKK2lubGluZSB2b2lkIGFkanVzdEZsb2F0
UXVhZEZvclBhZ2VTY2FsZShGbG9hdFF1YWQmIHF1YWQsIGZsb2F0IHBhZ2VTY2FsZSkKK3sKKyAg
ICBpZiAocGFnZVNjYWxlID09IDEpCisgICAgICAgIHJldHVybjsKKyAgICBxdWFkLnNldFAxKGFk
anVzdEZsb2F0UG9pbnRGb3JQYWdlU2NhbGUocXVhZC5wMSgpLCBwYWdlU2NhbGUpKTsKKyAgICBx
dWFkLnNldFAyKGFkanVzdEZsb2F0UG9pbnRGb3JQYWdlU2NhbGUocXVhZC5wMigpLCBwYWdlU2Nh
bGUpKTsKKyAgICBxdWFkLnNldFAzKGFkanVzdEZsb2F0UG9pbnRGb3JQYWdlU2NhbGUocXVhZC5w
MygpLCBwYWdlU2NhbGUpKTsKKyAgICBxdWFkLnNldFA0KGFkanVzdEZsb2F0UG9pbnRGb3JQYWdl
U2NhbGUocXVhZC5wNCgpLCBwYWdlU2NhbGUpKTsKK30KKworaW5saW5lIHZvaWQgYWRqdXN0Rmxv
YXRSZWN0Rm9yUGFnZVNjYWxlKEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgcGFnZVNjYWxlKQorewor
ICAgIGlmIChwYWdlU2NhbGUgPT0gMSkKKyAgICAgICAgcmV0dXJuOworICAgIHJlY3Quc2V0WChy
ZWN0LngoKSAvIHBhZ2VTY2FsZSk7CisgICAgcmVjdC5zZXRZKHJlY3QueSgpIC8gcGFnZVNjYWxl
KTsKKyAgICByZWN0LnNldFdpZHRoKHJlY3Qud2lkdGgoKSAvIHBhZ2VTY2FsZSk7CisgICAgcmVj
dC5zZXRIZWlnaHQocmVjdC5oZWlnaHQoKSAvIHBhZ2VTY2FsZSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2lmbmRlZiBOREVCVUcKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDgy
NzMwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTEtMDQtMDEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzYwNQorICAgICAgICBGcmFtZTo6cGFnZVNj
YWxlRmFjdG9yKCkgc2hvdWxkIG5vdCBhZmZlY3QgZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgb3Ig
CisgICAgICAgIGdldENsaWVudFJlY3RzKCkKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTE5NDU0MT4KKworICAgICAgICBBZGQgRFJUIHN1cHBv
cnQgZm9yIHRoZSBzY2FsZVdlYlZpZXcgU1BJLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNl
dFNjYWxlQXRPcmlnaW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oOgorCiAyMDExLTA0LTAxICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDgyNzE1KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTgsNiArMTU4LDExIEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0UGFn
ZVpvb21GYWN0b3IoV0tCdW4KICAgICB0b0ltcGwocGFnZVJlZiktPnNldFBhZ2Vab29tRmFjdG9y
KHpvb21GYWN0b3IpOwogfQogCit2b2lkIFdLQnVuZGxlUGFnZVNldFNjYWxlQXRPcmlnaW4oV0tC
dW5kbGVQYWdlUmVmIHBhZ2VSZWYsIGRvdWJsZSBzY2FsZSwgV0tQb2ludCBvcmlnaW4pCit7Cisg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5zY2FsZVdlYlZpZXcoc2NhbGUsIHRvSW50UG9pbnQob3JpZ2lu
KSk7Cit9CisKIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0UmVmIFdLQnVuZGxlUGFnZUdldEJhY2tG
b3J3YXJkTGlzdChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKIHsKICAgICByZXR1cm4gdG9BUEko
dG9JbXBsKHBhZ2VSZWYpLT5iYWNrRm9yd2FyZExpc3QoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAkocmV2aXNpb24gODI3MTUpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOCBAQCBXS19FWFBPUlQgdm9pZCBXS0J1bmRs
ZVBhZ2VTZXRUZXh0Wm9vbUZhCiBXS19FWFBPUlQgZG91YmxlIFdLQnVuZGxlUGFnZUdldFBhZ2Va
b29tRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
UGFnZVNldFBhZ2Vab29tRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBkb3VibGUgem9vbUZh
Y3Rvcik7CiAKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldFNjYWxlQXRPcmlnaW4oV0tC
dW5kbGVQYWdlUmVmIHBhZ2UsIGRvdWJsZSBzY2FsZSwgV0tQb2ludCBvcmlnaW4pOworCiBXS19F
WFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VGb3JjZVJlcGFpbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2Up
OwogCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTaW11bGF0ZU1vdXNlRG93bihXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgaW50IGJ1dHRvbiwgV0tQb2ludCBwb3NpdGlvbiwgaW50IGNsaWNrQ291
bnQsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGltZSk7CkluZGV4OiBUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4Mjcz
MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisy
MDExLTA0LTAxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTc2MDUKKyAgICAgICAgRnJhbWU6OnBhZ2VTY2FsZUZhY3Rvcigp
IHNob3VsZCBub3QgYWZmZWN0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIG9yIAorICAgICAgICBn
ZXRDbGllbnRSZWN0cygpCisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzkxOTQ1NDE+CisKKyAgICAgICAgQWRkIERSVCBzdXBwb3J0IGZvciB0aGUg
c2NhbGVXZWJWaWV3IFNQSS4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5tbToKKyAgICAgICAgKCtbRXZlbnRTZW5kaW5nQ29udHJvbGxlciBpc1Nl
bGVjdG9yRXhjbHVkZWRGcm9tV2ViU2NyaXB0Ol0pOgorICAgICAgICAoK1tFdmVudFNlbmRpbmdD
b250cm9sbGVyIHdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjpdKToKKyAgICAgICAgKC1bRXZlbnRT
ZW5kaW5nQ29udHJvbGxlciBzY2FsZVBhZ2VCeTphdFg6YW5kWTpdKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xs
ZXI6OnNjYWxlUGFnZUJ5KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlUGFnZTo6cmVzZXQpOgorCiAyMDExLTA0LTAxICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1t
CShyZXZpc2lvbiA4MjcxNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRp
bmdDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNiArMTM1LDcgQEAgKyAoQk9P
TClpc1NlbGVjdG9yRXhjbHVkZWRGcm9tV2ViU2NyaXB0OgogICAgICAgICAgICAgfHwgYVNlbGVj
dG9yID09IEBzZWxlY3Rvcih0ZXh0Wm9vbU91dCkKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9
PSBAc2VsZWN0b3Ioem9vbVBhZ2VJbikKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3Ioem9vbVBhZ2VPdXQpCisgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0gQHNlbGVjdG9y
KHNjYWxlUGFnZUJ5OmF0WDphbmRZOikKICAgICAgICAgICAgIHx8IGFTZWxlY3RvciA9PSBAc2Vs
ZWN0b3IobW91c2VTY3JvbGxCeVg6YW5kWTopCiAgICAgICAgICAgICB8fCBhU2VsZWN0b3IgPT0g
QHNlbGVjdG9yKGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5WDphbmRZOikpCiAgICAgICAgIHJldHVy
biBOTzsKQEAgLTE3NCw2ICsxNzUsOCBAQCArIChOU1N0cmluZyAqKXdlYlNjcmlwdE5hbWVGb3JT
ZWxlY3RvcjooCiAgICAgICAgIHJldHVybiBAIm1vdXNlU2Nyb2xsQnkiOwogICAgIGlmIChhU2Vs
ZWN0b3IgPT0gQHNlbGVjdG9yKGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5WDphbmRZOikpCiAgICAg
ICAgIHJldHVybiBAImNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5IjsKKyAgICBpZiAoYVNlbGVjdG9y
ID09IEBzZWxlY3RvcihzY2FsZVBhZ2VCeTphdFg6YW5kWTopKQorICAgICAgICByZXR1cm4gQCJz
Y2FsZVBhZ2VCeSI7CiAgICAgcmV0dXJuIG5pbDsKIH0KIApAQCAtMzYxLDYgKzM2NCwxMSBAQCAt
ICh2b2lkKXpvb21QYWdlT3V0CiAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gem9vbVBhZ2VPdXQ6
c2VsZl07CiB9CiAKKy0gKHZvaWQpc2NhbGVQYWdlQnk6KGZsb2F0KXNjYWxlIGF0WDooZmxvYXQp
eCBhbmRZOihmbG9hdCl5Cit7CisgICAgW1ttYWluRnJhbWUgd2ViVmlld10gX3NjYWxlV2ViVmll
dzpzY2FsZSBhdE9yaWdpbjpOU01ha2VQb2ludCh4LCB5KV07Cit9CisKIC0gKHZvaWQpbW91c2VV
cDooaW50KWJ1dHRvbk51bWJlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmplY3QqKW1vZGlm
aWVycwogewogICAgIGlmIChkcmFnTW9kZSAmJiAhcmVwbGF5aW5nU2F2ZWRFdmVudHMpIHsKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAkocmV2aXNpb24gODI3MTUpCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNiArMTkyLDEyIEBAIHZvaWQgRXZlbnRTZW5k
aW5nQ29udHJvbGxlcjo6em9vbVBhZ2VPdXQKICAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlWm9vbUZh
Y3RvcihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIHpvb21GYWN0b3Ig
LyBab29tTXVsdGlwbGllclJhdGlvKTsKIH0KIAordm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVy
OjpzY2FsZVBhZ2VCeShkb3VibGUgc2NhbGUsIGRvdWJsZSB4LCBkb3VibGUgeSkKK3sKKyAgICBX
S1BvaW50IG9yaWdpbiA9IHsgeCwgeSB9OworICAgIFdLQnVuZGxlUGFnZVNldFNjYWxlQXRPcmln
aW4oSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCBzY2FsZSwgb3JpZ2lu
KTsKK30KKwogLy8gT2JqZWN0IENyZWF0aW9uCiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxl
cjo6bWFrZVdpbmRvd09iamVjdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgd2lu
ZG93T2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIuaAkocmV2aXNpb24gODI3MTUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXh0Wm9vbU91dCgpOwogICAgIHZvaWQg
em9vbVBhZ2VJbigpOwogICAgIHZvaWQgem9vbVBhZ2VPdXQoKTsKKyAgICB2b2lkIHNjYWxlUGFn
ZUJ5KGRvdWJsZSBzY2FsZSwgZG91YmxlIHgsIGRvdWJsZSB5KTsKIAogcHJpdmF0ZToKICAgICBF
dmVudFNlbmRpbmdDb250cm9sbGVyKCk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCShy
ZXZpc2lvbiA4MjcxNSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDYgKzI1Miw5IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpyZXNldCgpCiAgICAgV0tCdW5kbGVQYWdlU2V0UGFn
ZVpvb21GYWN0b3IobV9wYWdlLCAxKTsKICAgICBXS0J1bmRsZVBhZ2VTZXRUZXh0Wm9vbUZhY3Rv
cihtX3BhZ2UsIDEpOwogCisgICAgV0tQb2ludCBvcmlnaW4gPSB7IDAsIDAgfTsKKyAgICBXS0J1
bmRsZVBhZ2VTZXRTY2FsZUF0T3JpZ2luKG1fcGFnZSwgMSwgb3JpZ2luKTsKKwogICAgIG1fcHJl
dmlvdXNUZXN0QmFja0ZvcndhcmRMaXN0SXRlbSA9IGFkb3B0V0soV0tCdW5kbGVCYWNrRm9yd2Fy
ZExpc3RDb3B5SXRlbUF0SW5kZXgoV0tCdW5kbGVQYWdlR2V0QmFja0ZvcndhcmRMaXN0KG1fcGFn
ZSksIDApKTsKIAogICAgIFdLQnVuZGxlRnJhbWVDbGVhck9wZW5lcihXS0J1bmRsZVBhZ2VHZXRN
YWluRnJhbWUobV9wYWdlKSk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5pZGwJKHJldmlzaW9uIDgyNzE1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAgbW9kdWxlIFdUUiB7CiAgICAgICAg
IHZvaWQgdGV4dFpvb21PdXQoKTsKICAgICAgICAgdm9pZCB6b29tUGFnZUluKCk7CiAgICAgICAg
IHZvaWQgem9vbVBhZ2VPdXQoKTsKKyAgICAgICAgdm9pZCBzY2FsZVBhZ2VCeShpbiBkb3VibGUg
c2NhbGUsIGluIGRvdWJsZSB4LCBpbiBkb3VibGUgeSk7CiAgICAgfTsKIAogfQpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gODI3MzApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNSBAQAorMjAxMS0wNC0wMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3NjA1CisgICAgICAgIEZyYW1l
OjpwYWdlU2NhbGVGYWN0b3IoKSBzaG91bGQgbm90IGFmZmVjdCBnZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKSBvciAKKyAgICAgICAgZ2V0Q2xpZW50UmVjdHMoKQorICAgICAgICAtYW5kIGNvcnJlc3Bv
bmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MTk0NTQxPgorCisgICAgICAgICogZmFz
dC9kb20vRWxlbWVudC9zY2FsZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1yZWN0LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRWxlbWVudC9zY2FsZS1wYWdlLWJvdW5kaW5n
LWNsaWVudC1yZWN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0VsZW1lbnQvc2Nh
bGUtcGFnZS1jbGllbnQtcmVjdHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9FbGVtZW50L3NjYWxlLXBhZ2UtY2xpZW50LXJlY3RzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2UtYm91bmRpbmctY2xpZW50LXJlY3QtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9SYW5nZS9zY2FsZS1wYWdlLWJvdW5k
aW5nLWNsaWVudC1yZWN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL1JhbmdlL3Nj
YWxlLXBhZ2UtY2xpZW50LXJlY3RzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vUmFuZ2Uvc2NhbGUtcGFnZS1jbGllbnQtcmVjdHMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMS0wNC0wMSAgQWRhbSBCYXJ0
aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRl
cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFnZS1ib3VuZGlu
Zy1jbGllbnQtcmVjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vRWxlbWVudC9zY2FsZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1yZWN0LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFn
ZS1ib3VuZGluZy1jbGllbnQtcmVjdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEgQEAKK1Bhc3MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFn
ZS1ib3VuZGluZy1jbGllbnQtcmVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFnZS1ib3VuZGluZy1jbGllbnQtcmVjdC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9zY2FsZS1wYWdlLWJvdW5k
aW5nLWNsaWVudC1yZWN0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdFJlY3RzKCkKK3sKKyAgICBpZiAoIXdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImRpdiIpOworICAgIHZhciByZWN0ID0gZGl2LmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpOworICAgIGV2ZW50U2VuZGVyLnNjYWxlUGFnZUJ5KDIsMCwwKTsKKyAgICB2YXIg
c2NhbGVkUmVjdCA9IGRpdi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKworICAgIHZhciByZXN1
bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CisgICAgaWYgKHJlY3QubGVm
dCA9PSBzY2FsZWRSZWN0LmxlZnQgJiYKKyAgICAgICAgcmVjdC50b3AgPT0gc2NhbGVkUmVjdC50
b3AgJiYKKyAgICAgICAgcmVjdC5yaWdodCA9PSBzY2FsZWRSZWN0LnJpZ2h0ICYmCisgICAgICAg
IHJlY3QuYm90dG9tID09IHNjYWxlZFJlY3QuYm90dG9tKQorICAgICAgICByZXN1bHQuaW5uZXJI
VE1MID0gIlBhc3MiOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0LmlubmVySFRNTCA9ICJGYWls
IjsKKyAgICAKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InRlc3RSZWN0
cygpOyI+CisgICAgPGRpdiBpZD0iZGl2IiBzdHlsZT0id2lkdGg6MTAwcHg7IGhlaWdodDoxMDBw
eDsgYmFja2dyb3VuZC1jb2xvcjpncmVlbjsiPjwvZGl2PgorICAgIDxwIGlkPSJyZXN1bHQiPlRo
aXMgdGVzdCBtdXN0IGJlIHJ1biB2aWEgRHVtcFJlbmRlclRyZWUuPC9wPgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9zY2FsZS1wYWdlLWNsaWVu
dC1yZWN0cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
RWxlbWVudC9zY2FsZS1wYWdlLWNsaWVudC1yZWN0cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L3NjYWxlLXBhZ2UtY2xpZW50LXJlY3Rz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorUGFzcwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9zY2FsZS1wYWdlLWNsaWVudC1yZWN0cy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFnZS1jbGll
bnQtcmVjdHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1l
bnQvc2NhbGUtcGFnZS1jbGllbnQtcmVjdHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0UmVjdHMoKQorewor
ICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICByZXR1cm47Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIAorICAgIHZhciBkaXYg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CisgICAgdmFyIHJlY3RMaXN0ID0gZGl2
LmdldENsaWVudFJlY3RzKCk7CisgICAgZXZlbnRTZW5kZXIuc2NhbGVQYWdlQnkoMiwwLDApOwor
ICAgIHZhciBzY2FsZWRSZWN0TGlzdCA9IGRpdi5nZXRDbGllbnRSZWN0cygpOworCisgICAgdmFy
IHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAgICB2YXIgcmVj
dCA9IHJlY3RMaXN0WzBdOworICAgIHZhciBzY2FsZWRSZWN0ID0gc2NhbGVkUmVjdExpc3RbMF07
CisgICAgCisgICAgaWYgKHJlY3QubGVmdCA9PSBzY2FsZWRSZWN0LmxlZnQgJiYKKyAgICAgICAg
cmVjdC50b3AgPT0gc2NhbGVkUmVjdC50b3AgJiYKKyAgICAgICAgcmVjdC5yaWdodCA9PSBzY2Fs
ZWRSZWN0LnJpZ2h0ICYmCisgICAgICAgIHJlY3QuYm90dG9tID09IHNjYWxlZFJlY3QuYm90dG9t
KQorICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBhc3MiOworICAgIGVsc2UKKyAgICAgICAg
cmVzdWx0LmlubmVySFRNTCA9ICJGYWlsIjsKKyAgICAKK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
Cis8Ym9keSBvbmxvYWQ9InRlc3RSZWN0cygpOyI+CisgICAgPGRpdiBpZD0iZGl2IiBzdHlsZT0i
d2lkdGg6MTAwcHg7IGhlaWdodDoxMDBweDsgYmFja2dyb3VuZC1jb2xvcjpncmVlbjsiPjwvZGl2
PgorICAgIDxwIGlkPSJyZXN1bHQiPlRoaXMgdGVzdCBtdXN0IGJlIHJ1biB2aWEgRHVtcFJlbmRl
clRyZWUuPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
UmFuZ2Uvc2NhbGUtcGFnZS1ib3VuZGluZy1jbGllbnQtcmVjdC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2Uvc2NhbGUtcGFnZS1ib3VuZGluZy1j
bGllbnQtcmVjdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9SYW5nZS9zY2FsZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1yZWN0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorUGFzcwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vUmFuZ2Uvc2NhbGUtcGFnZS1ib3VuZGluZy1jbGllbnQtcmVjdC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2UtYm91bmRpbmctY2xpZW50
LXJlY3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3Nj
YWxlLXBhZ2UtYm91bmRpbmctY2xpZW50LXJlY3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0UmVjdHMoKQor
eworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICByZXR1cm47
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdicpKTsKKyAgICB2YXIgcmVjdCA9IHJhbmdlLmdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgCisgICAgZXZlbnRTZW5kZXIuc2NhbGVQYWdlQnko
MiwwLDApOworICAgIHZhciBzY2FsZWRSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Cisg
ICAgc2NhbGVkUmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdkaXYnKSk7CisgICAgdmFyIHNjYWxlZFJlY3QgPSBzY2FsZWRSYW5nZS5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKTsKKworICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0Iik7CisgICAgaWYgKHJlY3QubGVmdCA9PSBzY2FsZWRSZWN0LmxlZnQgJiYKKyAgICAg
ICAgcmVjdC50b3AgPT0gc2NhbGVkUmVjdC50b3AgJiYKKyAgICAgICAgcmVjdC5yaWdodCA9PSBz
Y2FsZWRSZWN0LnJpZ2h0ICYmCisgICAgICAgIHJlY3QuYm90dG9tID09IHNjYWxlZFJlY3QuYm90
dG9tKQorICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlBhc3MiOworICAgIGVsc2UKKyAgICAg
ICAgcmVzdWx0LmlubmVySFRNTCA9ICJGYWlsIjsKKyAgICAKK30KKzwvc2NyaXB0PgorPC9oZWFk
PgorCis8Ym9keSBvbmxvYWQ9InRlc3RSZWN0cygpOyI+CisgICAgPGRpdiBpZD0iZGl2IiBzdHls
ZT0id2lkdGg6MTAwcHg7IGhlaWdodDoxMDBweDsgYmFja2dyb3VuZC1jb2xvcjpncmVlbjsiPjwv
ZGl2PgorICAgIDxwIGlkPSJyZXN1bHQiPlRoaXMgdGVzdCBtdXN0IGJlIHJ1biB2aWEgRHVtcFJl
bmRlclRyZWUuPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vUmFuZ2Uvc2NhbGUtcGFnZS1jbGllbnQtcmVjdHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2UtY2xpZW50LXJlY3RzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3Nj
YWxlLXBhZ2UtY2xpZW50LXJlY3RzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSBAQAorUGFzcwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2Uvc2NhbGUtcGFnZS1j
bGllbnQtcmVjdHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5n
ZS9zY2FsZS1wYWdlLWNsaWVudC1yZWN0cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vUmFuZ2Uvc2NhbGUtcGFnZS1jbGllbnQtcmVjdHMuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0
ZXN0UmVjdHMoKQoreworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICByZXR1cm47CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZWxlY3RO
b2RlQ29udGVudHMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdicpKTsKKyAgICB2YXIgcmVj
dExpc3QgPSByYW5nZS5nZXRDbGllbnRSZWN0cygpOworICAgIHZhciByZWN0ID0gcmVjdExpc3Rb
MF07CisgICAKKyAgICBldmVudFNlbmRlci5zY2FsZVBhZ2VCeSgyLDAsMCk7CisgICAgdmFyIHNj
YWxlZFJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBzY2FsZWRSYW5nZS5zZWxl
Y3ROb2RlQ29udGVudHMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdicpKTsKKyAgICB2YXIg
c2NhbGVkUmVjdExpc3QgPSBzY2FsZWRSYW5nZS5nZXRDbGllbnRSZWN0cygpOworICAgIHZhciBz
Y2FsZWRSZWN0ID0gc2NhbGVkUmVjdExpc3RbMF07CisKKyAgICB2YXIgcmVzdWx0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworICAgIGlmIChyZWN0LmxlZnQgPT0gc2NhbGVk
UmVjdC5sZWZ0ICYmCisgICAgICAgIHJlY3QudG9wID09IHNjYWxlZFJlY3QudG9wICYmCisgICAg
ICAgIHJlY3QucmlnaHQgPT0gc2NhbGVkUmVjdC5yaWdodCAmJgorICAgICAgICByZWN0LmJvdHRv
bSA9PSBzY2FsZWRSZWN0LmJvdHRvbSkKKyAgICAgICAgcmVzdWx0LmlubmVySFRNTCA9ICJQYXNz
IjsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiRmFpbCI7CisgICAgCit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJ0ZXN0UmVjdHMoKTsiPgorICAg
IDxkaXYgaWQ9ImRpdiIgc3R5bGU9IndpZHRoOjEwMHB4OyBoZWlnaHQ6MTAwcHg7IGJhY2tncm91
bmQtY29sb3I6Z3JlZW47Ij48L2Rpdj4KKyAgICA8cCBpZD0icmVzdWx0Ij5UaGlzIHRlc3QgbXVz
dCBiZSBydW4gdmlhIER1bXBSZW5kZXJUcmVlLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCShyZXZpc2lvbiA4MjcxNSkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xMzY3LDMgKzEzNjcsOSBA
QCBwbHVnaW5zL2VtYmVkLXByZWZlcnMtcGx1Z2lucy1mb3ItaW1hZ2VzCiAKICMgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MzQ2CiBmYXN0L3RleHQvanVzdGlmeS1p
ZGVvZ3JhcGgtbGVhZGluZy1leHBhbnNpb24uaHRtbAorCisjIHNjYWxlUGFnZSBpcyBjdXJyZW50
bHkgTWFjLXNwZWNpZmljIFdlYktpdCBBUEkuCitmYXN0L2RvbS9FbGVtZW50L3NjYWxlLXBhZ2Ut
Ym91bmRpbmctY2xpZW50LXJlY3QuaHRtbAorZmFzdC9kb20vRWxlbWVudC9zY2FsZS1wYWdlLWNs
aWVudC1yZWN0cy5odG1sCitmYXN0L2RvbS9SYW5nZS9zY2FsZS1wYWdlLWJvdW5kaW5nLWNsaWVu
dC1yZWN0Lmh0bWwKK2Zhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2UtY2xpZW50LXJlY3RzLmh0bWwK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkocmV2aXNpb24gODI3MTUpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDEy
IEBAIGZhc3QvanMvaTE4bi1iaW5kaW5ncy1sb2NhbGUuaHRtbAogIyBEYXRhVHJhbnNmZXJJdGVt
cyBpcyBub3QgeWV0IGltcGxlbWVudGVkLgogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNm
ZXItaXRlbXMuaHRtbAogCisjIHNjYWxlUGFnZSBpcyBjdXJyZW50bHkgTWFjLXNwZWNpZmljIFdl
YktpdCBBUEkuCitmYXN0L2RvbS9FbGVtZW50L3NjYWxlLXBhZ2UtYm91bmRpbmctY2xpZW50LXJl
Y3QuaHRtbAorZmFzdC9kb20vRWxlbWVudC9zY2FsZS1wYWdlLWNsaWVudC1yZWN0cy5odG1sCitm
YXN0L2RvbS9SYW5nZS9zY2FsZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1yZWN0Lmh0bWwKK2Zhc3Qv
ZG9tL1JhbmdlL3NjYWxlLXBhZ2UtY2xpZW50LXJlY3RzLmh0bWwKKwogIyA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0gIwogIyAgICAgICBEcmFnIGFuZCBEcm9wIFN1cHBvcnQgaW4gRFJULiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogIyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIwpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHJldmlzaW9uIDgyNzE1KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTEyMTksMyArMTIx
OSw5IEBAIGZhc3QvanMvYXJyYXktc29ydC1tb2RpZnlpbmctdG9zdHJpbmcuaHQKIAogIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY1NzMKIGZhc3QvZG9tL0hUTUxL
ZXlnZW5FbGVtZW50L2tleWdlbi5odG1sCisKKyMgc2NhbGVQYWdlIGlzIGN1cnJlbnRseSBNYWMt
c3BlY2lmaWMgV2ViS2l0IEFQSS4KK2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFnZS1ib3VuZGlu
Zy1jbGllbnQtcmVjdC5odG1sCitmYXN0L2RvbS9FbGVtZW50L3NjYWxlLXBhZ2UtY2xpZW50LXJl
Y3RzLmh0bWwKK2Zhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2UtYm91bmRpbmctY2xpZW50LXJlY3Qu
aHRtbAorZmFzdC9kb20vUmFuZ2Uvc2NhbGUtcGFnZS1jbGllbnQtcmVjdHMuaHRtbAo=
</data>
<flag name="review"
          id="80392"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>